public class org.apache.activemq.store.journal.JournalPersistenceAdapter extends java.lang.Object implements org.apache.activemq.store.PersistenceAdapter, org.apache.activeio.journal.JournalEventListener, org.apache.activemq.usage.UsageListener, org.apache.activemq.broker.BrokerServiceAware
{
private org.apache.activemq.broker.BrokerService brokerService;
protected org.apache.activemq.thread.Scheduler scheduler;
private static final org.slf4j.Logger LOG;
private org.apache.activeio.journal.Journal journal;
private org.apache.activemq.store.PersistenceAdapter longTermPersistence;
private final org.apache.activemq.wireformat.WireFormat wireFormat;
private final java.util.concurrent.ConcurrentMap queues;
private final java.util.concurrent.ConcurrentMap topics;
private org.apache.activemq.usage.SystemUsage usageManager;
private long checkpointInterval;
private long lastCheckpointRequest;
private long lastCleanup;
private int maxCheckpointWorkers;
private int maxCheckpointMessageAddSize;
private final org.apache.activemq.store.journal.JournalTransactionStore transactionStore;
private java.util.concurrent.ThreadPoolExecutor checkpointExecutor;
private org.apache.activemq.thread.TaskRunner checkpointTask;
private java.util.concurrent.CountDownLatch nextCheckpointCountDownLatch;
private boolean fullCheckPoint;
private final java.util.concurrent.atomic.AtomicBoolean started;
private final java.lang.Runnable periodicCheckpointTask;
private org.apache.activemq.thread.TaskRunnerFactory taskRunnerFactory;
private java.io.File directory;
public void <init>()
{
org.apache.activemq.store.journal.JournalTransactionStore v;
java.util.concurrent.ConcurrentHashMap v, v;
java.util.concurrent.atomic.AtomicBoolean v;
long v, v;
java.lang.Runnable v;
java.util.concurrent.CountDownLatch v;
org.apache.activemq.openwire.OpenWireFormat v;
org.apache.activemq.store.journal.JournalPersistenceAdapter v;
v := @this: org.apache.activemq.store.journal.JournalPersistenceAdapter;
specialinvoke v.<java.lang.Object: void <init>()>();
v = new org.apache.activemq.openwire.OpenWireFormat;
specialinvoke v.<org.apache.activemq.openwire.OpenWireFormat: void <init>()>();
v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: org.apache.activemq.wireformat.WireFormat wireFormat> = v;
v = new java.util.concurrent.ConcurrentHashMap;
specialinvoke v.<java.util.concurrent.ConcurrentHashMap: void <init>()>();
v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: java.util.concurrent.ConcurrentMap queues> = v;
v = new java.util.concurrent.ConcurrentHashMap;
specialinvoke v.<java.util.concurrent.ConcurrentHashMap: void <init>()>();
v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: java.util.concurrent.ConcurrentMap topics> = v;
v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: long checkpointInterval> = 300000L;
v = staticinvoke <java.lang.System: long currentTimeMillis()>();
v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: long lastCheckpointRequest> = v;
v = staticinvoke <java.lang.System: long currentTimeMillis()>();
v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: long lastCleanup> = v;
v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: int maxCheckpointWorkers> = 10;
v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: int maxCheckpointMessageAddSize> = 1048576;
v = new org.apache.activemq.store.journal.JournalTransactionStore;
specialinvoke v.<org.apache.activemq.store.journal.JournalTransactionStore: void <init>(org.apache.activemq.store.journal.JournalPersistenceAdapter)>(v);
v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: org.apache.activemq.store.journal.JournalTransactionStore transactionStore> = v;
v = new java.util.concurrent.CountDownLatch;
specialinvoke v.<java.util.concurrent.CountDownLatch: void <init>(int)>(1);
v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: java.util.concurrent.CountDownLatch nextCheckpointCountDownLatch> = v;
v = new java.util.concurrent.atomic.AtomicBoolean;
specialinvoke v.<java.util.concurrent.atomic.AtomicBoolean: void <init>(boolean)>(0);
v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: java.util.concurrent.atomic.AtomicBoolean started> = v;
v = virtualinvoke v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: java.lang.Runnable createPeriodicCheckpointTask()>();
v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: java.lang.Runnable periodicCheckpointTask> = v;
return;
}
public void <init>(org.apache.activeio.journal.Journal, org.apache.activemq.store.PersistenceAdapter, org.apache.activemq.thread.TaskRunnerFactory) throws java.io.IOException
{
org.apache.activemq.store.journal.JournalTransactionStore v;
java.util.concurrent.ConcurrentHashMap v, v;
java.util.concurrent.atomic.AtomicBoolean v;
long v, v;
java.lang.Runnable v;
org.apache.activeio.journal.Journal v;
java.util.concurrent.CountDownLatch v;
org.apache.activemq.openwire.OpenWireFormat v;
org.apache.activemq.store.journal.JournalPersistenceAdapter v;
org.apache.activemq.thread.TaskRunnerFactory v;
org.apache.activemq.store.PersistenceAdapter v;
v := @this: org.apache.activemq.store.journal.JournalPersistenceAdapter;
v := @parameter: org.apache.activeio.journal.Journal;
v := @parameter: org.apache.activemq.store.PersistenceAdapter;
v := @parameter: org.apache.activemq.thread.TaskRunnerFactory;
specialinvoke v.<java.lang.Object: void <init>()>();
v = new org.apache.activemq.openwire.OpenWireFormat;
specialinvoke v.<org.apache.activemq.openwire.OpenWireFormat: void <init>()>();
v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: org.apache.activemq.wireformat.WireFormat wireFormat> = v;
v = new java.util.concurrent.ConcurrentHashMap;
specialinvoke v.<java.util.concurrent.ConcurrentHashMap: void <init>()>();
v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: java.util.concurrent.ConcurrentMap queues> = v;
v = new java.util.concurrent.ConcurrentHashMap;
specialinvoke v.<java.util.concurrent.ConcurrentHashMap: void <init>()>();
v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: java.util.concurrent.ConcurrentMap topics> = v;
v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: long checkpointInterval> = 300000L;
v = staticinvoke <java.lang.System: long currentTimeMillis()>();
v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: long lastCheckpointRequest> = v;
v = staticinvoke <java.lang.System: long currentTimeMillis()>();
v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: long lastCleanup> = v;
v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: int maxCheckpointWorkers> = 10;
v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: int maxCheckpointMessageAddSize> = 1048576;
v = new org.apache.activemq.store.journal.JournalTransactionStore;
specialinvoke v.<org.apache.activemq.store.journal.JournalTransactionStore: void <init>(org.apache.activemq.store.journal.JournalPersistenceAdapter)>(v);
v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: org.apache.activemq.store.journal.JournalTransactionStore transactionStore> = v;
v = new java.util.concurrent.CountDownLatch;
specialinvoke v.<java.util.concurrent.CountDownLatch: void <init>(int)>(1);
v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: java.util.concurrent.CountDownLatch nextCheckpointCountDownLatch> = v;
v = new java.util.concurrent.atomic.AtomicBoolean;
specialinvoke v.<java.util.concurrent.atomic.AtomicBoolean: void <init>(boolean)>(0);
v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: java.util.concurrent.atomic.AtomicBoolean started> = v;
v = virtualinvoke v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: java.lang.Runnable createPeriodicCheckpointTask()>();
v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: java.lang.Runnable periodicCheckpointTask> = v;
virtualinvoke v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: void setJournal(org.apache.activeio.journal.Journal)>(v);
virtualinvoke v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: void setTaskRunnerFactory(org.apache.activemq.thread.TaskRunnerFactory)>(v);
virtualinvoke v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: void setPersistenceAdapter(org.apache.activemq.store.PersistenceAdapter)>(v);
return;
}
public void setTaskRunnerFactory(org.apache.activemq.thread.TaskRunnerFactory)
{
org.apache.activemq.store.journal.JournalPersistenceAdapter v;
org.apache.activemq.thread.TaskRunnerFactory v;
v := @this: org.apache.activemq.store.journal.JournalPersistenceAdapter;
v := @parameter: org.apache.activemq.thread.TaskRunnerFactory;
v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: org.apache.activemq.thread.TaskRunnerFactory taskRunnerFactory> = v;
return;
}
public void setJournal(org.apache.activeio.journal.Journal)
{
org.apache.activeio.journal.Journal v;
org.apache.activemq.store.journal.JournalPersistenceAdapter v;
v := @this: org.apache.activemq.store.journal.JournalPersistenceAdapter;
v := @parameter: org.apache.activeio.journal.Journal;
v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: org.apache.activeio.journal.Journal journal> = v;
interfaceinvoke v.<org.apache.activeio.journal.Journal: void setJournalEventListener(org.apache.activeio.journal.JournalEventListener)>(v);
return;
}
public void setPersistenceAdapter(org.apache.activemq.store.PersistenceAdapter)
{
org.apache.activemq.store.PersistenceAdapter v;
org.apache.activemq.store.journal.JournalPersistenceAdapter v;
v := @this: org.apache.activemq.store.journal.JournalPersistenceAdapter;
v := @parameter: org.apache.activemq.store.PersistenceAdapter;
v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: org.apache.activemq.store.PersistenceAdapter longTermPersistence> = v;
return;
}
final java.lang.Runnable createPeriodicCheckpointTask()
{
org.apache.activemq.store.journal.JournalPersistenceAdapter$1 v;
org.apache.activemq.store.journal.JournalPersistenceAdapter v;
v := @this: org.apache.activemq.store.journal.JournalPersistenceAdapter;
v = new org.apache.activemq.store.journal.JournalPersistenceAdapter$1;
specialinvoke v.<org.apache.activemq.store.journal.JournalPersistenceAdapter$1: void <init>(org.apache.activemq.store.journal.JournalPersistenceAdapter)>(v);
return v;
}
public void setUsageManager(org.apache.activemq.usage.SystemUsage)
{
org.apache.activemq.usage.SystemUsage v;
org.apache.activemq.store.PersistenceAdapter v;
org.apache.activemq.store.journal.JournalPersistenceAdapter v;
v := @this: org.apache.activemq.store.journal.JournalPersistenceAdapter;
v := @parameter: org.apache.activemq.usage.SystemUsage;
v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: org.apache.activemq.usage.SystemUsage usageManager> = v;
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: org.apache.activemq.store.PersistenceAdapter longTermPersistence>;
interfaceinvoke v.<org.apache.activemq.store.PersistenceAdapter: void setUsageManager(org.apache.activemq.usage.SystemUsage)>(v);
return;
}
public java.util.Set getDestinations()
{
java.util.Set v, v, v;
java.util.concurrent.ConcurrentMap v, v;
java.util.HashSet v;
org.apache.activemq.store.journal.JournalPersistenceAdapter v;
org.apache.activemq.store.PersistenceAdapter v;
v := @this: org.apache.activemq.store.journal.JournalPersistenceAdapter;
v = new java.util.HashSet;
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: org.apache.activemq.store.PersistenceAdapter longTermPersistence>;
v = interfaceinvoke v.<org.apache.activemq.store.PersistenceAdapter: java.util.Set getDestinations()>();
specialinvoke v.<java.util.HashSet: void <init>(java.util.Collection)>(v);
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: java.util.concurrent.ConcurrentMap queues>;
v = interfaceinvoke v.<java.util.concurrent.ConcurrentMap: java.util.Set keySet()>();
interfaceinvoke v.<java.util.Set: boolean addAll(java.util.Collection)>(v);
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: java.util.concurrent.ConcurrentMap topics>;
v = interfaceinvoke v.<java.util.concurrent.ConcurrentMap: java.util.Set keySet()>();
interfaceinvoke v.<java.util.Set: boolean addAll(java.util.Collection)>(v);
return v;
}
private org.apache.activemq.store.MessageStore createMessageStore(org.apache.activemq.command.ActiveMQDestination) throws java.io.IOException
{
org.apache.activemq.store.MessageStore v;
org.apache.activemq.store.TopicMessageStore v;
org.apache.activemq.store.journal.JournalPersistenceAdapter v;
boolean v;
org.apache.activemq.command.ActiveMQDestination v;
v := @this: org.apache.activemq.store.journal.JournalPersistenceAdapter;
v := @parameter: org.apache.activemq.command.ActiveMQDestination;
v = virtualinvoke v.<org.apache.activemq.command.ActiveMQDestination: boolean isQueue()>();
if v == 0 goto label;
v = virtualinvoke v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: org.apache.activemq.store.MessageStore createQueueMessageStore(org.apache.activemq.command.ActiveMQQueue)>(v);
return v;
label:
v = virtualinvoke v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: org.apache.activemq.store.TopicMessageStore createTopicMessageStore(org.apache.activemq.command.ActiveMQTopic)>(v);
return v;
}
public org.apache.activemq.store.MessageStore createQueueMessageStore(org.apache.activemq.command.ActiveMQQueue) throws java.io.IOException
{
org.apache.activemq.store.MessageStore v;
org.apache.activemq.store.journal.JournalMessageStore v;
org.apache.activemq.command.ActiveMQQueue v;
java.util.concurrent.ConcurrentMap v, v;
org.apache.activemq.store.journal.JournalPersistenceAdapter v;
java.lang.Object v;
org.apache.activemq.store.PersistenceAdapter v;
v := @this: org.apache.activemq.store.journal.JournalPersistenceAdapter;
v := @parameter: org.apache.activemq.command.ActiveMQQueue;
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: java.util.concurrent.ConcurrentMap queues>;
v = interfaceinvoke v.<java.util.concurrent.ConcurrentMap: java.lang.Object get(java.lang.Object)>(v);
if v != null goto label;
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: org.apache.activemq.store.PersistenceAdapter longTermPersistence>;
v = interfaceinvoke v.<org.apache.activemq.store.PersistenceAdapter: org.apache.activemq.store.MessageStore createQueueMessageStore(org.apache.activemq.command.ActiveMQQueue)>(v);
v = new org.apache.activemq.store.journal.JournalMessageStore;
specialinvoke v.<org.apache.activemq.store.journal.JournalMessageStore: void <init>(org.apache.activemq.store.journal.JournalPersistenceAdapter,org.apache.activemq.store.MessageStore,org.apache.activemq.command.ActiveMQDestination)>(v, v, v);
v = v;
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: java.util.concurrent.ConcurrentMap queues>;
interfaceinvoke v.<java.util.concurrent.ConcurrentMap: java.lang.Object put(java.lang.Object,java.lang.Object)>(v, v);
label:
return v;
}
public org.apache.activemq.store.TopicMessageStore createTopicMessageStore(org.apache.activemq.command.ActiveMQTopic) throws java.io.IOException
{
org.apache.activemq.store.journal.JournalTopicMessageStore v;
java.util.concurrent.ConcurrentMap v, v;
org.apache.activemq.command.ActiveMQTopic v;
org.apache.activemq.store.TopicMessageStore v;
org.apache.activemq.store.journal.JournalPersistenceAdapter v;
java.lang.Object v;
org.apache.activemq.store.PersistenceAdapter v;
v := @this: org.apache.activemq.store.journal.JournalPersistenceAdapter;
v := @parameter: org.apache.activemq.command.ActiveMQTopic;
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: java.util.concurrent.ConcurrentMap topics>;
v = interfaceinvoke v.<java.util.concurrent.ConcurrentMap: java.lang.Object get(java.lang.Object)>(v);
if v != null goto label;
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: org.apache.activemq.store.PersistenceAdapter longTermPersistence>;
v = interfaceinvoke v.<org.apache.activemq.store.PersistenceAdapter: org.apache.activemq.store.TopicMessageStore createTopicMessageStore(org.apache.activemq.command.ActiveMQTopic)>(v);
v = new org.apache.activemq.store.journal.JournalTopicMessageStore;
specialinvoke v.<org.apache.activemq.store.journal.JournalTopicMessageStore: void <init>(org.apache.activemq.store.journal.JournalPersistenceAdapter,org.apache.activemq.store.TopicMessageStore,org.apache.activemq.command.ActiveMQTopic)>(v, v, v);
v = v;
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: java.util.concurrent.ConcurrentMap topics>;
interfaceinvoke v.<java.util.concurrent.ConcurrentMap: java.lang.Object put(java.lang.Object,java.lang.Object)>(v, v);
label:
return v;
}
public void removeQueueMessageStore(org.apache.activemq.command.ActiveMQQueue)
{
org.apache.activemq.command.ActiveMQQueue v;
java.util.concurrent.ConcurrentMap v;
org.apache.activemq.store.journal.JournalPersistenceAdapter v;
v := @this: org.apache.activemq.store.journal.JournalPersistenceAdapter;
v := @parameter: org.apache.activemq.command.ActiveMQQueue;
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: java.util.concurrent.ConcurrentMap queues>;
interfaceinvoke v.<java.util.concurrent.ConcurrentMap: java.lang.Object remove(java.lang.Object)>(v);
return;
}
public void removeTopicMessageStore(org.apache.activemq.command.ActiveMQTopic)
{
org.apache.activemq.command.ActiveMQTopic v;
java.util.concurrent.ConcurrentMap v;
org.apache.activemq.store.journal.JournalPersistenceAdapter v;
v := @this: org.apache.activemq.store.journal.JournalPersistenceAdapter;
v := @parameter: org.apache.activemq.command.ActiveMQTopic;
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: java.util.concurrent.ConcurrentMap topics>;
interfaceinvoke v.<java.util.concurrent.ConcurrentMap: java.lang.Object remove(java.lang.Object)>(v);
return;
}
public org.apache.activemq.store.TransactionStore createTransactionStore() throws java.io.IOException
{
org.apache.activemq.store.journal.JournalPersistenceAdapter v;
org.apache.activemq.store.journal.JournalTransactionStore v;
v := @this: org.apache.activemq.store.journal.JournalPersistenceAdapter;
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: org.apache.activemq.store.journal.JournalTransactionStore transactionStore>;
return v;
}
public long getLastMessageBrokerSequenceId() throws java.io.IOException
{
long v;
org.apache.activemq.store.PersistenceAdapter v;
org.apache.activemq.store.journal.JournalPersistenceAdapter v;
v := @this: org.apache.activemq.store.journal.JournalPersistenceAdapter;
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: org.apache.activemq.store.PersistenceAdapter longTermPersistence>;
v = interfaceinvoke v.<org.apache.activemq.store.PersistenceAdapter: long getLastMessageBrokerSequenceId()>();
return v;
}
public void beginTransaction(org.apache.activemq.broker.ConnectionContext) throws java.io.IOException
{
org.apache.activemq.broker.ConnectionContext v;
org.apache.activemq.store.PersistenceAdapter v;
org.apache.activemq.store.journal.JournalPersistenceAdapter v;
v := @this: org.apache.activemq.store.journal.JournalPersistenceAdapter;
v := @parameter: org.apache.activemq.broker.ConnectionContext;
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: org.apache.activemq.store.PersistenceAdapter longTermPersistence>;
interfaceinvoke v.<org.apache.activemq.store.PersistenceAdapter: void beginTransaction(org.apache.activemq.broker.ConnectionContext)>(v);
return;
}
public void commitTransaction(org.apache.activemq.broker.ConnectionContext) throws java.io.IOException
{
org.apache.activemq.broker.ConnectionContext v;
org.apache.activemq.store.PersistenceAdapter v;
org.apache.activemq.store.journal.JournalPersistenceAdapter v;
v := @this: org.apache.activemq.store.journal.JournalPersistenceAdapter;
v := @parameter: org.apache.activemq.broker.ConnectionContext;
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: org.apache.activemq.store.PersistenceAdapter longTermPersistence>;
interfaceinvoke v.<org.apache.activemq.store.PersistenceAdapter: void commitTransaction(org.apache.activemq.broker.ConnectionContext)>(v);
return;
}
public void rollbackTransaction(org.apache.activemq.broker.ConnectionContext) throws java.io.IOException
{
org.apache.activemq.broker.ConnectionContext v;
org.apache.activemq.store.PersistenceAdapter v;
org.apache.activemq.store.journal.JournalPersistenceAdapter v;
v := @this: org.apache.activemq.store.journal.JournalPersistenceAdapter;
v := @parameter: org.apache.activemq.broker.ConnectionContext;
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: org.apache.activemq.store.PersistenceAdapter longTermPersistence>;
interfaceinvoke v.<org.apache.activemq.store.PersistenceAdapter: void rollbackTransaction(org.apache.activemq.broker.ConnectionContext)>(v);
return;
}
public synchronized void start() throws java.lang.Exception
{
java.util.concurrent.ThreadPoolExecutor v;
java.util.concurrent.atomic.AtomicBoolean v;
long v, v;
java.lang.Runnable v;
org.apache.activemq.store.journal.JournalPersistenceAdapter$2 v;
org.apache.activemq.store.journal.JournalPersistenceAdapter$3 v;
int v, v, v;
org.apache.activemq.usage.MemoryUsage v;
org.apache.activemq.usage.SystemUsage v;
boolean v, v;
org.apache.activemq.broker.BrokerService v, v;
org.apache.activemq.wireformat.WireFormat v;
java.util.concurrent.LinkedBlockingQueue v;
java.util.concurrent.TimeUnit v;
org.apache.activemq.thread.TaskRunner v;
org.apache.activemq.store.journal.JournalPersistenceAdapter v;
org.apache.activemq.thread.Scheduler v, v, v;
org.apache.activemq.thread.TaskRunnerFactory v;
org.apache.activemq.store.PersistenceAdapter v, v, v;
v := @this: org.apache.activemq.store.journal.JournalPersistenceAdapter;
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: java.util.concurrent.atomic.AtomicBoolean started>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: boolean compareAndSet(boolean,boolean)>(0, 1);
if v != 0 goto label;
return;
label:
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: org.apache.activemq.broker.BrokerService brokerService>;
if v == null goto label;
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: org.apache.activemq.wireformat.WireFormat wireFormat>;
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: org.apache.activemq.broker.BrokerService brokerService>;
v = virtualinvoke v.<org.apache.activemq.broker.BrokerService: int getStoreOpenWireVersion()>();
interfaceinvoke v.<org.apache.activemq.wireformat.WireFormat: void setVersion(int)>(v);
label:
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: org.apache.activemq.thread.TaskRunnerFactory taskRunnerFactory>;
v = new org.apache.activemq.store.journal.JournalPersistenceAdapter$2;
specialinvoke v.<org.apache.activemq.store.journal.JournalPersistenceAdapter$2: void <init>(org.apache.activemq.store.journal.JournalPersistenceAdapter)>(v);
v = virtualinvoke v.<org.apache.activemq.thread.TaskRunnerFactory: org.apache.activemq.thread.TaskRunner createTaskRunner(org.apache.activemq.thread.Task,java.lang.String)>(v, "ActiveMQ Journal Checkpoint Worker");
v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: org.apache.activemq.thread.TaskRunner checkpointTask> = v;
v = new java.util.concurrent.ThreadPoolExecutor;
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: int maxCheckpointWorkers>;
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: int maxCheckpointWorkers>;
v = <java.util.concurrent.TimeUnit: java.util.concurrent.TimeUnit SECONDS>;
v = new java.util.concurrent.LinkedBlockingQueue;
specialinvoke v.<java.util.concurrent.LinkedBlockingQueue: void <init>()>();
v = new org.apache.activemq.store.journal.JournalPersistenceAdapter$3;
specialinvoke v.<org.apache.activemq.store.journal.JournalPersistenceAdapter$3: void <init>(org.apache.activemq.store.journal.JournalPersistenceAdapter)>(v);
specialinvoke v.<java.util.concurrent.ThreadPoolExecutor: void <init>(int,int,long,java.util.concurrent.TimeUnit,java.util.concurrent.BlockingQueue,java.util.concurrent.ThreadFactory)>(v, v, 30L, v, v, v);
v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: java.util.concurrent.ThreadPoolExecutor checkpointExecutor> = v;
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: org.apache.activemq.usage.SystemUsage usageManager>;
v = virtualinvoke v.<org.apache.activemq.usage.SystemUsage: org.apache.activemq.usage.MemoryUsage getMemoryUsage()>();
virtualinvoke v.<org.apache.activemq.usage.MemoryUsage: void addUsageListener(org.apache.activemq.usage.UsageListener)>(v);
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: org.apache.activemq.store.PersistenceAdapter longTermPersistence>;
v = v instanceof org.apache.activemq.store.jdbc.JDBCPersistenceAdapter;
if v == 0 goto label;
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: org.apache.activemq.store.PersistenceAdapter longTermPersistence>;
virtualinvoke v.<org.apache.activemq.store.jdbc.JDBCPersistenceAdapter: void setCleanupPeriod(int)>(0);
label:
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: org.apache.activemq.store.PersistenceAdapter longTermPersistence>;
interfaceinvoke v.<org.apache.activemq.store.PersistenceAdapter: void start()>();
virtualinvoke v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: org.apache.activemq.store.TransactionStore createTransactionStore()>();
specialinvoke v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: void recover()>();
v = new org.apache.activemq.thread.Scheduler;
specialinvoke v.<org.apache.activemq.thread.Scheduler: void <init>(java.lang.String)>("Journal Scheduler");
v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: org.apache.activemq.thread.Scheduler scheduler> = v;
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: org.apache.activemq.thread.Scheduler scheduler>;
virtualinvoke v.<org.apache.activemq.thread.Scheduler: void start()>();
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: org.apache.activemq.thread.Scheduler scheduler>;
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: java.lang.Runnable periodicCheckpointTask>;
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: long checkpointInterval>;
v = v / 10L;
virtualinvoke v.<org.apache.activemq.thread.Scheduler: void executePeriodically(java.lang.Runnable,long)>(v, v);
return;
}
public void stop() throws java.lang.Exception
{
java.util.concurrent.ThreadPoolExecutor v;
java.util.concurrent.atomic.AtomicBoolean v;
java.lang.Runnable v;
org.apache.activeio.journal.Journal v;
java.util.concurrent.ConcurrentMap v, v;
org.apache.activemq.usage.MemoryUsage v;
org.apache.activemq.usage.SystemUsage v;
java.lang.String v;
boolean v;
java.io.IOException v;
java.lang.Exception v;
org.apache.activemq.thread.TaskRunner v;
org.apache.activemq.store.journal.JournalPersistenceAdapter v;
org.apache.activemq.thread.Scheduler v, v;
org.apache.activemq.store.PersistenceAdapter v;
v := @this: org.apache.activemq.store.journal.JournalPersistenceAdapter;
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: org.apache.activemq.usage.SystemUsage usageManager>;
v = virtualinvoke v.<org.apache.activemq.usage.SystemUsage: org.apache.activemq.usage.MemoryUsage getMemoryUsage()>();
virtualinvoke v.<org.apache.activemq.usage.MemoryUsage: void removeUsageListener(org.apache.activemq.usage.UsageListener)>(v);
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: java.util.concurrent.atomic.AtomicBoolean started>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: boolean compareAndSet(boolean,boolean)>(1, 0);
if v != 0 goto label;
return;
label:
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: org.apache.activemq.thread.Scheduler scheduler>;
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: java.lang.Runnable periodicCheckpointTask>;
virtualinvoke v.<org.apache.activemq.thread.Scheduler: void cancel(java.lang.Runnable)>(v);
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: org.apache.activemq.thread.Scheduler scheduler>;
virtualinvoke v.<org.apache.activemq.thread.Scheduler: void stop()>();
virtualinvoke v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: void checkpoint(boolean,boolean)>(1, 1);
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: org.apache.activemq.thread.TaskRunner checkpointTask>;
interfaceinvoke v.<org.apache.activemq.thread.TaskRunner: void shutdown()>();
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: java.util.concurrent.ThreadPoolExecutor checkpointExecutor>;
staticinvoke <org.apache.activemq.util.ThreadPoolUtils: void shutdown(java.util.concurrent.ExecutorService)>(v);
v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: java.util.concurrent.ThreadPoolExecutor checkpointExecutor> = null;
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: java.util.concurrent.ConcurrentMap queues>;
interfaceinvoke v.<java.util.concurrent.ConcurrentMap: void clear()>();
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: java.util.concurrent.ConcurrentMap topics>;
interfaceinvoke v.<java.util.concurrent.ConcurrentMap: void clear()>();
v = null;
label:
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: org.apache.activeio.journal.Journal journal>;
interfaceinvoke v.<org.apache.activeio.journal.Journal: void close()>();
label:
goto label;
label:
v := @caughtexception;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.Exception)>(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[])>("Failed to close journals: \u0001");
v = staticinvoke <org.apache.activemq.util.IOExceptionSupport: java.io.IOException create(java.lang.String,java.lang.Exception)>(v, v);
label:
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: org.apache.activemq.store.PersistenceAdapter longTermPersistence>;
interfaceinvoke v.<org.apache.activemq.store.PersistenceAdapter: void stop()>();
if v == null goto label;
throw v;
label:
return;
catch java.lang.Exception from label to label with label;
}
public org.apache.activemq.store.PersistenceAdapter getLongTermPersistence()
{
org.apache.activemq.store.PersistenceAdapter v;
org.apache.activemq.store.journal.JournalPersistenceAdapter v;
v := @this: org.apache.activemq.store.journal.JournalPersistenceAdapter;
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: org.apache.activemq.store.PersistenceAdapter longTermPersistence>;
return v;
}
public org.apache.activemq.wireformat.WireFormat getWireFormat()
{
org.apache.activemq.store.journal.JournalPersistenceAdapter v;
org.apache.activemq.wireformat.WireFormat v;
v := @this: org.apache.activemq.store.journal.JournalPersistenceAdapter;
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: org.apache.activemq.wireformat.WireFormat wireFormat>;
return v;
}
public void overflowNotification(org.apache.activeio.journal.RecordLocation)
{
org.apache.activeio.journal.RecordLocation v;
org.apache.activemq.store.journal.JournalPersistenceAdapter v;
v := @this: org.apache.activemq.store.journal.JournalPersistenceAdapter;
v := @parameter: org.apache.activeio.journal.RecordLocation;
virtualinvoke v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: void checkpoint(boolean,boolean)>(0, 1);
return;
}
public void checkpoint(boolean, boolean)
{
java.lang.Throwable v;
java.lang.IllegalStateException v;
org.slf4j.Logger v, v;
long v;
org.apache.activeio.journal.Journal v;
java.util.concurrent.CountDownLatch v;
org.apache.activemq.thread.TaskRunner v;
java.lang.InterruptedException v;
java.lang.Thread v;
org.apache.activemq.store.journal.JournalPersistenceAdapter v;
java.lang.String v;
boolean v, v;
v := @this: org.apache.activemq.store.journal.JournalPersistenceAdapter;
v := @parameter: boolean;
v := @parameter: boolean;
label:
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: org.apache.activeio.journal.Journal journal>;
if v != null goto label;
v = new java.lang.IllegalStateException;
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>("Journal is closed.");
throw v;
label:
v = staticinvoke <java.lang.System: long currentTimeMillis()>();
entermonitor v;
label:
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: java.util.concurrent.CountDownLatch nextCheckpointCountDownLatch>;
v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: long lastCheckpointRequest> = v;
if v == 0 goto label;
v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: boolean fullCheckPoint> = 1;
label:
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: org.apache.activemq.thread.TaskRunner checkpointTask>;
interfaceinvoke v.<org.apache.activemq.thread.TaskRunner: void wakeup()>();
if v == 0 goto label;
v = <org.apache.activemq.store.journal.JournalPersistenceAdapter: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String)>("Waking for checkpoint to complete.");
virtualinvoke v.<java.util.concurrent.CountDownLatch: void await()>();
label:
goto label;
label:
v := @caughtexception;
v = staticinvoke <java.lang.Thread: java.lang.Thread currentThread()>();
virtualinvoke v.<java.lang.Thread: void interrupt()>();
v = <org.apache.activemq.store.journal.JournalPersistenceAdapter: org.slf4j.Logger LOG>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.InterruptedException)>(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[])>("Request to start checkpoint failed: \u0001");
interfaceinvoke v.<org.slf4j.Logger: void warn(java.lang.String,java.lang.Throwable)>(v, v);
label:
return;
catch java.lang.Throwable from label to label with label;
catch java.lang.InterruptedException from label to label with label;
}
public void checkpoint(boolean)
{
boolean v;
org.apache.activemq.store.journal.JournalPersistenceAdapter v;
v := @this: org.apache.activemq.store.journal.JournalPersistenceAdapter;
v := @parameter: boolean;
virtualinvoke v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: void checkpoint(boolean,boolean)>(v, v);
return;
}
public boolean doCheckpoint()
{
byte v;
org.apache.activemq.store.journal.JournalPersistenceAdapter$5 v;
org.apache.activemq.store.journal.JournalPersistenceAdapter$4 v;
boolean v, v, v, v, v, v;
java.util.Collection v, v;
java.lang.Exception v, v, v;
java.util.concurrent.CountDownLatch v, v;
java.lang.Throwable v, v, v, v;
java.util.concurrent.ThreadPoolExecutor v, v;
java.util.concurrent.FutureTask v, v;
long v, v, v, v;
org.apache.activeio.journal.Journal v;
org.apache.activeio.journal.RecordLocation v;
java.util.ArrayList v;
java.util.concurrent.ConcurrentMap v, v, v, v;
int v, v, v, v;
java.lang.String v, v, v, v, v;
org.slf4j.Logger v, v, v, v, v, v, v;
java.util.Iterator v, v, v;
org.apache.activemq.store.journal.JournalPersistenceAdapter v;
java.lang.Object v, v, v, v;
org.apache.activemq.store.PersistenceAdapter v, v;
v := @this: org.apache.activemq.store.journal.JournalPersistenceAdapter;
entermonitor v;
label:
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: java.util.concurrent.CountDownLatch nextCheckpointCountDownLatch>;
v = new java.util.concurrent.CountDownLatch;
specialinvoke v.<java.util.concurrent.CountDownLatch: void <init>(int)>(1);
v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: java.util.concurrent.CountDownLatch nextCheckpointCountDownLatch> = v;
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: boolean fullCheckPoint>;
v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: boolean fullCheckPoint> = 0;
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
v = <org.apache.activemq.store.journal.JournalPersistenceAdapter: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String)>("Checkpoint started.");
v = null;
v = new java.util.ArrayList;
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: java.util.concurrent.ConcurrentMap queues>;
v = interfaceinvoke v.<java.util.concurrent.ConcurrentMap: int size()>();
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: java.util.concurrent.ConcurrentMap topics>;
v = interfaceinvoke v.<java.util.concurrent.ConcurrentMap: int size()>();
v = v + v;
specialinvoke v.<java.util.ArrayList: void <init>(int)>(v);
if v == 0 goto label;
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: java.util.concurrent.ConcurrentMap queues>;
v = interfaceinvoke v.<java.util.concurrent.ConcurrentMap: 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;
label:
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = new java.util.concurrent.FutureTask;
v = new org.apache.activemq.store.journal.JournalPersistenceAdapter$4;
specialinvoke v.<org.apache.activemq.store.journal.JournalPersistenceAdapter$4: void <init>(org.apache.activemq.store.journal.JournalPersistenceAdapter,org.apache.activemq.store.journal.JournalMessageStore)>(v, v);
specialinvoke v.<java.util.concurrent.FutureTask: void <init>(java.util.concurrent.Callable)>(v);
virtualinvoke v.<java.util.ArrayList: boolean add(java.lang.Object)>(v);
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: java.util.concurrent.ThreadPoolExecutor checkpointExecutor>;
virtualinvoke v.<java.util.concurrent.ThreadPoolExecutor: void execute(java.lang.Runnable)>(v);
label:
goto label;
label:
v := @caughtexception;
v = <org.apache.activemq.store.journal.JournalPersistenceAdapter: org.slf4j.Logger LOG>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.Exception)>(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[])>("Failed to checkpoint a message store: \u0001");
interfaceinvoke v.<org.slf4j.Logger: void error(java.lang.String,java.lang.Throwable)>(v, v);
goto label;
label:
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: java.util.concurrent.ConcurrentMap topics>;
v = interfaceinvoke v.<java.util.concurrent.ConcurrentMap: 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;
label:
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = new java.util.concurrent.FutureTask;
v = new org.apache.activemq.store.journal.JournalPersistenceAdapter$5;
specialinvoke v.<org.apache.activemq.store.journal.JournalPersistenceAdapter$5: void <init>(org.apache.activemq.store.journal.JournalPersistenceAdapter,org.apache.activemq.store.journal.JournalTopicMessageStore)>(v, v);
specialinvoke v.<java.util.concurrent.FutureTask: void <init>(java.util.concurrent.Callable)>(v);
virtualinvoke v.<java.util.ArrayList: boolean add(java.lang.Object)>(v);
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: java.util.concurrent.ThreadPoolExecutor checkpointExecutor>;
virtualinvoke v.<java.util.concurrent.ThreadPoolExecutor: void execute(java.lang.Runnable)>(v);
label:
goto label;
label:
v := @caughtexception;
v = <org.apache.activemq.store.journal.JournalPersistenceAdapter: org.slf4j.Logger LOG>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.Exception)>(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[])>("Failed to checkpoint a message store: \u0001");
interfaceinvoke v.<org.slf4j.Logger: void error(java.lang.String,java.lang.Throwable)>(v, v);
goto label;
label:
v = virtualinvoke v.<java.util.ArrayList: 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.util.concurrent.FutureTask: java.lang.Object get()>();
if v == 0 goto label;
if v == null goto label;
if v == null goto label;
v = interfaceinvoke v.<org.apache.activeio.journal.RecordLocation: int compareTo(java.lang.Object)>(v);
if v >= 0 goto label;
label:
v = v;
goto label;
label:
v := @caughtexception;
v = <org.apache.activemq.store.journal.JournalPersistenceAdapter: org.slf4j.Logger LOG>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.Throwable)>(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[])>("Failed to checkpoint a message store: \u0001");
interfaceinvoke v.<org.slf4j.Logger: void error(java.lang.String,java.lang.Throwable)>(v, v);
label:
if v == 0 goto label;
label:
if v == null goto label;
v = <org.apache.activemq.store.journal.JournalPersistenceAdapter: org.slf4j.Logger LOG>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (org.apache.activeio.journal.RecordLocation)>(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[])>("Marking journal at: \u0001");
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String)>(v);
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: org.apache.activeio.journal.Journal journal>;
interfaceinvoke v.<org.apache.activeio.journal.Journal: void setMark(org.apache.activeio.journal.RecordLocation,boolean)>(v, 1);
label:
goto label;
label:
v := @caughtexception;
v = <org.apache.activemq.store.journal.JournalPersistenceAdapter: org.slf4j.Logger LOG>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.Exception)>(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[])>("Failed to mark the Journal: \u0001");
interfaceinvoke v.<org.slf4j.Logger: void error(java.lang.String,java.lang.Throwable)>(v, v);
label:
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: org.apache.activemq.store.PersistenceAdapter longTermPersistence>;
v = v instanceof org.apache.activemq.store.jdbc.JDBCPersistenceAdapter;
if v == 0 goto label;
v = staticinvoke <java.lang.System: long currentTimeMillis()>();
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: long lastCleanup>;
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: long checkpointInterval>;
v = v + v;
v = v cmp v;
if v <= 0 goto label;
v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: long lastCleanup> = v;
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: org.apache.activemq.store.PersistenceAdapter longTermPersistence>;
virtualinvoke v.<org.apache.activemq.store.jdbc.JDBCPersistenceAdapter: void cleanup()>();
label:
v = <org.apache.activemq.store.journal.JournalPersistenceAdapter: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String)>("Checkpoint done.");
label:
virtualinvoke v.<java.util.concurrent.CountDownLatch: void countDown()>();
goto label;
label:
v := @caughtexception;
virtualinvoke v.<java.util.concurrent.CountDownLatch: void countDown()>();
throw v;
label:
entermonitor v;
label:
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: boolean fullCheckPoint>;
exitmonitor v;
label:
return v;
label:
v := @caughtexception;
exitmonitor v;
throw v;
catch java.lang.Throwable from label to label with label;
catch java.lang.Exception 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;
catch java.lang.Exception 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;
}
public org.apache.activemq.command.DataStructure readCommand(org.apache.activeio.journal.RecordLocation) throws java.io.IOException
{
java.lang.Throwable v;
org.apache.activemq.wireformat.WireFormat v;
org.apache.activeio.packet.Packet v;
java.io.IOException v, v, v;
org.apache.activeio.journal.Journal v;
org.apache.activeio.journal.RecordLocation v;
org.apache.activemq.store.journal.JournalPersistenceAdapter v;
java.lang.Object v;
org.apache.activemq.util.ByteSequence v;
v := @this: org.apache.activemq.store.journal.JournalPersistenceAdapter;
v := @parameter: org.apache.activeio.journal.RecordLocation;
label:
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: org.apache.activeio.journal.Journal journal>;
v = interfaceinvoke v.<org.apache.activeio.journal.Journal: org.apache.activeio.packet.Packet read(org.apache.activeio.journal.RecordLocation)>(v);
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: org.apache.activemq.wireformat.WireFormat wireFormat>;
v = virtualinvoke v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: org.apache.activemq.util.ByteSequence toByteSequence(org.apache.activeio.packet.Packet)>(v);
v = interfaceinvoke v.<org.apache.activemq.wireformat.WireFormat: java.lang.Object unmarshal(org.apache.activemq.util.ByteSequence)>(v);
label:
return v;
label:
v := @caughtexception;
v = specialinvoke v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: java.io.IOException createReadException(org.apache.activeio.journal.RecordLocation,java.lang.Exception)>(v, v);
throw v;
label:
v := @caughtexception;
v = specialinvoke v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: java.io.IOException createReadException(org.apache.activeio.journal.RecordLocation,java.lang.Exception)>(v, v);
throw v;
catch org.apache.activeio.journal.InvalidRecordLocationException from label to label with label;
catch java.io.IOException from label to label with label;
}
private void recover() throws java.lang.IllegalStateException, org.apache.activeio.journal.InvalidRecordLocationException, java.io.IOException, java.io.IOException
{
org.apache.activemq.filter.NonCachedMessageEvaluationContext v;
org.apache.activemq.broker.ConnectionContext v;
byte v, v, v, v, v, v;
org.apache.activemq.util.ByteSequence v;
org.apache.activemq.store.journal.JournalTransactionStore$Tx v;
org.apache.activemq.command.DataStructure v;
org.apache.activemq.store.journal.JournalTransactionStore v, v, v, v, v, v;
java.util.ArrayList v;
java.lang.String v, v, v, v, v, v, v, v, v, v, v;
org.apache.activemq.command.TransactionId v, v, v, v;
java.io.IOException v, v;
org.apache.activemq.store.journal.JournalPersistenceAdapter v;
org.apache.activemq.store.journal.JournalMessageStore v, v, v;
org.apache.activeio.packet.Packet v;
boolean v, v, v, v, v;
org.apache.activemq.command.MessageId v, v;
org.apache.activemq.wireformat.WireFormat v;
org.apache.activemq.command.ActiveMQDestination v, v, v;
org.apache.activeio.journal.Journal v, v, v, v;
org.apache.activeio.journal.RecordLocation v, v, v;
int v;
org.apache.activemq.store.MessageStore v, v, v;
org.apache.activemq.command.MessageAck v, v, v;
org.slf4j.Logger v, v, v, v, v;
java.util.Iterator v;
java.lang.Object v, v, v, v, v;
v := @this: org.apache.activemq.store.journal.JournalPersistenceAdapter;
v = null;
v = 0;
v = <org.apache.activemq.store.journal.JournalPersistenceAdapter: org.slf4j.Logger LOG>;
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: org.apache.activeio.journal.Journal journal>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (org.apache.activeio.journal.Journal)>(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[])>("Journal Recovery Started from: \u0001");
interfaceinvoke v.<org.slf4j.Logger: void info(java.lang.String)>(v);
v = new org.apache.activemq.broker.ConnectionContext;
v = new org.apache.activemq.filter.NonCachedMessageEvaluationContext;
specialinvoke v.<org.apache.activemq.filter.NonCachedMessageEvaluationContext: void <init>()>();
specialinvoke v.<org.apache.activemq.broker.ConnectionContext: void <init>(org.apache.activemq.filter.MessageEvaluationContext)>(v);
label:
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: org.apache.activeio.journal.Journal journal>;
v = interfaceinvoke v.<org.apache.activeio.journal.Journal: org.apache.activeio.journal.RecordLocation getNextRecordLocation(org.apache.activeio.journal.RecordLocation)>(v);
v = v;
if v == null goto label;
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: org.apache.activeio.journal.Journal journal>;
v = interfaceinvoke v.<org.apache.activeio.journal.Journal: org.apache.activeio.packet.Packet read(org.apache.activeio.journal.RecordLocation)>(v);
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: org.apache.activemq.wireformat.WireFormat wireFormat>;
v = virtualinvoke v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: org.apache.activemq.util.ByteSequence toByteSequence(org.apache.activeio.packet.Packet)>(v);
v = interfaceinvoke v.<org.apache.activemq.wireformat.WireFormat: java.lang.Object unmarshal(org.apache.activemq.util.ByteSequence)>(v);
v = v instanceof org.apache.activemq.command.Message;
if v == 0 goto label;
v = virtualinvoke v.<org.apache.activemq.command.Message: org.apache.activemq.command.ActiveMQDestination getDestination()>();
v = specialinvoke v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: org.apache.activemq.store.MessageStore createMessageStore(org.apache.activemq.command.ActiveMQDestination)>(v);
v = virtualinvoke v.<org.apache.activemq.command.Message: boolean isInTransaction()>();
if v == 0 goto label;
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: org.apache.activemq.store.journal.JournalTransactionStore transactionStore>;
virtualinvoke v.<org.apache.activemq.store.journal.JournalTransactionStore: void addMessage(org.apache.activemq.store.journal.JournalMessageStore,org.apache.activemq.command.Message,org.apache.activeio.journal.RecordLocation)>(v, v, v);
goto label;
label:
virtualinvoke v.<org.apache.activemq.store.journal.JournalMessageStore: void replayAddMessage(org.apache.activemq.broker.ConnectionContext,org.apache.activemq.command.Message)>(v, v);
v = v + 1;
goto label;
label:
v = interfaceinvoke v.<org.apache.activemq.command.DataStructure: byte getDataStructureType()>();
tableswitch(v)
{
case 50: goto label;
case 51: goto label;
case 52: goto label;
case 53: goto label;
case 54: goto label;
default: goto label;
};
label:
v = virtualinvoke v.<org.apache.activemq.command.JournalQueueAck: org.apache.activemq.command.ActiveMQDestination getDestination()>();
v = specialinvoke v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: org.apache.activemq.store.MessageStore createMessageStore(org.apache.activemq.command.ActiveMQDestination)>(v);
v = virtualinvoke v.<org.apache.activemq.command.JournalQueueAck: org.apache.activemq.command.MessageAck getMessageAck()>();
v = virtualinvoke v.<org.apache.activemq.command.MessageAck: boolean isInTransaction()>();
if v == 0 goto label;
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: org.apache.activemq.store.journal.JournalTransactionStore transactionStore>;
v = virtualinvoke v.<org.apache.activemq.command.JournalQueueAck: org.apache.activemq.command.MessageAck getMessageAck()>();
virtualinvoke v.<org.apache.activemq.store.journal.JournalTransactionStore: void removeMessage(org.apache.activemq.store.journal.JournalMessageStore,org.apache.activemq.command.MessageAck,org.apache.activeio.journal.RecordLocation)>(v, v, v);
goto label;
label:
v = virtualinvoke v.<org.apache.activemq.command.JournalQueueAck: org.apache.activemq.command.MessageAck getMessageAck()>();
virtualinvoke v.<org.apache.activemq.store.journal.JournalMessageStore: void replayRemoveMessage(org.apache.activemq.broker.ConnectionContext,org.apache.activemq.command.MessageAck)>(v, v);
v = v + 1;
goto label;
label:
v = virtualinvoke v.<org.apache.activemq.command.JournalTopicAck: org.apache.activemq.command.ActiveMQDestination getDestination()>();
v = specialinvoke v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: org.apache.activemq.store.MessageStore createMessageStore(org.apache.activemq.command.ActiveMQDestination)>(v);
v = virtualinvoke v.<org.apache.activemq.command.JournalTopicAck: org.apache.activemq.command.TransactionId getTransactionId()>();
if v == null goto label;
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: org.apache.activemq.store.journal.JournalTransactionStore transactionStore>;
virtualinvoke v.<org.apache.activemq.store.journal.JournalTransactionStore: void acknowledge(org.apache.activemq.store.journal.JournalTopicMessageStore,org.apache.activemq.command.JournalTopicAck,org.apache.activeio.journal.RecordLocation)>(v, v, v);
goto label;
label:
v = virtualinvoke v.<org.apache.activemq.command.JournalTopicAck: java.lang.String getClientId()>();
v = virtualinvoke v.<org.apache.activemq.command.JournalTopicAck: java.lang.String getSubscritionName()>();
v = virtualinvoke v.<org.apache.activemq.command.JournalTopicAck: org.apache.activemq.command.MessageId getMessageId()>();
virtualinvoke v.<org.apache.activemq.store.journal.JournalTopicMessageStore: void replayAcknowledge(org.apache.activemq.broker.ConnectionContext,java.lang.String,java.lang.String,org.apache.activemq.command.MessageId)>(v, v, v, v);
v = v + 1;
goto label;
label:
v = virtualinvoke v.<org.apache.activemq.command.JournalTransaction: byte getType()>();
tableswitch(v)
{
case 1: goto label;
case 2: goto label;
case 3: goto label;
case 4: goto label;
case 5: goto label;
default: goto label;
};
label:
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: org.apache.activemq.store.journal.JournalTransactionStore transactionStore>;
v = virtualinvoke v.<org.apache.activemq.command.JournalTransaction: org.apache.activemq.command.TransactionId getTransactionId()>();
virtualinvoke v.<org.apache.activemq.store.journal.JournalTransactionStore: void replayPrepare(org.apache.activemq.command.TransactionId)>(v);
goto label;
label:
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: org.apache.activemq.store.journal.JournalTransactionStore transactionStore>;
v = virtualinvoke v.<org.apache.activemq.command.JournalTransaction: org.apache.activemq.command.TransactionId getTransactionId()>();
v = virtualinvoke v.<org.apache.activemq.command.JournalTransaction: boolean getWasPrepared()>();
v = virtualinvoke v.<org.apache.activemq.store.journal.JournalTransactionStore: org.apache.activemq.store.journal.JournalTransactionStore$Tx replayCommit(org.apache.activemq.command.TransactionId,boolean)>(v, v);
if v == null goto label;
virtualinvoke v.<org.apache.activemq.store.journal.JournalTransactionStore$Tx: java.util.ArrayList getOperations()>();
v = virtualinvoke v.<org.apache.activemq.store.journal.JournalTransactionStore$Tx: java.util.ArrayList getOperations()>();
v = virtualinvoke v.<java.util.ArrayList: 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.activemq.store.journal.JournalTransactionStore$TxOperation: byte operationType>;
if v != 0 goto label;
v = v.<org.apache.activemq.store.journal.JournalTransactionStore$TxOperation: org.apache.activemq.store.journal.JournalMessageStore store>;
v = v.<org.apache.activemq.store.journal.JournalTransactionStore$TxOperation: java.lang.Object data>;
virtualinvoke v.<org.apache.activemq.store.journal.JournalMessageStore: void replayAddMessage(org.apache.activemq.broker.ConnectionContext,org.apache.activemq.command.Message)>(v, v);
label:
v = v.<org.apache.activemq.store.journal.JournalTransactionStore$TxOperation: byte operationType>;
if v != 1 goto label;
v = v.<org.apache.activemq.store.journal.JournalTransactionStore$TxOperation: org.apache.activemq.store.journal.JournalMessageStore store>;
v = v.<org.apache.activemq.store.journal.JournalTransactionStore$TxOperation: java.lang.Object data>;
virtualinvoke v.<org.apache.activemq.store.journal.JournalMessageStore: void replayRemoveMessage(org.apache.activemq.broker.ConnectionContext,org.apache.activemq.command.MessageAck)>(v, v);
label:
v = v.<org.apache.activemq.store.journal.JournalTransactionStore$TxOperation: byte operationType>;
if v != 3 goto label;
v = v.<org.apache.activemq.store.journal.JournalTransactionStore$TxOperation: java.lang.Object data>;
v = v.<org.apache.activemq.store.journal.JournalTransactionStore$TxOperation: org.apache.activemq.store.journal.JournalMessageStore store>;
v = virtualinvoke v.<org.apache.activemq.command.JournalTopicAck: java.lang.String getClientId()>();
v = virtualinvoke v.<org.apache.activemq.command.JournalTopicAck: java.lang.String getSubscritionName()>();
v = virtualinvoke v.<org.apache.activemq.command.JournalTopicAck: org.apache.activemq.command.MessageId getMessageId()>();
virtualinvoke v.<org.apache.activemq.store.journal.JournalTopicMessageStore: void replayAcknowledge(org.apache.activemq.broker.ConnectionContext,java.lang.String,java.lang.String,org.apache.activemq.command.MessageId)>(v, v, v, v);
goto label;
label:
v = v + 1;
goto label;
label:
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: org.apache.activemq.store.journal.JournalTransactionStore transactionStore>;
v = virtualinvoke v.<org.apache.activemq.command.JournalTransaction: org.apache.activemq.command.TransactionId getTransactionId()>();
virtualinvoke v.<org.apache.activemq.store.journal.JournalTransactionStore: void replayRollback(org.apache.activemq.command.TransactionId)>(v);
goto label;
label:
v = new java.io.IOException;
v = virtualinvoke v.<org.apache.activemq.command.JournalTransaction: byte getType()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (byte)>(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[])>("Invalid journal command type: \u0001");
specialinvoke v.<java.io.IOException: void <init>(java.lang.String)>(v);
throw v;
label:
v := @caughtexception;
v = <org.apache.activemq.store.journal.JournalPersistenceAdapter: org.slf4j.Logger LOG>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (org.apache.activemq.command.DataStructure,java.io.IOException)>(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[])>("Recovery Failure: Could not replay: \u, reason: \u0001");
interfaceinvoke v.<org.slf4j.Logger: void error(java.lang.String,java.lang.Throwable)>(v, v);
goto label;
label:
v = <org.apache.activemq.store.journal.JournalPersistenceAdapter: org.slf4j.Logger LOG>;
v = virtualinvoke v.<org.apache.activemq.command.JournalTrace: java.lang.String getMessage()>();
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[])>("TRACE Entry: \u0001");
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String)>(v);
goto label;
label:
v = <org.apache.activemq.store.journal.JournalPersistenceAdapter: org.slf4j.Logger LOG>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (org.apache.activemq.command.DataStructure)>(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[])>("Unknown type of record in transaction log which will be discarded: \u0001");
interfaceinvoke v.<org.slf4j.Logger: void error(java.lang.String)>(v);
goto label;
label:
v = specialinvoke v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: org.apache.activeio.journal.RecordLocation writeTraceMessage(java.lang.String,boolean)>("RECOVERED", 1);
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: org.apache.activeio.journal.Journal journal>;
interfaceinvoke v.<org.apache.activeio.journal.Journal: void setMark(org.apache.activeio.journal.RecordLocation,boolean)>(v, 1);
v = <org.apache.activemq.store.journal.JournalPersistenceAdapter: org.slf4j.Logger LOG>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (int)>(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[])>("Journal Recovered: \u message(s) in transactions recovered.");
interfaceinvoke v.<org.slf4j.Logger: void info(java.lang.String)>(v);
return;
catch java.io.IOException from label to label with label;
}
private java.io.IOException createReadException(org.apache.activeio.journal.RecordLocation, java.lang.Exception)
{
org.apache.activemq.store.journal.JournalPersistenceAdapter v;
java.io.IOException v;
java.lang.String v;
java.lang.Exception v;
org.apache.activeio.journal.RecordLocation v;
v := @this: org.apache.activemq.store.journal.JournalPersistenceAdapter;
v := @parameter: org.apache.activeio.journal.RecordLocation;
v := @parameter: java.lang.Exception;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (org.apache.activeio.journal.RecordLocation,java.lang.Exception)>(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[])>("Failed to read to journal for: \u. Reason: \u0001");
v = staticinvoke <org.apache.activemq.util.IOExceptionSupport: java.io.IOException create(java.lang.String,java.lang.Exception)>(v, v);
return v;
}
protected java.io.IOException createWriteException(org.apache.activemq.command.DataStructure, java.lang.Exception)
{
org.apache.activemq.store.journal.JournalPersistenceAdapter v;
org.apache.activemq.command.DataStructure v;
java.io.IOException v;
java.lang.String v;
java.lang.Exception v;
v := @this: org.apache.activemq.store.journal.JournalPersistenceAdapter;
v := @parameter: org.apache.activemq.command.DataStructure;
v := @parameter: java.lang.Exception;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (org.apache.activemq.command.DataStructure,java.lang.Exception)>(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[])>("Failed to write to journal for: \u. Reason: \u0001");
v = staticinvoke <org.apache.activemq.util.IOExceptionSupport: java.io.IOException create(java.lang.String,java.lang.Exception)>(v, v);
return v;
}
protected java.io.IOException createWriteException(java.lang.String, java.lang.Exception)
{
org.apache.activemq.store.journal.JournalPersistenceAdapter v;
java.io.IOException v;
java.lang.String v, v;
java.lang.Exception v;
v := @this: org.apache.activemq.store.journal.JournalPersistenceAdapter;
v := @parameter: java.lang.String;
v := @parameter: java.lang.Exception;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,java.lang.Exception)>(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[])>("Failed to write to journal for command: \u. Reason: \u0001");
v = staticinvoke <org.apache.activemq.util.IOExceptionSupport: java.io.IOException create(java.lang.String,java.lang.Exception)>(v, v);
return v;
}
protected java.io.IOException createRecoveryFailedException(java.lang.Exception)
{
org.apache.activemq.store.journal.JournalPersistenceAdapter v;
java.io.IOException v;
java.lang.String v;
java.lang.Exception v;
v := @this: org.apache.activemq.store.journal.JournalPersistenceAdapter;
v := @parameter: java.lang.Exception;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.Exception)>(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[])>("Failed to recover from journal. Reason: \u0001");
v = staticinvoke <org.apache.activemq.util.IOExceptionSupport: java.io.IOException create(java.lang.String,java.lang.Exception)>(v, v);
return v;
}
public org.apache.activeio.journal.RecordLocation writeCommand(org.apache.activemq.command.DataStructure, boolean) throws java.io.IOException
{
org.apache.activemq.broker.BrokerService v;
org.slf4j.Logger v;
org.apache.activemq.wireformat.WireFormat v;
java.util.concurrent.atomic.AtomicBoolean v;
org.apache.activeio.packet.Packet v;
java.io.IOException v, v;
org.apache.activeio.journal.Journal v;
org.apache.activeio.journal.RecordLocation v;
org.apache.activemq.store.journal.JournalPersistenceAdapter v;
org.apache.activemq.command.DataStructure v;
org.apache.activemq.util.ByteSequence v;
boolean v, v;
v := @this: org.apache.activemq.store.journal.JournalPersistenceAdapter;
v := @parameter: org.apache.activemq.command.DataStructure;
v := @parameter: boolean;
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: java.util.concurrent.atomic.AtomicBoolean started>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: boolean get()>();
if v == 0 goto label;
label:
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: org.apache.activeio.journal.Journal journal>;
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: org.apache.activemq.wireformat.WireFormat wireFormat>;
v = interfaceinvoke v.<org.apache.activemq.wireformat.WireFormat: org.apache.activemq.util.ByteSequence marshal(java.lang.Object)>(v);
v = virtualinvoke v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: org.apache.activeio.packet.Packet toPacket(org.apache.activemq.util.ByteSequence)>(v);
v = interfaceinvoke v.<org.apache.activeio.journal.Journal: org.apache.activeio.journal.RecordLocation write(org.apache.activeio.packet.Packet,boolean)>(v, v);
label:
return v;
label:
v := @caughtexception;
v = <org.apache.activemq.store.journal.JournalPersistenceAdapter: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void error(java.lang.String,java.lang.Throwable)>("Cannot write to the journal", v);
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: org.apache.activemq.broker.BrokerService brokerService>;
virtualinvoke v.<org.apache.activemq.broker.BrokerService: void handleIOException(java.io.IOException)>(v);
throw v;
label:
v = new java.io.IOException;
specialinvoke v.<java.io.IOException: void <init>(java.lang.String)>("closed");
throw v;
catch java.io.IOException from label to label with label;
}
private org.apache.activeio.journal.RecordLocation writeTraceMessage(java.lang.String, boolean) throws java.io.IOException
{
org.apache.activemq.command.JournalTrace v;
org.apache.activemq.store.journal.JournalPersistenceAdapter v;
java.lang.String v;
org.apache.activeio.journal.RecordLocation v;
boolean v;
v := @this: org.apache.activemq.store.journal.JournalPersistenceAdapter;
v := @parameter: java.lang.String;
v := @parameter: boolean;
v = new org.apache.activemq.command.JournalTrace;
specialinvoke v.<org.apache.activemq.command.JournalTrace: void <init>()>();
virtualinvoke v.<org.apache.activemq.command.JournalTrace: void setMessage(java.lang.String)>(v);
v = virtualinvoke v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: org.apache.activeio.journal.RecordLocation writeCommand(org.apache.activemq.command.DataStructure,boolean)>(v, v);
return v;
}
public void onUsageChanged(org.apache.activemq.usage.Usage, int, int)
{
org.apache.activemq.store.journal.JournalPersistenceAdapter v;
int v, v, v, v, v, v;
org.apache.activemq.usage.Usage v;
boolean v;
v := @this: org.apache.activemq.store.journal.JournalPersistenceAdapter;
v := @parameter: org.apache.activemq.usage.Usage;
v := @parameter: int;
v := @parameter: int;
v = v / 10;
v = v * 10;
v = v / 10;
v = v * 10;
if v < 70 goto label;
if v >= v goto label;
if v < 90 goto label;
v = 1;
goto label;
label:
v = 0;
label:
virtualinvoke v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: void checkpoint(boolean,boolean)>(v, 1);
label:
return;
}
public org.apache.activemq.store.journal.JournalTransactionStore getTransactionStore()
{
org.apache.activemq.store.journal.JournalPersistenceAdapter v;
org.apache.activemq.store.journal.JournalTransactionStore v;
v := @this: org.apache.activemq.store.journal.JournalPersistenceAdapter;
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: org.apache.activemq.store.journal.JournalTransactionStore transactionStore>;
return v;
}
public void deleteAllMessages() throws java.io.IOException
{
java.lang.Throwable v;
org.slf4j.Logger v;
org.apache.activemq.wireformat.WireFormat v;
org.apache.activeio.packet.Packet v;
java.io.IOException v, v;
org.apache.activeio.journal.Journal v, v;
org.apache.activeio.journal.RecordLocation v;
org.apache.activemq.command.JournalTrace v;
org.apache.activemq.store.journal.JournalPersistenceAdapter v;
org.apache.activemq.store.PersistenceAdapter v;
org.apache.activemq.util.ByteSequence v;
v := @this: org.apache.activemq.store.journal.JournalPersistenceAdapter;
label:
v = new org.apache.activemq.command.JournalTrace;
specialinvoke v.<org.apache.activemq.command.JournalTrace: void <init>()>();
virtualinvoke v.<org.apache.activemq.command.JournalTrace: void setMessage(java.lang.String)>("DELETED");
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: org.apache.activeio.journal.Journal journal>;
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: org.apache.activemq.wireformat.WireFormat wireFormat>;
v = interfaceinvoke v.<org.apache.activemq.wireformat.WireFormat: org.apache.activemq.util.ByteSequence marshal(java.lang.Object)>(v);
v = virtualinvoke v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: org.apache.activeio.packet.Packet toPacket(org.apache.activemq.util.ByteSequence)>(v);
v = interfaceinvoke v.<org.apache.activeio.journal.Journal: org.apache.activeio.journal.RecordLocation write(org.apache.activeio.packet.Packet,boolean)>(v, 0);
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: org.apache.activeio.journal.Journal journal>;
interfaceinvoke v.<org.apache.activeio.journal.Journal: void setMark(org.apache.activeio.journal.RecordLocation,boolean)>(v, 1);
v = <org.apache.activemq.store.journal.JournalPersistenceAdapter: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void info(java.lang.String)>("Journal deleted: ");
label:
goto label;
label:
v := @caughtexception;
throw v;
label:
v := @caughtexception;
v = staticinvoke <org.apache.activemq.util.IOExceptionSupport: java.io.IOException create(java.lang.Throwable)>(v);
throw v;
label:
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: org.apache.activemq.store.PersistenceAdapter longTermPersistence>;
interfaceinvoke v.<org.apache.activemq.store.PersistenceAdapter: void deleteAllMessages()>();
return;
catch java.io.IOException from label to label with label;
catch java.lang.Throwable from label to label with label;
}
public org.apache.activemq.usage.SystemUsage getUsageManager()
{
org.apache.activemq.usage.SystemUsage v;
org.apache.activemq.store.journal.JournalPersistenceAdapter v;
v := @this: org.apache.activemq.store.journal.JournalPersistenceAdapter;
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: org.apache.activemq.usage.SystemUsage usageManager>;
return v;
}
public int getMaxCheckpointMessageAddSize()
{
int v;
org.apache.activemq.store.journal.JournalPersistenceAdapter v;
v := @this: org.apache.activemq.store.journal.JournalPersistenceAdapter;
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: int maxCheckpointMessageAddSize>;
return v;
}
public void setMaxCheckpointMessageAddSize(int)
{
int v;
org.apache.activemq.store.journal.JournalPersistenceAdapter v;
v := @this: org.apache.activemq.store.journal.JournalPersistenceAdapter;
v := @parameter: int;
v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: int maxCheckpointMessageAddSize> = v;
return;
}
public int getMaxCheckpointWorkers()
{
int v;
org.apache.activemq.store.journal.JournalPersistenceAdapter v;
v := @this: org.apache.activemq.store.journal.JournalPersistenceAdapter;
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: int maxCheckpointWorkers>;
return v;
}
public void setMaxCheckpointWorkers(int)
{
int v;
org.apache.activemq.store.journal.JournalPersistenceAdapter v;
v := @this: org.apache.activemq.store.journal.JournalPersistenceAdapter;
v := @parameter: int;
v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: int maxCheckpointWorkers> = v;
return;
}
public long getCheckpointInterval()
{
long v;
org.apache.activemq.store.journal.JournalPersistenceAdapter v;
v := @this: org.apache.activemq.store.journal.JournalPersistenceAdapter;
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: long checkpointInterval>;
return v;
}
public void setCheckpointInterval(long)
{
long v;
org.apache.activemq.store.journal.JournalPersistenceAdapter v;
v := @this: org.apache.activemq.store.journal.JournalPersistenceAdapter;
v := @parameter: long;
v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: long checkpointInterval> = v;
return;
}
public boolean isUseExternalMessageReferences()
{
org.apache.activemq.store.journal.JournalPersistenceAdapter v;
v := @this: org.apache.activemq.store.journal.JournalPersistenceAdapter;
return 0;
}
public void setUseExternalMessageReferences(boolean)
{
java.lang.IllegalArgumentException v;
boolean v;
org.apache.activemq.store.journal.JournalPersistenceAdapter v;
v := @this: org.apache.activemq.store.journal.JournalPersistenceAdapter;
v := @parameter: boolean;
if v == 0 goto label;
v = new java.lang.IllegalArgumentException;
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String)>("The journal does not support message references.");
throw v;
label:
return;
}
public org.apache.activeio.packet.Packet toPacket(org.apache.activemq.util.ByteSequence)
{
byte[] v;
org.apache.activemq.store.journal.JournalPersistenceAdapter v;
int v, v;
org.apache.activeio.packet.ByteArrayPacket v;
org.apache.activeio.packet.ByteSequence v;
org.apache.activemq.util.ByteSequence v;
v := @this: org.apache.activemq.store.journal.JournalPersistenceAdapter;
v := @parameter: org.apache.activemq.util.ByteSequence;
v = new org.apache.activeio.packet.ByteArrayPacket;
v = new org.apache.activeio.packet.ByteSequence;
v = v.<org.apache.activemq.util.ByteSequence: byte[] data>;
v = v.<org.apache.activemq.util.ByteSequence: int offset>;
v = v.<org.apache.activemq.util.ByteSequence: int length>;
specialinvoke v.<org.apache.activeio.packet.ByteSequence: void <init>(byte[],int,int)>(v, v, v);
specialinvoke v.<org.apache.activeio.packet.ByteArrayPacket: void <init>(org.apache.activeio.packet.ByteSequence)>(v);
return v;
}
public org.apache.activemq.util.ByteSequence toByteSequence(org.apache.activeio.packet.Packet)
{
byte[] v;
org.apache.activemq.store.journal.JournalPersistenceAdapter v;
int v, v;
org.apache.activeio.packet.Packet v;
org.apache.activeio.packet.ByteSequence v;
org.apache.activemq.util.ByteSequence v;
v := @this: org.apache.activemq.store.journal.JournalPersistenceAdapter;
v := @parameter: org.apache.activeio.packet.Packet;
v = interfaceinvoke v.<org.apache.activeio.packet.Packet: org.apache.activeio.packet.ByteSequence asByteSequence()>();
v = new org.apache.activemq.util.ByteSequence;
v = virtualinvoke v.<org.apache.activeio.packet.ByteSequence: byte[] getData()>();
v = virtualinvoke v.<org.apache.activeio.packet.ByteSequence: int getOffset()>();
v = virtualinvoke v.<org.apache.activeio.packet.ByteSequence: int getLength()>();
specialinvoke v.<org.apache.activemq.util.ByteSequence: void <init>(byte[],int,int)>(v, v, v);
return v;
}
public void setBrokerName(java.lang.String)
{
java.lang.String v;
org.apache.activemq.store.PersistenceAdapter v;
org.apache.activemq.store.journal.JournalPersistenceAdapter v;
v := @this: org.apache.activemq.store.journal.JournalPersistenceAdapter;
v := @parameter: java.lang.String;
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: org.apache.activemq.store.PersistenceAdapter longTermPersistence>;
interfaceinvoke v.<org.apache.activemq.store.PersistenceAdapter: void setBrokerName(java.lang.String)>(v);
return;
}
public java.lang.String toString()
{
java.lang.String v;
org.apache.activemq.store.PersistenceAdapter v;
org.apache.activemq.store.journal.JournalPersistenceAdapter v;
v := @this: org.apache.activemq.store.journal.JournalPersistenceAdapter;
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: org.apache.activemq.store.PersistenceAdapter longTermPersistence>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (org.apache.activemq.store.PersistenceAdapter)>(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[])>("JournalPersistenceAdapter(\u)");
return v;
}
public void setDirectory(java.io.File)
{
java.io.File v;
org.apache.activemq.store.journal.JournalPersistenceAdapter v;
v := @this: org.apache.activemq.store.journal.JournalPersistenceAdapter;
v := @parameter: java.io.File;
v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: java.io.File directory> = v;
return;
}
public java.io.File getDirectory()
{
java.io.File v;
org.apache.activemq.store.journal.JournalPersistenceAdapter v;
v := @this: org.apache.activemq.store.journal.JournalPersistenceAdapter;
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: java.io.File directory>;
return v;
}
public long size()
{
org.apache.activemq.store.journal.JournalPersistenceAdapter v;
v := @this: org.apache.activemq.store.journal.JournalPersistenceAdapter;
return 0L;
}
public void setBrokerService(org.apache.activemq.broker.BrokerService)
{
org.apache.activemq.broker.BrokerService v;
org.apache.activemq.store.journal.JournalPersistenceAdapter v;
org.apache.activemq.store.PersistenceAdapter v;
boolean v;
v := @this: org.apache.activemq.store.journal.JournalPersistenceAdapter;
v := @parameter: org.apache.activemq.broker.BrokerService;
v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: org.apache.activemq.broker.BrokerService brokerService> = v;
v = virtualinvoke v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: org.apache.activemq.store.PersistenceAdapter getLongTermPersistence()>();
v = v instanceof org.apache.activemq.broker.BrokerServiceAware;
if v == 0 goto label;
interfaceinvoke v.<org.apache.activemq.broker.BrokerServiceAware: void setBrokerService(org.apache.activemq.broker.BrokerService)>(v);
label:
return;
}
public long getLastProducerSequenceId(org.apache.activemq.command.ProducerId)
{
org.apache.activemq.command.ProducerId v;
org.apache.activemq.store.journal.JournalPersistenceAdapter v;
v := @this: org.apache.activemq.store.journal.JournalPersistenceAdapter;
v := @parameter: org.apache.activemq.command.ProducerId;
return -1L;
}
public void allowIOResumption()
{
org.apache.activemq.store.PersistenceAdapter v;
org.apache.activemq.store.journal.JournalPersistenceAdapter v;
v := @this: org.apache.activemq.store.journal.JournalPersistenceAdapter;
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: org.apache.activemq.store.PersistenceAdapter longTermPersistence>;
interfaceinvoke v.<org.apache.activemq.store.PersistenceAdapter: void allowIOResumption()>();
return;
}
public org.apache.activemq.broker.scheduler.JobSchedulerStore createJobSchedulerStore() throws java.io.IOException, java.lang.UnsupportedOperationException
{
org.apache.activemq.broker.scheduler.JobSchedulerStore v;
org.apache.activemq.store.PersistenceAdapter v;
org.apache.activemq.store.journal.JournalPersistenceAdapter v;
v := @this: org.apache.activemq.store.journal.JournalPersistenceAdapter;
v = v.<org.apache.activemq.store.journal.JournalPersistenceAdapter: org.apache.activemq.store.PersistenceAdapter longTermPersistence>;
v = interfaceinvoke v.<org.apache.activemq.store.PersistenceAdapter: org.apache.activemq.broker.scheduler.JobSchedulerStore createJobSchedulerStore()>();
return v;
}
static void <clinit>()
{
org.slf4j.Logger v;
v = staticinvoke <org.slf4j.LoggerFactory: org.slf4j.Logger getLogger(java.lang.Class)>(class "Lorg/apache/activemq/store/journal/JournalPersistenceAdapter;");
<org.apache.activemq.store.journal.JournalPersistenceAdapter: org.slf4j.Logger LOG> = v;
return;
}
}