SLIDER-622 possible bug/race in EndOfServiceWaiter
Project: http://git-wip-us.apache.org/repos/asf/incubator-slider/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-slider/commit/b277c792 Tree: http://git-wip-us.apache.org/repos/asf/incubator-slider/tree/b277c792 Diff: http://git-wip-us.apache.org/repos/asf/incubator-slider/diff/b277c792 Branch: refs/heads/develop Commit: b277c7921a4a03bb9a1abee38128e69e1a9ca7b0 Parents: 400d069 Author: Steve Loughran <[email protected]> Authored: Mon Nov 10 16:47:27 2014 +0000 Committer: Steve Loughran <[email protected]> Committed: Mon Nov 10 16:47:27 2014 +0000 ---------------------------------------------------------------------- .../server/services/utility/EndOfServiceWaiter.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/b277c792/slider-core/src/main/java/org/apache/slider/server/services/utility/EndOfServiceWaiter.java ---------------------------------------------------------------------- diff --git a/slider-core/src/main/java/org/apache/slider/server/services/utility/EndOfServiceWaiter.java b/slider-core/src/main/java/org/apache/slider/server/services/utility/EndOfServiceWaiter.java index 6e8add1..4a57133 100644 --- a/slider-core/src/main/java/org/apache/slider/server/services/utility/EndOfServiceWaiter.java +++ b/slider-core/src/main/java/org/apache/slider/server/services/utility/EndOfServiceWaiter.java @@ -35,6 +35,7 @@ public class EndOfServiceWaiter implements ServiceStateChangeListener { private final AtomicBoolean finished = new AtomicBoolean(false); private final String name; + private Service service; /** * Wait for a service; use the service name as this instance's name @@ -52,6 +53,7 @@ public class EndOfServiceWaiter implements ServiceStateChangeListener { */ public EndOfServiceWaiter(String name, Service service) { this.name = name; + this.service = service; service.registerServiceListener(this); } @@ -59,11 +61,11 @@ public class EndOfServiceWaiter implements ServiceStateChangeListener { InterruptedException, TimeoutException { if (!finished.get()) { wait(timeout); - } - if (!finished.get()) { - throw new TimeoutException(name - + " did not finish after " + timeout + - " milliseconds"); + if (!finished.get()) { + throw new TimeoutException(name + + " did not finish after " + timeout + + " milliseconds"); + } } }
