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


Reply via email to