ACCUMULO-4060 Handle uncaught exceptions in FATE repo runner threads. Any RuntimeException propagated from the internals of the FATE repo-runner threads will caught the thread to exit. This creates a situation where the Master can be running but be unresponsive to any pending FATE operations like creating a table.
Make sure that these exceptions are caught and suppressed to ensure that FATE ops can always be handled while the master is running. Project: http://git-wip-us.apache.org/repos/asf/accumulo/repo Commit: http://git-wip-us.apache.org/repos/asf/accumulo/commit/e82c3f3d Tree: http://git-wip-us.apache.org/repos/asf/accumulo/tree/e82c3f3d Diff: http://git-wip-us.apache.org/repos/asf/accumulo/diff/e82c3f3d Branch: refs/heads/master Commit: e82c3f3dab208478173e352635f87a96d72a38b2 Parents: 78522c4 Author: Josh Elser <els...@apache.org> Authored: Sat Nov 21 16:53:11 2015 -0500 Committer: Josh Elser <els...@apache.org> Committed: Sat Nov 21 16:58:26 2015 -0500 ---------------------------------------------------------------------- fate/src/main/java/org/apache/accumulo/fate/Fate.java | 3 +++ 1 file changed, 3 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/accumulo/blob/e82c3f3d/fate/src/main/java/org/apache/accumulo/fate/Fate.java ---------------------------------------------------------------------- diff --git a/fate/src/main/java/org/apache/accumulo/fate/Fate.java b/fate/src/main/java/org/apache/accumulo/fate/Fate.java index 493d441..52c7b2f 100644 --- a/fate/src/main/java/org/apache/accumulo/fate/Fate.java +++ b/fate/src/main/java/org/apache/accumulo/fate/Fate.java @@ -38,6 +38,7 @@ public class Fate<T> { private static final String RETURN_PROP = "return"; final private static Logger log = Logger.getLogger(Fate.class); + private final Logger runnerLog = Logger.getLogger(TransactionRunner.class); private TStore<T> store; private T environment; @@ -91,6 +92,8 @@ public class Fate<T> { } } } + } catch (Exception e) { + runnerLog.error("Uncaught exception in FATE runner thread.", e); } finally { store.unreserve(tid, deferTime); }