mirror of
https://github.com/apache/activemq.git
synced 2025-02-28 05:09:07 +00:00
git-svn-id: https://svn.apache.org/repos/asf/activemq/trunk@687287 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
43880af18a
commit
67d64862f8
@ -130,6 +130,8 @@ public class AMQPersistenceAdapter implements PersistenceAdapter, UsageListener,
|
||||
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 @@ public class AMQPersistenceAdapter implements PersistenceAdapter, UsageListener,
|
||||
// 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 class AMQPersistenceAdapter implements PersistenceAdapter, UsageListener,
|
||||
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) {
|
||||
|
@ -52,6 +52,9 @@ public class AMQPersistenceAdapterFactory implements PersistenceAdapterFactory {
|
||||
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 @@ public class AMQPersistenceAdapterFactory implements PersistenceAdapterFactory {
|
||||
result.setIndexMaxBinSize(getIndexMaxBinSize());
|
||||
result.setIndexLoadFactor(getIndexLoadFactor());
|
||||
result.setMaxReferenceFileLength(getMaxReferenceFileLength());
|
||||
result.setForceRecoverReferenceStore(isForceRecoverReferenceStore());
|
||||
result.setRecoverReferenceStore(isRecoverReferenceStore());
|
||||
return result;
|
||||
}
|
||||
|
||||
@ -286,4 +291,46 @@ public class AMQPersistenceAdapterFactory implements PersistenceAdapterFactory {
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user