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");
+      }
     }
   }
 

Reply via email to