You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by he...@apache.org on 2021/09/14 21:56:38 UTC
[brooklyn-server] 19/27: tweak to cancelling and deleting tasks
This is an automated email from the ASF dual-hosted git repository.
heneveld pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/brooklyn-server.git
commit 6057b9c323b7d5e6a5638497a1925a75888598a4
Author: Alex Heneveld <al...@cloudsoftcorp.com>
AuthorDate: Tue Sep 14 14:57:23 2021 +0100
tweak to cancelling and deleting tasks
---
.../apache/brooklyn/api/mgmt/rebind/RebindManager.java | 3 +++
.../core/mgmt/ha/HighAvailabilityManagerImpl.java | 9 +++++----
.../mgmt/internal/NonDeploymentManagementContext.java | 5 +++++
.../brooklyn/core/mgmt/rebind/RebindIteration.java | 9 +--------
.../brooklyn/core/mgmt/rebind/RebindManagerImpl.java | 17 ++++++++---------
5 files changed, 22 insertions(+), 21 deletions(-)
diff --git a/api/src/main/java/org/apache/brooklyn/api/mgmt/rebind/RebindManager.java b/api/src/main/java/org/apache/brooklyn/api/mgmt/rebind/RebindManager.java
index d9d4422..79fc49f 100644
--- a/api/src/main/java/org/apache/brooklyn/api/mgmt/rebind/RebindManager.java
+++ b/api/src/main/java/org/apache/brooklyn/api/mgmt/rebind/RebindManager.java
@@ -97,6 +97,9 @@ public interface RebindManager {
* Interrupts any current activity and waits for it to cease. */
public void stopReadOnly();
+ @Beta
+ public void stopEntityTasksAndCleanUp(String reason, Duration delayBeforeCancelling, Duration delayBeforeAbandoning);
+
public boolean isReadOnly();
/**
diff --git a/core/src/main/java/org/apache/brooklyn/core/mgmt/ha/HighAvailabilityManagerImpl.java b/core/src/main/java/org/apache/brooklyn/core/mgmt/ha/HighAvailabilityManagerImpl.java
index d3ad012..9bbd00e 100644
--- a/core/src/main/java/org/apache/brooklyn/core/mgmt/ha/HighAvailabilityManagerImpl.java
+++ b/core/src/main/java/org/apache/brooklyn/core/mgmt/ha/HighAvailabilityManagerImpl.java
@@ -990,9 +990,6 @@ public class HighAvailabilityManagerImpl implements HighAvailabilityManager {
* (e.g. during the periodic rebind as hot_stanby we will not repeatedly clear the brooklyn-managed-bundles).
*/
protected void clearManagedItems(ManagementTransitionMode mode) {
- // note, tasks are cancelled prior to this, when coming from RO mode, via
- // RebindManagerImpl.stopEntityAndDoneTasksBeforeRebinding
-
// log this because it may be surprising, it is just HA transitions,
// not symmetric with usual single-node start
LOG.info("Clearing all managed items on transition to "+mode);
@@ -1022,7 +1019,11 @@ public class HighAvailabilityManagerImpl implements HighAvailabilityManager {
((BasicBrooklynTypeRegistry)managementContext.getTypeRegistry()).clear();
managementContext.getCatalogInitialization().clearBrooklynManagedBundles();
- ((LocalManagementContext)managementContext).getGarbageCollector().gcTasks();
+ // note, tasks are also cancelled prior to this when coming from RO mode, via
+ // RebindManagerImpl.stopReadOnly call to same method
+ managementContext.getRebindManager().stopEntityTasksAndCleanUp("when clearing mgmt on HA change",
+ Duration.millis(500),
+ Duration.seconds(2));
}
/** Starts hot standby or hot backup, in foreground
diff --git a/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/NonDeploymentManagementContext.java b/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/NonDeploymentManagementContext.java
index 5613e91..e88e08e 100644
--- a/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/NonDeploymentManagementContext.java
+++ b/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/NonDeploymentManagementContext.java
@@ -603,6 +603,11 @@ public class NonDeploymentManagementContext implements ManagementContextInternal
}
@Override
+ public void stopEntityTasksAndCleanUp(String reason, Duration delayBeforeCancelling, Duration delayBeforeAbandoning) {
+ // no-op
+ }
+
+ @Override
public void reset() {
throw new IllegalStateException("Non-deployment context "+NonDeploymentManagementContext.this+" is not valid for this operation.");
}
diff --git a/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/RebindIteration.java b/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/RebindIteration.java
index bf28d65..cf96700 100644
--- a/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/RebindIteration.java
+++ b/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/RebindIteration.java
@@ -20,8 +20,6 @@ package org.apache.brooklyn.core.mgmt.rebind;
import static com.google.common.base.Preconditions.checkNotNull;
import java.util.function.Supplier;
-import java.util.stream.Collectors;
-import org.apache.brooklyn.api.mgmt.Task;
import static org.apache.brooklyn.core.BrooklynFeatureEnablement.FEATURE_AUTO_FIX_CATALOG_REF_ON_REBIND;
import static org.apache.brooklyn.core.BrooklynFeatureEnablement.FEATURE_BACKWARDS_COMPATIBILITY_INFER_CATALOG_ITEM_ON_REBIND;
import static org.apache.brooklyn.core.catalog.internal.CatalogUtils.newClassLoadingContextForCatalogItems;
@@ -44,7 +42,6 @@ import org.apache.brooklyn.api.catalog.CatalogItem;
import org.apache.brooklyn.api.entity.Application;
import org.apache.brooklyn.api.entity.Entity;
import org.apache.brooklyn.api.location.Location;
-import org.apache.brooklyn.api.mgmt.ExecutionContext;
import org.apache.brooklyn.api.mgmt.classloading.BrooklynClassLoadingContext;
import org.apache.brooklyn.api.mgmt.ha.ManagementNodeState;
import org.apache.brooklyn.api.mgmt.rebind.RebindContext;
@@ -85,7 +82,6 @@ import org.apache.brooklyn.core.entity.EntityInternal;
import org.apache.brooklyn.core.feed.AbstractFeed;
import org.apache.brooklyn.core.location.AbstractLocation;
import org.apache.brooklyn.core.location.internal.LocationInternal;
-import org.apache.brooklyn.core.mgmt.BrooklynTaskTags;
import org.apache.brooklyn.core.mgmt.classloading.BrooklynClassLoadingContextSequential;
import org.apache.brooklyn.core.mgmt.classloading.JavaBrooklynClassLoadingContext;
import org.apache.brooklyn.core.mgmt.ha.OsgiManager;
@@ -113,8 +109,6 @@ import org.apache.brooklyn.util.collections.MutableList;
import org.apache.brooklyn.util.collections.MutableMap;
import org.apache.brooklyn.util.core.ClassLoaderUtils;
import org.apache.brooklyn.util.core.flags.FlagUtils;
-import org.apache.brooklyn.util.core.task.BasicExecutionContext;
-import org.apache.brooklyn.util.core.task.BasicExecutionManager;
import org.apache.brooklyn.util.core.task.Tasks;
import org.apache.brooklyn.util.exceptions.Exceptions;
import org.apache.brooklyn.util.guava.Maybe;
@@ -122,7 +116,6 @@ import org.apache.brooklyn.util.javalang.Reflections;
import org.apache.brooklyn.util.osgi.VersionedName;
import org.apache.brooklyn.util.stream.InputStreamSource;
import org.apache.brooklyn.util.text.Strings;
-import org.apache.brooklyn.util.time.CountdownTimer;
import org.apache.brooklyn.util.time.Duration;
import org.apache.brooklyn.util.time.Time;
import org.slf4j.Logger;
@@ -265,7 +258,7 @@ public abstract class RebindIteration {
protected void doRun() throws Exception {
if (readOnlyRebindCount.get() > 1) {
// prevent leaking
- rebindManager.stopEntityAndDoneTasksBeforeRebinding("before next read-only rebind", Duration.seconds(10), Duration.seconds(20));
+ rebindManager.stopEntityTasksAndCleanUp("before next read-only rebind", Duration.seconds(10), Duration.seconds(20));
}
loadManifestFiles();
diff --git a/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/RebindManagerImpl.java b/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/RebindManagerImpl.java
index 781a8c1..899e10b 100644
--- a/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/RebindManagerImpl.java
+++ b/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/RebindManagerImpl.java
@@ -47,7 +47,6 @@ import org.apache.brooklyn.api.mgmt.rebind.mementos.TreeNode;
import org.apache.brooklyn.api.objs.BrooklynObject;
import org.apache.brooklyn.config.ConfigKey;
import org.apache.brooklyn.core.BrooklynFeatureEnablement;
-import org.apache.brooklyn.core.BrooklynVersion;
import org.apache.brooklyn.core.config.ConfigKeys;
import org.apache.brooklyn.core.enricher.AbstractEnricher;
import org.apache.brooklyn.core.entity.Entities;
@@ -398,18 +397,18 @@ public class RebindManagerImpl implements RebindManager {
}
readOnlyTask = null;
LOG.debug("Stopped read-only rebinding ("+this+"), mgmt "+managementContext.getManagementNodeId());
+
+ // short waits when promoting
+ stopEntityTasksAndCleanUp("when stopping hot proxy read-only mode",
+ Duration.seconds(2),
+ Duration.seconds(5));
+ // note, items are subsequently unmanaged via:
+ // HighAvailabilityManagerImpl.clearManagedItems
}
- // short waits when promoting
- stopEntityAndDoneTasksBeforeRebinding("when stopping hot proxy read-only mode",
- Duration.seconds(2),
- Duration.seconds(5));
- // note, items are subsequently unmanaged via:
- // HighAvailabilityManagerImpl.clearManagedItems
}
- public void stopEntityAndDoneTasksBeforeRebinding(String reason, Duration delayBeforeCancelling, Duration delayBeforeAbandoning) {
+ public void stopEntityTasksAndCleanUp(String reason, Duration delayBeforeCancelling, Duration delayBeforeAbandoning) {
// TODO inputs should be configurable
-
if (!managementContext.isRunning() || managementContext.getExecutionManager().isShutdown()) {
return;
}