You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by tb...@apache.org on 2018/06/01 10:00:47 UTC
[1/5] brooklyn-server git commit: Persisting entity: don’t persist its adjuncts every time
Repository: brooklyn-server
Updated Branches:
refs/heads/master 36cb70d2d -> 6f093c71f
Persisting entity: don’t persist its adjuncts every time
Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/492ebd58
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/492ebd58
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/492ebd58
Branch: refs/heads/master
Commit: 492ebd58552b8f691ee22e0dd76e535fea56ef2c
Parents: ff38a5c
Author: Aled Sage <al...@gmail.com>
Authored: Wed May 23 10:47:24 2018 +0100
Committer: Aled Sage <al...@gmail.com>
Committed: Thu May 24 12:24:13 2018 +0100
----------------------------------------------------------------------
.../core/BrooklynFeatureEnablement.java | 12 ++++++
.../mgmt/internal/EntityChangeListener.java | 1 +
.../rebind/PeriodicDeltaChangeListener.java | 39 +++++++++++++++++++-
3 files changed, 51 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/492ebd58/core/src/main/java/org/apache/brooklyn/core/BrooklynFeatureEnablement.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/BrooklynFeatureEnablement.java b/core/src/main/java/org/apache/brooklyn/core/BrooklynFeatureEnablement.java
index 939a15d..8c142d8 100644
--- a/core/src/main/java/org/apache/brooklyn/core/BrooklynFeatureEnablement.java
+++ b/core/src/main/java/org/apache/brooklyn/core/BrooklynFeatureEnablement.java
@@ -59,6 +59,17 @@ public class BrooklynFeatureEnablement {
public static final String FEATURE_FEED_PERSISTENCE_PROPERTY = FEATURE_PROPERTY_PREFIX+".feedPersistence";
+ /**
+ * When persisting an entity that changes, whether to persist its adjuncts and locations
+ * (i.e. its enrichers, policies, feeds and locations).
+ *
+ * This was previously the default behaviour, which meant that (legacy) java-based Brooklyn objects
+ * (e.g. entities, locations, policies, enrichers or feeds) could get away with bad practices and
+ * still be persisted. For example, they could change 'state' without telling the listener, and hope
+ * that the entity they were attached to would soon persist (thus piggy-backing off it).
+ */
+ public static final String FEATURE_REFERENCED_OBJECTS_PERSISTENCE_PROPERTY = FEATURE_PROPERTY_PREFIX+".referencedObjectsPersistence";
+
/** whether feeds are automatically registered when set on entities, so that they are persisted */
public static final String FEATURE_FEED_REGISTRATION_PROPERTY = FEATURE_PROPERTY_PREFIX+".feedRegistration";
@@ -150,6 +161,7 @@ public class BrooklynFeatureEnablement {
setDefault(FEATURE_FEED_REGISTRATION_PROPERTY, false);
setDefault(FEATURE_BUNDLE_PERSISTENCE_PROPERTY, true);
setDefault(FEATURE_CATALOG_PERSISTENCE_PROPERTY, true);
+ setDefault(FEATURE_REFERENCED_OBJECTS_PERSISTENCE_PROPERTY, false);
setDefault(FEATURE_DEFAULT_STANDBY_IS_HOT_PROPERTY, false);
setDefault(FEATURE_PERSIST_ENTITY_SPEC_AS_SUPPLIER, true);
setDefault(FEATURE_RENAME_THREADS, false);
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/492ebd58/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/EntityChangeListener.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/EntityChangeListener.java b/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/EntityChangeListener.java
index b7f53a4..a0f5d73 100644
--- a/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/EntityChangeListener.java
+++ b/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/EntityChangeListener.java
@@ -29,6 +29,7 @@ public interface EntityChangeListener {
// TODO for testing only!
public static final EntityChangeListener NOOP = new EntityChangeListener() {
+ @Override public String toString() { return "EntityChangeListener.NOOP"; }
@Override public void onChanged() {}
@Override public void onAttributeChanged(AttributeSensor<?> attribute) {}
@Override public void onConfigChanged(ConfigKey<?> key) {}
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/492ebd58/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/PeriodicDeltaChangeListener.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/PeriodicDeltaChangeListener.java b/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/PeriodicDeltaChangeListener.java
index e4b2d7d..349f47f 100644
--- a/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/PeriodicDeltaChangeListener.java
+++ b/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/PeriodicDeltaChangeListener.java
@@ -195,6 +195,7 @@ public class PeriodicDeltaChangeListener implements ChangeListener {
private final boolean persistPoliciesEnabled;
private final boolean persistEnrichersEnabled;
private final boolean persistFeedsEnabled;
+ private final boolean persistReferencedObjectsEnabled;
private final Semaphore persistingMutex = new Semaphore(1);
private final Object startStopMutex = new Object();
@@ -222,6 +223,7 @@ public class PeriodicDeltaChangeListener implements ChangeListener {
this.persistPoliciesEnabled = BrooklynFeatureEnablement.isEnabled(BrooklynFeatureEnablement.FEATURE_POLICY_PERSISTENCE_PROPERTY);
this.persistEnrichersEnabled = BrooklynFeatureEnablement.isEnabled(BrooklynFeatureEnablement.FEATURE_ENRICHER_PERSISTENCE_PROPERTY);
this.persistFeedsEnabled = BrooklynFeatureEnablement.isEnabled(BrooklynFeatureEnablement.FEATURE_FEED_PERSISTENCE_PROPERTY);
+ this.persistReferencedObjectsEnabled = BrooklynFeatureEnablement.isEnabled(BrooklynFeatureEnablement.FEATURE_REFERENCED_OBJECTS_PERSISTENCE_PROPERTY);
}
public void start() {
@@ -355,6 +357,11 @@ public class PeriodicDeltaChangeListener implements ChangeListener {
return state == ListenerState.STOPPING || state == ListenerState.STOPPED || executionContext.isShutdown();
}
+ /**
+ * @deprecated since 1.0.0; its use is enabled via BrooklynFeatureEnablement.FEATURE_REFERENCED_OBJECTS_PERSISTENCE_PROPERTY,
+ * to preserve backwards compatibility for legacy implementations of entities, policies, etc.
+ */
+ @Deprecated
private void addReferencedObjects(DeltaCollector deltaCollector) {
MutableSet<BrooklynObject> referencedObjects = MutableSet.of();
@@ -443,7 +450,9 @@ public class PeriodicDeltaChangeListener implements ChangeListener {
limitedCountString(prevDeltaCollector.entities), limitedCountString(prevDeltaCollector.locations), limitedCountString(prevDeltaCollector.policies), limitedCountString(prevDeltaCollector.enrichers), limitedCountString(prevDeltaCollector.catalogItems), limitedCountString(prevDeltaCollector.bundles),
limitedCountString(prevDeltaCollector.removedEntityIds), limitedCountString(prevDeltaCollector.removedLocationIds), limitedCountString(prevDeltaCollector.removedPolicyIds), limitedCountString(prevDeltaCollector.removedEnricherIds), limitedCountString(prevDeltaCollector.removedCatalogItemIds), limitedCountString(prevDeltaCollector.removedBundleIds)});
- addReferencedObjects(prevDeltaCollector);
+ if (persistReferencedObjectsEnabled) {
+ addReferencedObjects(prevDeltaCollector);
+ }
if (LOG.isTraceEnabled()) LOG.trace("Checkpointing delta of memento with references: "
+ "updating {} entities, {} locations, {} policies, {} enrichers, {} catalog items, {} bundles; "
@@ -527,7 +536,35 @@ public class PeriodicDeltaChangeListener implements ChangeListener {
public synchronized void onManaged(BrooklynObject instance) {
if (LOG.isTraceEnabled()) LOG.trace("onManaged: {}", instance);
onChanged(instance);
+ addReferencedObjects(instance);
+ }
+
+ private void addReferencedObjects(BrooklynObject instance) {
+ if (!(instance instanceof Entity)) return;
+ Entity entity = (Entity) instance;
+
+ MutableSet<BrooklynObject> referencedObjects = MutableSet.of();
+
+ // collect references
+ for (Location location : entity.getLocations()) {
+ Collection<Location> findLocationsInHierarchy = TreeUtils.findLocationsInHierarchy(location);
+ referencedObjects.addAll(findLocationsInHierarchy);
+ }
+ if (persistPoliciesEnabled) {
+ referencedObjects.addAll(entity.policies());
+ }
+ if (persistEnrichersEnabled) {
+ referencedObjects.addAll(entity.enrichers());
+ }
+ if (persistFeedsEnabled) {
+ referencedObjects.addAll(((EntityInternal)entity).feeds().getFeeds());
+ }
+
+ for (BrooklynObject ref : referencedObjects) {
+ deltaCollector.addIfNotRemoved(ref);
+ }
}
+
@Override
public synchronized void onUnmanaged(BrooklynObject instance) {
[5/5] brooklyn-server git commit: This closes #964
Posted by tb...@apache.org.
This closes #964
Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/6f093c71
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/6f093c71
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/6f093c71
Branch: refs/heads/master
Commit: 6f093c71f9d43c9832e5ecabd4ee0639a348422f
Parents: 36cb70d 49ee11d
Author: Thomas Bouron <th...@cloudsoftcorp.com>
Authored: Fri Jun 1 10:59:33 2018 +0100
Committer: Thomas Bouron <th...@cloudsoftcorp.com>
Committed: Fri Jun 1 10:59:33 2018 +0100
----------------------------------------------------------------------
.../CatalogOsgiVersionMoreEntityRebindTest.java | 5 +-
.../brooklyn/catalog/CatalogYamlRebindTest.java | 43 ++++++++++++++++-
.../core/BrooklynFeatureEnablement.java | 12 +++++
.../mgmt/internal/EntityChangeListener.java | 1 +
.../rebind/PeriodicDeltaChangeListener.java | 51 +++++++++++++++++---
.../core/mgmt/rebind/RebindFailuresTest.java | 6 +--
.../rebind/RebindLocalhostLocationTest.java | 10 ++--
.../RebindManagerExceptionHandlerTest.java | 7 ++-
.../core/mgmt/rebind/RebindOptions.java | 6 ++-
9 files changed, 119 insertions(+), 22 deletions(-)
----------------------------------------------------------------------
[4/5] brooklyn-server git commit: PR #964: Incorporate review comments
Posted by tb...@apache.org.
PR #964: Incorporate review comments
Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/49ee11d6
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/49ee11d6
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/49ee11d6
Branch: refs/heads/master
Commit: 49ee11d6c90620cf935330249b1c6d5ea9351d27
Parents: 492ebd5
Author: Aled Sage <al...@gmail.com>
Authored: Tue May 29 20:30:09 2018 +0100
Committer: Aled Sage <al...@gmail.com>
Committed: Tue May 29 20:30:09 2018 +0100
----------------------------------------------------------------------
.../core/BrooklynFeatureEnablement.java | 4 ++--
.../rebind/PeriodicDeltaChangeListener.java | 24 ++++++++++----------
2 files changed, 14 insertions(+), 14 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/49ee11d6/core/src/main/java/org/apache/brooklyn/core/BrooklynFeatureEnablement.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/BrooklynFeatureEnablement.java b/core/src/main/java/org/apache/brooklyn/core/BrooklynFeatureEnablement.java
index 8c142d8..2ff62d3 100644
--- a/core/src/main/java/org/apache/brooklyn/core/BrooklynFeatureEnablement.java
+++ b/core/src/main/java/org/apache/brooklyn/core/BrooklynFeatureEnablement.java
@@ -68,7 +68,7 @@ public class BrooklynFeatureEnablement {
* still be persisted. For example, they could change 'state' without telling the listener, and hope
* that the entity they were attached to would soon persist (thus piggy-backing off it).
*/
- public static final String FEATURE_REFERENCED_OBJECTS_PERSISTENCE_PROPERTY = FEATURE_PROPERTY_PREFIX+".referencedObjectsPersistence";
+ public static final String FEATURE_REFERENCED_OBJECTS_REPERSISTENCE_PROPERTY = FEATURE_PROPERTY_PREFIX+".referencedObjectsRepersistence";
/** whether feeds are automatically registered when set on entities, so that they are persisted */
public static final String FEATURE_FEED_REGISTRATION_PROPERTY = FEATURE_PROPERTY_PREFIX+".feedRegistration";
@@ -161,7 +161,7 @@ public class BrooklynFeatureEnablement {
setDefault(FEATURE_FEED_REGISTRATION_PROPERTY, false);
setDefault(FEATURE_BUNDLE_PERSISTENCE_PROPERTY, true);
setDefault(FEATURE_CATALOG_PERSISTENCE_PROPERTY, true);
- setDefault(FEATURE_REFERENCED_OBJECTS_PERSISTENCE_PROPERTY, false);
+ setDefault(FEATURE_REFERENCED_OBJECTS_REPERSISTENCE_PROPERTY, false);
setDefault(FEATURE_DEFAULT_STANDBY_IS_HOT_PROPERTY, false);
setDefault(FEATURE_PERSIST_ENTITY_SPEC_AS_SUPPLIER, true);
setDefault(FEATURE_RENAME_THREADS, false);
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/49ee11d6/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/PeriodicDeltaChangeListener.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/PeriodicDeltaChangeListener.java b/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/PeriodicDeltaChangeListener.java
index 349f47f..56da64d 100644
--- a/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/PeriodicDeltaChangeListener.java
+++ b/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/PeriodicDeltaChangeListener.java
@@ -195,7 +195,7 @@ public class PeriodicDeltaChangeListener implements ChangeListener {
private final boolean persistPoliciesEnabled;
private final boolean persistEnrichersEnabled;
private final boolean persistFeedsEnabled;
- private final boolean persistReferencedObjectsEnabled;
+ private final boolean rePersistReferencedObjectsEnabled;
private final Semaphore persistingMutex = new Semaphore(1);
private final Object startStopMutex = new Object();
@@ -223,7 +223,7 @@ public class PeriodicDeltaChangeListener implements ChangeListener {
this.persistPoliciesEnabled = BrooklynFeatureEnablement.isEnabled(BrooklynFeatureEnablement.FEATURE_POLICY_PERSISTENCE_PROPERTY);
this.persistEnrichersEnabled = BrooklynFeatureEnablement.isEnabled(BrooklynFeatureEnablement.FEATURE_ENRICHER_PERSISTENCE_PROPERTY);
this.persistFeedsEnabled = BrooklynFeatureEnablement.isEnabled(BrooklynFeatureEnablement.FEATURE_FEED_PERSISTENCE_PROPERTY);
- this.persistReferencedObjectsEnabled = BrooklynFeatureEnablement.isEnabled(BrooklynFeatureEnablement.FEATURE_REFERENCED_OBJECTS_PERSISTENCE_PROPERTY);
+ this.rePersistReferencedObjectsEnabled = BrooklynFeatureEnablement.isEnabled(BrooklynFeatureEnablement.FEATURE_REFERENCED_OBJECTS_REPERSISTENCE_PROPERTY);
}
public void start() {
@@ -450,16 +450,16 @@ public class PeriodicDeltaChangeListener implements ChangeListener {
limitedCountString(prevDeltaCollector.entities), limitedCountString(prevDeltaCollector.locations), limitedCountString(prevDeltaCollector.policies), limitedCountString(prevDeltaCollector.enrichers), limitedCountString(prevDeltaCollector.catalogItems), limitedCountString(prevDeltaCollector.bundles),
limitedCountString(prevDeltaCollector.removedEntityIds), limitedCountString(prevDeltaCollector.removedLocationIds), limitedCountString(prevDeltaCollector.removedPolicyIds), limitedCountString(prevDeltaCollector.removedEnricherIds), limitedCountString(prevDeltaCollector.removedCatalogItemIds), limitedCountString(prevDeltaCollector.removedBundleIds)});
- if (persistReferencedObjectsEnabled) {
+ if (rePersistReferencedObjectsEnabled) {
addReferencedObjects(prevDeltaCollector);
- }
- if (LOG.isTraceEnabled()) LOG.trace("Checkpointing delta of memento with references: "
- + "updating {} entities, {} locations, {} policies, {} enrichers, {} catalog items, {} bundles; "
- + "removing {} entities, {} locations, {} policies, {} enrichers, {} catalog items, {} bundles",
- new Object[] {
- prevDeltaCollector.entities.size(), prevDeltaCollector.locations.size(), prevDeltaCollector.policies.size(), prevDeltaCollector.enrichers.size(), prevDeltaCollector.catalogItems.size(), prevDeltaCollector.bundles.size(),
- prevDeltaCollector.removedEntityIds.size(), prevDeltaCollector.removedLocationIds.size(), prevDeltaCollector.removedPolicyIds.size(), prevDeltaCollector.removedEnricherIds.size(), prevDeltaCollector.removedCatalogItemIds.size(), prevDeltaCollector.removedBundleIds.size()});
+ if (LOG.isTraceEnabled()) LOG.trace("Checkpointing delta of memento with references: "
+ + "updating {} entities, {} locations, {} policies, {} enrichers, {} catalog items, {} bundles; "
+ + "removing {} entities, {} locations, {} policies, {} enrichers, {} catalog items, {} bundles",
+ new Object[] {
+ prevDeltaCollector.entities.size(), prevDeltaCollector.locations.size(), prevDeltaCollector.policies.size(), prevDeltaCollector.enrichers.size(), prevDeltaCollector.catalogItems.size(), prevDeltaCollector.bundles.size(),
+ prevDeltaCollector.removedEntityIds.size(), prevDeltaCollector.removedLocationIds.size(), prevDeltaCollector.removedPolicyIds.size(), prevDeltaCollector.removedEnricherIds.size(), prevDeltaCollector.removedCatalogItemIds.size(), prevDeltaCollector.removedBundleIds.size()});
+ }
// Generate mementos for everything that has changed in this time period
if (prevDeltaCollector.isEmpty()) {
@@ -536,10 +536,10 @@ public class PeriodicDeltaChangeListener implements ChangeListener {
public synchronized void onManaged(BrooklynObject instance) {
if (LOG.isTraceEnabled()) LOG.trace("onManaged: {}", instance);
onChanged(instance);
- addReferencedObjects(instance);
+ addReferencedObjectsForInitialPersist(instance);
}
- private void addReferencedObjects(BrooklynObject instance) {
+ private void addReferencedObjectsForInitialPersist(BrooklynObject instance) {
if (!(instance instanceof Entity)) return;
Entity entity = (Entity) instance;
[2/5] brooklyn-server git commit: Fix integration test in
RebindLocalhostLocationTest
Posted by tb...@apache.org.
Fix integration test in RebindLocalhostLocationTest
(See the existing TODO in the code)
Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/ff38a5c8
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/ff38a5c8
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/ff38a5c8
Branch: refs/heads/master
Commit: ff38a5c80c0d77b81316623d749b76bf3dd1a78e
Parents: 9539ccf
Author: Aled Sage <al...@gmail.com>
Authored: Wed May 23 10:46:21 2018 +0100
Committer: Aled Sage <al...@gmail.com>
Committed: Thu May 24 12:24:13 2018 +0100
----------------------------------------------------------------------
.../core/mgmt/rebind/RebindLocalhostLocationTest.java | 10 ++++------
1 file changed, 4 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/ff38a5c8/core/src/test/java/org/apache/brooklyn/core/mgmt/rebind/RebindLocalhostLocationTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/brooklyn/core/mgmt/rebind/RebindLocalhostLocationTest.java b/core/src/test/java/org/apache/brooklyn/core/mgmt/rebind/RebindLocalhostLocationTest.java
index 381ec48..5bc6cc2 100644
--- a/core/src/test/java/org/apache/brooklyn/core/mgmt/rebind/RebindLocalhostLocationTest.java
+++ b/core/src/test/java/org/apache/brooklyn/core/mgmt/rebind/RebindLocalhostLocationTest.java
@@ -29,7 +29,6 @@ import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import org.apache.brooklyn.api.location.LocationSpec;
import org.apache.brooklyn.api.mgmt.rebind.mementos.BrooklynMementoManifest;
-import org.apache.brooklyn.core.test.entity.TestApplication;
import org.apache.brooklyn.location.localhost.LocalhostMachineProvisioningLocation;
import org.apache.brooklyn.location.ssh.SshMachineLocation;
@@ -87,19 +86,18 @@ public class RebindLocalhostLocationTest extends RebindTestFixtureWithApp {
testMachineUsableAfterRebind();
newApp.stop();
- switchOriginalToNewManagementContext();
-
// TODO how should we automatically unmanage these?
// (in this test, locations are created manually, so probably should be destroyed manually,
// but in most cases we should probably unmanage the location as part of the entity;
// could keep the entity ID only in the location, then safely reverse-check usages?)
// see related non-integration test in RebindEntityTest
- origManagementContext.getLocationManager().unmanage(origLoc);
+ newManagementContext.getLocationManager().unmanage(origLoc);
- RebindTestUtils.waitForPersisted(origManagementContext);
+ RebindTestUtils.waitForPersisted(newManagementContext);
+
+ switchOriginalToNewManagementContext();
BrooklynMementoManifest mf = loadMementoManifest();
Assert.assertTrue(mf.getLocationIdToType().isEmpty(), "Expected no locations; had "+mf.getLocationIdToType());
}
-
}
[3/5] brooklyn-server git commit: Rebind tests: stricter (e.g. no
dangling-references)
Posted by tb...@apache.org.
Rebind tests: stricter (e.g. no dangling-references)
Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/9539ccf6
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/9539ccf6
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/9539ccf6
Branch: refs/heads/master
Commit: 9539ccf65fecf5abd944b371ee36fb5a265484e7
Parents: dedaffd
Author: Aled Sage <al...@gmail.com>
Authored: Wed May 23 10:45:33 2018 +0100
Committer: Aled Sage <al...@gmail.com>
Committed: Thu May 24 12:24:13 2018 +0100
----------------------------------------------------------------------
.../CatalogOsgiVersionMoreEntityRebindTest.java | 5 ++-
.../brooklyn/catalog/CatalogYamlRebindTest.java | 43 +++++++++++++++++++-
.../core/mgmt/rebind/RebindFailuresTest.java | 6 +--
.../RebindManagerExceptionHandlerTest.java | 7 +++-
.../core/mgmt/rebind/RebindOptions.java | 6 ++-
5 files changed, 58 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/9539ccf6/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogOsgiVersionMoreEntityRebindTest.java
----------------------------------------------------------------------
diff --git a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogOsgiVersionMoreEntityRebindTest.java b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogOsgiVersionMoreEntityRebindTest.java
index 835609d..61245df 100644
--- a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogOsgiVersionMoreEntityRebindTest.java
+++ b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogOsgiVersionMoreEntityRebindTest.java
@@ -40,6 +40,7 @@ import org.apache.brooklyn.core.entity.trait.Startable;
import org.apache.brooklyn.core.mgmt.ha.OsgiBundleInstallationResult;
import org.apache.brooklyn.core.mgmt.internal.ManagementContextInternal;
import org.apache.brooklyn.core.mgmt.osgi.OsgiVersionMoreEntityTest;
+import org.apache.brooklyn.core.mgmt.rebind.RebindOptions;
import org.apache.brooklyn.core.test.entity.TestEntity;
import org.apache.brooklyn.entity.group.DynamicCluster;
import org.apache.brooklyn.entity.stock.BasicApplication;
@@ -270,7 +271,9 @@ public class CatalogOsgiVersionMoreEntityRebindTest extends AbstractYamlRebindTe
}
try {
- StartableApplication app2 = rebind();
+ // Expect dangling reference(s) to catalog item from uninstalled bundle
+ RebindOptions rebindOptionsWithDefaultExceptionHandler = RebindOptions.create().exceptionHandler(null);
+ StartableApplication app2 = rebind(rebindOptionsWithDefaultExceptionHandler);
Asserts.shouldHaveFailedPreviously("Expected deployment to fail rebind; instead got "+app2);
} catch (Exception e) {
// should fail to rebind this entity
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/9539ccf6/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogYamlRebindTest.java
----------------------------------------------------------------------
diff --git a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogYamlRebindTest.java b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogYamlRebindTest.java
index 66e5663..7fec600 100644
--- a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogYamlRebindTest.java
+++ b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogYamlRebindTest.java
@@ -31,6 +31,7 @@ import java.util.List;
import org.apache.brooklyn.api.catalog.CatalogItem;
import org.apache.brooklyn.api.entity.Entity;
+import org.apache.brooklyn.api.mgmt.rebind.RebindManager.RebindFailureMode;
import org.apache.brooklyn.api.mgmt.rebind.mementos.BrooklynMementoPersister;
import org.apache.brooklyn.api.mgmt.rebind.mementos.BrooklynMementoRawData;
import org.apache.brooklyn.api.objs.BrooklynObjectType;
@@ -46,6 +47,7 @@ import org.apache.brooklyn.core.mgmt.persist.BrooklynMementoPersisterToObjectSto
import org.apache.brooklyn.core.mgmt.persist.PersistenceObjectStore;
import org.apache.brooklyn.core.mgmt.persist.PersistenceObjectStore.StoreObjectAccessor;
import org.apache.brooklyn.core.mgmt.rebind.RebindExceptionHandlerImpl;
+import org.apache.brooklyn.core.mgmt.rebind.RebindManagerImpl;
import org.apache.brooklyn.core.mgmt.rebind.RebindOptions;
import org.apache.brooklyn.core.mgmt.rebind.transformer.CompoundTransformer;
import org.apache.brooklyn.core.test.policy.TestEnricher;
@@ -53,6 +55,7 @@ import org.apache.brooklyn.core.test.policy.TestPolicy;
import org.apache.brooklyn.entity.stock.BasicEntity;
import org.apache.brooklyn.test.Asserts;
import org.apache.brooklyn.test.support.TestResourceUnavailableException;
+import org.apache.brooklyn.util.collections.QuorumCheck;
import org.apache.brooklyn.util.exceptions.Exceptions;
import org.apache.brooklyn.util.text.Strings;
import org.testng.annotations.AfterMethod;
@@ -140,14 +143,50 @@ public class CatalogYamlRebindTest extends AbstractYamlRebindTest {
@Test(dataProvider = "dataProvider")
public void testRebindWithCatalogAndApp(RebindWithCatalogTestMode mode, OsgiMode osgiMode) throws Exception {
- testRebindWithCatalogAndAppUsingOptions(mode, osgiMode, RebindOptions.create());
+ RebindOptions rebindOptions;
+ if (mode == RebindWithCatalogTestMode.DELETE_CATALOG || mode == RebindWithCatalogTestMode.REPLACE_CATALOG_WITH_NEWER_VERSION) {
+ // Don't be strict:
+ // - After deleting catalog item, expect dangling reference that pointed at it.
+ // - TODO For 'replace catalog', the dangling-ref check is done very early so those appear as 'dangling'.
+ // We subsequently switch the catalog id. Ideally we wouldn't count those as 'dangling' in the rebind check,
+ // if there is a newer version available.
+ rebindOptions = RebindOptions.create()
+ .exceptionHandler(RebindExceptionHandlerImpl.builder()
+ .strict()
+ .danglingRefFailureMode(RebindFailureMode.CONTINUE)
+ .danglingRefQuorumRequiredHealthy(RebindManagerImpl.DANGLING_REFERENCES_MIN_REQUIRED_HEALTHY.getDefaultValue())
+ .build());
+ } else {
+ rebindOptions = RebindOptions.create();
+ }
+ testRebindWithCatalogAndAppUsingOptions(mode, osgiMode, rebindOptions);
+ }
+
+ @Test
+ public void testRebindWithCatalogAndAppRebindCatalogItemIdsTemp() throws Exception {
+ testRebindWithCatalogAndAppRebindCatalogItemIds(RebindWithCatalogTestMode.REPLACE_CATALOG_WITH_NEWER_VERSION, OsgiMode.NONE);
}
// Re-run all the same tests as testRebindWithCatalogAndApp, but with the XML updated to mimic state
// persisted before <catalogItemIdSearchPath> was introduced.
@Test(dataProvider = "dataProvider")
public void testRebindWithCatalogAndAppRebindCatalogItemIds(RebindWithCatalogTestMode mode, OsgiMode osgiMode) throws Exception {
- final RebindOptions rebindOptions = RebindOptions.create();
+ RebindOptions rebindOptions;
+ if (mode == RebindWithCatalogTestMode.DELETE_CATALOG || mode == RebindWithCatalogTestMode.REPLACE_CATALOG_WITH_NEWER_VERSION) {
+ // Don't be strict:
+ // - After deleting catalog item, expect dangling reference that pointed at it.
+ // - TODO For 'replace catalog', the dangling-ref check is done very early so those appear as 'dangling'.
+ // We subsequently switch the catalog id. Ideally we wouldn't count those as 'dangling' in the rebind check,
+ // if there is a newer version available.
+ rebindOptions = RebindOptions.create()
+ .exceptionHandler(RebindExceptionHandlerImpl.builder()
+ .strict()
+ .danglingRefFailureMode(RebindFailureMode.CONTINUE)
+ .danglingRefQuorumRequiredHealthy(RebindManagerImpl.DANGLING_REFERENCES_MIN_REQUIRED_HEALTHY.getDefaultValue())
+ .build());
+ } else {
+ rebindOptions = RebindOptions.create();
+ }
applyCompoundStateTransformer(rebindOptions, CompoundTransformer.builder()
.xmlDeleteItem("//searchPath") // delete searchPath element
.xmlDeleteItem("//@*[contains(., 'searchPath')]") // delete any attributes that reference searchPath
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/9539ccf6/core/src/test/java/org/apache/brooklyn/core/mgmt/rebind/RebindFailuresTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/brooklyn/core/mgmt/rebind/RebindFailuresTest.java b/core/src/test/java/org/apache/brooklyn/core/mgmt/rebind/RebindFailuresTest.java
index f056a22..ce4de2c 100644
--- a/core/src/test/java/org/apache/brooklyn/core/mgmt/rebind/RebindFailuresTest.java
+++ b/core/src/test/java/org/apache/brooklyn/core/mgmt/rebind/RebindFailuresTest.java
@@ -71,7 +71,7 @@ public class RebindFailuresTest extends RebindTestFixtureWithApp {
.impl(MyEntityFailingImpl.class)
.configure(MyEntityFailingImpl.FAIL_ON_GENERATE_MEMENTO, true));
- newApp = rebind();
+ newApp = rebind(RebindOptions.create().defaultExceptionHandler());
MyEntity newE = (MyEntity) Iterables.find(newApp.getChildren(), EntityPredicates.idEqualTo(origE.getId()));
Optional<Entity> newFailingE = Iterables.tryFind(newApp.getChildren(), EntityPredicates.idEqualTo(origFailingE.getId()));
@@ -196,7 +196,7 @@ public class RebindFailuresTest extends RebindTestFixtureWithApp {
origApp.policies().add(PolicySpec.create(MyPolicyFailingImpl.class)
.configure(MyPolicyFailingImpl.FAIL_ON_REBIND, true));
- newApp = rebind();
+ newApp = rebind(RebindOptions.create().defaultExceptionHandler());
Optional<Policy> newPolicy = Iterables.tryFind(newApp.policies(), Predicates.instanceOf(MyPolicyFailingImpl.class));
assertFalse(newPolicy.isPresent(), "policy="+newPolicy);
@@ -207,7 +207,7 @@ public class RebindFailuresTest extends RebindTestFixtureWithApp {
origApp.enrichers().add(EnricherSpec.create(MyEnricherFailingImpl.class)
.configure(MyEnricherFailingImpl.FAIL_ON_REBIND, true));
- newApp = rebind();
+ newApp = rebind(RebindOptions.create().defaultExceptionHandler());
Optional<Enricher> newEnricher = Iterables.tryFind(newApp.enrichers(), Predicates.instanceOf(MyEnricherFailingImpl.class));
assertFalse(newEnricher.isPresent(), "enricher="+newEnricher);
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/9539ccf6/core/src/test/java/org/apache/brooklyn/core/mgmt/rebind/RebindManagerExceptionHandlerTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/brooklyn/core/mgmt/rebind/RebindManagerExceptionHandlerTest.java b/core/src/test/java/org/apache/brooklyn/core/mgmt/rebind/RebindManagerExceptionHandlerTest.java
index 33583fa..9a338f7 100644
--- a/core/src/test/java/org/apache/brooklyn/core/mgmt/rebind/RebindManagerExceptionHandlerTest.java
+++ b/core/src/test/java/org/apache/brooklyn/core/mgmt/rebind/RebindManagerExceptionHandlerTest.java
@@ -42,7 +42,8 @@ public class RebindManagerExceptionHandlerTest extends RebindTestFixtureWithApp
@Test
public void testAddConfigFailure() throws Throwable {
try {
- rebind();
+ RebindOptions rebindOptions = RebindOptions.create().defaultExceptionHandler();
+ rebind(rebindOptions);
Asserts.shouldHaveFailedPreviously();
} catch (Throwable e) {
Asserts.expectedFailureContainsIgnoreCase(e, "minRam=4", "keyWithMapValue");
@@ -51,7 +52,9 @@ public class RebindManagerExceptionHandlerTest extends RebindTestFixtureWithApp
@Test
public void testAddConfigContinue() throws Throwable {
- RebindOptions rebindOptions = RebindOptions.create().additionalProperties(ImmutableMap.of("rebind.failureMode.addConfig", "continue"));
+ RebindOptions rebindOptions = RebindOptions.create()
+ .defaultExceptionHandler()
+ .additionalProperties(ImmutableMap.of("rebind.failureMode.addConfig", "continue"));
TestApplication rebindedApp = rebind(rebindOptions);
EntityAsserts.assertConfigEquals(rebindedApp, TestEntity.CONF_MAP_THING, null);
}
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/9539ccf6/core/src/test/java/org/apache/brooklyn/core/mgmt/rebind/RebindOptions.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/brooklyn/core/mgmt/rebind/RebindOptions.java b/core/src/test/java/org/apache/brooklyn/core/mgmt/rebind/RebindOptions.java
index d4a4986..72e956f 100644
--- a/core/src/test/java/org/apache/brooklyn/core/mgmt/rebind/RebindOptions.java
+++ b/core/src/test/java/org/apache/brooklyn/core/mgmt/rebind/RebindOptions.java
@@ -40,7 +40,7 @@ public class RebindOptions {
public boolean checkSerializable;
public boolean terminateOrigManagementContext;
- public RebindExceptionHandler exceptionHandler;
+ public RebindExceptionHandler exceptionHandler = RebindExceptionHandlerImpl.builder().strict().build();
public ManagementContext origManagementContext;
public ManagementContext newManagementContext;
public File mementoDir;
@@ -80,6 +80,10 @@ public class RebindOptions {
this.terminateOrigManagementContext = val;
return this;
}
+ public RebindOptions defaultExceptionHandler() {
+ this.exceptionHandler = null;
+ return this;
+ }
public RebindOptions exceptionHandler(RebindExceptionHandler val) {
this.exceptionHandler = val;
return this;