mirror of https://github.com/apache/activemq.git
AMQ-6377: Storing JournalSyncStrategy as an enum
Switching MessageDatabase to store JournalSyncStrategy as its enum value
instead of String to avoid the performance penalty of comparing Strings
everytime isEnableJournalDiskSyncs() is called which currently happens
on every write.
(cherry picked from commit 0d824a8e68
)
This commit is contained in:
parent
7e3f344ea7
commit
e124f1db69
|
@ -52,6 +52,7 @@ import org.apache.activemq.store.TransactionStore;
|
|||
import org.apache.activemq.store.kahadb.data.KahaLocalTransactionId;
|
||||
import org.apache.activemq.store.kahadb.data.KahaTransactionInfo;
|
||||
import org.apache.activemq.store.kahadb.data.KahaXATransactionId;
|
||||
import org.apache.activemq.store.kahadb.disk.journal.Journal.JournalDiskSyncStrategy;
|
||||
import org.apache.activemq.usage.SystemUsage;
|
||||
import org.apache.activemq.util.ServiceStopper;
|
||||
|
||||
|
@ -461,6 +462,10 @@ public class KahaDBPersistenceAdapter extends LockableServiceSupport implements
|
|||
return letter.getJournalDiskSyncStrategy();
|
||||
}
|
||||
|
||||
public JournalDiskSyncStrategy getJournalDiskSyncStrategyEnum() {
|
||||
return letter.getJournalDiskSyncStrategyEnum();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param journalDiskSyncStrategy
|
||||
*/
|
||||
|
|
|
@ -254,7 +254,7 @@ public abstract class MessageDatabase extends ServiceSupport implements BrokerSe
|
|||
protected ScheduledExecutorService scheduler;
|
||||
private final Object schedulerLock = new Object();
|
||||
|
||||
protected String journalDiskSyncStrategy = JournalDiskSyncStrategy.ALWAYS.name();
|
||||
protected JournalDiskSyncStrategy journalDiskSyncStrategy = JournalDiskSyncStrategy.ALWAYS;
|
||||
protected boolean archiveDataLogs;
|
||||
protected File directoryArchive;
|
||||
protected AtomicLong journalSize = new AtomicLong(0);
|
||||
|
@ -3141,8 +3141,7 @@ public abstract class MessageDatabase extends ServiceSupport implements BrokerSe
|
|||
manager.setPreallocationScope(Journal.PreallocationScope.valueOf(preallocationScope.trim().toUpperCase()));
|
||||
manager.setPreallocationStrategy(
|
||||
Journal.PreallocationStrategy.valueOf(preallocationStrategy.trim().toUpperCase()));
|
||||
manager.setJournalDiskSyncStrategy(
|
||||
Journal.JournalDiskSyncStrategy.valueOf(journalDiskSyncStrategy.trim().toUpperCase()));
|
||||
manager.setJournalDiskSyncStrategy(journalDiskSyncStrategy);
|
||||
if (getDirectoryArchive() != null) {
|
||||
IOHelper.mkdirs(getDirectoryArchive());
|
||||
manager.setDirectoryArchive(getDirectoryArchive());
|
||||
|
@ -3200,13 +3199,12 @@ public abstract class MessageDatabase extends ServiceSupport implements BrokerSe
|
|||
}
|
||||
|
||||
/**
|
||||
* @deprecated use {@link #getJournalDiskSyncStrategy} instead
|
||||
* @deprecated use {@link #getJournalDiskSyncStrategyEnum} or {@link #getJournalDiskSyncStrategy} instead
|
||||
* @return
|
||||
*/
|
||||
@Deprecated
|
||||
public boolean isEnableJournalDiskSyncs() {
|
||||
return journalDiskSyncStrategy != null && JournalDiskSyncStrategy.ALWAYS.name().equals(
|
||||
journalDiskSyncStrategy.trim().toUpperCase());
|
||||
return journalDiskSyncStrategy == JournalDiskSyncStrategy.ALWAYS;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -3216,18 +3214,22 @@ public abstract class MessageDatabase extends ServiceSupport implements BrokerSe
|
|||
@Deprecated
|
||||
public void setEnableJournalDiskSyncs(boolean syncWrites) {
|
||||
if (syncWrites) {
|
||||
journalDiskSyncStrategy = JournalDiskSyncStrategy.ALWAYS.name();
|
||||
journalDiskSyncStrategy = JournalDiskSyncStrategy.ALWAYS;
|
||||
} else {
|
||||
journalDiskSyncStrategy = JournalDiskSyncStrategy.NEVER.name();
|
||||
journalDiskSyncStrategy = JournalDiskSyncStrategy.NEVER;
|
||||
}
|
||||
}
|
||||
|
||||
public String getJournalDiskSyncStrategy() {
|
||||
public JournalDiskSyncStrategy getJournalDiskSyncStrategyEnum() {
|
||||
return journalDiskSyncStrategy;
|
||||
}
|
||||
|
||||
public String getJournalDiskSyncStrategy() {
|
||||
return journalDiskSyncStrategy.name();
|
||||
}
|
||||
|
||||
public void setJournalDiskSyncStrategy(String journalDiskSyncStrategy) {
|
||||
this.journalDiskSyncStrategy = journalDiskSyncStrategy;
|
||||
this.journalDiskSyncStrategy = JournalDiskSyncStrategy.valueOf(journalDiskSyncStrategy.trim().toUpperCase());
|
||||
}
|
||||
|
||||
public long getJournalDiskSyncInterval() {
|
||||
|
|
|
@ -67,6 +67,7 @@ public class JournalSyncStrategyTest {
|
|||
assertTrue(journal.isJournalDiskSyncPeriodic());
|
||||
assertFalse(store.isEnableJournalDiskSyncs());
|
||||
assertEquals(store.getJournalDiskSyncStrategy(), JournalDiskSyncStrategy.PERIODIC.name());
|
||||
assertEquals(store.getJournalDiskSyncStrategyEnum(), JournalDiskSyncStrategy.PERIODIC);
|
||||
assertEquals(store.getJournal().getJournalDiskSyncStrategy(), JournalDiskSyncStrategy.PERIODIC);
|
||||
assertEquals(store.getJournalDiskSyncInterval(), 800);
|
||||
|
||||
|
@ -87,6 +88,7 @@ public class JournalSyncStrategyTest {
|
|||
assertFalse(store.getJournal().isJournalDiskSyncPeriodic());
|
||||
assertTrue(store.isEnableJournalDiskSyncs());
|
||||
assertEquals(store.getJournalDiskSyncStrategy(), JournalDiskSyncStrategy.ALWAYS.name());
|
||||
assertEquals(store.getJournalDiskSyncStrategyEnum(), JournalDiskSyncStrategy.ALWAYS);
|
||||
assertEquals(store.getJournal().getJournalDiskSyncStrategy(), JournalDiskSyncStrategy.ALWAYS);
|
||||
|
||||
MessageStore messageStore = store.createQueueMessageStore(new ActiveMQQueue("test"));
|
||||
|
@ -101,6 +103,7 @@ public class JournalSyncStrategyTest {
|
|||
assertFalse(store.getJournal().isJournalDiskSyncPeriodic());
|
||||
assertFalse(store.isEnableJournalDiskSyncs());
|
||||
assertEquals(store.getJournalDiskSyncStrategy(), JournalDiskSyncStrategy.NEVER.name());
|
||||
assertEquals(store.getJournalDiskSyncStrategyEnum(), JournalDiskSyncStrategy.NEVER);
|
||||
assertEquals(store.getJournal().getJournalDiskSyncStrategy(), JournalDiskSyncStrategy.NEVER);
|
||||
|
||||
MessageStore messageStore = store.createQueueMessageStore(new ActiveMQQueue("test"));
|
||||
|
|
Loading…
Reference in New Issue