)]}'
{"swift/container/sharder.py":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"022220301c9b67f2df30d8af2c64e434c6a20fed","unresolved":false,"context_lines":[{"line_number":168,"context_line":"        except DirectClientException as err:"},{"line_number":169,"context_line":"            self.logger.warning("},{"line_number":170,"context_line":"                \u0027Failed to put shard ranges to %s:%s/%s: %s\u0027,"},{"line_number":171,"context_line":"                node[\u0027ip\u0027], node[\u0027port\u0027], node[\u0027device\u0027], err.http_status)"},{"line_number":172,"context_line":"        except Exception as err:"},{"line_number":173,"context_line":"            self.logger.exception("},{"line_number":174,"context_line":"                \u0027Failed to put shard ranges to %s:%s/%s: %s\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"df7087c5_0e948443","line":171,"range":{"start_line":171,"start_character":62,"end_line":171,"end_character":73},"updated":"2018-03-21 09:12:50.000000000","message":"we got a little more context before (path), but also some duplicated info (host)","commit_id":"d3af55e3347ad4f387417aac8ae7bee80449874f"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"ae331e00d8de50d1e227306afeab054e0226756d","unresolved":false,"context_lines":[{"line_number":175,"context_line":"                node[\u0027ip\u0027], node[\u0027port\u0027], node[\u0027device\u0027], err)"},{"line_number":176,"context_line":"        else:"},{"line_number":177,"context_line":"            return True"},{"line_number":178,"context_line":"        return False"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"    def _send_shard_ranges(self, account, container, shard_ranges,"},{"line_number":181,"context_line":"                           headers\u003dNone):"}],"source_content_type":"text/x-python","patch_set":1,"id":"df7087c5_791cfa12","line":178,"updated":"2018-03-20 20:49:28.000000000","message":"else is exception block is kinda trixy?  is this clear as mud?","commit_id":"d3af55e3347ad4f387417aac8ae7bee80449874f"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"022220301c9b67f2df30d8af2c64e434c6a20fed","unresolved":false,"context_lines":[{"line_number":175,"context_line":"                node[\u0027ip\u0027], node[\u0027port\u0027], node[\u0027device\u0027], err)"},{"line_number":176,"context_line":"        else:"},{"line_number":177,"context_line":"            return True"},{"line_number":178,"context_line":"        return False"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"    def _send_shard_ranges(self, account, container, shard_ranges,"},{"line_number":181,"context_line":"                           headers\u003dNone):"}],"source_content_type":"text/x-python","patch_set":1,"id":"df7087c5_2ee148fd","line":178,"in_reply_to":"df7087c5_791cfa12","updated":"2018-03-21 09:12:50.000000000","message":"wfm","commit_id":"d3af55e3347ad4f387417aac8ae7bee80449874f"}],"test/unit/__init__.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"ae331e00d8de50d1e227306afeab054e0226756d","unresolved":false,"context_lines":[{"line_number":752,"context_line":"        \"\"\""},{"line_number":753,"context_line":"        # connect exception"},{"line_number":754,"context_line":"        if inspect.isclass(status) and issubclass(status, Exception):"},{"line_number":755,"context_line":"            raise status(\u0027FakeStatus Error\u0027)"},{"line_number":756,"context_line":"        if isinstance(status, (Exception, eventlet.Timeout)):"},{"line_number":757,"context_line":"            raise status"},{"line_number":758,"context_line":"        if isinstance(status, tuple):"}],"source_content_type":"text/x-python","patch_set":1,"id":"df7087c5_5921f64c","line":755,"updated":"2018-03-20 20:49:28.000000000","message":"I was just going to fix the tests to Exception() - but it seemed like a foot gun\n\nit\u0027ll be funny if this breaks something unrelated!","commit_id":"d3af55e3347ad4f387417aac8ae7bee80449874f"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"2ad8f06059bd382947ae474d990039c511547f49","unresolved":false,"context_lines":[{"line_number":752,"context_line":"        \"\"\""},{"line_number":753,"context_line":"        # connect exception"},{"line_number":754,"context_line":"        if inspect.isclass(status) and issubclass(status, Exception):"},{"line_number":755,"context_line":"            raise status(\u0027FakeStatus Error\u0027)"},{"line_number":756,"context_line":"        if isinstance(status, (Exception, eventlet.Timeout)):"},{"line_number":757,"context_line":"            raise status"},{"line_number":758,"context_line":"        if isinstance(status, tuple):"}],"source_content_type":"text/x-python","patch_set":1,"id":"df7087c5_f9dfaa09","line":755,"in_reply_to":"df7087c5_5921f64c","updated":"2018-03-20 20:59:40.000000000","message":"Why not just instantiate the error in the test, and use the plumbing we\u0027ve already got below? w/e","commit_id":"d3af55e3347ad4f387417aac8ae7bee80449874f"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"662fadf3eb9a455d7a2d71a2a0994165459209bd","unresolved":false,"context_lines":[{"line_number":752,"context_line":"        \"\"\""},{"line_number":753,"context_line":"        # connect exception"},{"line_number":754,"context_line":"        if inspect.isclass(status) and issubclass(status, Exception):"},{"line_number":755,"context_line":"            raise status(\u0027FakeStatus Error\u0027)"},{"line_number":756,"context_line":"        if isinstance(status, (Exception, eventlet.Timeout)):"},{"line_number":757,"context_line":"            raise status"},{"line_number":758,"context_line":"        if isinstance(status, tuple):"}],"source_content_type":"text/x-python","patch_set":1,"id":"df7087c5_79acfa34","line":755,"in_reply_to":"df7087c5_f9dfaa09","updated":"2018-03-20 21:14:25.000000000","message":"... because it seemed easy to make the mistake of passing the un-instantiated exception class ...\n\nmy judgement call here was that it would be better if the test infrastructure was robust w/o the test author having to be more careful?\n\nI see no obvious advantage to pushing work out to the tests, the benefit of this seems like \"principle of less surprise\"","commit_id":"d3af55e3347ad4f387417aac8ae7bee80449874f"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"662fadf3eb9a455d7a2d71a2a0994165459209bd","unresolved":false,"context_lines":[{"line_number":792,"context_line":"                            \u0027expect status: %r\u0027 % (self.expect_status,))"},{"line_number":793,"context_line":"        if isinstance(self.status, (Exception, eventlet.Timeout)):"},{"line_number":794,"context_line":"            raise self.status"},{"line_number":795,"context_line":"        return self.status"},{"line_number":796,"context_line":""},{"line_number":797,"context_line":"    def get_expect_status(self):"},{"line_number":798,"context_line":"        expect_sleep \u003d self.expect_sleep_list.pop(0)"}],"source_content_type":"text/x-python","patch_set":1,"id":"df7087c5_996c6e09","line":795,"updated":"2018-03-20 21:14:25.000000000","message":"Strangely w/o the above change, we\u0027d make it through here and return the Exception class here - which caused the consumer code in direct client to blow up with a TypeErorr when it // 100\u0027d the `type` not `int`","commit_id":"d3af55e3347ad4f387417aac8ae7bee80449874f"}],"test/unit/container/test_sharder.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"ae331e00d8de50d1e227306afeab054e0226756d","unresolved":false,"context_lines":[{"line_number":1771,"context_line":"        warnings \u003d sharder.logger.get_lines_for_level(\u0027warning\u0027)"},{"line_number":1772,"context_line":"        for warning in warnings[:2]:"},{"line_number":1773,"context_line":"            self.assertIn(\u0027Failed to put shard ranges\u0027, warning)"},{"line_number":1774,"context_line":"        self.assertFalse(warnings[2:])"},{"line_number":1775,"context_line":""},{"line_number":1776,"context_line":"        replicas \u003d 2"},{"line_number":1777,"context_line":"        res, sharder \u003d do_test(replicas, 202, 202)"}],"source_content_type":"text/x-python","patch_set":1,"id":"df7087c5_99278e65","side":"PARENT","line":1774,"updated":"2018-03-20 20:49:28.000000000","message":"when warnings was empty these assertions still passed :\\","commit_id":"729517d5f86dcb34127c2c976949aaea86168603"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"022220301c9b67f2df30d8af2c64e434c6a20fed","unresolved":false,"context_lines":[{"line_number":1771,"context_line":"        warnings \u003d sharder.logger.get_lines_for_level(\u0027warning\u0027)"},{"line_number":1772,"context_line":"        for warning in warnings[:2]:"},{"line_number":1773,"context_line":"            self.assertIn(\u0027Failed to put shard ranges\u0027, warning)"},{"line_number":1774,"context_line":"        self.assertFalse(warnings[2:])"},{"line_number":1775,"context_line":""},{"line_number":1776,"context_line":"        replicas \u003d 2"},{"line_number":1777,"context_line":"        res, sharder \u003d do_test(replicas, 202, 202)"}],"source_content_type":"text/x-python","patch_set":1,"id":"df7087c5_6e866016","side":"PARENT","line":1774,"in_reply_to":"df7087c5_99278e65","updated":"2018-03-21 09:12:50.000000000","message":"oops, my bad","commit_id":"729517d5f86dcb34127c2c976949aaea86168603"}]}
