)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"77d5570f639810623a9b14c131a083983a03d123","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"31bf656d_4ca5beef","updated":"2025-08-22 15:56:15.000000000","message":"Clean cherry-pick; should fully resolve a situation spotted by packagers.","commit_id":"af70825648acf307f7445204797dba08907f3243"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"15aad858787671e062eef63ec905d9f27f5d1e58","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"01a88292_a6c9ce5a","updated":"2025-08-22 18:10:35.000000000","message":"recheck\n\n```\ntest/probe/test_reconstructor_rebuild.py::TestReconstructorRebuildUTF8::test_sync_expired_object FAILED [100%]\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d FAILURES \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n____________ TestReconstructorRebuildUTF8.test_sync_expired_object _____________\n\nself \u003d \u003ctest.probe.test_reconstructor_rebuild.TestReconstructorRebuildUTF8 testMethod\u003dtest_sync_expired_object\u003e\n\n    def test_sync_expired_object(self):\n        # verify that missing frag can be rebuilt for an expired object\n        delete_after \u003d 2\n        self.proxy_put(extra_headers\u003d{\u0027x-delete-after\u0027: delete_after})\n        self.proxy_get()  # sanity check\n        orig_frag_headers, orig_frag_etags \u003d self._assert_all_nodes_have_frag(\n            extra_headers\u003d{\u0027X-Backend-Replication\u0027: \u0027True\u0027})\n    \n        # wait for object to expire\n        timeout \u003d time.time() + delete_after + 1\n        while time.time() \u003c timeout:\n            try:\n\u003e               self.proxy_get()\n\n...\n        if resp:\n            msg \u003d \u0027Unexpected response: %s\u0027 % resp.status\n            if resp.status_int // 100 !\u003d 2 and resp.body:\n                # provide additional context (and drain the response body) for\n                # non 2XX responses\n                msg +\u003d \u0027 (%s)\u0027 % resp.body\n\u003e           raise UnexpectedResponse(msg, resp)\nE           swift.common.internal_client.UnexpectedResponse: Unexpected response: 503 Service Unavailable (b\u0027\u003chtml\u003e\u003ch1\u003eService Unavailable\u003c/h1\u003e\u003cp\u003eThe server is currently unavailable. Please try again at a later time.\u003c/p\u003e\u003c/html\u003e\u0027)\n```","commit_id":"af70825648acf307f7445204797dba08907f3243"}]}
