You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by gt...@apache.org on 2011/10/21 12:15:26 UTC
svn commit: r1187280 - in /activemq/trunk/activemq-core/src:
main/java/org/apache/activemq/store/kahadb/
test/java/org/apache/activemq/store/
Author: gtully
Date: Fri Oct 21 10:15:26 2011
New Revision: 1187280
URL: http://svn.apache.org/viewvc?rev=1187280&view=rev
Log:
https://issues.apache.org/jira/browse/AMQ-3533 - mKahaDB, allow the directory of a filtered destination to be specified, such that destination journals can be split across disks. Fixed with test
Modified:
activemq/trunk/activemq-core/src/main/java/org/apache/activemq/store/kahadb/MessageDatabase.java
activemq/trunk/activemq-core/src/main/java/org/apache/activemq/store/kahadb/MultiKahaDBPersistenceAdapter.java
activemq/trunk/activemq-core/src/test/java/org/apache/activemq/store/StorePerDestinationTest.java
Modified: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/store/kahadb/MessageDatabase.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/store/kahadb/MessageDatabase.java?rev=1187280&r1=1187279&r2=1187280&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/main/java/org/apache/activemq/store/kahadb/MessageDatabase.java (original)
+++ activemq/trunk/activemq-core/src/main/java/org/apache/activemq/store/kahadb/MessageDatabase.java Fri Oct 21 10:15:26 2011
@@ -100,7 +100,7 @@ public abstract class MessageDatabase ex
public static final String PROPERTY_LOG_SLOW_ACCESS_TIME = "org.apache.activemq.store.kahadb.LOG_SLOW_ACCESS_TIME";
public static final int LOG_SLOW_ACCESS_TIME = Integer.parseInt(System.getProperty(PROPERTY_LOG_SLOW_ACCESS_TIME, "0"));
-
+ public static final File DEFAULT_DIRECTORY = new File("KahaDB");
protected static final Buffer UNMATCHED;
static {
UNMATCHED = new Buffer(new byte[]{});
@@ -202,7 +202,7 @@ public abstract class MessageDatabase ex
protected boolean failIfDatabaseIsLocked;
protected boolean deleteAllMessages;
- protected File directory = new File("KahaDB");
+ protected File directory = DEFAULT_DIRECTORY;
protected Thread checkpointThread;
protected boolean enableJournalDiskSyncs=true;
protected boolean archiveDataLogs;
Modified: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/store/kahadb/MultiKahaDBPersistenceAdapter.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/store/kahadb/MultiKahaDBPersistenceAdapter.java?rev=1187280&r1=1187279&r2=1187280&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/main/java/org/apache/activemq/store/kahadb/MultiKahaDBPersistenceAdapter.java (original)
+++ activemq/trunk/activemq-core/src/main/java/org/apache/activemq/store/kahadb/MultiKahaDBPersistenceAdapter.java Fri Oct 21 10:15:26 2011
@@ -103,7 +103,9 @@ public class MultiKahaDBPersistenceAdapt
if (filteredAdapter.getDestination() == null) {
filteredAdapter.setDestination(matchAll);
}
- adapter.setDirectory(new File(getDirectory(), nameFromDestinationFilter(filteredAdapter.getDestination())));
+ if (MessageDatabase.DEFAULT_DIRECTORY.equals(adapter.getDirectory())) {
+ adapter.setDirectory(new File(getDirectory(), nameFromDestinationFilter(filteredAdapter.getDestination())));
+ }
// need a per store factory that will put the store in the branch qualifier to disiambiguate xid mbeans
adapter.getStore().setTransactionIdTransformer(transactionIdTransformer);
Modified: activemq/trunk/activemq-core/src/test/java/org/apache/activemq/store/StorePerDestinationTest.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/test/java/org/apache/activemq/store/StorePerDestinationTest.java?rev=1187280&r1=1187279&r2=1187280&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/test/java/org/apache/activemq/store/StorePerDestinationTest.java (original)
+++ activemq/trunk/activemq-core/src/test/java/org/apache/activemq/store/StorePerDestinationTest.java Fri Oct 21 10:15:26 2011
@@ -16,6 +16,7 @@
*/
package org.apache.activemq.store;
+import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Vector;
@@ -176,6 +177,32 @@ public class StorePerDestinationTest {
}
@Test
+ public void testDirectoryDefault() throws Exception {
+ MultiKahaDBPersistenceAdapter multiKahaDBPersistenceAdapter = new MultiKahaDBPersistenceAdapter();
+ ArrayList<FilteredKahaDBPersistenceAdapter> adapters = new ArrayList<FilteredKahaDBPersistenceAdapter>();
+
+ FilteredKahaDBPersistenceAdapter otherFilteredKahaDBPersistenceAdapter =
+ new FilteredKahaDBPersistenceAdapter();
+ KahaDBPersistenceAdapter otherStore = createStore(false);
+ File someOtherDisk = new File("target" + File.separator + "someOtherDisk");
+ otherStore.setDirectory(someOtherDisk);
+ otherFilteredKahaDBPersistenceAdapter.setPersistenceAdapter(otherStore);
+ otherFilteredKahaDBPersistenceAdapter.setDestination(new ActiveMQQueue("Other"));
+ adapters.add(otherFilteredKahaDBPersistenceAdapter);
+
+ FilteredKahaDBPersistenceAdapter filteredKahaDBPersistenceAdapterDefault =
+ new FilteredKahaDBPersistenceAdapter();
+ KahaDBPersistenceAdapter storeDefault = createStore(false);
+ filteredKahaDBPersistenceAdapterDefault.setPersistenceAdapter(storeDefault);
+ adapters.add(filteredKahaDBPersistenceAdapterDefault);
+
+ multiKahaDBPersistenceAdapter.setFilteredPersistenceAdapters(adapters);
+
+ assertEquals(multiKahaDBPersistenceAdapter.getDirectory(), storeDefault.getDirectory().getParentFile());
+ assertEquals(someOtherDisk, otherStore.getDirectory());
+ }
+
+ @Test
public void testSlowFastDestinationsStoreUsage() throws Exception {
brokerService.start();
ExecutorService executorService = Executors.newCachedThreadPool();