)]}'
{"oslo_messaging/_drivers/impl_rabbit.py":[{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"fd2c008fd9393a7f6d0b3479a59c9d13e09d4314","unresolved":false,"context_lines":[{"line_number":1073,"context_line":""},{"line_number":1074,"context_line":"                if self._consume_loop_stopped:"},{"line_number":1075,"context_line":"                    # NOTE(kbespalov):cleanup consumers \u0026 delete fanout queues"},{"line_number":1076,"context_line":"                    self.reset()"},{"line_number":1077,"context_line":"                    return"},{"line_number":1078,"context_line":""},{"line_number":1079,"context_line":"                if self._heartbeat_supported_and_enabled():"}],"source_content_type":"text/x-python","patch_set":1,"id":"dada55a8_7e712244","line":1076,"updated":"2016-07-25 12:29:11.000000000","message":"I would prefer to call this in close().","commit_id":"c779ecaad51dcbb58695ca42f1787d04c542c3c9"},{"author":{"_account_id":19520,"name":"Kirill Bespalov","email":"kbespalov@mirantis.com","username":"k.bespalov"},"change_message_id":"b11da572def2c3f92667cdc76f88e48f3abb2c1c","unresolved":false,"context_lines":[{"line_number":1073,"context_line":""},{"line_number":1074,"context_line":"                if self._consume_loop_stopped:"},{"line_number":1075,"context_line":"                    # NOTE(kbespalov):cleanup consumers \u0026 delete fanout queues"},{"line_number":1076,"context_line":"                    self.reset()"},{"line_number":1077,"context_line":"                    return"},{"line_number":1078,"context_line":""},{"line_number":1079,"context_line":"                if self._heartbeat_supported_and_enabled():"}],"source_content_type":"text/x-python","patch_set":1,"id":"dada55a8_a1bedbfc","line":1076,"in_reply_to":"dada55a8_7e712244","updated":"2016-07-25 12:47:10.000000000","message":"Unfortunately, the close() method does not call on shutdown,\nonly stop consuming:\n\n def stop_consuming(self):\n        self._consume_loop_stopped \u003d True\n\nAnd we can\u0027t add close() in _consume method instead of reset(), because stopping consuming does not meaning closing connection.\nAlso if we close connection then \u0027ensure(_consume())\u0027 just recreate connection.","commit_id":"c779ecaad51dcbb58695ca42f1787d04c542c3c9"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"ff8b65f7825f67476eb9d257eae22098ac46e471","unresolved":false,"context_lines":[{"line_number":1073,"context_line":""},{"line_number":1074,"context_line":"                if self._consume_loop_stopped:"},{"line_number":1075,"context_line":"                    # NOTE(kbespalov):cleanup consumers \u0026 delete fanout queues"},{"line_number":1076,"context_line":"                    self.reset()"},{"line_number":1077,"context_line":"                    return"},{"line_number":1078,"context_line":""},{"line_number":1079,"context_line":"                if self._heartbeat_supported_and_enabled():"}],"source_content_type":"text/x-python","patch_set":1,"id":"dada55a8_cfa31f9d","line":1076,"in_reply_to":"dada55a8_a1bedbfc","updated":"2016-07-25 21:39:50.000000000","message":"Stopping consuming doesn\u0027t means we should delete fanout queues and reset everything, otherwise we can\u0027t reconsume it again (even we currently never do that).\n\nAlso close() is called in AMQPListener.cleanup() that is called in server.MessageHandlingServer.wait().\n\nSo if close is not called on shutdown that means the application have missed to call wait() to wait the server to finish to shutdown.","commit_id":"c779ecaad51dcbb58695ca42f1787d04c542c3c9"},{"author":{"_account_id":19520,"name":"Kirill Bespalov","email":"kbespalov@mirantis.com","username":"k.bespalov"},"change_message_id":"0debc9a04b024428057ee1bb4d409d68eef3f8db","unresolved":false,"context_lines":[{"line_number":1073,"context_line":""},{"line_number":1074,"context_line":"                if self._consume_loop_stopped:"},{"line_number":1075,"context_line":"                    # NOTE(kbespalov):cleanup consumers \u0026 delete fanout queues"},{"line_number":1076,"context_line":"                    self.reset()"},{"line_number":1077,"context_line":"                    return"},{"line_number":1078,"context_line":""},{"line_number":1079,"context_line":"                if self._heartbeat_supported_and_enabled():"}],"source_content_type":"text/x-python","patch_set":1,"id":"dada55a8_54179144","line":1076,"in_reply_to":"dada55a8_cfa31f9d","updated":"2016-07-26 16:30:17.000000000","message":"\u003e So if close is not called on shutdown that means the application have missed to call wait() to wait the server to finish to shutdown.\n\nYes, you right, Before I run tests with simulator.py, but it just call server.stop() without following server.wait() in  wrap_sigexit(). \n\nSo, for e.g. neutron-server handle correctly server stopping:\n\n/neutron/common/rpc.py\ndef close(self):\n        for server in self.servers:\n            server.stop()\n        for server in self.servers:\n            server.wait()","commit_id":"c779ecaad51dcbb58695ca42f1787d04c542c3c9"}]}
