)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"f532b0ebf17379bbc705d47496878bb402955495","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"ff511760_2b95babe","updated":"2024-08-23 17:18:33.000000000","message":"I wonder whether we ought to add some\n```\n# TODO: should this be a 503?\n```\naround some of the DELETE tests -- I\u0027m not at all convinced that the current behavior is appropriate/desirable.","commit_id":"92eebe24c6837ef36302c801547c2de2e2726b2a"}],"test/unit/proxy/controllers/test_obj.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"f532b0ebf17379bbc705d47496878bb402955495","unresolved":true,"context_lines":[{"line_number":592,"context_line":"    def test_DELETE_insufficient_found_plus_404_507(self):"},{"line_number":593,"context_line":"        # one less 204 than a quorum..."},{"line_number":594,"context_line":"        primary_success \u003d quorum_size(self.replicas()) - 1"},{"line_number":595,"context_line":"        primary_failure \u003d self.replicas() - primary_success - 1"},{"line_number":596,"context_line":"        primary_codes \u003d [204] * primary_success + [404] + \\"},{"line_number":597,"context_line":"                        [507] * primary_failure"},{"line_number":598,"context_line":"        handoff_codes \u003d [404] * primary_failure"}],"source_content_type":"text/x-python","patch_set":2,"id":"ece641d1_bb780405","line":595,"range":{"start_line":595,"start_character":26,"end_line":595,"end_character":41},"updated":"2024-08-23 17:18:33.000000000","message":"This is always at least 3, right, so there\u0027s always at least one each for 204, 507, and 404 from primaries? We get some funny not-entirely-obvious situations below there:\n```\n2 replicas -\u003e backend responses: [507, 404]\n1 replica  -\u003e backend responses: [404]\n```\nThough I *think* the test should still pass (i.e., we\u0027ll return 404) for those.","commit_id":"92eebe24c6837ef36302c801547c2de2e2726b2a"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"f532b0ebf17379bbc705d47496878bb402955495","unresolved":true,"context_lines":[{"line_number":607,"context_line":"        with mocked_http_conn(*(primary_codes + handoff_codes),"},{"line_number":608,"context_line":"                              headers\u003dheaders):"},{"line_number":609,"context_line":"            resp \u003d req.get_response(self.app)"},{"line_number":610,"context_line":"        # primary and handoff 404s form a quorum..."},{"line_number":611,"context_line":"        self.assertEqual(resp.status_int, 404,"},{"line_number":612,"context_line":"                         \u0027replicas \u003d %s\u0027 % self.replicas())"},{"line_number":613,"context_line":"        self.assertEqual(ts.internal, resp.headers.get(\u0027X-Backend-Timestamp\u0027))"}],"source_content_type":"text/x-python","patch_set":2,"id":"be6c34bc_dc60d880","line":610,"updated":"2024-08-23 17:18:33.000000000","message":"Technically, for even-numbered replica policies, the handoff 404s alone are enough to form a quorum.","commit_id":"92eebe24c6837ef36302c801547c2de2e2726b2a"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"f532b0ebf17379bbc705d47496878bb402955495","unresolved":true,"context_lines":[{"line_number":654,"context_line":"                              headers\u003dheaders):"},{"line_number":655,"context_line":"            resp \u003d req.get_response(self.app)"},{"line_number":656,"context_line":"        # overrides convert the 404 to a 204 so a quorum is formed..."},{"line_number":657,"context_line":"        self.assertEqual(resp.status_int, 204,"},{"line_number":658,"context_line":"                         \u0027replicas \u003d %s\u0027 % self.replicas())"},{"line_number":659,"context_line":""},{"line_number":660,"context_line":"    def test_DELETE_insufficient_found_plus_507_and_handoffs_fail(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"4feb1707_ddf887e6","line":657,"updated":"2024-08-23 17:18:33.000000000","message":"The more I stare at this, the stranger it seems -- if we\u0027re willing to change a primary 404 -\u003e 204 when the handoffs all 507, why not do it when the handoffs all 404? The handoffs are *expected* to 404...","commit_id":"92eebe24c6837ef36302c801547c2de2e2726b2a"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"f532b0ebf17379bbc705d47496878bb402955495","unresolved":true,"context_lines":[{"line_number":1452,"context_line":"        primary_codes \u003d [404] * primary_failure + [202] * primary_success"},{"line_number":1453,"context_line":"        with mocked_http_conn(*primary_codes):"},{"line_number":1454,"context_line":"            resp \u003d req.get_response(self.app)"},{"line_number":1455,"context_line":"        # TODO: should this be a 503?"},{"line_number":1456,"context_line":"        self.assertEqual(404, resp.status_int,"},{"line_number":1457,"context_line":"                         \u0027replicas \u003d %s\u0027 % self.replicas())"},{"line_number":1458,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"26e051c9_c451f477","line":1455,"updated":"2024-08-23 17:18:33.000000000","message":"Probably? Though it\u0027s not at all clear that a retry might succeed -- why aren\u0027t we touching handoffs??","commit_id":"92eebe24c6837ef36302c801547c2de2e2726b2a"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"f532b0ebf17379bbc705d47496878bb402955495","unresolved":true,"context_lines":[{"line_number":1464,"context_line":"        handoff_codes \u003d [404] * primary_failure"},{"line_number":1465,"context_line":"        with mocked_http_conn(*(primary_codes + handoff_codes)):"},{"line_number":1466,"context_line":"            resp \u003d req.get_response(self.app)"},{"line_number":1467,"context_line":"        # TODO: this should really be a 503"},{"line_number":1468,"context_line":"        self.assertEqual(404, resp.status_int,"},{"line_number":1469,"context_line":"                         \u0027replicas \u003d %s\u0027 % self.replicas())"},{"line_number":1470,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ac1f50c5_b52a40a1","line":1467,"updated":"2024-08-23 17:18:33.000000000","message":"Agree.","commit_id":"92eebe24c6837ef36302c801547c2de2e2726b2a"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"f532b0ebf17379bbc705d47496878bb402955495","unresolved":true,"context_lines":[{"line_number":1487,"context_line":"        handoff_codes \u003d [202] * handoff_success + [404] * handoff_not_found"},{"line_number":1488,"context_line":"        with mocked_http_conn(*(primary_codes + handoff_codes)):"},{"line_number":1489,"context_line":"            resp \u003d req.get_response(self.app)"},{"line_number":1490,"context_line":"        # TODO: this should really be a 503"},{"line_number":1491,"context_line":"        self.assertEqual(404, resp.status_int,"},{"line_number":1492,"context_line":"                         \u0027replicas \u003d %s\u0027 % self.replicas())"},{"line_number":1493,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"cb568147_b673f560","line":1490,"updated":"2024-08-23 17:18:33.000000000","message":"Yeah, that seems right, too.","commit_id":"92eebe24c6837ef36302c801547c2de2e2726b2a"}]}
