)]}'
{"oslo_messaging/_drivers/impl_rabbit.py":[{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"e9adf4c555932824961b2ddcbb4e47c067770577","unresolved":false,"context_lines":[{"line_number":364,"context_line":""},{"line_number":365,"context_line":""},{"line_number":366,"context_line":"class Publisher(object):"},{"line_number":367,"context_line":"    \"\"\"Publisher that silencly creates exchange but no queues.\"\"\""},{"line_number":368,"context_line":""},{"line_number":369,"context_line":"    passive \u003d False"},{"line_number":370,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3acd31a7_c2b00ce0","line":367,"updated":"2015-05-01 20:07:16.000000000","message":"s/silencly/silently/","commit_id":"4efd0ccea3c5caf80107307ec2dd4af7b59f0502"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"e68e53e6cb1aa9a751d33d0bad4855bd1b2db02b","unresolved":false,"context_lines":[{"line_number":364,"context_line":""},{"line_number":365,"context_line":""},{"line_number":366,"context_line":"class Publisher(object):"},{"line_number":367,"context_line":"    \"\"\"Publisher that silencly creates exchange but no queues.\"\"\""},{"line_number":368,"context_line":""},{"line_number":369,"context_line":"    passive \u003d False"},{"line_number":370,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3acd31a7_5d028870","line":367,"in_reply_to":"3acd31a7_c2b00ce0","updated":"2015-05-04 06:37:44.000000000","message":"Done","commit_id":"4efd0ccea3c5caf80107307ec2dd4af7b59f0502"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"e9adf4c555932824961b2ddcbb4e47c067770577","unresolved":false,"context_lines":[{"line_number":1087,"context_line":""},{"line_number":1088,"context_line":"    def topic_send(self, exchange_name, topic, msg, timeout\u003dNone, retry\u003dNone):"},{"line_number":1089,"context_line":"        \"\"\"Send a \u0027topic\u0027 message.\"\"\""},{"line_number":1090,"context_line":"        p \u003d Publisher(self.driver_conf,"},{"line_number":1091,"context_line":"                      exchange_name\u003dexchange_name,"},{"line_number":1092,"context_line":"                      routing_key\u003dtopic,"},{"line_number":1093,"context_line":"                      type\u003d\u0027topic\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3acd31a7_884c7543","line":1090,"updated":"2015-05-01 20:07:16.000000000","message":"this is kinda strange, but we have to create and initialise these objects every time we send something?","commit_id":"4efd0ccea3c5caf80107307ec2dd4af7b59f0502"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"e68e53e6cb1aa9a751d33d0bad4855bd1b2db02b","unresolved":false,"context_lines":[{"line_number":1087,"context_line":""},{"line_number":1088,"context_line":"    def topic_send(self, exchange_name, topic, msg, timeout\u003dNone, retry\u003dNone):"},{"line_number":1089,"context_line":"        \"\"\"Send a \u0027topic\u0027 message.\"\"\""},{"line_number":1090,"context_line":"        p \u003d Publisher(self.driver_conf,"},{"line_number":1091,"context_line":"                      exchange_name\u003dexchange_name,"},{"line_number":1092,"context_line":"                      routing_key\u003dtopic,"},{"line_number":1093,"context_line":"                      type\u003d\u0027topic\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3acd31a7_fd4a74c4","line":1090,"in_reply_to":"3acd31a7_884c7543","updated":"2015-05-04 06:37:44.000000000","message":"Unfortunatly yes, because the public API don\u0027t allow us to known in advance where the application is going to send messages.","commit_id":"4efd0ccea3c5caf80107307ec2dd4af7b59f0502"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"82f4d3fabcedd700a30a07aaf06226be38cd06fd","unresolved":false,"context_lines":[{"line_number":404,"context_line":"class DeclareQueuePublisher(Publisher):"},{"line_number":405,"context_line":"    \"\"\"Publisher that declares a default queue"},{"line_number":406,"context_line":""},{"line_number":407,"context_line":"    When the exchange is missing instead of silency creates an exchange"},{"line_number":408,"context_line":"    not binded to a queue, this publisher creates a default queue"},{"line_number":409,"context_line":"    named with the routing_key"},{"line_number":410,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"1aca2d91_2ad69ec5","line":407,"updated":"2015-05-06 21:56:33.000000000","message":"silency creates -\u003e silently creating","commit_id":"9927852e5a1e7a2efe3d580c250badd910b4d496"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"bdc7a74e7a80d978cc518b5ce1587d97472d25f9","unresolved":false,"context_lines":[{"line_number":404,"context_line":"class DeclareQueuePublisher(Publisher):"},{"line_number":405,"context_line":"    \"\"\"Publisher that declares a default queue"},{"line_number":406,"context_line":""},{"line_number":407,"context_line":"    When the exchange is missing instead of silency creates an exchange"},{"line_number":408,"context_line":"    not binded to a queue, this publisher creates a default queue"},{"line_number":409,"context_line":"    named with the routing_key"},{"line_number":410,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"1aca2d91_a8306c57","line":407,"in_reply_to":"1aca2d91_2ad69ec5","updated":"2015-05-07 07:11:49.000000000","message":"Done","commit_id":"9927852e5a1e7a2efe3d580c250badd910b4d496"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"626a50f23b60e8339c54f4f1ed323020c2640a51","unresolved":false,"context_lines":[{"line_number":406,"context_line":""},{"line_number":407,"context_line":"    When the exchange is missing instead of silency creates an exchange"},{"line_number":408,"context_line":"    not binded to a queue, this publisher creates a default queue"},{"line_number":409,"context_line":"    named with the routing_key"},{"line_number":410,"context_line":""},{"line_number":411,"context_line":"    This is mainly used to not miss notification in case of nobody consumes"},{"line_number":412,"context_line":"    them yet. If the futur consumer bind the default queue it can retrieve"}],"source_content_type":"text/x-python","patch_set":5,"id":"3acd31a7_9f7b4d8c","line":409,"updated":"2015-05-05 10:27:28.000000000","message":"add a point at the end.","commit_id":"9927852e5a1e7a2efe3d580c250badd910b4d496"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"bdc7a74e7a80d978cc518b5ce1587d97472d25f9","unresolved":false,"context_lines":[{"line_number":406,"context_line":""},{"line_number":407,"context_line":"    When the exchange is missing instead of silency creates an exchange"},{"line_number":408,"context_line":"    not binded to a queue, this publisher creates a default queue"},{"line_number":409,"context_line":"    named with the routing_key"},{"line_number":410,"context_line":""},{"line_number":411,"context_line":"    This is mainly used to not miss notification in case of nobody consumes"},{"line_number":412,"context_line":"    them yet. If the futur consumer bind the default queue it can retrieve"}],"source_content_type":"text/x-python","patch_set":5,"id":"1aca2d91_8835b047","line":409,"in_reply_to":"3acd31a7_9f7b4d8c","updated":"2015-05-07 07:11:49.000000000","message":"Done","commit_id":"9927852e5a1e7a2efe3d580c250badd910b4d496"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"626a50f23b60e8339c54f4f1ed323020c2640a51","unresolved":false,"context_lines":[{"line_number":408,"context_line":"    not binded to a queue, this publisher creates a default queue"},{"line_number":409,"context_line":"    named with the routing_key"},{"line_number":410,"context_line":""},{"line_number":411,"context_line":"    This is mainly used to not miss notification in case of nobody consumes"},{"line_number":412,"context_line":"    them yet. If the futur consumer bind the default queue it can retrieve"},{"line_number":413,"context_line":"    missing messages."},{"line_number":414,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"3acd31a7_5f7135a7","line":411,"updated":"2015-05-05 10:27:28.000000000","message":"notificationS in case nobody","commit_id":"9927852e5a1e7a2efe3d580c250badd910b4d496"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"bdc7a74e7a80d978cc518b5ce1587d97472d25f9","unresolved":false,"context_lines":[{"line_number":408,"context_line":"    not binded to a queue, this publisher creates a default queue"},{"line_number":409,"context_line":"    named with the routing_key"},{"line_number":410,"context_line":""},{"line_number":411,"context_line":"    This is mainly used to not miss notification in case of nobody consumes"},{"line_number":412,"context_line":"    them yet. If the futur consumer bind the default queue it can retrieve"},{"line_number":413,"context_line":"    missing messages."},{"line_number":414,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"1aca2d91_4840b8a5","line":411,"in_reply_to":"3acd31a7_5f7135a7","updated":"2015-05-07 07:11:49.000000000","message":"Done","commit_id":"9927852e5a1e7a2efe3d580c250badd910b4d496"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"626a50f23b60e8339c54f4f1ed323020c2640a51","unresolved":false,"context_lines":[{"line_number":409,"context_line":"    named with the routing_key"},{"line_number":410,"context_line":""},{"line_number":411,"context_line":"    This is mainly used to not miss notification in case of nobody consumes"},{"line_number":412,"context_line":"    them yet. If the futur consumer bind the default queue it can retrieve"},{"line_number":413,"context_line":"    missing messages."},{"line_number":414,"context_line":"    \"\"\""},{"line_number":415,"context_line":"    # FIXME(sileht): The side effect of this is that we declare again and"}],"source_content_type":"text/x-python","patch_set":5,"id":"3acd31a7_7fa3d100","line":412,"updated":"2015-05-05 10:27:28.000000000","message":"binds","commit_id":"9927852e5a1e7a2efe3d580c250badd910b4d496"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"82f4d3fabcedd700a30a07aaf06226be38cd06fd","unresolved":false,"context_lines":[{"line_number":409,"context_line":"    named with the routing_key"},{"line_number":410,"context_line":""},{"line_number":411,"context_line":"    This is mainly used to not miss notification in case of nobody consumes"},{"line_number":412,"context_line":"    them yet. If the futur consumer bind the default queue it can retrieve"},{"line_number":413,"context_line":"    missing messages."},{"line_number":414,"context_line":"    \"\"\""},{"line_number":415,"context_line":"    # FIXME(sileht): The side effect of this is that we declare again and"}],"source_content_type":"text/x-python","patch_set":5,"id":"1aca2d91_aae2ae9d","line":412,"updated":"2015-05-06 21:56:33.000000000","message":"futur -\u003e future","commit_id":"9927852e5a1e7a2efe3d580c250badd910b4d496"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"bdc7a74e7a80d978cc518b5ce1587d97472d25f9","unresolved":false,"context_lines":[{"line_number":409,"context_line":"    named with the routing_key"},{"line_number":410,"context_line":""},{"line_number":411,"context_line":"    This is mainly used to not miss notification in case of nobody consumes"},{"line_number":412,"context_line":"    them yet. If the futur consumer bind the default queue it can retrieve"},{"line_number":413,"context_line":"    missing messages."},{"line_number":414,"context_line":"    \"\"\""},{"line_number":415,"context_line":"    # FIXME(sileht): The side effect of this is that we declare again and"}],"source_content_type":"text/x-python","patch_set":5,"id":"1aca2d91_084ac0c5","line":412,"in_reply_to":"1aca2d91_aae2ae9d","updated":"2015-05-07 07:11:49.000000000","message":"Done","commit_id":"9927852e5a1e7a2efe3d580c250badd910b4d496"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"bdc7a74e7a80d978cc518b5ce1587d97472d25f9","unresolved":false,"context_lines":[{"line_number":409,"context_line":"    named with the routing_key"},{"line_number":410,"context_line":""},{"line_number":411,"context_line":"    This is mainly used to not miss notification in case of nobody consumes"},{"line_number":412,"context_line":"    them yet. If the futur consumer bind the default queue it can retrieve"},{"line_number":413,"context_line":"    missing messages."},{"line_number":414,"context_line":"    \"\"\""},{"line_number":415,"context_line":"    # FIXME(sileht): The side effect of this is that we declare again and"}],"source_content_type":"text/x-python","patch_set":5,"id":"1aca2d91_e84664be","line":412,"in_reply_to":"3acd31a7_7fa3d100","updated":"2015-05-07 07:11:49.000000000","message":"Done","commit_id":"9927852e5a1e7a2efe3d580c250badd910b4d496"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"626a50f23b60e8339c54f4f1ed323020c2640a51","unresolved":false,"context_lines":[{"line_number":460,"context_line":"                                 \"retrying...\") % {"},{"line_number":461,"context_line":"                                     \u0027exchange\u0027: self.exchange,"},{"line_number":462,"context_line":"                                     \u0027routing_key\u0027: self.routing_key})"},{"line_number":463,"context_line":"                    time.sleep(1)"},{"line_number":464,"context_line":"                    continue"},{"line_number":465,"context_line":"                raise"},{"line_number":466,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3acd31a7_1f961d93","line":463,"updated":"2015-05-05 10:27:28.000000000","message":"This seems long, but I know it\u0027s not from your patch so OK. Maybe add a TODO to make it use @retrying?","commit_id":"9927852e5a1e7a2efe3d580c250badd910b4d496"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"bdc7a74e7a80d978cc518b5ce1587d97472d25f9","unresolved":false,"context_lines":[{"line_number":460,"context_line":"                                 \"retrying...\") % {"},{"line_number":461,"context_line":"                                     \u0027exchange\u0027: self.exchange,"},{"line_number":462,"context_line":"                                     \u0027routing_key\u0027: self.routing_key})"},{"line_number":463,"context_line":"                    time.sleep(1)"},{"line_number":464,"context_line":"                    continue"},{"line_number":465,"context_line":"                raise"},{"line_number":466,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"1aca2d91_28d9fcf3","line":463,"in_reply_to":"1aca2d91_2abb3e74","updated":"2015-05-07 07:11:49.000000000","message":"The 60 is not so magic, it correspond to the default rpc_timeout, and can be short in most case. TODO added.","commit_id":"9927852e5a1e7a2efe3d580c250badd910b4d496"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"82f4d3fabcedd700a30a07aaf06226be38cd06fd","unresolved":false,"context_lines":[{"line_number":460,"context_line":"                                 \"retrying...\") % {"},{"line_number":461,"context_line":"                                     \u0027exchange\u0027: self.exchange,"},{"line_number":462,"context_line":"                                     \u0027routing_key\u0027: self.routing_key})"},{"line_number":463,"context_line":"                    time.sleep(1)"},{"line_number":464,"context_line":"                    continue"},{"line_number":465,"context_line":"                raise"},{"line_number":466,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"1aca2d91_2abb3e74","line":463,"in_reply_to":"3acd31a7_1f961d93","updated":"2015-05-06 21:56:33.000000000","message":"This seems short, my pigeon powered message queue takes 30 minutes to respond to things (and the failure rate, don\u0027t ask about that), magic numbers suck, ha :-P\n\n+1 to adding a TODO","commit_id":"9927852e5a1e7a2efe3d580c250badd910b4d496"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"15818d43da5c785e21fc84852fc018d7e8b0b292","unresolved":false,"context_lines":[{"line_number":1038,"context_line":"            log_info \u003d {\u0027topic\u0027: publisher.exchange_name, \u0027err_str\u0027: exc}"},{"line_number":1039,"context_line":"            LOG.error(_(\"Failed to publish message to topic \""},{"line_number":1040,"context_line":"                        \"\u0027%(topic)s\u0027: %(err_str)s\"), log_info)"},{"line_number":1041,"context_line":"            LOG.debug(\u0027Exception\u0027, exc_info\u003dexc)"},{"line_number":1042,"context_line":""},{"line_number":1043,"context_line":"        def _publish():"},{"line_number":1044,"context_line":"            publisher.send(self, msg, timeout)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3acd31a7_c0da014c","line":1041,"updated":"2015-05-05 13:20:31.000000000","message":"is there a reason for double logging? if you use LOG.exception i believe it already outputs the error message.","commit_id":"9927852e5a1e7a2efe3d580c250badd910b4d496"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"bdc7a74e7a80d978cc518b5ce1587d97472d25f9","unresolved":false,"context_lines":[{"line_number":1038,"context_line":"            log_info \u003d {\u0027topic\u0027: publisher.exchange_name, \u0027err_str\u0027: exc}"},{"line_number":1039,"context_line":"            LOG.error(_(\"Failed to publish message to topic \""},{"line_number":1040,"context_line":"                        \"\u0027%(topic)s\u0027: %(err_str)s\"), log_info)"},{"line_number":1041,"context_line":"            LOG.debug(\u0027Exception\u0027, exc_info\u003dexc)"},{"line_number":1042,"context_line":""},{"line_number":1043,"context_line":"        def _publish():"},{"line_number":1044,"context_line":"            publisher.send(self, msg, timeout)"}],"source_content_type":"text/x-python","patch_set":5,"id":"1aca2d91_c2104551","line":1041,"in_reply_to":"3acd31a7_c0da014c","updated":"2015-05-07 07:11:49.000000000","message":"yes, because we don\u0027t want to spam the log of deployer with backtrace they can fix.","commit_id":"9927852e5a1e7a2efe3d580c250badd910b4d496"}]}
