diff --git a/core/trino-main/src/main/java/io/trino/operator/TaskContext.java b/core/trino-main/src/main/java/io/trino/operator/TaskContext.java index 0cffc6deccfc..b5651244e26b 100644 --- a/core/trino-main/src/main/java/io/trino/operator/TaskContext.java +++ b/core/trino-main/src/main/java/io/trino/operator/TaskContext.java @@ -559,9 +559,12 @@ public TaskStats getTaskStats() synchronized (cumulativeMemoryLock) { long currentTimeNanos = System.nanoTime(); - double sinceLastPeriodMillis = (currentTimeNanos - lastTaskStatCallNanos) / 1_000_000.0; - long averageUserMemoryForLastPeriod = (userMemory + lastUserMemoryReservation) / 2; - cumulativeUserMemory.addAndGet(averageUserMemoryForLastPeriod * sinceLastPeriodMillis); + + if (lastTaskStatCallNanos != 0) { + double sinceLastPeriodMillis = (currentTimeNanos - lastTaskStatCallNanos) / 1_000_000.0; + long averageUserMemoryForLastPeriod = (userMemory + lastUserMemoryReservation) / 2; + cumulativeUserMemory.addAndGet(averageUserMemoryForLastPeriod * sinceLastPeriodMillis); + } lastTaskStatCallNanos = currentTimeNanos; lastUserMemoryReservation = userMemory;