)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"8f35d7e4fd2890ec094503f54b34d44754611e81","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Should not send replies for cast messages"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Cast messages will not contain a msg_id  and we\u0027re currently"},{"line_number":10,"context_line":"sending messages to the default excahgne with empty msg_id."},{"line_number":11,"context_line":"In order to fix it we should not send replies if there is no"},{"line_number":12,"context_line":"msg_id in message."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"1abeadc6_d3360752","line":10,"updated":"2014-08-19 12:22:04.000000000","message":"nit: exchange","commit_id":"7381ccdc2afb71761b31f766be15ee21944d3650"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"b77701693d2e29d085db05650b3c050e9ca90cfa","unresolved":false,"context_lines":[{"line_number":12,"context_line":"msg_id in message."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I5b1142029d2c718c3929cf6cf1f6e958b95a5c96"},{"line_number":15,"context_line":"Closes-bug: #1355058"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"1abeadc6_1ac0947b","line":15,"updated":"2014-08-19 10:57:38.000000000","message":"IMHO, you should mention the original author using Co-Authored-By","commit_id":"7381ccdc2afb71761b31f766be15ee21944d3650"}],"oslo/messaging/_drivers/amqpdriver.py":[{"author":{"_account_id":5164,"name":"jsimms","email":"justin.simms@gmail.com","username":"jsimms"},"change_message_id":"157087c665510a3f14c501c3e4ade3423646e3a4","unresolved":false,"context_lines":[{"line_number":67,"context_line":"        if not self.msg_id:"},{"line_number":68,"context_line":"            # NOTE(Alexei_987) not sending reply, if msg_id is empty"},{"line_number":69,"context_line":"            #    because reply should not be expected by caller side"},{"line_number":70,"context_line":"            return"},{"line_number":71,"context_line":"        with self.listener.driver._get_connection() as conn:"},{"line_number":72,"context_line":"            self._send_reply(conn, reply, failure, log_failure\u003dlog_failure)"},{"line_number":73,"context_line":"            self._send_reply(conn, ending\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1abeadc6_e3fef96a","line":70,"updated":"2014-08-18 17:25:31.000000000","message":"What do you mean when you say the reply should not be expected by the caller? Does the empty return provide enough context for the caller? Or should there be a message which is built to encode the fact that the msg_id is non-existent?","commit_id":"b3dec2a6b76bdaee0e1a711c71389f97c216cc59"},{"author":{"_account_id":6926,"name":"Bogdan Dobrelya","email":"bdobreli@redhat.com","username":"bogdando"},"change_message_id":"1e4f58905b71f426ab2b1b1267a1926fb0273dc9","unresolved":false,"context_lines":[{"line_number":67,"context_line":"        if not self.msg_id:"},{"line_number":68,"context_line":"            # NOTE(Alexei_987) not sending reply, if msg_id is empty"},{"line_number":69,"context_line":"            #    because reply should not be expected by caller side"},{"line_number":70,"context_line":"            return"},{"line_number":71,"context_line":"        with self.listener.driver._get_connection() as conn:"},{"line_number":72,"context_line":"            self._send_reply(conn, reply, failure, log_failure\u003dlog_failure)"},{"line_number":73,"context_line":"            self._send_reply(conn, ending\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1abeadc6_a1cb02a4","line":70,"in_reply_to":"1abeadc6_e3fef96a","updated":"2014-08-19 07:43:11.000000000","message":"If I understood Alexey\u0027s patch correct, empty msg_id *does* imply the caller(caster) does not expect for reply (wait_for_reply \u003d false), and the test confirms that as well.  I believe the empty return is OK - there could be a plenty of casts served and driver should not spam unexpected replies around.\n\nProbably, Alexey could answer it better then me, though.","commit_id":"b3dec2a6b76bdaee0e1a711c71389f97c216cc59"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"b77701693d2e29d085db05650b3c050e9ca90cfa","unresolved":false,"context_lines":[{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def reply(self, reply\u003dNone, failure\u003dNone, log_failure\u003dTrue):"},{"line_number":67,"context_line":"        if not self.msg_id:"},{"line_number":68,"context_line":"            # NOTE(Alexei_987) not sending reply, if msg_id is empty"},{"line_number":69,"context_line":"            #    because reply should not be expected by caller side"},{"line_number":70,"context_line":"            return"},{"line_number":71,"context_line":"        with self.listener.driver._get_connection() as conn:"}],"source_content_type":"text/x-python","patch_set":5,"id":"1abeadc6_3a1b901c","line":68,"updated":"2014-08-19 10:57:38.000000000","message":"pedantic, iirc, it should be:\n\n  NOTE(Alexei_987):","commit_id":"7381ccdc2afb71761b31f766be15ee21944d3650"}],"tests/drivers/test_impl_rabbit.py":[{"author":{"_account_id":5164,"name":"jsimms","email":"justin.simms@gmail.com","username":"jsimms"},"change_message_id":"7b2d26deb227107a104c2b62801d9726e0ffac73","unresolved":false,"context_lines":[{"line_number":317,"context_line":""},{"line_number":318,"context_line":"        self.stubs.Set(amqpdriver.ReplyWaiter, \u0027wait\u0027, reply_waiter)"},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"        def send_and_wait_for_reply(i, wait_for_reply):"},{"line_number":321,"context_line":"            replies.append(driver.send(target,"},{"line_number":322,"context_line":"                                       {},"},{"line_number":323,"context_line":"                                       {\u0027tx_id\u0027: i},"}],"source_content_type":"text/x-python","patch_set":5,"id":"1abeadc6_3a75be63","line":320,"updated":"2014-08-22 15:18:55.000000000","message":"should wait_for_reply be optional with a default?","commit_id":"7381ccdc2afb71761b31f766be15ee21944d3650"},{"author":{"_account_id":6926,"name":"Bogdan Dobrelya","email":"bdobreli@redhat.com","username":"bogdando"},"change_message_id":"3e1d9618d57df1bc82b209f4b51283c3bb869ffa","unresolved":false,"context_lines":[{"line_number":317,"context_line":""},{"line_number":318,"context_line":"        self.stubs.Set(amqpdriver.ReplyWaiter, \u0027wait\u0027, reply_waiter)"},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"        def send_and_wait_for_reply(i, wait_for_reply):"},{"line_number":321,"context_line":"            replies.append(driver.send(target,"},{"line_number":322,"context_line":"                                       {},"},{"line_number":323,"context_line":"                                       {\u0027tx_id\u0027: i},"}],"source_content_type":"text/x-python","patch_set":5,"id":"1abeadc6_1a472278","line":320,"in_reply_to":"1abeadc6_3a75be63","updated":"2014-08-22 15:33:35.000000000","message":"Perhaps yes, but this is internally called method only, and we\u0027re aware of how we want to call it for our test cases (see below)","commit_id":"7381ccdc2afb71761b31f766be15ee21944d3650"},{"author":{"_account_id":5164,"name":"jsimms","email":"justin.simms@gmail.com","username":"jsimms"},"change_message_id":"7b2d26deb227107a104c2b62801d9726e0ffac73","unresolved":false,"context_lines":[{"line_number":326,"context_line":""},{"line_number":327,"context_line":"        while len(senders) \u003c 2:"},{"line_number":328,"context_line":"            t \u003d threading.Thread(target\u003dsend_and_wait_for_reply,"},{"line_number":329,"context_line":"                                 args\u003d(len(senders), True))"},{"line_number":330,"context_line":"            t.daemon \u003d True"},{"line_number":331,"context_line":"            senders.append(t)"},{"line_number":332,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"1abeadc6_1a12c208","line":329,"updated":"2014-08-22 15:18:55.000000000","message":"should this True be replaced with a configurable parameter that is passed in by the caller?","commit_id":"7381ccdc2afb71761b31f766be15ee21944d3650"},{"author":{"_account_id":6926,"name":"Bogdan Dobrelya","email":"bdobreli@redhat.com","username":"bogdando"},"change_message_id":"3e1d9618d57df1bc82b209f4b51283c3bb869ffa","unresolved":false,"context_lines":[{"line_number":326,"context_line":""},{"line_number":327,"context_line":"        while len(senders) \u003c 2:"},{"line_number":328,"context_line":"            t \u003d threading.Thread(target\u003dsend_and_wait_for_reply,"},{"line_number":329,"context_line":"                                 args\u003d(len(senders), True))"},{"line_number":330,"context_line":"            t.daemon \u003d True"},{"line_number":331,"context_line":"            senders.append(t)"},{"line_number":332,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"1abeadc6_daf4ca5c","line":329,"in_reply_to":"1abeadc6_1a12c208","updated":"2014-08-22 15:33:35.000000000","message":"I believe it shouldn\u0027t - we\u0027re simulating the 2 cases then sender wants to wait for reply, and the 3rd one, then it doesn\u0027t","commit_id":"7381ccdc2afb71761b31f766be15ee21944d3650"},{"author":{"_account_id":5164,"name":"jsimms","email":"justin.simms@gmail.com","username":"jsimms"},"change_message_id":"7b2d26deb227107a104c2b62801d9726e0ffac73","unresolved":false,"context_lines":[{"line_number":332,"context_line":""},{"line_number":333,"context_line":"        # test the case then msg_id is not set"},{"line_number":334,"context_line":"        t \u003d threading.Thread(target\u003dsend_and_wait_for_reply,"},{"line_number":335,"context_line":"                             args\u003d(len(senders), False))"},{"line_number":336,"context_line":"        t.daemon \u003d True"},{"line_number":337,"context_line":"        senders.append(t)"},{"line_number":338,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"1abeadc6_da320aa6","line":335,"updated":"2014-08-22 15:18:55.000000000","message":"same as above but for this False","commit_id":"7381ccdc2afb71761b31f766be15ee21944d3650"},{"author":{"_account_id":6926,"name":"Bogdan Dobrelya","email":"bdobreli@redhat.com","username":"bogdando"},"change_message_id":"3e1d9618d57df1bc82b209f4b51283c3bb869ffa","unresolved":false,"context_lines":[{"line_number":332,"context_line":""},{"line_number":333,"context_line":"        # test the case then msg_id is not set"},{"line_number":334,"context_line":"        t \u003d threading.Thread(target\u003dsend_and_wait_for_reply,"},{"line_number":335,"context_line":"                             args\u003d(len(senders), False))"},{"line_number":336,"context_line":"        t.daemon \u003d True"},{"line_number":337,"context_line":"        senders.append(t)"},{"line_number":338,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"1abeadc6_3ab3fe98","line":335,"in_reply_to":"1abeadc6_da320aa6","updated":"2014-08-22 15:33:35.000000000","message":"ditto","commit_id":"7381ccdc2afb71761b31f766be15ee21944d3650"}]}
