)]}'
{"mistral/engine/rpc_direct/base.py":[{"author":{"_account_id":8731,"name":"Renat Akhmerov","email":"renat.akhmerov@gmail.com","username":"rakhmerov"},"change_message_id":"d40c19314b1d2a9e797ebb3f8a6353d1324a62f1","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2015 - Mirantis, Inc."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\");"},{"line_number":4,"context_line":"#    you may not use this file except in compliance with the License."}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_449257f7","line":1,"updated":"2015-07-03 09:09:35.000000000","message":"We do we have \"direct\" in the module name?","commit_id":"ebedec6426032c08ab4ebb7cdb5b196e22dc2ecc"},{"author":{"_account_id":7700,"name":"Nikolay Mahotkin","email":"nikolay.makhotkin@gmail.com","username":"nmakhotkin"},"change_message_id":"5d2cfd30d8719d667a512d65e46efed49c75cc03","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2015 - Mirantis, Inc."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\");"},{"line_number":4,"context_line":"#    you may not use this file except in compliance with the License."}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_9a44364a","line":1,"in_reply_to":"ba3cc151_449257f7","updated":"2015-07-03 10:11:19.000000000","message":"it is renamed to just \u0027rpc\u0027 in next commits. This renaming leads to renaming import over the whole project. So, I don\u0027t want to do it in this commit.","commit_id":"ebedec6426032c08ab4ebb7cdb5b196e22dc2ecc"},{"author":{"_account_id":8731,"name":"Renat Akhmerov","email":"renat.akhmerov@gmail.com","username":"rakhmerov"},"change_message_id":"c7b85aef1469fc0afa6a49e3dcf9f64013ffef2d","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2015 - Mirantis, Inc."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\");"},{"line_number":4,"context_line":"#    you may not use this file except in compliance with the License."}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_b9fca572","line":1,"in_reply_to":"ba3cc151_9a44364a","updated":"2015-07-03 11:12:32.000000000","message":"Done","commit_id":"ebedec6426032c08ab4ebb7cdb5b196e22dc2ecc"},{"author":{"_account_id":8731,"name":"Renat Akhmerov","email":"renat.akhmerov@gmail.com","username":"rakhmerov"},"change_message_id":"d40c19314b1d2a9e797ebb3f8a6353d1324a62f1","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"import abc"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from oslo.config import cfg"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_04ca0f1b","line":17,"updated":"2015-07-03 09:09:35.000000000","message":"-\u003e oslo_config","commit_id":"ebedec6426032c08ab4ebb7cdb5b196e22dc2ecc"},{"author":{"_account_id":7700,"name":"Nikolay Mahotkin","email":"nikolay.makhotkin@gmail.com","username":"nmakhotkin"},"change_message_id":"5d2cfd30d8719d667a512d65e46efed49c75cc03","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"import abc"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from oslo.config import cfg"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_5a4a2e56","line":17,"in_reply_to":"ba3cc151_04ca0f1b","updated":"2015-07-03 10:11:19.000000000","message":"ok","commit_id":"ebedec6426032c08ab4ebb7cdb5b196e22dc2ecc"},{"author":{"_account_id":8731,"name":"Renat Akhmerov","email":"renat.akhmerov@gmail.com","username":"rakhmerov"},"change_message_id":"d40c19314b1d2a9e797ebb3f8a6353d1324a62f1","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    }"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"class BaseRPCClient(object):"},{"line_number":39,"context_line":"    def __init__(self, conf):"},{"line_number":40,"context_line":"        \"\"\"Base initialization of config."},{"line_number":41,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_04f1af6a","line":38,"updated":"2015-07-03 09:09:35.000000000","message":"Could be just \"RPCClient\" for conciseness. Not critical though..","commit_id":"ebedec6426032c08ab4ebb7cdb5b196e22dc2ecc"},{"author":{"_account_id":8731,"name":"Renat Akhmerov","email":"renat.akhmerov@gmail.com","username":"rakhmerov"},"change_message_id":"d40c19314b1d2a9e797ebb3f8a6353d1324a62f1","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        self.password \u003d conf.get(\u0027password\u0027, \u0027guest\u0027)"},{"line_number":51,"context_line":"        self.topic \u003d conf.get(\u0027topic\u0027, \u0027\u0027)"},{"line_number":52,"context_line":"        self.server_id \u003d conf.get(\u0027server_id\u0027, \u0027\u0027)"},{"line_number":53,"context_line":"        self.rabbit_host \u003d conf.get(\u0027rabbit_host\u0027, \u0027\u0027)"},{"line_number":54,"context_line":"        self.rabbit_port \u003d conf.get(\u0027rabbit_port\u0027, \u0027\u0027)"},{"line_number":55,"context_line":"        self.virtual_host \u003d conf.get(\u0027virtual_host\u0027, \u0027\u0027)"},{"line_number":56,"context_line":"        self.durable_queue \u003d conf.get(\u0027durable_queues\u0027, \u0027\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_bf11ec53","line":53,"updated":"2015-07-03 09:09:35.000000000","message":"Maybe I\u0027m missing something but, in my understanding, this class (as well as server) is supposed to be a base class for different specific transport implementations. If so there shouldn\u0027t be any RabbitMQ related properties here. Btw, it correlates with my comment about \"direct\" in the module name.","commit_id":"ebedec6426032c08ab4ebb7cdb5b196e22dc2ecc"},{"author":{"_account_id":8731,"name":"Renat Akhmerov","email":"renat.akhmerov@gmail.com","username":"rakhmerov"},"change_message_id":"c7b85aef1469fc0afa6a49e3dcf9f64013ffef2d","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        self.password \u003d conf.get(\u0027password\u0027, \u0027guest\u0027)"},{"line_number":51,"context_line":"        self.topic \u003d conf.get(\u0027topic\u0027, \u0027\u0027)"},{"line_number":52,"context_line":"        self.server_id \u003d conf.get(\u0027server_id\u0027, \u0027\u0027)"},{"line_number":53,"context_line":"        self.rabbit_host \u003d conf.get(\u0027rabbit_host\u0027, \u0027\u0027)"},{"line_number":54,"context_line":"        self.rabbit_port \u003d conf.get(\u0027rabbit_port\u0027, \u0027\u0027)"},{"line_number":55,"context_line":"        self.virtual_host \u003d conf.get(\u0027virtual_host\u0027, \u0027\u0027)"},{"line_number":56,"context_line":"        self.durable_queue \u003d conf.get(\u0027durable_queues\u0027, \u0027\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_39f17595","line":53,"in_reply_to":"ba3cc151_3a32caa7","updated":"2015-07-03 11:12:32.000000000","message":"Done","commit_id":"ebedec6426032c08ab4ebb7cdb5b196e22dc2ecc"},{"author":{"_account_id":7700,"name":"Nikolay Mahotkin","email":"nikolay.makhotkin@gmail.com","username":"nmakhotkin"},"change_message_id":"5d2cfd30d8719d667a512d65e46efed49c75cc03","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        self.password \u003d conf.get(\u0027password\u0027, \u0027guest\u0027)"},{"line_number":51,"context_line":"        self.topic \u003d conf.get(\u0027topic\u0027, \u0027\u0027)"},{"line_number":52,"context_line":"        self.server_id \u003d conf.get(\u0027server_id\u0027, \u0027\u0027)"},{"line_number":53,"context_line":"        self.rabbit_host \u003d conf.get(\u0027rabbit_host\u0027, \u0027\u0027)"},{"line_number":54,"context_line":"        self.rabbit_port \u003d conf.get(\u0027rabbit_port\u0027, \u0027\u0027)"},{"line_number":55,"context_line":"        self.virtual_host \u003d conf.get(\u0027virtual_host\u0027, \u0027\u0027)"},{"line_number":56,"context_line":"        self.durable_queue \u003d conf.get(\u0027durable_queues\u0027, \u0027\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_3a32caa7","line":53,"in_reply_to":"ba3cc151_bf11ec53","updated":"2015-07-03 10:11:19.000000000","message":"so, ok, I\u0027ll do a bit refactoring here.","commit_id":"ebedec6426032c08ab4ebb7cdb5b196e22dc2ecc"},{"author":{"_account_id":8731,"name":"Renat Akhmerov","email":"renat.akhmerov@gmail.com","username":"rakhmerov"},"change_message_id":"55c3e887bfccc014f6f004df8ae0fb3738448ddf","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"import abc"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from oslo.config import cfg"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_1931115a","line":17,"updated":"2015-07-03 11:12:40.000000000","message":"-\u003e oslo_config","commit_id":"926c1309f5bd8e7cf09879a43963a349d4f41f0d"},{"author":{"_account_id":7700,"name":"Nikolay Mahotkin","email":"nikolay.makhotkin@gmail.com","username":"nmakhotkin"},"change_message_id":"d481abbf09336399f695d064123fc583d52189c3","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"import abc"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from oslo.config import cfg"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_d0b136e1","line":17,"in_reply_to":"ba3cc151_1931115a","updated":"2015-07-03 12:40:00.000000000","message":"Done","commit_id":"926c1309f5bd8e7cf09879a43963a349d4f41f0d"},{"author":{"_account_id":8731,"name":"Renat Akhmerov","email":"renat.akhmerov@gmail.com","username":"rakhmerov"},"change_message_id":"55c3e887bfccc014f6f004df8ae0fb3738448ddf","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        :return:"},{"line_number":46,"context_line":"        \"\"\""},{"line_number":47,"context_line":"        self.conf \u003d conf"},{"line_number":48,"context_line":"        self.exchange \u003d conf.get(\u0027exchange\u0027, \u0027\u0027)"},{"line_number":49,"context_line":"        self.user_id \u003d conf.get(\u0027user_id\u0027, \u0027guest\u0027)"},{"line_number":50,"context_line":"        self.password \u003d conf.get(\u0027password\u0027, \u0027guest\u0027)"},{"line_number":51,"context_line":"        self.topic \u003d conf.get(\u0027topic\u0027, \u0027\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_b98105c5","line":48,"updated":"2015-07-03 11:12:40.000000000","message":"Nikolay, I still think that, for example, \"exchange\" is a transport specific thing. For some types of transport it may not exist at all. How about just storing self.conf here and extract what\u0027s needed for Kombu in the child class?","commit_id":"926c1309f5bd8e7cf09879a43963a349d4f41f0d"},{"author":{"_account_id":7700,"name":"Nikolay Mahotkin","email":"nikolay.makhotkin@gmail.com","username":"nmakhotkin"},"change_message_id":"d481abbf09336399f695d064123fc583d52189c3","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        :return:"},{"line_number":46,"context_line":"        \"\"\""},{"line_number":47,"context_line":"        self.conf \u003d conf"},{"line_number":48,"context_line":"        self.exchange \u003d conf.get(\u0027exchange\u0027, \u0027\u0027)"},{"line_number":49,"context_line":"        self.user_id \u003d conf.get(\u0027user_id\u0027, \u0027guest\u0027)"},{"line_number":50,"context_line":"        self.password \u003d conf.get(\u0027password\u0027, \u0027guest\u0027)"},{"line_number":51,"context_line":"        self.topic \u003d conf.get(\u0027topic\u0027, \u0027\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_90116e54","line":48,"in_reply_to":"ba3cc151_b98105c5","updated":"2015-07-03 12:40:00.000000000","message":"ok","commit_id":"926c1309f5bd8e7cf09879a43963a349d4f41f0d"},{"author":{"_account_id":6732,"name":"Lingxian Kong","email":"anlin.kong@gmail.com","username":"kong"},"change_message_id":"e5afecb68d471986b458b5abbab5c967b00d55be","unresolved":false,"context_lines":[{"line_number":20,"context_line":"        \"\"\"Base initialization of config."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"        :param conf: dict containing credentials such as"},{"line_number":23,"context_line":"         \u0027user_id\u0027, \u0027password\u0027, and also exchange and connection info:"},{"line_number":24,"context_line":"         \u0027exchange\u0027, \u0027topic\u0027, \u0027host\u0027, \u0027port\u0027, \u0027virtual_host\u0027."},{"line_number":25,"context_line":"        :return:"},{"line_number":26,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"ba3cc151_902112ff","line":23,"updated":"2015-07-07 09:08:45.000000000","message":"I think this line and below should have indentation, right?","commit_id":"81f9ec4ce710403340a7a435bb1ff4217f24fe80"},{"author":{"_account_id":7700,"name":"Nikolay Mahotkin","email":"nikolay.makhotkin@gmail.com","username":"nmakhotkin"},"change_message_id":"6de73117030d153e779164e713404966d10bbe74","unresolved":false,"context_lines":[{"line_number":20,"context_line":"        \"\"\"Base initialization of config."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"        :param conf: dict containing credentials such as"},{"line_number":23,"context_line":"         \u0027user_id\u0027, \u0027password\u0027, and also exchange and connection info:"},{"line_number":24,"context_line":"         \u0027exchange\u0027, \u0027topic\u0027, \u0027host\u0027, \u0027port\u0027, \u0027virtual_host\u0027."},{"line_number":25,"context_line":"        :return:"},{"line_number":26,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"ba3cc151_a6f4e75a","line":23,"in_reply_to":"ba3cc151_902112ff","updated":"2015-07-08 08:16:38.000000000","message":"Done","commit_id":"81f9ec4ce710403340a7a435bb1ff4217f24fe80"},{"author":{"_account_id":8731,"name":"Renat Akhmerov","email":"renat.akhmerov@gmail.com","username":"rakhmerov"},"change_message_id":"fba7cc6e44684d16b067ad0709f82f72ff22132a","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"class RPCClient(object):"},{"line_number":19,"context_line":"    def __init__(self, conf):"},{"line_number":20,"context_line":"        \"\"\"Base initialization of config."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"        :param conf: dict containing credentials such as"},{"line_number":23,"context_line":"            \u0027user_id\u0027, \u0027password\u0027, and also exchange and connection info:"}],"source_content_type":"text/x-python","patch_set":22,"id":"3aaa91ec_a5bc466d","line":20,"range":{"start_line":20,"start_character":11,"end_line":20,"end_character":40},"updated":"2016-06-22 12:16:35.000000000","message":"I think for both client and server it\u0027s worth saying a couple of words in docstring (at class level). As far as initializer docstring, \"Base initialization of config\" looks slightly confusing: what config do we mean here? I guess the problem here is exactly in lack of proper class description.\n\nThis is not a critical thing, of course, it can be addressed later.","commit_id":"b99d501a34fb11b2779307e9abf1c6ba1c75851a"},{"author":{"_account_id":19206,"name":"Dawid Deja","email":"dawdej@gmail.com","username":"ddeja"},"change_message_id":"d47e06e5dc6b6a2aa25584c9d14b7bb61ca7784d","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"class RPCClient(object):"},{"line_number":19,"context_line":"    def __init__(self, conf):"},{"line_number":20,"context_line":"        \"\"\"Base initialization of config."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"        :param conf: dict containing credentials such as"},{"line_number":23,"context_line":"            \u0027user_id\u0027, \u0027password\u0027, and also exchange and connection info:"}],"source_content_type":"text/x-python","patch_set":22,"id":"3aaa91ec_2e302a01","line":20,"range":{"start_line":20,"start_character":11,"end_line":20,"end_character":40},"in_reply_to":"3aaa91ec_a5bc466d","updated":"2016-06-22 17:11:56.000000000","message":"I\u0027ve changed the description","commit_id":"b99d501a34fb11b2779307e9abf1c6ba1c75851a"},{"author":{"_account_id":8731,"name":"Renat Akhmerov","email":"renat.akhmerov@gmail.com","username":"rakhmerov"},"change_message_id":"fba7cc6e44684d16b067ad0709f82f72ff22132a","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    def sync_call(self, ctx, method, target\u003dNone, **kwargs):"},{"line_number":31,"context_line":"        \"\"\"Synchronous call of RPC method."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"        Blocks the thread and wait for method result."},{"line_number":34,"context_line":"        :return:"},{"line_number":35,"context_line":"        \"\"\""},{"line_number":36,"context_line":"        raise NotImplementedError"}],"source_content_type":"text/x-python","patch_set":22,"id":"3aaa91ec_45748234","line":33,"range":{"start_line":33,"start_character":30,"end_line":33,"end_character":34},"updated":"2016-06-22 12:16:35.000000000","message":"Soft: wait -\u003e waits","commit_id":"b99d501a34fb11b2779307e9abf1c6ba1c75851a"},{"author":{"_account_id":19206,"name":"Dawid Deja","email":"dawdej@gmail.com","username":"ddeja"},"change_message_id":"d47e06e5dc6b6a2aa25584c9d14b7bb61ca7784d","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    def sync_call(self, ctx, method, target\u003dNone, **kwargs):"},{"line_number":31,"context_line":"        \"\"\"Synchronous call of RPC method."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"        Blocks the thread and wait for method result."},{"line_number":34,"context_line":"        :return:"},{"line_number":35,"context_line":"        \"\"\""},{"line_number":36,"context_line":"        raise NotImplementedError"}],"source_content_type":"text/x-python","patch_set":22,"id":"3aaa91ec_6e31920b","line":33,"range":{"start_line":33,"start_character":30,"end_line":33,"end_character":34},"in_reply_to":"3aaa91ec_45748234","updated":"2016-06-22 17:11:56.000000000","message":"Done","commit_id":"b99d501a34fb11b2779307e9abf1c6ba1c75851a"},{"author":{"_account_id":8731,"name":"Renat Akhmerov","email":"renat.akhmerov@gmail.com","username":"rakhmerov"},"change_message_id":"fba7cc6e44684d16b067ad0709f82f72ff22132a","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        \"\"\"Synchronous call of RPC method."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"        Blocks the thread and wait for method result."},{"line_number":34,"context_line":"        :return:"},{"line_number":35,"context_line":"        \"\"\""},{"line_number":36,"context_line":"        raise NotImplementedError"},{"line_number":37,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"3aaa91ec_e5cacea0","line":34,"range":{"start_line":34,"start_character":15,"end_line":34,"end_character":16},"updated":"2016-06-22 12:16:35.000000000","message":"I wonder if we need to say something in \"return\" section (applies to all methods in the module)","commit_id":"b99d501a34fb11b2779307e9abf1c6ba1c75851a"},{"author":{"_account_id":19206,"name":"Dawid Deja","email":"dawdej@gmail.com","username":"ddeja"},"change_message_id":"d47e06e5dc6b6a2aa25584c9d14b7bb61ca7784d","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        \"\"\"Synchronous call of RPC method."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"        Blocks the thread and wait for method result."},{"line_number":34,"context_line":"        :return:"},{"line_number":35,"context_line":"        \"\"\""},{"line_number":36,"context_line":"        raise NotImplementedError"},{"line_number":37,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"3aaa91ec_ae441a74","line":34,"range":{"start_line":34,"start_character":15,"end_line":34,"end_character":16},"in_reply_to":"3aaa91ec_e5cacea0","updated":"2016-06-22 17:11:56.000000000","message":"I guess not. I\u0027ve deleted the \u0027return\u0027 statement from comments","commit_id":"b99d501a34fb11b2779307e9abf1c6ba1c75851a"},{"author":{"_account_id":8731,"name":"Renat Akhmerov","email":"renat.akhmerov@gmail.com","username":"rakhmerov"},"change_message_id":"fba7cc6e44684d16b067ad0709f82f72ff22132a","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    def async_call(self, ctx, method, target\u003dNone, **kwargs):"},{"line_number":40,"context_line":"        \"\"\"Asynchronous call of RPC method."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"        Does not block the thread, just send invoking data to"},{"line_number":43,"context_line":"        the RPC server and immediately returns nothing."},{"line_number":44,"context_line":"        :return:"},{"line_number":45,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":22,"id":"3aaa91ec_e5fe4e6a","line":42,"range":{"start_line":42,"start_character":35,"end_line":42,"end_character":58},"updated":"2016-06-22 12:16:35.000000000","message":"Soft: may be \"just sends data\"?","commit_id":"b99d501a34fb11b2779307e9abf1c6ba1c75851a"},{"author":{"_account_id":19206,"name":"Dawid Deja","email":"dawdej@gmail.com","username":"ddeja"},"change_message_id":"d47e06e5dc6b6a2aa25584c9d14b7bb61ca7784d","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    def async_call(self, ctx, method, target\u003dNone, **kwargs):"},{"line_number":40,"context_line":"        \"\"\"Asynchronous call of RPC method."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"        Does not block the thread, just send invoking data to"},{"line_number":43,"context_line":"        the RPC server and immediately returns nothing."},{"line_number":44,"context_line":"        :return:"},{"line_number":45,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":22,"id":"3aaa91ec_0e560e29","line":42,"range":{"start_line":42,"start_character":35,"end_line":42,"end_character":58},"in_reply_to":"3aaa91ec_e5fe4e6a","updated":"2016-06-22 17:11:56.000000000","message":"Done","commit_id":"b99d501a34fb11b2779307e9abf1c6ba1c75851a"},{"author":{"_account_id":13692,"name":"Roman Dobosz","email":"gryf73@gmail.com","username":"gryf"},"change_message_id":"b2743db412d6e7b14bd6665975becd0a2c014fd4","unresolved":false,"context_lines":[{"line_number":19,"context_line":"    def __init__(self, conf):"},{"line_number":20,"context_line":"        \"\"\"Base class for RPCClient\u0027s drivers"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"        All RPC client drivers have to inherit from this class"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"        :param conf: dict containing credentials such as"},{"line_number":25,"context_line":"            \u0027user_id\u0027, \u0027password\u0027, and also exchange and connection info:"}],"source_content_type":"text/x-python","patch_set":23,"id":"3aaa91ec_b51c57c2","line":22,"range":{"start_line":22,"start_character":8,"end_line":22,"end_character":62},"updated":"2016-06-22 18:55:03.000000000","message":"I get the feeling this sentence isn\u0027t finished. Am I right?","commit_id":"8718586dde65847cab2c52689799c46064271e24"},{"author":{"_account_id":8731,"name":"Renat Akhmerov","email":"renat.akhmerov@gmail.com","username":"rakhmerov"},"change_message_id":"67035145a1424a9aa0340b7784f145922b75706c","unresolved":false,"context_lines":[{"line_number":19,"context_line":"    def __init__(self, conf):"},{"line_number":20,"context_line":"        \"\"\"Base class for RPCClient\u0027s drivers"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"        All RPC client drivers have to inherit from this class"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"        :param conf: dict containing credentials such as"},{"line_number":25,"context_line":"            \u0027user_id\u0027, \u0027password\u0027, and also exchange and connection info:"}],"source_content_type":"text/x-python","patch_set":23,"id":"3aaa91ec_fccd155e","line":22,"range":{"start_line":22,"start_character":8,"end_line":22,"end_character":62},"in_reply_to":"3aaa91ec_b51c57c2","updated":"2016-06-23 06:46:07.000000000","message":"To me it looks finished but I would expect to see a period at the end :) That way it wouldn\u0027t be confusing.\n\nThat\u0027s why I always ask people to write comments so that they are compliant with regular English language grammar. With starting capitals, commas, periods etc.\nDawid, can you please fix this all across your changes?","commit_id":"8718586dde65847cab2c52689799c46064271e24"},{"author":{"_account_id":19206,"name":"Dawid Deja","email":"dawdej@gmail.com","username":"ddeja"},"change_message_id":"acde627d2003e18e3ebc3cc13a416ed59749a203","unresolved":false,"context_lines":[{"line_number":19,"context_line":"    def __init__(self, conf):"},{"line_number":20,"context_line":"        \"\"\"Base class for RPCClient\u0027s drivers"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"        All RPC client drivers have to inherit from this class"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"        :param conf: dict containing credentials such as"},{"line_number":25,"context_line":"            \u0027user_id\u0027, \u0027password\u0027, and also exchange and connection info:"}],"source_content_type":"text/x-python","patch_set":23,"id":"3aaa91ec_d3caed6d","line":22,"range":{"start_line":22,"start_character":8,"end_line":22,"end_character":62},"in_reply_to":"3aaa91ec_fccd155e","updated":"2016-06-28 11:43:10.000000000","message":"Done","commit_id":"8718586dde65847cab2c52689799c46064271e24"}],"mistral/engine/rpc_direct/kombu/base.py":[{"author":{"_account_id":8731,"name":"Renat Akhmerov","email":"renat.akhmerov@gmail.com","username":"rakhmerov"},"change_message_id":"55c3e887bfccc014f6f004df8ae0fb3738448ddf","unresolved":false,"context_lines":[{"line_number":21,"context_line":"    @staticmethod"},{"line_number":22,"context_line":"    def _make_connection(amqp_host, amqp_user, amqp_password,"},{"line_number":23,"context_line":"                         amqp_vhost, amqp_port):"},{"line_number":24,"context_line":"        # create connection"},{"line_number":25,"context_line":"        return kombu.BrokerConnection("},{"line_number":26,"context_line":"            hostname\u003damqp_host,"},{"line_number":27,"context_line":"            userid\u003damqp_user,"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_39fbb548","line":24,"updated":"2015-07-03 11:12:40.000000000","message":"-\u003e \"Create connection\"","commit_id":"926c1309f5bd8e7cf09879a43963a349d4f41f0d"},{"author":{"_account_id":7700,"name":"Nikolay Mahotkin","email":"nikolay.makhotkin@gmail.com","username":"nmakhotkin"},"change_message_id":"d481abbf09336399f695d064123fc583d52189c3","unresolved":false,"context_lines":[{"line_number":21,"context_line":"    @staticmethod"},{"line_number":22,"context_line":"    def _make_connection(amqp_host, amqp_user, amqp_password,"},{"line_number":23,"context_line":"                         amqp_vhost, amqp_port):"},{"line_number":24,"context_line":"        # create connection"},{"line_number":25,"context_line":"        return kombu.BrokerConnection("},{"line_number":26,"context_line":"            hostname\u003damqp_host,"},{"line_number":27,"context_line":"            userid\u003damqp_user,"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_30ac228b","line":24,"in_reply_to":"ba3cc151_39fbb548","updated":"2015-07-03 12:40:00.000000000","message":"Done","commit_id":"926c1309f5bd8e7cf09879a43963a349d4f41f0d"},{"author":{"_account_id":8731,"name":"Renat Akhmerov","email":"renat.akhmerov@gmail.com","username":"rakhmerov"},"change_message_id":"fba7cc6e44684d16b067ad0709f82f72ff22132a","unresolved":false,"context_lines":[{"line_number":21,"context_line":"    @staticmethod"},{"line_number":22,"context_line":"    def _make_connection(amqp_host, amqp_user, amqp_password,"},{"line_number":23,"context_line":"                         amqp_vhost, amqp_port):"},{"line_number":24,"context_line":"        # create connection"},{"line_number":25,"context_line":"        return kombu.BrokerConnection("},{"line_number":26,"context_line":"            hostname\u003damqp_host,"},{"line_number":27,"context_line":"            userid\u003damqp_user,"}],"source_content_type":"text/x-python","patch_set":22,"id":"3aaa91ec_a52c464b","line":24,"range":{"start_line":24,"start_character":10,"end_line":24,"end_character":16},"updated":"2016-06-22 12:16:35.000000000","message":"Soft: Comments should be compliant with regular English language rules (start with a capital and end with a period.)","commit_id":"b99d501a34fb11b2779307e9abf1c6ba1c75851a"},{"author":{"_account_id":19206,"name":"Dawid Deja","email":"dawdej@gmail.com","username":"ddeja"},"change_message_id":"d47e06e5dc6b6a2aa25584c9d14b7bb61ca7784d","unresolved":false,"context_lines":[{"line_number":21,"context_line":"    @staticmethod"},{"line_number":22,"context_line":"    def _make_connection(amqp_host, amqp_user, amqp_password,"},{"line_number":23,"context_line":"                         amqp_vhost, amqp_port):"},{"line_number":24,"context_line":"        # create connection"},{"line_number":25,"context_line":"        return kombu.BrokerConnection("},{"line_number":26,"context_line":"            hostname\u003damqp_host,"},{"line_number":27,"context_line":"            userid\u003damqp_user,"}],"source_content_type":"text/x-python","patch_set":22,"id":"3aaa91ec_644c1243","line":24,"range":{"start_line":24,"start_character":10,"end_line":24,"end_character":16},"in_reply_to":"3aaa91ec_a52c464b","updated":"2016-06-22 17:11:56.000000000","message":"Done","commit_id":"b99d501a34fb11b2779307e9abf1c6ba1c75851a"},{"author":{"_account_id":13692,"name":"Roman Dobosz","email":"gryf73@gmail.com","username":"gryf"},"change_message_id":"b2743db412d6e7b14bd6665975becd0a2c014fd4","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    @staticmethod"},{"line_number":34,"context_line":"    def _make_exchange(name, durable\u003dFalse, auto_delete\u003dTrue):"},{"line_number":35,"context_line":"        # Make named exchange."},{"line_number":36,"context_line":"        return kombu.Exchange("},{"line_number":37,"context_line":"            name\u003dname,"},{"line_number":38,"context_line":"            type\u003d\u0027topic\u0027,"}],"source_content_type":"text/x-python","patch_set":23,"id":"3aaa91ec_f54d3f9a","line":35,"range":{"start_line":35,"start_character":8,"end_line":35,"end_character":30},"updated":"2016-06-22 18:55:03.000000000","message":"nit: Instead changing docstring into comment, I\u0027ll suggest to expand it a little, since this is a method for base class, which people will look into to figure out how to implement their subclass.","commit_id":"8718586dde65847cab2c52689799c46064271e24"},{"author":{"_account_id":19206,"name":"Dawid Deja","email":"dawdej@gmail.com","username":"ddeja"},"change_message_id":"acde627d2003e18e3ebc3cc13a416ed59749a203","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    @staticmethod"},{"line_number":34,"context_line":"    def _make_exchange(name, durable\u003dFalse, auto_delete\u003dTrue):"},{"line_number":35,"context_line":"        # Make named exchange."},{"line_number":36,"context_line":"        return kombu.Exchange("},{"line_number":37,"context_line":"            name\u003dname,"},{"line_number":38,"context_line":"            type\u003d\u0027topic\u0027,"}],"source_content_type":"text/x-python","patch_set":23,"id":"3aaa91ec_33f1b1ce","line":35,"range":{"start_line":35,"start_character":8,"end_line":35,"end_character":30},"in_reply_to":"3aaa91ec_1c4101aa","updated":"2016-06-28 11:43:10.000000000","message":"Done","commit_id":"8718586dde65847cab2c52689799c46064271e24"},{"author":{"_account_id":8731,"name":"Renat Akhmerov","email":"renat.akhmerov@gmail.com","username":"rakhmerov"},"change_message_id":"67035145a1424a9aa0340b7784f145922b75706c","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    @staticmethod"},{"line_number":34,"context_line":"    def _make_exchange(name, durable\u003dFalse, auto_delete\u003dTrue):"},{"line_number":35,"context_line":"        # Make named exchange."},{"line_number":36,"context_line":"        return kombu.Exchange("},{"line_number":37,"context_line":"            name\u003dname,"},{"line_number":38,"context_line":"            type\u003d\u0027topic\u0027,"}],"source_content_type":"text/x-python","patch_set":23,"id":"3aaa91ec_1c4101aa","line":35,"range":{"start_line":35,"start_character":8,"end_line":35,"end_character":30},"in_reply_to":"3aaa91ec_f54d3f9a","updated":"2016-06-23 06:46:07.000000000","message":"I completely agree.","commit_id":"8718586dde65847cab2c52689799c46064271e24"},{"author":{"_account_id":13692,"name":"Roman Dobosz","email":"gryf73@gmail.com","username":"gryf"},"change_message_id":"b2743db412d6e7b14bd6665975becd0a2c014fd4","unresolved":false,"context_lines":[{"line_number":43,"context_line":"    @staticmethod"},{"line_number":44,"context_line":"    def _make_queue(name, exchange, routing_key\u003d\u0027\u0027,"},{"line_number":45,"context_line":"                    durable\u003dFalse, auto_delete\u003dTrue, **kwargs):"},{"line_number":46,"context_line":"        # Make named queue for a given exchange."},{"line_number":47,"context_line":"        return kombu.Queue("},{"line_number":48,"context_line":"            name\u003dname,"},{"line_number":49,"context_line":"            routing_key\u003drouting_key,"}],"source_content_type":"text/x-python","patch_set":23,"id":"3aaa91ec_35486787","line":46,"range":{"start_line":46,"start_character":8,"end_line":46,"end_character":48},"updated":"2016-06-22 18:55:03.000000000","message":"ditto","commit_id":"8718586dde65847cab2c52689799c46064271e24"},{"author":{"_account_id":19206,"name":"Dawid Deja","email":"dawdej@gmail.com","username":"ddeja"},"change_message_id":"acde627d2003e18e3ebc3cc13a416ed59749a203","unresolved":false,"context_lines":[{"line_number":43,"context_line":"    @staticmethod"},{"line_number":44,"context_line":"    def _make_queue(name, exchange, routing_key\u003d\u0027\u0027,"},{"line_number":45,"context_line":"                    durable\u003dFalse, auto_delete\u003dTrue, **kwargs):"},{"line_number":46,"context_line":"        # Make named queue for a given exchange."},{"line_number":47,"context_line":"        return kombu.Queue("},{"line_number":48,"context_line":"            name\u003dname,"},{"line_number":49,"context_line":"            routing_key\u003drouting_key,"}],"source_content_type":"text/x-python","patch_set":23,"id":"3aaa91ec_13ee35ec","line":46,"range":{"start_line":46,"start_character":8,"end_line":46,"end_character":48},"in_reply_to":"3aaa91ec_35486787","updated":"2016-06-28 11:43:10.000000000","message":"Done","commit_id":"8718586dde65847cab2c52689799c46064271e24"}],"mistral/engine/rpc_direct/kombu/examples/client.py":[{"author":{"_account_id":8731,"name":"Renat Akhmerov","email":"renat.akhmerov@gmail.com","username":"rakhmerov"},"change_message_id":"fba7cc6e44684d16b067ad0709f82f72ff22132a","unresolved":false,"context_lines":[{"line_number":15,"context_line":"from mistral.engine.rpc_direct.kombu import kombu_client"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"# Example of using."},{"line_number":19,"context_line":"def main():"},{"line_number":20,"context_line":"    conf \u003d {"},{"line_number":21,"context_line":"        \u0027user_id\u0027: \u0027guest\u0027,"}],"source_content_type":"text/x-python","patch_set":22,"id":"3aaa91ec_a84d3d74","line":18,"range":{"start_line":18,"start_character":2,"end_line":18,"end_character":18},"updated":"2016-06-22 12:16:35.000000000","message":"Soft: -\u003e \"Example of using Kombu based RPC client.\"","commit_id":"b99d501a34fb11b2779307e9abf1c6ba1c75851a"},{"author":{"_account_id":19206,"name":"Dawid Deja","email":"dawdej@gmail.com","username":"ddeja"},"change_message_id":"d47e06e5dc6b6a2aa25584c9d14b7bb61ca7784d","unresolved":false,"context_lines":[{"line_number":15,"context_line":"from mistral.engine.rpc_direct.kombu import kombu_client"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"# Example of using."},{"line_number":19,"context_line":"def main():"},{"line_number":20,"context_line":"    conf \u003d {"},{"line_number":21,"context_line":"        \u0027user_id\u0027: \u0027guest\u0027,"}],"source_content_type":"text/x-python","patch_set":22,"id":"3aaa91ec_24104a01","line":18,"range":{"start_line":18,"start_character":2,"end_line":18,"end_character":18},"in_reply_to":"3aaa91ec_a84d3d74","updated":"2016-06-22 17:11:56.000000000","message":"Done","commit_id":"b99d501a34fb11b2779307e9abf1c6ba1c75851a"},{"author":{"_account_id":8731,"name":"Renat Akhmerov","email":"renat.akhmerov@gmail.com","username":"rakhmerov"},"change_message_id":"fba7cc6e44684d16b067ad0709f82f72ff22132a","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    print(\" [x] Requesting ...\")"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    ctx \u003d type(\u0027context\u0027, (object,), {\u0027to_dict\u0027: lambda self: {}})()"},{"line_number":35,"context_line":"    response \u003d kombu_rpc.sync_call(ctx, \u0027fib\u0027, n\u003d44)"},{"line_number":36,"context_line":"    print(\" [.] Got %r\" % (response,))"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"3aaa91ec_28de6d6d","line":35,"range":{"start_line":35,"start_character":4,"end_line":35,"end_character":12},"updated":"2016-06-22 12:16:35.000000000","message":"Soft: I would insert blank lines before and after the call to the client to separate it from call preparation code and post-call code.","commit_id":"b99d501a34fb11b2779307e9abf1c6ba1c75851a"},{"author":{"_account_id":19206,"name":"Dawid Deja","email":"dawdej@gmail.com","username":"ddeja"},"change_message_id":"d47e06e5dc6b6a2aa25584c9d14b7bb61ca7784d","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    print(\" [x] Requesting ...\")"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    ctx \u003d type(\u0027context\u0027, (object,), {\u0027to_dict\u0027: lambda self: {}})()"},{"line_number":35,"context_line":"    response \u003d kombu_rpc.sync_call(ctx, \u0027fib\u0027, n\u003d44)"},{"line_number":36,"context_line":"    print(\" [.] Got %r\" % (response,))"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"3aaa91ec_6421b24d","line":35,"range":{"start_line":35,"start_character":4,"end_line":35,"end_character":12},"in_reply_to":"3aaa91ec_28de6d6d","updated":"2016-06-22 17:11:56.000000000","message":"Done","commit_id":"b99d501a34fb11b2779307e9abf1c6ba1c75851a"},{"author":{"_account_id":13692,"name":"Roman Dobosz","email":"gryf73@gmail.com","username":"gryf"},"change_message_id":"b2743db412d6e7b14bd6665975becd0a2c014fd4","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    print(\" [x] Requesting ...\")"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    ctx \u003d type(\u0027context\u0027, (object,), {\u0027to_dict\u0027: lambda self: {}})()"},{"line_number":35,"context_line":"    response \u003d kombu_rpc.sync_call(ctx, \u0027fib\u0027, n\u003d44)"},{"line_number":36,"context_line":"    print(\" [.] Got %r\" % (response,))"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"3aaa91ec_3516a755","line":35,"range":{"start_line":35,"start_character":4,"end_line":35,"end_character":52},"updated":"2016-06-22 18:55:03.000000000","message":"soft: I\u0027m also fan of separating significant lines of code with blank lines…","commit_id":"8718586dde65847cab2c52689799c46064271e24"},{"author":{"_account_id":8731,"name":"Renat Akhmerov","email":"renat.akhmerov@gmail.com","username":"rakhmerov"},"change_message_id":"67035145a1424a9aa0340b7784f145922b75706c","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    print(\" [x] Requesting ...\")"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    ctx \u003d type(\u0027context\u0027, (object,), {\u0027to_dict\u0027: lambda self: {}})()"},{"line_number":35,"context_line":"    response \u003d kombu_rpc.sync_call(ctx, \u0027fib\u0027, n\u003d44)"},{"line_number":36,"context_line":"    print(\" [.] Got %r\" % (response,))"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"3aaa91ec_dc0db991","line":35,"range":{"start_line":35,"start_character":4,"end_line":35,"end_character":52},"in_reply_to":"3aaa91ec_3516a755","updated":"2016-06-23 06:46:07.000000000","message":"Yep :)","commit_id":"8718586dde65847cab2c52689799c46064271e24"},{"author":{"_account_id":19206,"name":"Dawid Deja","email":"dawdej@gmail.com","username":"ddeja"},"change_message_id":"acde627d2003e18e3ebc3cc13a416ed59749a203","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    print(\" [x] Requesting ...\")"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    ctx \u003d type(\u0027context\u0027, (object,), {\u0027to_dict\u0027: lambda self: {}})()"},{"line_number":35,"context_line":"    response \u003d kombu_rpc.sync_call(ctx, \u0027fib\u0027, n\u003d44)"},{"line_number":36,"context_line":"    print(\" [.] Got %r\" % (response,))"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"3aaa91ec_f3e60915","line":35,"range":{"start_line":35,"start_character":4,"end_line":35,"end_character":52},"in_reply_to":"3aaa91ec_dc0db991","updated":"2016-06-28 11:43:10.000000000","message":"Done","commit_id":"8718586dde65847cab2c52689799c46064271e24"}],"mistral/engine/rpc_direct/kombu/examples/server.py":[{"author":{"_account_id":8731,"name":"Renat Akhmerov","email":"renat.akhmerov@gmail.com","username":"rakhmerov"},"change_message_id":"fba7cc6e44684d16b067ad0709f82f72ff22132a","unresolved":false,"context_lines":[{"line_number":30,"context_line":"        return self.__class__.__name__"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"# Example of using."},{"line_number":34,"context_line":"def main():"},{"line_number":35,"context_line":"    conf \u003d {"},{"line_number":36,"context_line":"        \u0027user_id\u0027: \u0027guest\u0027,"}],"source_content_type":"text/x-python","patch_set":22,"id":"3aaa91ec_6856b5d3","line":33,"range":{"start_line":33,"start_character":2,"end_line":33,"end_character":18},"updated":"2016-06-22 12:16:35.000000000","message":"Soft: Same comment as in the previous file. Example of using what?","commit_id":"b99d501a34fb11b2779307e9abf1c6ba1c75851a"},{"author":{"_account_id":19206,"name":"Dawid Deja","email":"dawdej@gmail.com","username":"ddeja"},"change_message_id":"d47e06e5dc6b6a2aa25584c9d14b7bb61ca7784d","unresolved":false,"context_lines":[{"line_number":30,"context_line":"        return self.__class__.__name__"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"# Example of using."},{"line_number":34,"context_line":"def main():"},{"line_number":35,"context_line":"    conf \u003d {"},{"line_number":36,"context_line":"        \u0027user_id\u0027: \u0027guest\u0027,"}],"source_content_type":"text/x-python","patch_set":22,"id":"3aaa91ec_84edbef1","line":33,"range":{"start_line":33,"start_character":2,"end_line":33,"end_character":18},"in_reply_to":"3aaa91ec_6856b5d3","updated":"2016-06-22 17:11:56.000000000","message":"Done","commit_id":"b99d501a34fb11b2779307e9abf1c6ba1c75851a"}],"mistral/engine/rpc_direct/kombu/kombu_client.py":[{"author":{"_account_id":8731,"name":"Renat Akhmerov","email":"renat.akhmerov@gmail.com","username":"rakhmerov"},"change_message_id":"d40c19314b1d2a9e797ebb3f8a6353d1324a62f1","unresolved":false,"context_lines":[{"line_number":42,"context_line":"            self.virtual_host,"},{"line_number":43,"context_line":"            self.rabbit_port"},{"line_number":44,"context_line":"        )"},{"line_number":45,"context_line":"        # create exchange"},{"line_number":46,"context_line":"        exchange \u003d self._make_exchange("},{"line_number":47,"context_line":"            self.exchange,"},{"line_number":48,"context_line":"            durable\u003dself.durable_queue,"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_9f9988c6","line":45,"updated":"2015-07-03 09:09:35.000000000","message":"-\u003e \"Create exchange.\"","commit_id":"ebedec6426032c08ab4ebb7cdb5b196e22dc2ecc"},{"author":{"_account_id":8731,"name":"Renat Akhmerov","email":"renat.akhmerov@gmail.com","username":"rakhmerov"},"change_message_id":"d40c19314b1d2a9e797ebb3f8a6353d1324a62f1","unresolved":false,"context_lines":[{"line_number":49,"context_line":"            auto_delete\u003dself.auto_delete"},{"line_number":50,"context_line":"        )"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"        # create queue"},{"line_number":53,"context_line":"        self.callback_queue \u003d kombu.Queue("},{"line_number":54,"context_line":"            str(uuid.uuid4()),"},{"line_number":55,"context_line":"            exchange\u003dexchange,"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_1fec9828","line":52,"updated":"2015-07-03 09:09:35.000000000","message":"Same.","commit_id":"ebedec6426032c08ab4ebb7cdb5b196e22dc2ecc"},{"author":{"_account_id":8731,"name":"Renat Akhmerov","email":"renat.akhmerov@gmail.com","username":"rakhmerov"},"change_message_id":"d40c19314b1d2a9e797ebb3f8a6353d1324a62f1","unresolved":false,"context_lines":[{"line_number":59,"context_line":"            auto_delete\u003dTrue"},{"line_number":60,"context_line":"        )"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"        # create consumer"},{"line_number":63,"context_line":"        consumer \u003d kombu.Consumer("},{"line_number":64,"context_line":"            channel\u003dself.conn.channel(),"},{"line_number":65,"context_line":"            queues\u003dself.callback_queue,"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_fff454f1","line":62,"updated":"2015-07-03 09:09:35.000000000","message":"Same.","commit_id":"ebedec6426032c08ab4ebb7cdb5b196e22dc2ecc"},{"author":{"_account_id":8731,"name":"Renat Akhmerov","email":"renat.akhmerov@gmail.com","username":"rakhmerov"},"change_message_id":"d40c19314b1d2a9e797ebb3f8a6353d1324a62f1","unresolved":false,"context_lines":[{"line_number":77,"context_line":"            information"},{"line_number":78,"context_line":"        \"\"\""},{"line_number":79,"context_line":"        LOG.debug(\"Got response: {0}\".format(response))"},{"line_number":80,"context_line":"        try:"},{"line_number":81,"context_line":"            message.ack()"},{"line_number":82,"context_line":"        except Exception:"},{"line_number":83,"context_line":"            LOG.exception(\"Failed to acknowledge AMQP message.\")"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_df0dd0e8","line":80,"updated":"2015-07-03 09:09:35.000000000","message":"Blank line before try.","commit_id":"ebedec6426032c08ab4ebb7cdb5b196e22dc2ecc"},{"author":{"_account_id":8731,"name":"Renat Akhmerov","email":"renat.akhmerov@gmail.com","username":"rakhmerov"},"change_message_id":"d40c19314b1d2a9e797ebb3f8a6353d1324a62f1","unresolved":false,"context_lines":[{"line_number":78,"context_line":"        \"\"\""},{"line_number":79,"context_line":"        LOG.debug(\"Got response: {0}\".format(response))"},{"line_number":80,"context_line":"        try:"},{"line_number":81,"context_line":"            message.ack()"},{"line_number":82,"context_line":"        except Exception:"},{"line_number":83,"context_line":"            LOG.exception(\"Failed to acknowledge AMQP message.\")"},{"line_number":84,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_1fe018cc","line":81,"updated":"2015-07-03 09:09:35.000000000","message":"As far I understand in our architecture a server should acknowledge messages, not client. No? Because client in our case is a message producer and server is a consumer. So consumer should ack a message when it\u0027s processed.\n\nCan you clarify please?","commit_id":"ebedec6426032c08ab4ebb7cdb5b196e22dc2ecc"},{"author":{"_account_id":7700,"name":"Nikolay Mahotkin","email":"nikolay.makhotkin@gmail.com","username":"nmakhotkin"},"change_message_id":"10f6fc73ceb2884dfaee305d4a8ce0ef2379420a","unresolved":false,"context_lines":[{"line_number":78,"context_line":"        \"\"\""},{"line_number":79,"context_line":"        LOG.debug(\"Got response: {0}\".format(response))"},{"line_number":80,"context_line":"        try:"},{"line_number":81,"context_line":"            message.ack()"},{"line_number":82,"context_line":"        except Exception:"},{"line_number":83,"context_line":"            LOG.exception(\"Failed to acknowledge AMQP message.\")"},{"line_number":84,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_d6acd6a0","line":81,"in_reply_to":"ba3cc151_1fe018cc","updated":"2015-07-03 10:49:11.000000000","message":"Yes. When we send messages from client and receive a reply, it means that server sends message to client too. This message we should also acknowledge (as a response from the server).","commit_id":"ebedec6426032c08ab4ebb7cdb5b196e22dc2ecc"},{"author":{"_account_id":8731,"name":"Renat Akhmerov","email":"renat.akhmerov@gmail.com","username":"rakhmerov"},"change_message_id":"d40c19314b1d2a9e797ebb3f8a6353d1324a62f1","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        \"\"\"The remote-method-call execution function."},{"line_number":97,"context_line":"        :param method: name of the method that should be executed"},{"line_number":98,"context_line":"        :param kwargs: parameter for the remote-method"},{"line_number":99,"context_line":"        :type method: string"},{"line_number":100,"context_line":"        :type kwargs: list of parameters"},{"line_number":101,"context_line":"        :rtype: result of the method"},{"line_number":102,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_ffde943c","line":99,"updated":"2015-07-03 09:09:35.000000000","message":"\"string\" -\u003e \"method nane\"","commit_id":"ebedec6426032c08ab4ebb7cdb5b196e22dc2ecc"},{"author":{"_account_id":8731,"name":"Renat Akhmerov","email":"renat.akhmerov@gmail.com","username":"rakhmerov"},"change_message_id":"c7b85aef1469fc0afa6a49e3dcf9f64013ffef2d","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        \"\"\"The remote-method-call execution function."},{"line_number":97,"context_line":"        :param method: name of the method that should be executed"},{"line_number":98,"context_line":"        :param kwargs: parameter for the remote-method"},{"line_number":99,"context_line":"        :type method: string"},{"line_number":100,"context_line":"        :type kwargs: list of parameters"},{"line_number":101,"context_line":"        :rtype: result of the method"},{"line_number":102,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_196911f9","line":99,"in_reply_to":"ba3cc151_f6d55a1b","updated":"2015-07-03 11:12:32.000000000","message":"Ooh, sorry. I didn\u0027t notice that it\u0027s type name.","commit_id":"ebedec6426032c08ab4ebb7cdb5b196e22dc2ecc"},{"author":{"_account_id":7700,"name":"Nikolay Mahotkin","email":"nikolay.makhotkin@gmail.com","username":"nmakhotkin"},"change_message_id":"10f6fc73ceb2884dfaee305d4a8ce0ef2379420a","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        \"\"\"The remote-method-call execution function."},{"line_number":97,"context_line":"        :param method: name of the method that should be executed"},{"line_number":98,"context_line":"        :param kwargs: parameter for the remote-method"},{"line_number":99,"context_line":"        :type method: string"},{"line_number":100,"context_line":"        :type kwargs: list of parameters"},{"line_number":101,"context_line":"        :rtype: result of the method"},{"line_number":102,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_f6d55a1b","line":99,"in_reply_to":"ba3cc151_ffde943c","updated":"2015-07-03 10:49:11.000000000","message":"actually, it is a string type.","commit_id":"ebedec6426032c08ab4ebb7cdb5b196e22dc2ecc"},{"author":{"_account_id":8731,"name":"Renat Akhmerov","email":"renat.akhmerov@gmail.com","username":"rakhmerov"},"change_message_id":"d40c19314b1d2a9e797ebb3f8a6353d1324a62f1","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        }"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"        LOG.debug(\"Publish request: {0}\".format(body))"},{"line_number":113,"context_line":"        # publish request"},{"line_number":114,"context_line":"        with kombu.producers[self.conn].acquire(block\u003dTrue) as producer:"},{"line_number":115,"context_line":"            producer.publish("},{"line_number":116,"context_line":"                body\u003dbody,"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_5ff0e0c8","line":113,"updated":"2015-07-03 09:09:35.000000000","message":"1. Blank line before the comment.\n2. -\u003e \"Publlish request.\"","commit_id":"ebedec6426032c08ab4ebb7cdb5b196e22dc2ecc"},{"author":{"_account_id":8731,"name":"Renat Akhmerov","email":"renat.akhmerov@gmail.com","username":"rakhmerov"},"change_message_id":"d40c19314b1d2a9e797ebb3f8a6353d1324a62f1","unresolved":false,"context_lines":[{"line_number":120,"context_line":"                correlation_id\u003dself._corr_id,"},{"line_number":121,"context_line":"            )"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"        # start waiting for the response"},{"line_number":124,"context_line":"        self._wait_for_result()"},{"line_number":125,"context_line":"        self._is_received \u003d False"},{"line_number":126,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_ffb534ec","line":123,"updated":"2015-07-03 09:09:35.000000000","message":"Same.","commit_id":"ebedec6426032c08ab4ebb7cdb5b196e22dc2ecc"},{"author":{"_account_id":8731,"name":"Renat Akhmerov","email":"renat.akhmerov@gmail.com","username":"rakhmerov"},"change_message_id":"d40c19314b1d2a9e797ebb3f8a6353d1324a62f1","unresolved":false,"context_lines":[{"line_number":124,"context_line":"        self._wait_for_result()"},{"line_number":125,"context_line":"        self._is_received \u003d False"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"        # handler response"},{"line_number":128,"context_line":"        result \u003d self._response"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"        return result"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_9fd18825","line":127,"updated":"2015-07-03 09:09:35.000000000","message":"Same.","commit_id":"ebedec6426032c08ab4ebb7cdb5b196e22dc2ecc"},{"author":{"_account_id":8731,"name":"Renat Akhmerov","email":"renat.akhmerov@gmail.com","username":"rakhmerov"},"change_message_id":"d40c19314b1d2a9e797ebb3f8a6353d1324a62f1","unresolved":false,"context_lines":[{"line_number":135,"context_line":"        will be raised."},{"line_number":136,"context_line":"        \"\"\""},{"line_number":137,"context_line":"        start_time \u003d time.time()"},{"line_number":138,"context_line":"        while not self._is_received:"},{"line_number":139,"context_line":"            try:"},{"line_number":140,"context_line":"                self.conn.drain_events(timeout\u003d1)"},{"line_number":141,"context_line":"            except socket.timeout:"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_9f7f4814","line":138,"updated":"2015-07-03 09:09:35.000000000","message":"Blank line before \"while\".","commit_id":"ebedec6426032c08ab4ebb7cdb5b196e22dc2ecc"},{"author":{"_account_id":8731,"name":"Renat Akhmerov","email":"renat.akhmerov@gmail.com","username":"rakhmerov"},"change_message_id":"55c3e887bfccc014f6f004df8ae0fb3738448ddf","unresolved":false,"context_lines":[{"line_number":152,"context_line":""},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"# Example of using."},{"line_number":155,"context_line":"def main():"},{"line_number":156,"context_line":"    conf \u003d {"},{"line_number":157,"context_line":"        \u0027user_id\u0027: \u0027guest\u0027,"},{"line_number":158,"context_line":"        \u0027password\u0027: \u0027secret\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_59df99d5","line":155,"updated":"2015-07-03 11:12:40.000000000","message":"Let\u0027s move examples into a separate place.","commit_id":"926c1309f5bd8e7cf09879a43963a349d4f41f0d"},{"author":{"_account_id":7700,"name":"Nikolay Mahotkin","email":"nikolay.makhotkin@gmail.com","username":"nmakhotkin"},"change_message_id":"d481abbf09336399f695d064123fc583d52189c3","unresolved":false,"context_lines":[{"line_number":152,"context_line":""},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"# Example of using."},{"line_number":155,"context_line":"def main():"},{"line_number":156,"context_line":"    conf \u003d {"},{"line_number":157,"context_line":"        \u0027user_id\u0027: \u0027guest\u0027,"},{"line_number":158,"context_line":"        \u0027password\u0027: \u0027secret\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_50a766a6","line":155,"in_reply_to":"ba3cc151_59df99d5","updated":"2015-07-03 12:40:00.000000000","message":"Done","commit_id":"926c1309f5bd8e7cf09879a43963a349d4f41f0d"},{"author":{"_account_id":6732,"name":"Lingxian Kong","email":"anlin.kong@gmail.com","username":"kong"},"change_message_id":"e5afecb68d471986b458b5abbab5c967b00d55be","unresolved":false,"context_lines":[{"line_number":52,"context_line":"            self.virtual_host,"},{"line_number":53,"context_line":"            self.port"},{"line_number":54,"context_line":"        )"},{"line_number":55,"context_line":"        # Create exchange."},{"line_number":56,"context_line":"        exchange \u003d self._make_exchange("},{"line_number":57,"context_line":"            self.exchange,"},{"line_number":58,"context_line":"            durable\u003dself.durable_queue,"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba3cc151_fe062f84","line":55,"updated":"2015-07-07 09:08:45.000000000","message":"need a blank line","commit_id":"81f9ec4ce710403340a7a435bb1ff4217f24fe80"},{"author":{"_account_id":7700,"name":"Nikolay Mahotkin","email":"nikolay.makhotkin@gmail.com","username":"nmakhotkin"},"change_message_id":"6de73117030d153e779164e713404966d10bbe74","unresolved":false,"context_lines":[{"line_number":52,"context_line":"            self.virtual_host,"},{"line_number":53,"context_line":"            self.port"},{"line_number":54,"context_line":"        )"},{"line_number":55,"context_line":"        # Create exchange."},{"line_number":56,"context_line":"        exchange \u003d self._make_exchange("},{"line_number":57,"context_line":"            self.exchange,"},{"line_number":58,"context_line":"            durable\u003dself.durable_queue,"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba3cc151_a6506733","line":55,"in_reply_to":"ba3cc151_fe062f84","updated":"2015-07-08 08:16:38.000000000","message":"Done","commit_id":"81f9ec4ce710403340a7a435bb1ff4217f24fe80"},{"author":{"_account_id":6732,"name":"Lingxian Kong","email":"anlin.kong@gmail.com","username":"kong"},"change_message_id":"e5afecb68d471986b458b5abbab5c967b00d55be","unresolved":false,"context_lines":[{"line_number":81,"context_line":"        \"\"\"This method is automatically called when a response is incoming and"},{"line_number":82,"context_line":"        decides if it is the message we are waiting for - the message with the"},{"line_number":83,"context_line":"        result."},{"line_number":84,"context_line":"        :param response: the body of the amqp message already deserialized"},{"line_number":85,"context_line":"            by kombu"},{"line_number":86,"context_line":"        :param message: the plain amqp kombu.message with additional"},{"line_number":87,"context_line":"            information"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba3cc151_30aa861a","line":84,"updated":"2015-07-07 09:08:45.000000000","message":"before here needs a blank line","commit_id":"81f9ec4ce710403340a7a435bb1ff4217f24fe80"},{"author":{"_account_id":7700,"name":"Nikolay Mahotkin","email":"nikolay.makhotkin@gmail.com","username":"nmakhotkin"},"change_message_id":"6de73117030d153e779164e713404966d10bbe74","unresolved":false,"context_lines":[{"line_number":81,"context_line":"        \"\"\"This method is automatically called when a response is incoming and"},{"line_number":82,"context_line":"        decides if it is the message we are waiting for - the message with the"},{"line_number":83,"context_line":"        result."},{"line_number":84,"context_line":"        :param response: the body of the amqp message already deserialized"},{"line_number":85,"context_line":"            by kombu"},{"line_number":86,"context_line":"        :param message: the plain amqp kombu.message with additional"},{"line_number":87,"context_line":"            information"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba3cc151_4154e5fc","line":84,"in_reply_to":"ba3cc151_30aa861a","updated":"2015-07-08 08:16:38.000000000","message":"Done","commit_id":"81f9ec4ce710403340a7a435bb1ff4217f24fe80"},{"author":{"_account_id":6732,"name":"Lingxian Kong","email":"anlin.kong@gmail.com","username":"kong"},"change_message_id":"e5afecb68d471986b458b5abbab5c967b00d55be","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        :param response: the body of the amqp message already deserialized"},{"line_number":85,"context_line":"            by kombu"},{"line_number":86,"context_line":"        :param message: the plain amqp kombu.message with additional"},{"line_number":87,"context_line":"            information"},{"line_number":88,"context_line":"        \"\"\""},{"line_number":89,"context_line":"        LOG.debug(\"Got response: {0}\".format(response))"},{"line_number":90,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"ba3cc151_9059125e","line":87,"updated":"2015-07-07 09:08:45.000000000","message":"please note the indentation of the doc string","commit_id":"81f9ec4ce710403340a7a435bb1ff4217f24fe80"},{"author":{"_account_id":8731,"name":"Renat Akhmerov","email":"renat.akhmerov@gmail.com","username":"rakhmerov"},"change_message_id":"fbc0add791546152898287e91ca53d72a0cda8a9","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        :param response: the body of the amqp message already deserialized"},{"line_number":85,"context_line":"            by kombu"},{"line_number":86,"context_line":"        :param message: the plain amqp kombu.message with additional"},{"line_number":87,"context_line":"            information"},{"line_number":88,"context_line":"        \"\"\""},{"line_number":89,"context_line":"        LOG.debug(\"Got response: {0}\".format(response))"},{"line_number":90,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"ba3cc151_a631475c","line":87,"in_reply_to":"ba3cc151_9059125e","updated":"2015-07-08 08:06:17.000000000","message":"agree","commit_id":"81f9ec4ce710403340a7a435bb1ff4217f24fe80"},{"author":{"_account_id":6732,"name":"Lingxian Kong","email":"anlin.kong@gmail.com","username":"kong"},"change_message_id":"e5afecb68d471986b458b5abbab5c967b00d55be","unresolved":false,"context_lines":[{"line_number":106,"context_line":"    def _call(self, ctx, method, target, async\u003dFalse, **kwargs):"},{"line_number":107,"context_line":"        \"\"\"The remote-method-call execution function."},{"line_number":108,"context_line":"        :param method: name of the method that should be executed"},{"line_number":109,"context_line":"        :param kwargs: parameter for the remote-method"},{"line_number":110,"context_line":"        :type method: string"},{"line_number":111,"context_line":"        :type kwargs: list of parameters"},{"line_number":112,"context_line":"        :rtype: result of the method"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba3cc151_1302ec09","line":109,"updated":"2015-07-07 09:08:45.000000000","message":"async param is missed","commit_id":"81f9ec4ce710403340a7a435bb1ff4217f24fe80"},{"author":{"_account_id":7700,"name":"Nikolay Mahotkin","email":"nikolay.makhotkin@gmail.com","username":"nmakhotkin"},"change_message_id":"6de73117030d153e779164e713404966d10bbe74","unresolved":false,"context_lines":[{"line_number":106,"context_line":"    def _call(self, ctx, method, target, async\u003dFalse, **kwargs):"},{"line_number":107,"context_line":"        \"\"\"The remote-method-call execution function."},{"line_number":108,"context_line":"        :param method: name of the method that should be executed"},{"line_number":109,"context_line":"        :param kwargs: parameter for the remote-method"},{"line_number":110,"context_line":"        :type method: string"},{"line_number":111,"context_line":"        :type kwargs: list of parameters"},{"line_number":112,"context_line":"        :rtype: result of the method"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba3cc151_014d7d3d","line":109,"in_reply_to":"ba3cc151_1302ec09","updated":"2015-07-08 08:16:38.000000000","message":"Done","commit_id":"81f9ec4ce710403340a7a435bb1ff4217f24fe80"},{"author":{"_account_id":6732,"name":"Lingxian Kong","email":"anlin.kong@gmail.com","username":"kong"},"change_message_id":"e5afecb68d471986b458b5abbab5c967b00d55be","unresolved":false,"context_lines":[{"line_number":111,"context_line":"        :type kwargs: list of parameters"},{"line_number":112,"context_line":"        :rtype: result of the method"},{"line_number":113,"context_line":"        \"\"\""},{"line_number":114,"context_line":"        self._corr_id \u003d str(uuid.uuid4())"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"        body \u003d {"},{"line_number":117,"context_line":"            \u0027rpc_ctx\u0027: ctx.to_dict(),"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba3cc151_de5fab73","line":114,"updated":"2015-07-07 09:08:45.000000000","message":"Critical: when messages are sent concurrently, the _corr_id will be changed in different thread. The first call will never get its response.","commit_id":"81f9ec4ce710403340a7a435bb1ff4217f24fe80"},{"author":{"_account_id":7700,"name":"Nikolay Mahotkin","email":"nikolay.makhotkin@gmail.com","username":"nmakhotkin"},"change_message_id":"721fa51d973d4dab52b20a888471f66f7e1f6ee3","unresolved":false,"context_lines":[{"line_number":111,"context_line":"        :type kwargs: list of parameters"},{"line_number":112,"context_line":"        :rtype: result of the method"},{"line_number":113,"context_line":"        \"\"\""},{"line_number":114,"context_line":"        self._corr_id \u003d str(uuid.uuid4())"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"        body \u003d {"},{"line_number":117,"context_line":"            \u0027rpc_ctx\u0027: ctx.to_dict(),"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba3cc151_e11419ea","line":114,"in_reply_to":"ba3cc151_263e9728","updated":"2015-07-08 08:21:05.000000000","message":"So, I agree, it is not thread-safe. But even this is so, we can use one RPCClient instance per thread and not using one Client for more than one thread. \n\nOk, I try to make it thread-safe.","commit_id":"81f9ec4ce710403340a7a435bb1ff4217f24fe80"},{"author":{"_account_id":8731,"name":"Renat Akhmerov","email":"renat.akhmerov@gmail.com","username":"rakhmerov"},"change_message_id":"fbc0add791546152898287e91ca53d72a0cda8a9","unresolved":false,"context_lines":[{"line_number":111,"context_line":"        :type kwargs: list of parameters"},{"line_number":112,"context_line":"        :rtype: result of the method"},{"line_number":113,"context_line":"        \"\"\""},{"line_number":114,"context_line":"        self._corr_id \u003d str(uuid.uuid4())"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"        body \u003d {"},{"line_number":117,"context_line":"            \u0027rpc_ctx\u0027: ctx.to_dict(),"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba3cc151_263e9728","line":114,"in_reply_to":"ba3cc151_de5fab73","updated":"2015-07-08 08:06:17.000000000","message":"Ooh, yes. That\u0027s correct and I missed that. Nikolay, it needs to be addressed somehow. The same problem for self._response and self._is_received. The simplest thing that comes to my mind is to use thread-local storage (see utils). Or even better is to do everything in one method and don\u0027t use instance variables at all, only local variables. You just need to eliminate method _wait_for_response() and make it inner method of _call().","commit_id":"81f9ec4ce710403340a7a435bb1ff4217f24fe80"},{"author":{"_account_id":7700,"name":"Nikolay Mahotkin","email":"nikolay.makhotkin@gmail.com","username":"nmakhotkin"},"change_message_id":"2b52b0ccad0ee629ef4e028b669595c215f02b93","unresolved":false,"context_lines":[{"line_number":111,"context_line":"        :type kwargs: list of parameters"},{"line_number":112,"context_line":"        :rtype: result of the method"},{"line_number":113,"context_line":"        \"\"\""},{"line_number":114,"context_line":"        self._corr_id \u003d str(uuid.uuid4())"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"        body \u003d {"},{"line_number":117,"context_line":"            \u0027rpc_ctx\u0027: ctx.to_dict(),"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba3cc151_22df606a","line":114,"in_reply_to":"ba3cc151_e11419ea","updated":"2015-07-08 09:04:48.000000000","message":"Done","commit_id":"81f9ec4ce710403340a7a435bb1ff4217f24fe80"},{"author":{"_account_id":15881,"name":"Limor Stotland","email":"limor.bortman@nokia.com","username":"LimorStotlamd"},"change_message_id":"34082a056b6b64aed8052cf4282285e4dec60e02","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        self.exchange \u003d conf.get(\u0027exchange\u0027, \u0027\u0027)"},{"line_number":38,"context_line":"        self.user_id \u003d conf.get(\u0027user_id\u0027, \u0027guest\u0027)"},{"line_number":39,"context_line":"        self.password \u003d conf.get(\u0027password\u0027, \u0027guest\u0027)"},{"line_number":40,"context_line":"        self.topic \u003d conf.get(\u0027topic\u0027, \u0027\u0027)"},{"line_number":41,"context_line":"        self.server_id \u003d conf.get(\u0027server_id\u0027, \u0027\u0027)"},{"line_number":42,"context_line":"        self.host \u003d conf.get(\u0027host\u0027, \u0027localhost\u0027)"},{"line_number":43,"context_line":"        self.port \u003d conf.get(\u0027port\u0027, 5672)"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a4dcd0f_472e1d8d","line":40,"updated":"2015-08-12 09:05:51.000000000","message":"Weak : do we want a \"default\" value?","commit_id":"953e639dcddbb659c5d43c853b15ac5875304d2a"},{"author":{"_account_id":7700,"name":"Nikolay Mahotkin","email":"nikolay.makhotkin@gmail.com","username":"nmakhotkin"},"change_message_id":"57a9028d79c880bf304a63db88e2f1c77f91d057","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        self.exchange \u003d conf.get(\u0027exchange\u0027, \u0027\u0027)"},{"line_number":38,"context_line":"        self.user_id \u003d conf.get(\u0027user_id\u0027, \u0027guest\u0027)"},{"line_number":39,"context_line":"        self.password \u003d conf.get(\u0027password\u0027, \u0027guest\u0027)"},{"line_number":40,"context_line":"        self.topic \u003d conf.get(\u0027topic\u0027, \u0027\u0027)"},{"line_number":41,"context_line":"        self.server_id \u003d conf.get(\u0027server_id\u0027, \u0027\u0027)"},{"line_number":42,"context_line":"        self.host \u003d conf.get(\u0027host\u0027, \u0027localhost\u0027)"},{"line_number":43,"context_line":"        self.port \u003d conf.get(\u0027port\u0027, 5672)"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a4dcd0f_24070fcb","line":40,"in_reply_to":"1a4dcd0f_472e1d8d","updated":"2015-08-13 09:59:32.000000000","message":"ok","commit_id":"953e639dcddbb659c5d43c853b15ac5875304d2a"},{"author":{"_account_id":15881,"name":"Limor Stotland","email":"limor.bortman@nokia.com","username":"LimorStotlamd"},"change_message_id":"34082a056b6b64aed8052cf4282285e4dec60e02","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        try:"},{"line_number":96,"context_line":"            message.ack()"},{"line_number":97,"context_line":"        except Exception:"},{"line_number":98,"context_line":"            LOG.exception(\"Failed to acknowledge AMQP message.\")"},{"line_number":99,"context_line":"        else:"},{"line_number":100,"context_line":"            LOG.debug(\"AMQP message acknowledged.\")"},{"line_number":101,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"1a4dcd0f_a7efe11b","line":98,"updated":"2015-08-12 09:05:51.000000000","message":"can you please print the exception?","commit_id":"953e639dcddbb659c5d43c853b15ac5875304d2a"},{"author":{"_account_id":7700,"name":"Nikolay Mahotkin","email":"nikolay.makhotkin@gmail.com","username":"nmakhotkin"},"change_message_id":"57a9028d79c880bf304a63db88e2f1c77f91d057","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        try:"},{"line_number":96,"context_line":"            message.ack()"},{"line_number":97,"context_line":"        except Exception:"},{"line_number":98,"context_line":"            LOG.exception(\"Failed to acknowledge AMQP message.\")"},{"line_number":99,"context_line":"        else:"},{"line_number":100,"context_line":"            LOG.debug(\"AMQP message acknowledged.\")"},{"line_number":101,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"1a4dcd0f_e40cc7ed","line":98,"in_reply_to":"1a4dcd0f_a7efe11b","updated":"2015-08-13 09:59:32.000000000","message":"Done","commit_id":"953e639dcddbb659c5d43c853b15ac5875304d2a"},{"author":{"_account_id":8731,"name":"Renat Akhmerov","email":"renat.akhmerov@gmail.com","username":"rakhmerov"},"change_message_id":"fba7cc6e44684d16b067ad0709f82f72ff22132a","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":28,"context_line":"IS_RECEIVED \u003d \u0027kombu_rpc_is_receive\u0027"},{"line_number":29,"context_line":"RESULT \u003d \u0027kombu_rpc_result\u0027"},{"line_number":30,"context_line":"CORR_ID \u003d \u0027kombu_rpc_correlation_id\u0027"},{"line_number":31,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"3aaa91ec_4b8e5379","line":28,"range":{"start_line":28,"start_character":15,"end_line":28,"end_character":35},"updated":"2016-06-22 12:16:35.000000000","message":"Soft: missing \"d\" at the end.","commit_id":"b99d501a34fb11b2779307e9abf1c6ba1c75851a"},{"author":{"_account_id":19206,"name":"Dawid Deja","email":"dawdej@gmail.com","username":"ddeja"},"change_message_id":"d47e06e5dc6b6a2aa25584c9d14b7bb61ca7784d","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":28,"context_line":"IS_RECEIVED \u003d \u0027kombu_rpc_is_receive\u0027"},{"line_number":29,"context_line":"RESULT \u003d \u0027kombu_rpc_result\u0027"},{"line_number":30,"context_line":"CORR_ID \u003d \u0027kombu_rpc_correlation_id\u0027"},{"line_number":31,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"3aaa91ec_c4a4e6ba","line":28,"range":{"start_line":28,"start_character":15,"end_line":28,"end_character":35},"in_reply_to":"3aaa91ec_4b8e5379","updated":"2016-06-22 17:11:56.000000000","message":"Done","commit_id":"b99d501a34fb11b2779307e9abf1c6ba1c75851a"},{"author":{"_account_id":8731,"name":"Renat Akhmerov","email":"renat.akhmerov@gmail.com","username":"rakhmerov"},"change_message_id":"fba7cc6e44684d16b067ad0709f82f72ff22132a","unresolved":false,"context_lines":[{"line_number":104,"context_line":"            # Process response."},{"line_number":105,"context_line":"            if (utils.get_thread_local(CORR_ID) \u003d\u003d"},{"line_number":106,"context_line":"                    message.properties[\u0027correlation_id\u0027]):"},{"line_number":107,"context_line":"                utils.set_thread_local(IS_RECEIVED, True)"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"                if message.properties.get(\u0027type\u0027) \u003d\u003d \u0027error\u0027:"},{"line_number":110,"context_line":"                    raise response"}],"source_content_type":"text/x-python","patch_set":22,"id":"3aaa91ec_16b0ee42","line":107,"range":{"start_line":107,"start_character":22,"end_line":107,"end_character":38},"updated":"2016-06-22 12:16:35.000000000","message":"Honestly, using global thread local storage concerns me. It\u0027s not 100% safe due to possible name clashing. What would be the alternatives? Could we at least use a non-global thread local storage (initialized in this module)?\n\nThis is not a critical comment, just something to think about.","commit_id":"b99d501a34fb11b2779307e9abf1c6ba1c75851a"},{"author":{"_account_id":19206,"name":"Dawid Deja","email":"dawdej@gmail.com","username":"ddeja"},"change_message_id":"d47e06e5dc6b6a2aa25584c9d14b7bb61ca7784d","unresolved":false,"context_lines":[{"line_number":104,"context_line":"            # Process response."},{"line_number":105,"context_line":"            if (utils.get_thread_local(CORR_ID) \u003d\u003d"},{"line_number":106,"context_line":"                    message.properties[\u0027correlation_id\u0027]):"},{"line_number":107,"context_line":"                utils.set_thread_local(IS_RECEIVED, True)"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"                if message.properties.get(\u0027type\u0027) \u003d\u003d \u0027error\u0027:"},{"line_number":110,"context_line":"                    raise response"}],"source_content_type":"text/x-python","patch_set":22,"id":"3aaa91ec_cd50890d","line":107,"range":{"start_line":107,"start_character":22,"end_line":107,"end_character":38},"in_reply_to":"3aaa91ec_16b0ee42","updated":"2016-06-22 17:11:56.000000000","message":"There are two alternatives:\n1. Create queue inside KombRPCClient. _on_reposnose would pass a message onto the queue and in wait for result we would pull the queue. I\u0027m not a big fan of it, since queues are not easy portable between py2.7/3.4 due to name convention (queue vs Queue). But python queue is thread-safe[1], so it still can be beneficial to use it\n2. Threading.Event, which could be used as a semaphore for wait_for_result function. Rest of the varaibles (type of message, context, etc.) can be passed using class variables/queue.\n\nI prefer option no 2, I can implement it in the next patchset if you are OK with it.\n\n\n[1] https://pymotw.com/2/Queue/","commit_id":"b99d501a34fb11b2779307e9abf1c6ba1c75851a"},{"author":{"_account_id":8731,"name":"Renat Akhmerov","email":"renat.akhmerov@gmail.com","username":"rakhmerov"},"change_message_id":"fba7cc6e44684d16b067ad0709f82f72ff22132a","unresolved":false,"context_lines":[{"line_number":128,"context_line":"                        raise exc.MistralException(\"RPC Request timeout\")"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"    def _call(self, ctx, method, target, async\u003dFalse, **kwargs):"},{"line_number":131,"context_line":"        \"\"\"The remote-method-call execution function."},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"        :param ctx:"},{"line_number":134,"context_line":"        :param method: name of the method that should be executed"}],"source_content_type":"text/x-python","patch_set":22,"id":"3aaa91ec_b6491a8e","line":131,"range":{"start_line":131,"start_character":15,"end_line":131,"end_character":33},"updated":"2016-06-22 12:16:35.000000000","message":"I don\u0027t understand why it\u0027s typed this way with dashes. I would just rephraze this to something like \"Performs a remote call to the given method\".","commit_id":"b99d501a34fb11b2779307e9abf1c6ba1c75851a"},{"author":{"_account_id":19206,"name":"Dawid Deja","email":"dawdej@gmail.com","username":"ddeja"},"change_message_id":"d47e06e5dc6b6a2aa25584c9d14b7bb61ca7784d","unresolved":false,"context_lines":[{"line_number":128,"context_line":"                        raise exc.MistralException(\"RPC Request timeout\")"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"    def _call(self, ctx, method, target, async\u003dFalse, **kwargs):"},{"line_number":131,"context_line":"        \"\"\"The remote-method-call execution function."},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"        :param ctx:"},{"line_number":134,"context_line":"        :param method: name of the method that should be executed"}],"source_content_type":"text/x-python","patch_set":22,"id":"3aaa91ec_0da9f1df","line":131,"range":{"start_line":131,"start_character":15,"end_line":131,"end_character":33},"in_reply_to":"3aaa91ec_b6491a8e","updated":"2016-06-22 17:11:56.000000000","message":"Done","commit_id":"b99d501a34fb11b2779307e9abf1c6ba1c75851a"},{"author":{"_account_id":8731,"name":"Renat Akhmerov","email":"renat.akhmerov@gmail.com","username":"rakhmerov"},"change_message_id":"fba7cc6e44684d16b067ad0709f82f72ff22132a","unresolved":false,"context_lines":[{"line_number":130,"context_line":"    def _call(self, ctx, method, target, async\u003dFalse, **kwargs):"},{"line_number":131,"context_line":"        \"\"\"The remote-method-call execution function."},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"        :param ctx:"},{"line_number":134,"context_line":"        :param method: name of the method that should be executed"},{"line_number":135,"context_line":"        :param kwargs: keyword parameters for the remote-method"},{"line_number":136,"context_line":"        :param target: Server name"}],"source_content_type":"text/x-python","patch_set":22,"id":"3aaa91ec_b6ec7ac8","line":133,"range":{"start_line":133,"start_character":18,"end_line":133,"end_character":19},"updated":"2016-06-22 12:16:35.000000000","message":"Missing description.","commit_id":"b99d501a34fb11b2779307e9abf1c6ba1c75851a"},{"author":{"_account_id":19206,"name":"Dawid Deja","email":"dawdej@gmail.com","username":"ddeja"},"change_message_id":"d47e06e5dc6b6a2aa25584c9d14b7bb61ca7784d","unresolved":false,"context_lines":[{"line_number":130,"context_line":"    def _call(self, ctx, method, target, async\u003dFalse, **kwargs):"},{"line_number":131,"context_line":"        \"\"\"The remote-method-call execution function."},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"        :param ctx:"},{"line_number":134,"context_line":"        :param method: name of the method that should be executed"},{"line_number":135,"context_line":"        :param kwargs: keyword parameters for the remote-method"},{"line_number":136,"context_line":"        :param target: Server name"}],"source_content_type":"text/x-python","patch_set":22,"id":"3aaa91ec_6dcb5554","line":133,"range":{"start_line":133,"start_character":18,"end_line":133,"end_character":19},"in_reply_to":"3aaa91ec_b6ec7ac8","updated":"2016-06-22 17:11:56.000000000","message":"Done","commit_id":"b99d501a34fb11b2779307e9abf1c6ba1c75851a"},{"author":{"_account_id":8731,"name":"Renat Akhmerov","email":"renat.akhmerov@gmail.com","username":"rakhmerov"},"change_message_id":"fba7cc6e44684d16b067ad0709f82f72ff22132a","unresolved":false,"context_lines":[{"line_number":136,"context_line":"        :param target: Server name"},{"line_number":137,"context_line":"        :param async: bool value means whether the request is"},{"line_number":138,"context_line":"            asynchronous or not."},{"line_number":139,"context_line":"        :returns: result of the method or None if async."},{"line_number":140,"context_line":"        \"\"\""},{"line_number":141,"context_line":"        utils.set_thread_local(CORR_ID, utils.generate_unicode_uuid())"},{"line_number":142,"context_line":"        utils.set_thread_local(IS_RECEIVED, False)"}],"source_content_type":"text/x-python","patch_set":22,"id":"3aaa91ec_76097295","line":139,"range":{"start_line":139,"start_character":9,"end_line":139,"end_character":16},"updated":"2016-06-22 12:16:35.000000000","message":"\"s\" is redundant.","commit_id":"b99d501a34fb11b2779307e9abf1c6ba1c75851a"},{"author":{"_account_id":19206,"name":"Dawid Deja","email":"dawdej@gmail.com","username":"ddeja"},"change_message_id":"d47e06e5dc6b6a2aa25584c9d14b7bb61ca7784d","unresolved":false,"context_lines":[{"line_number":136,"context_line":"        :param target: Server name"},{"line_number":137,"context_line":"        :param async: bool value means whether the request is"},{"line_number":138,"context_line":"            asynchronous or not."},{"line_number":139,"context_line":"        :returns: result of the method or None if async."},{"line_number":140,"context_line":"        \"\"\""},{"line_number":141,"context_line":"        utils.set_thread_local(CORR_ID, utils.generate_unicode_uuid())"},{"line_number":142,"context_line":"        utils.set_thread_local(IS_RECEIVED, False)"}],"source_content_type":"text/x-python","patch_set":22,"id":"3aaa91ec_4dc6594a","line":139,"range":{"start_line":139,"start_character":9,"end_line":139,"end_character":16},"in_reply_to":"3aaa91ec_76097295","updated":"2016-06-22 17:11:56.000000000","message":"Done","commit_id":"b99d501a34fb11b2779307e9abf1c6ba1c75851a"},{"author":{"_account_id":8731,"name":"Renat Akhmerov","email":"renat.akhmerov@gmail.com","username":"rakhmerov"},"change_message_id":"fba7cc6e44684d16b067ad0709f82f72ff22132a","unresolved":false,"context_lines":[{"line_number":156,"context_line":"        with kombu.producers[self.conn].acquire(block\u003dTrue) as producer:"},{"line_number":157,"context_line":"            producer.publish("},{"line_number":158,"context_line":"                body\u003dbody,"},{"line_number":159,"context_line":"                exchange\u003d\u0027\u0027,"},{"line_number":160,"context_line":"                routing_key\u003dself.topic,"},{"line_number":161,"context_line":"                reply_to\u003dself.callback_queue.name,"},{"line_number":162,"context_line":"                correlation_id\u003dutils.get_thread_local(CORR_ID),"}],"source_content_type":"text/x-python","patch_set":22,"id":"3aaa91ec_11f91881","line":159,"range":{"start_line":159,"start_character":25,"end_line":159,"end_character":27},"updated":"2016-06-22 12:16:35.000000000","message":"Shouldn\u0027t we use self.exchange here?","commit_id":"b99d501a34fb11b2779307e9abf1c6ba1c75851a"},{"author":{"_account_id":19206,"name":"Dawid Deja","email":"dawdej@gmail.com","username":"ddeja"},"change_message_id":"d47e06e5dc6b6a2aa25584c9d14b7bb61ca7784d","unresolved":false,"context_lines":[{"line_number":156,"context_line":"        with kombu.producers[self.conn].acquire(block\u003dTrue) as producer:"},{"line_number":157,"context_line":"            producer.publish("},{"line_number":158,"context_line":"                body\u003dbody,"},{"line_number":159,"context_line":"                exchange\u003d\u0027\u0027,"},{"line_number":160,"context_line":"                routing_key\u003dself.topic,"},{"line_number":161,"context_line":"                reply_to\u003dself.callback_queue.name,"},{"line_number":162,"context_line":"                correlation_id\u003dutils.get_thread_local(CORR_ID),"}],"source_content_type":"text/x-python","patch_set":22,"id":"3aaa91ec_6df99580","line":159,"range":{"start_line":159,"start_character":25,"end_line":159,"end_character":27},"in_reply_to":"3aaa91ec_11f91881","updated":"2016-06-22 17:11:56.000000000","message":"Done","commit_id":"b99d501a34fb11b2779307e9abf1c6ba1c75851a"},{"author":{"_account_id":8731,"name":"Renat Akhmerov","email":"renat.akhmerov@gmail.com","username":"rakhmerov"},"change_message_id":"fba7cc6e44684d16b067ad0709f82f72ff22132a","unresolved":false,"context_lines":[{"line_number":163,"context_line":"                delivery_mode\u003d2"},{"line_number":164,"context_line":"            )"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"        # Start waiting for the response."},{"line_number":167,"context_line":"        if async:"},{"line_number":168,"context_line":"            self._clear_thread_local()"},{"line_number":169,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":22,"id":"3aaa91ec_3191b4f1","line":166,"range":{"start_line":166,"start_character":28,"end_line":166,"end_character":31},"updated":"2016-06-22 12:16:35.000000000","message":"Soft: remove \"the\"","commit_id":"b99d501a34fb11b2779307e9abf1c6ba1c75851a"},{"author":{"_account_id":19206,"name":"Dawid Deja","email":"dawdej@gmail.com","username":"ddeja"},"change_message_id":"d47e06e5dc6b6a2aa25584c9d14b7bb61ca7784d","unresolved":false,"context_lines":[{"line_number":163,"context_line":"                delivery_mode\u003d2"},{"line_number":164,"context_line":"            )"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"        # Start waiting for the response."},{"line_number":167,"context_line":"        if async:"},{"line_number":168,"context_line":"            self._clear_thread_local()"},{"line_number":169,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":22,"id":"3aaa91ec_cd2ec9f9","line":166,"range":{"start_line":166,"start_character":28,"end_line":166,"end_character":31},"in_reply_to":"3aaa91ec_3191b4f1","updated":"2016-06-22 17:11:56.000000000","message":"Done","commit_id":"b99d501a34fb11b2779307e9abf1c6ba1c75851a"},{"author":{"_account_id":8731,"name":"Renat Akhmerov","email":"renat.akhmerov@gmail.com","username":"rakhmerov"},"change_message_id":"fba7cc6e44684d16b067ad0709f82f72ff22132a","unresolved":false,"context_lines":[{"line_number":165,"context_line":""},{"line_number":166,"context_line":"        # Start waiting for the response."},{"line_number":167,"context_line":"        if async:"},{"line_number":168,"context_line":"            self._clear_thread_local()"},{"line_number":169,"context_line":"            return"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"        self._wait_for_result()"}],"source_content_type":"text/x-python","patch_set":22,"id":"3aaa91ec_1c73ef81","line":168,"range":{"start_line":168,"start_character":17,"end_line":168,"end_character":36},"updated":"2016-06-22 12:16:35.000000000","message":"I don\u0027t understand what this call is for. In case of async call _on_response() method will run anyway and it will set thread local variables. But for a different thread. Will those variables be used somewhere?","commit_id":"b99d501a34fb11b2779307e9abf1c6ba1c75851a"},{"author":{"_account_id":19206,"name":"Dawid Deja","email":"dawdej@gmail.com","username":"ddeja"},"change_message_id":"d47e06e5dc6b6a2aa25584c9d14b7bb61ca7784d","unresolved":false,"context_lines":[{"line_number":165,"context_line":""},{"line_number":166,"context_line":"        # Start waiting for the response."},{"line_number":167,"context_line":"        if async:"},{"line_number":168,"context_line":"            self._clear_thread_local()"},{"line_number":169,"context_line":"            return"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"        self._wait_for_result()"}],"source_content_type":"text/x-python","patch_set":22,"id":"3aaa91ec_adfd3d3c","line":168,"range":{"start_line":168,"start_character":17,"end_line":168,"end_character":36},"in_reply_to":"3aaa91ec_1c73ef81","updated":"2016-06-22 17:11:56.000000000","message":"You are right, this method does not need to be here.","commit_id":"b99d501a34fb11b2779307e9abf1c6ba1c75851a"}],"mistral/engine/rpc_direct/kombu/kombu_server.py":[{"author":{"_account_id":8731,"name":"Renat Akhmerov","email":"renat.akhmerov@gmail.com","username":"rakhmerov"},"change_message_id":"d40c19314b1d2a9e797ebb3f8a6353d1324a62f1","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        LOG.info("},{"line_number":52,"context_line":"            \"Connected to AMQP at %s:%s\" % (self.rabbit_host, self.rabbit_port)"},{"line_number":53,"context_line":"        )"},{"line_number":54,"context_line":"        try:"},{"line_number":55,"context_line":"            conn \u003d kombu.connections[self.conn].acquire(block\u003dTrue)"},{"line_number":56,"context_line":"            exchange \u003d self._make_exchange("},{"line_number":57,"context_line":"                self.exchange,"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_5fda2018","line":54,"updated":"2015-07-03 09:09:35.000000000","message":"Blank line before \"try\".","commit_id":"ebedec6426032c08ab4ebb7cdb5b196e22dc2ecc"},{"author":{"_account_id":8731,"name":"Renat Akhmerov","email":"renat.akhmerov@gmail.com","username":"rakhmerov"},"change_message_id":"d40c19314b1d2a9e797ebb3f8a6353d1324a62f1","unresolved":false,"context_lines":[{"line_number":104,"context_line":"        context \u003d auth_context.MistralContext(**ctx)"},{"line_number":105,"context_line":"        auth_context.set_ctx(context)"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"    def publish_message(self, body, reply_to, corr_id, type\u003d\u0027response\u0027):"},{"line_number":108,"context_line":"        with kombu.producers[self.conn].acquire(block\u003dTrue) as producer:"},{"line_number":109,"context_line":"            producer.publish("},{"line_number":110,"context_line":"                body\u003dbody,"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_9f8c28db","line":107,"updated":"2015-07-03 09:09:35.000000000","message":"Is this method for synchronous calls?","commit_id":"ebedec6426032c08ab4ebb7cdb5b196e22dc2ecc"},{"author":{"_account_id":7700,"name":"Nikolay Mahotkin","email":"nikolay.makhotkin@gmail.com","username":"nmakhotkin"},"change_message_id":"5d2cfd30d8719d667a512d65e46efed49c75cc03","unresolved":false,"context_lines":[{"line_number":104,"context_line":"        context \u003d auth_context.MistralContext(**ctx)"},{"line_number":105,"context_line":"        auth_context.set_ctx(context)"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"    def publish_message(self, body, reply_to, corr_id, type\u003d\u0027response\u0027):"},{"line_number":108,"context_line":"        with kombu.producers[self.conn].acquire(block\u003dTrue) as producer:"},{"line_number":109,"context_line":"            producer.publish("},{"line_number":110,"context_line":"                body\u003dbody,"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_f5831301","line":107,"in_reply_to":"ba3cc151_9f8c28db","updated":"2015-07-03 10:11:19.000000000","message":"No, this method is for just publishing response in a message.","commit_id":"ebedec6426032c08ab4ebb7cdb5b196e22dc2ecc"},{"author":{"_account_id":8731,"name":"Renat Akhmerov","email":"renat.akhmerov@gmail.com","username":"rakhmerov"},"change_message_id":"c7b85aef1469fc0afa6a49e3dcf9f64013ffef2d","unresolved":false,"context_lines":[{"line_number":104,"context_line":"        context \u003d auth_context.MistralContext(**ctx)"},{"line_number":105,"context_line":"        auth_context.set_ctx(context)"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"    def publish_message(self, body, reply_to, corr_id, type\u003d\u0027response\u0027):"},{"line_number":108,"context_line":"        with kombu.producers[self.conn].acquire(block\u003dTrue) as producer:"},{"line_number":109,"context_line":"            producer.publish("},{"line_number":110,"context_line":"                body\u003dbody,"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_3980958a","line":107,"in_reply_to":"ba3cc151_f5831301","updated":"2015-07-03 11:12:32.000000000","message":"Done","commit_id":"ebedec6426032c08ab4ebb7cdb5b196e22dc2ecc"},{"author":{"_account_id":8731,"name":"Renat Akhmerov","email":"renat.akhmerov@gmail.com","username":"rakhmerov"},"change_message_id":"d40c19314b1d2a9e797ebb3f8a6353d1324a62f1","unresolved":false,"context_lines":[{"line_number":127,"context_line":"        finally:"},{"line_number":128,"context_line":"            message.ack()"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"    # Step #10"},{"line_number":131,"context_line":"    def _on_message(self, request, message):"},{"line_number":132,"context_line":"        LOG.debug(\u0027Received message %s\u0027,"},{"line_number":133,"context_line":"                  request)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_ff0d348f","line":130,"updated":"2015-07-03 09:09:35.000000000","message":"What does this comment mean?","commit_id":"ebedec6426032c08ab4ebb7cdb5b196e22dc2ecc"},{"author":{"_account_id":7700,"name":"Nikolay Mahotkin","email":"nikolay.makhotkin@gmail.com","username":"nmakhotkin"},"change_message_id":"5d2cfd30d8719d667a512d65e46efed49c75cc03","unresolved":false,"context_lines":[{"line_number":127,"context_line":"        finally:"},{"line_number":128,"context_line":"            message.ack()"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"    # Step #10"},{"line_number":131,"context_line":"    def _on_message(self, request, message):"},{"line_number":132,"context_line":"        LOG.debug(\u0027Received message %s\u0027,"},{"line_number":133,"context_line":"                  request)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_b5ccab89","line":130,"in_reply_to":"ba3cc151_ff0d348f","updated":"2015-07-03 10:11:19.000000000","message":"Let\u0027s remove it, it is left from part of pika implementation.","commit_id":"ebedec6426032c08ab4ebb7cdb5b196e22dc2ecc"},{"author":{"_account_id":8731,"name":"Renat Akhmerov","email":"renat.akhmerov@gmail.com","username":"rakhmerov"},"change_message_id":"d40c19314b1d2a9e797ebb3f8a6353d1324a62f1","unresolved":false,"context_lines":[{"line_number":166,"context_line":"        self.endpoints.append(endpoint)"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"# Simple example of endpoint of RPC server, which just"},{"line_number":170,"context_line":"# calculates given fibonacci number."},{"line_number":171,"context_line":"class MyServer(object):"},{"line_number":172,"context_line":"    cache \u003d {0: 0, 1: 1}"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_7f4844b3","line":169,"updated":"2015-07-03 09:09:35.000000000","message":"I think it\u0027s better to move examples out of these modules to keep them cleaner. I would prefer to see both example client and server initialization at one place.","commit_id":"ebedec6426032c08ab4ebb7cdb5b196e22dc2ecc"},{"author":{"_account_id":7700,"name":"Nikolay Mahotkin","email":"nikolay.makhotkin@gmail.com","username":"nmakhotkin"},"change_message_id":"5d2cfd30d8719d667a512d65e46efed49c75cc03","unresolved":false,"context_lines":[{"line_number":166,"context_line":"        self.endpoints.append(endpoint)"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"# Simple example of endpoint of RPC server, which just"},{"line_number":170,"context_line":"# calculates given fibonacci number."},{"line_number":171,"context_line":"class MyServer(object):"},{"line_number":172,"context_line":"    cache \u003d {0: 0, 1: 1}"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_daa95e91","line":169,"in_reply_to":"ba3cc151_7f4844b3","updated":"2015-07-03 10:11:19.000000000","message":"Where exactly?","commit_id":"ebedec6426032c08ab4ebb7cdb5b196e22dc2ecc"},{"author":{"_account_id":8731,"name":"Renat Akhmerov","email":"renat.akhmerov@gmail.com","username":"rakhmerov"},"change_message_id":"c7b85aef1469fc0afa6a49e3dcf9f64013ffef2d","unresolved":false,"context_lines":[{"line_number":166,"context_line":"        self.endpoints.append(endpoint)"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"# Simple example of endpoint of RPC server, which just"},{"line_number":170,"context_line":"# calculates given fibonacci number."},{"line_number":171,"context_line":"class MyServer(object):"},{"line_number":172,"context_line":"    cache \u003d {0: 0, 1: 1}"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_5900f901","line":169,"in_reply_to":"ba3cc151_daa95e91","updated":"2015-07-03 11:12:32.000000000","message":"For instance, mistral/engine/rpc/kombu/examples (it can be either a package or a module).","commit_id":"ebedec6426032c08ab4ebb7cdb5b196e22dc2ecc"},{"author":{"_account_id":8731,"name":"Renat Akhmerov","email":"renat.akhmerov@gmail.com","username":"rakhmerov"},"change_message_id":"55c3e887bfccc014f6f004df8ae0fb3738448ddf","unresolved":false,"context_lines":[{"line_number":100,"context_line":"        if not isinstance(ctx, dict):"},{"line_number":101,"context_line":"            return"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"        context \u003d auth_context.MistralContext(**ctx)"},{"line_number":104,"context_line":"        auth_context.set_ctx(context)"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"    def publish_message(self, body, reply_to, corr_id, type\u003d\u0027response\u0027):"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_598d59d1","line":103,"updated":"2015-07-03 11:12:40.000000000","message":"Let\u0027s inline \"context\" var.","commit_id":"926c1309f5bd8e7cf09879a43963a349d4f41f0d"},{"author":{"_account_id":7700,"name":"Nikolay Mahotkin","email":"nikolay.makhotkin@gmail.com","username":"nmakhotkin"},"change_message_id":"d481abbf09336399f695d064123fc583d52189c3","unresolved":false,"context_lines":[{"line_number":100,"context_line":"        if not isinstance(ctx, dict):"},{"line_number":101,"context_line":"            return"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"        context \u003d auth_context.MistralContext(**ctx)"},{"line_number":104,"context_line":"        auth_context.set_ctx(context)"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"    def publish_message(self, body, reply_to, corr_id, type\u003d\u0027response\u0027):"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_70a62aaf","line":103,"in_reply_to":"ba3cc151_598d59d1","updated":"2015-07-03 12:40:00.000000000","message":"Done","commit_id":"926c1309f5bd8e7cf09879a43963a349d4f41f0d"},{"author":{"_account_id":8731,"name":"Renat Akhmerov","email":"renat.akhmerov@gmail.com","username":"rakhmerov"},"change_message_id":"55c3e887bfccc014f6f004df8ae0fb3738448ddf","unresolved":false,"context_lines":[{"line_number":166,"context_line":""},{"line_number":167,"context_line":"# Simple example of endpoint of RPC server, which just"},{"line_number":168,"context_line":"# calculates given fibonacci number."},{"line_number":169,"context_line":"class MyServer(object):"},{"line_number":170,"context_line":"    cache \u003d {0: 0, 1: 1}"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"    def fib(self, rpc_ctx, n):"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_99ae812c","line":169,"updated":"2015-07-03 11:12:40.000000000","message":"Let\u0027s move examples into a separate place.","commit_id":"926c1309f5bd8e7cf09879a43963a349d4f41f0d"},{"author":{"_account_id":15881,"name":"Limor Stotland","email":"limor.bortman@nokia.com","username":"LimorStotlamd"},"change_message_id":"34082a056b6b64aed8052cf4282285e4dec60e02","unresolved":false,"context_lines":[{"line_number":85,"context_line":"                    except socket.timeout:"},{"line_number":86,"context_line":"                        pass"},{"line_number":87,"context_line":"                    except KeyboardInterrupt:"},{"line_number":88,"context_line":"                        LOG.info(\"Server with id\u003d\u0027{0}\u0027 stopped.\".format("},{"line_number":89,"context_line":"                            self.server_id))"},{"line_number":90,"context_line":"                        return"},{"line_number":91,"context_line":"        except socket.error:"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a4dcd0f_2700b1aa","line":88,"updated":"2015-08-12 09:05:51.000000000","message":"can you please print the exception?","commit_id":"953e639dcddbb659c5d43c853b15ac5875304d2a"},{"author":{"_account_id":7700,"name":"Nikolay Mahotkin","email":"nikolay.makhotkin@gmail.com","username":"nmakhotkin"},"change_message_id":"57a9028d79c880bf304a63db88e2f1c77f91d057","unresolved":false,"context_lines":[{"line_number":85,"context_line":"                    except socket.timeout:"},{"line_number":86,"context_line":"                        pass"},{"line_number":87,"context_line":"                    except KeyboardInterrupt:"},{"line_number":88,"context_line":"                        LOG.info(\"Server with id\u003d\u0027{0}\u0027 stopped.\".format("},{"line_number":89,"context_line":"                            self.server_id))"},{"line_number":90,"context_line":"                        return"},{"line_number":91,"context_line":"        except socket.error:"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a4dcd0f_0459b3fc","line":88,"in_reply_to":"1a4dcd0f_2700b1aa","updated":"2015-08-13 09:59:32.000000000","message":"It is the KeyboardInterrupt, there is no info about exception.","commit_id":"953e639dcddbb659c5d43c853b15ac5875304d2a"},{"author":{"_account_id":15881,"name":"Limor Stotland","email":"limor.bortman@nokia.com","username":"LimorStotlamd"},"change_message_id":"34082a056b6b64aed8052cf4282285e4dec60e02","unresolved":false,"context_lines":[{"line_number":89,"context_line":"                            self.server_id))"},{"line_number":90,"context_line":"                        return"},{"line_number":91,"context_line":"        except socket.error:"},{"line_number":92,"context_line":"            raise exc.MistralException(\"Broker connection failed\")"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    def stop(self):"},{"line_number":95,"context_line":"        \"\"\"Stop the server.\"\"\""}],"source_content_type":"text/x-python","patch_set":11,"id":"1a4dcd0f_87f745d2","line":92,"updated":"2015-08-12 09:05:51.000000000","message":"can you please print the exception?","commit_id":"953e639dcddbb659c5d43c853b15ac5875304d2a"},{"author":{"_account_id":7700,"name":"Nikolay Mahotkin","email":"nikolay.makhotkin@gmail.com","username":"nmakhotkin"},"change_message_id":"57a9028d79c880bf304a63db88e2f1c77f91d057","unresolved":false,"context_lines":[{"line_number":89,"context_line":"                            self.server_id))"},{"line_number":90,"context_line":"                        return"},{"line_number":91,"context_line":"        except socket.error:"},{"line_number":92,"context_line":"            raise exc.MistralException(\"Broker connection failed\")"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    def stop(self):"},{"line_number":95,"context_line":"        \"\"\"Stop the server.\"\"\""}],"source_content_type":"text/x-python","patch_set":11,"id":"1a4dcd0f_a4747f67","line":92,"in_reply_to":"1a4dcd0f_87f745d2","updated":"2015-08-13 09:59:32.000000000","message":"Done","commit_id":"953e639dcddbb659c5d43c853b15ac5875304d2a"},{"author":{"_account_id":8731,"name":"Renat Akhmerov","email":"renat.akhmerov@gmail.com","username":"rakhmerov"},"change_message_id":"fba7cc6e44684d16b067ad0709f82f72ff22132a","unresolved":false,"context_lines":[{"line_number":115,"context_line":"        with kombu.producers[self.conn].acquire(block\u003dTrue) as producer:"},{"line_number":116,"context_line":"            producer.publish("},{"line_number":117,"context_line":"                body\u003dbody,"},{"line_number":118,"context_line":"                exchange\u003d\u0027\u0027,"},{"line_number":119,"context_line":"                routing_key\u003dreply_to,"},{"line_number":120,"context_line":"                correlation_id\u003dcorr_id,"},{"line_number":121,"context_line":"                type\u003dtype,"}],"source_content_type":"text/x-python","patch_set":22,"id":"3aaa91ec_3ca86b1f","line":118,"range":{"start_line":118,"start_character":25,"end_line":118,"end_character":27},"updated":"2016-06-22 12:16:35.000000000","message":"self.exchange?","commit_id":"b99d501a34fb11b2779307e9abf1c6ba1c75851a"},{"author":{"_account_id":19206,"name":"Dawid Deja","email":"dawdej@gmail.com","username":"ddeja"},"change_message_id":"d47e06e5dc6b6a2aa25584c9d14b7bb61ca7784d","unresolved":false,"context_lines":[{"line_number":115,"context_line":"        with kombu.producers[self.conn].acquire(block\u003dTrue) as producer:"},{"line_number":116,"context_line":"            producer.publish("},{"line_number":117,"context_line":"                body\u003dbody,"},{"line_number":118,"context_line":"                exchange\u003d\u0027\u0027,"},{"line_number":119,"context_line":"                routing_key\u003dreply_to,"},{"line_number":120,"context_line":"                correlation_id\u003dcorr_id,"},{"line_number":121,"context_line":"                type\u003dtype,"}],"source_content_type":"text/x-python","patch_set":22,"id":"3aaa91ec_cd66c928","line":118,"range":{"start_line":118,"start_character":25,"end_line":118,"end_character":27},"in_reply_to":"3aaa91ec_3ca86b1f","updated":"2016-06-22 17:11:56.000000000","message":"Done","commit_id":"b99d501a34fb11b2779307e9abf1c6ba1c75851a"}],"mistral/tests/unit/engine/rpc_direct/test_rpc.py":[{"author":{"_account_id":8731,"name":"Renat Akhmerov","email":"renat.akhmerov@gmail.com","username":"rakhmerov"},"change_message_id":"d40c19314b1d2a9e797ebb3f8a6353d1324a62f1","unresolved":false,"context_lines":[{"line_number":12,"context_line":"#    See the License for the specific language governing permissions and"},{"line_number":13,"context_line":"#    limitations under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from oslo.config import cfg"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from mistral.engine.rpc_direct import base as rpc_base"},{"line_number":18,"context_line":"from mistral.tests.unit.engine import base"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_ffb77482","line":15,"updated":"2015-07-03 09:09:35.000000000","message":"-\u003e oslo_config","commit_id":"ebedec6426032c08ab4ebb7cdb5b196e22dc2ecc"},{"author":{"_account_id":7700,"name":"Nikolay Mahotkin","email":"nikolay.makhotkin@gmail.com","username":"nmakhotkin"},"change_message_id":"5d2cfd30d8719d667a512d65e46efed49c75cc03","unresolved":false,"context_lines":[{"line_number":12,"context_line":"#    See the License for the specific language governing permissions and"},{"line_number":13,"context_line":"#    limitations under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from oslo.config import cfg"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from mistral.engine.rpc_direct import base as rpc_base"},{"line_number":18,"context_line":"from mistral.tests.unit.engine import base"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_154d5799","line":15,"in_reply_to":"ba3cc151_ffb77482","updated":"2015-07-03 10:11:19.000000000","message":"ok","commit_id":"ebedec6426032c08ab4ebb7cdb5b196e22dc2ecc"},{"author":{"_account_id":8731,"name":"Renat Akhmerov","email":"renat.akhmerov@gmail.com","username":"rakhmerov"},"change_message_id":"d40c19314b1d2a9e797ebb3f8a6353d1324a62f1","unresolved":false,"context_lines":[{"line_number":22,"context_line":"    def test_get_rpc_config(self):"},{"line_number":23,"context_line":"        conf \u003d cfg.CONF"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"        config \u003d rpc_base.get_rpc_config_from_oslo(conf.engine)"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"        self.assertDictEqual("},{"line_number":28,"context_line":"            {"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_1f66d829","line":25,"updated":"2015-07-03 09:09:35.000000000","message":"\"conf\" and \"config\" look confusing. Please choose more distinguishing names.","commit_id":"ebedec6426032c08ab4ebb7cdb5b196e22dc2ecc"},{"author":{"_account_id":15881,"name":"Limor Stotland","email":"limor.bortman@nokia.com","username":"LimorStotlamd"},"change_message_id":"34082a056b6b64aed8052cf4282285e4dec60e02","unresolved":false,"context_lines":[{"line_number":22,"context_line":"    def test_get_rpc_config(self):"},{"line_number":23,"context_line":"        conf \u003d cfg.CONF"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"        rpc_info \u003d rpc_utils.get_rabbit_info_from_oslo(conf.engine)"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"        self.assertDictEqual("},{"line_number":28,"context_line":"            {"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a4dcd0f_27ee71ed","line":25,"updated":"2015-08-12 09:05:51.000000000","message":"what about qpid?","commit_id":"953e639dcddbb659c5d43c853b15ac5875304d2a"},{"author":{"_account_id":7700,"name":"Nikolay Mahotkin","email":"nikolay.makhotkin@gmail.com","username":"nmakhotkin"},"change_message_id":"57a9028d79c880bf304a63db88e2f1c77f91d057","unresolved":false,"context_lines":[{"line_number":22,"context_line":"    def test_get_rpc_config(self):"},{"line_number":23,"context_line":"        conf \u003d cfg.CONF"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"        rpc_info \u003d rpc_utils.get_rabbit_info_from_oslo(conf.engine)"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"        self.assertDictEqual("},{"line_number":28,"context_line":"            {"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a4dcd0f_44d81b53","line":25,"in_reply_to":"1a4dcd0f_27ee71ed","updated":"2015-08-13 09:59:32.000000000","message":"qpid will be implemented in future.","commit_id":"953e639dcddbb659c5d43c853b15ac5875304d2a"}],"mistral/utils/rpc_utils.py":[{"author":{"_account_id":15881,"name":"Limor Stotland","email":"limor.bortman@nokia.com","username":"LimorStotlamd"},"change_message_id":"34082a056b6b64aed8052cf4282285e4dec60e02","unresolved":false,"context_lines":[{"line_number":19,"context_line":"CONF \u003d cfg.CONF"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"def get_rabbit_info_from_oslo(additional_conf):"},{"line_number":23,"context_line":"    return {"},{"line_number":24,"context_line":"        \u0027user_id\u0027: CONF.oslo_messaging_rabbit.rabbit_userid,"},{"line_number":25,"context_line":"        \u0027password\u0027: CONF.oslo_messaging_rabbit.rabbit_password,"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a4dcd0f_07c0154f","line":22,"updated":"2015-08-12 09:05:51.000000000","message":"what about qpid?","commit_id":"953e639dcddbb659c5d43c853b15ac5875304d2a"}]}
