You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by ra...@apache.org on 2008/08/20 10:37:29 UTC
svn commit: r687287 - in
/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/store/amq:
AMQPersistenceAdapter.java AMQPersistenceAdapterFactory.java
Author: rajdavies
Date: Wed Aug 20 01:37:28 2008
New Revision: 687287
URL: http://svn.apache.org/viewvc?rev=687287&view=rev
Log:
fix for https://issues.apache.org/activemq/browse/AMQ-1901
Modified:
activemq/trunk/activemq-core/src/main/java/org/apache/activemq/store/amq/AMQPersistenceAdapter.java
activemq/trunk/activemq-core/src/main/java/org/apache/activemq/store/amq/AMQPersistenceAdapterFactory.java
Modified: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/store/amq/AMQPersistenceAdapter.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/store/amq/AMQPersistenceAdapter.java?rev=687287&r1=687286&r2=687287&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/main/java/org/apache/activemq/store/amq/AMQPersistenceAdapter.java (original)
+++ activemq/trunk/activemq-core/src/main/java/org/apache/activemq/store/amq/AMQPersistenceAdapter.java Wed Aug 20 01:37:28 2008
@@ -130,6 +130,8 @@
private boolean failIfJournalIsLocked;
private boolean lockLogged;
private boolean lockAquired;
+ private boolean recoverReferenceStore=true;
+ private boolean forceRecoverReferenceStore=false;
public String getBrokerName() {
return this.brokerName;
@@ -247,15 +249,19 @@
// store, but they still
// need to be recovered when the broker starts up.
- if (!referenceStoreAdapter.isStoreValid()) {
+ if (isForceRecoverReferenceStore()
+ || (isRecoverReferenceStore() && !referenceStoreAdapter
+ .isStoreValid())) {
LOG.warn("The ReferenceStore is not valid - recovering ...");
recover();
LOG.info("Finished recovering the ReferenceStore");
} else {
- Location location = writeTraceMessage("RECOVERED " + new Date(), true);
+ Location location = writeTraceMessage("RECOVERED " + new Date(),
+ true);
asyncDataManager.setMark(location, true);
// recover transactions
- getTransactionStore().setPreparedTransactions(referenceStoreAdapter.retrievePreparedState());
+ getTransactionStore().setPreparedTransactions(
+ referenceStoreAdapter.retrievePreparedState());
}
// Do a checkpoint periodically.
@@ -930,6 +936,34 @@
public void setDisableLocking(boolean disableLocking) {
this.disableLocking = disableLocking;
}
+
+ /**
+ * @return the recoverReferenceStore
+ */
+ public boolean isRecoverReferenceStore() {
+ return recoverReferenceStore;
+ }
+
+ /**
+ * @param recoverReferenceStore the recoverReferenceStore to set
+ */
+ public void setRecoverReferenceStore(boolean recoverReferenceStore) {
+ this.recoverReferenceStore = recoverReferenceStore;
+ }
+
+ /**
+ * @return the forceRecoverReferenceStore
+ */
+ public boolean isForceRecoverReferenceStore() {
+ return forceRecoverReferenceStore;
+ }
+
+ /**
+ * @param forceRecoverReferenceStore the forceRecoverReferenceStore to set
+ */
+ public void setForceRecoverReferenceStore(boolean forceRecoverReferenceStore) {
+ this.forceRecoverReferenceStore = forceRecoverReferenceStore;
+ }
protected void addInProgressDataFile(AMQMessageStore store,int dataFileId) {
Modified: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/store/amq/AMQPersistenceAdapterFactory.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/store/amq/AMQPersistenceAdapterFactory.java?rev=687287&r1=687286&r2=687287&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/main/java/org/apache/activemq/store/amq/AMQPersistenceAdapterFactory.java (original)
+++ activemq/trunk/activemq-core/src/main/java/org/apache/activemq/store/amq/AMQPersistenceAdapterFactory.java Wed Aug 20 01:37:28 2008
@@ -52,6 +52,9 @@
private int indexMaxBinSize = HashIndex.MAXIMUM_CAPACITY;
private int indexLoadFactor = HashIndex.DEFAULT_LOAD_FACTOR;
private int maxReferenceFileLength=DEFAULT_MAX_REFERNCE_FILE_LENGTH;
+ private boolean recoverReferenceStore=true;
+ private boolean forceRecoverReferenceStore=false;
+ private long checkpointInterval = 1000 * 20;
/**
@@ -75,6 +78,8 @@
result.setIndexMaxBinSize(getIndexMaxBinSize());
result.setIndexLoadFactor(getIndexLoadFactor());
result.setMaxReferenceFileLength(getMaxReferenceFileLength());
+ result.setForceRecoverReferenceStore(isForceRecoverReferenceStore());
+ result.setRecoverReferenceStore(isRecoverReferenceStore());
return result;
}
@@ -286,4 +291,46 @@
public void setMaxReferenceFileLength(int maxReferenceFileLength) {
this.maxReferenceFileLength = maxReferenceFileLength;
}
+
+ /**
+ * @return the recoverReferenceStore
+ */
+ public boolean isRecoverReferenceStore() {
+ return recoverReferenceStore;
+ }
+
+ /**
+ * @param recoverReferenceStore the recoverReferenceStore to set
+ */
+ public void setRecoverReferenceStore(boolean recoverReferenceStore) {
+ this.recoverReferenceStore = recoverReferenceStore;
+ }
+
+ /**
+ * @return the forceRecoverReferenceStore
+ */
+ public boolean isForceRecoverReferenceStore() {
+ return forceRecoverReferenceStore;
+ }
+
+ /**
+ * @param forceRecoverReferenceStore the forceRecoverReferenceStore to set
+ */
+ public void setForceRecoverReferenceStore(boolean forceRecoverReferenceStore) {
+ this.forceRecoverReferenceStore = forceRecoverReferenceStore;
+ }
+
+ /**
+ * @return the checkpointInterval
+ */
+ public long getCheckpointInterval() {
+ return checkpointInterval;
+ }
+
+ /**
+ * @param checkpointInterval the checkpointInterval to set
+ */
+ public void setCheckpointInterval(long checkpointInterval) {
+ this.checkpointInterval = checkpointInterval;
+ }
}