From a378cd3677a50769320ded0b0f96989c6933a94a Mon Sep 17 00:00:00 2001 From: jonmv Date: Mon, 16 Oct 2023 11:37:29 +0200 Subject: Discard sequenced messages if task destroyed before run --- messagebus/src/main/java/com/yahoo/messagebus/Routable.java | 2 +- messagebus/src/main/java/com/yahoo/messagebus/Sequencer.java | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/messagebus/src/main/java/com/yahoo/messagebus/Routable.java b/messagebus/src/main/java/com/yahoo/messagebus/Routable.java index 06d92c48dd3..a94541ac5f6 100755 --- a/messagebus/src/main/java/com/yahoo/messagebus/Routable.java +++ b/messagebus/src/main/java/com/yahoo/messagebus/Routable.java @@ -10,7 +10,7 @@ import com.yahoo.text.Utf8String; * A routable can be regarded as a protocol-defined value with additional message bus related state. The state is what * differentiates two Routables that carry the same value. This includes the application context attached to the * routable and the {@link CallStack} used to track the path of the routable within messagebus. When a routable is - * copied (if the protocol supports it) only the value part is copied. The state must be explicitly transfered by + * copied (if the protocol supports it) only the value part is copied. The state must be explicitly transferred by * invoking the {@link #swapState(Routable)} method. That method is used to transfer the state from a message to the * corresponding reply, or to a different message if the application decides to replace it. * diff --git a/messagebus/src/main/java/com/yahoo/messagebus/Sequencer.java b/messagebus/src/main/java/com/yahoo/messagebus/Sequencer.java index 05e71e0f006..4e10a72c858 100644 --- a/messagebus/src/main/java/com/yahoo/messagebus/Sequencer.java +++ b/messagebus/src/main/java/com/yahoo/messagebus/Sequencer.java @@ -145,10 +145,10 @@ public class Sequencer implements MessageHandler, ReplyHandler { } private class SequencedSendTask implements Messenger.Task { - private final Message msg; + private Message msg; SequencedSendTask(Message msg) { this.msg = msg; } - @Override public void run() { sequencedSend(msg); } - @Override public void destroy() { } + @Override public void run() { sequencedSend(msg); msg = null; } + @Override public void destroy() { if (msg != null) msg.discard(); } } private void sendNextInSequence(long seqId) { -- cgit v1.2.3