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);