public class org.apache.sling.event.impl.jobs.queues.QueueManager extends java.lang.Object implements java.lang.Runnable, org.osgi.service.event.EventHandler, org.apache.sling.event.impl.jobs.config.ConfigurationChangeListener
{
private final org.slf4j.Logger logger;
private org.osgi.service.event.EventAdmin eventAdmin;
private org.apache.sling.event.impl.jobs.JobConsumerManager jobConsumerManager;
private org.apache.sling.event.jobs.jmx.QueuesMBean queuesMBean;
private org.apache.sling.commons.threads.ThreadPoolManager threadPoolManager;
private org.apache.sling.commons.threads.ThreadPool threadPool;
private org.apache.sling.event.impl.jobs.config.JobManagerConfiguration configuration;
private org.apache.sling.event.impl.jobs.stats.StatisticsManager statisticsManager;
private final java.lang.Object queuesLock;
private final java.util.Map queues;
private volatile long schedulerRuns;
private final java.util.concurrent.atomic.AtomicBoolean isActive;
private volatile org.apache.sling.event.impl.jobs.queues.QueueServices queueServices;
private final java.util.Set haltedTopics;
public void <init>()
{
org.slf4j.Logger v;
java.util.concurrent.ConcurrentSkipListSet v;
java.util.concurrent.ConcurrentHashMap v;
java.util.concurrent.atomic.AtomicBoolean v;
java.lang.Class v;
java.lang.Object v;
org.apache.sling.event.impl.jobs.queues.QueueManager v;
v := @this: org.apache.sling.event.impl.jobs.queues.QueueManager;
specialinvoke v.<java.lang.Object: void <init>()>();
v = virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
v = staticinvoke <org.slf4j.LoggerFactory: org.slf4j.Logger getLogger(java.lang.Class)>(v);
v.<org.apache.sling.event.impl.jobs.queues.QueueManager: org.slf4j.Logger logger> = v;
v = new java.lang.Object;
specialinvoke v.<java.lang.Object: void <init>()>();
v.<org.apache.sling.event.impl.jobs.queues.QueueManager: java.lang.Object queuesLock> = v;
v = new java.util.concurrent.ConcurrentHashMap;
specialinvoke v.<java.util.concurrent.ConcurrentHashMap: void <init>()>();
v.<org.apache.sling.event.impl.jobs.queues.QueueManager: java.util.Map queues> = 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.QueueManager: java.util.concurrent.atomic.AtomicBoolean isActive> = v;
v = new java.util.concurrent.ConcurrentSkipListSet;
specialinvoke v.<java.util.concurrent.ConcurrentSkipListSet: void <init>()>();
v.<org.apache.sling.event.impl.jobs.queues.QueueManager: java.util.Set haltedTopics> = v;
return;
}
static org.apache.sling.event.impl.jobs.queues.QueueManager newForTest(org.osgi.service.event.EventAdmin, org.apache.sling.event.impl.jobs.JobConsumerManager, org.apache.sling.event.jobs.jmx.QueuesMBean, org.apache.sling.commons.threads.ThreadPoolManager, org.apache.sling.commons.threads.ThreadPool, org.apache.sling.event.impl.jobs.config.JobManagerConfiguration, org.apache.sling.event.impl.jobs.stats.StatisticsManager)
{
org.apache.sling.commons.threads.ThreadPoolManager v;
org.apache.sling.event.impl.jobs.config.JobManagerConfiguration v;
org.apache.sling.event.impl.jobs.JobConsumerManager v;
org.apache.sling.event.impl.jobs.stats.StatisticsManager v;
org.apache.sling.commons.threads.ThreadPool v;
org.apache.sling.event.jobs.jmx.QueuesMBean v;
org.apache.sling.event.impl.jobs.queues.QueueManager v;
org.osgi.service.event.EventAdmin v;
v := @parameter: org.osgi.service.event.EventAdmin;
v := @parameter: org.apache.sling.event.impl.jobs.JobConsumerManager;
v := @parameter: org.apache.sling.event.jobs.jmx.QueuesMBean;
v := @parameter: org.apache.sling.commons.threads.ThreadPoolManager;
v := @parameter: org.apache.sling.commons.threads.ThreadPool;
v := @parameter: org.apache.sling.event.impl.jobs.config.JobManagerConfiguration;
v := @parameter: org.apache.sling.event.impl.jobs.stats.StatisticsManager;
v = new org.apache.sling.event.impl.jobs.queues.QueueManager;
specialinvoke v.<org.apache.sling.event.impl.jobs.queues.QueueManager: void <init>()>();
v.<org.apache.sling.event.impl.jobs.queues.QueueManager: org.osgi.service.event.EventAdmin eventAdmin> = v;
v.<org.apache.sling.event.impl.jobs.queues.QueueManager: org.apache.sling.event.impl.jobs.JobConsumerManager jobConsumerManager> = v;
v.<org.apache.sling.event.impl.jobs.queues.QueueManager: org.apache.sling.event.jobs.jmx.QueuesMBean queuesMBean> = v;
v.<org.apache.sling.event.impl.jobs.queues.QueueManager: org.apache.sling.commons.threads.ThreadPoolManager threadPoolManager> = v;
v.<org.apache.sling.event.impl.jobs.queues.QueueManager: org.apache.sling.commons.threads.ThreadPool threadPool> = v;
v.<org.apache.sling.event.impl.jobs.queues.QueueManager: org.apache.sling.event.impl.jobs.config.JobManagerConfiguration configuration> = v;
v.<org.apache.sling.event.impl.jobs.queues.QueueManager: org.apache.sling.event.impl.jobs.stats.StatisticsManager statisticsManager> = v;
return v;
}
protected void activate(java.util.Map)
{
org.apache.sling.event.impl.jobs.JobConsumerManager v;
java.util.Map v;
org.apache.sling.commons.threads.ThreadPool v;
java.lang.String v, v;
org.slf4j.Logger v, v;
org.apache.sling.commons.threads.ThreadPoolManager v;
org.apache.sling.event.impl.jobs.config.JobManagerConfiguration v, v;
org.apache.sling.event.impl.jobs.stats.StatisticsManager v;
org.apache.sling.event.impl.jobs.queues.QueueServices v, v, v, v, v, v, v;
org.apache.sling.event.impl.jobs.queues.QueueManager v;
org.osgi.service.event.EventAdmin v;
v := @this: org.apache.sling.event.impl.jobs.queues.QueueManager;
v := @parameter: java.util.Map;
v = v.<org.apache.sling.event.impl.jobs.queues.QueueManager: org.slf4j.Logger logger>;
v = <org.apache.sling.event.impl.support.Environment: java.lang.String APPLICATION_ID>;
interfaceinvoke v.<org.slf4j.Logger: void info(java.lang.String,java.lang.Object)>("Apache Sling Queue Manager starting on instance {}", v);
v = new org.apache.sling.event.impl.jobs.queues.QueueServices;
specialinvoke v.<org.apache.sling.event.impl.jobs.queues.QueueServices: void <init>()>();
v.<org.apache.sling.event.impl.jobs.queues.QueueManager: org.apache.sling.event.impl.jobs.queues.QueueServices queueServices> = v;
v = v.<org.apache.sling.event.impl.jobs.queues.QueueManager: org.apache.sling.event.impl.jobs.queues.QueueServices queueServices>;
v = v.<org.apache.sling.event.impl.jobs.queues.QueueManager: org.apache.sling.event.impl.jobs.config.JobManagerConfiguration configuration>;
v.<org.apache.sling.event.impl.jobs.queues.QueueServices: org.apache.sling.event.impl.jobs.config.JobManagerConfiguration configuration> = v;
v = v.<org.apache.sling.event.impl.jobs.queues.QueueManager: org.apache.sling.event.impl.jobs.queues.QueueServices queueServices>;
v = v.<org.apache.sling.event.impl.jobs.queues.QueueManager: org.osgi.service.event.EventAdmin eventAdmin>;
v.<org.apache.sling.event.impl.jobs.queues.QueueServices: org.osgi.service.event.EventAdmin eventAdmin> = v;
v = v.<org.apache.sling.event.impl.jobs.queues.QueueManager: org.apache.sling.event.impl.jobs.queues.QueueServices queueServices>;
v = v.<org.apache.sling.event.impl.jobs.queues.QueueManager: org.apache.sling.event.impl.jobs.JobConsumerManager jobConsumerManager>;
v.<org.apache.sling.event.impl.jobs.queues.QueueServices: org.apache.sling.event.impl.jobs.JobConsumerManager jobConsumerManager> = v;
v = v.<org.apache.sling.event.impl.jobs.queues.QueueManager: org.apache.sling.event.impl.jobs.queues.QueueServices queueServices>;
v = v.<org.apache.sling.event.impl.jobs.queues.QueueManager: org.apache.sling.commons.threads.ThreadPoolManager threadPoolManager>;
v.<org.apache.sling.event.impl.jobs.queues.QueueServices: org.apache.sling.commons.threads.ThreadPoolManager threadPoolManager> = v;
v = v.<org.apache.sling.event.impl.jobs.queues.QueueManager: org.apache.sling.event.impl.jobs.queues.QueueServices queueServices>;
v = v.<org.apache.sling.event.impl.jobs.queues.QueueManager: org.apache.sling.event.impl.jobs.stats.StatisticsManager statisticsManager>;
v.<org.apache.sling.event.impl.jobs.queues.QueueServices: org.apache.sling.event.impl.jobs.stats.StatisticsManager statisticsManager> = v;
v = v.<org.apache.sling.event.impl.jobs.queues.QueueManager: org.apache.sling.event.impl.jobs.queues.QueueServices queueServices>;
v = v.<org.apache.sling.event.impl.jobs.queues.QueueManager: org.apache.sling.commons.threads.ThreadPool threadPool>;
v.<org.apache.sling.event.impl.jobs.queues.QueueServices: org.apache.sling.commons.threads.ThreadPool eventingThreadPool> = v;
v = v.<org.apache.sling.event.impl.jobs.queues.QueueManager: org.apache.sling.event.impl.jobs.config.JobManagerConfiguration configuration>;
virtualinvoke v.<org.apache.sling.event.impl.jobs.config.JobManagerConfiguration: void addListener(org.apache.sling.event.impl.jobs.config.ConfigurationChangeListener)>(v);
v = v.<org.apache.sling.event.impl.jobs.queues.QueueManager: org.slf4j.Logger logger>;
v = <org.apache.sling.event.impl.support.Environment: java.lang.String APPLICATION_ID>;
interfaceinvoke v.<org.slf4j.Logger: void info(java.lang.String,java.lang.Object)>("Apache Sling Queue Manager started on instance {}", v);
return;
}
protected void deactivate()
{
org.slf4j.Logger v, v;
java.util.Iterator v;
java.util.Collection v;
org.apache.sling.event.impl.jobs.config.JobManagerConfiguration v;
org.apache.sling.event.impl.jobs.jmx.QueueStatusEvent v;
java.util.Map v, v;
java.lang.Object v;
java.lang.String v, v;
org.apache.sling.event.jobs.jmx.QueuesMBean v;
boolean v;
org.apache.sling.event.impl.jobs.queues.QueueManager v;
v := @this: org.apache.sling.event.impl.jobs.queues.QueueManager;
v = v.<org.apache.sling.event.impl.jobs.queues.QueueManager: org.slf4j.Logger logger>;
v = <org.apache.sling.event.impl.support.Environment: java.lang.String APPLICATION_ID>;
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String,java.lang.Object)>("Apache Sling Queue Manager stopping on instance {}", v);
v = v.<org.apache.sling.event.impl.jobs.queues.QueueManager: org.apache.sling.event.impl.jobs.config.JobManagerConfiguration configuration>;
virtualinvoke v.<org.apache.sling.event.impl.jobs.config.JobManagerConfiguration: void removeListener(org.apache.sling.event.impl.jobs.config.ConfigurationChangeListener)>(v);
v = v.<org.apache.sling.event.impl.jobs.queues.QueueManager: java.util.Map queues>;
v = interfaceinvoke v.<java.util.Map: java.util.Collection values()>();
v = interfaceinvoke v.<java.util.Collection: 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()>();
virtualinvoke v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: void close()>();
v = v.<org.apache.sling.event.impl.jobs.queues.QueueManager: org.apache.sling.event.jobs.jmx.QueuesMBean queuesMBean>;
v = new org.apache.sling.event.impl.jobs.jmx.QueueStatusEvent;
specialinvoke v.<org.apache.sling.event.impl.jobs.jmx.QueueStatusEvent: void <init>(org.apache.sling.event.jobs.Queue,org.apache.sling.event.jobs.Queue)>(null, v);
virtualinvoke v.<org.apache.sling.event.impl.jobs.jmx.QueuesMBeanImpl: void sendEvent(org.apache.sling.event.impl.jobs.jmx.QueueStatusEvent)>(v);
goto label;
label:
v = v.<org.apache.sling.event.impl.jobs.queues.QueueManager: java.util.Map queues>;
interfaceinvoke v.<java.util.Map: void clear()>();
v.<org.apache.sling.event.impl.jobs.queues.QueueManager: org.apache.sling.event.impl.jobs.queues.QueueServices queueServices> = null;
v = v.<org.apache.sling.event.impl.jobs.queues.QueueManager: org.slf4j.Logger logger>;
v = <org.apache.sling.event.impl.support.Environment: java.lang.String APPLICATION_ID>;
interfaceinvoke v.<org.slf4j.Logger: void info(java.lang.String,java.lang.Object)>("Apache Sling Queue Manager stopped on instance {}", v);
return;
}
void maintain()
{
org.apache.sling.event.impl.jobs.jmx.QueueStatusEvent v;
byte v, v;
java.lang.Long v, v;
java.util.Map v, v;
boolean v, v, v, v, v, v;
java.util.Collection v;
java.util.Set v;
java.lang.Throwable v;
java.util.concurrent.atomic.AtomicBoolean v, v;
long v, v, v, v, v, v, v, v;
org.apache.sling.event.jobs.jmx.QueuesMBean v;
org.slf4j.Logger v, v, v, v;
java.util.Iterator v, v;
java.lang.Object v, v, v, v;
org.apache.sling.event.impl.jobs.queues.QueueManager v;
v := @this: org.apache.sling.event.impl.jobs.queues.QueueManager;
v = v.<org.apache.sling.event.impl.jobs.queues.QueueManager: long schedulerRuns>;
v = v + 1L;
v.<org.apache.sling.event.impl.jobs.queues.QueueManager: long schedulerRuns> = v;
v = v.<org.apache.sling.event.impl.jobs.queues.QueueManager: org.slf4j.Logger logger>;
v = v.<org.apache.sling.event.impl.jobs.queues.QueueManager: long schedulerRuns>;
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String,java.lang.Object)>("Queue manager maintenance: Starting #{}", v);
v = v.<org.apache.sling.event.impl.jobs.queues.QueueManager: java.util.concurrent.atomic.AtomicBoolean isActive>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: boolean get()>();
if v == 0 goto label;
v = v.<org.apache.sling.event.impl.jobs.queues.QueueManager: java.util.Map queues>;
v = interfaceinvoke v.<java.util.Map: java.util.Collection values()>();
v = interfaceinvoke v.<java.util.Collection: 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()>();
virtualinvoke v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: void maintain()>();
goto label;
label:
v = v.<org.apache.sling.event.impl.jobs.queues.QueueManager: long schedulerRuns>;
v = v % 3L;
v = v cmp 0L;
if v != 0 goto label;
v = v.<org.apache.sling.event.impl.jobs.queues.QueueManager: java.util.concurrent.atomic.AtomicBoolean isActive>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: boolean get()>();
if v == 0 goto label;
virtualinvoke v.<org.apache.sling.event.impl.jobs.queues.QueueManager: void fullTopicScan()>();
label:
v = v.<org.apache.sling.event.impl.jobs.queues.QueueManager: long schedulerRuns>;
v = v % 5L;
v = v cmp 0L;
if v != 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
if v == 0 goto label;
v = v.<org.apache.sling.event.impl.jobs.queues.QueueManager: org.slf4j.Logger logger>;
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String)>("Checking for idle queues...");
v = v.<org.apache.sling.event.impl.jobs.queues.QueueManager: java.lang.Object queuesLock>;
entermonitor v;
label:
v = v.<org.apache.sling.event.impl.jobs.queues.QueueManager: java.util.Map queues>;
v = interfaceinvoke v.<java.util.Map: java.util.Set entrySet()>();
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.Map$Entry: java.lang.Object getValue()>();
v = virtualinvoke v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: boolean tryToClose()>();
if v == 0 goto label;
v = v.<org.apache.sling.event.impl.jobs.queues.QueueManager: org.slf4j.Logger logger>;
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String,java.lang.Object)>("Removing idle job queue {}", v);
interfaceinvoke v.<java.util.Iterator: void remove()>();
v = v.<org.apache.sling.event.impl.jobs.queues.QueueManager: org.apache.sling.event.jobs.jmx.QueuesMBean queuesMBean>;
v = new org.apache.sling.event.impl.jobs.jmx.QueueStatusEvent;
specialinvoke v.<org.apache.sling.event.impl.jobs.jmx.QueueStatusEvent: void <init>(org.apache.sling.event.jobs.Queue,org.apache.sling.event.jobs.Queue)>(null, v);
virtualinvoke v.<org.apache.sling.event.impl.jobs.jmx.QueuesMBeanImpl: void sendEvent(org.apache.sling.event.impl.jobs.jmx.QueueStatusEvent)>(v);
goto label;
label:
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
v = v.<org.apache.sling.event.impl.jobs.queues.QueueManager: org.slf4j.Logger logger>;
v = v.<org.apache.sling.event.impl.jobs.queues.QueueManager: long schedulerRuns>;
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String,java.lang.Object)>("Queue manager maintenance: Finished #{}", v);
return;
catch java.lang.Throwable from label to label with label;
}
private void start(org.apache.sling.event.impl.jobs.config.QueueConfigurationManager$QueueInfo, java.util.Set)
{
java.lang.Throwable v;
org.apache.sling.event.impl.jobs.jmx.QueueStatusEvent v;
java.util.HashSet v;
org.apache.sling.event.impl.jobs.config.QueueConfigurationManager$QueueInfo v;
java.util.Map v, v;
java.lang.String v, v, v, v;
org.apache.sling.event.jobs.jmx.QueuesMBean v;
boolean v;
org.apache.sling.event.impl.jobs.config.InternalQueueConfiguration v, v;
org.slf4j.Logger v;
java.util.Set v, v, v;
java.lang.Object v, v;
org.apache.sling.event.impl.jobs.queues.QueueServices v;
org.apache.sling.event.impl.jobs.queues.QueueManager v;
v := @this: org.apache.sling.event.impl.jobs.queues.QueueManager;
v := @parameter: org.apache.sling.event.impl.jobs.config.QueueConfigurationManager$QueueInfo;
v := @parameter: java.util.Set;
v = v.<org.apache.sling.event.impl.jobs.config.QueueConfigurationManager$QueueInfo: org.apache.sling.event.impl.jobs.config.InternalQueueConfiguration queueConfiguration>;
v = new java.util.HashSet;
specialinvoke v.<java.util.HashSet: void <init>(java.util.Collection)>(v);
v = v.<org.apache.sling.event.impl.jobs.queues.QueueManager: java.util.Set haltedTopics>;
interfaceinvoke v.<java.util.Set: boolean removeAll(java.util.Collection)>(v);
v = 0;
v = v.<org.apache.sling.event.impl.jobs.queues.QueueManager: java.lang.Object queuesLock>;
entermonitor v;
label:
v = v.<org.apache.sling.event.impl.jobs.queues.QueueManager: java.util.Map queues>;
v = v.<org.apache.sling.event.impl.jobs.config.QueueConfigurationManager$QueueInfo: java.lang.String queueName>;
v = interfaceinvoke v.<java.util.Map: java.lang.Object get(java.lang.Object)>(v);
if v == null goto label;
v = virtualinvoke v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: org.apache.sling.event.impl.jobs.config.InternalQueueConfiguration getConfiguration()>();
if v == v goto label;
specialinvoke v.<org.apache.sling.event.impl.jobs.queues.QueueManager: void outdateQueue(org.apache.sling.event.impl.jobs.queues.JobQueueImpl)>(v);
v = null;
label:
if v != null goto label;
v = v.<org.apache.sling.event.impl.jobs.config.QueueConfigurationManager$QueueInfo: java.lang.String queueName>;
v = v.<org.apache.sling.event.impl.jobs.queues.QueueManager: org.apache.sling.event.impl.jobs.queues.QueueServices queueServices>;
v = v.<org.apache.sling.event.impl.jobs.queues.QueueManager: java.util.Set haltedTopics>;
v = staticinvoke <org.apache.sling.event.impl.jobs.queues.JobQueueImpl: 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)>(v, v, v, v, v);
if v == null goto label;
v = 1;
v = v.<org.apache.sling.event.impl.jobs.queues.QueueManager: java.util.Map queues>;
v = v.<org.apache.sling.event.impl.jobs.config.QueueConfigurationManager$QueueInfo: java.lang.String queueName>;
interfaceinvoke v.<java.util.Map: java.lang.Object put(java.lang.Object,java.lang.Object)>(v, v);
v = v.<org.apache.sling.event.impl.jobs.queues.QueueManager: org.apache.sling.event.jobs.jmx.QueuesMBean queuesMBean>;
v = new org.apache.sling.event.impl.jobs.jmx.QueueStatusEvent;
specialinvoke v.<org.apache.sling.event.impl.jobs.jmx.QueueStatusEvent: void <init>(org.apache.sling.event.jobs.Queue,org.apache.sling.event.jobs.Queue)>(v, null);
virtualinvoke v.<org.apache.sling.event.impl.jobs.jmx.QueuesMBeanImpl: void sendEvent(org.apache.sling.event.impl.jobs.jmx.QueueStatusEvent)>(v);
label:
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
if v == null goto label;
v = v.<org.apache.sling.event.impl.jobs.queues.QueueManager: org.slf4j.Logger logger>;
v = v.<org.apache.sling.event.impl.jobs.config.QueueConfigurationManager$QueueInfo: java.lang.String queueName>;
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String,java.lang.Object)>("Starting queue {}", v);
if v != 0 goto label;
virtualinvoke v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: void wakeUpQueue(java.util.Set)>(v);
label:
virtualinvoke v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: void startJobs()>();
label:
return;
catch java.lang.Throwable from label to label with label;
}
public void run()
{
org.apache.sling.event.impl.jobs.queues.QueueManager v;
v := @this: org.apache.sling.event.impl.jobs.queues.QueueManager;
virtualinvoke v.<org.apache.sling.event.impl.jobs.queues.QueueManager: void maintain()>();
return;
}
private void outdateQueue(org.apache.sling.event.impl.jobs.queues.JobQueueImpl)
{
org.apache.sling.event.impl.jobs.jmx.QueueStatusEvent v, v;
java.util.Map v, v, v;
int v, v;
java.lang.String v, v, v, v, v, v, v;
org.apache.sling.event.jobs.jmx.QueuesMBean v, v;
boolean v, v;
org.apache.sling.event.impl.jobs.queues.JobQueueImpl v;
org.apache.sling.event.impl.jobs.queues.QueueManager v;
v := @this: org.apache.sling.event.impl.jobs.queues.QueueManager;
v := @parameter: org.apache.sling.event.impl.jobs.queues.JobQueueImpl;
v = virtualinvoke v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: java.lang.String getName()>();
v = staticinvoke <org.apache.sling.event.impl.support.ResourceHelper: java.lang.String filterQueueName(java.lang.String)>(v);
v = v.<org.apache.sling.event.impl.jobs.queues.QueueManager: java.util.Map queues>;
interfaceinvoke v.<java.util.Map: java.lang.Object remove(java.lang.Object)>(v);
v = virtualinvoke v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: boolean tryToClose()>();
if v == 0 goto label;
v = v.<org.apache.sling.event.impl.jobs.queues.QueueManager: org.apache.sling.event.jobs.jmx.QueuesMBean queuesMBean>;
v = new org.apache.sling.event.impl.jobs.jmx.QueueStatusEvent;
specialinvoke v.<org.apache.sling.event.impl.jobs.jmx.QueueStatusEvent: void <init>(org.apache.sling.event.jobs.Queue,org.apache.sling.event.jobs.Queue)>(null, v);
virtualinvoke v.<org.apache.sling.event.impl.jobs.jmx.QueuesMBeanImpl: void sendEvent(org.apache.sling.event.impl.jobs.jmx.QueueStatusEvent)>(v);
goto label;
label:
virtualinvoke v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: void outdate()>();
v = virtualinvoke v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: java.lang.String getName()>();
v = staticinvoke <org.apache.sling.event.impl.support.ResourceHelper: java.lang.String filterName(java.lang.String)>(v);
v = 0;
label:
v = v.<org.apache.sling.event.impl.jobs.queues.QueueManager: java.util.Map queues>;
v = interfaceinvoke v.<java.util.Map: boolean containsKey(java.lang.Object)>(v);
if v == 0 goto label;
v = virtualinvoke v.<org.apache.sling.event.impl.jobs.queues.JobQueueImpl: java.lang.String getName()>();
v = staticinvoke <org.apache.sling.event.impl.support.ResourceHelper: java.lang.String filterName(java.lang.String)>(v);
v = v;
v = v + 1;
v = staticinvoke <java.lang.String: java.lang.String valueOf(int)>(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[])>("\u0001$\u0001");
goto label;
label:
v = v.<org.apache.sling.event.impl.jobs.queues.QueueManager: java.util.Map queues>;
interfaceinvoke v.<java.util.Map: java.lang.Object put(java.lang.Object,java.lang.Object)>(v, v);
v = v.<org.apache.sling.event.impl.jobs.queues.QueueManager: org.apache.sling.event.jobs.jmx.QueuesMBean queuesMBean>;
v = new org.apache.sling.event.impl.jobs.jmx.QueueStatusEvent;
specialinvoke v.<org.apache.sling.event.impl.jobs.jmx.QueueStatusEvent: void <init>(org.apache.sling.event.jobs.Queue,org.apache.sling.event.jobs.Queue)>(v, v);
virtualinvoke v.<org.apache.sling.event.impl.jobs.jmx.QueuesMBeanImpl: void sendEvent(org.apache.sling.event.impl.jobs.jmx.QueueStatusEvent)>(v);
label:
return;
}
private void restart()
{
java.lang.Throwable v;
java.util.ArrayList v;
java.util.Map v;
boolean v, v;
java.util.Iterator v, v;
java.util.Collection v;
org.apache.sling.event.impl.jobs.JobHandler v;
org.apache.sling.event.impl.jobs.config.JobManagerConfiguration v, v, v;
java.util.List v;
java.lang.Object v, v;
org.apache.sling.event.jobs.Job v;
org.apache.sling.event.impl.jobs.queues.QueueManager v;
v := @this: org.apache.sling.event.impl.jobs.queues.QueueManager;
v = v.<org.apache.sling.event.impl.jobs.queues.QueueManager: java.lang.Object queuesLock>;
entermonitor v;
label:
v = new java.util.ArrayList;
v = v.<org.apache.sling.event.impl.jobs.queues.QueueManager: java.util.Map queues>;
v = interfaceinvoke v.<java.util.Map: java.util.Collection values()>();
specialinvoke v.<java.util.ArrayList: void <init>(java.util.Collection)>(v);
v = interfaceinvoke v.<java.util.List: 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()>();
specialinvoke v.<org.apache.sling.event.impl.jobs.queues.QueueManager: void outdateQueue(org.apache.sling.event.impl.jobs.queues.JobQueueImpl)>(v);
goto label;
label:
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
v = v.<org.apache.sling.event.impl.jobs.queues.QueueManager: org.apache.sling.event.impl.jobs.config.JobManagerConfiguration configuration>;
if v == null goto label;
v = v.<org.apache.sling.event.impl.jobs.queues.QueueManager: org.apache.sling.event.impl.jobs.config.JobManagerConfiguration configuration>;
v = virtualinvoke v.<org.apache.sling.event.impl.jobs.config.JobManagerConfiguration: java.util.List clearJobRetryList()>();
v = interfaceinvoke v.<java.util.List: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = new org.apache.sling.event.impl.jobs.JobHandler;
v = v.<org.apache.sling.event.impl.jobs.queues.QueueManager: org.apache.sling.event.impl.jobs.config.JobManagerConfiguration configuration>;
specialinvoke v.<org.apache.sling.event.impl.jobs.JobHandler: void <init>(org.apache.sling.event.impl.jobs.JobImpl,org.apache.sling.event.jobs.consumer.JobExecutor,org.apache.sling.event.impl.jobs.config.JobManagerConfiguration)>(v, null, v);
virtualinvoke v.<org.apache.sling.event.impl.jobs.JobHandler: boolean reschedule()>();
goto label;
label:
return;
catch java.lang.Throwable from label to label with label;
}
public org.apache.sling.event.jobs.Queue getQueue(java.lang.String)
{
java.util.Map v;
java.lang.Object v;
java.lang.String v;
org.apache.sling.event.impl.jobs.queues.QueueManager v;
v := @this: org.apache.sling.event.impl.jobs.queues.QueueManager;
v := @parameter: java.lang.String;
v = v.<org.apache.sling.event.impl.jobs.queues.QueueManager: java.util.Map queues>;
v = interfaceinvoke v.<java.util.Map: java.lang.Object get(java.lang.Object)>(v);
return v;
}
public java.lang.Iterable getQueues()
{
org.apache.sling.event.impl.jobs.queues.QueueManager$1 v;
java.util.Iterator v;
java.util.Collection v;
java.util.Map v;
org.apache.sling.event.impl.jobs.queues.QueueManager v;
v := @this: org.apache.sling.event.impl.jobs.queues.QueueManager;
v = v.<org.apache.sling.event.impl.jobs.queues.QueueManager: java.util.Map queues>;
v = interfaceinvoke v.<java.util.Map: java.util.Collection values()>();
v = interfaceinvoke v.<java.util.Collection: java.util.Iterator iterator()>();
v = new org.apache.sling.event.impl.jobs.queues.QueueManager$1;
specialinvoke v.<org.apache.sling.event.impl.jobs.queues.QueueManager$1: void <init>(org.apache.sling.event.impl.jobs.queues.QueueManager,java.util.Iterator)>(v, v);
return v;
}
public void configurationChanged(boolean)
{
org.slf4j.Logger v;
java.lang.Boolean v;
java.util.concurrent.atomic.AtomicBoolean v;
org.apache.sling.event.impl.jobs.config.JobManagerConfiguration v;
boolean v;
org.apache.sling.event.impl.jobs.queues.QueueManager v;
v := @this: org.apache.sling.event.impl.jobs.queues.QueueManager;
v := @parameter: boolean;
v = v.<org.apache.sling.event.impl.jobs.queues.QueueManager: org.apache.sling.event.impl.jobs.config.JobManagerConfiguration configuration>;
if v == null goto label;
v = v.<org.apache.sling.event.impl.jobs.queues.QueueManager: org.slf4j.Logger logger>;
v = staticinvoke <java.lang.Boolean: java.lang.Boolean valueOf(boolean)>(v);
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String,java.lang.Object)>("Topology changed {}", v);
v = v.<org.apache.sling.event.impl.jobs.queues.QueueManager: java.util.concurrent.atomic.AtomicBoolean isActive>;
virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: void set(boolean)>(v);
specialinvoke v.<org.apache.sling.event.impl.jobs.queues.QueueManager: void clearHaltedTopics(java.lang.String)>("configurationChanged : unhalted topics due to configuration change");
if v == 0 goto label;
virtualinvoke v.<org.apache.sling.event.impl.jobs.queues.QueueManager: void fullTopicScan()>();
goto label;
label:
specialinvoke v.<org.apache.sling.event.impl.jobs.queues.QueueManager: void restart()>();
label:
return;
}
private void clearHaltedTopics(java.lang.String)
{
java.lang.Throwable v;
org.slf4j.Logger v;
java.util.Set v, v, v, v;
java.lang.String v, v, v;
boolean v;
org.apache.sling.event.impl.jobs.queues.QueueManager v;
v := @this: org.apache.sling.event.impl.jobs.queues.QueueManager;
v := @parameter: java.lang.String;
v = v.<org.apache.sling.event.impl.jobs.queues.QueueManager: java.util.Set haltedTopics>;
entermonitor v;
label:
v = v.<org.apache.sling.event.impl.jobs.queues.QueueManager: java.util.Set haltedTopics>;
v = interfaceinvoke v.<java.util.Set: boolean isEmpty()>();
if v == 0 goto label;
exitmonitor v;
label:
return;
label:
v = v.<org.apache.sling.event.impl.jobs.queues.QueueManager: java.util.Set haltedTopics>;
v = virtualinvoke v.<java.lang.Object: java.lang.String toString()>();
v = v.<org.apache.sling.event.impl.jobs.queues.QueueManager: java.util.Set haltedTopics>;
interfaceinvoke v.<java.util.Set: void clear()>();
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
v = v.<org.apache.sling.event.impl.jobs.queues.QueueManager: org.slf4j.Logger logger>;
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");
interfaceinvoke v.<org.slf4j.Logger: void info(java.lang.String)>(v);
return;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
}
void fullTopicScan()
{
org.slf4j.Logger v;
java.util.Iterator v;
java.util.Set v, v;
java.util.Map v;
java.lang.Object v, v, v;
boolean v;
org.apache.sling.event.impl.jobs.queues.QueueManager v;
v := @this: org.apache.sling.event.impl.jobs.queues.QueueManager;
v = v.<org.apache.sling.event.impl.jobs.queues.QueueManager: org.slf4j.Logger logger>;
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String)>("Scanning repository for existing topics...");
v = specialinvoke v.<org.apache.sling.event.impl.jobs.queues.QueueManager: java.util.Set scanTopics()>();
v = specialinvoke v.<org.apache.sling.event.impl.jobs.queues.QueueManager: java.util.Map updateTopicMapping(java.util.Set)>(v);
v = interfaceinvoke v.<java.util.Map: java.util.Set entrySet()>();
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.Map$Entry: java.lang.Object getKey()>();
v = interfaceinvoke v.<java.util.Map$Entry: java.lang.Object getValue()>();
specialinvoke v.<org.apache.sling.event.impl.jobs.queues.QueueManager: void start(org.apache.sling.event.impl.jobs.config.QueueConfigurationManager$QueueInfo,java.util.Set)>(v, v);
goto label;
label:
return;
}
private java.util.Set scanTopics()
{
java.lang.Throwable v;
org.apache.sling.api.resource.ResourceResolver v;
org.slf4j.Logger v;
java.util.Iterator v;
org.apache.sling.api.resource.Resource v;
org.apache.sling.event.impl.jobs.config.JobManagerConfiguration v, v;
java.util.HashSet v;
java.lang.Object v;
java.lang.String v, v, v;
boolean v;
org.apache.sling.event.impl.jobs.queues.QueueManager v;
v := @this: org.apache.sling.event.impl.jobs.queues.QueueManager;
v = new java.util.HashSet;
specialinvoke v.<java.util.HashSet: void <init>()>();
v = v.<org.apache.sling.event.impl.jobs.queues.QueueManager: 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.QueueManager: 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 = interfaceinvoke v.<org.apache.sling.api.resource.Resource: java.util.Iterator listChildren()>();
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.<org.apache.sling.api.resource.Resource: java.lang.String getName()>();
v = virtualinvoke v.<java.lang.String: java.lang.String replace(char,char)>(46, 47);
v = v.<org.apache.sling.event.impl.jobs.queues.QueueManager: org.slf4j.Logger logger>;
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String,java.lang.Object)>("Found topic {}", v);
interfaceinvoke v.<java.util.Set: boolean add(java.lang.Object)>(v);
goto label;
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 v;
catch java.lang.Throwable from label to label with label;
}
public void handleEvent(org.osgi.service.event.Event)
{
java.util.concurrent.atomic.AtomicBoolean v;
org.apache.sling.event.impl.jobs.config.QueueConfigurationManager$QueueInfo v;
java.lang.String v, v, v, v;
boolean v, v, v;
org.slf4j.Logger v;
java.util.Set v;
org.apache.sling.event.impl.jobs.config.JobManagerConfiguration v;
org.apache.sling.event.impl.jobs.config.QueueConfigurationManager v;
java.lang.Object v;
org.osgi.service.event.Event v;
org.apache.sling.event.impl.jobs.queues.QueueManager v;
v := @this: org.apache.sling.event.impl.jobs.queues.QueueManager;
v := @parameter: org.osgi.service.event.Event;
v = "org/osgi/framework/BundleEvent/STARTED";
v = virtualinvoke v.<org.osgi.service.event.Event: java.lang.String getTopic()>();
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v != 0 goto label;
v = "org/osgi/framework/BundleEvent/UPDATED";
v = virtualinvoke v.<org.osgi.service.event.Event: java.lang.String getTopic()>();
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
label:
specialinvoke v.<org.apache.sling.event.impl.jobs.queues.QueueManager: void clearHaltedTopics(java.lang.String)>("handleEvent: unhalted topics due to bundle started/updated event");
label:
v = virtualinvoke v.<org.osgi.service.event.Event: java.lang.Object getProperty(java.lang.String)>("event.job.topic");
v = v.<org.apache.sling.event.impl.jobs.queues.QueueManager: java.util.concurrent.atomic.AtomicBoolean isActive>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: boolean get()>();
if v == 0 goto label;
if v == null goto label;
v = v.<org.apache.sling.event.impl.jobs.queues.QueueManager: org.slf4j.Logger logger>;
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String,java.lang.Object)>("Received event {}", v);
v = v.<org.apache.sling.event.impl.jobs.queues.QueueManager: org.apache.sling.event.impl.jobs.config.JobManagerConfiguration configuration>;
v = virtualinvoke v.<org.apache.sling.event.impl.jobs.config.JobManagerConfiguration: org.apache.sling.event.impl.jobs.config.QueueConfigurationManager getQueueConfigurationManager()>();
v = virtualinvoke v.<org.apache.sling.event.impl.jobs.config.QueueConfigurationManager: org.apache.sling.event.impl.jobs.config.QueueConfigurationManager$QueueInfo getQueueInfo(java.lang.String)>(v);
v = staticinvoke <java.util.Collections: java.util.Set singleton(java.lang.Object)>(v);
specialinvoke v.<org.apache.sling.event.impl.jobs.queues.QueueManager: void start(org.apache.sling.event.impl.jobs.config.QueueConfigurationManager$QueueInfo,java.util.Set)>(v, v);
label:
return;
}
private java.util.Map updateTopicMapping(java.util.Set)
{
org.slf4j.Logger v;
java.util.Iterator v;
java.util.Set v;
java.util.HashMap v;
org.apache.sling.event.impl.jobs.config.JobManagerConfiguration v;
org.apache.sling.event.impl.jobs.config.QueueConfigurationManager v;
java.util.HashSet v;
org.apache.sling.event.impl.jobs.config.QueueConfigurationManager$QueueInfo v;
java.lang.Object v, v;
boolean v;
org.apache.sling.event.impl.jobs.queues.QueueManager v;
v := @this: org.apache.sling.event.impl.jobs.queues.QueueManager;
v := @parameter: java.util.Set;
v = new java.util.HashMap;
specialinvoke v.<java.util.HashMap: 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 = v.<org.apache.sling.event.impl.jobs.queues.QueueManager: org.apache.sling.event.impl.jobs.config.JobManagerConfiguration configuration>;
v = virtualinvoke v.<org.apache.sling.event.impl.jobs.config.JobManagerConfiguration: org.apache.sling.event.impl.jobs.config.QueueConfigurationManager getQueueConfigurationManager()>();
v = virtualinvoke v.<org.apache.sling.event.impl.jobs.config.QueueConfigurationManager: org.apache.sling.event.impl.jobs.config.QueueConfigurationManager$QueueInfo getQueueInfo(java.lang.String)>(v);
v = interfaceinvoke v.<java.util.Map: java.lang.Object get(java.lang.Object)>(v);
if v != null goto label;
v = new java.util.HashSet;
specialinvoke v.<java.util.HashSet: void <init>()>();
v = v;
interfaceinvoke v.<java.util.Map: java.lang.Object put(java.lang.Object,java.lang.Object)>(v, v);
label:
interfaceinvoke v.<java.util.Set: boolean add(java.lang.Object)>(v);
goto label;
label:
v = v.<org.apache.sling.event.impl.jobs.queues.QueueManager: org.slf4j.Logger logger>;
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String,java.lang.Object)>("Established new topic mapping: {}", v);
return v;
}
protected void bindThreadPool(org.apache.sling.event.impl.EventingThreadPool)
{
org.apache.sling.event.impl.EventingThreadPool v;
org.apache.sling.event.impl.jobs.queues.QueueManager v;
v := @this: org.apache.sling.event.impl.jobs.queues.QueueManager;
v := @parameter: org.apache.sling.event.impl.EventingThreadPool;
v.<org.apache.sling.event.impl.jobs.queues.QueueManager: org.apache.sling.commons.threads.ThreadPool threadPool> = v;
return;
}
protected void unbindThreadPool(org.apache.sling.event.impl.EventingThreadPool)
{
org.apache.sling.commons.threads.ThreadPool v;
org.apache.sling.event.impl.EventingThreadPool v;
org.apache.sling.event.impl.jobs.queues.QueueManager v;
v := @this: org.apache.sling.event.impl.jobs.queues.QueueManager;
v := @parameter: org.apache.sling.event.impl.EventingThreadPool;
v = v.<org.apache.sling.event.impl.jobs.queues.QueueManager: org.apache.sling.commons.threads.ThreadPool threadPool>;
if v != v goto label;
v.<org.apache.sling.event.impl.jobs.queues.QueueManager: org.apache.sling.commons.threads.ThreadPool threadPool> = null;
label:
return;
}
}