From de2de36a4a1a69cbbfedec9a8d0619a50e49f77b Mon Sep 17 00:00:00 2001 From: Li Ma Date: Mon, 31 Mar 2014 19:00:41 -0700 Subject: [PATCH] Logical error in blockless fanout of zmq The blockless fanout doesn't take effect and it only processes the FIRST one by returning after the first loop. Change-Id: Iad071ab455e36be7b26637b286ca9f83fea4a019 Closes-Bug: #1300539 --- oslo/messaging/_drivers/impl_zmq.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/oslo/messaging/_drivers/impl_zmq.py b/oslo/messaging/_drivers/impl_zmq.py index 90ac92fee..3dfe8af8c 100644 --- a/oslo/messaging/_drivers/impl_zmq.py +++ b/oslo/messaging/_drivers/impl_zmq.py @@ -742,17 +742,18 @@ def _multi_send(method, context, topic, msg, timeout=None, raise rpc_common.Timeout(_("No match from matchmaker.")) # This supports brokerless fanout (addresses > 1) + return_val = None for queue in queues: - (_topic, ip_addr) = queue + _topic, ip_addr = queue _addr = "tcp://%s:%s" % (ip_addr, conf.rpc_zmq_port) if method.__name__ == '_cast': eventlet.spawn_n(method, _addr, context, - _topic, msg, timeout, envelope, - _msg_id) - return - return method(_addr, context, _topic, msg, timeout, - envelope, allowed_remote_exmods) + _topic, msg, timeout, envelope, _msg_id) + else: + return_val = method(_addr, context, _topic, msg, timeout, envelope) + + return return_val def create_connection(conf, new=True):