)]}'
{"oslo_messaging/_drivers/impl_rabbit.py":[{"author":{"_account_id":8601,"name":"Dmitriy Ukhlov","email":"dukhlov@mirantis.com","username":"dukhlov"},"change_message_id":"758a5ca2663a06cd049d4786599d378beb310c8e","unresolved":false,"context_lines":[{"line_number":181,"context_line":"                    \u0027duration of the TTL are automatically deleted. The \u0027"},{"line_number":182,"context_line":"                    \u0027parameter affects only reply and fanout queues.\u0027),"},{"line_number":183,"context_line":"    cfg.IntOpt(\u0027rabbit_qos_prefetch_count\u0027,"},{"line_number":184,"context_line":"               default\u003d1,"},{"line_number":185,"context_line":"               help\u003d\u0027Specifies the number of messages to prefetch. Setting to \u0027"},{"line_number":186,"context_line":"                    \u0027zero allows unlimited messages.\u0027),"},{"line_number":187,"context_line":"    cfg.IntOpt(\u0027heartbeat_timeout_threshold\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"9abb7d3a_7c988478","line":184,"updated":"2016-06-01 19:36:21.000000000","message":"I don\u0027t think that is good because 1 is not optimal for performance. I have a doubts that it is trues what are you saying (that RabbitMQ will continue to send messages and dont have some limit of unacked messages). But if it is true I suggest consider rabbit_qos_prefetch_count \u003c\u003d 0 value as server server default and just skip executing set_qos method in this case.","commit_id":"f3e4b12fa468d566162f1f299ed271f66b30de5f"},{"author":{"_account_id":8601,"name":"Dmitriy Ukhlov","email":"dukhlov@mirantis.com","username":"dukhlov"},"change_message_id":"571b419b1c60a5b15014fca2b766b095962ef900","unresolved":false,"context_lines":[{"line_number":181,"context_line":"                    \u0027duration of the TTL are automatically deleted. The \u0027"},{"line_number":182,"context_line":"                    \u0027parameter affects only reply and fanout queues.\u0027),"},{"line_number":183,"context_line":"    cfg.IntOpt(\u0027rabbit_qos_prefetch_count\u0027,"},{"line_number":184,"context_line":"               default\u003d1,"},{"line_number":185,"context_line":"               help\u003d\u0027Specifies the number of messages to prefetch. Setting to \u0027"},{"line_number":186,"context_line":"                    \u0027zero allows unlimited messages.\u0027),"},{"line_number":187,"context_line":"    cfg.IntOpt(\u0027heartbeat_timeout_threshold\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"9abb7d3a_ee23faa5","line":184,"in_reply_to":"9abb7d3a_5825ac08","updated":"2016-06-02 10:27:16.000000000","message":"Maybe do you mean \"rabbit_qos_prefetch_count \u003e 0\" ?\nNo. I have meant that is rabbit_qos_prefetch_count \u003e 0 we should use this value and execute set_qos(rabbit_qos_prefetch_count). but if rabbit_qos_prefetch_count \u003c\u003d 0 just skip executing set_qos(rabbit_qos_prefetch_count) and let RabbitMQ to use its defaults\n\nTo reproduce this problem just add time.sleep(999999999) into rpc endpoint of simulator and then run a rpc client.AMQPListener steal all messages from the queue and put them into work queue of executor (all workers in this time are sleep) without ack (because workers sent ack).\n\nok, but if executor has (or should has max worker count and stop consuming should be blocked too if all workers are blocked). Anyway it seems to me that this change will not fix your issue because messages continue to be acknowledged\nand setting rabbit_qos_prefetch_count will not help (it limits cont of not acked messages)","commit_id":"f3e4b12fa468d566162f1f299ed271f66b30de5f"},{"author":{"_account_id":19520,"name":"Kirill Bespalov","email":"kbespalov@mirantis.com","username":"k.bespalov"},"change_message_id":"234e8682f9c6bb02fcc94add7fc53fd70b5f305b","unresolved":false,"context_lines":[{"line_number":181,"context_line":"                    \u0027duration of the TTL are automatically deleted. The \u0027"},{"line_number":182,"context_line":"                    \u0027parameter affects only reply and fanout queues.\u0027),"},{"line_number":183,"context_line":"    cfg.IntOpt(\u0027rabbit_qos_prefetch_count\u0027,"},{"line_number":184,"context_line":"               default\u003d1,"},{"line_number":185,"context_line":"               help\u003d\u0027Specifies the number of messages to prefetch. Setting to \u0027"},{"line_number":186,"context_line":"                    \u0027zero allows unlimited messages.\u0027),"},{"line_number":187,"context_line":"    cfg.IntOpt(\u0027heartbeat_timeout_threshold\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"9abb7d3a_5825ac08","line":184,"in_reply_to":"9abb7d3a_7c988478","updated":"2016-06-02 10:07:30.000000000","message":"Maybe do you mean \"rabbit_qos_prefetch_count \u003e 0\" ?\n\nTo reproduce this problem just add time.sleep(999999999) into rpc endpoint of simulator and then run a rpc client.AMQPListener steal all messages from the queue and put them into work queue of executor (all workers in this time are sleep) without ack (because workers sent ack).\n\nAbout perfomance: when we talk about RPC Servers, the bottleneck in this case is a executor, not msg transport or the broker.If workers are stuck or maybe they overloaded we need to stop msg consuming.","commit_id":"f3e4b12fa468d566162f1f299ed271f66b30de5f"},{"author":{"_account_id":19520,"name":"Kirill Bespalov","email":"kbespalov@mirantis.com","username":"k.bespalov"},"change_message_id":"3eab8c071a7507597c5aea6735eb539db4210aea","unresolved":false,"context_lines":[{"line_number":181,"context_line":"                    \u0027duration of the TTL are automatically deleted. The \u0027"},{"line_number":182,"context_line":"                    \u0027parameter affects only reply and fanout queues.\u0027),"},{"line_number":183,"context_line":"    cfg.IntOpt(\u0027rabbit_qos_prefetch_count\u0027,"},{"line_number":184,"context_line":"               default\u003d1,"},{"line_number":185,"context_line":"               help\u003d\u0027Specifies the number of messages to prefetch. Setting to \u0027"},{"line_number":186,"context_line":"                    \u0027zero allows unlimited messages.\u0027),"},{"line_number":187,"context_line":"    cfg.IntOpt(\u0027heartbeat_timeout_threshold\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"9abb7d3a_8e922ef5","line":184,"in_reply_to":"9abb7d3a_ee23faa5","updated":"2016-06-02 10:42:11.000000000","message":"The max_workers it\u0027s the limit for threads count,\nnot for size of working queue (it does not have any limits).\n\nMessage ack doing by worker in executor. If all workers are stuck or busy, the new msg just puts by AMQPListener into working queue without ack. \n\nSo, in this time the broker looks that one msg is no ack (qos\u003d1), and stops send the new msgs until msg not be ack.","commit_id":"f3e4b12fa468d566162f1f299ed271f66b30de5f"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"b7c06158b90bc8f2a52ad552395d721507a8ec66","unresolved":false,"context_lines":[{"line_number":181,"context_line":"                    \u0027duration of the TTL are automatically deleted. The \u0027"},{"line_number":182,"context_line":"                    \u0027parameter affects only reply and fanout queues.\u0027),"},{"line_number":183,"context_line":"    cfg.IntOpt(\u0027rabbit_qos_prefetch_count\u0027,"},{"line_number":184,"context_line":"               default\u003d100,"},{"line_number":185,"context_line":"               help\u003d\u0027Specifies the number of messages to prefetch. Setting to \u0027"},{"line_number":186,"context_line":"                    \u0027zero allows unlimited messages.\u0027),"},{"line_number":187,"context_line":"    cfg.IntOpt(\u0027heartbeat_timeout_threshold\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"dada55a8_46514362","line":184,"updated":"2016-07-18 06:49:06.000000000","message":"The commit message says 64.","commit_id":"f1a7dd9f93958f6fb555f29b9faed04299f559a7"}],"oslo_messaging/tests/utils.py":[{"author":{"_account_id":8601,"name":"Dmitriy Ukhlov","email":"dukhlov@mirantis.com","username":"dukhlov"},"change_message_id":"a9fda556b48bd078e5954e48af246404e46c73b7","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        self.messaging_conf \u003d self.useFixture(conffixture.ConfFixture(conf))"},{"line_number":39,"context_line":"        self.messaging_conf.transport_driver \u003d \u0027fake\u0027"},{"line_number":40,"context_line":"        self.conf \u003d self.messaging_conf.conf"},{"line_number":41,"context_line":"        # to make writing tests without a mandatory msg acknowledgement"},{"line_number":42,"context_line":"        self.config(rabbit_qos_prefetch_count\u003d0,"},{"line_number":43,"context_line":"                    group\u003d\"oslo_messaging_rabbit\")"},{"line_number":44,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_793910a4","line":41,"updated":"2016-06-07 17:33:34.000000000","message":"I would say that it is not very good to write tests which uses oslo.messaging in wrong manner.","commit_id":"53fbc252c46a01c9688f0dd02be58688de52e5d6"},{"author":{"_account_id":19520,"name":"Kirill Bespalov","email":"kbespalov@mirantis.com","username":"k.bespalov"},"change_message_id":"c752d6d93dfb41ae20cdd5fa5c66390be16a75eb","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        self.messaging_conf \u003d self.useFixture(conffixture.ConfFixture(conf))"},{"line_number":39,"context_line":"        self.messaging_conf.transport_driver \u003d \u0027fake\u0027"},{"line_number":40,"context_line":"        self.conf \u003d self.messaging_conf.conf"},{"line_number":41,"context_line":"        # to make writing tests without a mandatory msg acknowledgement"},{"line_number":42,"context_line":"        self.config(rabbit_qos_prefetch_count\u003d0,"},{"line_number":43,"context_line":"                    group\u003d\"oslo_messaging_rabbit\")"},{"line_number":44,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_8871727a","line":41,"in_reply_to":"7aa08908_793910a4","updated":"2016-06-09 17:55:59.000000000","message":"All impl_rabbit tests are written when qos was 0.\nIf we don\u0027t fix it here, they are all fails. \nNobody use msg.ack() in unit tests, because it does not make sense and complicates testing.","commit_id":"53fbc252c46a01c9688f0dd02be58688de52e5d6"},{"author":{"_account_id":8601,"name":"Dmitriy Ukhlov","email":"dukhlov@mirantis.com","username":"dukhlov"},"change_message_id":"011256c9fcf187ed829b12dfe2e94d87f2d73063","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        self.messaging_conf \u003d self.useFixture(conffixture.ConfFixture(conf))"},{"line_number":39,"context_line":"        self.messaging_conf.transport_driver \u003d \u0027fake\u0027"},{"line_number":40,"context_line":"        self.conf \u003d self.messaging_conf.conf"},{"line_number":41,"context_line":"        # to make writing tests without a mandatory msg acknowledgement"},{"line_number":42,"context_line":"        self.config(rabbit_qos_prefetch_count\u003d0,"},{"line_number":43,"context_line":"                    group\u003d\"oslo_messaging_rabbit\")"},{"line_number":44,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_e7677ce8","line":41,"in_reply_to":"7aa08908_8871727a","updated":"2016-06-09 20:34:58.000000000","message":"from my perspective this patch changes behaviour logic and tests should be adapted to test new behaviour. We shouldn\u0027t adapt our code to pass existing tests, because in fact we will test something else. And  I don\u0027t think that adding one string per test is so significant complication.","commit_id":"53fbc252c46a01c9688f0dd02be58688de52e5d6"}]}
