)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"342f0efe360c1a6f411657b01ffd20f2f35a8680","unresolved":true,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Add probes for both fresh and already sharded root destinations. The"},{"line_number":15,"context_line":"latter retains its epoched database filename while its own shard range"},{"line_number":16,"context_line":"loses the epoch. Check that subsequent replication leaves the bad row"},{"line_number":17,"context_line":"in place and protects the remaining healthy root replica."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"These diagnostic tests reproduce the current failure without manually"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"58137766_bc0fd0d3","line":16,"updated":"2026-09-16 04:17:10.000000000","message":"\u003e the latter ... loses the epoch\n\nright, that\u0027s bad; we\u0027re breaking an already sharded root\n\n... but the former is bug to; we merge the trash into the fresh-unsharded-root and forever break replication b/c everyone refuses his epoch-less OSR!","commit_id":"89e0b0b0e67720eea2c3f18459b6332bb2471ec1"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"342f0efe360c1a6f411657b01ffd20f2f35a8680","unresolved":true,"context_lines":[{"line_number":17,"context_line":"in place and protects the remaining healthy root replica."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"These diagnostic tests reproduce the current failure without manually"},{"line_number":20,"context_line":"merging a bad own shard range. A fix and regression expectations remain"},{"line_number":21,"context_line":"follow-up work."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Change-Id: I9a1710145e6f637a95d0d1ab37f514ea0cd77050"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"7e6fea48_86c9d5f7","line":20,"updated":"2026-09-16 04:17:10.000000000","message":"the actually *are* \"manually merging a bad own shard range\" at least in the \"local fresh copy case\" - it just happens a side-effect of _get_shard_broker:\n\n1005823: do not persist routing metadata while moving misplaced objects | https://review.opendev.org/c/openstack/swift/+/1005823","commit_id":"89e0b0b0e67720eea2c3f18459b6332bb2471ec1"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"342f0efe360c1a6f411657b01ffd20f2f35a8680","unresolved":true,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"These diagnostic tests reproduce the current failure without manually"},{"line_number":20,"context_line":"merging a bad own shard range. A fix and regression expectations remain"},{"line_number":21,"context_line":"follow-up work."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Change-Id: I9a1710145e6f637a95d0d1ab37f514ea0cd77050"},{"line_number":24,"context_line":"Signed-off-by: Matthew Oliver \u003cmatt@oliver.net.au\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"46bad97a_4ffe7730","line":21,"updated":"2026-09-16 04:17:10.000000000","message":"ummm... no, no I don\u0027t think it\u0027s orthogonal/optional work - it\u0027s necessary to make this change correct and complete","commit_id":"89e0b0b0e67720eea2c3f18459b6332bb2471ec1"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"342f0efe360c1a6f411657b01ffd20f2f35a8680","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"c98d4d17_9e2b2c8e","updated":"2026-09-16 04:17:10.000000000","message":"I didn\u0027t mean to overwrite https://review.opendev.org/c/openstack/swift/+/1005184/2\n\n... but I hope that at least the \"fix\" in https://review.opendev.org/c/openstack/swift/+/1005184/3 will seem \"good enough\" to fix both of the bugs in these probe test scenarios\n\nI\u0027d be happy to see Matt push over (his own changes, mea culpa) with something he likes better; OR if we start get get behind the fix and new tests in 1005184: prevent root osr epoch loss during object moves | https://review.opendev.org/c/openstack/swift/+/1005184 I think it could merge stand-alone\n\nI think this probe test was a helpful starting point that has how now outlived it\u0027s usefuless as a means to transfer understanding between maintainers ... all we need now is a single change with tests that fail after you revert the fix!","commit_id":"89e0b0b0e67720eea2c3f18459b6332bb2471ec1"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"5f3495a0b5ca1e15ff070c58ac1742f7dde687ee","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"9f8dd5bb_e30e5b57","updated":"2026-09-10 10:18:08.000000000","message":"Not sure it\u0027s the exact cause of the OSR issue, but one that our good friend codex found.","commit_id":"89e0b0b0e67720eea2c3f18459b6332bb2471ec1"}],"test/probe/test_sharder.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"342f0efe360c1a6f411657b01ffd20f2f35a8680","unresolved":true,"context_lines":[{"line_number":4401,"context_line":"            additional_args\u003d\u0027--partitions\u003d%s\u0027 % self.brain.part)"},{"line_number":4402,"context_line":"        target_broker \u003d self.get_broker(self.brain.part, target_node)"},{"line_number":4403,"context_line":"        self.assertIsNone("},{"line_number":4404,"context_line":"            target_broker.get_own_shard_range(no_default\u003dTrue).epoch)"},{"line_number":4405,"context_line":"        healthy_broker \u003d self.get_broker(self.brain.part, healthy_node)"},{"line_number":4406,"context_line":"        self.assertEqual(healthy_epoch,"},{"line_number":4407,"context_line":"                         healthy_broker.get_own_shard_range().epoch)"}],"source_content_type":"text/x-python","patch_set":1,"id":"22fb60ef_9fb6d8e1","line":4404,"updated":"2026-09-16 04:17:10.000000000","message":"IMHO this should be XXX and should not merge - this isn\u0027t \"questionable behavior\" - it\u0027s THE bug and this \"diagnostic probe test\" is no longer necessary once we have clear eyes on it; it would serve only to sit here until someone writes:\n\n```\ndiff --git a/swift/container/backend.py b/swift/container/backend.py\nindex b87e9c55e..40cd86574 100644\n--- a/swift/container/backend.py\n+++ b/swift/container/backend.py\n@@ -2065,7 +2065,7 @@ class ContainerBroker(DatabaseBroker):\n             own_shard_range \u003d None\n         else:\n             own_shard_range \u003d ShardRange(\n-                self.path, NormalTimestamp.now(),\n+                self.path, Timestamp.zero(),\n                 ShardRange.MIN, ShardRange.MAX,\n                 state\u003dShardRange.ACTIVE)\n         return own_shard_range\n```\n\n... and then updates the tests to assert the behavior we *actually* want:\n\n1005184: prevent root osr epoch loss during object moves | https://review.opendev.org/c/openstack/swift/+/1005184","commit_id":"89e0b0b0e67720eea2c3f18459b6332bb2471ec1"}]}
