diff --git a/engine/src/main/java/org/hibernate/search/engine/search/timeout/spi/TimeoutManager.java b/engine/src/main/java/org/hibernate/search/engine/search/timeout/spi/TimeoutManager.java index 938d1150d1f..73365bb97df 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/timeout/spi/TimeoutManager.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/timeout/spi/TimeoutManager.java @@ -73,20 +73,25 @@ public TimeoutManager(TimingSource timingSource, Long timeoutValue, TimeUnit tim this.type = type; this.deadline = timeoutMs == null ? null : new DynamicDeadline(); - timingSource.ensureTimeEstimateIsInitialized(); + if ( requireMonotonicTimeEstimate() ) { + timingSource.ensureTimeEstimateIsInitialized(); + } } /** * we start counting from this method call (if needed) */ public void start() { - this.monotonicTimeEstimateStart = timingSource.monotonicTimeEstimate(); - this.nanoTimeStart = timingSource.nanoTime(); + if ( requireMonotonicTimeEstimate() ) { + monotonicTimeEstimateStart = timingSource.monotonicTimeEstimate(); + } + + nanoTimeStart = timingSource.nanoTime(); } public void stop() { - this.monotonicTimeEstimateStart = null; - this.nanoTimeStart = null; + monotonicTimeEstimateStart = null; + nanoTimeStart = null; } public TimingSource timingSource() { @@ -155,6 +160,10 @@ protected long elapsedTimeEstimateMillis() { return timingSource.monotonicTimeEstimate() - monotonicTimeEstimateStart; } + private boolean requireMonotonicTimeEstimate() { + return !Type.NONE.equals( type ); + } + final class DynamicDeadline implements Deadline { boolean timedOut = false;