)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"e16a229a2e73c6320794933b0915795bdab4ade6","unresolved":false,"context_lines":[{"line_number":14,"context_line":"processes the root container before the container-sharder processes the"},{"line_number":15,"context_line":"shards, the deleted shards would get reaped from the root so they won\u0027t"},{"line_number":16,"context_line":"be available for the sharder. The shard containers then hang around"},{"line_number":17,"context_line":"indefinitely."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Now, be willing to mark shard DBs as deleted even when we can\u0027t find our"},{"line_number":20,"context_line":"own shard range in the root. Fortunately, the shard already knows that"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"9f560f44_b46a507d","line":17,"updated":"2020-07-28 19:09:58.000000000","message":"quite plausible :+1:","commit_id":"36bd21488e2b1c2fce667412c05ca439c3a17cde"}],"swift/container/sharder.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"fe44a8580450862a9648ca5ace31d3e566f88ef0","unresolved":false,"context_lines":[{"line_number":748,"context_line":"                    shard_range \u003d None"},{"line_number":749,"context_line":"            elif not own_shard_range.deleted:"},{"line_number":750,"context_line":"                warnings.append(\u0027unable to get shard ranges from root\u0027)"},{"line_number":751,"context_line":"            # else, our shard range is deleted, so root may have reclaimed it"},{"line_number":752,"context_line":"        else:"},{"line_number":753,"context_line":"            errors.append(\u0027missing own shard range\u0027)"},{"line_number":754,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"bf51134e_9f94108d","line":751,"updated":"2020-07-10 21:51:24.000000000","message":"on the surface this seems like it is addressing the issue I saw in the previous patch!","commit_id":"eab83c68b44368720e4a7c439cc3948e6a022cec"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"e16a229a2e73c6320794933b0915795bdab4ade6","unresolved":false,"context_lines":[{"line_number":748,"context_line":"                    shard_range \u003d None"},{"line_number":749,"context_line":"            elif not own_shard_range.deleted:"},{"line_number":750,"context_line":"                warnings.append(\u0027unable to get shard ranges from root\u0027)"},{"line_number":751,"context_line":"            # else, our shard range is deleted, so root may have reclaimed it"},{"line_number":752,"context_line":"        else:"},{"line_number":753,"context_line":"            errors.append(\u0027missing own shard range\u0027)"},{"line_number":754,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9f560f44_94974c91","line":751,"updated":"2020-07-28 19:09:58.000000000","message":"kudos for commenting the \"elif on a shelf\" - I\u0027ve always said dangling elif was a smell; I hope you didn\u0027t feel obligated on my account tho","commit_id":"36bd21488e2b1c2fce667412c05ca439c3a17cde"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"c9508715b0702b7098762c706c3a0115d7f2cbfb","unresolved":false,"context_lines":[{"line_number":748,"context_line":"                    shard_range \u003d None"},{"line_number":749,"context_line":"            elif not own_shard_range.deleted:"},{"line_number":750,"context_line":"                warnings.append(\u0027unable to get shard ranges from root\u0027)"},{"line_number":751,"context_line":"            # else, our shard range is deleted, so root may have reclaimed it"},{"line_number":752,"context_line":"        else:"},{"line_number":753,"context_line":"            errors.append(\u0027missing own shard range\u0027)"},{"line_number":754,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9f560f44_1a06c387","line":751,"in_reply_to":"9f560f44_94974c91","updated":"2020-07-28 21:46:22.000000000","message":"No, I\u0027ve just got similar taste. ;-)","commit_id":"36bd21488e2b1c2fce667412c05ca439c3a17cde"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"e16a229a2e73c6320794933b0915795bdab4ade6","unresolved":false,"context_lines":[{"line_number":750,"context_line":"                warnings.append(\u0027unable to get shard ranges from root\u0027)"},{"line_number":751,"context_line":"            # else, our shard range is deleted, so root may have reclaimed it"},{"line_number":752,"context_line":"        else:"},{"line_number":753,"context_line":"            errors.append(\u0027missing own shard range\u0027)"},{"line_number":754,"context_line":""},{"line_number":755,"context_line":"        if warnings:"},{"line_number":756,"context_line":"            self.logger.warning("}],"source_content_type":"text/x-python","patch_set":4,"id":"9f560f44_f4d6884f","line":753,"updated":"2020-07-28 19:09:58.000000000","message":"missing own_own_shard range huh...","commit_id":"36bd21488e2b1c2fce667412c05ca439c3a17cde"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"e16a229a2e73c6320794933b0915795bdab4ade6","unresolved":false,"context_lines":[{"line_number":757,"context_line":"                \u0027Audit warnings for shard %s (%s): %s\u0027,"},{"line_number":758,"context_line":"                broker.db_file, quote(broker.path), \u0027, \u0027.join(warnings))"},{"line_number":759,"context_line":""},{"line_number":760,"context_line":"        if errors:"},{"line_number":761,"context_line":"            self.logger.warning("},{"line_number":762,"context_line":"                \u0027Audit failed for shard %s (%s) - skipping: %s\u0027,"},{"line_number":763,"context_line":"                broker.db_file, quote(broker.path), \u0027, \u0027.join(errors))"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f560f44_54cc94bb","line":760,"updated":"2020-07-28 19:09:58.000000000","message":"oic, we skip out early on errors!","commit_id":"36bd21488e2b1c2fce667412c05ca439c3a17cde"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"e16a229a2e73c6320794933b0915795bdab4ade6","unresolved":false,"context_lines":[{"line_number":776,"context_line":"                broker.empty()):"},{"line_number":777,"context_line":"            broker.delete_db(Timestamp.now().internal)"},{"line_number":778,"context_line":"            self.logger.debug(\u0027Deleted shard container %s (%s)\u0027,"},{"line_number":779,"context_line":"                              broker.db_file, quote(broker.path))"},{"line_number":780,"context_line":""},{"line_number":781,"context_line":"        self._increment_stat(\u0027audit_shard\u0027, \u0027success\u0027, statsd\u003dTrue)"},{"line_number":782,"context_line":"        return True"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f560f44_7447181f","line":779,"updated":"2020-07-28 19:09:58.000000000","message":"it\u0027s scary that this now seems to be essentially the only thing that\u0027s unconditional in this method :rofl:\n\nBut it seems likely correct to me!  I mean when would NOT want to do a reclaim?  maybe... on some kind of \"not reported\" sort of event?  idk, I think even that has gotten us into trouble","commit_id":"36bd21488e2b1c2fce667412c05ca439c3a17cde"}],"test/unit/container/test_sharder.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"f9368bb2de1ff8ec7015d851b6bf186da8bf56ad","unresolved":false,"context_lines":[{"line_number":4626,"context_line":"        own_shard_range.deleted \u003d 1"},{"line_number":4627,"context_line":"        own_shard_range.timestamp \u003d Timestamp.now()"},{"line_number":4628,"context_line":"        broker.merge_shard_ranges([own_shard_range])"},{"line_number":4629,"context_line":"        shard_ranges.clear()  # root responds with no shard ranges"},{"line_number":4630,"context_line":"        assert_ok()"},{"line_number":4631,"context_line":"        self.assertTrue(broker.is_deleted())"},{"line_number":4632,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"bf51134e_6b324df4","line":4629,"updated":"2020-07-13 20:42:09.000000000","message":"Use\n\n del shard_ranges[:]\n\ninstead -- .clear() was only added in py33.","commit_id":"eab83c68b44368720e4a7c439cc3948e6a022cec"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"c9508715b0702b7098762c706c3a0115d7f2cbfb","unresolved":false,"context_lines":[{"line_number":4628,"context_line":"        broker.merge_shard_ranges([own_shard_range])"},{"line_number":4629,"context_line":"        del shard_ranges[:]  # root responds with no shard ranges"},{"line_number":4630,"context_line":"        assert_ok()"},{"line_number":4631,"context_line":"        self.assertTrue(broker.is_deleted())"},{"line_number":4632,"context_line":""},{"line_number":4633,"context_line":"    def test_find_and_enable_sharding_candidates(self):"},{"line_number":4634,"context_line":"        broker \u003d self._make_broker()"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f560f44_9a277313","line":4631,"updated":"2020-07-28 21:46:22.000000000","message":"Backing out the change under swift/ I see\n\nFAIL: test_audit_shard_container (test.unit.container.test_sharder.TestSharder)\n----------------------------------------------------------------------\nTraceback (most recent call last):\n  File \"/home/tburke/code/swift/test/unit/container/test_sharder.py\", line 4630, in test_audit_shard_container\n    assert_ok()\n  File \"/home/tburke/code/swift/test/unit/container/test_sharder.py\", line 4601, in assert_ok\n    self.assertFalse(sharder.logger.get_lines_for_level(\u0027warning\u0027))\nAssertionError: [\u0027Audit warnings for shard /tmp/tmp0zv031c0/sda/containers/0/f3b/b3fac948f9f029603d4248b5e2d39f3b/b3fac948f9f029603d4248b5e2d39f3b.db (.shards_a/shard_c): unable to get shard ranges from root\u0027] is not false\n\nCommenting that particular assertion out, too, this assertion pops:\n\nFAIL: test_audit_shard_container (test.unit.container.test_sharder.TestSharder)\n----------------------------------------------------------------------\nTraceback (most recent call last):\n  File \"/home/tburke/code/swift/test/unit/container/test_sharder.py\", line 4631, in test_audit_shard_container\n    self.assertTrue(broker.is_deleted())\nAssertionError: False is not true","commit_id":"36bd21488e2b1c2fce667412c05ca439c3a17cde"}]}
