)]}'
{"nova/rpc/impl_kombu.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"6e48950f86f4469f02907467c12e2e45ac7a2d1e","unresolved":false,"context_lines":[{"line_number":327,"context_line":"            except self.connection.connection_errors:"},{"line_number":328,"context_line":"                pass"},{"line_number":329,"context_line":"            time.sleep(1)"},{"line_number":330,"context_line":"        self.connection \u003d kombu.connection.BrokerConnection(**self.params)"},{"line_number":331,"context_line":"        if self.memory_transport:"},{"line_number":332,"context_line":"            # Kludge to speed up tests."},{"line_number":333,"context_line":"            self.connection.transport.polling_interval \u003d 0.0"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAACn%2F%2F%2FNo%3D","line":330,"updated":"2011-11-10 18:38:48.000000000","message":"Note that, by changing the imports above, you\u0027ve unfortunately broken code like this; you\u0027ll have to go through and change things like \"kombu.connection.\u003cblah\u003e\" to \"connection.\u003cblah\u003e\" (and the same for kombu.entity and kombu.messaging).  Moving the imports needed to be done to bring the file into compliance with HACKING, but unfortunately, taking my advice for \"from ... import ...\" imports in test_rpc_kombu.py and trying it here is going to make a lot of work for you.  (It may accidentally pass tests, but I can\u0027t count on it, and it\u0027s stylistically incorrect...)\n\nSimplest fix is going to be to preserve the import moves (which we should have), but revert to \"import kombu.connection\".  It will take more work to replace \"kombu.{connection,entity,messaging}\", but that would be good, too.  Whichever course you take, I recommend ensuring that the test suite (including PEP8) passes before submitting :)","commit_id":"6966aa5ae20ae376fbd938201d621d9e93a4173a"},{"author":{"_account_id":688,"name":"Sandy Walsh","email":"sandy.walsh@rackspace.com","username":"sandy-walsh"},"change_message_id":"e68f57010fab846bd5be27c148eabaeeb3b1a465","unresolved":false,"context_lines":[{"line_number":331,"context_line":"            # Kludge to speed up tests."},{"line_number":332,"context_line":"            self.connection.transport.polling_interval \u003d 0.0"},{"line_number":333,"context_line":"            # Needed for tests"},{"line_number":334,"context_line":"            self.connection.transport.connection_errors \u003d (socket.error)"},{"line_number":335,"context_line":""},{"line_number":336,"context_line":"        self.consumer_num \u003d itertools.count(1)"},{"line_number":337,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAACn%2F%2F%2Brk%3D","line":334,"updated":"2011-11-14 14:16:58.000000000","message":"again, single item tuples should have trailing commas\n\n(socket.error, )","commit_id":"96876d87779d36a88de2ed679282f96d1e8b22ca"},{"author":{"_account_id":1865,"name":"Andrea Rosa","email":"andrea.rosa@gmail.com","username":"andrea-rosa-m"},"change_message_id":"203a717912baa5c91b22a7a27276fb834b37002e","unresolved":false,"context_lines":[{"line_number":331,"context_line":"            # Kludge to speed up tests."},{"line_number":332,"context_line":"            self.connection.transport.polling_interval \u003d 0.0"},{"line_number":333,"context_line":"            # Needed for tests"},{"line_number":334,"context_line":"            self.connection.transport.connection_errors \u003d (socket.error)"},{"line_number":335,"context_line":""},{"line_number":336,"context_line":"        self.consumer_num \u003d itertools.count(1)"},{"line_number":337,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAC3%2F%2F%2Fj0%3D","line":334,"in_reply_to":"AAAACn%2F%2F%2Brk%3D","updated":"2011-12-02 17:24:23.000000000","message":"Done","commit_id":"96876d87779d36a88de2ed679282f96d1e8b22ca"},{"author":{"_account_id":688,"name":"Sandy Walsh","email":"sandy.walsh@rackspace.com","username":"sandy-walsh"},"change_message_id":"e68f57010fab846bd5be27c148eabaeeb3b1a465","unresolved":false,"context_lines":[{"line_number":396,"context_line":"        broken connection, a second retry creates"},{"line_number":397,"context_line":"        a new connection and removes broken one from the Pool\"\"\""},{"line_number":398,"context_line":"        consumer \u003d None"},{"line_number":399,"context_line":"        try:"},{"line_number":400,"context_line":"            consumer \u003d consumer_cls(self.channel, topic, callback,"},{"line_number":401,"context_line":"                    self.consumer_num.next())"},{"line_number":402,"context_line":"        except self.connection.connection_errors, e:"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAACn%2F%2F%2Brc%3D","line":399,"updated":"2011-11-14 14:16:58.000000000","message":"This could be made much cleaner with a simple\n\nattempt \u003d 0\nwhile attempt \u003c max_retries: \n    # Attempt connection ...\n    attempt +\u003d 1","commit_id":"96876d87779d36a88de2ed679282f96d1e8b22ca"},{"author":{"_account_id":1865,"name":"Andrea Rosa","email":"andrea.rosa@gmail.com","username":"andrea-rosa-m"},"change_message_id":"203a717912baa5c91b22a7a27276fb834b37002e","unresolved":false,"context_lines":[{"line_number":396,"context_line":"        broken connection, a second retry creates"},{"line_number":397,"context_line":"        a new connection and removes broken one from the Pool\"\"\""},{"line_number":398,"context_line":"        consumer \u003d None"},{"line_number":399,"context_line":"        try:"},{"line_number":400,"context_line":"            consumer \u003d consumer_cls(self.channel, topic, callback,"},{"line_number":401,"context_line":"                    self.consumer_num.next())"},{"line_number":402,"context_line":"        except self.connection.connection_errors, e:"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAC3%2F%2F%2Fj4%3D","line":399,"in_reply_to":"AAAAC3%2F%2F%2Fsw%3D","updated":"2011-12-02 17:24:23.000000000","message":"Hi Sandy,\n\nthanks for your reply. I think that to avoid the copy-paste code it\u0027 s not necessary reraise the exception but we need to use a loop, below you find my proposal for this change:\n    def declare_consumer(self, consumer_cls, topic, callback, tries\u003d2):\n        \"\"\"Create a Consumer using the class that was passed in and\n        add it to our list of consumers.\n        Sometimes in the connection Pool there is a\n        broken connection, a second retry creates\n        a new connection and removes broken one from the Pool\"\"\"\n        consumer \u003d None\n        for i in range(tries):\n            try:\n                consumer \u003d consumer_cls(self.channel, topic, callback,\n                    self.consumer_num.next())\n            except self.connection.connection_errors, e:\n                LOG.exception(_(\u0027Failed to declare consumer,\u0027\n                                \u0027 give another go: \u0027\n                                \u0027%s\u0027 % str(e)))\n                self.reconnect()\n            else:\n                self.consumers.append(consumer)\n                break\n\n        return consumer","commit_id":"96876d87779d36a88de2ed679282f96d1e8b22ca"},{"author":{"_account_id":1865,"name":"Andrea Rosa","email":"andrea.rosa@gmail.com","username":"andrea-rosa-m"},"change_message_id":"c21f573dafb46504a57621c31ee17a1784b6fa9b","unresolved":false,"context_lines":[{"line_number":396,"context_line":"        broken connection, a second retry creates"},{"line_number":397,"context_line":"        a new connection and removes broken one from the Pool\"\"\""},{"line_number":398,"context_line":"        consumer \u003d None"},{"line_number":399,"context_line":"        try:"},{"line_number":400,"context_line":"            consumer \u003d consumer_cls(self.channel, topic, callback,"},{"line_number":401,"context_line":"                    self.consumer_num.next())"},{"line_number":402,"context_line":"        except self.connection.connection_errors, e:"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAACn%2F%2F9%2F8%3D","line":399,"in_reply_to":"AAAACn%2F%2F%2Bm8%3D","updated":"2011-11-16 15:25:10.000000000","message":"Sorry Sandy. I don\u0027t think we need to implement the reconnection mechanism using retries, because this is done in the reconnect() method which is called if there is the exception. Do you agree with me?","commit_id":"96876d87779d36a88de2ed679282f96d1e8b22ca"},{"author":{"_account_id":688,"name":"Sandy Walsh","email":"sandy.walsh@rackspace.com","username":"sandy-walsh"},"change_message_id":"4a7732f79eed212982e69430fe8080224a5717ec","unresolved":false,"context_lines":[{"line_number":396,"context_line":"        broken connection, a second retry creates"},{"line_number":397,"context_line":"        a new connection and removes broken one from the Pool\"\"\""},{"line_number":398,"context_line":"        consumer \u003d None"},{"line_number":399,"context_line":"        try:"},{"line_number":400,"context_line":"            consumer \u003d consumer_cls(self.channel, topic, callback,"},{"line_number":401,"context_line":"                    self.consumer_num.next())"},{"line_number":402,"context_line":"        except self.connection.connection_errors, e:"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAACn%2F%2F%2Bm8%3D","line":399,"in_reply_to":"AAAACn%2F%2F%2Bqs%3D","updated":"2011-11-14 18:00:14.000000000","message":"Seems reasonable.","commit_id":"96876d87779d36a88de2ed679282f96d1e8b22ca"},{"author":{"_account_id":1865,"name":"Andrea Rosa","email":"andrea.rosa@gmail.com","username":"andrea-rosa-m"},"change_message_id":"acb0a1b9cb81cee6b20d40a3067b0047cffdebfd","unresolved":false,"context_lines":[{"line_number":396,"context_line":"        broken connection, a second retry creates"},{"line_number":397,"context_line":"        a new connection and removes broken one from the Pool\"\"\""},{"line_number":398,"context_line":"        consumer \u003d None"},{"line_number":399,"context_line":"        try:"},{"line_number":400,"context_line":"            consumer \u003d consumer_cls(self.channel, topic, callback,"},{"line_number":401,"context_line":"                    self.consumer_num.next())"},{"line_number":402,"context_line":"        except self.connection.connection_errors, e:"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAACn%2F%2F%2Bqs%3D","line":399,"in_reply_to":"AAAACn%2F%2F%2Brc%3D","updated":"2011-11-14 14:54:11.000000000","message":"I Sandy\nfor max_retries value, do you think we can use the same flag (FLAGS.rabbit_max_retries) and the same logic (if max_retries \u003c\u003d 0  or None try forever) used for rabbitmq reconnection?","commit_id":"96876d87779d36a88de2ed679282f96d1e8b22ca"},{"author":{"_account_id":688,"name":"Sandy Walsh","email":"sandy.walsh@rackspace.com","username":"sandy-walsh"},"change_message_id":"de0a8cf1c3e43232cefad7e6f6d046097910cbda","unresolved":false,"context_lines":[{"line_number":396,"context_line":"        broken connection, a second retry creates"},{"line_number":397,"context_line":"        a new connection and removes broken one from the Pool\"\"\""},{"line_number":398,"context_line":"        consumer \u003d None"},{"line_number":399,"context_line":"        try:"},{"line_number":400,"context_line":"            consumer \u003d consumer_cls(self.channel, topic, callback,"},{"line_number":401,"context_line":"                    self.consumer_num.next())"},{"line_number":402,"context_line":"        except self.connection.connection_errors, e:"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAC3%2F%2F%2Fsw%3D","line":399,"in_reply_to":"AAAACn%2F%2F840%3D","updated":"2011-12-01 19:52:15.000000000","message":"Could we just do self.reconnect() and then reraise the exception so that the outer retry code will bring it back into us? As it is now, after the reconnect(), it\u0027s a copy-paste of the original connection code anyway.\n\n(I\u0027d still like to see the other comments addressed as well)","commit_id":"96876d87779d36a88de2ed679282f96d1e8b22ca"},{"author":{"_account_id":1865,"name":"Andrea Rosa","email":"andrea.rosa@gmail.com","username":"andrea-rosa-m"},"change_message_id":"e22d7de6b6e2c47ece3c9df4992b85ede60c9335","unresolved":false,"context_lines":[{"line_number":396,"context_line":"        broken connection, a second retry creates"},{"line_number":397,"context_line":"        a new connection and removes broken one from the Pool\"\"\""},{"line_number":398,"context_line":"        consumer \u003d None"},{"line_number":399,"context_line":"        try:"},{"line_number":400,"context_line":"            consumer \u003d consumer_cls(self.channel, topic, callback,"},{"line_number":401,"context_line":"                    self.consumer_num.next())"},{"line_number":402,"context_line":"        except self.connection.connection_errors, e:"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAACn%2F%2F840%3D","line":399,"in_reply_to":"AAAACn%2F%2F85M%3D","updated":"2011-11-22 17:25:07.000000000","message":"Hi Sandy\n\nthanks for your reply. \nMy code changes add the managing of the exception and in the case of the exception we try to reconnect calling the self.reconnect() and in this method, if the attempt to reconnect fails, it will try to reconnect N times according to the reconnection mechanism. So for this reason I think we don\u0027t need to replicate the reconnection process.","commit_id":"96876d87779d36a88de2ed679282f96d1e8b22ca"},{"author":{"_account_id":688,"name":"Sandy Walsh","email":"sandy.walsh@rackspace.com","username":"sandy-walsh"},"change_message_id":"fafcbec402125d6f2d731edb2bd5a46bdc19875a","unresolved":false,"context_lines":[{"line_number":396,"context_line":"        broken connection, a second retry creates"},{"line_number":397,"context_line":"        a new connection and removes broken one from the Pool\"\"\""},{"line_number":398,"context_line":"        consumer \u003d None"},{"line_number":399,"context_line":"        try:"},{"line_number":400,"context_line":"            consumer \u003d consumer_cls(self.channel, topic, callback,"},{"line_number":401,"context_line":"                    self.consumer_num.next())"},{"line_number":402,"context_line":"        except self.connection.connection_errors, e:"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAACn%2F%2F85M%3D","line":399,"in_reply_to":"AAAACn%2F%2F9%2F8%3D","updated":"2011-11-22 17:15:28.000000000","message":"If it\u0027s being done by the reconnect method anyway, I\u0027m not sure why we need it here again?","commit_id":"96876d87779d36a88de2ed679282f96d1e8b22ca"},{"author":{"_account_id":688,"name":"Sandy Walsh","email":"sandy.walsh@rackspace.com","username":"sandy-walsh"},"change_message_id":"e68f57010fab846bd5be27c148eabaeeb3b1a465","unresolved":false,"context_lines":[{"line_number":413,"context_line":""},{"line_number":414,"context_line":"        if consumer:"},{"line_number":415,"context_line":"            self.consumers.append(consumer)"},{"line_number":416,"context_line":"            return consumer"},{"line_number":417,"context_line":""},{"line_number":418,"context_line":"    def iterconsume(self, limit\u003dNone):"},{"line_number":419,"context_line":"        \"\"\"Return an iterator that will consume from all queues/consumers\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAACn%2F%2F%2BrY%3D","line":416,"updated":"2011-11-14 14:16:58.000000000","message":"what if not consumer?\n\nPerhaps this should be:\n\nif consumer:\n    self.consumers.append(consumer)\n\nreturn consumer\n\nDon\u0027t depend on default return type.","commit_id":"96876d87779d36a88de2ed679282f96d1e8b22ca"},{"author":{"_account_id":1865,"name":"Andrea Rosa","email":"andrea.rosa@gmail.com","username":"andrea-rosa-m"},"change_message_id":"203a717912baa5c91b22a7a27276fb834b37002e","unresolved":false,"context_lines":[{"line_number":413,"context_line":""},{"line_number":414,"context_line":"        if consumer:"},{"line_number":415,"context_line":"            self.consumers.append(consumer)"},{"line_number":416,"context_line":"            return consumer"},{"line_number":417,"context_line":""},{"line_number":418,"context_line":"    def iterconsume(self, limit\u003dNone):"},{"line_number":419,"context_line":"        \"\"\"Return an iterator that will consume from all queues/consumers\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAC3%2F%2F%2Fjw%3D","line":416,"in_reply_to":"AAAACn%2F%2F%2BrY%3D","updated":"2011-12-02 17:24:23.000000000","message":"Done","commit_id":"96876d87779d36a88de2ed679282f96d1e8b22ca"}],"nova/tests/test_rpc_kombu.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"97fa02d846c48571b34be53f2d767feffa2f7849","unresolved":false,"context_lines":[{"line_number":21,"context_line":"import socket"},{"line_number":22,"context_line":"import mox"},{"line_number":23,"context_line":"import kombu.connection"},{"line_number":24,"context_line":"import kombu.entity"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"from nova import context"},{"line_number":27,"context_line":"from nova import log as logging"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAACn%2F%2F%2FRg%3D","line":24,"updated":"2011-11-10 17:27:14.000000000","message":"Check HACKING; we\u0027d like the standard-library imports, then the third-party imports, then finally the nova imports, each separated by a single blank line...and each section should be in human alphabetical order.  So, this should probably be something like:\n\n    import socket\n\n    from kombu import connection\n    from kombu import entity\n    import mox\n\n(Also note how I imported kombu.connection and kombu.entity; I know of no reason you *have* to do it that way, even in HACKING, but it tends to be the way I prefer; little easier to type, too :)","commit_id":"873cede2f6150c9f4d22aa929edbe75864ff5f7d"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"9b540144d975b4ade1a29804e1d8494b91fa0b51","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from kombu import connection"},{"line_number":24,"context_line":"from kombu import entity"},{"line_number":25,"context_line":"import mox"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"from nova import context"},{"line_number":28,"context_line":"from nova import log as logging"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAACn%2F%2F%2FMQ%3D","line":25,"updated":"2011-11-10 18:50:02.000000000","message":"Actually, I took a closer look at this file, and I can\u0027t see where you\u0027re using mox or kombu.connection; why do you need these two imports?  (I can see where you\u0027re using socket and kombu.entity, so no problem there...)","commit_id":"6966aa5ae20ae376fbd938201d621d9e93a4173a"},{"author":{"_account_id":688,"name":"Sandy Walsh","email":"sandy.walsh@rackspace.com","username":"sandy-walsh"},"change_message_id":"e68f57010fab846bd5be27c148eabaeeb3b1a465","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Copyright 2010 United States Government as represented by the"},{"line_number":4,"context_line":"# Administrator of the National Aeronautics and Space Administration."},{"line_number":5,"context_line":"# All Rights Reserved."},{"line_number":6,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAACn%2F%2F%2Br0%3D","line":3,"updated":"2011-11-14 14:16:58.000000000","message":"We should add the Openstack LLC copyright line here.","commit_id":"96876d87779d36a88de2ed679282f96d1e8b22ca"},{"author":{"_account_id":688,"name":"Sandy Walsh","email":"sandy.walsh@rackspace.com","username":"sandy-walsh"},"change_message_id":"d9e684cd972ee2f665e4bafc4d064875fcca8355","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        consumer \u003d conn.declare_consumer(self.rpc.DirectConsumer,"},{"line_number":49,"context_line":"                                         \u0027test_topic\u0027, None)"},{"line_number":50,"context_line":"        self.assertIsInstance(consumer, self.rpc.ConsumerBase)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def test_declare_consumer_with_socket_error(self):"},{"line_number":53,"context_line":"        \"\"\"Testing the creation of a consumer"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAACn%2F%2F%2Bq0%3D","line":50,"updated":"2011-11-14 14:33:22.000000000","message":"I\u0027m getting an error on this:\n\n\nERROR: test_declare_consumer (nova.tests.test_rpc_kombu.RpcKombuTestCase)\n----------------------------------------------------------------------\nTraceback (most recent call last):\n  File \"/home/swalsh/github/nova/nova/tests/test_rpc_kombu.py\", line 50, in test_declare_consumer\n    self.assertIsInstance(consumer, self.rpc.ConsumerBase)\nAttributeError: \u0027RpcKombuTestCase\u0027 object has no attribute \u0027assertIsInstance\u0027","commit_id":"96876d87779d36a88de2ed679282f96d1e8b22ca"},{"author":{"_account_id":1865,"name":"Andrea Rosa","email":"andrea.rosa@gmail.com","username":"andrea-rosa-m"},"change_message_id":"203a717912baa5c91b22a7a27276fb834b37002e","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        consumer \u003d conn.declare_consumer(self.rpc.DirectConsumer,"},{"line_number":49,"context_line":"                                         \u0027test_topic\u0027, None)"},{"line_number":50,"context_line":"        self.assertIsInstance(consumer, self.rpc.ConsumerBase)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def test_declare_consumer_with_socket_error(self):"},{"line_number":53,"context_line":"        \"\"\"Testing the creation of a consumer"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAC3%2F%2F%2Fjs%3D","line":50,"in_reply_to":"AAAACn%2F%2F%2Bq0%3D","updated":"2011-12-02 17:24:23.000000000","message":"Done","commit_id":"96876d87779d36a88de2ed679282f96d1e8b22ca"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"11fec1dbf0a4680491b9d98226eefb7725af7bf4","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        consumer \u003d conn.declare_consumer(self.rpc.DirectConsumer,"},{"line_number":49,"context_line":"                                         \u0027test_topic\u0027, None)"},{"line_number":50,"context_line":"        self.assertIsInstance(consumer, self.rpc.ConsumerBase)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def test_declare_consumer_with_socket_error(self):"},{"line_number":53,"context_line":"        \"\"\"Testing the creation of a consumer"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAACn%2F%2F9yQ%3D","line":50,"in_reply_to":"AAAACn%2F%2F%2Bq0%3D","updated":"2011-11-16 23:21:35.000000000","message":"Yeah, assertIsInstance() only exists in Python 2.7\u0027s unittest; we\u0027re targetting Python 2.6...","commit_id":"96876d87779d36a88de2ed679282f96d1e8b22ca"},{"author":{"_account_id":1865,"name":"Andrea Rosa","email":"andrea.rosa@gmail.com","username":"andrea-rosa-m"},"change_message_id":"203a717912baa5c91b22a7a27276fb834b37002e","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        consumer \u003d conn.declare_consumer(self.rpc.DirectConsumer,"},{"line_number":49,"context_line":"                                         \u0027test_topic\u0027, None)"},{"line_number":50,"context_line":"        self.assertIsInstance(consumer, self.rpc.ConsumerBase)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def test_declare_consumer_with_socket_error(self):"},{"line_number":53,"context_line":"        \"\"\"Testing the creation of a consumer"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAC3%2F%2F%2Fjo%3D","line":50,"in_reply_to":"AAAACn%2F%2F9yQ%3D","updated":"2011-12-02 17:24:23.000000000","message":"Done","commit_id":"96876d87779d36a88de2ed679282f96d1e8b22ca"},{"author":{"_account_id":1865,"name":"Andrea Rosa","email":"andrea.rosa@gmail.com","username":"andrea-rosa-m"},"change_message_id":"5f9386e5ed9500694a77a08980a52c85c3b5adbc","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        consumer \u003d conn.declare_consumer(self.rpc.DirectConsumer,"},{"line_number":49,"context_line":"                                         \u0027test_topic\u0027, None)"},{"line_number":50,"context_line":"        self.assertIsInstance(consumer, self.rpc.ConsumerBase)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def test_declare_consumer_with_socket_error(self):"},{"line_number":53,"context_line":"        \"\"\"Testing the creation of a consumer"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAACn%2F%2F9uM%3D","line":50,"in_reply_to":"AAAACn%2F%2F9yQ%3D","updated":"2011-11-17 09:51:18.000000000","message":"Hi Kevin\n\nI didn\u0027t reply to you but I fixed this problem. You will find my changes in my next commit, I am waiting to have your feedback about the change in the impl_kombu file for the retries mechanism","commit_id":"96876d87779d36a88de2ed679282f96d1e8b22ca"},{"author":{"_account_id":688,"name":"Sandy Walsh","email":"sandy.walsh@rackspace.com","username":"sandy-walsh"},"change_message_id":"e68f57010fab846bd5be27c148eabaeeb3b1a465","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        self.assertIsInstance(consumer, self.rpc.ConsumerBase)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def test_declare_consumer_with_socket_error(self):"},{"line_number":53,"context_line":"        \"\"\"Testing the creation of a consumer"},{"line_number":54,"context_line":"        facing with socket error\"\"\""},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"        def _raise_some_errors(*args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAACn%2F%2F%2Bro%3D","line":53,"updated":"2011-11-14 14:16:58.000000000","message":"Not sure what this doc string is trying to tell me.\n\nIs the purpose of this test to be that declare_consumer should return None on a failed connection attempt? Why is it not ok to raise the socket.error?","commit_id":"96876d87779d36a88de2ed679282f96d1e8b22ca"},{"author":{"_account_id":1865,"name":"Andrea Rosa","email":"andrea.rosa@gmail.com","username":"andrea-rosa-m"},"change_message_id":"203a717912baa5c91b22a7a27276fb834b37002e","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        self.assertIsInstance(consumer, self.rpc.ConsumerBase)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def test_declare_consumer_with_socket_error(self):"},{"line_number":53,"context_line":"        \"\"\"Testing the creation of a consumer"},{"line_number":54,"context_line":"        facing with socket error\"\"\""},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"        def _raise_some_errors(*args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAC3%2F%2F%2Fjk%3D","line":53,"in_reply_to":"AAAACn%2F%2F%2Bm4%3D","updated":"2011-12-02 17:24:23.000000000","message":"Done","commit_id":"96876d87779d36a88de2ed679282f96d1e8b22ca"},{"author":{"_account_id":688,"name":"Sandy Walsh","email":"sandy.walsh@rackspace.com","username":"sandy-walsh"},"change_message_id":"4a7732f79eed212982e69430fe8080224a5717ec","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        self.assertIsInstance(consumer, self.rpc.ConsumerBase)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def test_declare_consumer_with_socket_error(self):"},{"line_number":53,"context_line":"        \"\"\"Testing the creation of a consumer"},{"line_number":54,"context_line":"        facing with socket error\"\"\""},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"        def _raise_some_errors(*args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAACn%2F%2F%2Bm4%3D","line":53,"in_reply_to":"AAAACn%2F%2F%2BqI%3D","updated":"2011-11-14 18:00:14.000000000","message":"That\u0027s better","commit_id":"96876d87779d36a88de2ed679282f96d1e8b22ca"},{"author":{"_account_id":1865,"name":"Andrea Rosa","email":"andrea.rosa@gmail.com","username":"andrea-rosa-m"},"change_message_id":"882ae4c7b79055efd934502cb580a4e38db6a602","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        self.assertIsInstance(consumer, self.rpc.ConsumerBase)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def test_declare_consumer_with_socket_error(self):"},{"line_number":53,"context_line":"        \"\"\"Testing the creation of a consumer"},{"line_number":54,"context_line":"        facing with socket error\"\"\""},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"        def _raise_some_errors(*args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAACn%2F%2F%2BqI%3D","line":53,"in_reply_to":"AAAACn%2F%2F%2Bro%3D","updated":"2011-11-14 15:22:37.000000000","message":"Please let me know if the following doc string is more clear:\n\"Testing that declare_consumer in the case of a failed connection can catch the exception raised and return None\"?","commit_id":"96876d87779d36a88de2ed679282f96d1e8b22ca"},{"author":{"_account_id":688,"name":"Sandy Walsh","email":"sandy.walsh@rackspace.com","username":"sandy-walsh"},"change_message_id":"e68f57010fab846bd5be27c148eabaeeb3b1a465","unresolved":false,"context_lines":[{"line_number":59,"context_line":"        self.stubs.Set(entity.Queue, \u0027declare\u0027, _raise_some_errors)"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"        conn \u003d self.rpc.Connection()"},{"line_number":62,"context_line":"        #define socket error exception for transport memory"},{"line_number":63,"context_line":"        conn.connection.transport.connection_errors \u003d (socket.error)"},{"line_number":64,"context_line":"        #declare a consumer"},{"line_number":65,"context_line":"        consumer \u003d conn.declare_consumer(self.rpc.DirectConsumer,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAACn%2F%2F%2Brw%3D","line":62,"updated":"2011-11-14 14:16:58.000000000","message":"Comments should use proper punctuation and space after #\n\n# Define socket error exception for transport memory.\n\nAlso, not really clear on what this exception is trying to say?","commit_id":"96876d87779d36a88de2ed679282f96d1e8b22ca"},{"author":{"_account_id":1865,"name":"Andrea Rosa","email":"andrea.rosa@gmail.com","username":"andrea-rosa-m"},"change_message_id":"203a717912baa5c91b22a7a27276fb834b37002e","unresolved":false,"context_lines":[{"line_number":59,"context_line":"        self.stubs.Set(entity.Queue, \u0027declare\u0027, _raise_some_errors)"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"        conn \u003d self.rpc.Connection()"},{"line_number":62,"context_line":"        #define socket error exception for transport memory"},{"line_number":63,"context_line":"        conn.connection.transport.connection_errors \u003d (socket.error)"},{"line_number":64,"context_line":"        #declare a consumer"},{"line_number":65,"context_line":"        consumer \u003d conn.declare_consumer(self.rpc.DirectConsumer,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAC3%2F%2F%2Fjg%3D","line":62,"in_reply_to":"AAAACn%2F%2F%2Bm0%3D","updated":"2011-12-02 17:24:23.000000000","message":"Done","commit_id":"96876d87779d36a88de2ed679282f96d1e8b22ca"},{"author":{"_account_id":688,"name":"Sandy Walsh","email":"sandy.walsh@rackspace.com","username":"sandy-walsh"},"change_message_id":"4a7732f79eed212982e69430fe8080224a5717ec","unresolved":false,"context_lines":[{"line_number":59,"context_line":"        self.stubs.Set(entity.Queue, \u0027declare\u0027, _raise_some_errors)"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"        conn \u003d self.rpc.Connection()"},{"line_number":62,"context_line":"        #define socket error exception for transport memory"},{"line_number":63,"context_line":"        conn.connection.transport.connection_errors \u003d (socket.error)"},{"line_number":64,"context_line":"        #declare a consumer"},{"line_number":65,"context_line":"        consumer \u003d conn.declare_consumer(self.rpc.DirectConsumer,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAACn%2F%2F%2Bm0%3D","line":62,"in_reply_to":"AAAACn%2F%2F%2BqA%3D","updated":"2011-11-14 18:00:14.000000000","message":"That would be better.","commit_id":"96876d87779d36a88de2ed679282f96d1e8b22ca"},{"author":{"_account_id":1865,"name":"Andrea Rosa","email":"andrea.rosa@gmail.com","username":"andrea-rosa-m"},"change_message_id":"882ae4c7b79055efd934502cb580a4e38db6a602","unresolved":false,"context_lines":[{"line_number":59,"context_line":"        self.stubs.Set(entity.Queue, \u0027declare\u0027, _raise_some_errors)"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"        conn \u003d self.rpc.Connection()"},{"line_number":62,"context_line":"        #define socket error exception for transport memory"},{"line_number":63,"context_line":"        conn.connection.transport.connection_errors \u003d (socket.error)"},{"line_number":64,"context_line":"        #declare a consumer"},{"line_number":65,"context_line":"        consumer \u003d conn.declare_consumer(self.rpc.DirectConsumer,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAACn%2F%2F%2BqA%3D","line":62,"in_reply_to":"AAAACn%2F%2F%2Brw%3D","updated":"2011-11-14 15:22:37.000000000","message":"the transport memory has an empty list for \"connection_errors\". To test it we need to add an item to the list.","commit_id":"96876d87779d36a88de2ed679282f96d1e8b22ca"},{"author":{"_account_id":688,"name":"Sandy Walsh","email":"sandy.walsh@rackspace.com","username":"sandy-walsh"},"change_message_id":"e68f57010fab846bd5be27c148eabaeeb3b1a465","unresolved":false,"context_lines":[{"line_number":60,"context_line":""},{"line_number":61,"context_line":"        conn \u003d self.rpc.Connection()"},{"line_number":62,"context_line":"        #define socket error exception for transport memory"},{"line_number":63,"context_line":"        conn.connection.transport.connection_errors \u003d (socket.error)"},{"line_number":64,"context_line":"        #declare a consumer"},{"line_number":65,"context_line":"        consumer \u003d conn.declare_consumer(self.rpc.DirectConsumer,"},{"line_number":66,"context_line":"                                                \u0027test_topic\u0027, None)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAACn%2F%2F%2Brs%3D","line":63,"updated":"2011-11-14 14:16:58.000000000","message":"Single item tuples should have trailing comma\n\n(socket.error, )","commit_id":"96876d87779d36a88de2ed679282f96d1e8b22ca"},{"author":{"_account_id":1865,"name":"Andrea Rosa","email":"andrea.rosa@gmail.com","username":"andrea-rosa-m"},"change_message_id":"203a717912baa5c91b22a7a27276fb834b37002e","unresolved":false,"context_lines":[{"line_number":60,"context_line":""},{"line_number":61,"context_line":"        conn \u003d self.rpc.Connection()"},{"line_number":62,"context_line":"        #define socket error exception for transport memory"},{"line_number":63,"context_line":"        conn.connection.transport.connection_errors \u003d (socket.error)"},{"line_number":64,"context_line":"        #declare a consumer"},{"line_number":65,"context_line":"        consumer \u003d conn.declare_consumer(self.rpc.DirectConsumer,"},{"line_number":66,"context_line":"                                                \u0027test_topic\u0027, None)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAC3%2F%2F%2Fjc%3D","line":63,"in_reply_to":"AAAACn%2F%2F%2Brs%3D","updated":"2011-12-02 17:24:23.000000000","message":"Done","commit_id":"96876d87779d36a88de2ed679282f96d1e8b22ca"}]}
