public class org.apache.sling.event.impl.jobs.queues.JobQueueImpl extends java.lang.Object implements org.apache.sling.event.jobs.Queue
{
private static final long MAX_SUSPEND_TIME;
private final org.slf4j.Logger logger;
private final org.apache.sling.event.impl.jobs.config.InternalQueueConfiguration configuration;
private volatile java.lang.String queueName;
private volatile boolean running;
private final java.util.concurrent.atomic.AtomicLong suspendedSince;
private final org.apache.sling.event.impl.jobs.queues.QueueServices services;
private final java.util.Map processingJobsLists;
private final org.apache.sling.commons.threads.ThreadPool threadPool;
private final java.util.concurrent.atomic.AtomicInteger asyncCounter;
private final java.util.concurrent.atomic.AtomicBoolean isOutdated;
private final java.util.concurrent.atomic.AtomicBoolean closeMarker;
private final java.util.concurrent.atomic.AtomicBoolean doFullCacheSearch;
private final java.util.concurrent.atomic.AtomicInteger waitCounter;
private final org.apache.sling.event.impl.jobs.queues.QueueJobCache cache;
private final java.util.concurrent.Semaphore available;
private final java.util.concurrent.atomic.AtomicBoolean startJobsGuard;
private final java.util.concurrent.locks.ReentrantReadWriteLock lock;
private volatile long isSleepingUntil;
public static org.apache.sling.event.impl.jobs.queues.JobQueueImpl createQueue(java.lang.String, org.apache.sling.event.impl.jobs.config.InternalQueueConfiguration, org.apache.sling.event.impl.jobs.queues.QueueServices, java.util.Set, java.util.Set)
{
org.apache.sling.event.impl.jobs.queues.QueueJobCache v;
java.lang.String v, v, v, v;
boolean v, v, v, v;
org.apache.sling.event.impl.jobs.config.InternalQueueConfiguration v;
org.slf4j.Logger v;
java.util.Iterator v;
org.apache.sling.event.jobs.QueueConfiguration$Type v;
java.util.Set v, v, v, v;
org.apache.sling.event.impl.jobs.config.JobManagerConfiguration v;
org.apache.sling.event.impl.jobs.stats.StatisticsManager v;
java.lang.Class v;
java.lang.Object v;
org.apache.sling.event.impl.jobs.queues.JobQueueImpl v;
org.apache.sling.event.impl.jobs.queues.QueueServices v;
v := @parameter: java.lang.String;
v := @parameter: org.apache.sling.event.impl.jobs.config.InternalQueueConfiguration;
v := @parameter: org.apache.sling.event.impl.jobs.queues.QueueServices;
v := @parameter: java.util.Set;
v := @parameter: java.util.Set;
v = new org.apache.sling.event.impl.jobs.queues.QueueJobCache;
v = v.<org.apache.sling.event.impl.jobs.queues.QueueServices: org.apache.sling.event.impl.jobs.config.JobManagerConfiguration configuration>;
v = v.<org.apache.sling.event.impl.jobs.queues.QueueServices: org.apache.sling.event.impl.jobs.stats.StatisticsManager statisticsManager>;
v = virtualinvoke v.<org.apache.sling.event.impl.jobs.config.InternalQueueConfiguration: org.apache.sling.event.jobs.QueueConfiguration$Type getType()>();
specialinvoke v.<org.apache.sling.event.impl.jobs.queues.QueueJobCache: void <init>(org.apache.sling.event.impl.jobs.config.JobManagerConfiguration,java.lang.String,org.apache.sling.event.impl.jobs.stats.StatisticsManager,org.apache.sling.event.jobs.QueueConfiguration$Type,java.util.Set)>(v, v, v, v, v);
v = virtualinvoke v.<org.apache.sling.event.impl.jobs.queues.QueueJobCache: java.util.Set getNewlyHaltedTopics()>();
v = interfaceinvoke v.<java.util.Set: boolean isEmpty()>();
if v != 0 goto label;
v = virtualinvoke v.<org.apache.sling.event.impl.jobs.queues.QueueJobCache: java.util.Set getNewlyHaltedTopics()>();
v = interfaceinvoke v.<java.util.Set: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = interfaceinvoke v.<java.util.Set: boolean add(java.lang.Object)>(v);
if v == 0 goto label;
v = class "Lorg/apache/sling/event/impl/jobs/queues/JobQueueImpl;";
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,java.lang.String)>(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[])>("\u.\u0001");
v = staticinvoke <org.slf4j.LoggerFactory: org.slf4j.Logger getLogger(java.lang.String)>(v);
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(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[])>("createQueue : topic halted due to ClassNotFoundExceptions : \u0001");
interfaceinvoke v.<org.slf4j.Logger: void warn(java.lang.String)>(v);
goto label;
label:
v = virtualinvoke v.<org.apache.sling.event.impl.jobs.queues.QueueJobCache: boolean isEmpty()>();
if v == 0 goto label;
return null;
label:
v = new org.apache.sling.event.impl.jobs.queues.JobQueueImpl;
specialinvoke v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: void <init>(java.lang.String,org.apache.sling.event.impl.jobs.config.InternalQueueConfiguration,org.apache.sling.event.impl.jobs.queues.QueueServices,org.apache.sling.event.impl.jobs.queues.QueueJobCache)>(v, v, v, v);
return v;
}
private void <init>(java.lang.String, org.apache.sling.event.impl.jobs.config.InternalQueueConfiguration, org.apache.sling.event.impl.jobs.queues.QueueServices, org.apache.sling.event.impl.jobs.queues.QueueJobCache)
{
java.util.concurrent.atomic.AtomicBoolean v, v, v, v;
java.util.HashMap v;
java.util.concurrent.locks.ReentrantReadWriteLock v;
java.util.concurrent.atomic.AtomicInteger v, v;
org.apache.sling.event.impl.jobs.queues.QueueJobCache v;
int v, v, v;
org.apache.sling.commons.threads.ThreadPool v;
org.apache.sling.event.impl.EventingThreadPool v;
java.lang.String v, v, v, v;
org.apache.sling.event.impl.jobs.config.InternalQueueConfiguration v, v;
org.slf4j.Logger v, v, v;
org.apache.sling.commons.threads.ThreadPoolManager v;
java.util.concurrent.Semaphore v;
java.util.concurrent.atomic.AtomicLong v;
java.lang.Class v;
org.apache.sling.event.impl.jobs.queues.JobQueueImpl v;
org.apache.sling.event.impl.jobs.queues.QueueServices v;
v := @this: org.apache.sling.event.impl.jobs.queues.JobQueueImpl;
v := @parameter: java.lang.String;
v := @parameter: org.apache.sling.event.impl.jobs.config.InternalQueueConfiguration;
v := @parameter: org.apache.sling.event.impl.jobs.queues.QueueServices;
v := @parameter: org.apache.sling.event.impl.jobs.queues.QueueJobCache;
specialinvoke v.<java.lang.Object: void <init>()>();
v = new java.util.concurrent.atomic.AtomicLong;
specialinvoke v.<java.util.concurrent.atomic.AtomicLong: void <init>(long)>(-1L);
v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: java.util.concurrent.atomic.AtomicLong suspendedSince> = v;
v = new java.util.HashMap;
specialinvoke v.<java.util.HashMap: void <init>()>();
v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: java.util.Map processingJobsLists> = v;
v = new java.util.concurrent.atomic.AtomicInteger;
specialinvoke v.<java.util.concurrent.atomic.AtomicInteger: void <init>()>();
v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: java.util.concurrent.atomic.AtomicInteger asyncCounter> = v;
v = new java.util.concurrent.atomic.AtomicBoolean;
specialinvoke v.<java.util.concurrent.atomic.AtomicBoolean: void <init>(boolean)>(0);
v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: java.util.concurrent.atomic.AtomicBoolean isOutdated> = v;
v = new java.util.concurrent.atomic.AtomicBoolean;
specialinvoke v.<java.util.concurrent.atomic.AtomicBoolean: void <init>(boolean)>(0);
v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: java.util.concurrent.atomic.AtomicBoolean closeMarker> = v;
v = new java.util.concurrent.atomic.AtomicBoolean;
specialinvoke v.<java.util.concurrent.atomic.AtomicBoolean: void <init>(boolean)>(0);
v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: java.util.concurrent.atomic.AtomicBoolean doFullCacheSearch> = v;
v = new java.util.concurrent.atomic.AtomicInteger;
specialinvoke v.<java.util.concurrent.atomic.AtomicInteger: void <init>()>();
v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: java.util.concurrent.atomic.AtomicInteger waitCounter> = v;
v = new java.util.concurrent.atomic.AtomicBoolean;
specialinvoke v.<java.util.concurrent.atomic.AtomicBoolean: void <init>(boolean)>(0);
v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: java.util.concurrent.atomic.AtomicBoolean startJobsGuard> = v;
v = new java.util.concurrent.locks.ReentrantReadWriteLock;
specialinvoke v.<java.util.concurrent.locks.ReentrantReadWriteLock: void <init>()>();
v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: java.util.concurrent.locks.ReentrantReadWriteLock lock> = v;
v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: long isSleepingUntil> = -1L;
v = virtualinvoke v.<org.apache.sling.event.impl.jobs.config.InternalQueueConfiguration: int getOwnThreadPoolSize()>();
if v <= 0 goto label;
v = new org.apache.sling.event.impl.EventingThreadPool;
v = v.<org.apache.sling.event.impl.jobs.queues.QueueServices: org.apache.sling.commons.threads.ThreadPoolManager threadPoolManager>;
v = virtualinvoke v.<org.apache.sling.event.impl.jobs.config.InternalQueueConfiguration: int getOwnThreadPoolSize()>();
specialinvoke v.<org.apache.sling.event.impl.EventingThreadPool: void <init>(org.apache.sling.commons.threads.ThreadPoolManager,int)>(v, v);
v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: org.apache.sling.commons.threads.ThreadPool threadPool> = v;
goto label;
label:
v = v.<org.apache.sling.event.impl.jobs.queues.QueueServices: org.apache.sling.commons.threads.ThreadPool eventingThreadPool>;
v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: org.apache.sling.commons.threads.ThreadPool threadPool> = v;
label:
v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: java.lang.String queueName> = v;
v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: org.apache.sling.event.impl.jobs.config.InternalQueueConfiguration configuration> = v;
v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: org.apache.sling.event.impl.jobs.queues.QueueServices services> = v;
v = virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,java.lang.String)>(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[])>("\u.\u0001");
v = staticinvoke <org.slf4j.LoggerFactory: org.slf4j.Logger getLogger(java.lang.String)>(v);
v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: org.slf4j.Logger logger> = v;
v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: boolean running> = 1;
v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: org.apache.sling.event.impl.jobs.queues.QueueJobCache cache> = v;
v = new java.util.concurrent.Semaphore;
v = virtualinvoke v.<org.apache.sling.event.impl.jobs.config.InternalQueueConfiguration: int getMaxParallel()>();
specialinvoke v.<java.util.concurrent.Semaphore: void <init>(int,boolean)>(v, 1);
v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: java.util.concurrent.Semaphore available> = v;
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: org.slf4j.Logger logger>;
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: java.lang.String queueName>;
interfaceinvoke v.<org.slf4j.Logger: void info(java.lang.String,java.lang.Object)>("Starting job queue {}", v);
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: org.slf4j.Logger logger>;
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: org.apache.sling.event.impl.jobs.config.InternalQueueConfiguration configuration>;
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String,java.lang.Object)>("Configuration for job queue={}", v);
return;
}
public org.apache.sling.event.impl.jobs.config.InternalQueueConfiguration getConfiguration()
{
org.apache.sling.event.impl.jobs.queues.JobQueueImpl v;
org.apache.sling.event.impl.jobs.config.InternalQueueConfiguration v;
v := @this: org.apache.sling.event.impl.jobs.queues.JobQueueImpl;
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: org.apache.sling.event.impl.jobs.config.InternalQueueConfiguration configuration>;
return v;
}
public java.lang.String getName()
{
java.lang.String v;
org.apache.sling.event.impl.jobs.queues.JobQueueImpl v;
v := @this: org.apache.sling.event.impl.jobs.queues.JobQueueImpl;
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: java.lang.String queueName>;
return v;
}
public org.apache.sling.event.jobs.Statistics getStatistics()
{
org.apache.sling.event.jobs.Statistics v;
org.apache.sling.event.impl.jobs.stats.StatisticsManager v;
java.lang.String v;
org.apache.sling.event.impl.jobs.queues.JobQueueImpl v;
org.apache.sling.event.impl.jobs.queues.QueueServices v;
v := @this: org.apache.sling.event.impl.jobs.queues.JobQueueImpl;
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: org.apache.sling.event.impl.jobs.queues.QueueServices services>;
v = v.<org.apache.sling.event.impl.jobs.queues.QueueServices: org.apache.sling.event.impl.jobs.stats.StatisticsManager statisticsManager>;
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: java.lang.String queueName>;
v = virtualinvoke v.<org.apache.sling.event.impl.jobs.stats.StatisticsManager: org.apache.sling.event.jobs.Statistics getQueueStatistics(java.lang.String)>(v);
return v;
}
public void startJobs()
{
java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock v, v, v, v;
org.apache.sling.event.impl.jobs.queues.QueueJobCache v;
boolean v, v, v, v, v, v, v;
org.apache.sling.event.impl.jobs.stats.StatisticsManager v;
org.apache.sling.event.impl.jobs.queues.JobQueueImpl v;
org.apache.sling.event.impl.jobs.queues.QueueServices v, v;
java.lang.Throwable v;
java.util.concurrent.atomic.AtomicBoolean v, v, v, v;
java.util.concurrent.locks.ReentrantReadWriteLock v, v, v, v;
org.apache.sling.event.impl.jobs.JobConsumerManager v;
org.apache.sling.commons.threads.ThreadPool v;
java.util.concurrent.Semaphore v, v, v;
org.apache.sling.event.impl.jobs.JobHandler v;
org.apache.sling.event.impl.jobs.queues.JobQueueImpl$1 v;
v := @this: org.apache.sling.event.impl.jobs.queues.JobQueueImpl;
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: java.util.concurrent.atomic.AtomicBoolean startJobsGuard>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: boolean compareAndSet(boolean,boolean)>(0, 1);
if v == 0 goto label;
label:
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: boolean running>;
if v == 0 goto label;
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: java.util.concurrent.atomic.AtomicBoolean isOutdated>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: boolean get()>();
if v != 0 goto label;
v = virtualinvoke v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: boolean isSuspended()>();
if v != 0 goto label;
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: java.util.concurrent.Semaphore available>;
v = virtualinvoke v.<java.util.concurrent.Semaphore: boolean tryAcquire()>();
if v == 0 goto label;
v = 0;
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: java.util.concurrent.locks.ReentrantReadWriteLock lock>;
v = virtualinvoke v.<java.util.concurrent.locks.ReentrantReadWriteLock: java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock writeLock()>();
virtualinvoke v.<java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock: void lock()>();
label:
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: org.apache.sling.event.impl.jobs.queues.QueueJobCache cache>;
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: org.apache.sling.event.impl.jobs.queues.QueueServices services>;
v = v.<org.apache.sling.event.impl.jobs.queues.QueueServices: org.apache.sling.event.impl.jobs.JobConsumerManager jobConsumerManager>;
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: org.apache.sling.event.impl.jobs.queues.QueueServices services>;
v = v.<org.apache.sling.event.impl.jobs.queues.QueueServices: org.apache.sling.event.impl.jobs.stats.StatisticsManager statisticsManager>;
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: java.util.concurrent.atomic.AtomicBoolean doFullCacheSearch>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: boolean getAndSet(boolean)>(0);
v = virtualinvoke v.<org.apache.sling.event.impl.jobs.queues.QueueJobCache: org.apache.sling.event.impl.jobs.JobHandler getNextJob(org.apache.sling.event.impl.jobs.JobConsumerManager,org.apache.sling.event.impl.jobs.stats.StatisticsManager,org.apache.sling.event.jobs.Queue,boolean)>(v, v, v, v);
if v == null goto label;
v = 1;
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: org.apache.sling.commons.threads.ThreadPool threadPool>;
v = new org.apache.sling.event.impl.jobs.queues.JobQueueImpl$1;
specialinvoke v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl$1: void <init>(org.apache.sling.event.impl.jobs.queues.JobQueueImpl,org.apache.sling.event.impl.jobs.JobHandler)>(v, v);
interfaceinvoke v.<org.apache.sling.commons.threads.ThreadPool: void execute(java.lang.Runnable)>(v);
goto label;
label:
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: java.util.concurrent.Semaphore available>;
virtualinvoke v.<java.util.concurrent.Semaphore: void release()>();
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: java.util.concurrent.locks.ReentrantReadWriteLock lock>;
v = virtualinvoke v.<java.util.concurrent.locks.ReentrantReadWriteLock: java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock writeLock()>();
virtualinvoke v.<java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock: void unlock()>();
goto label;
label:
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: java.util.concurrent.locks.ReentrantReadWriteLock lock>;
v = virtualinvoke v.<java.util.concurrent.locks.ReentrantReadWriteLock: java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock writeLock()>();
virtualinvoke v.<java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock: void unlock()>();
goto label;
label:
v := @caughtexception;
if v != 0 goto label;
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: java.util.concurrent.Semaphore available>;
virtualinvoke v.<java.util.concurrent.Semaphore: void release()>();
label:
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: java.util.concurrent.locks.ReentrantReadWriteLock lock>;
v = virtualinvoke v.<java.util.concurrent.locks.ReentrantReadWriteLock: java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock writeLock()>();
virtualinvoke v.<java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock: void unlock()>();
throw v;
label:
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: java.util.concurrent.atomic.AtomicBoolean startJobsGuard>;
virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: void set(boolean)>(0);
label:
return;
catch java.lang.Throwable from label to label with label;
}
private void startJob(org.apache.sling.event.impl.jobs.JobHandler)
{
org.apache.sling.event.jobs.consumer.JobExecutionResult v;
org.apache.sling.event.jobs.consumer.JobExecutor v, v;
java.lang.Long v, v, v, v, v, v, v;
java.util.Map v, v;
java.lang.Exception v;
org.apache.sling.event.impl.jobs.stats.StatisticsManager v;
java.lang.Throwable v, v, v, v, v;
long v, v, v, v, v, v;
org.apache.sling.event.impl.jobs.JobConsumerManager v;
java.lang.String v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v;
org.apache.sling.event.impl.jobs.queues.JobExecutionContextImpl v;
org.apache.sling.event.impl.jobs.JobHandler v;
org.apache.sling.event.impl.jobs.config.JobManagerConfiguration v;
org.apache.sling.event.impl.jobs.queues.JobQueueImpl$2 v;
org.apache.sling.event.impl.jobs.JobImpl v;
java.util.concurrent.atomic.AtomicInteger v;
boolean v, v, v, v;
org.apache.sling.event.impl.jobs.queues.JobQueueImpl v;
org.apache.sling.event.impl.jobs.queues.QueueServices v, v, v, v;
org.osgi.service.event.EventAdmin v;
java.util.concurrent.atomic.AtomicBoolean v;
org.apache.sling.event.impl.jobs.queues.JobExecutionResultImpl v;
org.slf4j.Logger v, v, v;
java.util.concurrent.Semaphore v, v;
org.apache.sling.event.jobs.Job$JobState v, v;
java.lang.Object v;
v := @this: org.apache.sling.event.impl.jobs.queues.JobQueueImpl;
v := @parameter: org.apache.sling.event.impl.jobs.JobHandler;
label:
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: java.util.concurrent.atomic.AtomicBoolean closeMarker>;
virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: void set(boolean)>(0);
label:
v = virtualinvoke v.<org.apache.sling.event.impl.jobs.JobHandler: org.apache.sling.event.impl.jobs.JobImpl getJob()>();
v = staticinvoke <java.lang.System: long currentTimeMillis()>();
v.<org.apache.sling.event.impl.jobs.JobHandler: long started> = v;
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: org.apache.sling.event.impl.jobs.queues.QueueServices services>;
v = v.<org.apache.sling.event.impl.jobs.queues.QueueServices: org.apache.sling.event.impl.jobs.config.JobManagerConfiguration configuration>;
v = virtualinvoke v.<org.apache.sling.event.impl.jobs.config.JobManagerConfiguration: org.slf4j.Logger getAuditLogger()>();
v = virtualinvoke v.<org.apache.sling.event.impl.jobs.JobImpl: java.lang.String getId()>();
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String,java.lang.Object)>("START OK : {}", v);
v = virtualinvoke v.<org.apache.sling.event.impl.jobs.JobImpl: java.lang.Object getProperty(java.lang.String,java.lang.Class)>("event.job.queued.time", class "Ljava/util/Calendar;");
if v != null goto label;
v = staticinvoke <java.util.Calendar: java.util.Calendar getInstance()>();
v = staticinvoke <java.lang.System: long currentTimeMillis()>();
v = v - 10000L;
virtualinvoke v.<java.util.Calendar: void setTimeInMillis(long)>(v);
label:
v = v.<org.apache.sling.event.impl.jobs.JobHandler: long started>;
v = virtualinvoke v.<java.util.Calendar: long getTimeInMillis()>();
v = v - v;
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: org.apache.sling.event.impl.jobs.queues.QueueServices services>;
v = v.<org.apache.sling.event.impl.jobs.queues.QueueServices: org.apache.sling.event.impl.jobs.stats.StatisticsManager statisticsManager>;
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: java.lang.String queueName>;
v = virtualinvoke v.<org.apache.sling.event.impl.jobs.JobImpl: java.lang.String getTopic()>();
virtualinvoke v.<org.apache.sling.event.impl.jobs.stats.StatisticsManager: void jobStarted(java.lang.String,java.lang.String,long)>(v, v, v);
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: org.apache.sling.event.impl.jobs.queues.QueueServices services>;
v = v.<org.apache.sling.event.impl.jobs.queues.QueueServices: org.osgi.service.event.EventAdmin eventAdmin>;
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
staticinvoke <org.apache.sling.event.impl.jobs.notifications.NotificationUtility: void sendNotification(org.osgi.service.event.EventAdmin,java.lang.String,org.apache.sling.event.jobs.Job,java.lang.Long)>(v, "org/apache/sling/event/notification/job/START", v, v);
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: java.util.Map processingJobsLists>;
entermonitor v;
label:
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: java.util.Map processingJobsLists>;
v = virtualinvoke v.<org.apache.sling.event.impl.jobs.JobImpl: java.lang.String getId()>();
interfaceinvoke v.<java.util.Map: java.lang.Object put(java.lang.Object,java.lang.Object)>(v, v);
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
v = <org.apache.sling.event.impl.jobs.queues.JobExecutionResultImpl: org.apache.sling.event.impl.jobs.queues.JobExecutionResultImpl CANCELLED>;
v = <org.apache.sling.event.jobs.Job$JobState: org.apache.sling.event.jobs.Job$JobState ERROR>;
v = new org.apache.sling.event.impl.jobs.queues.JobExecutionContextImpl;
v = new org.apache.sling.event.impl.jobs.queues.JobQueueImpl$2;
specialinvoke v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl$2: void <init>(org.apache.sling.event.impl.jobs.queues.JobQueueImpl,org.apache.sling.event.impl.jobs.JobImpl)>(v, v);
specialinvoke v.<org.apache.sling.event.impl.jobs.queues.JobExecutionContextImpl: void <init>(org.apache.sling.event.impl.jobs.JobHandler,org.apache.sling.event.impl.jobs.queues.JobExecutionContextImpl$ASyncHandler)>(v, v);
label:
entermonitor v;
label:
v = virtualinvoke v.<org.apache.sling.event.impl.jobs.JobHandler: org.apache.sling.event.jobs.consumer.JobExecutor getConsumer()>();
v = interfaceinvoke v.<org.apache.sling.event.jobs.consumer.JobExecutor: org.apache.sling.event.jobs.consumer.JobExecutionResult process(org.apache.sling.event.jobs.Job,org.apache.sling.event.jobs.consumer.JobExecutionContext)>(v, v);
if v != null goto label;
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: org.apache.sling.event.impl.jobs.queues.QueueServices services>;
v = v.<org.apache.sling.event.impl.jobs.queues.QueueServices: org.apache.sling.event.impl.jobs.JobConsumerManager jobConsumerManager>;
v = virtualinvoke v.<org.apache.sling.event.impl.jobs.JobImpl: java.lang.String getId()>();
v = virtualinvoke v.<org.apache.sling.event.impl.jobs.JobHandler: org.apache.sling.event.jobs.consumer.JobExecutor getConsumer()>();
virtualinvoke v.<org.apache.sling.event.impl.jobs.JobConsumerManager: void registerListener(java.lang.String,org.apache.sling.event.jobs.consumer.JobExecutor,org.apache.sling.event.jobs.consumer.JobExecutionContext)>(v, v, v);
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: java.util.concurrent.atomic.AtomicInteger asyncCounter>;
virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: int incrementAndGet()>();
virtualinvoke v.<org.apache.sling.event.impl.jobs.queues.JobExecutionContextImpl: void markAsync()>();
goto label;
label:
v = virtualinvoke v.<org.apache.sling.event.impl.jobs.queues.JobExecutionResultImpl: boolean succeeded()>();
if v == 0 goto label;
v = <org.apache.sling.event.jobs.Job$JobState: org.apache.sling.event.jobs.Job$JobState SUCCEEDED>;
goto label;
label:
v = virtualinvoke v.<org.apache.sling.event.impl.jobs.queues.JobExecutionResultImpl: boolean failed()>();
if v == 0 goto label;
v = <org.apache.sling.event.jobs.Job$JobState: org.apache.sling.event.jobs.Job$JobState QUEUED>;
goto label;
label:
v = virtualinvoke v.<org.apache.sling.event.impl.jobs.queues.JobExecutionResultImpl: boolean cancelled()>();
if v == 0 goto label;
v = virtualinvoke v.<org.apache.sling.event.impl.jobs.JobHandler: boolean isStopped()>();
if v == 0 goto label;
v = <org.apache.sling.event.jobs.Job$JobState: org.apache.sling.event.jobs.Job$JobState STOPPED>;
goto label;
label:
v = <org.apache.sling.event.jobs.Job$JobState: org.apache.sling.event.jobs.Job$JobState ERROR>;
label:
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
if v == null goto label;
v = virtualinvoke v.<org.apache.sling.event.impl.jobs.queues.JobExecutionResultImpl: java.lang.Long getRetryDelayInMs()>();
if v == null goto label;
v = virtualinvoke v.<org.apache.sling.event.impl.jobs.queues.JobExecutionResultImpl: java.lang.Long getRetryDelayInMs()>();
virtualinvoke v.<org.apache.sling.event.impl.jobs.JobImpl: void setProperty(java.lang.String,java.lang.Object)>(":slingevent:delayOverride", v);
label:
v = virtualinvoke v.<org.apache.sling.event.impl.jobs.queues.JobExecutionResultImpl: java.lang.String getMessage()>();
if v == null goto label;
v = virtualinvoke v.<org.apache.sling.event.impl.jobs.queues.JobExecutionResultImpl: java.lang.String getMessage()>();
virtualinvoke v.<org.apache.sling.event.impl.jobs.JobImpl: void setProperty(java.lang.String,java.lang.Object)>("slingevent:resultMessage", v);
label:
v = virtualinvoke v.<org.apache.sling.event.impl.jobs.JobImpl: java.lang.String getId()>();
specialinvoke v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: boolean finishedJob(java.lang.String,org.apache.sling.event.jobs.Job$JobState,boolean)>(v, v, 0);
goto label;
label:
v := @caughtexception;
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: org.slf4j.Logger logger>;
v = virtualinvoke v.<java.lang.Throwable: java.lang.String getMessage()>();
v = staticinvoke <org.apache.sling.event.impl.jobs.Utility: java.lang.String toString(org.apache.sling.event.jobs.Job)>(v);
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,java.lang.String)>(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[])>("Unhandled error occured in job processor \u while processing job \u0001");
interfaceinvoke v.<org.slf4j.Logger: void error(java.lang.String,java.lang.Throwable)>(v, v);
v = <org.apache.sling.event.impl.jobs.queues.JobExecutionResultImpl: org.apache.sling.event.impl.jobs.queues.JobExecutionResultImpl CANCELLED>;
v = <org.apache.sling.event.jobs.Job$JobState: org.apache.sling.event.jobs.Job$JobState ERROR>;
label:
if v == null goto label;
v = virtualinvoke v.<org.apache.sling.event.impl.jobs.queues.JobExecutionResultImpl: java.lang.Long getRetryDelayInMs()>();
if v == null goto label;
v = virtualinvoke v.<org.apache.sling.event.impl.jobs.queues.JobExecutionResultImpl: java.lang.Long getRetryDelayInMs()>();
virtualinvoke v.<org.apache.sling.event.impl.jobs.JobImpl: void setProperty(java.lang.String,java.lang.Object)>(":slingevent:delayOverride", v);
label:
v = virtualinvoke v.<org.apache.sling.event.impl.jobs.queues.JobExecutionResultImpl: java.lang.String getMessage()>();
if v == null goto label;
v = virtualinvoke v.<org.apache.sling.event.impl.jobs.queues.JobExecutionResultImpl: java.lang.String getMessage()>();
virtualinvoke v.<org.apache.sling.event.impl.jobs.JobImpl: void setProperty(java.lang.String,java.lang.Object)>("slingevent:resultMessage", v);
label:
v = virtualinvoke v.<org.apache.sling.event.impl.jobs.JobImpl: java.lang.String getId()>();
specialinvoke v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: boolean finishedJob(java.lang.String,org.apache.sling.event.jobs.Job$JobState,boolean)>(v, v, 0);
goto label;
label:
v := @caughtexception;
if v == null goto label;
v = virtualinvoke v.<org.apache.sling.event.impl.jobs.queues.JobExecutionResultImpl: java.lang.Long getRetryDelayInMs()>();
if v == null goto label;
v = virtualinvoke v.<org.apache.sling.event.impl.jobs.queues.JobExecutionResultImpl: java.lang.Long getRetryDelayInMs()>();
virtualinvoke v.<org.apache.sling.event.impl.jobs.JobImpl: void setProperty(java.lang.String,java.lang.Object)>(":slingevent:delayOverride", v);
label:
v = virtualinvoke v.<org.apache.sling.event.impl.jobs.queues.JobExecutionResultImpl: java.lang.String getMessage()>();
if v == null goto label;
v = virtualinvoke v.<org.apache.sling.event.impl.jobs.queues.JobExecutionResultImpl: java.lang.String getMessage()>();
virtualinvoke v.<org.apache.sling.event.impl.jobs.JobImpl: void setProperty(java.lang.String,java.lang.Object)>("slingevent:resultMessage", v);
label:
v = virtualinvoke v.<org.apache.sling.event.impl.jobs.JobImpl: java.lang.String getId()>();
specialinvoke v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: boolean finishedJob(java.lang.String,org.apache.sling.event.jobs.Job$JobState,boolean)>(v, v, 0);
label:
throw v;
label:
v := @caughtexception;
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: org.slf4j.Logger logger>;
interfaceinvoke v.<org.slf4j.Logger: void error(java.lang.String,java.lang.Throwable)>("Exception during job processing.", v);
label:
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: java.util.concurrent.Semaphore available>;
virtualinvoke v.<java.util.concurrent.Semaphore: void release()>();
goto label;
label:
v := @caughtexception;
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: java.util.concurrent.Semaphore available>;
virtualinvoke v.<java.util.concurrent.Semaphore: void release()>();
throw v;
label:
return;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
catch java.lang.Exception from label to label with label;
catch java.lang.Throwable from label to label with label;
}
public void outdate()
{
org.slf4j.Logger v;
java.util.concurrent.atomic.AtomicBoolean v;
int v;
java.lang.String v, v, v;
org.apache.sling.event.impl.jobs.queues.JobQueueImpl v;
boolean v;
v := @this: org.apache.sling.event.impl.jobs.queues.JobQueueImpl;
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: java.util.concurrent.atomic.AtomicBoolean isOutdated>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: boolean compareAndSet(boolean,boolean)>(0, 1);
if v == 0 goto label;
v = virtualinvoke v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: java.lang.String getName()>();
v = virtualinvoke v.<java.lang.Object: int hashCode()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,int)>(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<outdated>(\u)");
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: org.slf4j.Logger logger>;
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: java.lang.String queueName>;
interfaceinvoke v.<org.slf4j.Logger: void info(java.lang.String,java.lang.Object,java.lang.Object)>("Outdating queue {}, renaming to {}.", v, v);
v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: java.lang.String queueName> = v;
label:
return;
}
public boolean tryToClose()
{
java.lang.Throwable v;
java.util.concurrent.atomic.AtomicBoolean v, v;
java.util.concurrent.locks.ReentrantReadWriteLock v, v, v, v;
java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock v, v, v, v;
org.apache.sling.event.impl.jobs.queues.JobQueueImpl v;
boolean v, v;
v := @this: org.apache.sling.event.impl.jobs.queues.JobQueueImpl;
virtualinvoke v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: void resume()>();
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: java.util.concurrent.locks.ReentrantReadWriteLock lock>;
v = virtualinvoke v.<java.util.concurrent.locks.ReentrantReadWriteLock: java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock writeLock()>();
virtualinvoke v.<java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock: void lock()>();
label:
v = specialinvoke v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: boolean canBeClosed()>();
if v == 0 goto label;
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: java.util.concurrent.atomic.AtomicBoolean closeMarker>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: boolean get()>();
if v == 0 goto label;
virtualinvoke v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: void close()>();
label:
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: java.util.concurrent.locks.ReentrantReadWriteLock lock>;
v = virtualinvoke v.<java.util.concurrent.locks.ReentrantReadWriteLock: java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock writeLock()>();
virtualinvoke v.<java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock: void unlock()>();
return 1;
label:
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: java.util.concurrent.atomic.AtomicBoolean closeMarker>;
virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: void set(boolean)>(1);
label:
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: java.util.concurrent.locks.ReentrantReadWriteLock lock>;
v = virtualinvoke v.<java.util.concurrent.locks.ReentrantReadWriteLock: java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock writeLock()>();
virtualinvoke v.<java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock: void unlock()>();
goto label;
label:
v := @caughtexception;
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: java.util.concurrent.locks.ReentrantReadWriteLock lock>;
v = virtualinvoke v.<java.util.concurrent.locks.ReentrantReadWriteLock: java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock writeLock()>();
virtualinvoke v.<java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock: void unlock()>();
throw v;
label:
return 0;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
}
private boolean canBeClosed()
{
java.util.concurrent.Semaphore v;
java.util.concurrent.atomic.AtomicInteger v, v;
int v, v, v, v;
org.apache.sling.event.impl.jobs.queues.JobQueueImpl v;
boolean v, v;
org.apache.sling.event.impl.jobs.config.InternalQueueConfiguration v;
v := @this: org.apache.sling.event.impl.jobs.queues.JobQueueImpl;
v = virtualinvoke v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: boolean isSuspended()>();
if v != 0 goto label;
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: java.util.concurrent.atomic.AtomicInteger asyncCounter>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: int get()>();
if v != 0 goto label;
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: java.util.concurrent.atomic.AtomicInteger waitCounter>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: int get()>();
if v != 0 goto label;
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: java.util.concurrent.Semaphore available>;
v = virtualinvoke v.<java.util.concurrent.Semaphore: int availablePermits()>();
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: org.apache.sling.event.impl.jobs.config.InternalQueueConfiguration configuration>;
v = virtualinvoke v.<org.apache.sling.event.impl.jobs.config.InternalQueueConfiguration: int getMaxParallel()>();
if v != v goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
public void close()
{
java.lang.Throwable v;
org.slf4j.Logger v, v;
java.util.Map v, v;
int v;
org.apache.sling.commons.threads.ThreadPool v;
java.lang.String v, v;
org.apache.sling.event.impl.jobs.queues.JobQueueImpl v;
org.apache.sling.event.impl.jobs.config.InternalQueueConfiguration v;
v := @this: org.apache.sling.event.impl.jobs.queues.JobQueueImpl;
v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: boolean running> = 0;
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: org.slf4j.Logger logger>;
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: java.lang.String queueName>;
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String,java.lang.Object)>("Shutting down job queue {}", v);
virtualinvoke v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: void resume()>();
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: java.util.Map processingJobsLists>;
entermonitor v;
label:
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: java.util.Map processingJobsLists>;
interfaceinvoke v.<java.util.Map: void clear()>();
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: org.apache.sling.event.impl.jobs.config.InternalQueueConfiguration configuration>;
v = virtualinvoke v.<org.apache.sling.event.impl.jobs.config.InternalQueueConfiguration: int getOwnThreadPoolSize()>();
if v <= 0 goto label;
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: org.apache.sling.commons.threads.ThreadPool threadPool>;
virtualinvoke v.<org.apache.sling.event.impl.EventingThreadPool: void release()>();
label:
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: org.slf4j.Logger logger>;
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: java.lang.String queueName>;
interfaceinvoke v.<org.slf4j.Logger: void info(java.lang.String,java.lang.Object)>("Stopped job queue {}", v);
return;
catch java.lang.Throwable from label to label with label;
}
public void maintain()
{
org.slf4j.Logger v;
java.util.concurrent.atomic.AtomicBoolean v;
long v, v, v;
java.util.concurrent.atomic.AtomicLong v;
byte v, v;
java.lang.Long v;
org.apache.sling.event.impl.jobs.queues.JobQueueImpl v;
v := @this: org.apache.sling.event.impl.jobs.queues.JobQueueImpl;
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: java.util.concurrent.atomic.AtomicLong suspendedSince>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicLong: long get()>();
v = v cmp -1L;
if v == 0 goto label;
v = v + 3600000L;
v = staticinvoke <java.lang.System: long currentTimeMillis()>();
v = v cmp v;
if v >= 0 goto label;
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: org.slf4j.Logger logger>;
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(3600000L);
interfaceinvoke v.<org.slf4j.Logger: void info(java.lang.String,java.lang.Object)>("Waking up suspended queue. It has been suspended for more than {}ms", v);
virtualinvoke v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: void resume()>();
label:
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: java.util.concurrent.atomic.AtomicBoolean doFullCacheSearch>;
virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: void set(boolean)>(1);
virtualinvoke v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: void startJobs()>();
return;
}
public void wakeUpQueue(java.util.Set)
{
java.util.Set v;
org.apache.sling.event.impl.jobs.queues.JobQueueImpl v;
org.apache.sling.event.impl.jobs.queues.QueueJobCache v;
v := @this: org.apache.sling.event.impl.jobs.queues.JobQueueImpl;
v := @parameter: java.util.Set;
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: org.apache.sling.event.impl.jobs.queues.QueueJobCache cache>;
virtualinvoke v.<org.apache.sling.event.impl.jobs.queues.QueueJobCache: void handleNewTopics(java.util.Set)>(v);
return;
}
private void requeue(org.apache.sling.event.impl.jobs.JobHandler)
{
org.apache.sling.event.impl.jobs.stats.StatisticsManager v;
org.apache.sling.event.impl.jobs.queues.QueueJobCache v;
org.apache.sling.event.impl.jobs.JobHandler v;
java.lang.String v;
org.apache.sling.event.impl.jobs.queues.JobQueueImpl v;
org.apache.sling.event.impl.jobs.queues.QueueServices v;
v := @this: org.apache.sling.event.impl.jobs.queues.JobQueueImpl;
v := @parameter: org.apache.sling.event.impl.jobs.JobHandler;
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: org.apache.sling.event.impl.jobs.queues.QueueJobCache cache>;
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: java.lang.String queueName>;
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: org.apache.sling.event.impl.jobs.queues.QueueServices services>;
v = v.<org.apache.sling.event.impl.jobs.queues.QueueServices: org.apache.sling.event.impl.jobs.stats.StatisticsManager statisticsManager>;
virtualinvoke v.<org.apache.sling.event.impl.jobs.queues.QueueJobCache: void reschedule(java.lang.String,org.apache.sling.event.impl.jobs.JobHandler,org.apache.sling.event.impl.jobs.stats.StatisticsManager)>(v, v, v);
virtualinvoke v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: void startJobs()>();
return;
}
private org.apache.sling.event.impl.jobs.queues.JobQueueImpl$RescheduleInfo handleReschedule(org.apache.sling.event.impl.jobs.JobHandler, org.apache.sling.event.jobs.Job$JobState)
{
java.lang.Integer v, v, v, v, v;
int[] v;
boolean v, v, v, v;
org.apache.sling.event.impl.jobs.queues.JobQueueImpl v;
java.lang.Object[] v;
org.apache.sling.event.impl.jobs.InternalJobState v, v, v, v;
long v, v, v;
int v, v, v, v, v, v, v;
java.lang.String v, v, v, v;
org.slf4j.Logger v, v, v, v, v, v, v;
org.apache.sling.event.impl.jobs.queues.JobQueueImpl$RescheduleInfo v;
org.apache.sling.event.jobs.Job$JobState v, v, v, v;
org.apache.sling.event.impl.jobs.JobHandler v;
java.lang.Object v, v;
org.apache.sling.event.impl.jobs.JobImpl v, v, v, v, v, v, v;
v := @this: org.apache.sling.event.impl.jobs.queues.JobQueueImpl;
v := @parameter: org.apache.sling.event.impl.jobs.JobHandler;
v := @parameter: org.apache.sling.event.jobs.Job$JobState;
v = new org.apache.sling.event.impl.jobs.queues.JobQueueImpl$RescheduleInfo;
specialinvoke v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl$RescheduleInfo: void <init>()>();
v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl$RescheduleInfo: org.apache.sling.event.jobs.Job$JobState state> = v;
v = <org.apache.sling.event.impl.jobs.queues.JobQueueImpl$6: int[] $SwitchMap$org$apache$sling$event$jobs$Job$JobState>;
v = virtualinvoke v.<org.apache.sling.event.jobs.Job$JobState: int ordinal()>();
v = v[v];
lookupswitch(v)
{
case 1: goto label;
case 2: goto label;
default: goto label;
};
label:
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: org.slf4j.Logger logger>;
v = interfaceinvoke v.<org.slf4j.Logger: boolean isDebugEnabled()>();
if v == 0 goto label;
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: org.slf4j.Logger logger>;
v = virtualinvoke v.<org.apache.sling.event.impl.jobs.JobHandler: org.apache.sling.event.impl.jobs.JobImpl getJob()>();
v = staticinvoke <org.apache.sling.event.impl.jobs.Utility: java.lang.String toString(org.apache.sling.event.jobs.Job)>(v);
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String,java.lang.Object)>("Finished job {}", v);
label:
v = staticinvoke <java.lang.System: long currentTimeMillis()>();
v = v.<org.apache.sling.event.impl.jobs.JobHandler: long started>;
v = v - v;
v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl$RescheduleInfo: long processingTime> = v;
v = <org.apache.sling.event.impl.jobs.InternalJobState: org.apache.sling.event.impl.jobs.InternalJobState SUCCEEDED>;
v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl$RescheduleInfo: org.apache.sling.event.impl.jobs.InternalJobState finalState> = v;
goto label;
label:
v = virtualinvoke v.<org.apache.sling.event.impl.jobs.JobHandler: org.apache.sling.event.impl.jobs.JobImpl getJob()>();
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(0);
v = virtualinvoke v.<org.apache.sling.event.impl.jobs.JobImpl: java.lang.Object getProperty(java.lang.String,java.lang.Object)>("event.job.retries", v);
v = virtualinvoke v.<java.lang.Integer: int intValue()>();
v = virtualinvoke v.<org.apache.sling.event.impl.jobs.JobHandler: org.apache.sling.event.impl.jobs.JobImpl getJob()>();
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(0);
v = virtualinvoke v.<org.apache.sling.event.impl.jobs.JobImpl: java.lang.Object getProperty(java.lang.String,java.lang.Object)>("event.job.retrycount", v);
v = virtualinvoke v.<java.lang.Integer: int intValue()>();
v = v + 1;
v = (int) -1;
if v == v goto label;
if v <= v goto label;
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: org.slf4j.Logger logger>;
v = interfaceinvoke v.<org.slf4j.Logger: boolean isDebugEnabled()>();
if v == 0 goto label;
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: org.slf4j.Logger logger>;
v = virtualinvoke v.<org.apache.sling.event.impl.jobs.JobHandler: org.apache.sling.event.impl.jobs.JobImpl getJob()>();
v = staticinvoke <org.apache.sling.event.impl.jobs.Utility: java.lang.String toString(org.apache.sling.event.jobs.Job)>(v);
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
interfaceinvoke v.<org.slf4j.Logger: void error(java.lang.String,java.lang.Object,java.lang.Object)>("Cancelled job {} after {} unsuccessful retries", v, v);
label:
v = <org.apache.sling.event.impl.jobs.InternalJobState: org.apache.sling.event.impl.jobs.InternalJobState CANCELLED>;
v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl$RescheduleInfo: org.apache.sling.event.impl.jobs.InternalJobState finalState> = v;
goto label;
label:
v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl$RescheduleInfo: boolean reschedule> = 1;
v = virtualinvoke v.<org.apache.sling.event.impl.jobs.JobHandler: org.apache.sling.event.impl.jobs.JobImpl getJob()>();
virtualinvoke v.<org.apache.sling.event.impl.jobs.JobImpl: void retry()>();
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: org.slf4j.Logger logger>;
v = newarray (java.lang.Object)[3];
v = virtualinvoke v.<org.apache.sling.event.impl.jobs.JobHandler: org.apache.sling.event.impl.jobs.JobImpl getJob()>();
v = staticinvoke <org.apache.sling.event.impl.jobs.Utility: java.lang.String toString(org.apache.sling.event.jobs.Job)>(v);
v[0] = v;
v = v - v;
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
v[1] = v;
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
v[2] = v;
interfaceinvoke v.<org.slf4j.Logger: void warn(java.lang.String,java.lang.Object[])>("Failed job {}, will retry {} more time(s), retryCount={}", v);
v = <org.apache.sling.event.impl.jobs.InternalJobState: org.apache.sling.event.impl.jobs.InternalJobState FAILED>;
v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl$RescheduleInfo: org.apache.sling.event.impl.jobs.InternalJobState finalState> = v;
goto label;
label:
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: org.slf4j.Logger logger>;
v = interfaceinvoke v.<org.slf4j.Logger: boolean isDebugEnabled()>();
if v == 0 goto label;
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: org.slf4j.Logger logger>;
v = virtualinvoke v.<org.apache.sling.event.impl.jobs.JobHandler: org.apache.sling.event.impl.jobs.JobImpl getJob()>();
v = staticinvoke <org.apache.sling.event.impl.jobs.Utility: java.lang.String toString(org.apache.sling.event.jobs.Job)>(v);
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String,java.lang.Object)>("Cancelled job {}", v);
label:
v = <org.apache.sling.event.impl.jobs.InternalJobState: org.apache.sling.event.impl.jobs.InternalJobState CANCELLED>;
v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl$RescheduleInfo: org.apache.sling.event.impl.jobs.InternalJobState finalState> = v;
label:
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl$RescheduleInfo: org.apache.sling.event.jobs.Job$JobState state>;
v = <org.apache.sling.event.jobs.Job$JobState: org.apache.sling.event.jobs.Job$JobState QUEUED>;
if v != v goto label;
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl$RescheduleInfo: boolean reschedule>;
if v != 0 goto label;
v = <org.apache.sling.event.jobs.Job$JobState: org.apache.sling.event.jobs.Job$JobState GIVEN_UP>;
v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl$RescheduleInfo: org.apache.sling.event.jobs.Job$JobState state> = v;
label:
return v;
}
private boolean finishedJob(java.lang.String, org.apache.sling.event.jobs.Job$JobState, boolean)
{
java.lang.Long v, v;
java.util.Map v, v;
boolean v, v, v, v, v, v;
org.apache.sling.event.impl.jobs.config.InternalQueueConfiguration v;
org.apache.sling.event.impl.jobs.stats.StatisticsManager v;
org.apache.sling.event.impl.jobs.queues.JobQueueImpl v;
org.apache.sling.event.impl.jobs.queues.QueueServices v, v, v;
org.osgi.service.event.EventAdmin v;
java.lang.Throwable v;
org.apache.sling.event.impl.jobs.InternalJobState v, v;
long v, v, v;
java.lang.String v, v, v, v;
org.slf4j.Logger v, v, v, v;
org.apache.sling.event.impl.jobs.queues.JobQueueImpl$RescheduleInfo v;
org.apache.sling.event.jobs.Job$JobState v, v, v, v;
org.apache.sling.event.impl.jobs.config.JobManagerConfiguration v;
java.lang.Object v;
org.apache.sling.event.impl.jobs.JobImpl v, v;
v := @this: org.apache.sling.event.impl.jobs.queues.JobQueueImpl;
v := @parameter: java.lang.String;
v := @parameter: org.apache.sling.event.jobs.Job$JobState;
v := @parameter: boolean;
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: org.apache.sling.event.impl.jobs.queues.QueueServices services>;
v = v.<org.apache.sling.event.impl.jobs.queues.QueueServices: org.apache.sling.event.impl.jobs.config.JobManagerConfiguration configuration>;
v = virtualinvoke v.<org.apache.sling.event.impl.jobs.config.JobManagerConfiguration: org.slf4j.Logger getAuditLogger()>();
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String,java.lang.Object,java.lang.Object)>("FINISHED {} : {}", v, v);
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: org.slf4j.Logger logger>;
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String,java.lang.Object,java.lang.Object)>("Received finish for job {}, resultState={}", v, v);
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: java.util.Map processingJobsLists>;
entermonitor v;
label:
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: java.util.Map processingJobsLists>;
v = interfaceinvoke v.<java.util.Map: java.lang.Object remove(java.lang.Object)>(v);
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: boolean running>;
if v != 0 goto label;
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: org.slf4j.Logger logger>;
interfaceinvoke v.<org.slf4j.Logger: void warn(java.lang.String,java.lang.Object)>("Queue is not running anymore. Discarding finish for {}", v);
return 0;
label:
if v != null goto label;
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: org.slf4j.Logger logger>;
interfaceinvoke v.<org.slf4j.Logger: void warn(java.lang.String,java.lang.Object)>("This job has never been started by this queue: {}", v);
return 0;
label:
v = specialinvoke v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: org.apache.sling.event.impl.jobs.queues.JobQueueImpl$RescheduleInfo handleReschedule(org.apache.sling.event.impl.jobs.JobHandler,org.apache.sling.event.jobs.Job$JobState)>(v, v);
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl$RescheduleInfo: boolean reschedule>;
if v != 0 goto label;
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl$RescheduleInfo: org.apache.sling.event.jobs.Job$JobState state>;
v = <org.apache.sling.event.jobs.Job$JobState: org.apache.sling.event.jobs.Job$JobState SUCCEEDED>;
if v != v goto label;
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: org.apache.sling.event.impl.jobs.config.InternalQueueConfiguration configuration>;
v = virtualinvoke v.<org.apache.sling.event.impl.jobs.config.InternalQueueConfiguration: boolean isKeepJobs()>();
if v == 0 goto label;
label:
v = 1;
goto label;
label:
v = 0;
label:
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl$RescheduleInfo: org.apache.sling.event.jobs.Job$JobState state>;
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl$RescheduleInfo: long processingTime>;
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
virtualinvoke v.<org.apache.sling.event.impl.jobs.JobHandler: void finished(org.apache.sling.event.jobs.Job$JobState,boolean,java.lang.Long)>(v, v, v);
goto label;
label:
specialinvoke v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: void reschedule(org.apache.sling.event.impl.jobs.JobHandler)>(v);
label:
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: org.apache.sling.event.impl.jobs.queues.QueueServices services>;
v = v.<org.apache.sling.event.impl.jobs.queues.QueueServices: org.apache.sling.event.impl.jobs.stats.StatisticsManager statisticsManager>;
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: java.lang.String queueName>;
v = virtualinvoke v.<org.apache.sling.event.impl.jobs.JobHandler: org.apache.sling.event.impl.jobs.JobImpl getJob()>();
v = virtualinvoke v.<org.apache.sling.event.impl.jobs.JobImpl: java.lang.String getTopic()>();
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl$RescheduleInfo: org.apache.sling.event.impl.jobs.InternalJobState finalState>;
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl$RescheduleInfo: long processingTime>;
virtualinvoke v.<org.apache.sling.event.impl.jobs.stats.StatisticsManager: void jobEnded(java.lang.String,java.lang.String,org.apache.sling.event.impl.jobs.InternalJobState,long)>(v, v, v, v);
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: org.apache.sling.event.impl.jobs.queues.QueueServices services>;
v = v.<org.apache.sling.event.impl.jobs.queues.QueueServices: org.osgi.service.event.EventAdmin eventAdmin>;
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl$RescheduleInfo: org.apache.sling.event.impl.jobs.InternalJobState finalState>;
v = virtualinvoke v.<org.apache.sling.event.impl.jobs.InternalJobState: java.lang.String getTopic()>();
v = virtualinvoke v.<org.apache.sling.event.impl.jobs.JobHandler: org.apache.sling.event.impl.jobs.JobImpl getJob()>();
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl$RescheduleInfo: long processingTime>;
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
staticinvoke <org.apache.sling.event.impl.jobs.notifications.NotificationUtility: void sendNotification(org.osgi.service.event.EventAdmin,java.lang.String,org.apache.sling.event.jobs.Job,java.lang.Long)>(v, v, v, v);
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl$RescheduleInfo: boolean reschedule>;
return v;
catch java.lang.Throwable from label to label with label;
}
public void resume()
{
java.util.concurrent.atomic.AtomicLong v;
org.slf4j.Logger v;
byte v;
long v;
java.lang.String v;
org.apache.sling.event.impl.jobs.queues.JobQueueImpl v;
v := @this: org.apache.sling.event.impl.jobs.queues.JobQueueImpl;
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: java.util.concurrent.atomic.AtomicLong suspendedSince>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicLong: long getAndSet(long)>(-1L);
v = v cmp -1L;
if v == 0 goto label;
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: org.slf4j.Logger logger>;
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: java.lang.String queueName>;
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String,java.lang.Object)>("Waking up suspended queue {}", v);
virtualinvoke v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: void startJobs()>();
label:
return;
}
public void suspend()
{
java.util.concurrent.atomic.AtomicLong v;
org.slf4j.Logger v;
long v;
java.lang.String v;
org.apache.sling.event.impl.jobs.queues.JobQueueImpl v;
boolean v;
v := @this: org.apache.sling.event.impl.jobs.queues.JobQueueImpl;
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: java.util.concurrent.atomic.AtomicLong suspendedSince>;
v = staticinvoke <java.lang.System: long currentTimeMillis()>();
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicLong: boolean compareAndSet(long,long)>(-1L, v);
if v == 0 goto label;
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: org.slf4j.Logger logger>;
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: java.lang.String queueName>;
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String,java.lang.Object)>("Suspending queue {}", v);
label:
return;
}
public boolean isSuspended()
{
java.util.concurrent.atomic.AtomicLong v;
byte v;
long v;
org.apache.sling.event.impl.jobs.queues.JobQueueImpl v;
boolean v;
v := @this: org.apache.sling.event.impl.jobs.queues.JobQueueImpl;
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: java.util.concurrent.atomic.AtomicLong suspendedSince>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicLong: long get()>();
v = v cmp -1L;
if v == 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
public synchronized void removeAll()
{
java.lang.Throwable v, v;
org.apache.sling.api.resource.ResourceResolver v;
org.apache.sling.event.impl.support.BatchResourceRemover v;
org.apache.sling.event.impl.jobs.queues.QueueJobCache v;
java.lang.String v, v, v;
boolean v, v;
org.slf4j.Logger v, v, v;
java.util.Iterator v;
java.util.Set v;
org.apache.sling.api.resource.Resource v, v;
org.apache.sling.event.impl.jobs.config.JobManagerConfiguration v, v;
org.apache.sling.event.impl.jobs.queues.JobQueueImpl$3 v;
java.lang.Object v;
org.apache.sling.event.impl.jobs.queues.JobQueueImpl v;
org.apache.sling.event.impl.jobs.queues.QueueServices v, v;
v := @this: org.apache.sling.event.impl.jobs.queues.JobQueueImpl;
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: org.apache.sling.event.impl.jobs.queues.QueueJobCache cache>;
v = virtualinvoke v.<org.apache.sling.event.impl.jobs.queues.QueueJobCache: java.util.Set getTopics()>();
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: org.slf4j.Logger logger>;
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: java.lang.String queueName>;
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String,java.lang.Object,java.lang.Object)>("Removing all jobs for queue {} : {}", v, v);
v = interfaceinvoke v.<java.util.Set: boolean isEmpty()>();
if v != 0 goto label;
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: org.apache.sling.event.impl.jobs.queues.QueueServices services>;
v = v.<org.apache.sling.event.impl.jobs.queues.QueueServices: org.apache.sling.event.impl.jobs.config.JobManagerConfiguration configuration>;
v = virtualinvoke v.<org.apache.sling.event.impl.jobs.config.JobManagerConfiguration: org.apache.sling.api.resource.ResourceResolver createResourceResolver()>();
label:
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: org.apache.sling.event.impl.jobs.queues.QueueServices services>;
v = v.<org.apache.sling.event.impl.jobs.queues.QueueServices: org.apache.sling.event.impl.jobs.config.JobManagerConfiguration configuration>;
v = virtualinvoke v.<org.apache.sling.event.impl.jobs.config.JobManagerConfiguration: java.lang.String getLocalJobsPath()>();
v = interfaceinvoke v.<org.apache.sling.api.resource.ResourceResolver: org.apache.sling.api.resource.Resource getResource(java.lang.String)>(v);
if v == null goto label;
v = new org.apache.sling.event.impl.support.BatchResourceRemover;
specialinvoke v.<org.apache.sling.event.impl.support.BatchResourceRemover: void <init>()>();
v = interfaceinvoke v.<java.util.Set: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = virtualinvoke v.<java.lang.String: java.lang.String replace(char,char)>(47, 46);
v = interfaceinvoke v.<org.apache.sling.api.resource.Resource: org.apache.sling.api.resource.Resource getChild(java.lang.String)>(v);
if v == null goto label;
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: org.slf4j.Logger logger>;
v = new org.apache.sling.event.impl.jobs.queues.JobQueueImpl$3;
specialinvoke v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl$3: void <init>(org.apache.sling.event.impl.jobs.queues.JobQueueImpl,org.apache.sling.api.resource.Resource,org.apache.sling.event.impl.support.BatchResourceRemover)>(v, v, v);
staticinvoke <org.apache.sling.event.impl.jobs.JobTopicTraverser: void traverse(org.slf4j.Logger,org.apache.sling.api.resource.Resource,org.apache.sling.event.impl.jobs.JobTopicTraverser$JobCallback)>(v, v, v);
goto label;
label:
interfaceinvoke v.<org.apache.sling.api.resource.ResourceResolver: void commit()>();
label:
goto label;
label:
v := @caughtexception;
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: org.slf4j.Logger logger>;
interfaceinvoke v.<org.slf4j.Logger: void error(java.lang.String,java.lang.Throwable)>("Unable to remove jobs", v);
label:
interfaceinvoke v.<org.apache.sling.api.resource.ResourceResolver: void close()>();
goto label;
label:
v := @caughtexception;
interfaceinvoke v.<org.apache.sling.api.resource.ResourceResolver: void close()>();
throw v;
label:
return;
catch org.apache.sling.api.resource.PersistenceException from label to label with label;
catch java.lang.Throwable from label to label with label;
}
public java.lang.Object getState(java.lang.String)
{
org.apache.sling.event.jobs.QueueConfiguration$Type v, v;
long v;
java.lang.Long v;
java.lang.String v, v;
org.apache.sling.event.impl.jobs.queues.JobQueueImpl v;
boolean v;
org.apache.sling.event.impl.jobs.config.InternalQueueConfiguration v;
v := @this: org.apache.sling.event.impl.jobs.queues.JobQueueImpl;
v := @parameter: java.lang.String;
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: org.apache.sling.event.impl.jobs.config.InternalQueueConfiguration configuration>;
v = virtualinvoke v.<org.apache.sling.event.impl.jobs.config.InternalQueueConfiguration: org.apache.sling.event.jobs.QueueConfiguration$Type getType()>();
v = <org.apache.sling.event.jobs.QueueConfiguration$Type: org.apache.sling.event.jobs.QueueConfiguration$Type ORDERED>;
if v != v goto label;
v = "isSleepingUntil";
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: long isSleepingUntil>;
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
return v;
label:
return null;
}
public java.lang.String getStateInfo()
{
java.util.concurrent.atomic.AtomicBoolean v;
long v, v;
java.util.concurrent.atomic.AtomicInteger v, v;
int v, v, v, v, v;
java.lang.String v, v, v, v;
boolean v;
org.apache.sling.event.impl.jobs.config.InternalQueueConfiguration v, v;
org.apache.sling.event.jobs.QueueConfiguration$Type v, v;
java.util.concurrent.Semaphore v;
java.util.concurrent.atomic.AtomicLong v;
org.apache.sling.event.impl.jobs.queues.JobQueueImpl v;
v := @this: org.apache.sling.event.impl.jobs.queues.JobQueueImpl;
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: java.util.concurrent.atomic.AtomicBoolean isOutdated>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: boolean get()>();
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: java.util.concurrent.atomic.AtomicLong suspendedSince>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicLong: long get()>();
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: java.util.concurrent.atomic.AtomicInteger asyncCounter>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: int get()>();
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: java.util.concurrent.atomic.AtomicInteger waitCounter>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: int get()>();
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: org.apache.sling.event.impl.jobs.config.InternalQueueConfiguration configuration>;
v = virtualinvoke v.<org.apache.sling.event.impl.jobs.config.InternalQueueConfiguration: int getMaxParallel()>();
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: java.util.concurrent.Semaphore available>;
v = virtualinvoke v.<java.util.concurrent.Semaphore: int availablePermits()>();
v = v - v;
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: org.apache.sling.event.impl.jobs.config.InternalQueueConfiguration configuration>;
v = virtualinvoke v.<org.apache.sling.event.impl.jobs.config.InternalQueueConfiguration: org.apache.sling.event.jobs.QueueConfiguration$Type getType()>();
v = <org.apache.sling.event.jobs.QueueConfiguration$Type: org.apache.sling.event.jobs.QueueConfiguration$Type ORDERED>;
if v != v goto label;
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: long isSleepingUntil>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (long)>(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[])>(", isSleepingUntil=\u0001");
goto label;
label:
v = "";
label:
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (int,java.lang.String)>(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");
v = staticinvoke <java.lang.String: java.lang.String valueOf(java.lang.Object)>(v);
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (boolean,long,int,int,java.lang.String)>(v, v, v, 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[])>("outdated=\u, suspendedSince=\u, asyncJobs=\u, waitCount=\u, jobCount=\u0001");
return v;
}
private long getRetryDelay(org.apache.sling.event.impl.jobs.JobHandler)
{
org.apache.sling.event.impl.jobs.JobHandler v;
long v;
java.lang.Object v, v, v, v;
org.apache.sling.event.impl.jobs.JobImpl v, v, v, v;
org.apache.sling.event.impl.jobs.queues.JobQueueImpl v;
org.apache.sling.event.impl.jobs.config.InternalQueueConfiguration v;
v := @this: org.apache.sling.event.impl.jobs.queues.JobQueueImpl;
v := @parameter: org.apache.sling.event.impl.jobs.JobHandler;
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: org.apache.sling.event.impl.jobs.config.InternalQueueConfiguration configuration>;
v = virtualinvoke v.<org.apache.sling.event.impl.jobs.config.InternalQueueConfiguration: long getRetryDelayInMs()>();
v = virtualinvoke v.<org.apache.sling.event.impl.jobs.JobHandler: org.apache.sling.event.impl.jobs.JobImpl getJob()>();
v = virtualinvoke v.<org.apache.sling.event.impl.jobs.JobImpl: java.lang.Object getProperty(java.lang.String)>(":slingevent:delayOverride");
if v == null goto label;
v = virtualinvoke v.<org.apache.sling.event.impl.jobs.JobHandler: org.apache.sling.event.impl.jobs.JobImpl getJob()>();
v = virtualinvoke v.<org.apache.sling.event.impl.jobs.JobImpl: java.lang.Object getProperty(java.lang.String,java.lang.Class)>(":slingevent:delayOverride", class "Ljava/lang/Long;");
v = virtualinvoke v.<java.lang.Long: long longValue()>();
goto label;
label:
v = virtualinvoke v.<org.apache.sling.event.impl.jobs.JobHandler: org.apache.sling.event.impl.jobs.JobImpl getJob()>();
v = virtualinvoke v.<org.apache.sling.event.impl.jobs.JobImpl: java.lang.Object getProperty(java.lang.String)>("event.job.retrydelay");
if v == null goto label;
v = virtualinvoke v.<org.apache.sling.event.impl.jobs.JobHandler: org.apache.sling.event.impl.jobs.JobImpl getJob()>();
v = virtualinvoke v.<org.apache.sling.event.impl.jobs.JobImpl: java.lang.Object getProperty(java.lang.String,java.lang.Class)>("event.job.retrydelay", class "Ljava/lang/Long;");
v = virtualinvoke v.<java.lang.Long: long longValue()>();
label:
return v;
}
public boolean stopJob(org.apache.sling.event.impl.jobs.JobImpl)
{
java.lang.Throwable v;
java.util.Map v, v;
java.lang.Object v;
org.apache.sling.event.impl.jobs.JobImpl v;
java.lang.String v;
org.apache.sling.event.impl.jobs.queues.JobQueueImpl v;
boolean v;
v := @this: org.apache.sling.event.impl.jobs.queues.JobQueueImpl;
v := @parameter: org.apache.sling.event.impl.jobs.JobImpl;
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: java.util.Map processingJobsLists>;
entermonitor v;
label:
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: java.util.Map processingJobsLists>;
v = virtualinvoke v.<org.apache.sling.event.impl.jobs.JobImpl: java.lang.String getId()>();
v = interfaceinvoke v.<java.util.Map: java.lang.Object get(java.lang.Object)>(v);
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
if v == null goto label;
virtualinvoke v.<org.apache.sling.event.impl.jobs.JobHandler: void stop()>();
if v == null goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
catch java.lang.Throwable from label to label with label;
}
private void reschedule(org.apache.sling.event.impl.jobs.JobHandler)
{
java.util.Date v;
java.util.Timer v;
long v, v, v, v;
byte v;
java.util.concurrent.atomic.AtomicInteger v;
org.apache.sling.event.impl.jobs.queues.QueueJobCache v;
org.apache.sling.event.impl.jobs.config.InternalQueueConfiguration v, v;
org.apache.sling.event.jobs.QueueConfiguration$Type v, v, v, v;
org.apache.sling.event.impl.jobs.JobHandler v;
org.apache.sling.event.impl.jobs.queues.JobQueueImpl$4 v;
org.apache.sling.event.impl.jobs.queues.JobQueueImpl$5 v;
org.apache.sling.event.impl.jobs.queues.JobQueueImpl v;
v := @this: org.apache.sling.event.impl.jobs.queues.JobQueueImpl;
v := @parameter: org.apache.sling.event.impl.jobs.JobHandler;
v = specialinvoke v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: long getRetryDelay(org.apache.sling.event.impl.jobs.JobHandler)>(v);
v = v cmp 0L;
if v <= 0 goto label;
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: org.apache.sling.event.impl.jobs.config.InternalQueueConfiguration configuration>;
v = virtualinvoke v.<org.apache.sling.event.impl.jobs.config.InternalQueueConfiguration: org.apache.sling.event.jobs.QueueConfiguration$Type getType()>();
v = <org.apache.sling.event.jobs.QueueConfiguration$Type: org.apache.sling.event.jobs.QueueConfiguration$Type ORDERED>;
if v != v goto label;
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: org.apache.sling.event.impl.jobs.queues.QueueJobCache cache>;
virtualinvoke v.<org.apache.sling.event.impl.jobs.queues.QueueJobCache: void setIsBlocked(boolean)>(1);
label:
virtualinvoke v.<org.apache.sling.event.impl.jobs.JobHandler: void addToRetryList()>();
v = new java.util.Date;
specialinvoke v.<java.util.Date: void <init>()>();
v = staticinvoke <java.lang.System: long currentTimeMillis()>();
v = v + v;
virtualinvoke v.<java.util.Date: void setTime(long)>(v);
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: org.apache.sling.event.impl.jobs.config.InternalQueueConfiguration configuration>;
v = virtualinvoke v.<org.apache.sling.event.impl.jobs.config.InternalQueueConfiguration: org.apache.sling.event.jobs.QueueConfiguration$Type getType()>();
v = <org.apache.sling.event.jobs.QueueConfiguration$Type: org.apache.sling.event.jobs.QueueConfiguration$Type ORDERED>;
if v != v goto label;
v = virtualinvoke v.<java.util.Date: long getTime()>();
v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: long isSleepingUntil> = v;
label:
v = new org.apache.sling.event.impl.jobs.queues.JobQueueImpl$4;
specialinvoke v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl$4: void <init>(org.apache.sling.event.impl.jobs.queues.JobQueueImpl,org.apache.sling.event.impl.jobs.JobHandler)>(v, v);
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: java.util.concurrent.atomic.AtomicInteger waitCounter>;
virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: int incrementAndGet()>();
v = new java.util.Timer;
specialinvoke v.<java.util.Timer: void <init>()>();
v = new org.apache.sling.event.impl.jobs.queues.JobQueueImpl$5;
specialinvoke v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl$5: void <init>(org.apache.sling.event.impl.jobs.queues.JobQueueImpl,java.lang.Runnable)>(v, v);
virtualinvoke v.<java.util.Timer: void schedule(java.util.TimerTask,long)>(v, v);
goto label;
label:
specialinvoke v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: void requeue(org.apache.sling.event.impl.jobs.JobHandler)>(v);
label:
return;
}
org.apache.sling.event.impl.jobs.queues.QueueJobCache getCache()
{
org.apache.sling.event.impl.jobs.queues.JobQueueImpl v;
org.apache.sling.event.impl.jobs.queues.QueueJobCache v;
v := @this: org.apache.sling.event.impl.jobs.queues.JobQueueImpl;
v = v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: org.apache.sling.event.impl.jobs.queues.QueueJobCache cache>;
return v;
}
}