stronger destroy semantics used in most places, esp in tests
diff --git a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/ConfigYamlTest.java b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/ConfigYamlTest.java
index 9ede4a1..fcbccfd 100644
--- a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/ConfigYamlTest.java
+++ b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/ConfigYamlTest.java
@@ -137,7 +137,7 @@
// error, loop wasn't interrupted or detected
LOG.warn("Timeout elapsed, destroying items; usage: "+
((LocalManagementContext)mgmt()).getGarbageCollector().getUsageString());
- Entities.destroy(app);
+ Entities.destroy(app, true);
} catch (RuntimeInterruptedException e) {
// expected on normal execution; clear the interrupted flag to prevent ugly further warnings being logged
Thread.interrupted();
diff --git a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/DynamicMultiGroupYamlRebindTest.java b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/DynamicMultiGroupYamlRebindTest.java
index 2e00269..35c7762 100644
--- a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/DynamicMultiGroupYamlRebindTest.java
+++ b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/DynamicMultiGroupYamlRebindTest.java
@@ -56,7 +56,7 @@
Enricher enricher1 = app.enrichers().iterator().next();
// Destroy application before first rebind.
- Entities.destroy(app);
+ Entities.destroy(app, true);
// check that a subsequent change doesn't cause it to re-create
mgmt().getRebindManager().getChangeListener().onChanged(enricher1);
@@ -100,7 +100,7 @@
Assert.assertEquals(state.getEntities().size(), 10);
// Destroy application after first rebind.
- Entities.destroy(appRebind);
+ Entities.destroy(appRebind, true);
// Rebind, expect no apps.
rebind(RebindOptions.create().terminateOrigManagementContext(true));
diff --git a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/WindowsYamlLiveTest.java b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/WindowsYamlLiveTest.java
index a84822a..7994365 100644
--- a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/WindowsYamlLiveTest.java
+++ b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/WindowsYamlLiveTest.java
@@ -134,7 +134,7 @@
@Override
public void tearDown() {
try {
- if (app != null) Entities.destroy(app);
+ if (app != null) Entities.destroy(app, true);
} catch (Throwable t) {
log.error("Caught exception in tearDown method", t);
} finally {
diff --git a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogMakeOsgiBundleTest.java b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogMakeOsgiBundleTest.java
index f2bd709..122c4a0 100644
--- a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogMakeOsgiBundleTest.java
+++ b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogMakeOsgiBundleTest.java
@@ -82,7 +82,7 @@
@AfterMethod(alwaysRun = true)
public void cleanUpButKeepMgmt() throws Exception {
for (Application app: MutableList.copyOf(mgmt().getApplications())) {
- Entities.destroy(app);
+ Entities.destroy(app, true);
}
for (Bundle b: bundlesToRemove) {
((ManagementContextInternal)mgmt()).getOsgiManager().get().uninstallUploadedBundle(
diff --git a/core/src/main/java/org/apache/brooklyn/core/entity/Entities.java b/core/src/main/java/org/apache/brooklyn/core/entity/Entities.java
index a0a36ef..5ace40d 100644
--- a/core/src/main/java/org/apache/brooklyn/core/entity/Entities.java
+++ b/core/src/main/java/org/apache/brooklyn/core/entity/Entities.java
@@ -721,8 +721,11 @@
/** Same as {@link #destroy(Entity)} but catching all errors. */
public static void destroyCatching(Entity entity) {
+ destroyCatching(entity, false);
+ }
+ public static void destroyCatching(Entity entity, boolean unmanageOnErrors) {
try {
- destroy(entity);
+ destroy(entity, unmanageOnErrors);
} catch (Exception e) {
log.warn("ERROR destroying "+entity+" (ignoring): "+e, e);
Exceptions.propagateIfFatal(e);
@@ -777,7 +780,7 @@
public void run() {
log.debug("destroying app "+app+" (managed? "+isManaged(app)+"; mgmt is "+mgmt+")");
try {
- destroy(app);
+ destroy(app, true);
log.debug("destroyed app "+app+"; mgmt now "+mgmt);
} catch (Exception e) {
log.warn("problems destroying app "+app+" (mgmt now "+mgmt+", will rethrow at least one exception): "+e);
diff --git a/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/BrooklynShutdownHooks.java b/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/BrooklynShutdownHooks.java
index 2e4e0c6..eeb3c67 100644
--- a/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/BrooklynShutdownHooks.java
+++ b/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/BrooklynShutdownHooks.java
@@ -78,7 +78,7 @@
semaphore.release();
try {
log.warn("Call to invokeStopOnShutdown for "+entity+" while system already shutting down; invoking stop now and throwing exception");
- Entities.destroy(entity);
+ Entities.destroy(entity, false);
throw new IllegalStateException("Call to invokeStopOnShutdown for "+entity+" while system already shutting down");
} catch (Exception e) {
throw new IllegalStateException("Call to invokeStopOnShutdown for "+entity+" while system already shutting down, had error: "+e, e);
@@ -229,7 +229,7 @@
final Entity entity = entityToStop;
if (!Entities.isManaged(entity)) continue;
Task<Object> t = Tasks.builder().dynamic(false).displayName("destroying "+entity).body(new Runnable() {
- @Override public void run() { Entities.destroy(entity); }
+ @Override public void run() { Entities.destroy(entity, false); }
}).build();
stops.add( ((EntityInternal)entity).getExecutionContext().submit(t) );
}
diff --git a/core/src/test/java/org/apache/brooklyn/core/effector/EffectorTaskTest.java b/core/src/test/java/org/apache/brooklyn/core/effector/EffectorTaskTest.java
index faa1fad..db83f0d 100644
--- a/core/src/test/java/org/apache/brooklyn/core/effector/EffectorTaskTest.java
+++ b/core/src/test/java/org/apache/brooklyn/core/effector/EffectorTaskTest.java
@@ -435,7 +435,7 @@
// Execution completed in the child's ExecutionContext, but still queued as a secondary.
// Destroy the child entity so that no subsequent tasks can be executed in its context.
- Entities.destroy(child);
+ Entities.destroy(child, true);
} finally {
// Let STALL complete
synchronized(lock) {
diff --git a/core/src/test/java/org/apache/brooklyn/core/mgmt/internal/EntityExecutionManagerTest.java b/core/src/test/java/org/apache/brooklyn/core/mgmt/internal/EntityExecutionManagerTest.java
index 2fe2432..5465e49 100644
--- a/core/src/test/java/org/apache/brooklyn/core/mgmt/internal/EntityExecutionManagerTest.java
+++ b/core/src/test/java/org/apache/brooklyn/core/mgmt/internal/EntityExecutionManagerTest.java
@@ -364,7 +364,7 @@
Set<Object> tags = app.getManagementContext().getExecutionManager().getTaskTags();
assertTrue(tags.contains(BrooklynTaskTags.tagForContextEntity(e)), "tags="+tags);
- Entities.destroy(e);
+ Entities.destroy(e, true);
forceGc();
Asserts.succeedsEventually(() -> {
@@ -392,7 +392,7 @@
TestEntity entity = app.createAndManageChild(EntitySpec.create(TestEntity.class));
entity.sensors().set(TestEntity.NAME, "bob");
entity.invoke(TestEntity.MY_EFFECTOR, ImmutableMap.<String,Object>of()).get();
- Entities.destroy(entity);
+ Entities.destroy(entity, true);
Time.sleep(Duration.ONE_SECOND);
forceGc();
Collection<Task<?>> t2 = em.getAllTasks();
diff --git a/core/src/test/java/org/apache/brooklyn/core/mgmt/persist/BrooklynMementoPersisterTestFixture.java b/core/src/test/java/org/apache/brooklyn/core/mgmt/persist/BrooklynMementoPersisterTestFixture.java
index 6f63bab..51f00a1 100644
--- a/core/src/test/java/org/apache/brooklyn/core/mgmt/persist/BrooklynMementoPersisterTestFixture.java
+++ b/core/src/test/java/org/apache/brooklyn/core/mgmt/persist/BrooklynMementoPersisterTestFixture.java
@@ -133,7 +133,7 @@
@Test
public void testDeleteAndLoadMemento() throws Exception {
- Entities.destroy(entity);
+ Entities.destroy(entity, true);
BrooklynMemento reloadedMemento = loadMemento();
@@ -142,7 +142,7 @@
assertEquals(Iterables.getOnlyElement(reloadedMemento.getLocationIds()), location.getId());
// Destroying the app should also unmanage its owned location, and adjuncts
- Entities.destroy(app);
+ Entities.destroy(app, true);
reloadedMemento = loadMemento();
assertFalse(Iterables.contains(reloadedMemento.getEntityIds(), entity.getId()));
diff --git a/launcher/src/test/java/org/apache/brooklyn/launcher/blueprints/AbstractBlueprintTest.java b/launcher/src/test/java/org/apache/brooklyn/launcher/blueprints/AbstractBlueprintTest.java
index 96aef9b..fda8433 100644
--- a/launcher/src/test/java/org/apache/brooklyn/launcher/blueprints/AbstractBlueprintTest.java
+++ b/launcher/src/test/java/org/apache/brooklyn/launcher/blueprints/AbstractBlueprintTest.java
@@ -149,7 +149,7 @@
for (Application app: mgmt.getApplications()) {
LOG.debug("destroying app "+app+" (managed? "+Entities.isManaged(app)+"; mgmt is "+mgmt+")");
try {
- Entities.destroy(app);
+ Entities.destroy(app, true);
LOG.debug("destroyed app "+app+"; mgmt now "+mgmt);
} catch (Exception e) {
LOG.error("problems destroying app "+app, e);
diff --git a/policy/src/test/java/org/apache/brooklyn/policy/autoscaling/AutoScalerPolicyPoolSizeTest.java b/policy/src/test/java/org/apache/brooklyn/policy/autoscaling/AutoScalerPolicyPoolSizeTest.java
index 16325d2..222877e 100644
--- a/policy/src/test/java/org/apache/brooklyn/policy/autoscaling/AutoScalerPolicyPoolSizeTest.java
+++ b/policy/src/test/java/org/apache/brooklyn/policy/autoscaling/AutoScalerPolicyPoolSizeTest.java
@@ -93,7 +93,7 @@
EntityAsserts.assertAttributeEqualsEventually(cluster, TestCluster.GROUP_SIZE, CLUSTER_INIITIAL_SIZE);
// Simulate user expunging the entities manually
for (int i = 0; i < CLUSTER_MAX_SIZE - CLUSTER_MIN_SIZE; i++) {
- Entities.destroyCatching(cluster.getMembers().iterator().next());
+ Entities.destroyCatching(cluster.getMembers().iterator().next(), true);
}
EntityAsserts.assertAttributeEqualsEventually(cluster, TestSizeRecordingCluster.SIZE_HISTORY_RECORD_COUNT, 2);
Assert.assertEquals((int)cluster.getSizeHistory().get(0), CLUSTER_INIITIAL_SIZE);
diff --git a/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/util/BrooklynRestResourceUtils.java b/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/util/BrooklynRestResourceUtils.java
index 1ecf2d5..2e30ee2 100644
--- a/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/util/BrooklynRestResourceUtils.java
+++ b/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/util/BrooklynRestResourceUtils.java
@@ -481,7 +481,7 @@
@Override
public void run() {
if (release)
- Entities.destroy(entity);
+ Entities.destroy(entity, false);
else
mgmt.getEntityManager().unmanage(entity);
}
diff --git a/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/resources/ActivityRestTest.java b/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/resources/ActivityRestTest.java
index 6ab67a1..d14e326 100644
--- a/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/resources/ActivityRestTest.java
+++ b/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/resources/ActivityRestTest.java
@@ -103,7 +103,7 @@
@SuppressWarnings("deprecation")
protected void initEntity(int seed) {
if (entity != null && Entities.isManaged(entity)) {
- Entities.destroy(entity.getApplication());
+ Entities.destroy(entity.getApplication(), true);
}
CreationResult<BasicApplication, Void> app = EntityManagementUtils.createStarting(getManagementContext(),
diff --git a/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/resources/EffectorResourceTest.java b/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/resources/EffectorResourceTest.java
index 957f631..a8d3cdf 100644
--- a/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/resources/EffectorResourceTest.java
+++ b/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/resources/EffectorResourceTest.java
@@ -63,7 +63,7 @@
@Override
public void destroyMethod() throws Exception {
try {
- if (app != null) Entities.destroy(app);
+ if (app != null) Entities.destroy(app, true);
} finally {
super.destroyMethod();
}
diff --git a/software/base/src/test/java/org/apache/brooklyn/entity/machine/pool/AbstractServerPoolTest.java b/software/base/src/test/java/org/apache/brooklyn/entity/machine/pool/AbstractServerPoolTest.java
index 0da5a2e..70fa0c5 100644
--- a/software/base/src/test/java/org/apache/brooklyn/entity/machine/pool/AbstractServerPoolTest.java
+++ b/software/base/src/test/java/org/apache/brooklyn/entity/machine/pool/AbstractServerPoolTest.java
@@ -76,7 +76,7 @@
public void tearDown() throws Exception {
// Kills the apps before terminating the pool
for (TestApplication app : createdApps) {
- Entities.destroy(app);
+ Entities.destroy(app, true);
}
if (mgmt != null) {
Entities.destroyAll(mgmt);
diff --git a/software/base/src/test/java/org/apache/brooklyn/entity/software/base/SoftwareProcessStopsDuringStartJcloudsLiveTest.java b/software/base/src/test/java/org/apache/brooklyn/entity/software/base/SoftwareProcessStopsDuringStartJcloudsLiveTest.java
index 7839de2..36a3e5f 100644
--- a/software/base/src/test/java/org/apache/brooklyn/entity/software/base/SoftwareProcessStopsDuringStartJcloudsLiveTest.java
+++ b/software/base/src/test/java/org/apache/brooklyn/entity/software/base/SoftwareProcessStopsDuringStartJcloudsLiveTest.java
@@ -148,7 +148,7 @@
executeInLimitedTime(new Callable<Void>() {
@Override
public Void call() {
- Entities.destroy(app);
+ Entities.destroy(app, true);
return null;
}
}, Asserts.DEFAULT_LONG_TIMEOUT.toMilliseconds(), TimeUnit.MILLISECONDS);
@@ -169,7 +169,7 @@
* </ul>
*/
@Test(groups = {"Live"})
- public void testJclousMachineIsExpungedWhenStoppedDuringStart() throws Exception {
+ public void testJcloudsMachineIsExpungedWhenStoppedDuringStart() throws Exception {
Map<String,?> allFlags = ImmutableMap.<String,Object>builder()
.put("tags", ImmutableList.of(getClass().getName()))
.put(JcloudsLocation.IMAGE_ID.getName(), IMAGE_ID)
@@ -193,7 +193,7 @@
EntityAsserts.assertAttributeEqualsEventually(entity, AttributesInternal.INTERNAL_PROVISIONING_TASK_STATE, AttributesInternal.ProvisioningTaskState.RUNNING);
Stopwatch stopwatch = Stopwatch.createStarted();
- Entities.destroyCatching(app);
+ Entities.destroyCatching(app, true);
LOG.info("Time for expunging: {}", Duration.of(stopwatch));
NodeMetadata nodeMetadata = Iterables.getFirst(((AWSEC2ComputeService) jcloudsLocation.getComputeService()).listNodesDetailsMatching(new Predicate<ComputeMetadata>() {
diff --git a/software/base/src/test/java/org/apache/brooklyn/entity/software/base/VanillaWindowsProcessWinrmExitStatusLiveTest.java b/software/base/src/test/java/org/apache/brooklyn/entity/software/base/VanillaWindowsProcessWinrmExitStatusLiveTest.java
index b410449..fa38212 100644
--- a/software/base/src/test/java/org/apache/brooklyn/entity/software/base/VanillaWindowsProcessWinrmExitStatusLiveTest.java
+++ b/software/base/src/test/java/org/apache/brooklyn/entity/software/base/VanillaWindowsProcessWinrmExitStatusLiveTest.java
@@ -89,7 +89,7 @@
public void tearDown() throws Exception {
try {
try {
- if (app != null) Entities.destroy(app);
+ if (app != null) Entities.destroy(app, true);
} catch (Throwable t) {
LOG.error("Caught exception in tearDown method", t);
}
diff --git a/software/base/src/test/java/org/apache/brooklyn/entity/software/base/VanillaWindowsProcessWinrmStreamsLiveTest.java b/software/base/src/test/java/org/apache/brooklyn/entity/software/base/VanillaWindowsProcessWinrmStreamsLiveTest.java
index ec435b3..e1c6f9f 100644
--- a/software/base/src/test/java/org/apache/brooklyn/entity/software/base/VanillaWindowsProcessWinrmStreamsLiveTest.java
+++ b/software/base/src/test/java/org/apache/brooklyn/entity/software/base/VanillaWindowsProcessWinrmStreamsLiveTest.java
@@ -49,7 +49,7 @@
@BeforeClass(alwaysRun = true)
public void setUpClass() throws Exception {
super.setUp();
- if (app != null) Entities.destroy(app);
+ if (app != null) Entities.destroy(app, true);
location = WindowsTestFixture.setUpWindowsLocation(mgmt);
machine = location.obtain(ImmutableMap.of());
@@ -76,7 +76,7 @@
@Override
public void tearDown() throws Exception {
try {
- if (app != null) Entities.destroy(app);
+ if (app != null) Entities.destroy(app, true);
} catch (Throwable t) {
LOG.error("Caught exception in tearDown method", t);
} finally {
diff --git a/software/base/src/test/java/org/apache/brooklyn/entity/software/base/test/qa/performance/ScalabilityPerformanceTest.java b/software/base/src/test/java/org/apache/brooklyn/entity/software/base/test/qa/performance/ScalabilityPerformanceTest.java
index a3b064e..3b6e003 100644
--- a/software/base/src/test/java/org/apache/brooklyn/entity/software/base/test/qa/performance/ScalabilityPerformanceTest.java
+++ b/software/base/src/test/java/org/apache/brooklyn/entity/software/base/test/qa/performance/ScalabilityPerformanceTest.java
@@ -237,7 +237,7 @@
ManagementContext mgmt = app.getManagementContext();
LOG.debug("destroying app "+app+" (managed? "+Entities.isManaged(app)+"; mgmt is "+mgmt+")");
try {
- Entities.destroy(app);
+ Entities.destroy(app, true);
LOG.debug("destroyed app "+app+"; mgmt now "+mgmt);
} catch (Exception e) {
LOG.warn("problems destroying app "+app+" (mgmt now "+mgmt+", will rethrow at least one exception): "+e);