summaryrefslogtreecommitdiffstats
path: root/container-disc
diff options
context:
space:
mode:
authorHarald Musum <musum@yahoo-inc.com>2017-04-26 18:04:39 +0200
committerGitHub <noreply@github.com>2017-04-26 18:04:39 +0200
commitd8276add8cb20cc792df790d57f961a966e5a8c4 (patch)
treebc14ff5bc2b4cbc80908977d12df1efe99970d54 /container-disc
parent6e91e608084ae5378a3770a3ae422aa17144fecc (diff)
Revert "Revert "Revert "Revert "Catch exception thrown from AbstractComponent.deconstruct.""""
Diffstat (limited to 'container-disc')
-rw-r--r--container-disc/src/main/java/com/yahoo/container/jdisc/component/Deconstructor.java18
1 files changed, 16 insertions, 2 deletions
diff --git a/container-disc/src/main/java/com/yahoo/container/jdisc/component/Deconstructor.java b/container-disc/src/main/java/com/yahoo/container/jdisc/component/Deconstructor.java
index 6a2e33db309..1fd08e2be7b 100644
--- a/container-disc/src/main/java/com/yahoo/container/jdisc/component/Deconstructor.java
+++ b/container-disc/src/main/java/com/yahoo/container/jdisc/component/Deconstructor.java
@@ -7,11 +7,14 @@ import com.yahoo.container.di.ComponentDeconstructor;
import com.yahoo.container.di.componentgraph.Provider;
import com.yahoo.jdisc.SharedResource;
+import java.util.Random;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import java.util.logging.Logger;
+import static java.util.logging.Level.WARNING;
+
/**
* @author tonyv
* @author gv
@@ -54,8 +57,19 @@ public class Deconstructor implements ComponentDeconstructor {
public void run() {
log.info("Starting deconstruction of " + component);
- component.deconstruct();
- log.info("Finished deconstructing " + component);
+ try {
+ component.deconstruct();
+ log.info("Finished deconstructing " + component);
+ } catch (Error e) {
+ try {
+ Thread.sleep((long) (new Random(System.nanoTime()).nextDouble() * 180 * 1000));
+ } catch (InterruptedException e) { }
+ com.yahoo.protect.Process.logAndDie("Error when deconstructing " + component, e);
+ } catch (Exception e) {
+ log.log(WARNING, "Exception thrown when deconstructing " + component, e);
+ } catch (Throwable t) {
+ log.log(WARNING, "Unexpected Throwable thrown when deconstructing " + component, t);
+ }
}
}
}