diff --git a/reactor-core/src/main/java/reactor/core/publisher/Sinks.java b/reactor-core/src/main/java/reactor/core/publisher/Sinks.java index e6cb30f16d..74f61e6a8b 100644 --- a/reactor-core/src/main/java/reactor/core/publisher/Sinks.java +++ b/reactor-core/src/main/java/reactor/core/publisher/Sinks.java @@ -224,20 +224,22 @@ public EmitResult getReason() { } /** - * * @author Animesh Chaturvedi */ static class OptimisticEmitFailureHandler implements EmitFailureHandler { + private final long startTime; private final long deadline; OptimisticEmitFailureHandler(Duration duration){ - this.deadline = System.nanoTime() + duration.toNanos(); + this.startTime = System.nanoTime(); + this.deadline = duration.toNanos(); } @Override public boolean onEmitFailure(SignalType signalType, EmitResult emitResult) { - return emitResult.equals(Sinks.EmitResult.FAIL_NON_SERIALIZED) && (System.nanoTime() < this.deadline); + return emitResult.equals(Sinks.EmitResult.FAIL_NON_SERIALIZED) + && System.nanoTime() - startTime < deadline; } }