9d8b1430e5

In a clustered rabbitmq when a node disappears, we get a ConnectionRefusedError because the socket get disconnected. The socket access yields a OSError because the heartbeat tries to reach an unreachable host (No route to host). Catch these exceptions to ensure that we call ensure_connection for switching the connection destination. POC is available at github.com:4383/rabbitmq-oslo_messging-error-poc Example: $ git clone git@github.com:4383/rabbitmq-oslo_messging-error-poc $ cd rabbitmq-oslo_messging-error-poc $ python -m virtualenv . $ source bin/activate $ pip install -r requirements.txt $ sudo podman run -d --hostname my-rabbit --name rabbit rabbitmq:3 $ python poc.py $(sudo podman inspect rabbit | niet '.[0].NetworkSettings.IPAddress') And in parallele in an another shell|tmux $ podman stop rabbit $ # observe the output of the poc.py script we now call ensure_connection Now you can observe some output relative to the connection who is modified and not catched before these changes. Related to: https://bugzilla.redhat.com/show_bug.cgi?id=1665399 Closes-Bug: #1828841 Change-Id: I9dc1644cac0e39eb11bf05f57bde77dcf6d42ed3
Team and repository tags
Oslo Messaging Library
The Oslo messaging API supports RPC and notifications over a number of different messaging transports.
- License: Apache License, Version 2.0
- Documentation: https://docs.openstack.org/oslo.messaging/latest/
- Source: https://git.openstack.org/cgit/openstack/oslo.messaging
- Bugs: https://bugs.launchpad.net/oslo.messaging
- Release notes: https://docs.openstack.org/releasenotes/oslo.messaging/
Description
Languages
Python
99.8%
Shell
0.2%