diff options
author | Kenneth Giusti <kgiusti@gmail.com> | 2017-03-22 14:51:46 -0400 |
---|---|---|
committer | Kenneth Giusti <kgiusti@gmail.com> | 2017-03-23 13:47:33 -0400 |
commit | 34e326f5aa0ee8486b4f5522eb3b2620ba3b347e (patch) | |
tree | 8f37b8fcb6fe34ea6390c7989c7d8761a664ebfe | |
parent | 2ee6a2a48089035d5115b8addc2045fe3f6a76d8 (diff) | |
download | oslo-messaging-34e326f5aa0ee8486b4f5522eb3b2620ba3b347e.tar.gz |
[zmq] Prevent access to rpc_response_timeout
rpc_response_timeout is not present when sending notifications. All
RPC call requests have a timeout attribute - use that. In the case
where there is no timeout, use retry value if present.
Change-Id: I27a3dd0962a06f15e85e9c9c8c24aa7786c71056
Closes-Bug: 1675510
-rw-r--r-- | oslo_messaging/_cmd/zmq_proxy.py | 3 | ||||
-rw-r--r-- | oslo_messaging/_drivers/zmq_driver/client/publishers/dealer/zmq_dealer_publisher_direct.py | 12 |
2 files changed, 12 insertions, 3 deletions
diff --git a/oslo_messaging/_cmd/zmq_proxy.py b/oslo_messaging/_cmd/zmq_proxy.py index 29bf34e..c0b07c3 100644 --- a/oslo_messaging/_cmd/zmq_proxy.py +++ b/oslo_messaging/_cmd/zmq_proxy.py @@ -19,6 +19,7 @@ from oslo_config import cfg from oslo_messaging._drivers.zmq_driver.proxy import zmq_proxy from oslo_messaging._drivers.zmq_driver import zmq_options from oslo_messaging._i18n import _LI +from oslo_messaging.transport import TransportURL LOG = logging.getLogger(__name__) @@ -29,7 +30,7 @@ def main(): opt_group = cfg.OptGroup(name='zmq_proxy_opts', title='ZeroMQ proxy options') conf.register_opts(zmq_proxy.zmq_proxy_opts, group=opt_group) - zmq_options.register_opts(conf) + zmq_options.register_opts(conf, TransportURL.parse(conf)) zmq_proxy.parse_command_line_args(conf) reactor = zmq_proxy.ZmqProxy(conf) diff --git a/oslo_messaging/_drivers/zmq_driver/client/publishers/dealer/zmq_dealer_publisher_direct.py b/oslo_messaging/_drivers/zmq_driver/client/publishers/dealer/zmq_dealer_publisher_direct.py index 42575fc..6759b34 100644 --- a/oslo_messaging/_drivers/zmq_driver/client/publishers/dealer/zmq_dealer_publisher_direct.py +++ b/oslo_messaging/_drivers/zmq_driver/client/publishers/dealer/zmq_dealer_publisher_direct.py @@ -92,9 +92,17 @@ class DealerPublisherDirect(zmq_dealer_publisher_base.DealerPublisherBase): self.receiver.unregister_socket(socket) def send_request(self, socket, request): + if hasattr(request, 'timeout'): + _stop = tenacity.stop_after_delay(request.timeout) + elif request.retry is not None and request.retry > 0: + # no rpc_response_timeout option if notification + _stop = tenacity.stop_after_attempt(request.retry) + else: + # well, now what? + _stop = tenacity.stop_after_delay(60) + @tenacity.retry(retry=tenacity.retry_if_exception_type(zmq.Again), - stop=tenacity.stop_after_delay( - self.conf.rpc_response_timeout)) + stop=_stop) def send_retrying(): if request.msg_type in zmq_names.MULTISEND_TYPES: for _ in range(socket.connections_count()): |