diff options
author | Harald Musum <musum@yahoo-inc.com> | 2017-04-26 18:04:39 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-04-26 18:04:39 +0200 |
commit | d8276add8cb20cc792df790d57f961a966e5a8c4 (patch) | |
tree | bc14ff5bc2b4cbc80908977d12df1efe99970d54 /container-disc/src/main | |
parent | 6e91e608084ae5378a3770a3ae422aa17144fecc (diff) |
Revert "Revert "Revert "Revert "Catch exception thrown from AbstractComponent.deconstruct.""""
Diffstat (limited to 'container-disc/src/main')
-rw-r--r-- | container-disc/src/main/java/com/yahoo/container/jdisc/component/Deconstructor.java | 18 |
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); + } } } } |