)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"9a19f2bfe844eed5ca3b53f35d131915b68d9e5a","unresolved":false,"context_lines":[{"line_number":13,"context_line":"treat all unknown exceptions as recoverable errors."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: I2f65d2ee19a8c3e9a323b30404abbf0cbb45a216"},{"line_number":16,"context_line":"Closes-Bug: #1705351"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"df3967d1_09d2d800","line":16,"updated":"2017-08-03 17:50:27.000000000","message":"the patch is fine, but I am not sure about why it Closes the bug. Ideally, oslo.messaging would catch NotFound and retry, (that should give us the exchange and successful fanout)","commit_id":"7cdad831946ca97da9874ae27245eefa311a097f"},{"author":{"_account_id":8770,"name":"Ken Giusti","email":"kgiusti@gmail.com","username":"kgiusti"},"change_message_id":"022b9beaeae23d00106b135a786bff15a0632972","unresolved":false,"context_lines":[{"line_number":13,"context_line":"treat all unknown exceptions as recoverable errors."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: I2f65d2ee19a8c3e9a323b30404abbf0cbb45a216"},{"line_number":16,"context_line":"Closes-Bug: #1705351"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"df3967d1_33373002","line":16,"in_reply_to":"df3967d1_09d2d800","updated":"2017-08-04 15:21:48.000000000","message":"I\u0027ve been messing around a bit with a simple reproducer:\n\nhttps://paste.fedoraproject.org/paste/~Ms1evVnro4ylRtjKpGy7Q\n\nKombu\u0027s autoretry functionality will retry only if the called method raises a \"recoverable\" channel or connection error.  A recoverable/nonrecoverable error is defined by the amqp library, example:\n\nhttps://github.com/celery/py-amqp/blob/master/amqp/exceptions.py#L130\n\nAnd NotFound (among others) is defined as a non-recoverable channel error.\n\nYour suggestion would amount to changing oslo.messaging to add an additional level of recovery/retry in the case of these unrecoverable errors.  (please correct me if my assumption is incorrect).\n\nNot sure how much risk (if any) would be introduced with such a change - one risk being modifying the existing behavior in a way that causes problems with other existing projects (maybe duplication?).\n\nMehdi has more background that I do on this particular autoretry code - I\u0027d be more comfortable hearing his opinions on such a change.","commit_id":"7cdad831946ca97da9874ae27245eefa311a097f"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"637c096cb26d34bf5da5f796873b8f7e15ac1e91","unresolved":false,"context_lines":[{"line_number":31,"context_line":"do is clean up state and log the heck out of it."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"Change-Id: I2f65d2ee19a8c3e9a323b30404abbf0cbb45a216"},{"line_number":34,"context_line":"Closes-Bug: #1705351"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"bf3e73b7_a1dc8874","line":34,"updated":"2017-08-07 16:07:05.000000000","message":"closes bug https://bugs.launchpad.net/nova/+bug/1707160 ?","commit_id":"3f3bde253971bf624821435ae7a39e5d8c56fe39"},{"author":{"_account_id":8770,"name":"Ken Giusti","email":"kgiusti@gmail.com","username":"kgiusti"},"change_message_id":"6c18eb5e99a472f0aea73f80ec43425b70753c84","unresolved":false,"context_lines":[{"line_number":31,"context_line":"do is clean up state and log the heck out of it."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"Change-Id: I2f65d2ee19a8c3e9a323b30404abbf0cbb45a216"},{"line_number":34,"context_line":"Closes-Bug: #1705351"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"9f436f4f_dfbf39fa","line":34,"in_reply_to":"bf3e73b7_a1dc8874","updated":"2017-08-21 13:38:02.000000000","message":"Done","commit_id":"3f3bde253971bf624821435ae7a39e5d8c56fe39"}],"oslo_messaging/_drivers/impl_rabbit.py":[{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"ddd164c58fc4b2a0b957d2c74cfb13344d50be64","unresolved":false,"context_lines":[{"line_number":815,"context_line":"            if isinstance(exc, kombu.exceptions.OperationalError):"},{"line_number":816,"context_line":"                msg \u003d \"Received recoverable error from kombu:\""},{"line_number":817,"context_line":"            else:"},{"line_number":818,"context_line":"                msg \u003d \"Received unexpected exception from kombu:\""},{"line_number":819,"context_line":"            LOG.debug(msg, exc_info\u003dTrue)"},{"line_number":820,"context_line":"            error_callback and error_callback(exc)"},{"line_number":821,"context_line":"            self._set_current_channel(None)"}],"source_content_type":"text/x-python","patch_set":2,"id":"df3967d1_0923f857","line":818,"updated":"2017-08-03 17:40:59.000000000","message":"is it really unexpected when we get NotFound? The exchange may vanish at any moment in time, and the library should be prepared for that (by repeating the request?)","commit_id":"7cdad831946ca97da9874ae27245eefa311a097f"},{"author":{"_account_id":8770,"name":"Ken Giusti","email":"kgiusti@gmail.com","username":"kgiusti"},"change_message_id":"614b2e6d392d84dc96b9bfebcbfdec2b88acecfa","unresolved":false,"context_lines":[{"line_number":815,"context_line":"            if isinstance(exc, kombu.exceptions.OperationalError):"},{"line_number":816,"context_line":"                msg \u003d \"Received recoverable error from kombu:\""},{"line_number":817,"context_line":"            else:"},{"line_number":818,"context_line":"                msg \u003d \"Received unexpected exception from kombu:\""},{"line_number":819,"context_line":"            LOG.debug(msg, exc_info\u003dTrue)"},{"line_number":820,"context_line":"            error_callback and error_callback(exc)"},{"line_number":821,"context_line":"            self._set_current_channel(None)"}],"source_content_type":"text/x-python","patch_set":2,"id":"df3967d1_8e910ff4","line":818,"in_reply_to":"df3967d1_0923f857","updated":"2017-08-04 15:33:59.000000000","message":"Let me modify that log - that level of distinction is a bit much for a debug message.","commit_id":"7cdad831946ca97da9874ae27245eefa311a097f"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"eff58576a47ce9ee9c92b2a3160dca4093514fad","unresolved":false,"context_lines":[{"line_number":815,"context_line":"            if isinstance(exc, kombu.exceptions.OperationalError):"},{"line_number":816,"context_line":"                msg \u003d \"Received recoverable error from kombu:\""},{"line_number":817,"context_line":"            else:"},{"line_number":818,"context_line":"                msg \u003d \"Received unexpected exception from kombu:\""},{"line_number":819,"context_line":"            LOG.debug(msg, exc_info\u003dTrue)"},{"line_number":820,"context_line":"            error_callback and error_callback(exc)"},{"line_number":821,"context_line":"            self._set_current_channel(None)"}],"source_content_type":"text/x-python","patch_set":2,"id":"df3967d1_6931645a","line":818,"in_reply_to":"df3967d1_0923f857","updated":"2017-08-03 17:53:21.000000000","message":"On second thought, retry is of no value since there are no consumers. Then maybe we should swallow NotFound and return None?","commit_id":"7cdad831946ca97da9874ae27245eefa311a097f"},{"author":{"_account_id":8770,"name":"Ken Giusti","email":"kgiusti@gmail.com","username":"kgiusti"},"change_message_id":"614b2e6d392d84dc96b9bfebcbfdec2b88acecfa","unresolved":false,"context_lines":[{"line_number":815,"context_line":"            if isinstance(exc, kombu.exceptions.OperationalError):"},{"line_number":816,"context_line":"                msg \u003d \"Received recoverable error from kombu:\""},{"line_number":817,"context_line":"            else:"},{"line_number":818,"context_line":"                msg \u003d \"Received unexpected exception from kombu:\""},{"line_number":819,"context_line":"            LOG.debug(msg, exc_info\u003dTrue)"},{"line_number":820,"context_line":"            error_callback and error_callback(exc)"},{"line_number":821,"context_line":"            self._set_current_channel(None)"}],"source_content_type":"text/x-python","patch_set":2,"id":"df3967d1_eeebfb74","line":818,"in_reply_to":"df3967d1_6931645a","updated":"2017-08-04 15:33:59.000000000","message":"Swallowing the exception is probably ok in the case of the best effort cast() and fanout, but for things like notifications and call I would recommend raising the (proper) exception.\n\nHowever I would only go forward with such a change if Mehdi and Dims saw it as safe and correct.","commit_id":"7cdad831946ca97da9874ae27245eefa311a097f"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"5f9a3602daa52f72516358dfd595d444a2b0dedb","unresolved":false,"context_lines":[{"line_number":815,"context_line":"            if isinstance(exc, kombu.exceptions.OperationalError):"},{"line_number":816,"context_line":"                msg \u003d \"Received recoverable error from kombu:\""},{"line_number":817,"context_line":"            else:"},{"line_number":818,"context_line":"                msg \u003d \"Received unexpected exception from kombu:\""},{"line_number":819,"context_line":"            LOG.debug(msg, exc_info\u003dTrue)"},{"line_number":820,"context_line":"            error_callback and error_callback(exc)"},{"line_number":821,"context_line":"            self._set_current_channel(None)"}],"source_content_type":"text/x-python","patch_set":2,"id":"df3967d1_d639edd6","line":818,"in_reply_to":"df3967d1_eeebfb74","updated":"2017-08-04 17:18:11.000000000","message":"OK, I guess we can live with https://github.com/openstack/neutron/blob/master/neutron/common/rpc.py#L110-L115 in the meantime. As long as you clean up the channel for later casts, I think we are fine.","commit_id":"7cdad831946ca97da9874ae27245eefa311a097f"}],"oslo_messaging/tests/drivers/test_impl_rabbit.py":[{"author":{"_account_id":14758,"name":"Rajath Agasthya","email":"rajagast@cisco.com","username":"rajathagasthya"},"change_message_id":"c5e0f365035cef6fe87bead907893b6c192ecbb6","unresolved":false,"context_lines":[{"line_number":291,"context_line":"        transport \u003d oslo_messaging.get_transport(self.conf,"},{"line_number":292,"context_line":"                                                 \u0027kombu+memory:////\u0027)"},{"line_number":293,"context_line":"        exchange_mock \u003d mock.Mock()"},{"line_number":294,"context_line":"        with transport._driver._get_connection("},{"line_number":295,"context_line":"                driver_common.PURPOSE_SEND) as pool_conn:"},{"line_number":296,"context_line":"            conn \u003d pool_conn.connection"},{"line_number":297,"context_line":"            with mock.patch(\u0027kombu.messaging.Producer.publish\u0027,"},{"line_number":298,"context_line":"                            side_effect\u003dbad_exc):"},{"line_number":299,"context_line":"                self.assertRaises(MessageDeliveryFailure,"},{"line_number":300,"context_line":"                                  conn._ensure_publishing,"},{"line_number":301,"context_line":"                                  conn._publish, exchange_mock, \u0027msg\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff346bd7_d6dce275","line":298,"range":{"start_line":294,"start_character":8,"end_line":298,"end_character":49},"updated":"2017-07-24 18:08:15.000000000","message":"Optional: You can have multiple context managers in a single \u0027with\u0027 statement here. \n  \n  with A() as a, B() as b:\n      do_something()","commit_id":"174b6fb1b7fb8df381ed9f14993278dd324be576"},{"author":{"_account_id":8770,"name":"Ken Giusti","email":"kgiusti@gmail.com","username":"kgiusti"},"change_message_id":"c70c4dee5730e8cc30de87fceb5cf30d50907021","unresolved":false,"context_lines":[{"line_number":291,"context_line":"        transport \u003d oslo_messaging.get_transport(self.conf,"},{"line_number":292,"context_line":"                                                 \u0027kombu+memory:////\u0027)"},{"line_number":293,"context_line":"        exchange_mock \u003d mock.Mock()"},{"line_number":294,"context_line":"        with transport._driver._get_connection("},{"line_number":295,"context_line":"                driver_common.PURPOSE_SEND) as pool_conn:"},{"line_number":296,"context_line":"            conn \u003d pool_conn.connection"},{"line_number":297,"context_line":"            with mock.patch(\u0027kombu.messaging.Producer.publish\u0027,"},{"line_number":298,"context_line":"                            side_effect\u003dbad_exc):"},{"line_number":299,"context_line":"                self.assertRaises(MessageDeliveryFailure,"},{"line_number":300,"context_line":"                                  conn._ensure_publishing,"},{"line_number":301,"context_line":"                                  conn._publish, exchange_mock, \u0027msg\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff346bd7_88e82be2","line":298,"range":{"start_line":294,"start_character":8,"end_line":298,"end_character":49},"in_reply_to":"ff346bd7_d6dce275","updated":"2017-07-26 14:18:20.000000000","message":"Good point, however the other tests use nesting context managers and I\u0027d rather keep the code consistent with the other tests.","commit_id":"174b6fb1b7fb8df381ed9f14993278dd324be576"}]}
