}
@Override
- public synchronized void executionCompleted(final InstructionStatus status, final Details details) {
- Preconditions.checkState(this.executionFuture != null);
+ public void executionCompleted(final InstructionStatus status, final Details details) {
+ final ExecutionResult<Details> result;
- cancelTimeout();
+ synchronized (this) {
+ Preconditions.checkState(this.executionFuture != null);
+
+ cancelTimeout();
+
+ // We reuse the preconditions set down in this class
+ result = new ExecutionResult<Details>(status, details);
+ setStatus(status, details);
+ }
- // We reuse the preconditions set down in this class
- final ExecutionResult<Details> result = new ExecutionResult<Details>(status, details);
- setStatus(status, details);
this.executionFuture.set(result);
}