Closes #617 Persist management plane ID
Some considerations on where to place the planeId initialisation: * BrooklynMemento (RebindManager). `planeId` will be available only after rebind, so it will be available to MASTER nodes only (and potentially HOT_STANDBY) * ManagementPlaneSyncRecord (HighAvailabilityManager). Used only when HA is enabled. When HA is disabled HighAvailabilityManager is not initialised, doesn't access the store at all, no records are getting written. * Separate init step in BrooklynLauncher. Early in the lifecycle so users need not to care too much when they are allowed to read it. On the other hand it's not encapsulated so need to touch all places that use persistence (i.e. launcher, copy-state, backup). Can only read from the store at this point, write access is not enabled yet. If HA is configured store writes are enabled only after becoming master. Writing to the store in this case would be risky, even if we know that it's a clean state (no planeId file). Better leave only the master update the store. Because of the above I decided to go for a mixed approach: * persist the `planeId` immediately after starting persistence (i.e. MASTER when HA) and repeat hourly * don't overwrite persisted store `planeId` if different * init `planeId` as part of the rebind sequence; if no `planeId` exists in store generate one * init `planeId` when reading the management records so we have it initialized for non-`MASTER` nodes as well; don't generate one if not in persisted store Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/eb4992e2 Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/eb4992e2 Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/eb4992e2 Branch: refs/heads/master Commit: eb4992e28741ed01ee08cd3e484a76714481c0ee Parents: 745d6de 4405909 Author: Geoff Macartney <geoff.macart...@cloudsoftcorp.com> Authored: Thu Apr 20 09:47:45 2017 +0100 Committer: Geoff Macartney <geoff.macart...@cloudsoftcorp.com> Committed: Thu Apr 20 09:47:45 2017 +0100 ---------------------------------------------------------------------- .../brooklyn/api/mgmt/ManagementContext.java | 33 ++- .../api/mgmt/ha/ManagementNodeSyncRecord.java | 2 - .../api/mgmt/ha/ManagementPlaneSyncRecord.java | 2 +- .../rebind/PersistenceExceptionHandler.java | 3 + .../mgmt/rebind/mementos/BrooklynMemento.java | 2 + .../mementos/BrooklynMementoManifest.java | 2 + .../mementos/BrooklynMementoPersister.java | 2 + .../rebind/mementos/BrooklynMementoRawData.java | 19 +- .../mgmt/ha/HighAvailabilityManagerImpl.java | 20 +- ...ntPlaneSyncRecordPersisterToObjectStore.java | 6 + .../ha/dto/ManagementPlaneSyncRecordImpl.java | 11 + .../mgmt/internal/LocalManagementContext.java | 28 ++- .../NonDeploymentManagementContext.java | 7 + .../BrooklynMementoPersisterToObjectStore.java | 38 ++- .../mgmt/persist/BrooklynPersistenceUtils.java | 1 + .../rebind/ActivePartialRebindIteration.java | 5 + .../rebind/PeriodicDeltaChangeListener.java | 49 +++- .../rebind/PersistenceExceptionHandlerImpl.java | 10 +- .../core/mgmt/rebind/PersisterDeltaImpl.java | 7 + .../core/mgmt/rebind/RebindIteration.java | 15 ++ .../core/mgmt/rebind/RebindManagerImpl.java | 19 +- .../mgmt/rebind/dto/BrooklynMementoImpl.java | 13 + .../rebind/dto/BrooklynMementoManifestImpl.java | 15 +- .../mgmt/rebind/dto/MutableBrooklynMemento.java | 11 + .../rebind/transformer/CompoundTransformer.java | 1 + .../impl/DeleteOrphanedStateTransformer.java | 1 + .../core/server/BrooklynServerPaths.java | 2 +- .../ha/ImmutableManagementPlaneSyncRecord.java | 23 +- .../ha/MutableManagementPlaneSyncRecord.java | 12 +- .../core/mgmt/rebind/ManagementPlaneIdTest.java | 244 +++++++++++++++++++ .../core/mgmt/rebind/RebindTestUtils.java | 39 ++- .../transformer/CompoundTransformerTest.java | 1 + .../brooklyn/launcher/common/BasicLauncher.java | 2 +- .../AbstractCleanOrphanedStateTest.java | 1 + .../brooklyn/launcher/BrooklynLauncherTest.java | 2 +- 35 files changed, 606 insertions(+), 42 deletions(-) ----------------------------------------------------------------------