summaryrefslogtreecommitdiffstats
path: root/messagebus
diff options
context:
space:
mode:
authorHåvard Pettersen <havardpe@yahooinc.com>2022-05-19 13:31:54 +0000
committerHåvard Pettersen <havardpe@yahooinc.com>2022-05-19 13:31:54 +0000
commitfea9d26940aa29aff66d4283f6761f681712a085 (patch)
tree611c90cfb288610fafeb8b17e825eaecf3986a8a /messagebus
parentf17c4fe7de4c55f5c4ee61897eab8c2f588d8405 (diff)
make close flag in reply gate atomic
Diffstat (limited to 'messagebus')
-rw-r--r--messagebus/src/vespa/messagebus/replygate.cpp4
-rw-r--r--messagebus/src/vespa/messagebus/replygate.h3
2 files changed, 4 insertions, 3 deletions
diff --git a/messagebus/src/vespa/messagebus/replygate.cpp b/messagebus/src/vespa/messagebus/replygate.cpp
index 1b37a542d49..d1bd6ef05c7 100644
--- a/messagebus/src/vespa/messagebus/replygate.cpp
+++ b/messagebus/src/vespa/messagebus/replygate.cpp
@@ -22,13 +22,13 @@ ReplyGate::handleMessage(Message::UP msg)
void
ReplyGate::close()
{
- _open = false;
+ _open.store(false, std::memory_order_relaxed);
}
void
ReplyGate::handleReply(Reply::UP reply)
{
- if (_open) {
+ if (_open.load(std::memory_order_relaxed)) {
IReplyHandler &handler = reply->getCallStack().pop(*reply);
handler.handleReply(std::move(reply));
} else {
diff --git a/messagebus/src/vespa/messagebus/replygate.h b/messagebus/src/vespa/messagebus/replygate.h
index d432afa4b8b..0c487de3ecf 100644
--- a/messagebus/src/vespa/messagebus/replygate.h
+++ b/messagebus/src/vespa/messagebus/replygate.h
@@ -6,6 +6,7 @@
#include "imessagehandler.h"
#include "ireplyhandler.h"
#include <vespa/vespalib/util/referencecounter.h>
+#include <atomic>
namespace mbus {
@@ -26,7 +27,7 @@ class ReplyGate : public vespalib::ReferenceCounter,
{
private:
IMessageHandler &_sender;
- bool _open;
+ std::atomic<bool> _open;
public:
/**