From 445267a8ccba0ca28ed6ff1949c6ee532c80ff8d Mon Sep 17 00:00:00 2001 From: Loonride <22580625+Loonride@users.noreply.github.com> Date: Wed, 4 Aug 2021 00:39:44 -0500 Subject: [PATCH] fix zmq option setting bugs --- funcx_forwarder/taskqueue.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/funcx_forwarder/taskqueue.py b/funcx_forwarder/taskqueue.py index 2d2b026..3c4a692 100644 --- a/funcx_forwarder/taskqueue.py +++ b/funcx_forwarder/taskqueue.py @@ -63,21 +63,25 @@ def __init__(self, self.zmq_socket.set(zmq.ROUTER_MANDATORY, 1) self.zmq_socket.set(zmq.ROUTER_HANDOVER, 1) self.setup_server_auth() - self.zmq_socket.bind("tcp://*:{}".format(port)) elif self.mode == 'client': self.zmq_socket = self.context.socket(zmq.DEALER) self.setup_client_auth() self.zmq_socket.setsockopt(zmq.IDENTITY, identity.encode('utf-8')) - self.zmq_socket.connect("tcp://{}:{}".format(address, port)) else: raise ValueError("TaskQueue must be initialized with mode set to 'server' or 'client'") if set_hwm: self.zmq_socket.set_hwm(0) if RCVTIMEO is not None: - self.zmq_socket.RCVTIMEO = RCVTIMEO + self.zmq_socket.setsockopt(zmq.RCVTIMEO, RCVTIMEO) if SNDTIMEO is not None: - self.zmq_socket.SNDTIMEO = SNDTIMEO + self.zmq_socket.setsockopt(zmq.SNDTIMEO, SNDTIMEO) + + # all zmq setsockopt calls must be done before bind/connect is called + if self.mode == 'server': + self.zmq_socket.bind("tcp://*:{}".format(port)) + elif self.mode == 'client': + self.zmq_socket.connect("tcp://{}:{}".format(address, port)) self.poller = zmq.Poller() self.poller.register(self.zmq_socket, zmq.POLLOUT)