)]}'
{"neutron/agent/ovsdb/native/connection.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b8dc368d0ac9e9de6cbbce7078a8e08219311ea9","unresolved":false,"context_lines":[{"line_number":107,"context_line":"                helper \u003d do_get_schema_helper()"},{"line_number":108,"context_line":"            except Exception:"},{"line_number":109,"context_line":"                with excutils.save_and_reraise_exception():"},{"line_number":110,"context_line":"                    LOG.exception(_LE(\"Failed to get schema helper.\"))"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"        self.update_schema_helper(helper, table_name_list)"},{"line_number":113,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_c6a59647","line":110,"updated":"2016-07-06 18:53:21.000000000","message":"why do you need the log exception here. does the stack trace help? can you just do a error with the exception?","commit_id":"6dd00d4d219bb525b0fab8083d5c2701080c4eec"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"bd176cdaea70b2c0fe0124822983db336faeeabb","unresolved":false,"context_lines":[{"line_number":107,"context_line":"                helper \u003d do_get_schema_helper()"},{"line_number":108,"context_line":"            except Exception:"},{"line_number":109,"context_line":"                with excutils.save_and_reraise_exception():"},{"line_number":110,"context_line":"                    LOG.exception(_LE(\"Failed to get schema helper.\"))"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"        self.update_schema_helper(helper, table_name_list)"},{"line_number":113,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_0daedf84","line":110,"in_reply_to":"1aa78d24_c6a59647","updated":"2016-07-11 14:06:44.000000000","message":"The stack trace usually helps in debugging. If this code is called from more than one place, and one place doesn\u0027t pass the correct parameters, the stack trace will help to pin-point that location.","commit_id":"6dd00d4d219bb525b0fab8083d5c2701080c4eec"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"9c727640bb3061d1281be9ff45c1483d5327c2e7","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from ovs import poller"},{"line_number":21,"context_line":"import retrying"},{"line_number":22,"context_line":"from six.moves import queue as Queue"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"from oslo_log import log as logging"},{"line_number":25,"context_line":"from oslo_utils import excutils"},{"line_number":26,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"9ad45d7e_904d3a9c","line":23,"updated":"2016-08-12 09:48:54.000000000","message":"Nit: empty line","commit_id":"1645ad7e81a4774ffee4f4e877ebdf9efafb97a2"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"9c727640bb3061d1281be9ff45c1483d5327c2e7","unresolved":false,"context_lines":[{"line_number":107,"context_line":"                helper \u003d do_get_schema_helper()"},{"line_number":108,"context_line":"            except Exception:"},{"line_number":109,"context_line":"                with excutils.save_and_reraise_exception():"},{"line_number":110,"context_line":"                    LOG.exception(_LE(\"Failed to get schema helper.\"))"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"        self.update_schema_helper(helper, table_name_list)"},{"line_number":113,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"9ad45d7e_30244ec5","line":110,"range":{"start_line":110,"start_character":20,"end_line":110,"end_character":70},"updated":"2016-08-12 09:48:54.000000000","message":"Won\u0027t we get two tracebacks here? One by calling LOG.exception() and one after exception is handled in higher levels. This puts the whole patch in a question.","commit_id":"1645ad7e81a4774ffee4f4e877ebdf9efafb97a2"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"d4d21d440e8d4b938f06c89b68edabb3d006aff0","unresolved":false,"context_lines":[{"line_number":107,"context_line":"                helper \u003d do_get_schema_helper()"},{"line_number":108,"context_line":"            except Exception:"},{"line_number":109,"context_line":"                with excutils.save_and_reraise_exception():"},{"line_number":110,"context_line":"                    LOG.exception(_LE(\"Failed to get schema helper.\"))"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"        self.update_schema_helper(helper, table_name_list)"},{"line_number":113,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"9ad45d7e_dab864eb","line":110,"range":{"start_line":110,"start_character":20,"end_line":110,"end_character":70},"in_reply_to":"9ad45d7e_30244ec5","updated":"2016-08-12 12:36:36.000000000","message":"The fun of dealing with a library that sometimes does logging itself.","commit_id":"1645ad7e81a4774ffee4f4e877ebdf9efafb97a2"}],"neutron/tests/unit/agent/ovsdb/native/test_connection.py":[{"author":{"_account_id":21273,"name":"Ilya Chukhnakov","email":"Ilya.chukhnakov@gmail.com","username":"ichukhnakov"},"change_message_id":"1997568735e75939d04f779126ac831794272080","unresolved":false,"context_lines":[{"line_number":102,"context_line":"    @mock.patch.object(ovsdb_helpers, \u0027enable_connection_uri\u0027)"},{"line_number":103,"context_line":"    @mock.patch.object(connection.LOG, \u0027exception\u0027)"},{"line_number":104,"context_line":"    @mock.patch.object(idlutils, \u0027get_schema_helper\u0027)"},{"line_number":105,"context_line":"    def _test_get_schema_helper_failure(self, gsh, log_exception, ecu,"},{"line_number":106,"context_line":"                                        table_name_list\u003dNone):"},{"line_number":107,"context_line":"        class TestFailedException(Exception):"},{"line_number":108,"context_line":"            pass"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_04b791d8","line":105,"range":{"start_line":105,"start_character":66,"end_line":105,"end_character":69},"updated":"2016-07-12 16:54:35.000000000","message":"ditto","commit_id":"6dd00d4d219bb525b0fab8083d5c2701080c4eec"},{"author":{"_account_id":21273,"name":"Ilya Chukhnakov","email":"Ilya.chukhnakov@gmail.com","username":"ichukhnakov"},"change_message_id":"1997568735e75939d04f779126ac831794272080","unresolved":false,"context_lines":[{"line_number":102,"context_line":"    @mock.patch.object(ovsdb_helpers, \u0027enable_connection_uri\u0027)"},{"line_number":103,"context_line":"    @mock.patch.object(connection.LOG, \u0027exception\u0027)"},{"line_number":104,"context_line":"    @mock.patch.object(idlutils, \u0027get_schema_helper\u0027)"},{"line_number":105,"context_line":"    def _test_get_schema_helper_failure(self, gsh, log_exception, ecu,"},{"line_number":106,"context_line":"                                        table_name_list\u003dNone):"},{"line_number":107,"context_line":"        class TestFailedException(Exception):"},{"line_number":108,"context_line":"            pass"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_84a421a6","line":105,"range":{"start_line":105,"start_character":46,"end_line":105,"end_character":49},"updated":"2016-07-12 16:54:35.000000000","message":"nit: can we have a less cryptic name here?","commit_id":"6dd00d4d219bb525b0fab8083d5c2701080c4eec"},{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"846dafbc10aca5bfd87e18b4a0f83f474458b6f0","unresolved":false,"context_lines":[{"line_number":115,"context_line":"            table_name_list"},{"line_number":116,"context_line":"        )"},{"line_number":117,"context_line":"        log_exception.assert_called_once_with("},{"line_number":118,"context_line":"            _LE(\"Failed to get schema helper.\")"},{"line_number":119,"context_line":"        )"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"    def test_get_schema_helper_failure(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"9ad45d7e_4294f841","line":118,"updated":"2016-08-10 21:20:25.000000000","message":"If you really want to assert that something is logged, which I think is questionable, then it\u0027s better to assert that *anything* was logged instead of a specific log message.","commit_id":"6dd00d4d219bb525b0fab8083d5c2701080c4eec"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"c299b8cdfe2cbc1072bc88dc130d220d3c648596","unresolved":false,"context_lines":[{"line_number":115,"context_line":"            table_name_list"},{"line_number":116,"context_line":"        )"},{"line_number":117,"context_line":"        log_exception.assert_called_once_with("},{"line_number":118,"context_line":"            _LE(\"Failed to get schema helper.\")"},{"line_number":119,"context_line":"        )"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"    def test_get_schema_helper_failure(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"9ad45d7e_ad9165f3","line":118,"in_reply_to":"9ad45d7e_4294f841","updated":"2016-08-10 21:51:27.000000000","message":"Agreed. And I personally *really* dislike unit tests specific to testing that a message was logged. Especially when one is having to a lot of mocking to get there, so if just about anything changes, the test breaks, whether or not the thing it is testing actually changes.","commit_id":"6dd00d4d219bb525b0fab8083d5c2701080c4eec"},{"author":{"_account_id":13717,"name":"Inessa Vasilevskaya","email":"ivasilevskaya@mirantis.com","username":"ivasilevskaya"},"change_message_id":"28addadb5705c2713d80dc34bddf29c592960ad8","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from ovs.db import idl"},{"line_number":18,"context_line":"from ovs import poller"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from neutron._i18n import _LE"},{"line_number":21,"context_line":"from neutron.agent.ovsdb.native import connection"},{"line_number":22,"context_line":"from neutron.agent.ovsdb.native import helpers as ovsdb_helpers"},{"line_number":23,"context_line":"from neutron.agent.ovsdb.native import idlutils"}],"source_content_type":"text/x-python","patch_set":4,"id":"9ad45d7e_90f6ec5a","line":20,"range":{"start_line":20,"start_character":0,"end_line":20,"end_character":29},"updated":"2016-08-12 00:58:41.000000000","message":"That\u0027s the offending line I guess.","commit_id":"b540b3eb09d4f8c3f7a683c90905b65cfc42ebd8"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"e5a9b90c4b0baceaea05b2c5a1ea5691cc5e2761","unresolved":false,"context_lines":[{"line_number":115,"context_line":"            self.connection.get_schema_helper,"},{"line_number":116,"context_line":"            table_name_list"},{"line_number":117,"context_line":"        )"},{"line_number":118,"context_line":"        self.assertEqual(1, log_exception.call_count)"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    def test_get_schema_helper_failure(self):"},{"line_number":121,"context_line":"        self._test_get_schema_helper_failure()"}],"source_content_type":"text/x-python","patch_set":4,"id":"9ad45d7e_7ecfd955","line":118,"updated":"2016-08-11 18:56:24.000000000","message":"Not worth a -1, but if you feel like changing it this can just be:\n\n log_exception.assert_called_once()","commit_id":"b540b3eb09d4f8c3f7a683c90905b65cfc42ebd8"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"9c727640bb3061d1281be9ff45c1483d5327c2e7","unresolved":false,"context_lines":[{"line_number":108,"context_line":"            pass"},{"line_number":109,"context_line":"        get_schema_helper.side_effect \u003d TestFailedException(\u0027Test failed\u0027)"},{"line_number":110,"context_line":"        self.connection \u003d connection.Connection("},{"line_number":111,"context_line":"            mock.Mock(), mock.Mock(), mock.Mock())"},{"line_number":112,"context_line":"        self.assertRaises("},{"line_number":113,"context_line":"            TestFailedException,"},{"line_number":114,"context_line":"            self.connection.get_schema_helper,"}],"source_content_type":"text/x-python","patch_set":5,"id":"9ad45d7e_9b50bb0c","line":111,"range":{"start_line":111,"start_character":12,"end_line":111,"end_character":49},"updated":"2016-08-12 09:48:54.000000000","message":"I think sentinels make more sense here. We had issues in the past by unittests consuming way too much memory because of being benevolent with using Mock() objects.","commit_id":"1645ad7e81a4774ffee4f4e877ebdf9efafb97a2"}]}
