)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"8ed65fe2a2835a780e24e4fc0a8fa7afee6a4b8d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"e117b699_34c662d2","updated":"2025-12-05 15:19:10.000000000","message":"most of this is great, but I don\u0027t think we want to change some of the assertions to use .normal. At least not yet.","commit_id":"0c6fa76a1afb08ccd93332867256b0a1669765e9"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"5732d5b4482f11f4c35fb18fb5881e6f82f5b405","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"47296484_8a5d5f7d","updated":"2025-12-05 16:45:21.000000000","message":"@Matt I backed out a few changes to .normal. We may well have to fix those assertions when v2 comes but I think that should wait until we\u0027re in v2 so we see the impact, rather than mask it ahead of time.\n\nIf you and zuul are happy then go ahead and merge","commit_id":"b76c733be8fbe7bbc2da586de960442626167763"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"c30ff13bd50d6561e6824cac1f5b286e0aa67f7e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"ab6d3db0_285bf762","updated":"2025-12-11 23:26:32.000000000","message":"Thanks Al, looks great","commit_id":"b76c733be8fbe7bbc2da586de960442626167763"}],"test/unit/container/test_reconciler.py":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"8ed65fe2a2835a780e24e4fc0a8fa7afee6a4b8d","unresolved":true,"context_lines":[{"line_number":220,"context_line":"        self.assertEqual(got[\u0027container\u0027], \u0027con\u0027)"},{"line_number":221,"context_line":"        self.assertEqual(got[\u0027obj\u0027], \u0027obj\u0027)"},{"line_number":222,"context_line":"        self.assertEqual(got[\u0027q_ts\u0027], ts[0])"},{"line_number":223,"context_line":"        self.assertEqual(got[\u0027q_record\u0027].normal, ts[1].normal)"},{"line_number":224,"context_line":"        self.assertEqual(got[\u0027q_op\u0027], \u0027DELETE\u0027)"},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"        ts \u003d [next(self.ts_iter) for _ in range(4)]"}],"source_content_type":"text/x-python","patch_set":1,"id":"40ac9f1e_cff5abfd","line":223,"updated":"2025-12-05 15:19:10.000000000","message":"I don\u0027t think we should be losing accuracy in the assertions YET before v2 timestamps. At this point the assertion on master should still be true. With v2 timestamps the q_record will be ts[1] without jitter. We\u0027ll have to fix the tests when the v2 timestamps come.","commit_id":"0c6fa76a1afb08ccd93332867256b0a1669765e9"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"8ed65fe2a2835a780e24e4fc0a8fa7afee6a4b8d","unresolved":true,"context_lines":[{"line_number":599,"context_line":""},{"line_number":600,"context_line":"        resp_headers \u003d [resp.headers for resp in responses]"},{"line_number":601,"context_line":"        # replica 0 should be authoritative because it received all requests"},{"line_number":602,"context_line":"        self.assertEqual(ts[3].normal, resp_headers[0][\u0027X-Put-Timestamp\u0027])"},{"line_number":603,"context_line":"        self.assertEqual(\u00271\u0027,"},{"line_number":604,"context_line":"                         resp_headers[0][\u0027X-Backend-Storage-Policy-Index\u0027])"},{"line_number":605,"context_line":"        self.assertEqual(ts[3].normal, resp_headers[1][\u0027X-Put-Timestamp\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"7b7108e1_a23f73e1","line":602,"updated":"2025-12-05 15:19:10.000000000","message":"+1 these .normals are correct - the container server returns .normal for x-put-timestamp, the .internal assertion on master is wrong.","commit_id":"0c6fa76a1afb08ccd93332867256b0a1669765e9"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"8ed65fe2a2835a780e24e4fc0a8fa7afee6a4b8d","unresolved":true,"context_lines":[{"line_number":1081,"context_line":"        self._mock_listing({"},{"line_number":1082,"context_line":"            (None, \"/.misplaced_objects/3600/00000bogus\"): ts[0],"},{"line_number":1083,"context_line":"            (None, \"/.misplaced_objects/3600/1:/AUTH_bob/c/o1\"): ts[1],"},{"line_number":1084,"context_line":"            (1, \"/AUTH_bob/c/o1\"): ts[1],"},{"line_number":1085,"context_line":"        })"},{"line_number":1086,"context_line":"        self._mock_oldest_spi({\u0027c\u0027: 1})  # already in the right spot!"},{"line_number":1087,"context_line":"        deleted_container_entries \u003d self._run_once()"}],"source_content_type":"text/x-python","patch_set":1,"id":"23db859d_520b0b5b","line":1084,"updated":"2025-12-05 15:19:10.000000000","message":"+1 _mock_listing is happy to accept Timestamps rather than floats","commit_id":"0c6fa76a1afb08ccd93332867256b0a1669765e9"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"8ed65fe2a2835a780e24e4fc0a8fa7afee6a4b8d","unresolved":true,"context_lines":[{"line_number":1460,"context_line":"        ts1 \u003d next(self.ts_iter)"},{"line_number":1461,"context_line":"        ts2 \u003d Timestamp(ts1)"},{"line_number":1462,"context_line":"        # slightly newer"},{"line_number":1463,"context_line":"        ts2.raw +\u003d 1"},{"line_number":1464,"context_line":"        # setup the cluster"},{"line_number":1465,"context_line":"        self._mock_listing({"},{"line_number":1466,"context_line":"            (None, \"/.misplaced_objects/3600/1:/AUTH_bob/c/o1\"): ts1,"}],"source_content_type":"text/x-python","patch_set":1,"id":"7ed1ef33_228fee01","line":1463,"updated":"2025-12-05 15:19:10.000000000","message":"we can use ts2 \u003d Timestamp(ts1, delta\u003d1)","commit_id":"0c6fa76a1afb08ccd93332867256b0a1669765e9"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"8ed65fe2a2835a780e24e4fc0a8fa7afee6a4b8d","unresolved":true,"context_lines":[{"line_number":1665,"context_line":"        ts1 \u003d next(self.ts_iter)"},{"line_number":1666,"context_line":"        ts2 \u003d Timestamp(ts1)"},{"line_number":1667,"context_line":"        # slightly newer"},{"line_number":1668,"context_line":"        ts2.raw +\u003d 1"},{"line_number":1669,"context_line":"        # setup the cluster"},{"line_number":1670,"context_line":"        self._mock_listing({"},{"line_number":1671,"context_line":"            (None, \"/.misplaced_objects/3600/1:/AUTH_bob/c/o1\"): ts1,"}],"source_content_type":"text/x-python","patch_set":1,"id":"f733ee52_d41269d8","line":1668,"updated":"2025-12-05 15:19:10.000000000","message":"ditto, use delta in the constructor for ts2","commit_id":"0c6fa76a1afb08ccd93332867256b0a1669765e9"}]}
