diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2023-10-10 00:37:51 +0200 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2023-10-10 10:32:52 +0200 |
commit | cdac5165107db05d26832b4459a66ae4098b57e3 (patch) | |
tree | 9a5d6d4539180b8019cccb622adf309301cf14d3 /messagebus | |
parent | 955b46e82a969ed722a008d84878518337803b74 (diff) |
Deliver reply before sending next message in sequence.
Diffstat (limited to 'messagebus')
-rw-r--r-- | messagebus/src/main/java/com/yahoo/messagebus/Sequencer.java | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/Sequencer.java b/messagebus/src/main/java/com/yahoo/messagebus/Sequencer.java index 15bc15f88b8..84ef5800143 100644 --- a/messagebus/src/main/java/com/yahoo/messagebus/Sequencer.java +++ b/messagebus/src/main/java/com/yahoo/messagebus/Sequencer.java @@ -67,11 +67,7 @@ public class Sequencer implements MessageHandler, ReplyHandler { msg.setContext(seqId); synchronized (this) { if (seqMap.containsKey(seqId)) { - Queue<Message> queue = seqMap.get(seqId); - if (queue == null) { - queue = new LinkedList<>(); - seqMap.put(seqId, queue); - } + Queue<Message> queue = seqMap.computeIfAbsent(seqId, k -> new LinkedList<>()); if (msg.getTrace().shouldTrace(TraceLevel.COMPONENT)) { msg.getTrace().trace(TraceLevel.COMPONENT, "Sequencer queued message with sequence id '" + seqId + "'."); @@ -137,6 +133,12 @@ public class Sequencer implements MessageHandler, ReplyHandler { reply.getTrace().trace(TraceLevel.COMPONENT, "Sequencer received reply with sequence id '" + seqId + "'."); } + ReplyHandler handler = reply.popHandler(); + handler.handleReply(reply); + sendNextInSequence(seqId); + } + + private void sendNextInSequence(long seqId) { Message msg = null; synchronized (this) { Queue<Message> queue = seqMap.get(seqId); @@ -149,8 +151,6 @@ public class Sequencer implements MessageHandler, ReplyHandler { if (msg != null) { sequencedSend(msg); } - ReplyHandler handler = reply.popHandler(); - handler.handleReply(reply); } } |