diff --git a/core/trino-main/src/main/java/io/trino/execution/executor/PrioritizedSplitRunner.java b/core/trino-main/src/main/java/io/trino/execution/executor/PrioritizedSplitRunner.java index 5b98af62e0a3..6d4fb2c76c28 100644 --- a/core/trino-main/src/main/java/io/trino/execution/executor/PrioritizedSplitRunner.java +++ b/core/trino-main/src/main/java/io/trino/execution/executor/PrioritizedSplitRunner.java @@ -33,7 +33,7 @@ import static java.util.Objects.requireNonNull; import static java.util.concurrent.TimeUnit.NANOSECONDS; -public class PrioritizedSplitRunner +public final class PrioritizedSplitRunner implements Comparable { private static final AtomicLong NEXT_WORKER_ID = new AtomicLong(); @@ -56,9 +56,8 @@ public class PrioritizedSplitRunner private final AtomicBoolean destroyed = new AtomicBoolean(); - protected final AtomicReference priority = new AtomicReference<>(new Priority(0, 0)); + private final AtomicReference priority = new AtomicReference<>(new Priority(0, 0)); - protected final AtomicLong lastRun = new AtomicLong(); private final AtomicLong lastReady = new AtomicLong(); private final AtomicLong start = new AtomicLong(); @@ -92,7 +91,7 @@ public class PrioritizedSplitRunner this.blockedQuantaWallTime = requireNonNull(blockedQuantaWallTime, "blockedQuantaWallTime is null"); this.unblockedQuantaWallTime = requireNonNull(unblockedQuantaWallTime, "unblockedQuantaWallTime is null"); - this.updateLevelPriority(); + updateLevelPriority(); } public TaskHandle getTaskHandle() @@ -165,12 +164,10 @@ public ListenableFuture process() ListenableFuture blocked = split.processFor(SPLIT_RUN_QUANTA); CpuTimer.CpuDuration elapsed = timer.elapsedTime(); - long endNanos = ticker.read(); - long quantaScheduledNanos = endNanos - startNanos; + long quantaScheduledNanos = elapsed.getWall().roundTo(NANOSECONDS); scheduledNanos.addAndGet(quantaScheduledNanos); priority.set(taskHandle.addScheduledNanos(quantaScheduledNanos)); - lastRun.set(endNanos); if (blocked == NOT_BLOCKED) { unblockedQuantaWallTime.add(elapsed.getWall());