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:45 UTC
[brooklyn-server] 26/27: suppress more warnings on planned rebind
interruption
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 750a63a9bbcc70b332254fa8b434311449ff3bf4
Author: Alex Heneveld <al...@cloudsoftcorp.com>
AuthorDate: Tue Sep 14 22:30:35 2021 +0100
suppress more warnings on planned rebind interruption
---
.../BrooklynMementoPersisterToObjectStore.java | 17 +++++++----
.../mgmt/rebind/RebindExceptionHandlerImpl.java | 35 ++++++++++++++++++++++
.../brooklyn/util/exceptions/Exceptions.java | 2 +-
.../exceptions/RuntimeInterruptedException.java | 9 ++----
4 files changed, 50 insertions(+), 13 deletions(-)
diff --git a/core/src/main/java/org/apache/brooklyn/core/mgmt/persist/BrooklynMementoPersisterToObjectStore.java b/core/src/main/java/org/apache/brooklyn/core/mgmt/persist/BrooklynMementoPersisterToObjectStore.java
index e3b3540..31e2019 100644
--- a/core/src/main/java/org/apache/brooklyn/core/mgmt/persist/BrooklynMementoPersisterToObjectStore.java
+++ b/core/src/main/java/org/apache/brooklyn/core/mgmt/persist/BrooklynMementoPersisterToObjectStore.java
@@ -568,10 +568,17 @@ public class BrooklynMementoPersisterToObjectStore implements BrooklynMementoPer
@Override
public void run() {
try {
- visitor.visit(type, objectIdAndData.getKey(), objectIdAndData.getValue());
- } catch (Exception e) {
- Exceptions.propagateIfFatal(e);
- exceptionHandler.onLoadMementoFailed(type, "memento "+objectIdAndData.getKey()+" "+phase+" error", e);
+ try {
+ visitor.visit(type, objectIdAndData.getKey(), objectIdAndData.getValue());
+ } catch (Exception e) {
+ Exceptions.propagateIfFatal(e);
+ if (Thread.currentThread().isInterrupted()) {
+ throw new RuntimeInterruptedException("Interruption discovered", e);
+ }
+ exceptionHandler.onLoadMementoFailed(type, "memento " + objectIdAndData.getKey() + " " + phase + " error", e);
+ }
+ } catch (RuntimeInterruptedException e) {
+ LOG.debug("Ending persistence on interruption, probably cancelled when server about to transition: "+e);
}
}
}
@@ -594,7 +601,7 @@ public class BrooklynMementoPersisterToObjectStore implements BrooklynMementoPer
if (future.isDone()) {
try {
future.get();
- } catch (InterruptedException e2) {
+ } catch (InterruptedException|RuntimeInterruptedException e2) {
throw Exceptions.propagate(e2);
} catch (ExecutionException e2) {
LOG.warn("Problem loading memento ("+phase+"): "+e2, e2);
diff --git a/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/RebindExceptionHandlerImpl.java b/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/RebindExceptionHandlerImpl.java
index a705748..30b2984 100644
--- a/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/RebindExceptionHandlerImpl.java
+++ b/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/RebindExceptionHandlerImpl.java
@@ -44,6 +44,7 @@ import org.apache.brooklyn.util.collections.MutableList;
import org.apache.brooklyn.util.collections.QuorumCheck;
import org.apache.brooklyn.util.collections.QuorumCheck.QuorumChecks;
import org.apache.brooklyn.util.exceptions.Exceptions;
+import org.apache.brooklyn.util.exceptions.RuntimeInterruptedException;
import org.apache.brooklyn.util.text.Strings;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -166,6 +167,10 @@ public class RebindExceptionHandlerImpl implements RebindExceptionHandler {
@Override
public void onLoadMementoFailed(BrooklynObjectType type, String msg, Exception e) {
Exceptions.propagateIfFatal(e);
+ if (Thread.currentThread().isInterrupted()) {
+ throw new RuntimeInterruptedException("Interruption discovered when loading memento, "+msg);
+ }
+
String errmsg = "problem loading memento: "+msg;
switch (type) {
@@ -193,6 +198,9 @@ public class RebindExceptionHandlerImpl implements RebindExceptionHandler {
@Override
public Entity onDanglingEntityRef(String id) {
+ if (Thread.currentThread().isInterrupted()) {
+ throw new RuntimeInterruptedException("Interruption discovered when recording dangling entity "+id);
+ }
missingEntities.add(id);
if (danglingRefFailureMode == RebindManager.RebindFailureMode.FAIL_FAST) {
throw new IllegalStateException("No entity found with id "+id);
@@ -204,6 +212,9 @@ public class RebindExceptionHandlerImpl implements RebindExceptionHandler {
@Override
public Location onDanglingLocationRef(String id) {
+ if (Thread.currentThread().isInterrupted()) {
+ throw new RuntimeInterruptedException("Interruption discovered when recording dangling location "+id);
+ }
missingLocations.add(id);
if (danglingRefFailureMode == RebindManager.RebindFailureMode.FAIL_FAST) {
throw new IllegalStateException("No location found with id "+id);
@@ -215,6 +226,10 @@ public class RebindExceptionHandlerImpl implements RebindExceptionHandler {
@Override
public Policy onDanglingPolicyRef(String id) {
+ if (Thread.currentThread().isInterrupted()) {
+ throw new RuntimeInterruptedException("Interruption discovered when recording dangling policy "+id);
+ }
+
missingPolicies.add(id);
if (danglingRefFailureMode == RebindManager.RebindFailureMode.FAIL_FAST) {
throw new IllegalStateException("No policy found with id "+id);
@@ -226,6 +241,10 @@ public class RebindExceptionHandlerImpl implements RebindExceptionHandler {
@Override
public Enricher onDanglingEnricherRef(String id) {
+ if (Thread.currentThread().isInterrupted()) {
+ throw new RuntimeInterruptedException("Interruption discovered when recording dangling enricher "+id);
+ }
+
missingEnrichers.add(id);
if (danglingRefFailureMode == RebindManager.RebindFailureMode.FAIL_FAST) {
throw new IllegalStateException("No enricher found with id "+id);
@@ -237,6 +256,10 @@ public class RebindExceptionHandlerImpl implements RebindExceptionHandler {
@Override
public Feed onDanglingFeedRef(String id) {
+ if (Thread.currentThread().isInterrupted()) {
+ throw new RuntimeInterruptedException("Interruption discovered when recording dangling feed "+id);
+ }
+
missingFeeds.add(id);
if (danglingRefFailureMode == RebindManager.RebindFailureMode.FAIL_FAST) {
throw new IllegalStateException("No feed found with id "+id);
@@ -248,6 +271,10 @@ public class RebindExceptionHandlerImpl implements RebindExceptionHandler {
@Override
public CatalogItem<?, ?> onDanglingCatalogItemRef(String id) {
+ if (Thread.currentThread().isInterrupted()) {
+ throw new RuntimeInterruptedException("Interruption discovered when recording dangling catalog item "+id);
+ }
+
missingCatalogItems.add(id);
if (danglingRefFailureMode == RebindManager.RebindFailureMode.FAIL_FAST) {
throw new IllegalStateException("No catalog item found with id "+id);
@@ -264,6 +291,10 @@ public class RebindExceptionHandlerImpl implements RebindExceptionHandler {
@Override
public BrooklynObject onDanglingUntypedItemRef(String id) {
+ if (Thread.currentThread().isInterrupted()) {
+ throw new RuntimeInterruptedException("Interruption discovered when recording dangling untyped item "+id);
+ }
+
missingUntypedItems.add(id);
if (danglingRefFailureMode == RebindManager.RebindFailureMode.FAIL_FAST) {
throw new IllegalStateException("No item found with id "+id);
@@ -413,6 +444,10 @@ public class RebindExceptionHandlerImpl implements RebindExceptionHandler {
}
protected void onErrorImpl(String errmsg, Exception e) {
+ if (Thread.currentThread().isInterrupted()) {
+ throw new RuntimeInterruptedException("Interruption discovered when recording error: "+errmsg);
+ }
+
if (rebindFailureMode == RebindManager.RebindFailureMode.FAIL_FAST) {
throw new IllegalStateException("Rebind: aborting due to "+errmsg, e);
} else {
diff --git a/utils/common/src/main/java/org/apache/brooklyn/util/exceptions/Exceptions.java b/utils/common/src/main/java/org/apache/brooklyn/util/exceptions/Exceptions.java
index 4d3946c..b91279b 100644
--- a/utils/common/src/main/java/org/apache/brooklyn/util/exceptions/Exceptions.java
+++ b/utils/common/src/main/java/org/apache/brooklyn/util/exceptions/Exceptions.java
@@ -186,7 +186,7 @@ public class Exceptions {
*/
public static void propagateIfInterrupt(Throwable throwable) {
if (throwable instanceof InterruptedException) {
- throw new RuntimeInterruptedException((InterruptedException) throwable);
+ throw new RuntimeInterruptedException(throwable);
} else if (throwable instanceof RuntimeInterruptedException) {
Thread.currentThread().interrupt();
throw (RuntimeInterruptedException) throwable;
diff --git a/utils/common/src/main/java/org/apache/brooklyn/util/exceptions/RuntimeInterruptedException.java b/utils/common/src/main/java/org/apache/brooklyn/util/exceptions/RuntimeInterruptedException.java
index f207001..600d830 100644
--- a/utils/common/src/main/java/org/apache/brooklyn/util/exceptions/RuntimeInterruptedException.java
+++ b/utils/common/src/main/java/org/apache/brooklyn/util/exceptions/RuntimeInterruptedException.java
@@ -38,17 +38,12 @@ public class RuntimeInterruptedException extends RuntimeException {
Thread.currentThread().interrupt();
}
- public RuntimeInterruptedException(InterruptedException cause) {
+ public RuntimeInterruptedException(Throwable cause) {
super(cause);
Thread.currentThread().interrupt();
}
- public RuntimeInterruptedException(String msg, InterruptedException cause) {
- super(msg, cause);
- Thread.currentThread().interrupt();
- }
-
- public RuntimeInterruptedException(String msg, RuntimeInterruptedException cause) {
+ public RuntimeInterruptedException(String msg, Throwable cause) {
super(msg, cause);
Thread.currentThread().interrupt();
}