From 82279d064c18227ee3ad9aef06cf359ab0e3482c Mon Sep 17 00:00:00 2001 From: lile Date: Thu, 23 Jan 2025 11:38:29 +0800 Subject: [PATCH] Fix #16978 AbstractDelayEvent compare method is incorrect --- .../apache/dolphinscheduler/eventbus/AbstractDelayEvent.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/dolphinscheduler-eventbus/src/main/java/org/apache/dolphinscheduler/eventbus/AbstractDelayEvent.java b/dolphinscheduler-eventbus/src/main/java/org/apache/dolphinscheduler/eventbus/AbstractDelayEvent.java index c4c61b905520..b771e862f4ea 100644 --- a/dolphinscheduler-eventbus/src/main/java/org/apache/dolphinscheduler/eventbus/AbstractDelayEvent.java +++ b/dolphinscheduler-eventbus/src/main/java/org/apache/dolphinscheduler/eventbus/AbstractDelayEvent.java @@ -39,6 +39,8 @@ public abstract class AbstractDelayEvent implements IEvent, Delayed { @Builder.Default protected long createTimeInNano = System.nanoTime(); + protected long expiredTimeInNano; + public AbstractDelayEvent() { this(DEFAULT_DELAY_TIME); } @@ -50,6 +52,7 @@ public AbstractDelayEvent(final long delayTime) { public AbstractDelayEvent(final long delayTime, final long createTimeInNano) { this.delayTime = delayTime; this.createTimeInNano = createTimeInNano; + this.expiredTimeInNano = this.delayTime * 1_000_000 + this.createTimeInNano; } @Override @@ -60,7 +63,7 @@ public long getDelay(TimeUnit unit) { @Override public int compareTo(Delayed other) { - return Long.compare(this.createTimeInNano, ((AbstractDelayEvent) other).createTimeInNano); + return Long.compare(this.expiredTimeInNano, ((AbstractDelayEvent) other).expiredTimeInNano); } }