It looks like do_set(), do_get(), do_send_msg(), etc. can happen concurrently with receive_message(), which is the handler for the broker's ROUTER socket.
All of the above routines call send_message()/__send_zmq_message(), which sends multipart messages out on the broker's PUB socket.
This is tripping assertions in our code; some of our nodes are receiving jumbled multipart messages when SET/GET/send_msg() happen concurrently with custom messages sent between nodes.
When we protect these calls with a lock in the chistributed source, these errors no longer manifest.
It looks like
do_set()
,do_get()
,do_send_msg()
, etc. can happen concurrently withreceive_message()
, which is the handler for the broker's ROUTER socket.All of the above routines call
send_message()
/__send_zmq_message()
, which sends multipart messages out on the broker's PUB socket.This is tripping assertions in our code; some of our nodes are receiving jumbled multipart messages when
SET
/GET
/send_msg()
happen concurrently with custom messages sent between nodes.When we protect these calls with a lock in the chistributed source, these errors no longer manifest.