You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by ri...@apache.org on 2014/06/10 02:15:25 UTC
[04/10] add HA brooklyn-manager persistence to object store,
and refactor previous to be cleaner
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/522d339f/locations/jclouds/src/test/java/brooklyn/entity/rebind/persister/jclouds/JcloudsObjectStoreAccessorWriterTest.java
----------------------------------------------------------------------
diff --git a/locations/jclouds/src/test/java/brooklyn/entity/rebind/persister/jclouds/JcloudsObjectStoreAccessorWriterTest.java b/locations/jclouds/src/test/java/brooklyn/entity/rebind/persister/jclouds/JcloudsObjectStoreAccessorWriterTest.java
new file mode 100644
index 0000000..b1bfbcf
--- /dev/null
+++ b/locations/jclouds/src/test/java/brooklyn/entity/rebind/persister/jclouds/JcloudsObjectStoreAccessorWriterTest.java
@@ -0,0 +1,47 @@
+package brooklyn.entity.rebind.persister.jclouds;
+
+import java.io.IOException;
+
+import org.testng.annotations.AfterMethod;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+
+import brooklyn.config.BrooklynProperties;
+import brooklyn.entity.basic.Entities;
+import brooklyn.entity.rebind.persister.PersistenceObjectStore.StoreObjectAccessor;
+import brooklyn.entity.rebind.persister.PersistMode;
+import brooklyn.entity.rebind.persister.PersistenceStoreObjectAccessorWriterTestFixture;
+import brooklyn.test.entity.LocalManagementContextForTests;
+import brooklyn.util.text.Identifiers;
+
+@Test(groups="Integration")
+public class JcloudsObjectStoreAccessorWriterTest extends PersistenceStoreObjectAccessorWriterTestFixture {
+
+ private JcloudsBlobStoreBasedObjectStore store;
+ private LocalManagementContextForTests mgmt;
+
+ @Override @BeforeMethod(alwaysRun=true)
+ public void setUp() throws Exception {
+ store = new JcloudsBlobStoreBasedObjectStore(
+ BlobStoreTest.PERSIST_TO_OBJECT_STORE_FOR_TEST_SPEC, BlobStoreTest.CONTAINER_PREFIX+"-"+Identifiers.makeRandomId(4));
+ store.prepareForUse(mgmt = new LocalManagementContextForTests(BrooklynProperties.Factory.newDefault()), PersistMode.CLEAN);
+ super.setUp();
+ }
+
+ @Override @AfterMethod(alwaysRun=true)
+ public void tearDown() throws Exception {
+ super.tearDown();
+ if (mgmt!=null) Entities.destroyAll(mgmt);
+ store.deleteCompletely();
+ }
+
+ protected StoreObjectAccessor newPersistenceStoreObjectAccessor() throws IOException {
+ return store.newAccessor("sample-file-"+Identifiers.makeRandomId(4));
+ }
+
+ protected int biggishSize() {
+ // bit smaller since it's actually uploading here!
+ return 10000;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/522d339f/usage/launcher/src/main/java/brooklyn/launcher/BrooklynLauncher.java
----------------------------------------------------------------------
diff --git a/usage/launcher/src/main/java/brooklyn/launcher/BrooklynLauncher.java b/usage/launcher/src/main/java/brooklyn/launcher/BrooklynLauncher.java
index e14d1cb..e261015 100644
--- a/usage/launcher/src/main/java/brooklyn/launcher/BrooklynLauncher.java
+++ b/usage/launcher/src/main/java/brooklyn/launcher/BrooklynLauncher.java
@@ -48,7 +48,7 @@ import brooklyn.management.ha.HighAvailabilityManager;
import brooklyn.management.ha.HighAvailabilityManagerImpl;
import brooklyn.management.ha.HighAvailabilityMode;
import brooklyn.management.ha.ManagementPlaneSyncRecordPersister;
-import brooklyn.management.ha.ManagementPlaneSyncRecordPersisterToMultiFile;
+import brooklyn.management.ha.ManagementPlaneSyncRecordPersisterToObjectStore;
import brooklyn.management.internal.LocalManagementContext;
import brooklyn.management.internal.ManagementContextInternal;
import brooklyn.rest.BrooklynWebConfig;
@@ -451,6 +451,7 @@ public class BrooklynLauncher {
protected void initPersistence() {
// Prepare the rebind directory, and initialise the RebindManager as required
+ PersistenceObjectStore objectStore = null;
if (persistMode == PersistMode.DISABLED) {
LOG.info("Persistence disabled");
} else {
@@ -458,7 +459,6 @@ public class BrooklynLauncher {
persistenceDir = new File( BrooklynServerConfig.getPersistenceDir(brooklynProperties) );
}
- PersistenceObjectStore objectStore;
if (persistenceLocation == null) {
objectStore = new FileBasedObjectStore(persistenceDir);
} else {
@@ -482,13 +482,14 @@ public class BrooklynLauncher {
if (highAvailabilityMode == HighAvailabilityMode.DISABLED) {
LOG.info("High availability disabled");
} else {
- File haDir = new File(persistenceDir, "plane");
+ if (objectStore==null)
+ throw new FatalConfigurationRuntimeException("Cannot run in HA mode when no persistence configured.");
+// File haDir = new File(persistenceDir, "plane");
HighAvailabilityManager haManager = managementContext.getHighAvailabilityManager();
- ManagementPlaneSyncRecordPersister persister = new ManagementPlaneSyncRecordPersisterToMultiFile(
- haDir,
- managementContext.getCatalog().getRootClassLoader(),
- managementContext.getManagementNodeId());
+ ManagementPlaneSyncRecordPersister persister =
+ new ManagementPlaneSyncRecordPersisterToObjectStore(managementContext,
+ objectStore, managementContext.getCatalog().getRootClassLoader());
((HighAvailabilityManagerImpl)haManager).setHeartbeatTimeout(haHeartbeatTimeout);
((HighAvailabilityManagerImpl)haManager).setPollPeriod(haHeartbeatPeriod);
haManager.setPersister(persister);