)]}'
{"oslo/messaging/_drivers/amqpdriver.py":[{"author":{"_account_id":9493,"name":"Terry Yao","email":"yaohaif@cn.ibm.com","username":"terryyao"},"change_message_id":"b914175e4ed1c559f093e32d9ef6916892857abc","unresolved":false,"context_lines":[{"line_number":439,"context_line":"            conn.declare_topic_consumer("},{"line_number":440,"context_line":"                exchange_name\u003dself._get_exchange(target),"},{"line_number":441,"context_line":"                topic\u003d\u0027%s.%s\u0027 % (target.topic, priority),"},{"line_number":442,"context_line":"                callback\u003dlistener, queue_name\u003dpool)"},{"line_number":443,"context_line":"        return listener"},{"line_number":444,"context_line":""},{"line_number":445,"context_line":"    def cleanup(self):"}],"source_content_type":"text/x-python","patch_set":7,"id":"9aa7fdbe_98869412","line":442,"updated":"2014-10-29 08:09:17.000000000","message":"do we need different queue_name for each \u0027target, priority\u0027? not one queue for all levels? it should be working if we use the same queue_name for all levels message.","commit_id":"56770711b9b7cbf90f0dac1322610e478cce262d"}],"oslo/messaging/_drivers/impl_fake.py":[{"author":{"_account_id":7536,"name":"Ilya Pekelny","email":"ipekelny@mirantis.com","username":"I159"},"change_message_id":"58a5a9c362682f6374cf0969b2f00d6cfa30c34d","unresolved":false,"context_lines":[{"line_number":98,"context_line":"            # NOTE(sileht): if the pool name is set, we need to"},{"line_number":99,"context_line":"            # copy all the already delivered messages from the"},{"line_number":100,"context_line":"            # default queue to this queue"},{"line_number":101,"context_line":"            self._topic_queues[(topic, pool)] \u003d copy.deepcopy("},{"line_number":102,"context_line":"                self._get_topic_queue(topic))"},{"line_number":103,"context_line":"        return self._topic_queues.setdefault((topic, pool), [])"},{"line_number":104,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"baa201ad_18c6104a","line":101,"updated":"2014-10-10 10:18:04.000000000","message":"It seems to me unobvious decision to use tuple as dict key. Syntactically it is ok but it can confuse when you will get something from key using index, just like in 121 line. Let think about how to change this approach.","commit_id":"153c95c13a91e74841eba227ce9a114d483e290d"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"2e79283265a774a234106780bda32104056b4b5d","unresolved":false,"context_lines":[{"line_number":98,"context_line":"            # NOTE(sileht): if the pool name is set, we need to"},{"line_number":99,"context_line":"            # copy all the already delivered messages from the"},{"line_number":100,"context_line":"            # default queue to this queue"},{"line_number":101,"context_line":"            self._topic_queues[(topic, pool)] \u003d copy.deepcopy("},{"line_number":102,"context_line":"                self._get_topic_queue(topic))"},{"line_number":103,"context_line":"        return self._topic_queues.setdefault((topic, pool), [])"},{"line_number":104,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"baa201ad_6b1b7e1c","line":101,"in_reply_to":"baa201ad_18c6104a","updated":"2014-10-14 07:43:19.000000000","message":"The fanout stuffs already do that, I don\u0027t see the problem here.","commit_id":"153c95c13a91e74841eba227ce9a114d483e290d"}],"oslo/messaging/_drivers/impl_zmq.py":[{"author":{"_account_id":7536,"name":"Ilya Pekelny","email":"ipekelny@mirantis.com","username":"I159"},"change_message_id":"58a5a9c362682f6374cf0969b2f00d6cfa30c34d","unresolved":false,"context_lines":[{"line_number":981,"context_line":"        # NOTE(sileht): this listener implementation is limited"},{"line_number":982,"context_line":"        # because zeromq doesn\u0027t support requeing message"},{"line_number":983,"context_line":"        # NOTE(sileht): this listener implementation is limited"},{"line_number":984,"context_line":"        # because zeromq doesn\u0027t support pool"},{"line_number":985,"context_line":"        conn \u003d create_connection(self.conf)"},{"line_number":986,"context_line":""},{"line_number":987,"context_line":"        listener \u003d ZmqListener(self)"}],"source_content_type":"text/x-python","patch_set":5,"id":"baa201ad_d38709d6","line":984,"updated":"2014-10-10 10:18:04.000000000","message":"Just append the note above.","commit_id":"153c95c13a91e74841eba227ce9a114d483e290d"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"2e79283265a774a234106780bda32104056b4b5d","unresolved":false,"context_lines":[{"line_number":981,"context_line":"        # NOTE(sileht): this listener implementation is limited"},{"line_number":982,"context_line":"        # because zeromq doesn\u0027t support requeing message"},{"line_number":983,"context_line":"        # NOTE(sileht): this listener implementation is limited"},{"line_number":984,"context_line":"        # because zeromq doesn\u0027t support pool"},{"line_number":985,"context_line":"        conn \u003d create_connection(self.conf)"},{"line_number":986,"context_line":""},{"line_number":987,"context_line":"        listener \u003d ZmqListener(self)"}],"source_content_type":"text/x-python","patch_set":5,"id":"baa201ad_6bc9be78","line":984,"in_reply_to":"baa201ad_d38709d6","updated":"2014-10-14 07:43:19.000000000","message":"Done","commit_id":"153c95c13a91e74841eba227ce9a114d483e290d"}],"oslo/messaging/_drivers/protocols/amqp/driver.py":[{"author":{"_account_id":7536,"name":"Ilya Pekelny","email":"ipekelny@mirantis.com","username":"I159"},"change_message_id":"58a5a9c362682f6374cf0969b2f00d6cfa30c34d","unresolved":false,"context_lines":[{"line_number":269,"context_line":"        LOG.debug(\"Listen for notifications %s\", targets_and_priorities)"},{"line_number":270,"context_line":"        if pool is not None:"},{"line_number":271,"context_line":"            raise NotImplementedError(\u0027\"pool\" not implemented by\u0027"},{"line_number":272,"context_line":"                                      \u0027this transport driver\u0027)"},{"line_number":273,"context_line":"        listener \u003d ProtonListener(self)"},{"line_number":274,"context_line":"        for target, priority in targets_and_priorities:"},{"line_number":275,"context_line":"            topic \u003d \u0027%s.%s\u0027 % (target.topic, priority)"}],"source_content_type":"text/x-python","patch_set":5,"id":"baa201ad_73ed7d8e","line":272,"updated":"2014-10-10 10:18:04.000000000","message":"Have you access to a transport driver in the method? This error message lack of information.","commit_id":"153c95c13a91e74841eba227ce9a114d483e290d"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"2e79283265a774a234106780bda32104056b4b5d","unresolved":false,"context_lines":[{"line_number":269,"context_line":"        LOG.debug(\"Listen for notifications %s\", targets_and_priorities)"},{"line_number":270,"context_line":"        if pool is not None:"},{"line_number":271,"context_line":"            raise NotImplementedError(\u0027\"pool\" not implemented by\u0027"},{"line_number":272,"context_line":"                                      \u0027this transport driver\u0027)"},{"line_number":273,"context_line":"        listener \u003d ProtonListener(self)"},{"line_number":274,"context_line":"        for target, priority in targets_and_priorities:"},{"line_number":275,"context_line":"            topic \u003d \u0027%s.%s\u0027 % (target.topic, priority)"}],"source_content_type":"text/x-python","patch_set":5,"id":"baa201ad_4b54fa53","line":272,"in_reply_to":"baa201ad_73ed7d8e","updated":"2014-10-14 07:43:19.000000000","message":"This is the transport dirver.","commit_id":"153c95c13a91e74841eba227ce9a114d483e290d"},{"author":{"_account_id":7536,"name":"Ilya Pekelny","email":"ipekelny@mirantis.com","username":"I159"},"change_message_id":"2942cec349fb8241944bd9e7406e512a628b6965","unresolved":false,"context_lines":[{"line_number":267,"context_line":"    @_ensure_connect_called"},{"line_number":268,"context_line":"    def listen_for_notifications(self, targets_and_priorities, pool):"},{"line_number":269,"context_line":"        LOG.debug(\"Listen for notifications %s\", targets_and_priorities)"},{"line_number":270,"context_line":"        if pool is not None:"},{"line_number":271,"context_line":"            raise NotImplementedError(\u0027\"pool\" not implemented by\u0027"},{"line_number":272,"context_line":"                                      \u0027this transport driver\u0027)"},{"line_number":273,"context_line":"        listener \u003d ProtonListener(self)"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a8c0949_4fedf424","line":270,"updated":"2014-11-05 14:52:58.000000000","message":"Maybe I have lost something but it seems to me strange to raise NotImplementedError when pool is not None.","commit_id":"56770711b9b7cbf90f0dac1322610e478cce262d"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"c9f2fdb2df1c0a901cd276fe5487bea71ca908ae","unresolved":false,"context_lines":[{"line_number":267,"context_line":"    @_ensure_connect_called"},{"line_number":268,"context_line":"    def listen_for_notifications(self, targets_and_priorities, pool):"},{"line_number":269,"context_line":"        LOG.debug(\"Listen for notifications %s\", targets_and_priorities)"},{"line_number":270,"context_line":"        if pool is not None:"},{"line_number":271,"context_line":"            raise NotImplementedError(\u0027\"pool\" not implemented by\u0027"},{"line_number":272,"context_line":"                                      \u0027this transport driver\u0027)"},{"line_number":273,"context_line":"        listener \u003d ProtonListener(self)"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a8c0949_caab921c","line":270,"in_reply_to":"7a8c0949_4fedf424","updated":"2014-11-05 16:43:54.000000000","message":"Good catch, Done","commit_id":"56770711b9b7cbf90f0dac1322610e478cce262d"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"f4646e8bc545a469130200428b5ba0d2013d5359","unresolved":false,"context_lines":[{"line_number":267,"context_line":"    @_ensure_connect_called"},{"line_number":268,"context_line":"    def listen_for_notifications(self, targets_and_priorities, pool):"},{"line_number":269,"context_line":"        LOG.debug(\"Listen for notifications %s\", targets_and_priorities)"},{"line_number":270,"context_line":"        if not pool:"},{"line_number":271,"context_line":"            raise NotImplementedError(\u0027\"pool\" not implemented by\u0027"},{"line_number":272,"context_line":"                                      \u0027this transport driver\u0027)"},{"line_number":273,"context_line":"        listener \u003d ProtonListener(self)"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a890539_7ad077f6","line":270,"updated":"2014-11-14 08:59:44.000000000","message":"I think you meant:\n\n  if pool:\n    raise ....","commit_id":"0f1ba62b58878c37af743adf705d96a1778ba40d"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"e709852e9cbc6ce13a49076d3197dee1b19a4c95","unresolved":false,"context_lines":[{"line_number":267,"context_line":"    @_ensure_connect_called"},{"line_number":268,"context_line":"    def listen_for_notifications(self, targets_and_priorities, pool):"},{"line_number":269,"context_line":"        LOG.debug(\"Listen for notifications %s\", targets_and_priorities)"},{"line_number":270,"context_line":"        if not pool:"},{"line_number":271,"context_line":"            raise NotImplementedError(\u0027\"pool\" not implemented by\u0027"},{"line_number":272,"context_line":"                                      \u0027this transport driver\u0027)"},{"line_number":273,"context_line":"        listener \u003d ProtonListener(self)"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a890539_056634c1","line":270,"in_reply_to":"5a890539_7ad077f6","updated":"2014-11-14 09:20:40.000000000","message":"Done","commit_id":"0f1ba62b58878c37af743adf705d96a1778ba40d"}],"oslo/messaging/_executors/impl_blocking.py":[{"author":{"_account_id":7536,"name":"Ilya Pekelny","email":"ipekelny@mirantis.com","username":"I159"},"change_message_id":"58a5a9c362682f6374cf0969b2f00d6cfa30c34d","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    def start(self):"},{"line_number":37,"context_line":"        self._running \u003d True"},{"line_number":38,"context_line":"        while self._running:"},{"line_number":39,"context_line":"            message \u003d self.listener.poll(timeout\u003d0.01)"},{"line_number":40,"context_line":"            if not message:"},{"line_number":41,"context_line":"                continue"},{"line_number":42,"context_line":"            with self.dispatcher(message) as callback:"}],"source_content_type":"text/x-python","patch_set":5,"id":"baa201ad_73949de8","line":39,"updated":"2014-10-10 10:18:04.000000000","message":"How is this change related to pools implementation?","commit_id":"153c95c13a91e74841eba227ce9a114d483e290d"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"2e79283265a774a234106780bda32104056b4b5d","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    def start(self):"},{"line_number":37,"context_line":"        self._running \u003d True"},{"line_number":38,"context_line":"        while self._running:"},{"line_number":39,"context_line":"            message \u003d self.listener.poll(timeout\u003d0.01)"},{"line_number":40,"context_line":"            if not message:"},{"line_number":41,"context_line":"                continue"},{"line_number":42,"context_line":"            with self.dispatcher(message) as callback:"}],"source_content_type":"text/x-python","patch_set":5,"id":"baa201ad_8b1a6215","line":39,"in_reply_to":"baa201ad_73949de8","updated":"2014-10-14 07:43:19.000000000","message":"Thanks, removed","commit_id":"153c95c13a91e74841eba227ce9a114d483e290d"},{"author":{"_account_id":7536,"name":"Ilya Pekelny","email":"ipekelny@mirantis.com","username":"I159"},"change_message_id":"429d620a9dd0a252935d38fbd83e2b3128b2f2c2","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    def start(self):"},{"line_number":37,"context_line":"        self._running \u003d True"},{"line_number":38,"context_line":"        while self._running:"},{"line_number":39,"context_line":"            message \u003d self.listener.poll(timeout\u003d0.01)"},{"line_number":40,"context_line":"            if not message:"},{"line_number":41,"context_line":"                continue"},{"line_number":42,"context_line":"            with self.dispatcher(message) as callback:"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a8c0949_9e21c9b6","line":39,"updated":"2014-11-06 08:59:31.000000000","message":"This is a part of the unrelated change. If your patch really need this change, make a chain and implement it in a previous patch in the chain. Now it is a cause of an error.","commit_id":"66240172e3ac57e24bdbc8a165dad1d5480f7fe5"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"d7720fbec024f536dc445f94c909fb32f2c3ccb5","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    def start(self):"},{"line_number":37,"context_line":"        self._running \u003d True"},{"line_number":38,"context_line":"        while self._running:"},{"line_number":39,"context_line":"            message \u003d self.listener.poll(timeout\u003d0.01)"},{"line_number":40,"context_line":"            if not message:"},{"line_number":41,"context_line":"                continue"},{"line_number":42,"context_line":"            with self.dispatcher(message) as callback:"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a8c0949_3fd99e83","line":39,"in_reply_to":"7a8c0949_9e21c9b6","updated":"2014-11-07 07:49:20.000000000","message":"Yes, this is need to be able to stop this executor otherrise you need to wait for a message to be able to stop it.","commit_id":"66240172e3ac57e24bdbc8a165dad1d5480f7fe5"},{"author":{"_account_id":7536,"name":"Ilya Pekelny","email":"ipekelny@mirantis.com","username":"I159"},"change_message_id":"5601573e4aa9d717a71762ebe7da3d98ca22baa3","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    def start(self):"},{"line_number":37,"context_line":"        self._running \u003d True"},{"line_number":38,"context_line":"        while self._running:"},{"line_number":39,"context_line":"            message \u003d self.listener.poll(timeout\u003d0.01)"},{"line_number":40,"context_line":"            if not message:"},{"line_number":41,"context_line":"                continue"},{"line_number":42,"context_line":"            with self.dispatcher(message) as callback:"}],"source_content_type":"text/x-python","patch_set":9,"id":"7a8c0949_d30df191","line":39,"updated":"2014-11-07 11:06:34.000000000","message":"In my opinion this is the part of separate patch. Make the actual patch dependent from a \"timeout\" patch.","commit_id":"0f1ba62b58878c37af743adf705d96a1778ba40d"}],"oslo/messaging/notify/dispatcher.py":[{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"f4646e8bc545a469130200428b5ba0d2013d5359","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    message to the endpoints"},{"line_number":45,"context_line":"    \"\"\""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def __init__(self, targets, endpoints, serializer, allow_requeue, pool):"},{"line_number":48,"context_line":"        self.targets \u003d targets"},{"line_number":49,"context_line":"        self.endpoints \u003d endpoints"},{"line_number":50,"context_line":"        self.serializer \u003d serializer or msg_serializer.NoOpSerializer()"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a890539_ba449fb7","line":47,"updated":"2014-11-14 08:59:44.000000000","message":"This looks like a backwards incompatible change.\n\nIf we release oslo.messaging with this patch, we\u0027d be breaking the code of users of this class because they won\u0027t be passing the pool.\n\nI think it\u0027d be better if we make this a keyword with default value `None` as you did in `oslo/messaging/notify/listener.py`\n\nWe can leave `_listen_for_notification` as it is because it\u0027s not a user facing API.","commit_id":"0f1ba62b58878c37af743adf705d96a1778ba40d"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"e709852e9cbc6ce13a49076d3197dee1b19a4c95","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    message to the endpoints"},{"line_number":45,"context_line":"    \"\"\""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def __init__(self, targets, endpoints, serializer, allow_requeue, pool):"},{"line_number":48,"context_line":"        self.targets \u003d targets"},{"line_number":49,"context_line":"        self.endpoints \u003d endpoints"},{"line_number":50,"context_line":"        self.serializer \u003d serializer or msg_serializer.NoOpSerializer()"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a890539_65fb78c1","line":47,"in_reply_to":"5a890539_ba449fb7","updated":"2014-11-14 09:20:40.000000000","message":"Thanks I have missed that one. Done.","commit_id":"0f1ba62b58878c37af743adf705d96a1778ba40d"}],"tests/executors/test_executor.py":[{"author":{"_account_id":7536,"name":"Ilya Pekelny","email":"ipekelny@mirantis.com","username":"I159"},"change_message_id":"2942cec349fb8241944bd9e7406e512a628b6965","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        incoming_message \u003d mock.MagicMock(ctxt\u003d{},"},{"line_number":72,"context_line":"                                          message\u003d{\u0027payload\u0027: \u0027data\u0027})"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        def fake_poll(timeout\u003dNone):"},{"line_number":75,"context_line":"            if self.stop_before_return:"},{"line_number":76,"context_line":"                executor.stop()"},{"line_number":77,"context_line":"                return incoming_message"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a8c0949_8ff7dcf4","line":74,"updated":"2014-11-05 14:52:58.000000000","message":"Why do we need it in this patch? Looks like unrelated change.","commit_id":"56770711b9b7cbf90f0dac1322610e478cce262d"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"c9f2fdb2df1c0a901cd276fe5487bea71ca908ae","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        incoming_message \u003d mock.MagicMock(ctxt\u003d{},"},{"line_number":72,"context_line":"                                          message\u003d{\u0027payload\u0027: \u0027data\u0027})"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        def fake_poll(timeout\u003dNone):"},{"line_number":75,"context_line":"            if self.stop_before_return:"},{"line_number":76,"context_line":"                executor.stop()"},{"line_number":77,"context_line":"                return incoming_message"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a8c0949_4a4ec297","line":74,"in_reply_to":"7a8c0949_8ff7dcf4","updated":"2014-11-05 16:43:54.000000000","message":"Done, Removed","commit_id":"56770711b9b7cbf90f0dac1322610e478cce262d"},{"author":{"_account_id":7536,"name":"Ilya Pekelny","email":"ipekelny@mirantis.com","username":"I159"},"change_message_id":"5601573e4aa9d717a71762ebe7da3d98ca22baa3","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        incoming_message \u003d mock.MagicMock(ctxt\u003d{},"},{"line_number":72,"context_line":"                                          message\u003d{\u0027payload\u0027: \u0027data\u0027})"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        def fake_poll(timeout\u003dNone):"},{"line_number":75,"context_line":"            if self.stop_before_return:"},{"line_number":76,"context_line":"                executor.stop()"},{"line_number":77,"context_line":"                return incoming_message"}],"source_content_type":"text/x-python","patch_set":9,"id":"7a8c0949_53f3c19d","line":74,"updated":"2014-11-07 11:06:34.000000000","message":"In my opinion this is the part of separate patch. Make the actual patch dependent from a \"timeout\" patch.","commit_id":"0f1ba62b58878c37af743adf705d96a1778ba40d"}]}
