SLIDER-622 possible bug/race in EndOfServiceWaiter
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 @@
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 EndOfServiceWaiter(String name, Service service) {
this.name = name;
+ this.service = service;
service.registerServiceListener(this);
}
@@ -59,11 +61,11 @@
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");
+ }
}
}