)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"c3ed5919f568fa5814938a284f0f4e11699449ab","unresolved":true,"context_lines":[{"line_number":14,"context_line":"When that happened in SLO while reading a manifest, previously we\u0027d just"},{"line_number":15,"context_line":"assume the manifest is empty and send back an empty response. This would"},{"line_number":16,"context_line":"cause confusion for users (who\u0027d think we lost data or soemthing) and"},{"line_number":17,"context_line":"was clearly wrong."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Now, return a 500 to the client. Retrying is perfectly reasonable."},{"line_number":20,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"2cc99be3_0ad77516","line":17,"updated":"2023-07-10 19:27:26.000000000","message":"sounds like we want an lp bug this","commit_id":"6e5b5a659aca10789a53816a775a566719707478"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"028d95f2835c67f5b572315103c85fe26b8b9a84","unresolved":true,"context_lines":[{"line_number":14,"context_line":"When that happened in SLO while reading a manifest, previously we\u0027d just"},{"line_number":15,"context_line":"assume the manifest is empty and send back an empty response. This would"},{"line_number":16,"context_line":"cause confusion for users (who\u0027d think we lost data or soemthing) and"},{"line_number":17,"context_line":"was clearly wrong."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Now, return a 500 to the client. Retrying is perfectly reasonable."},{"line_number":20,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"f446ad0b_4f20cd2a","line":17,"in_reply_to":"2cc99be3_0ad77516","updated":"2023-07-11 00:20:22.000000000","message":"Almost certainly.","commit_id":"6e5b5a659aca10789a53816a775a566719707478"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"b57abb96828788978d7b3ff798b46f520d5c29b3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"96ffeaa7_779f5192","updated":"2023-06-28 20:30:23.000000000","message":"This is intentionally a bit of a straw-man:\n\n- This isn\u0027t the _only_ way we might get back non-json data -- you can get into some bad situations if you upload the manifest with encryption enabled then remove encryption from the pipeline or something. 500 isn\u0027t _necessarily_ the best option; 409 might be more consistent with other manifest troubles (such as when a segment no longer exists).\n\n- This helps SLO, but the better place to raise the 500 (or maybe 503?) is likely in swob\u0027s `_resp_body_property` or something, so **everybody** can benefit. Though we\u0027d need to rework SLO a bit to actually be able to use `Response.body`.","commit_id":"6e5b5a659aca10789a53816a775a566719707478"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"c3ed5919f568fa5814938a284f0f4e11699449ab","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"d1120407_d8ff55e4","updated":"2023-07-10 19:27:26.000000000","message":"how\u0027d you notice this?","commit_id":"6e5b5a659aca10789a53816a775a566719707478"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"050b22e4b051faba2a98d250c33bda1faac7f307","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"eee8709c_70eca9ad","updated":"2023-08-31 16:54:26.000000000","message":"oh good, i\u0027ll rebase on this!","commit_id":"6e5b5a659aca10789a53816a775a566719707478"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"8f177d4cdf223c3efbe6432cbf977294f40be602","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"48610a4c_a1ee45f0","updated":"2023-09-05 15:11:53.000000000","message":"recheck\n\nTempest failure around expiring objects -- definitely worth investigating, but not related to this patch.\n\n```\ntempest.api.object_storage.test_object_expiry.ObjectExpiryTest.test_get_object_at_expiry_time[id-e592f18d-679c-48fe-9e36-4be5f47102c5]\n--------------------------------------------------------------------------------------------------------------------------------------\n\nCaptured traceback:\n~~~~~~~~~~~~~~~~~~~\n    Traceback (most recent call last):\n\n      File \"/opt/stack/tempest/tempest/api/object_storage/test_object_expiry.py\", line 98, in test_get_object_at_expiry_time\n    self._test_object_expiry(metadata)\n\n      File \"/opt/stack/tempest/tempest/api/object_storage/test_object_expiry.py\", line 51, in _test_object_expiry\n    self.object_client.list_object_metadata(self.container_name,\n\n      File \"/opt/stack/tempest/tempest/lib/services/object_storage/object_client.py\", line 80, in list_object_metadata\n    resp, body \u003d self.head(url, headers\u003dheaders)\n\n      File \"/opt/stack/tempest/tempest/lib/common/rest_client.py\", line 387, in head\n    return self.request(\u0027HEAD\u0027, url, extra_headers, headers)\n\n      File \"/opt/stack/tempest/tempest/lib/common/rest_client.py\", line 742, in request\n    self._error_checker(resp, resp_body)\n\n      File \"/opt/stack/tempest/tempest/lib/common/rest_client.py\", line 852, in _error_checker\n    raise exceptions.NotFound(resp_body, resp\u003dresp)\n\n    tempest.lib.exceptions.NotFound: Object not found\nDetails: b\u0027\u0027\n```","commit_id":"6e5b5a659aca10789a53816a775a566719707478"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"54b14d7519128a818e69bcd7867840fa6b568b06","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"2897539b_1b0e2663","updated":"2023-09-05 22:58:55.000000000","message":"recheck\n```\nCoverage report was not found even though tests succeeded\n```","commit_id":"6e5b5a659aca10789a53816a775a566719707478"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"028d95f2835c67f5b572315103c85fe26b8b9a84","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"e6e7580c_8fc43e9f","in_reply_to":"d1120407_d8ff55e4","updated":"2023-07-11 00:20:22.000000000","message":"The ignore-range / ec-decode bug! I was looking at what would happen for replicated policies -- server would try to send too many bytes out the app iter, logging would truncate to the appropriate length, slo would hit an error decoding -- so the client gets a 200 with an empty body :P","commit_id":"6e5b5a659aca10789a53816a775a566719707478"}],"test/unit/common/middleware/test_slo.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"c3ed5919f568fa5814938a284f0f4e11699449ab","unresolved":true,"context_lines":[{"line_number":3306,"context_line":"        self.assertEqual(status, \u0027200 OK\u0027)"},{"line_number":3307,"context_line":"        self.assertEqual(headers[\u0027Content-Length\u0027], \u00270\u0027)"},{"line_number":3308,"context_line":"        self.assertEqual(headers[\u0027X-Object-Meta-Fish\u0027], \u0027Bass\u0027)"},{"line_number":3309,"context_line":"        self.assertEqual(body, b\u0027\u0027)"},{"line_number":3310,"context_line":""},{"line_number":3311,"context_line":"    def _do_test_generator_closure(self, leaks):"},{"line_number":3312,"context_line":"        # Test that the SLO WSGI iterable closes its internal .app_iter when"}],"source_content_type":"text/x-python","patch_set":1,"id":"02754a45_c7f3f00f","side":"PARENT","line":3309,"updated":"2023-07-10 19:27:26.000000000","message":"oh wow, so we used to even codify that we thought this behavior seemed reasonbale?\n\nIs there a use-case here for whent he manifest get\u0027s overwritten by a regular object while SLO is handling it?","commit_id":"39127fee5be6eb7733938d31e82bb6553ea9cbeb"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"028d95f2835c67f5b572315103c85fe26b8b9a84","unresolved":true,"context_lines":[{"line_number":3306,"context_line":"        self.assertEqual(status, \u0027200 OK\u0027)"},{"line_number":3307,"context_line":"        self.assertEqual(headers[\u0027Content-Length\u0027], \u00270\u0027)"},{"line_number":3308,"context_line":"        self.assertEqual(headers[\u0027X-Object-Meta-Fish\u0027], \u0027Bass\u0027)"},{"line_number":3309,"context_line":"        self.assertEqual(body, b\u0027\u0027)"},{"line_number":3310,"context_line":""},{"line_number":3311,"context_line":"    def _do_test_generator_closure(self, leaks):"},{"line_number":3312,"context_line":"        # Test that the SLO WSGI iterable closes its internal .app_iter when"}],"source_content_type":"text/x-python","patch_set":1,"id":"803fe690_adb34fe0","side":"PARENT","line":3309,"in_reply_to":"02754a45_c7f3f00f","updated":"2023-07-11 00:20:22.000000000","message":"Don\u0027t think so -- see also: https://github.com/openstack/swift/commit/ef5a37c2 / https://bugs.launchpad.net/swift/+bug/1837270","commit_id":"39127fee5be6eb7733938d31e82bb6553ea9cbeb"}]}
