)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"d0e2dcc55a1513472b92f5500fb26249b521a937","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"f5a06872_fc81d1ff","updated":"2026-01-16 17:27:02.000000000","message":"I agree with Yan, this change is straight forward, the commit message explains the way and the tests will be sufficient to maintain the desirable behavior.  KUDOS to Matt.","commit_id":"df5131b8fb1baf52014ec15381e47ca9520dff35"}],"swift/container/backend.py":[{"author":{"_account_id":38368,"name":"Christian Ohanaja","display_name":"Christian Ohanaja","email":"cohanaja@nvidia.com","username":"cohanaja"},"change_message_id":"16642e14c34a61b3baa68481d9c6bba21ab4e5d0","unresolved":true,"context_lines":[{"line_number":2142,"context_line":"            return False"},{"line_number":2143,"context_line":""},{"line_number":2144,"context_line":"        info \u003d self.get_info()"},{"line_number":2145,"context_line":"        tmp_db_file \u003d os.path.join(self.db_dir, \"fresh%s.tmp\" % str(uuid4()))"},{"line_number":2146,"context_line":"        fresh_broker \u003d ContainerBroker(tmp_db_file, self.timeout, self.logger,"},{"line_number":2147,"context_line":"                                       self.account, self.container)"},{"line_number":2148,"context_line":"        fresh_broker.initialize(info[\u0027put_timestamp\u0027],"}],"source_content_type":"text/x-python","patch_set":1,"id":"f5dad5b9_af294fc3","line":2145,"range":{"start_line":2145,"start_character":0,"end_line":2145,"end_character":77},"updated":"2025-12-04 13:36:29.000000000","message":"I\u0027d maybe make this something like fresh%s.db.tmp, mostly so we can match our naming for pending dbs. Clean solution regardless though! I was leaning toward doing some really weird stuff with getting the parts of the path back when I was having a go at this.","commit_id":"6917357e0eaf111998ad2ca89ae0851c0081dee2"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"6bc47b9766f2f49b7b3a3a2c2518ab1bd4fc161b","unresolved":true,"context_lines":[{"line_number":2142,"context_line":"            return False"},{"line_number":2143,"context_line":""},{"line_number":2144,"context_line":"        info \u003d self.get_info()"},{"line_number":2145,"context_line":"        tmp_db_file \u003d os.path.join(self.db_dir, \"fresh%s.tmp\" % str(uuid4()))"},{"line_number":2146,"context_line":"        fresh_broker \u003d ContainerBroker(tmp_db_file, self.timeout, self.logger,"},{"line_number":2147,"context_line":"                                       self.account, self.container)"},{"line_number":2148,"context_line":"        fresh_broker.initialize(info[\u0027put_timestamp\u0027],"}],"source_content_type":"text/x-python","patch_set":1,"id":"e733139b_22aa0e5d","line":2145,"range":{"start_line":2145,"start_character":0,"end_line":2145,"end_character":77},"in_reply_to":"f5dad5b9_af294fc3","updated":"2025-12-05 04:54:16.000000000","message":"oh great idea Christian, I\u0027ll definitely do that!","commit_id":"6917357e0eaf111998ad2ca89ae0851c0081dee2"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"d0e2dcc55a1513472b92f5500fb26249b521a937","unresolved":true,"context_lines":[{"line_number":2144,"context_line":"        info \u003d self.get_info()"},{"line_number":2145,"context_line":"        # The tmp_dir is cleaned up by the replicators after reclaim_age, so if"},{"line_number":2146,"context_line":"        # we initially create the fresh DB there, we will already have cleanup"},{"line_number":2147,"context_line":"        # covered if there is an error."},{"line_number":2148,"context_line":"        tmp_dir \u003d os.path.join(self.get_device_path(), \u0027tmp\u0027)"},{"line_number":2149,"context_line":"        if not os.path.exists(tmp_dir):"},{"line_number":2150,"context_line":"            mkdirs(tmp_dir)"}],"source_content_type":"text/x-python","patch_set":2,"id":"e5681346_e9e73c4b","side":"PARENT","line":2147,"updated":"2026-01-16 17:27:02.000000000","message":"as described in the follow-on commit, this was reasonable - we already leak .tmp db cleanup and need to do better:\n\n966659: Recliam db_dir/*.tmp files | https://review.opendev.org/c/openstack/swift/+/966659\n\n... might have also been reasonale to do this patches in the reverse order, but as it stands the missing cleave-context-device-suffix is currently more annoying for us than leaked .tmp db files.","commit_id":"5f89d14ebb6e6fed3b2ef507f8084fe7f05fc951"}],"test/unit/container/test_sharder.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"d0e2dcc55a1513472b92f5500fb26249b521a937","unresolved":true,"context_lines":[{"line_number":1435,"context_line":"        self.assertTrue("},{"line_number":1436,"context_line":"            broker.get_brokers()[0].get_info()[\u0027id\u0027].endswith(\u0027sda\u0027))"},{"line_number":1437,"context_line":"        self.assertTrue("},{"line_number":1438,"context_line":"            broker.get_brokers()[1].get_info()[\u0027id\u0027].endswith(\u0027sda\u0027))"},{"line_number":1439,"context_line":""},{"line_number":1440,"context_line":"    def _check_cleave_root(self, conf\u003dNone):"},{"line_number":1441,"context_line":"        broker \u003d self._make_broker()"}],"source_content_type":"text/x-python","patch_set":2,"id":"37edab50_f9bb6b44","line":1438,"updated":"2026-01-16 17:27:02.000000000","message":"yeah, the old code was *crazy*\n\n```\n(Pdb) broker.get_brokers()[1].get_info()[\u0027id\u0027].endswith(\u0027sda\u0027)\nFalse\n(Pdb) broker.get_brokers()[1].get_info()[\u0027id\u0027]\n\u0027355f573c-069d-44d9-8c6a-d75533346a80-mnt\u0027\n```\n\nand it only gets worse once it\u0027s sharded:\n\n```\n(Pdb) broker.set_sharded_state()\nsharder-test DEBUG: Unlinked retiring db \u0027/mnt/tmp/tmpp2hnfvam/sda/containers/0/f33/4a8a08f09d37b73795649038408b5f33/4a8a08f09d37b73795649038408b5f33.db\u0027\nTrue\n(Pdb) CleavingContext.load(broker)\nCleavingContext(ref\u003d\u0027355f573c-069d-44d9-8c6a-d75533346a80-mnt\u0027, cursor\u003d\u0027\u0027, max_row\u003d30, cleave_to_row\u003dNone, last_cleave_to_row\u003dNone, cleaving_done\u003dFalse, misplaced_done\u003dFalse, ranges_done\u003d0, ranges_todo\u003d0)\n```","commit_id":"df5131b8fb1baf52014ec15381e47ca9520dff35"}]}
