aboutsummaryrefslogtreecommitdiffstats
path: root/messagebus
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2023-10-10 00:37:51 +0200
committerHenning Baldersheim <balder@yahoo-inc.com>2023-10-10 10:32:52 +0200
commitcdac5165107db05d26832b4459a66ae4098b57e3 (patch)
tree9a5d6d4539180b8019cccb622adf309301cf14d3 /messagebus
parent955b46e82a969ed722a008d84878518337803b74 (diff)
Deliver reply before sending next message in sequence.
Diffstat (limited to 'messagebus')
-rw-r--r--messagebus/src/main/java/com/yahoo/messagebus/Sequencer.java14
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);
}
}