public abstract class org.apache.activemq.store.kahadb.AbstractKahaDBStore extends org.apache.activemq.broker.LockableServiceSupport
{
static final org.slf4j.Logger LOG;
public static final java.lang.String PROPERTY_LOG_SLOW_ACCESS_TIME;
public static final int LOG_SLOW_ACCESS_TIME;
protected java.io.File directory;
protected org.apache.activemq.store.kahadb.disk.page.PageFile pageFile;
protected org.apache.activemq.store.kahadb.disk.journal.Journal journal;
protected java.util.concurrent.atomic.AtomicLong journalSize;
protected boolean failIfDatabaseIsLocked;
protected long checkpointInterval;
protected long cleanupInterval;
private boolean cleanupOnStop;
protected boolean checkForCorruptJournalFiles;
protected boolean checksumJournalFiles;
protected boolean forceRecoverIndex;
protected int journalMaxFileLength;
protected int journalMaxWriteBatchSize;
protected boolean archiveCorruptedIndex;
protected boolean enableIndexWriteAsync;
protected boolean enableJournalDiskSyncs;
protected boolean deleteAllJobs;
protected int indexWriteBatchSize;
protected boolean useIndexLFRUEviction;
protected float indexLFUEvictionFactor;
protected boolean ignoreMissingJournalfiles;
protected int indexCacheSize;
protected boolean enableIndexDiskSyncs;
protected boolean enableIndexRecoveryFile;
protected boolean enableIndexPageCaching;
protected boolean archiveDataLogs;
protected boolean purgeStoreOnStartup;
protected java.io.File directoryArchive;
protected java.util.concurrent.atomic.AtomicBoolean opened;
protected java.lang.Thread checkpointThread;
protected final java.lang.Object checkpointThreadLock;
protected java.util.concurrent.locks.ReentrantReadWriteLock checkpointLock;
protected java.util.concurrent.locks.ReentrantReadWriteLock indexLock;
public void <init>()
{
java.util.concurrent.atomic.AtomicLong v;
org.apache.activemq.store.kahadb.AbstractKahaDBStore v;
int v;
java.util.concurrent.atomic.AtomicBoolean v;
java.lang.Object v;
java.util.concurrent.locks.ReentrantReadWriteLock v, v;
v := @this: org.apache.activemq.store.kahadb.AbstractKahaDBStore;
specialinvoke v.<org.apache.activemq.broker.LockableServiceSupport: void <init>()>();
v = new java.util.concurrent.atomic.AtomicLong;
specialinvoke v.<java.util.concurrent.atomic.AtomicLong: void <init>(long)>(0L);
v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: java.util.concurrent.atomic.AtomicLong journalSize> = v;
v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: long checkpointInterval> = 5000L;
v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: long cleanupInterval> = 30000L;
v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: boolean cleanupOnStop> = 1;
v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: boolean checkForCorruptJournalFiles> = 0;
v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: boolean checksumJournalFiles> = 1;
v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: boolean forceRecoverIndex> = 0;
v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: int journalMaxFileLength> = 33554432;
v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: int journalMaxWriteBatchSize> = 4194304;
v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: boolean archiveCorruptedIndex> = 0;
v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: boolean enableIndexWriteAsync> = 0;
v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: boolean enableJournalDiskSyncs> = 0;
v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: boolean deleteAllJobs> = 0;
v = <org.apache.activemq.store.kahadb.disk.page.PageFile: int DEFAULT_WRITE_BATCH_SIZE>;
v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: int indexWriteBatchSize> = v;
v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: boolean useIndexLFRUEviction> = 0;
v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: float indexLFUEvictionFactor> = 0.2F;
v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: boolean ignoreMissingJournalfiles> = 0;
v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: int indexCacheSize> = 1000;
v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: boolean enableIndexDiskSyncs> = 1;
v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: boolean enableIndexRecoveryFile> = 1;
v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: boolean enableIndexPageCaching> = 1;
v = new java.util.concurrent.atomic.AtomicBoolean;
specialinvoke v.<java.util.concurrent.atomic.AtomicBoolean: void <init>()>();
v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: java.util.concurrent.atomic.AtomicBoolean opened> = v;
v = new java.lang.Object;
specialinvoke v.<java.lang.Object: void <init>()>();
v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: java.lang.Object checkpointThreadLock> = v;
v = new java.util.concurrent.locks.ReentrantReadWriteLock;
specialinvoke v.<java.util.concurrent.locks.ReentrantReadWriteLock: void <init>()>();
v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: java.util.concurrent.locks.ReentrantReadWriteLock checkpointLock> = v;
v = new java.util.concurrent.locks.ReentrantReadWriteLock;
specialinvoke v.<java.util.concurrent.locks.ReentrantReadWriteLock: void <init>()>();
v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: java.util.concurrent.locks.ReentrantReadWriteLock indexLock> = v;
return;
}
protected abstract java.lang.String getPageFileName();
protected abstract java.io.File getDefaultDataDirectory();
public abstract void load() throws java.io.IOException;
public abstract void unload() throws java.io.IOException;
protected void doStart() throws java.lang.Exception
{
java.lang.Throwable v;
java.util.Date v;
java.util.concurrent.locks.ReentrantReadWriteLock v, v, v;
java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock v, v, v;
org.apache.activemq.store.kahadb.data.KahaTraceCommand v;
java.lang.String v;
org.apache.activemq.store.kahadb.disk.page.PageFile v;
boolean v;
org.slf4j.Logger v;
org.apache.activemq.store.kahadb.AbstractKahaDBStore v;
java.io.File v, v, v;
java.lang.Object v;
org.apache.activemq.store.kahadb.disk.journal.Journal v, v, v;
v := @this: org.apache.activemq.store.kahadb.AbstractKahaDBStore;
v = v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: java.util.concurrent.locks.ReentrantReadWriteLock indexLock>;
v = virtualinvoke v.<java.util.concurrent.locks.ReentrantReadWriteLock: java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock writeLock()>();
virtualinvoke v.<java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock: void lock()>();
v = virtualinvoke v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: java.io.File getDirectory()>();
if v != null goto label;
v = virtualinvoke v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: java.io.File getDefaultDataDirectory()>();
virtualinvoke v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: void setDirectory(java.io.File)>(v);
label:
v = virtualinvoke v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: java.io.File getDirectory()>();
staticinvoke <org.apache.activemq.util.IOHelper: void mkdirs(java.io.File)>(v);
label:
v = virtualinvoke v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: boolean isPurgeStoreOnStartup()>();
if v == 0 goto label;
v = virtualinvoke v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: org.apache.activemq.store.kahadb.disk.journal.Journal getJournal()>();
virtualinvoke v.<org.apache.activemq.store.kahadb.disk.journal.Journal: void start()>();
v = virtualinvoke v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: org.apache.activemq.store.kahadb.disk.journal.Journal getJournal()>();
virtualinvoke v.<org.apache.activemq.store.kahadb.disk.journal.Journal: boolean delete()>();
v = virtualinvoke v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: org.apache.activemq.store.kahadb.disk.journal.Journal getJournal()>();
virtualinvoke v.<org.apache.activemq.store.kahadb.disk.journal.Journal: void close()>();
v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: org.apache.activemq.store.kahadb.disk.journal.Journal journal> = null;
v = virtualinvoke v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: org.apache.activemq.store.kahadb.disk.page.PageFile getPageFile()>();
virtualinvoke v.<org.apache.activemq.store.kahadb.disk.page.PageFile: void delete()>();
v = <org.apache.activemq.store.kahadb.AbstractKahaDBStore: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void info(java.lang.String,java.lang.Object)>("{} Persistence store purged.", v);
virtualinvoke v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: void setPurgeStoreOnStartup(boolean)>(0);
label:
virtualinvoke v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: void load()>();
v = new org.apache.activemq.store.kahadb.data.KahaTraceCommand;
specialinvoke v.<org.apache.activemq.store.kahadb.data.KahaTraceCommand: void <init>()>();
v = new java.util.Date;
specialinvoke v.<java.util.Date: void <init>()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.util.Date)>(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[])>("LOADED \u0001");
v = virtualinvoke v.<org.apache.activemq.store.kahadb.data.KahaTraceCommand: java.lang.Object setMessage(java.lang.String)>(v);
virtualinvoke v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: org.apache.activemq.store.kahadb.disk.journal.Location store(org.apache.activemq.store.kahadb.JournalCommand)>(v);
label:
v = v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: java.util.concurrent.locks.ReentrantReadWriteLock indexLock>;
v = virtualinvoke v.<java.util.concurrent.locks.ReentrantReadWriteLock: java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock writeLock()>();
virtualinvoke v.<java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock: void unlock()>();
goto label;
label:
v := @caughtexception;
v = v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: java.util.concurrent.locks.ReentrantReadWriteLock indexLock>;
v = virtualinvoke v.<java.util.concurrent.locks.ReentrantReadWriteLock: java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock writeLock()>();
virtualinvoke v.<java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock: void unlock()>();
throw v;
label:
return;
catch java.lang.Throwable from label to label with label;
}
protected void doStop(org.apache.activemq.util.ServiceStopper) throws java.lang.Exception
{
org.apache.activemq.util.ServiceStopper v;
org.apache.activemq.store.kahadb.AbstractKahaDBStore v;
v := @this: org.apache.activemq.store.kahadb.AbstractKahaDBStore;
v := @parameter: org.apache.activemq.util.ServiceStopper;
virtualinvoke v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: void unload()>();
return;
}
public org.apache.activemq.store.kahadb.disk.page.PageFile getPageFile()
{
org.apache.activemq.store.kahadb.AbstractKahaDBStore v;
org.apache.activemq.store.kahadb.disk.page.PageFile v, v, v;
v := @this: org.apache.activemq.store.kahadb.AbstractKahaDBStore;
v = v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: org.apache.activemq.store.kahadb.disk.page.PageFile pageFile>;
if v != null goto label;
v = virtualinvoke v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: org.apache.activemq.store.kahadb.disk.page.PageFile createPageFile()>();
v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: org.apache.activemq.store.kahadb.disk.page.PageFile pageFile> = v;
label:
v = v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: org.apache.activemq.store.kahadb.disk.page.PageFile pageFile>;
return v;
}
public org.apache.activemq.store.kahadb.disk.journal.Journal getJournal() throws java.io.IOException
{
org.apache.activemq.store.kahadb.AbstractKahaDBStore v;
org.apache.activemq.store.kahadb.disk.journal.Journal v, v, v;
v := @this: org.apache.activemq.store.kahadb.AbstractKahaDBStore;
v = v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: org.apache.activemq.store.kahadb.disk.journal.Journal journal>;
if v != null goto label;
v = virtualinvoke v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: org.apache.activemq.store.kahadb.disk.journal.Journal createJournal()>();
v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: org.apache.activemq.store.kahadb.disk.journal.Journal journal> = v;
label:
v = v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: org.apache.activemq.store.kahadb.disk.journal.Journal journal>;
return v;
}
public java.io.File getDirectory()
{
java.io.File v;
org.apache.activemq.store.kahadb.AbstractKahaDBStore v;
v := @this: org.apache.activemq.store.kahadb.AbstractKahaDBStore;
v = v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: java.io.File directory>;
return v;
}
public void setDirectory(java.io.File)
{
java.io.File v;
org.apache.activemq.store.kahadb.AbstractKahaDBStore v;
v := @this: org.apache.activemq.store.kahadb.AbstractKahaDBStore;
v := @parameter: java.io.File;
v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: java.io.File directory> = v;
return;
}
public boolean isArchiveCorruptedIndex()
{
boolean v;
org.apache.activemq.store.kahadb.AbstractKahaDBStore v;
v := @this: org.apache.activemq.store.kahadb.AbstractKahaDBStore;
v = v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: boolean archiveCorruptedIndex>;
return v;
}
public void setArchiveCorruptedIndex(boolean)
{
boolean v;
org.apache.activemq.store.kahadb.AbstractKahaDBStore v;
v := @this: org.apache.activemq.store.kahadb.AbstractKahaDBStore;
v := @parameter: boolean;
v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: boolean archiveCorruptedIndex> = v;
return;
}
public boolean isFailIfDatabaseIsLocked()
{
boolean v;
org.apache.activemq.store.kahadb.AbstractKahaDBStore v;
v := @this: org.apache.activemq.store.kahadb.AbstractKahaDBStore;
v = v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: boolean failIfDatabaseIsLocked>;
return v;
}
public void setFailIfDatabaseIsLocked(boolean)
{
boolean v;
org.apache.activemq.store.kahadb.AbstractKahaDBStore v;
v := @this: org.apache.activemq.store.kahadb.AbstractKahaDBStore;
v := @parameter: boolean;
v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: boolean failIfDatabaseIsLocked> = v;
return;
}
public boolean isCheckForCorruptJournalFiles()
{
boolean v;
org.apache.activemq.store.kahadb.AbstractKahaDBStore v;
v := @this: org.apache.activemq.store.kahadb.AbstractKahaDBStore;
v = v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: boolean checkForCorruptJournalFiles>;
return v;
}
public void setCheckForCorruptJournalFiles(boolean)
{
boolean v;
org.apache.activemq.store.kahadb.AbstractKahaDBStore v;
v := @this: org.apache.activemq.store.kahadb.AbstractKahaDBStore;
v := @parameter: boolean;
v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: boolean checkForCorruptJournalFiles> = v;
return;
}
public long getCheckpointInterval()
{
long v;
org.apache.activemq.store.kahadb.AbstractKahaDBStore v;
v := @this: org.apache.activemq.store.kahadb.AbstractKahaDBStore;
v = v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: long checkpointInterval>;
return v;
}
public void setCheckpointInterval(long)
{
long v;
org.apache.activemq.store.kahadb.AbstractKahaDBStore v;
v := @this: org.apache.activemq.store.kahadb.AbstractKahaDBStore;
v := @parameter: long;
v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: long checkpointInterval> = v;
return;
}
public long getCleanupInterval()
{
long v;
org.apache.activemq.store.kahadb.AbstractKahaDBStore v;
v := @this: org.apache.activemq.store.kahadb.AbstractKahaDBStore;
v = v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: long cleanupInterval>;
return v;
}
public void setCleanupInterval(long)
{
long v;
org.apache.activemq.store.kahadb.AbstractKahaDBStore v;
v := @this: org.apache.activemq.store.kahadb.AbstractKahaDBStore;
v := @parameter: long;
v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: long cleanupInterval> = v;
return;
}
public void setCleanupOnStop(boolean)
{
boolean v;
org.apache.activemq.store.kahadb.AbstractKahaDBStore v;
v := @this: org.apache.activemq.store.kahadb.AbstractKahaDBStore;
v := @parameter: boolean;
v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: boolean cleanupOnStop> = v;
return;
}
public boolean getCleanupOnStop()
{
boolean v;
org.apache.activemq.store.kahadb.AbstractKahaDBStore v;
v := @this: org.apache.activemq.store.kahadb.AbstractKahaDBStore;
v = v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: boolean cleanupOnStop>;
return v;
}
public boolean isChecksumJournalFiles()
{
boolean v;
org.apache.activemq.store.kahadb.AbstractKahaDBStore v;
v := @this: org.apache.activemq.store.kahadb.AbstractKahaDBStore;
v = v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: boolean checksumJournalFiles>;
return v;
}
public void setChecksumJournalFiles(boolean)
{
boolean v;
org.apache.activemq.store.kahadb.AbstractKahaDBStore v;
v := @this: org.apache.activemq.store.kahadb.AbstractKahaDBStore;
v := @parameter: boolean;
v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: boolean checksumJournalFiles> = v;
return;
}
public boolean isForceRecoverIndex()
{
boolean v;
org.apache.activemq.store.kahadb.AbstractKahaDBStore v;
v := @this: org.apache.activemq.store.kahadb.AbstractKahaDBStore;
v = v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: boolean forceRecoverIndex>;
return v;
}
public void setForceRecoverIndex(boolean)
{
boolean v;
org.apache.activemq.store.kahadb.AbstractKahaDBStore v;
v := @this: org.apache.activemq.store.kahadb.AbstractKahaDBStore;
v := @parameter: boolean;
v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: boolean forceRecoverIndex> = v;
return;
}
public int getJournalMaxFileLength()
{
int v;
org.apache.activemq.store.kahadb.AbstractKahaDBStore v;
v := @this: org.apache.activemq.store.kahadb.AbstractKahaDBStore;
v = v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: int journalMaxFileLength>;
return v;
}
public void setJournalMaxFileLength(int)
{
int v;
org.apache.activemq.store.kahadb.AbstractKahaDBStore v;
v := @this: org.apache.activemq.store.kahadb.AbstractKahaDBStore;
v := @parameter: int;
v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: int journalMaxFileLength> = v;
return;
}
public int getJournalMaxWriteBatchSize()
{
int v;
org.apache.activemq.store.kahadb.AbstractKahaDBStore v;
v := @this: org.apache.activemq.store.kahadb.AbstractKahaDBStore;
v = v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: int journalMaxWriteBatchSize>;
return v;
}
public void setJournalMaxWriteBatchSize(int)
{
int v;
org.apache.activemq.store.kahadb.AbstractKahaDBStore v;
v := @this: org.apache.activemq.store.kahadb.AbstractKahaDBStore;
v := @parameter: int;
v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: int journalMaxWriteBatchSize> = v;
return;
}
public boolean isEnableIndexWriteAsync()
{
boolean v;
org.apache.activemq.store.kahadb.AbstractKahaDBStore v;
v := @this: org.apache.activemq.store.kahadb.AbstractKahaDBStore;
v = v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: boolean enableIndexWriteAsync>;
return v;
}
public void setEnableIndexWriteAsync(boolean)
{
boolean v;
org.apache.activemq.store.kahadb.AbstractKahaDBStore v;
v := @this: org.apache.activemq.store.kahadb.AbstractKahaDBStore;
v := @parameter: boolean;
v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: boolean enableIndexWriteAsync> = v;
return;
}
public boolean isEnableJournalDiskSyncs()
{
boolean v;
org.apache.activemq.store.kahadb.AbstractKahaDBStore v;
v := @this: org.apache.activemq.store.kahadb.AbstractKahaDBStore;
v = v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: boolean enableJournalDiskSyncs>;
return v;
}
public void setEnableJournalDiskSyncs(boolean)
{
boolean v;
org.apache.activemq.store.kahadb.AbstractKahaDBStore v;
v := @this: org.apache.activemq.store.kahadb.AbstractKahaDBStore;
v := @parameter: boolean;
v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: boolean enableJournalDiskSyncs> = v;
return;
}
public boolean isDeleteAllJobs()
{
boolean v;
org.apache.activemq.store.kahadb.AbstractKahaDBStore v;
v := @this: org.apache.activemq.store.kahadb.AbstractKahaDBStore;
v = v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: boolean deleteAllJobs>;
return v;
}
public void setDeleteAllJobs(boolean)
{
boolean v;
org.apache.activemq.store.kahadb.AbstractKahaDBStore v;
v := @this: org.apache.activemq.store.kahadb.AbstractKahaDBStore;
v := @parameter: boolean;
v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: boolean deleteAllJobs> = v;
return;
}
public boolean isArchiveDataLogs()
{
boolean v;
org.apache.activemq.store.kahadb.AbstractKahaDBStore v;
v := @this: org.apache.activemq.store.kahadb.AbstractKahaDBStore;
v = v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: boolean archiveDataLogs>;
return v;
}
public void setArchiveDataLogs(boolean)
{
boolean v;
org.apache.activemq.store.kahadb.AbstractKahaDBStore v;
v := @this: org.apache.activemq.store.kahadb.AbstractKahaDBStore;
v := @parameter: boolean;
v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: boolean archiveDataLogs> = v;
return;
}
public java.io.File getDirectoryArchive()
{
java.io.File v;
org.apache.activemq.store.kahadb.AbstractKahaDBStore v;
v := @this: org.apache.activemq.store.kahadb.AbstractKahaDBStore;
v = v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: java.io.File directoryArchive>;
return v;
}
public void setDirectoryArchive(java.io.File)
{
java.io.File v;
org.apache.activemq.store.kahadb.AbstractKahaDBStore v;
v := @this: org.apache.activemq.store.kahadb.AbstractKahaDBStore;
v := @parameter: java.io.File;
v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: java.io.File directoryArchive> = v;
return;
}
public int getIndexCacheSize()
{
int v;
org.apache.activemq.store.kahadb.AbstractKahaDBStore v;
v := @this: org.apache.activemq.store.kahadb.AbstractKahaDBStore;
v = v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: int indexCacheSize>;
return v;
}
public void setIndexCacheSize(int)
{
int v;
org.apache.activemq.store.kahadb.AbstractKahaDBStore v;
v := @this: org.apache.activemq.store.kahadb.AbstractKahaDBStore;
v := @parameter: int;
v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: int indexCacheSize> = v;
return;
}
public int getIndexWriteBatchSize()
{
int v;
org.apache.activemq.store.kahadb.AbstractKahaDBStore v;
v := @this: org.apache.activemq.store.kahadb.AbstractKahaDBStore;
v = v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: int indexWriteBatchSize>;
return v;
}
public void setIndexWriteBatchSize(int)
{
int v;
org.apache.activemq.store.kahadb.AbstractKahaDBStore v;
v := @this: org.apache.activemq.store.kahadb.AbstractKahaDBStore;
v := @parameter: int;
v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: int indexWriteBatchSize> = v;
return;
}
public boolean isUseIndexLFRUEviction()
{
boolean v;
org.apache.activemq.store.kahadb.AbstractKahaDBStore v;
v := @this: org.apache.activemq.store.kahadb.AbstractKahaDBStore;
v = v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: boolean useIndexLFRUEviction>;
return v;
}
public void setUseIndexLFRUEviction(boolean)
{
boolean v;
org.apache.activemq.store.kahadb.AbstractKahaDBStore v;
v := @this: org.apache.activemq.store.kahadb.AbstractKahaDBStore;
v := @parameter: boolean;
v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: boolean useIndexLFRUEviction> = v;
return;
}
public float getIndexLFUEvictionFactor()
{
float v;
org.apache.activemq.store.kahadb.AbstractKahaDBStore v;
v := @this: org.apache.activemq.store.kahadb.AbstractKahaDBStore;
v = v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: float indexLFUEvictionFactor>;
return v;
}
public void setIndexLFUEvictionFactor(float)
{
float v;
org.apache.activemq.store.kahadb.AbstractKahaDBStore v;
v := @this: org.apache.activemq.store.kahadb.AbstractKahaDBStore;
v := @parameter: float;
v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: float indexLFUEvictionFactor> = v;
return;
}
public boolean isEnableIndexDiskSyncs()
{
boolean v;
org.apache.activemq.store.kahadb.AbstractKahaDBStore v;
v := @this: org.apache.activemq.store.kahadb.AbstractKahaDBStore;
v = v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: boolean enableIndexDiskSyncs>;
return v;
}
public void setEnableIndexDiskSyncs(boolean)
{
boolean v;
org.apache.activemq.store.kahadb.AbstractKahaDBStore v;
v := @this: org.apache.activemq.store.kahadb.AbstractKahaDBStore;
v := @parameter: boolean;
v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: boolean enableIndexDiskSyncs> = v;
return;
}
public boolean isEnableIndexRecoveryFile()
{
boolean v;
org.apache.activemq.store.kahadb.AbstractKahaDBStore v;
v := @this: org.apache.activemq.store.kahadb.AbstractKahaDBStore;
v = v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: boolean enableIndexRecoveryFile>;
return v;
}
public void setEnableIndexRecoveryFile(boolean)
{
boolean v;
org.apache.activemq.store.kahadb.AbstractKahaDBStore v;
v := @this: org.apache.activemq.store.kahadb.AbstractKahaDBStore;
v := @parameter: boolean;
v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: boolean enableIndexRecoveryFile> = v;
return;
}
public boolean isEnableIndexPageCaching()
{
boolean v;
org.apache.activemq.store.kahadb.AbstractKahaDBStore v;
v := @this: org.apache.activemq.store.kahadb.AbstractKahaDBStore;
v = v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: boolean enableIndexPageCaching>;
return v;
}
public void setEnableIndexPageCaching(boolean)
{
boolean v;
org.apache.activemq.store.kahadb.AbstractKahaDBStore v;
v := @this: org.apache.activemq.store.kahadb.AbstractKahaDBStore;
v := @parameter: boolean;
v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: boolean enableIndexPageCaching> = v;
return;
}
public boolean isPurgeStoreOnStartup()
{
boolean v;
org.apache.activemq.store.kahadb.AbstractKahaDBStore v;
v := @this: org.apache.activemq.store.kahadb.AbstractKahaDBStore;
v = v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: boolean purgeStoreOnStartup>;
return v;
}
public void setPurgeStoreOnStartup(boolean)
{
boolean v;
org.apache.activemq.store.kahadb.AbstractKahaDBStore v;
v := @this: org.apache.activemq.store.kahadb.AbstractKahaDBStore;
v := @parameter: boolean;
v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: boolean purgeStoreOnStartup> = v;
return;
}
public boolean isIgnoreMissingJournalfiles()
{
boolean v;
org.apache.activemq.store.kahadb.AbstractKahaDBStore v;
v := @this: org.apache.activemq.store.kahadb.AbstractKahaDBStore;
v = v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: boolean ignoreMissingJournalfiles>;
return v;
}
public void setIgnoreMissingJournalfiles(boolean)
{
boolean v;
org.apache.activemq.store.kahadb.AbstractKahaDBStore v;
v := @this: org.apache.activemq.store.kahadb.AbstractKahaDBStore;
v := @parameter: boolean;
v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: boolean ignoreMissingJournalfiles> = v;
return;
}
public long size()
{
org.apache.activemq.store.kahadb.AbstractKahaDBStore v;
java.io.IOException v;
long v, v, v;
java.lang.RuntimeException v;
java.util.concurrent.atomic.AtomicLong v;
org.apache.activemq.store.kahadb.disk.page.PageFile v;
boolean v;
v := @this: org.apache.activemq.store.kahadb.AbstractKahaDBStore;
v = virtualinvoke v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: boolean isStarted()>();
if v != 0 goto label;
return 0L;
label:
v = v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: java.util.concurrent.atomic.AtomicLong journalSize>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicLong: long get()>();
v = v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: org.apache.activemq.store.kahadb.disk.page.PageFile pageFile>;
v = virtualinvoke v.<org.apache.activemq.store.kahadb.disk.page.PageFile: long getDiskSize()>();
v = v + v;
label:
return v;
label:
v := @caughtexception;
v = new java.lang.RuntimeException;
specialinvoke v.<java.lang.RuntimeException: void <init>(java.lang.Throwable)>(v);
throw v;
catch java.io.IOException from label to label with label;
}
public org.apache.activemq.broker.Locker createDefaultLocker() throws java.io.IOException
{
org.apache.activemq.store.SharedFileLocker v;
java.io.File v;
org.apache.activemq.store.kahadb.AbstractKahaDBStore v;
v := @this: org.apache.activemq.store.kahadb.AbstractKahaDBStore;
v = new org.apache.activemq.store.SharedFileLocker;
specialinvoke v.<org.apache.activemq.store.SharedFileLocker: void <init>()>();
v = virtualinvoke v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: java.io.File getDirectory()>();
virtualinvoke v.<org.apache.activemq.store.SharedFileLocker: void setDirectory(java.io.File)>(v);
return v;
}
public void init() throws java.lang.Exception
{
org.apache.activemq.store.kahadb.AbstractKahaDBStore v;
v := @this: org.apache.activemq.store.kahadb.AbstractKahaDBStore;
return;
}
public org.apache.activemq.store.kahadb.disk.journal.Location store(org.apache.activemq.store.kahadb.JournalCommand) throws java.io.IOException
{
org.apache.activemq.store.kahadb.JournalCommand v;
org.apache.activemq.store.kahadb.AbstractKahaDBStore v;
org.apache.activemq.store.kahadb.disk.journal.Location v;
boolean v;
v := @this: org.apache.activemq.store.kahadb.AbstractKahaDBStore;
v := @parameter: org.apache.activemq.store.kahadb.JournalCommand;
v = virtualinvoke v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: boolean isEnableIndexDiskSyncs()>();
v = virtualinvoke v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: org.apache.activemq.store.kahadb.disk.journal.Location store(org.apache.activemq.store.kahadb.JournalCommand,boolean,java.lang.Runnable,java.lang.Runnable,java.lang.Runnable)>(v, v, null, null, null);
return v;
}
public org.apache.activemq.store.kahadb.disk.journal.Location store(org.apache.activemq.store.kahadb.JournalCommand, boolean) throws java.io.IOException
{
org.apache.activemq.store.kahadb.JournalCommand v;
org.apache.activemq.store.kahadb.AbstractKahaDBStore v;
org.apache.activemq.store.kahadb.disk.journal.Location v;
boolean v;
v := @this: org.apache.activemq.store.kahadb.AbstractKahaDBStore;
v := @parameter: org.apache.activemq.store.kahadb.JournalCommand;
v := @parameter: boolean;
v = virtualinvoke v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: org.apache.activemq.store.kahadb.disk.journal.Location store(org.apache.activemq.store.kahadb.JournalCommand,boolean,java.lang.Runnable,java.lang.Runnable,java.lang.Runnable)>(v, v, null, null, null);
return v;
}
public org.apache.activemq.store.kahadb.disk.journal.Location store(org.apache.activemq.store.kahadb.JournalCommand, java.lang.Runnable) throws java.io.IOException
{
org.apache.activemq.store.kahadb.JournalCommand v;
org.apache.activemq.store.kahadb.AbstractKahaDBStore v;
java.lang.Runnable v;
org.apache.activemq.store.kahadb.disk.journal.Location v;
boolean v;
v := @this: org.apache.activemq.store.kahadb.AbstractKahaDBStore;
v := @parameter: org.apache.activemq.store.kahadb.JournalCommand;
v := @parameter: java.lang.Runnable;
v = virtualinvoke v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: boolean isEnableIndexDiskSyncs()>();
v = virtualinvoke v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: org.apache.activemq.store.kahadb.disk.journal.Location store(org.apache.activemq.store.kahadb.JournalCommand,boolean,java.lang.Runnable,java.lang.Runnable,java.lang.Runnable)>(v, v, null, null, v);
return v;
}
public org.apache.activemq.store.kahadb.disk.journal.Location store(org.apache.activemq.store.kahadb.JournalCommand, boolean, java.lang.Runnable, java.lang.Runnable) throws java.io.IOException
{
org.apache.activemq.store.kahadb.JournalCommand v;
org.apache.activemq.store.kahadb.AbstractKahaDBStore v;
java.lang.Runnable v, v;
org.apache.activemq.store.kahadb.disk.journal.Location v;
boolean v;
v := @this: org.apache.activemq.store.kahadb.AbstractKahaDBStore;
v := @parameter: org.apache.activemq.store.kahadb.JournalCommand;
v := @parameter: boolean;
v := @parameter: java.lang.Runnable;
v := @parameter: java.lang.Runnable;
v = virtualinvoke v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: org.apache.activemq.store.kahadb.disk.journal.Location store(org.apache.activemq.store.kahadb.JournalCommand,boolean,java.lang.Runnable,java.lang.Runnable,java.lang.Runnable)>(v, v, v, v, null);
return v;
}
public org.apache.activemq.store.kahadb.disk.journal.Location store(org.apache.activemq.store.kahadb.JournalCommand, boolean, java.lang.Runnable, java.lang.Runnable, java.lang.Runnable) throws java.io.IOException
{
org.apache.activemq.store.kahadb.JournalCommand v;
java.lang.Runnable v, v, v;
byte v;
java.lang.Long v, v;
java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock v, v, v;
java.lang.Thread v, v;
org.apache.activemq.store.kahadb.disk.journal.Location v, v;
org.apache.activemq.util.ByteSequence v;
boolean v, v;
org.apache.activemq.broker.BrokerService v, v;
java.lang.Throwable v;
long v, v, v, v, v, v;
java.util.concurrent.locks.ReentrantReadWriteLock v, v, v;
int v, v;
org.slf4j.Logger v, v;
org.apache.activemq.store.kahadb.AbstractKahaDBStore v;
java.io.IOException v;
org.apache.activemq.store.kahadb.disk.journal.Journal v, v;
v := @this: org.apache.activemq.store.kahadb.AbstractKahaDBStore;
v := @parameter: org.apache.activemq.store.kahadb.JournalCommand;
v := @parameter: boolean;
v := @parameter: java.lang.Runnable;
v := @parameter: java.lang.Runnable;
v := @parameter: java.lang.Runnable;
label:
if v == null goto label;
interfaceinvoke v.<java.lang.Runnable: void run()>();
label:
v = virtualinvoke v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: org.apache.activemq.util.ByteSequence toByteSequence(org.apache.activemq.store.kahadb.JournalCommand)>(v);
v = v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: java.util.concurrent.locks.ReentrantReadWriteLock checkpointLock>;
v = virtualinvoke v.<java.util.concurrent.locks.ReentrantReadWriteLock: java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock readLock()>();
virtualinvoke v.<java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock: void lock()>();
label:
v = staticinvoke <java.lang.System: long currentTimeMillis()>();
if v != null goto label;
v = v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: org.apache.activemq.store.kahadb.disk.journal.Journal journal>;
v = virtualinvoke v.<org.apache.activemq.store.kahadb.disk.journal.Journal: org.apache.activemq.store.kahadb.disk.journal.Location write(org.apache.activemq.util.ByteSequence,boolean)>(v, v);
goto label;
label:
v = v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: org.apache.activemq.store.kahadb.disk.journal.Journal journal>;
v = virtualinvoke v.<org.apache.activemq.store.kahadb.disk.journal.Journal: org.apache.activemq.store.kahadb.disk.journal.Location write(org.apache.activemq.util.ByteSequence,java.lang.Runnable)>(v, v);
label:
v = v;
v = staticinvoke <java.lang.System: long currentTimeMillis()>();
virtualinvoke v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: void process(org.apache.activemq.store.kahadb.JournalCommand,org.apache.activemq.store.kahadb.disk.journal.Location)>(v, v);
v = staticinvoke <java.lang.System: long currentTimeMillis()>();
v = <org.apache.activemq.store.kahadb.AbstractKahaDBStore: int LOG_SLOW_ACCESS_TIME>;
if v <= 0 goto label;
v = v - v;
v = <org.apache.activemq.store.kahadb.AbstractKahaDBStore: int LOG_SLOW_ACCESS_TIME>;
v = v cmp v;
if v <= 0 goto label;
v = <org.apache.activemq.store.kahadb.AbstractKahaDBStore: org.slf4j.Logger LOG>;
v = v - v;
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
v = v - v;
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
interfaceinvoke v.<org.slf4j.Logger: void info(java.lang.String,java.lang.Object,java.lang.Object)>("Slow KahaDB access: Journal append took: {} ms, Index update took {} ms", v, v);
label:
v = v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: java.util.concurrent.locks.ReentrantReadWriteLock checkpointLock>;
v = virtualinvoke v.<java.util.concurrent.locks.ReentrantReadWriteLock: java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock readLock()>();
virtualinvoke v.<java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock: void unlock()>();
goto label;
label:
v := @caughtexception;
v = v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: java.util.concurrent.locks.ReentrantReadWriteLock checkpointLock>;
v = virtualinvoke v.<java.util.concurrent.locks.ReentrantReadWriteLock: java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock readLock()>();
virtualinvoke v.<java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock: void unlock()>();
throw v;
label:
if v == null goto label;
interfaceinvoke v.<java.lang.Runnable: void run()>();
label:
v = v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: java.lang.Thread checkpointThread>;
if v == null goto label;
v = v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: java.lang.Thread checkpointThread>;
v = virtualinvoke v.<java.lang.Thread: boolean isAlive()>();
if v != 0 goto label;
virtualinvoke v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: void startCheckpoint()>();
label:
return v;
label:
v := @caughtexception;
v = <org.apache.activemq.store.kahadb.AbstractKahaDBStore: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void error(java.lang.String,java.lang.Throwable)>("KahaDB failed to store to Journal", v);
v = v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: org.apache.activemq.broker.BrokerService brokerService>;
if v == null goto label;
v = v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: org.apache.activemq.broker.BrokerService brokerService>;
virtualinvoke v.<org.apache.activemq.broker.BrokerService: void handleIOException(java.io.IOException)>(v);
label:
throw v;
catch java.lang.Throwable from label to label with label;
catch java.io.IOException from label to label with label;
}
protected org.apache.activemq.store.kahadb.JournalCommand load(org.apache.activemq.store.kahadb.disk.journal.Location) throws java.io.IOException
{
org.apache.activemq.store.kahadb.AbstractKahaDBStore v;
java.io.IOException v;
org.apache.activemq.protobuf.Message v;
byte v;
org.apache.activemq.util.DataByteArrayInputStream v;
org.apache.activemq.store.kahadb.data.KahaEntryType v;
java.lang.String v;
org.apache.activemq.store.kahadb.disk.journal.Location v;
org.apache.activemq.util.ByteSequence v;
org.apache.activemq.store.kahadb.disk.journal.Journal v;
v := @this: org.apache.activemq.store.kahadb.AbstractKahaDBStore;
v := @parameter: org.apache.activemq.store.kahadb.disk.journal.Location;
v = v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: org.apache.activemq.store.kahadb.disk.journal.Journal journal>;
v = virtualinvoke v.<org.apache.activemq.store.kahadb.disk.journal.Journal: org.apache.activemq.util.ByteSequence read(org.apache.activemq.store.kahadb.disk.journal.Location)>(v);
v = new org.apache.activemq.util.DataByteArrayInputStream;
specialinvoke v.<org.apache.activemq.util.DataByteArrayInputStream: void <init>(org.apache.activemq.util.ByteSequence)>(v);
v = virtualinvoke v.<org.apache.activemq.util.DataByteArrayInputStream: byte readByte()>();
v = staticinvoke <org.apache.activemq.store.kahadb.data.KahaEntryType: org.apache.activemq.store.kahadb.data.KahaEntryType valueOf(int)>(v);
if v != null goto label;
v = new java.io.IOException;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (org.apache.activemq.store.kahadb.disk.journal.Location)>(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[])>("Could not load journal record. Invalid location: \u0001");
specialinvoke v.<java.io.IOException: void <init>(java.lang.String)>(v);
throw v;
label:
v = virtualinvoke v.<org.apache.activemq.store.kahadb.data.KahaEntryType: org.apache.activemq.protobuf.Message createMessage()>();
interfaceinvoke v.<org.apache.activemq.store.kahadb.JournalCommand: java.lang.Object mergeFramed(java.io.InputStream)>(v);
return v;
}
protected abstract void process(org.apache.activemq.store.kahadb.JournalCommand, org.apache.activemq.store.kahadb.disk.journal.Location) throws java.io.IOException;
protected void checkpointUpdate(boolean) throws java.io.IOException
{
java.lang.Throwable v, v;
java.util.concurrent.locks.ReentrantReadWriteLock v, v, v, v, v, v;
java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock v, v, v, v, v, v;
org.apache.activemq.store.kahadb.AbstractKahaDBStore$1 v;
org.apache.activemq.store.kahadb.disk.page.PageFile v;
boolean v;
org.apache.activemq.store.kahadb.AbstractKahaDBStore v;
org.apache.activemq.store.kahadb.disk.page.Transaction v;
v := @this: org.apache.activemq.store.kahadb.AbstractKahaDBStore;
v := @parameter: boolean;
v = v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: java.util.concurrent.locks.ReentrantReadWriteLock checkpointLock>;
v = virtualinvoke v.<java.util.concurrent.locks.ReentrantReadWriteLock: java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock writeLock()>();
virtualinvoke v.<java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock: void lock()>();
label:
v = v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: java.util.concurrent.locks.ReentrantReadWriteLock indexLock>;
v = virtualinvoke v.<java.util.concurrent.locks.ReentrantReadWriteLock: java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock writeLock()>();
virtualinvoke v.<java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock: void lock()>();
label:
v = v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: org.apache.activemq.store.kahadb.disk.page.PageFile pageFile>;
v = virtualinvoke v.<org.apache.activemq.store.kahadb.disk.page.PageFile: org.apache.activemq.store.kahadb.disk.page.Transaction tx()>();
v = new org.apache.activemq.store.kahadb.AbstractKahaDBStore$1;
specialinvoke v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore$1: void <init>(org.apache.activemq.store.kahadb.AbstractKahaDBStore,boolean)>(v, v);
virtualinvoke v.<org.apache.activemq.store.kahadb.disk.page.Transaction: void execute(org.apache.activemq.store.kahadb.disk.page.Transaction$Closure)>(v);
label:
v = v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: java.util.concurrent.locks.ReentrantReadWriteLock indexLock>;
v = virtualinvoke v.<java.util.concurrent.locks.ReentrantReadWriteLock: java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock writeLock()>();
virtualinvoke v.<java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock: void unlock()>();
goto label;
label:
v := @caughtexception;
v = v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: java.util.concurrent.locks.ReentrantReadWriteLock indexLock>;
v = virtualinvoke v.<java.util.concurrent.locks.ReentrantReadWriteLock: java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock writeLock()>();
virtualinvoke v.<java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock: void unlock()>();
throw v;
label:
v = v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: java.util.concurrent.locks.ReentrantReadWriteLock checkpointLock>;
v = virtualinvoke v.<java.util.concurrent.locks.ReentrantReadWriteLock: java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock writeLock()>();
virtualinvoke v.<java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock: void unlock()>();
goto label;
label:
v := @caughtexception;
v = v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: java.util.concurrent.locks.ReentrantReadWriteLock checkpointLock>;
v = virtualinvoke v.<java.util.concurrent.locks.ReentrantReadWriteLock: java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock writeLock()>();
virtualinvoke v.<java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock: void unlock()>();
throw v;
label:
return;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
}
protected abstract void checkpointUpdate(org.apache.activemq.store.kahadb.disk.page.Transaction, boolean) throws java.io.IOException;
protected org.apache.activemq.util.ByteSequence toByteSequence(org.apache.activemq.store.kahadb.JournalCommand) throws java.io.IOException
{
org.apache.activemq.store.kahadb.JournalCommand v;
org.apache.activemq.store.kahadb.AbstractKahaDBStore v;
org.apache.activemq.util.DataByteArrayOutputStream v;
int v, v, v;
org.apache.activemq.store.kahadb.data.KahaEntryType v;
org.apache.activemq.util.ByteSequence v;
v := @this: org.apache.activemq.store.kahadb.AbstractKahaDBStore;
v := @parameter: org.apache.activemq.store.kahadb.JournalCommand;
v = interfaceinvoke v.<org.apache.activemq.store.kahadb.JournalCommand: int serializedSizeFramed()>();
v = new org.apache.activemq.util.DataByteArrayOutputStream;
v = v + 1;
specialinvoke v.<org.apache.activemq.util.DataByteArrayOutputStream: void <init>(int)>(v);
v = interfaceinvoke v.<org.apache.activemq.store.kahadb.JournalCommand: org.apache.activemq.store.kahadb.data.KahaEntryType type()>();
v = virtualinvoke v.<org.apache.activemq.store.kahadb.data.KahaEntryType: int getNumber()>();
virtualinvoke v.<org.apache.activemq.util.DataByteArrayOutputStream: void writeByte(int)>(v);
interfaceinvoke v.<org.apache.activemq.store.kahadb.JournalCommand: void writeFramed(java.io.OutputStream)>(v);
v = virtualinvoke v.<org.apache.activemq.util.DataByteArrayOutputStream: org.apache.activemq.util.ByteSequence toByteSequence()>();
return v;
}
protected org.apache.activemq.store.kahadb.disk.page.PageFile createPageFile()
{
org.apache.activemq.store.kahadb.AbstractKahaDBStore v;
java.io.File v;
int v, v;
float v;
java.lang.String v;
org.apache.activemq.store.kahadb.disk.page.PageFile v;
boolean v, v, v, v, v;
v := @this: org.apache.activemq.store.kahadb.AbstractKahaDBStore;
v = new org.apache.activemq.store.kahadb.disk.page.PageFile;
v = virtualinvoke v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: java.io.File getDirectory()>();
v = virtualinvoke v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: java.lang.String getPageFileName()>();
specialinvoke v.<org.apache.activemq.store.kahadb.disk.page.PageFile: void <init>(java.io.File,java.lang.String)>(v, v);
v = virtualinvoke v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: boolean isEnableIndexWriteAsync()>();
virtualinvoke v.<org.apache.activemq.store.kahadb.disk.page.PageFile: void setEnableWriteThread(boolean)>(v);
v = virtualinvoke v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: int getIndexWriteBatchSize()>();
virtualinvoke v.<org.apache.activemq.store.kahadb.disk.page.PageFile: void setWriteBatchSize(int)>(v);
v = virtualinvoke v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: int getIndexCacheSize()>();
virtualinvoke v.<org.apache.activemq.store.kahadb.disk.page.PageFile: void setPageCacheSize(int)>(v);
v = virtualinvoke v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: boolean isUseIndexLFRUEviction()>();
virtualinvoke v.<org.apache.activemq.store.kahadb.disk.page.PageFile: void setUseLFRUEviction(boolean)>(v);
v = virtualinvoke v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: float getIndexLFUEvictionFactor()>();
virtualinvoke v.<org.apache.activemq.store.kahadb.disk.page.PageFile: void setLFUEvictionFactor(float)>(v);
v = virtualinvoke v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: boolean isEnableIndexDiskSyncs()>();
virtualinvoke v.<org.apache.activemq.store.kahadb.disk.page.PageFile: void setEnableDiskSyncs(boolean)>(v);
v = virtualinvoke v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: boolean isEnableIndexRecoveryFile()>();
virtualinvoke v.<org.apache.activemq.store.kahadb.disk.page.PageFile: void setEnableRecoveryFile(boolean)>(v);
v = virtualinvoke v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: boolean isEnableIndexPageCaching()>();
virtualinvoke v.<org.apache.activemq.store.kahadb.disk.page.PageFile: void setEnablePageCaching(boolean)>(v);
return v;
}
protected org.apache.activemq.store.kahadb.disk.journal.Journal createJournal() throws java.io.IOException
{
org.apache.activemq.store.kahadb.AbstractKahaDBStore v;
java.io.File v, v, v, v;
java.util.concurrent.atomic.AtomicLong v;
int v, v;
boolean v, v, v, v, v, v;
org.apache.activemq.store.kahadb.disk.journal.Journal v;
v := @this: org.apache.activemq.store.kahadb.AbstractKahaDBStore;
v = new org.apache.activemq.store.kahadb.disk.journal.Journal;
specialinvoke v.<org.apache.activemq.store.kahadb.disk.journal.Journal: void <init>()>();
v = virtualinvoke v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: java.io.File getDirectory()>();
virtualinvoke v.<org.apache.activemq.store.kahadb.disk.journal.Journal: void setDirectory(java.io.File)>(v);
v = virtualinvoke v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: int getJournalMaxFileLength()>();
virtualinvoke v.<org.apache.activemq.store.kahadb.disk.journal.Journal: void setMaxFileLength(int)>(v);
v = virtualinvoke v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: boolean isCheckForCorruptJournalFiles()>();
virtualinvoke v.<org.apache.activemq.store.kahadb.disk.journal.Journal: void setCheckForCorruptionOnStartup(boolean)>(v);
v = virtualinvoke v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: boolean isChecksumJournalFiles()>();
if v != 0 goto label;
v = virtualinvoke v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: boolean isCheckForCorruptJournalFiles()>();
if v == 0 goto label;
label:
v = 1;
goto label;
label:
v = 0;
label:
virtualinvoke v.<org.apache.activemq.store.kahadb.disk.journal.Journal: void setChecksum(boolean)>(v);
v = virtualinvoke v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: int getJournalMaxWriteBatchSize()>();
virtualinvoke v.<org.apache.activemq.store.kahadb.disk.journal.Journal: void setWriteBatchSize(int)>(v);
v = virtualinvoke v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: boolean isArchiveDataLogs()>();
virtualinvoke v.<org.apache.activemq.store.kahadb.disk.journal.Journal: void setArchiveDataLogs(boolean)>(v);
v = v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: java.util.concurrent.atomic.AtomicLong journalSize>;
virtualinvoke v.<org.apache.activemq.store.kahadb.disk.journal.Journal: void setSizeAccumulator(java.util.concurrent.atomic.AtomicLong)>(v);
v = virtualinvoke v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: boolean isEnableJournalDiskSyncs()>();
virtualinvoke v.<org.apache.activemq.store.kahadb.disk.journal.Journal: void setEnableAsyncDiskSync(boolean)>(v);
v = virtualinvoke v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: java.io.File getDirectoryArchive()>();
if v == null goto label;
v = virtualinvoke v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: java.io.File getDirectoryArchive()>();
staticinvoke <org.apache.activemq.util.IOHelper: void mkdirs(java.io.File)>(v);
v = virtualinvoke v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: java.io.File getDirectoryArchive()>();
virtualinvoke v.<org.apache.activemq.store.kahadb.disk.journal.Journal: void setDirectoryArchive(java.io.File)>(v);
label:
return v;
}
protected void startCheckpoint()
{
java.lang.Throwable v;
long v, v;
org.apache.activemq.store.kahadb.AbstractKahaDBStore$2 v;
byte v, v;
java.lang.Thread v, v, v, v;
java.lang.String v, v;
boolean v, v, v;
org.slf4j.Logger v, v;
org.apache.activemq.store.kahadb.AbstractKahaDBStore v;
java.lang.Object v;
v := @this: org.apache.activemq.store.kahadb.AbstractKahaDBStore;
v = v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: long checkpointInterval>;
v = v cmp 0L;
if v != 0 goto label;
v = v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: long cleanupInterval>;
v = v cmp 0L;
if v != 0 goto label;
v = <org.apache.activemq.store.kahadb.AbstractKahaDBStore: org.slf4j.Logger LOG>;
v = virtualinvoke v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: boolean getCleanupOnStop()>();
if v == 0 goto label;
v = "shutdown/";
goto label;
label:
v = "";
label:
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[])>("periodic checkpoint/cleanup disabled, will occur on clean \u0001restart");
interfaceinvoke v.<org.slf4j.Logger: void info(java.lang.String)>(v);
return;
label:
v = v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: java.lang.Object checkpointThreadLock>;
entermonitor v;
label:
v = 0;
v = v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: java.lang.Thread checkpointThread>;
if v != null goto label;
v = 1;
goto label;
label:
v = v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: java.lang.Thread checkpointThread>;
v = virtualinvoke v.<java.lang.Thread: boolean isAlive()>();
if v != 0 goto label;
v = 1;
v = <org.apache.activemq.store.kahadb.AbstractKahaDBStore: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void info(java.lang.String)>("KahaDB: Recovering checkpoint thread after death");
label:
if v == 0 goto label;
v = new org.apache.activemq.store.kahadb.AbstractKahaDBStore$2;
specialinvoke v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore$2: void <init>(org.apache.activemq.store.kahadb.AbstractKahaDBStore,java.lang.String)>(v, "ActiveMQ Journal Checkpoint Worker");
v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: java.lang.Thread checkpointThread> = v;
v = v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: java.lang.Thread checkpointThread>;
virtualinvoke v.<java.lang.Thread: void setDaemon(boolean)>(1);
v = v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: java.lang.Thread checkpointThread>;
virtualinvoke v.<java.lang.Thread: void start()>();
label:
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
return;
catch java.lang.Throwable from label to label with label;
}
protected void checkpointCleanup(boolean) throws java.io.IOException
{
java.lang.Throwable v;
java.util.concurrent.atomic.AtomicBoolean v;
long v, v, v, v;
java.util.concurrent.locks.ReentrantReadWriteLock v, v, v, v;
java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock v, v, v, v;
byte v;
java.lang.Long v;
int v, v;
boolean v, v;
org.slf4j.Logger v;
org.apache.activemq.store.kahadb.AbstractKahaDBStore v;
v := @this: org.apache.activemq.store.kahadb.AbstractKahaDBStore;
v := @parameter: boolean;
v = v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: java.util.concurrent.locks.ReentrantReadWriteLock indexLock>;
v = virtualinvoke v.<java.util.concurrent.locks.ReentrantReadWriteLock: java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock writeLock()>();
virtualinvoke v.<java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock: void lock()>();
label:
v = staticinvoke <java.lang.System: long currentTimeMillis()>();
v = v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: java.util.concurrent.atomic.AtomicBoolean opened>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: boolean get()>();
if v != 0 goto label;
label:
v = v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: java.util.concurrent.locks.ReentrantReadWriteLock indexLock>;
v = virtualinvoke v.<java.util.concurrent.locks.ReentrantReadWriteLock: java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock writeLock()>();
virtualinvoke v.<java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock: void unlock()>();
return;
label:
v = v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: java.util.concurrent.locks.ReentrantReadWriteLock indexLock>;
v = virtualinvoke v.<java.util.concurrent.locks.ReentrantReadWriteLock: java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock writeLock()>();
virtualinvoke v.<java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock: void unlock()>();
goto label;
label:
v := @caughtexception;
v = v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: java.util.concurrent.locks.ReentrantReadWriteLock indexLock>;
v = virtualinvoke v.<java.util.concurrent.locks.ReentrantReadWriteLock: java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock writeLock()>();
virtualinvoke v.<java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock: void unlock()>();
throw v;
label:
virtualinvoke v.<org.apache.activemq.store.kahadb.AbstractKahaDBStore: void checkpointUpdate(boolean)>(v);
v = staticinvoke <java.lang.System: long currentTimeMillis()>();
v = <org.apache.activemq.store.kahadb.AbstractKahaDBStore: int LOG_SLOW_ACCESS_TIME>;
if v <= 0 goto label;
v = v - v;
v = <org.apache.activemq.store.kahadb.AbstractKahaDBStore: int LOG_SLOW_ACCESS_TIME>;
v = v cmp v;
if v <= 0 goto label;
v = <org.apache.activemq.store.kahadb.AbstractKahaDBStore: org.slf4j.Logger LOG>;
v = v - v;
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
interfaceinvoke v.<org.slf4j.Logger: void info(java.lang.String,java.lang.Object)>("Slow KahaDB access: cleanup took {}", v);
label:
return;
catch java.lang.Throwable from label to label with label;
}
static void <clinit>()
{
int v;
org.slf4j.Logger v;
java.lang.Integer v;
v = staticinvoke <org.slf4j.LoggerFactory: org.slf4j.Logger getLogger(java.lang.Class)>(class "Lorg/apache/activemq/store/kahadb/AbstractKahaDBStore;");
<org.apache.activemq.store.kahadb.AbstractKahaDBStore: org.slf4j.Logger LOG> = v;
v = staticinvoke <java.lang.Integer: java.lang.Integer getInteger(java.lang.String,int)>("org.apache.activemq.store.kahadb.LOG_SLOW_ACCESS_TIME", 0);
v = virtualinvoke v.<java.lang.Integer: int intValue()>();
<org.apache.activemq.store.kahadb.AbstractKahaDBStore: int LOG_SLOW_ACCESS_TIME> = v;
return;
}
}