public class org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor extends org.apache.logging.log4j.core.AbstractLifeCycle implements org.apache.logging.log4j.core.async.AsyncLoggerConfigDelegate
{
private static final int MAX_DRAIN_ATTEMPTS_BEFORE_SHUTDOWN;
private static final int SLEEP_MILLIS_BETWEEN_DRAIN_ATTEMPTS;
private static final com.lmax.disruptor.EventFactory FACTORY;
private static final com.lmax.disruptor.EventFactory MUTABLE_FACTORY;
private static final com.lmax.disruptor.EventTranslatorTwoArg TRANSLATOR;
private static final com.lmax.disruptor.EventTranslatorTwoArg MUTABLE_TRANSLATOR;
private int ringBufferSize;
private org.apache.logging.log4j.core.async.AsyncQueueFullPolicy asyncQueueFullPolicy;
private java.lang.Boolean mutable;
private volatile com.lmax.disruptor.dsl.Disruptor disruptor;
private long backgroundThreadId;
private com.lmax.disruptor.EventFactory factory;
private com.lmax.disruptor.EventTranslatorTwoArg translator;
private volatile boolean alreadyLoggedWarning;
private final org.apache.logging.log4j.core.async.AsyncWaitStrategyFactory asyncWaitStrategyFactory;
private com.lmax.disruptor.WaitStrategy waitStrategy;
private final java.lang.Object queueFullEnqueueLock;
private org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor$Log4jEventWrapperHandler createEventHandler()
{
java.lang.Throwable v;
java.lang.Object[] v;
java.lang.Class[] v;
java.lang.reflect.Constructor v;
org.apache.logging.log4j.Logger v;
org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor v;
org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor$Log4jEventWrapperHandler v;
int v;
java.lang.Class v;
java.lang.Object v;
v := @this: org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor;
v = <org.apache.logging.log4j.core.async.DisruptorUtil: int DISRUPTOR_MAJOR_VERSION>;
if v != 3 goto label;
label:
v = staticinvoke <java.lang.Class: java.lang.Class forName(java.lang.String)>("org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor$Log4jEventWrapperHandler3");
v = newarray (java.lang.Class)[0];
v = virtualinvoke v.<java.lang.Class: java.lang.reflect.Constructor getConstructor(java.lang.Class[])>(v);
v = newarray (java.lang.Object)[0];
v = virtualinvoke v.<java.lang.reflect.Constructor: java.lang.Object newInstance(java.lang.Object[])>(v);
label:
return v;
label:
v := @caughtexception;
v = <org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor: org.apache.logging.log4j.Logger LOGGER>;
interfaceinvoke v.<org.apache.logging.log4j.Logger: void warn(java.lang.String,java.lang.Throwable)>("Failed to create event handler for LMAX Disruptor 3.x, trying version 4.x.", v);
label:
v = new org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor$Log4jEventWrapperHandler;
specialinvoke v.<org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor$Log4jEventWrapperHandler: void <init>()>();
return v;
catch java.lang.ReflectiveOperationException from label to label with label;
catch java.lang.LinkageError from label to label with label;
}
public void <init>(org.apache.logging.log4j.core.async.AsyncWaitStrategyFactory)
{
org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor v;
org.apache.logging.log4j.core.async.AsyncWaitStrategyFactory v;
java.lang.Boolean v;
java.lang.Object v;
v := @this: org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor;
v := @parameter: org.apache.logging.log4j.core.async.AsyncWaitStrategyFactory;
specialinvoke v.<org.apache.logging.log4j.core.AbstractLifeCycle: void <init>()>();
v = <java.lang.Boolean: java.lang.Boolean FALSE>;
v.<org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor: java.lang.Boolean mutable> = v;
v = new java.lang.Object;
specialinvoke v.<java.lang.Object: void <init>()>();
v.<org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor: java.lang.Object queueFullEnqueueLock> = v;
v.<org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor: org.apache.logging.log4j.core.async.AsyncWaitStrategyFactory asyncWaitStrategyFactory> = v;
return;
}
com.lmax.disruptor.WaitStrategy getWaitStrategy()
{
com.lmax.disruptor.WaitStrategy v;
org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor v;
v := @this: org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor;
v = v.<org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor: com.lmax.disruptor.WaitStrategy waitStrategy>;
return v;
}
public void setLogEventFactory(org.apache.logging.log4j.core.impl.LogEventFactory)
{
org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor v;
java.lang.Boolean v, v;
org.apache.logging.log4j.core.impl.LogEventFactory v;
boolean v, v, v;
v := @this: org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor;
v := @parameter: org.apache.logging.log4j.core.impl.LogEventFactory;
v = v.<org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor: java.lang.Boolean mutable>;
v = virtualinvoke v.<java.lang.Boolean: boolean booleanValue()>();
if v != 0 goto label;
v = v instanceof org.apache.logging.log4j.core.impl.ReusableLogEventFactory;
if v == 0 goto label;
label:
v = 1;
goto label;
label:
v = 0;
label:
v = staticinvoke <java.lang.Boolean: java.lang.Boolean valueOf(boolean)>(v);
v.<org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor: java.lang.Boolean mutable> = v;
return;
}
public synchronized void start()
{
org.apache.logging.log4j.core.async.AsyncWaitStrategyFactory v;
java.lang.Integer v;
org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor v;
boolean v, v;
com.lmax.disruptor.WaitStrategy v, v, v;
org.apache.logging.log4j.Logger v, v, v;
com.lmax.disruptor.ExceptionHandler v;
int v, v, v;
java.lang.Boolean v, v;
java.lang.String v;
org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor$Log4jEventWrapperHandler[] v;
com.lmax.disruptor.RingBuffer v;
com.lmax.disruptor.dsl.ProducerType v;
org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor$Log4jEventWrapperHandler v;
org.apache.logging.log4j.core.async.AsyncQueueFullPolicy v;
java.lang.Class v;
com.lmax.disruptor.EventFactory v, v;
com.lmax.disruptor.EventTranslatorTwoArg v;
com.lmax.disruptor.dsl.Disruptor v, v, v, v, v, v;
org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor$1 v;
v := @this: org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor;
v = v.<org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor: com.lmax.disruptor.dsl.Disruptor disruptor>;
if v == null goto label;
v = <org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor: org.apache.logging.log4j.Logger LOGGER>;
interfaceinvoke v.<org.apache.logging.log4j.Logger: void trace(java.lang.String)>("AsyncLoggerConfigDisruptor not starting new disruptor for this configuration, using existing object.");
return;
label:
v = <org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor: org.apache.logging.log4j.Logger LOGGER>;
interfaceinvoke v.<org.apache.logging.log4j.Logger: void trace(java.lang.String)>("AsyncLoggerConfigDisruptor creating new disruptor for this configuration.");
v = staticinvoke <org.apache.logging.log4j.core.async.DisruptorUtil: int calculateRingBufferSize(java.lang.String)>("AsyncLoggerConfig.RingBufferSize");
v.<org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor: int ringBufferSize> = v;
v = v.<org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor: org.apache.logging.log4j.core.async.AsyncWaitStrategyFactory asyncWaitStrategyFactory>;
v = staticinvoke <org.apache.logging.log4j.core.async.DisruptorUtil: com.lmax.disruptor.WaitStrategy createWaitStrategy(java.lang.String,org.apache.logging.log4j.core.async.AsyncWaitStrategyFactory)>("AsyncLoggerConfig.WaitStrategy", v);
v.<org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor: com.lmax.disruptor.WaitStrategy waitStrategy> = v;
v = new org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor$1;
specialinvoke v.<org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor$1: void <init>(org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor,java.lang.String,boolean,int)>(v, "AsyncLoggerConfig", 1, 5);
v = staticinvoke <org.apache.logging.log4j.core.async.AsyncQueueFullPolicyFactory: org.apache.logging.log4j.core.async.AsyncQueueFullPolicy create()>();
v.<org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor: org.apache.logging.log4j.core.async.AsyncQueueFullPolicy asyncQueueFullPolicy> = v;
v = v.<org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor: java.lang.Boolean mutable>;
v = virtualinvoke v.<java.lang.Boolean: boolean booleanValue()>();
if v == 0 goto label;
v = <org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor: com.lmax.disruptor.EventTranslatorTwoArg MUTABLE_TRANSLATOR>;
goto label;
label:
v = <org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor: com.lmax.disruptor.EventTranslatorTwoArg TRANSLATOR>;
label:
v.<org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor: com.lmax.disruptor.EventTranslatorTwoArg translator> = v;
v = v.<org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor: java.lang.Boolean mutable>;
v = virtualinvoke v.<java.lang.Boolean: boolean booleanValue()>();
if v == 0 goto label;
v = <org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor: com.lmax.disruptor.EventFactory MUTABLE_FACTORY>;
goto label;
label:
v = <org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor: com.lmax.disruptor.EventFactory FACTORY>;
label:
v.<org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor: com.lmax.disruptor.EventFactory factory> = v;
v = new com.lmax.disruptor.dsl.Disruptor;
v = v.<org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor: com.lmax.disruptor.EventFactory factory>;
v = v.<org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor: int ringBufferSize>;
v = <com.lmax.disruptor.dsl.ProducerType: com.lmax.disruptor.dsl.ProducerType MULTI>;
v = v.<org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor: com.lmax.disruptor.WaitStrategy waitStrategy>;
specialinvoke v.<com.lmax.disruptor.dsl.Disruptor: void <init>(com.lmax.disruptor.EventFactory,int,java.util.concurrent.ThreadFactory,com.lmax.disruptor.dsl.ProducerType,com.lmax.disruptor.WaitStrategy)>(v, v, v, v, v);
v.<org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor: com.lmax.disruptor.dsl.Disruptor disruptor> = v;
v = staticinvoke <org.apache.logging.log4j.core.async.DisruptorUtil: com.lmax.disruptor.ExceptionHandler getAsyncLoggerConfigExceptionHandler()>();
v = v.<org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor: com.lmax.disruptor.dsl.Disruptor disruptor>;
virtualinvoke v.<com.lmax.disruptor.dsl.Disruptor: void setDefaultExceptionHandler(com.lmax.disruptor.ExceptionHandler)>(v);
v = newarray (org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor$Log4jEventWrapperHandler)[1];
v = specialinvoke v.<org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor: org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor$Log4jEventWrapperHandler createEventHandler()>();
v[0] = v;
v = v.<org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor: com.lmax.disruptor.dsl.Disruptor disruptor>;
virtualinvoke v.<com.lmax.disruptor.dsl.Disruptor: com.lmax.disruptor.dsl.EventHandlerGroup handleEventsWith(com.lmax.disruptor.EventHandler[])>(v);
v = <org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor: org.apache.logging.log4j.Logger LOGGER>;
v = v.<org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor: com.lmax.disruptor.dsl.Disruptor disruptor>;
v = virtualinvoke v.<com.lmax.disruptor.dsl.Disruptor: com.lmax.disruptor.RingBuffer getRingBuffer()>();
v = virtualinvoke v.<com.lmax.disruptor.RingBuffer: int getBufferSize()>();
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
v = v.<org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor: com.lmax.disruptor.WaitStrategy waitStrategy>;
v = virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
v = virtualinvoke v.<java.lang.Class: java.lang.String getSimpleName()>();
interfaceinvoke v.<org.apache.logging.log4j.Logger: void debug(java.lang.String,java.lang.Object,java.lang.Object,java.lang.Object)>("Starting AsyncLoggerConfig disruptor for this configuration with ringbufferSize={}, waitStrategy={}, exceptionHandler={}...", v, v, v);
v = v.<org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor: com.lmax.disruptor.dsl.Disruptor disruptor>;
virtualinvoke v.<com.lmax.disruptor.dsl.Disruptor: com.lmax.disruptor.RingBuffer start()>();
specialinvoke v.<org.apache.logging.log4j.core.AbstractLifeCycle: void start()>();
return;
}
public boolean stop(long, java.util.concurrent.TimeUnit)
{
java.lang.Throwable v;
long v, v, v;
byte v;
org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor v;
java.lang.Long v, v;
int v;
boolean v;
java.util.concurrent.TimeUnit v;
org.apache.logging.log4j.Logger v, v, v, v, v;
java.lang.InterruptedException v;
org.apache.logging.log4j.core.async.AsyncQueueFullPolicy v, v, v;
com.lmax.disruptor.dsl.Disruptor v;
v := @this: org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor;
v := @parameter: long;
v := @parameter: java.util.concurrent.TimeUnit;
v = v.<org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor: com.lmax.disruptor.dsl.Disruptor disruptor>;
if v != null goto label;
v = <org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor: org.apache.logging.log4j.Logger LOGGER>;
interfaceinvoke v.<org.apache.logging.log4j.Logger: void trace(java.lang.String)>("AsyncLoggerConfigDisruptor: disruptor for this configuration already shut down.");
return 1;
label:
virtualinvoke v.<org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor: void setStopping()>();
v = <org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor: org.apache.logging.log4j.Logger LOGGER>;
interfaceinvoke v.<org.apache.logging.log4j.Logger: void trace(java.lang.String)>("AsyncLoggerConfigDisruptor: shutting down disruptor for this configuration.");
v.<org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor: com.lmax.disruptor.dsl.Disruptor disruptor> = null;
v = 0;
label:
v = staticinvoke <org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor: boolean hasBacklog(com.lmax.disruptor.dsl.Disruptor)>(v);
if v == 0 goto label;
if v >= 200 goto label;
label:
staticinvoke <java.lang.Thread: void sleep(long)>(50L);
label:
goto label;
label:
v := @caughtexception;
label:
v = v + 1;
goto label;
label:
virtualinvoke v.<com.lmax.disruptor.dsl.Disruptor: void shutdown(long,java.util.concurrent.TimeUnit)>(v, v);
label:
goto label;
label:
v := @caughtexception;
v = <org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor: org.apache.logging.log4j.Logger LOGGER>;
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
interfaceinvoke v.<org.apache.logging.log4j.Logger: void warn(java.lang.String,java.lang.Object,java.lang.Object)>("AsyncLoggerConfigDisruptor: shutdown timed out after {} {}", v, v);
virtualinvoke v.<com.lmax.disruptor.dsl.Disruptor: void halt()>();
label:
v = <org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor: org.apache.logging.log4j.Logger LOGGER>;
interfaceinvoke v.<org.apache.logging.log4j.Logger: void trace(java.lang.String)>("AsyncLoggerConfigDisruptor: disruptor has been shut down.");
v = v.<org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor: org.apache.logging.log4j.core.async.AsyncQueueFullPolicy asyncQueueFullPolicy>;
v = staticinvoke <org.apache.logging.log4j.core.async.DiscardingAsyncQueueFullPolicy: long getDiscardCount(org.apache.logging.log4j.core.async.AsyncQueueFullPolicy)>(v);
v = v cmp 0L;
if v <= 0 goto label;
v = <org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor: org.apache.logging.log4j.Logger LOGGER>;
v = v.<org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor: org.apache.logging.log4j.core.async.AsyncQueueFullPolicy asyncQueueFullPolicy>;
v = v.<org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor: org.apache.logging.log4j.core.async.AsyncQueueFullPolicy asyncQueueFullPolicy>;
v = staticinvoke <org.apache.logging.log4j.core.async.DiscardingAsyncQueueFullPolicy: long getDiscardCount(org.apache.logging.log4j.core.async.AsyncQueueFullPolicy)>(v);
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
interfaceinvoke v.<org.apache.logging.log4j.Logger: void trace(java.lang.String,java.lang.Object,java.lang.Object)>("AsyncLoggerConfigDisruptor: {} discarded {} events.", v, v);
label:
virtualinvoke v.<org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor: void setStopped()>();
return 1;
catch java.lang.InterruptedException from label to label with label;
catch com.lmax.disruptor.TimeoutException from label to label with label;
}
private static boolean hasBacklog(com.lmax.disruptor.dsl.Disruptor)
{
com.lmax.disruptor.RingBuffer v;
int v;
com.lmax.disruptor.dsl.Disruptor v;
boolean v, v;
v := @parameter: com.lmax.disruptor.dsl.Disruptor;
v = virtualinvoke v.<com.lmax.disruptor.dsl.Disruptor: com.lmax.disruptor.RingBuffer getRingBuffer()>();
v = virtualinvoke v.<com.lmax.disruptor.RingBuffer: int getBufferSize()>();
v = virtualinvoke v.<com.lmax.disruptor.RingBuffer: boolean hasAvailableCapacity(int)>(v);
if v != 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
public org.apache.logging.log4j.core.async.EventRoute getEventRoute(org.apache.logging.log4j.Level)
{
org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor v;
org.apache.logging.log4j.core.async.AsyncQueueFullPolicy v;
int v;
org.apache.logging.log4j.Level v;
long v;
org.apache.logging.log4j.core.async.EventRoute v, v;
v := @this: org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor;
v := @parameter: org.apache.logging.log4j.Level;
v = specialinvoke v.<org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor: int remainingDisruptorCapacity()>();
if v >= 0 goto label;
v = <org.apache.logging.log4j.core.async.EventRoute: org.apache.logging.log4j.core.async.EventRoute DISCARD>;
return v;
label:
v = v.<org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor: org.apache.logging.log4j.core.async.AsyncQueueFullPolicy asyncQueueFullPolicy>;
v = v.<org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor: long backgroundThreadId>;
v = interfaceinvoke v.<org.apache.logging.log4j.core.async.AsyncQueueFullPolicy: org.apache.logging.log4j.core.async.EventRoute getRoute(long,org.apache.logging.log4j.Level)>(v, v);
return v;
}
private int remainingDisruptorCapacity()
{
org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor v;
com.lmax.disruptor.RingBuffer v;
int v;
long v;
com.lmax.disruptor.dsl.Disruptor v;
boolean v;
v := @this: org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor;
v = v.<org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor: com.lmax.disruptor.dsl.Disruptor disruptor>;
v = specialinvoke v.<org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor: boolean hasLog4jBeenShutDown(com.lmax.disruptor.dsl.Disruptor)>(v);
if v == 0 goto label;
v = (int) -1;
return v;
label:
v = virtualinvoke v.<com.lmax.disruptor.dsl.Disruptor: com.lmax.disruptor.RingBuffer getRingBuffer()>();
v = virtualinvoke v.<com.lmax.disruptor.RingBuffer: long remainingCapacity()>();
return v;
}
private boolean hasLog4jBeenShutDown(com.lmax.disruptor.dsl.Disruptor)
{
org.apache.logging.log4j.Logger v;
org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor v;
com.lmax.disruptor.dsl.Disruptor v;
v := @this: org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor;
v := @parameter: com.lmax.disruptor.dsl.Disruptor;
if v != null goto label;
v = <org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor: org.apache.logging.log4j.Logger LOGGER>;
interfaceinvoke v.<org.apache.logging.log4j.Logger: void warn(java.lang.String)>("Ignoring log event after log4j was shut down");
return 1;
label:
return 0;
}
public void enqueueEvent(org.apache.logging.log4j.core.LogEvent, org.apache.logging.log4j.core.async.AsyncLoggerConfig)
{
java.lang.Throwable v, v;
org.apache.logging.log4j.Level v;
org.apache.logging.log4j.core.async.AsyncLoggerConfig v;
org.apache.logging.log4j.core.LogEvent v, v;
java.lang.NullPointerException v;
org.apache.logging.log4j.Logger v;
org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor v;
org.apache.logging.log4j.message.Message v;
java.lang.Object v;
java.lang.String v, v, v;
v := @this: org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor;
v := @parameter: org.apache.logging.log4j.core.LogEvent;
v := @parameter: org.apache.logging.log4j.core.async.AsyncLoggerConfig;
label:
v = specialinvoke v.<org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor: org.apache.logging.log4j.core.LogEvent prepareEvent(org.apache.logging.log4j.core.LogEvent)>(v);
specialinvoke v.<org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor: void enqueue(org.apache.logging.log4j.core.LogEvent,org.apache.logging.log4j.core.async.AsyncLoggerConfig)>(v, v);
label:
goto label;
label:
v := @caughtexception;
v = <org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor: org.apache.logging.log4j.Logger LOGGER>;
v = interfaceinvoke v.<org.apache.logging.log4j.core.LogEvent: org.apache.logging.log4j.Level getLevel()>();
v = interfaceinvoke v.<org.apache.logging.log4j.core.LogEvent: java.lang.String getLoggerName()>();
v = interfaceinvoke v.<org.apache.logging.log4j.core.LogEvent: org.apache.logging.log4j.message.Message getMessage()>();
v = interfaceinvoke v.<org.apache.logging.log4j.message.Message: java.lang.String getFormattedMessage()>();
v = interfaceinvoke v.<org.apache.logging.log4j.core.LogEvent: java.lang.Throwable getThrown()>();
if v != null goto label;
v = "";
goto label;
label:
v = interfaceinvoke v.<org.apache.logging.log4j.core.LogEvent: java.lang.Throwable getThrown()>();
v = staticinvoke <org.apache.logging.log4j.core.util.Throwables: java.util.List toStringList(java.lang.Throwable)>(v);
label:
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,java.lang.Object)>(v, v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("\u0001\u0001");
interfaceinvoke v.<org.apache.logging.log4j.Logger: void warn(java.lang.String,java.lang.Object,java.lang.Object,java.lang.Object)>("Ignoring log event after log4j was shut down: {} [{}] {}", v, v, v);
label:
return;
catch java.lang.NullPointerException from label to label with label;
}
private org.apache.logging.log4j.core.LogEvent prepareEvent(org.apache.logging.log4j.core.LogEvent)
{
org.apache.logging.log4j.core.LogEvent v, v;
org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor v;
org.apache.logging.log4j.message.Message v, v;
com.lmax.disruptor.EventTranslatorTwoArg v, v;
boolean v, v, v;
v := @this: org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor;
v := @parameter: org.apache.logging.log4j.core.LogEvent;
v = specialinvoke v.<org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor: org.apache.logging.log4j.core.LogEvent ensureImmutable(org.apache.logging.log4j.core.LogEvent)>(v);
v = interfaceinvoke v.<org.apache.logging.log4j.core.LogEvent: org.apache.logging.log4j.message.Message getMessage()>();
v = v instanceof org.apache.logging.log4j.message.ReusableMessage;
if v == 0 goto label;
v = v instanceof org.apache.logging.log4j.core.impl.Log4jLogEvent;
if v == 0 goto label;
virtualinvoke v.<org.apache.logging.log4j.core.impl.Log4jLogEvent: void makeMessageImmutable()>();
goto label;
label:
v = v instanceof org.apache.logging.log4j.core.impl.MutableLogEvent;
if v == 0 goto label;
v = v.<org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor: com.lmax.disruptor.EventTranslatorTwoArg translator>;
v = <org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor: com.lmax.disruptor.EventTranslatorTwoArg MUTABLE_TRANSLATOR>;
if v == v goto label;
v = virtualinvoke v.<org.apache.logging.log4j.core.impl.MutableLogEvent: org.apache.logging.log4j.core.impl.Log4jLogEvent createMemento()>();
goto label;
label:
specialinvoke v.<org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor: void showWarningAboutCustomLogEventWithReusableMessage(org.apache.logging.log4j.core.LogEvent)>(v);
goto label;
label:
v = interfaceinvoke v.<org.apache.logging.log4j.core.LogEvent: org.apache.logging.log4j.message.Message getMessage()>();
staticinvoke <org.apache.logging.log4j.core.async.InternalAsyncUtil: org.apache.logging.log4j.message.Message makeMessageImmutable(org.apache.logging.log4j.message.Message)>(v);
label:
return v;
}
private void showWarningAboutCustomLogEventWithReusableMessage(org.apache.logging.log4j.core.LogEvent)
{
org.apache.logging.log4j.core.LogEvent v;
org.apache.logging.log4j.Logger v;
org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor v;
org.apache.logging.log4j.message.Message v;
java.lang.Class v, v;
java.lang.String v, v;
boolean v;
v := @this: org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor;
v := @parameter: org.apache.logging.log4j.core.LogEvent;
v = v.<org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor: boolean alreadyLoggedWarning>;
if v != 0 goto label;
v = <org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor: org.apache.logging.log4j.Logger LOGGER>;
v = virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
v = interfaceinvoke v.<org.apache.logging.log4j.core.LogEvent: org.apache.logging.log4j.message.Message getMessage()>();
v = virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
interfaceinvoke v.<org.apache.logging.log4j.Logger: void warn(java.lang.String,java.lang.Object,java.lang.Object)>("Custom log event of type {} contains a mutable message of type {}. AsyncLoggerConfig does not know how to make an immutable copy of this message. This may result in ConcurrentModificationExceptions or incorrect log messages if the application modifies objects in the message while the background thread is writing it to the appenders.", v, v);
v.<org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor: boolean alreadyLoggedWarning> = 1;
label:
return;
}
private void enqueue(org.apache.logging.log4j.core.LogEvent, org.apache.logging.log4j.core.async.AsyncLoggerConfig)
{
java.lang.Throwable v;
com.lmax.disruptor.RingBuffer v, v;
org.apache.logging.log4j.core.async.AsyncLoggerConfig v;
org.apache.logging.log4j.core.LogEvent v;
org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor v;
java.lang.Object v;
com.lmax.disruptor.EventTranslatorTwoArg v, v;
com.lmax.disruptor.dsl.Disruptor v, v;
boolean v;
v := @this: org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor;
v := @parameter: org.apache.logging.log4j.core.LogEvent;
v := @parameter: org.apache.logging.log4j.core.async.AsyncLoggerConfig;
v = specialinvoke v.<org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor: boolean synchronizeEnqueueWhenQueueFull()>();
if v == 0 goto label;
v = v.<org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor: java.lang.Object queueFullEnqueueLock>;
entermonitor v;
label:
v = v.<org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor: com.lmax.disruptor.dsl.Disruptor disruptor>;
v = virtualinvoke v.<com.lmax.disruptor.dsl.Disruptor: com.lmax.disruptor.RingBuffer getRingBuffer()>();
v = v.<org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor: com.lmax.disruptor.EventTranslatorTwoArg translator>;
virtualinvoke v.<com.lmax.disruptor.RingBuffer: void publishEvent(com.lmax.disruptor.EventTranslatorTwoArg,java.lang.Object,java.lang.Object)>(v, v, v);
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
v = v.<org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor: com.lmax.disruptor.dsl.Disruptor disruptor>;
v = virtualinvoke v.<com.lmax.disruptor.dsl.Disruptor: com.lmax.disruptor.RingBuffer getRingBuffer()>();
v = v.<org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor: com.lmax.disruptor.EventTranslatorTwoArg translator>;
virtualinvoke v.<com.lmax.disruptor.RingBuffer: void publishEvent(com.lmax.disruptor.EventTranslatorTwoArg,java.lang.Object,java.lang.Object)>(v, v, v);
label:
return;
catch java.lang.Throwable from label to label with label;
}
private boolean synchronizeEnqueueWhenQueueFull()
{
long v, v;
byte v;
org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor v;
java.lang.Thread v, v;
boolean v, v, v;
v := @this: org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor;
v = <org.apache.logging.log4j.core.async.DisruptorUtil: boolean ASYNC_CONFIG_SYNCHRONIZE_ENQUEUE_WHEN_QUEUE_FULL>;
if v == 0 goto label;
v = v.<org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor: long backgroundThreadId>;
v = staticinvoke <java.lang.Thread: java.lang.Thread currentThread()>();
v = virtualinvoke v.<java.lang.Thread: long getId()>();
v = v cmp v;
if v == 0 goto label;
v = staticinvoke <java.lang.Thread: java.lang.Thread currentThread()>();
v = v instanceof org.apache.logging.log4j.core.util.Log4jThread;
if v != 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
public boolean tryEnqueue(org.apache.logging.log4j.core.LogEvent, org.apache.logging.log4j.core.async.AsyncLoggerConfig)
{
com.lmax.disruptor.RingBuffer v;
org.apache.logging.log4j.core.async.AsyncLoggerConfig v;
org.apache.logging.log4j.core.LogEvent v, v;
org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor v;
com.lmax.disruptor.EventTranslatorTwoArg v;
com.lmax.disruptor.dsl.Disruptor v;
boolean v;
v := @this: org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor;
v := @parameter: org.apache.logging.log4j.core.LogEvent;
v := @parameter: org.apache.logging.log4j.core.async.AsyncLoggerConfig;
v = specialinvoke v.<org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor: org.apache.logging.log4j.core.LogEvent prepareEvent(org.apache.logging.log4j.core.LogEvent)>(v);
v = v.<org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor: com.lmax.disruptor.dsl.Disruptor disruptor>;
v = virtualinvoke v.<com.lmax.disruptor.dsl.Disruptor: com.lmax.disruptor.RingBuffer getRingBuffer()>();
v = v.<org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor: com.lmax.disruptor.EventTranslatorTwoArg translator>;
v = virtualinvoke v.<com.lmax.disruptor.RingBuffer: boolean tryPublishEvent(com.lmax.disruptor.EventTranslatorTwoArg,java.lang.Object,java.lang.Object)>(v, v, v);
return v;
}
private org.apache.logging.log4j.core.LogEvent ensureImmutable(org.apache.logging.log4j.core.LogEvent)
{
org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor v;
org.apache.logging.log4j.core.LogEvent v, v;
boolean v;
v := @this: org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor;
v := @parameter: org.apache.logging.log4j.core.LogEvent;
v = v;
v = v instanceof org.apache.logging.log4j.core.async.RingBufferLogEvent;
if v == 0 goto label;
v = virtualinvoke v.<org.apache.logging.log4j.core.async.RingBufferLogEvent: org.apache.logging.log4j.core.LogEvent createMemento()>();
label:
return v;
}
public org.apache.logging.log4j.core.jmx.RingBufferAdmin createRingBufferAdmin(java.lang.String, java.lang.String)
{
org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor v;
com.lmax.disruptor.RingBuffer v;
java.lang.String v, v;
com.lmax.disruptor.dsl.Disruptor v;
org.apache.logging.log4j.core.jmx.RingBufferAdmin v;
v := @this: org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor;
v := @parameter: java.lang.String;
v := @parameter: java.lang.String;
v = v.<org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor: com.lmax.disruptor.dsl.Disruptor disruptor>;
v = virtualinvoke v.<com.lmax.disruptor.dsl.Disruptor: com.lmax.disruptor.RingBuffer getRingBuffer()>();
v = staticinvoke <org.apache.logging.log4j.core.jmx.RingBufferAdmin: org.apache.logging.log4j.core.jmx.RingBufferAdmin forAsyncLoggerConfig(com.lmax.disruptor.RingBuffer,java.lang.String,java.lang.String)>(v, v, v);
return v;
}
static void <clinit>()
{
com.lmax.disruptor.EventFactory v, v;
com.lmax.disruptor.EventTranslatorTwoArg v, v;
v = staticinvoke <org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor$init__1232: com.lmax.disruptor.EventFactory bootstrap$()>();
<org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor: com.lmax.disruptor.EventFactory FACTORY> = v;
v = staticinvoke <org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor$lambda_static_0__1233: com.lmax.disruptor.EventFactory bootstrap$()>();
<org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor: com.lmax.disruptor.EventFactory MUTABLE_FACTORY> = v;
v = staticinvoke <org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor$lambda_static_1__1234: com.lmax.disruptor.EventTranslatorTwoArg bootstrap$()>();
<org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor: com.lmax.disruptor.EventTranslatorTwoArg TRANSLATOR> = v;
v = staticinvoke <org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor$lambda_static_2__1235: com.lmax.disruptor.EventTranslatorTwoArg bootstrap$()>();
<org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor: com.lmax.disruptor.EventTranslatorTwoArg MUTABLE_TRANSLATOR> = v;
return;
}
}