)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"2b3fb8b83e4149877b00ae2228d0176eb67b4f85","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"a162dbd6_1561de01","updated":"2022-09-06 16:44:28.000000000","message":"I think this is some nice progress, need to get that test failing correctly and start thinking about a possible fix (do you know what module the fix is going to be in?  near the traceback?)","commit_id":"ed1c543431c7c498c2cdb6a5ff3e80706788a1b4"},{"author":{"_account_id":34892,"name":"ASHWIN A NAIR","display_name":"indianwhocodes","email":"nairashwin952013@gmail.com","username":"indianwhocodes","status":"Nvidia"},"change_message_id":"5ade9e16159d38a12902da98fe83341e35dc5d6a","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":3,"id":"186ec104_7fd3a9eb","in_reply_to":"a162dbd6_1561de01","updated":"2023-08-17 16:16:20.000000000","message":"Not really.. It seems from the initial investigation I made that the trouble seems to be related to the container info at (https://github.com/openstack/swift/blob/2.30.0/swift/proxy/server.py#L455) having the old policy info (and so routing us to the EC controller), but then the next time we look for it at (https://github.com/openstack/swift/blob/2.30.0/swift/proxy/controllers/obj.py#L238-L239), it\u0027s got the default policy (and a status of 0 instead of 404!?)","commit_id":"ed1c543431c7c498c2cdb6a5ff3e80706788a1b4"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"6e2ce9a6754c1aaae7486f101bba256e1f42d5d9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"37e3d263_cc64d94d","updated":"2022-09-09 11:29:17.000000000","message":"some of the pep8 failures seem to be for lines that are unrelated to the change. There\u0027s also some whitespace only diffs that seem unrelated. Is it possible that your IDE is auto-formatting? ","commit_id":"e0db03431fc4c9875c7f4038de78473a48b7266d"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"9c70780aba64f3c47f80aedc59b2a16d38a4df1c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"cde4e012_e9bd8ae3","updated":"2022-09-12 08:29:31.000000000","message":"LGTM\n\nThe root cause of the bug, IIUC, is that when the proxy selects a controller class to handle an object request it uses the result of swift.proxy.controllers.base.get_container_info() which does have the correct storage policy index even when the container status is 404. However, when the chosen controller handles the object request it selects the policy (again!) using swift.proxy.controllers.base.Controller.container_info() which was scrubbing the policy index for status 404.\n\n(Aside: This could probably have been avoided altogether by instantiating ObjectController instances with the policy for which they were selected (AFAICT we use an instance per request), rather than digging out the policy index multiple times and passing it around the call hierarchy.)","commit_id":"9bdb77a388f7540978e909a1f69e33bb6f2bb3ca"}],"swift/proxy/controllers/base.py":[{"author":{"_account_id":34892,"name":"ASHWIN A NAIR","display_name":"indianwhocodes","email":"nairashwin952013@gmail.com","username":"indianwhocodes","status":"Nvidia"},"change_message_id":"5ade9e16159d38a12902da98fe83341e35dc5d6a","unresolved":false,"context_lines":[{"line_number":1103,"context_line":"            new_ranges \u003d [(start, end)]"},{"line_number":1104,"context_line":""},{"line_number":1105,"context_line":"        self.backend_headers[\u0027Range\u0027] \u003d ("},{"line_number":1106,"context_line":"                \"bytes\u003d\" + (\",\".join(\"%s-%s\" % (s if s is not None else \u0027\u0027,"},{"line_number":1107,"context_line":"                                                e if e is not None else \u0027\u0027)"},{"line_number":1108,"context_line":"                                     for s, e in new_ranges)))"},{"line_number":1109,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"827e5ff0_cb58ce0d","line":1106,"in_reply_to":"d121f337_45f32679","updated":"2023-08-17 16:16:20.000000000","message":"\u003e pep8: E126 continuation line over-indented for hanging indent\n\nPlease fix.","commit_id":"592093a21acc0c2b3ad85bab13ef73f02fbd1362"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"9f7ccea25e5333bf038f4f24e2cfeb64efb77e63","unresolved":true,"context_lines":[{"line_number":1843,"context_line":"        if not info or not is_success(info.get(\u0027status\u0027)):"},{"line_number":1844,"context_line":"            headers \u003d {\u0027x-backend-storage-policy-index\u0027:"},{"line_number":1845,"context_line":"                           info.get(\u0027storage_policy\u0027, \u00270\u0027)}"},{"line_number":1846,"context_line":"            info \u003d headers_to_container_info(headers, 0)"},{"line_number":1847,"context_line":"            info[\u0027partition\u0027] \u003d None"},{"line_number":1848,"context_line":"            info[\u0027nodes\u0027] \u003d None"},{"line_number":1849,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":6,"id":"fba3eff2_b5bad890","line":1846,"updated":"2022-09-08 18:15:10.000000000","message":"I\u0027m tempted to just say something like\n\n if not is_success(info[\u0027status\u0027]):\n     info[\u0027partition\u0027] \u003d None\n     info[\u0027nodes\u0027] \u003d None\n else:\n     ...\n\nWDYT?","commit_id":"592093a21acc0c2b3ad85bab13ef73f02fbd1362"},{"author":{"_account_id":34892,"name":"ASHWIN A NAIR","display_name":"indianwhocodes","email":"nairashwin952013@gmail.com","username":"indianwhocodes","status":"Nvidia"},"change_message_id":"5ade9e16159d38a12902da98fe83341e35dc5d6a","unresolved":false,"context_lines":[{"line_number":1897,"context_line":"                    if not is_informational(resp.status) and \\"},{"line_number":1898,"context_line":"                            not is_server_error(resp.status):"},{"line_number":1899,"context_line":"                        return resp.status, resp.reason, resp.getheaders(), \\"},{"line_number":1900,"context_line":"                               resp.read()"},{"line_number":1901,"context_line":"                    elif resp.status \u003d\u003d HTTP_INSUFFICIENT_STORAGE:"},{"line_number":1902,"context_line":"                        self.app.error_limit(node,"},{"line_number":1903,"context_line":"                                             \u0027ERROR Insufficient Storage\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"37a0d84d_50b8fe26","line":1900,"in_reply_to":"d2e559ea_4b3f2681","updated":"2023-08-17 16:16:20.000000000","message":"\u003e pep8: E126 continuation line over-indented for hanging indent\n\nPlease fix.","commit_id":"592093a21acc0c2b3ad85bab13ef73f02fbd1362"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"1bd1ed49cc224dc73bddb16d6fc47e2a64374c52","unresolved":true,"context_lines":[{"line_number":1825,"context_line":"        :param account: native-str account name for the container"},{"line_number":1826,"context_line":"        :param container: native-str container name to look up"},{"line_number":1827,"context_line":"        :param req: caller\u0027s HTTP request context object"},{"line_number":1828,"context_line":"        :returns: dict containing at least container partition (\u0027partition\u0027),"},{"line_number":1829,"context_line":"                  container nodes (\u0027containers\u0027), container read"},{"line_number":1830,"context_line":"                  acl (\u0027read_acl\u0027), container write acl (\u0027write_acl\u0027),"},{"line_number":1831,"context_line":"                  and container sync key (\u0027sync_key\u0027)."},{"line_number":1832,"context_line":"                  Values are set to None if the container does not exist."},{"line_number":1833,"context_line":"        \"\"\""},{"line_number":1834,"context_line":"        if req:"},{"line_number":1835,"context_line":"            env \u003d getattr(req, \u0027environ\u0027, {})"}],"source_content_type":"text/x-python","patch_set":13,"id":"bc1d6a34_0bb3ee6c","line":1832,"range":{"start_line":1828,"start_character":18,"end_line":1832,"end_character":73},"updated":"2022-09-12 07:30:47.000000000","message":"this docstring needs updating - IIUC the only items guaranteed to be in the dict are nodes and partition","commit_id":"9bdb77a388f7540978e909a1f69e33bb6f2bb3ca"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"9c70780aba64f3c47f80aedc59b2a16d38a4df1c","unresolved":true,"context_lines":[{"line_number":1825,"context_line":"        :param account: native-str account name for the container"},{"line_number":1826,"context_line":"        :param container: native-str container name to look up"},{"line_number":1827,"context_line":"        :param req: caller\u0027s HTTP request context object"},{"line_number":1828,"context_line":"        :returns: dict containing at least container partition (\u0027partition\u0027),"},{"line_number":1829,"context_line":"                  container nodes (\u0027containers\u0027), container read"},{"line_number":1830,"context_line":"                  acl (\u0027read_acl\u0027), container write acl (\u0027write_acl\u0027),"},{"line_number":1831,"context_line":"                  and container sync key (\u0027sync_key\u0027)."},{"line_number":1832,"context_line":"                  Values are set to None if the container does not exist."},{"line_number":1833,"context_line":"        \"\"\""},{"line_number":1834,"context_line":"        if req:"},{"line_number":1835,"context_line":"            env \u003d getattr(req, \u0027environ\u0027, {})"}],"source_content_type":"text/x-python","patch_set":13,"id":"46a333c9_e45d3703","line":1832,"range":{"start_line":1828,"start_character":18,"end_line":1832,"end_character":73},"in_reply_to":"bc1d6a34_0bb3ee6c","updated":"2022-09-12 08:29:31.000000000","message":"actually, I think I was wrong. get_container_info always returns a populated dict https://github.com/openstack/swift/blob/9bed525bfbe3ec05cb45c9835333fe45f8e04b40/swift/proxy/controllers/base.py#L481-L482","commit_id":"9bdb77a388f7540978e909a1f69e33bb6f2bb3ca"}],"test/unit/proxy/controllers/test_base.py":[{"author":{"_account_id":34892,"name":"ASHWIN A NAIR","display_name":"indianwhocodes","email":"nairashwin952013@gmail.com","username":"indianwhocodes","status":"Nvidia"},"change_message_id":"5ade9e16159d38a12902da98fe83341e35dc5d6a","unresolved":true,"context_lines":[{"line_number":830,"context_line":"            self.assertEqual(incomplete_expected,"},{"line_number":831,"context_line":"                             headers_from_container_info(incomplete_info))"},{"line_number":832,"context_line":""},{"line_number":833,"context_line":"    def test_container_info_preserves_storage_policy(self):"},{"line_number":834,"context_line":"        base \u003d Controller(self.app)"},{"line_number":835,"context_line":"        base.account_name \u003d \u0027a\u0027"},{"line_number":836,"context_line":"        base.container_name \u003d \u0027c\u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"2c403f38_820b7ad6","line":833,"updated":"2023-08-17 16:16:20.000000000","message":"This test fails with the following AssertionError:\n\nself \u003d \u003ctest.unit.proxy.controllers.test_base.TestFuncs testMethod\u003dtest_container_info_preserves_storage_policy\u003e\n\n    def test_container_info_preserves_storage_policy(self):\n        base \u003d Controller(self.app)\n        base.account_name \u003d \u0027a\u0027\n        base.container_name \u003d \u0027c\u0027\n        fake_info \u003d {\u0027status\u0027: 404, \u0027storage_policy\u0027: 1}\n\n        with mock.patch(\u0027swift.proxy.controllers.base.\u0027\n                        \u0027get_container_info\u0027, return_value\u003dfake_info):\n            container_info \u003d \\\n                base.container_info(base.account_name,\n                                    base.container_name, Request.blank(\u0027/\u0027))\n\u003e       self.assertEqual(container_info[\u0027status\u0027], 404)\nE       AssertionError: 0 !\u003d 404\n\ntest/unit/proxy/controllers/test_base.py:844: AssertionError\n---------------------------------------------------- Captured stdout call ----------------------------------------------------\ntest DEBUG: Loaded override config for (default): ProxyOverrideOptions({}, {\u0027sorting_method\u0027: \u0027shuffle\u0027, \u0027read_affinity\u0027: \u0027\u0027, \u0027write_affinity\u0027: \u0027\u0027, \u0027write_affinity_node_count\u0027: \u00272 * replicas\u0027, \u0027write_affinity_handoff_delete_count\u0027: None, \u0027rebalance_missing_suppression_count\u0027: 1, \u0027concurrent_gets\u0027: False, \u0027concurrency_timeout\u0027: 0.5, \u0027concurrent_ec_extra_requests\u0027: 0}, app)","commit_id":"7dc3d5d8081947bab5052ab5697321f9feafa995"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"9c70780aba64f3c47f80aedc59b2a16d38a4df1c","unresolved":true,"context_lines":[{"line_number":847,"context_line":"                base.container_info(base.account_name, base.container_name,"},{"line_number":848,"context_line":"                                    Request.blank(\u0027/\u0027))"},{"line_number":849,"context_line":"        self.assertEqual(container_info[\u0027status\u0027], 404)"},{"line_number":850,"context_line":"        self.assertEqual(container_info[\u0027storage_policy\u0027], 1)"},{"line_number":851,"context_line":"        self.assertEqual(container_info[\u0027partition\u0027], None)"},{"line_number":852,"context_line":"        self.assertEqual(container_info[\u0027nodes\u0027], None)"},{"line_number":853,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"c0cb0a9e_b6f65574","line":850,"updated":"2022-09-12 08:29:31.000000000","message":"check: fails when I revert the change","commit_id":"9bdb77a388f7540978e909a1f69e33bb6f2bb3ca"},{"author":{"_account_id":34892,"name":"ASHWIN A NAIR","display_name":"indianwhocodes","email":"nairashwin952013@gmail.com","username":"indianwhocodes","status":"Nvidia"},"change_message_id":"5ade9e16159d38a12902da98fe83341e35dc5d6a","unresolved":false,"context_lines":[{"line_number":847,"context_line":"                base.container_info(base.account_name, base.container_name,"},{"line_number":848,"context_line":"                                    Request.blank(\u0027/\u0027))"},{"line_number":849,"context_line":"        self.assertEqual(container_info[\u0027status\u0027], 404)"},{"line_number":850,"context_line":"        self.assertEqual(container_info[\u0027storage_policy\u0027], 1)"},{"line_number":851,"context_line":"        self.assertEqual(container_info[\u0027partition\u0027], None)"},{"line_number":852,"context_line":"        self.assertEqual(container_info[\u0027nodes\u0027], None)"},{"line_number":853,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"bd6bd9c4_02598672","line":850,"in_reply_to":"c0cb0a9e_b6f65574","updated":"2023-08-17 16:16:20.000000000","message":"Ack","commit_id":"9bdb77a388f7540978e909a1f69e33bb6f2bb3ca"}],"test/unit/proxy/test_server.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"2b3fb8b83e4149877b00ae2228d0176eb67b4f85","unresolved":true,"context_lines":[{"line_number":2275,"context_line":"        fd.flush()"},{"line_number":2276,"context_line":"        headers \u003d readuntil2crlfs(fd)"},{"line_number":2277,"context_line":"        exp \u003d b\u0027HTTP/1.1 2\u0027"},{"line_number":2278,"context_line":"        self.assertEqual(headers[:len(exp)], exp)"},{"line_number":2279,"context_line":""},{"line_number":2280,"context_line":"    def _test_conditional_GET(self, policy):"},{"line_number":2281,"context_line":"        container_name \u003d uuid.uuid4().hex"}],"source_content_type":"text/x-python","patch_set":3,"id":"58306826_308127fe","line":2278,"updated":"2022-09-06 16:44:28.000000000","message":"this function doesn\u0027t use self - it probably doesn\u0027t need to be a method","commit_id":"ed1c543431c7c498c2cdb6a5ff3e80706788a1b4"},{"author":{"_account_id":34892,"name":"ASHWIN A NAIR","display_name":"indianwhocodes","email":"nairashwin952013@gmail.com","username":"indianwhocodes","status":"Nvidia"},"change_message_id":"5ade9e16159d38a12902da98fe83341e35dc5d6a","unresolved":false,"context_lines":[{"line_number":2275,"context_line":"        fd.flush()"},{"line_number":2276,"context_line":"        headers \u003d readuntil2crlfs(fd)"},{"line_number":2277,"context_line":"        exp \u003d b\u0027HTTP/1.1 2\u0027"},{"line_number":2278,"context_line":"        self.assertEqual(headers[:len(exp)], exp)"},{"line_number":2279,"context_line":""},{"line_number":2280,"context_line":"    def _test_conditional_GET(self, policy):"},{"line_number":2281,"context_line":"        container_name \u003d uuid.uuid4().hex"}],"source_content_type":"text/x-python","patch_set":3,"id":"c84cf2a9_d77cdd45","line":2278,"in_reply_to":"58306826_308127fe","updated":"2023-08-17 16:16:20.000000000","message":"Ack","commit_id":"ed1c543431c7c498c2cdb6a5ff3e80706788a1b4"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"2b3fb8b83e4149877b00ae2228d0176eb67b4f85","unresolved":true,"context_lines":[{"line_number":7436,"context_line":"        prolis \u003d _test_sockets[0]"},{"line_number":7437,"context_line":"        prosrv \u003d _test_servers[0]"},{"line_number":7438,"context_line":""},{"line_number":7439,"context_line":"        self.post_container(self.ec_policy.name)"},{"line_number":7440,"context_line":""},{"line_number":7441,"context_line":"        # delete container"},{"line_number":7442,"context_line":"        sock \u003d connect_tcp((\u0027localhost\u0027, prolis.getsockname()[1]))"}],"source_content_type":"text/x-python","patch_set":3,"id":"c27d587b_30cf3803","line":7439,"updated":"2022-09-06 16:44:28.000000000","message":"you could pass in prolis so it\u0027s obvious this method is only useful for un-patched policies and global listen services","commit_id":"ed1c543431c7c498c2cdb6a5ff3e80706788a1b4"},{"author":{"_account_id":34892,"name":"ASHWIN A NAIR","display_name":"indianwhocodes","email":"nairashwin952013@gmail.com","username":"indianwhocodes","status":"Nvidia"},"change_message_id":"5ade9e16159d38a12902da98fe83341e35dc5d6a","unresolved":false,"context_lines":[{"line_number":7436,"context_line":"        prolis \u003d _test_sockets[0]"},{"line_number":7437,"context_line":"        prosrv \u003d _test_servers[0]"},{"line_number":7438,"context_line":""},{"line_number":7439,"context_line":"        self.post_container(self.ec_policy.name)"},{"line_number":7440,"context_line":""},{"line_number":7441,"context_line":"        # delete container"},{"line_number":7442,"context_line":"        sock \u003d connect_tcp((\u0027localhost\u0027, prolis.getsockname()[1]))"}],"source_content_type":"text/x-python","patch_set":3,"id":"f88f3b19_d0b4e735","line":7439,"in_reply_to":"c27d587b_30cf3803","updated":"2023-08-17 16:16:20.000000000","message":"Done","commit_id":"ed1c543431c7c498c2cdb6a5ff3e80706788a1b4"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"2b3fb8b83e4149877b00ae2228d0176eb67b4f85","unresolved":true,"context_lines":[{"line_number":7448,"context_line":"        fd.flush()"},{"line_number":7449,"context_line":"        headers \u003d readuntil2crlfs(fd)"},{"line_number":7450,"context_line":"        exp \u003d b\u0027HTTP/1.1 20\u0027"},{"line_number":7451,"context_line":"        self.assertEqual(headers[:len(exp)], exp)"},{"line_number":7452,"context_line":""},{"line_number":7453,"context_line":"        # download from deleted container"},{"line_number":7454,"context_line":"        sock \u003d connect_tcp((\u0027localhost\u0027, prolis.getsockname()[1]))"}],"source_content_type":"text/x-python","patch_set":3,"id":"cb65164e_a54d1c21","line":7451,"updated":"2022-09-06 16:44:28.000000000","message":"not sure why this is throwing out 409?  maybe it has an object?\n\n\tFAIL: test_GET_ec_deleted (test.unit.proxy.test_mem_server.TestECObjectController)\n\t----------------------------------------------------------------------\n\tTraceback (most recent call last):\n\t  File \"/home/zuul/src/opendev.org/openstack/swift/test/unit/proxy/test_server.py\", line 7451, in test_GET_ec_deleted\n\t    self.assertEqual(headers[:len(exp)], exp)\n\tAssertionError: b\u0027HTTP/1.1 40\u0027 !\u003d b\u0027HTTP/1.1 20\u0027\n\t-------------------- \u003e\u003e begin captured stdout \u003c\u003c ---------------------\n\tacct1 INFO: 127.0.0.1 - - [02/Sep/2022:16:24:08 +0000] \"HEAD /sda1/0/a\" 204 - \"HEAD http://localhost/v1/a?format\u003djson\" \"txd07ba7cee9fc4c58ab6a4-0063122e28\" \"proxy-server 9426\" 0.0031 \"-\" 9426 -\n\tcont1 INFO: 127.0.0.1 - - [02/Sep/2022:16:24:08 +0000] \"POST /sda1/1/a/ec\" 204 - \"POST http://localhost/v1/a/ec\" \"txd07ba7cee9fc4c58ab6a4-0063122e28\" \"proxy-server 9426\" 0.0060 \"-\" 9426 -\n\tcont2 INFO: 127.0.0.1 - - [02/Sep/2022:16:24:08 +0000] \"POST /sdb1/1/a/ec\" 204 - \"POST http://localhost/v1/a/ec\" \"txd07ba7cee9fc4c58ab6a4-0063122e28\" \"proxy-server 9426\" 0.0101 \"-\" 9426 -\n\tproxy INFO: 127.0.0.1 127.0.0.1 02/Sep/2022/16/24/08 POST /v1/a/ec HTTP/1.0 204 - - t - - - txd07ba7cee9fc4c58ab6a4-0063122e28 - 0.0356 - - 1662135848.263078213 1662135848.298695087 -\n\tacct2 INFO: 127.0.0.1 - - [02/Sep/2022:16:24:08 +0000] \"HEAD /sdb1/0/a\" 204 - \"HEAD http://localhost/v1/a?format\u003djson\" \"tx5ce83a0024c74be9a2ca5-0063122e28\" \"proxy-server 9426\" 0.0031 \"-\" 9426 -\n\tcont2 INFO: 127.0.0.1 - - [02/Sep/2022:16:24:08 +0000] \"DELETE /sdb1/1/a/ec\" 409 - \"DELETE http://localhost/v1/a/ec\" \"tx5ce83a0024c74be9a2ca5-0063122e28\" \"proxy-server 9426\" 0.0021 \"-\" 9426 -\n\tcont1 INFO: 127.0.0.1 - - [02/Sep/2022:16:24:08 +0000] \"DELETE /sda1/1/a/ec\" 409 - \"DELETE http://localhost/v1/a/ec\" \"tx5ce83a0024c74be9a2ca5-0063122e28\" \"proxy-server 9426\" 0.0022 \"-\" 9426 -\n\tproxy INFO: 127.0.0.1 127.0.0.1 02/Sep/2022/16/24/08 DELETE /v1/a/ec HTTP/1.0 409 - - - - 95 - tx5ce83a0024c74be9a2ca5-0063122e28 - 0.0240 - - 1662135848.301613808 1662135848.325602293 -","commit_id":"ed1c543431c7c498c2cdb6a5ff3e80706788a1b4"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"9c70780aba64f3c47f80aedc59b2a16d38a4df1c","unresolved":true,"context_lines":[{"line_number":7448,"context_line":"        fd.flush()"},{"line_number":7449,"context_line":"        headers \u003d readuntil2crlfs(fd)"},{"line_number":7450,"context_line":"        exp \u003d b\u0027HTTP/1.1 20\u0027"},{"line_number":7451,"context_line":"        self.assertEqual(headers[:len(exp)], exp)"},{"line_number":7452,"context_line":""},{"line_number":7453,"context_line":"        # download from deleted container"},{"line_number":7454,"context_line":"        sock \u003d connect_tcp((\u0027localhost\u0027, prolis.getsockname()[1]))"}],"source_content_type":"text/x-python","patch_set":3,"id":"b210396b_b7156052","line":7451,"in_reply_to":"cb65164e_a54d1c21","updated":"2022-09-12 08:29:31.000000000","message":"check: fails OMM when I revert the fix:\n\n /Users/acoles/.pyenv/versions/swift-3.9.11/bin/python /Applications/PyCharm.app/Contents/plugins/python/helpers/pycharm/_jb_nosetest_runner.py --target test_server.py::TestECObjectController.test_GET_ec_deleted\nTesting started at 09:17 ...\nLaunching Nosetest with arguments /Applications/PyCharm.app/Contents/plugins/python/helpers/pycharm/_jb_nosetest_runner.py test_server.py:TestECObjectController.test_GET_ec_deleted in /Users/acoles/0dev/openstack/swift/test/unit/proxy\n\nacct1 INFO: 127.0.0.1 - - [12/Sep/2022:08:17:03 +0000] \"HEAD /sda1/0/a\" 204 - \"HEAD http://localhost/v1/a?format\u003djson\" \"tx9618710dd9e7493d87d03-00631eeaff\" \"proxy-server 18894\" 0.0037 \"-\" 18894 -\nacct1 INFO: 127.0.0.1 - - [12/Sep/2022:08:17:03 +0000] \"PUT /sda1/0/a/ec_deleted\" 201 - \"PUT http://127.0.0.1:54180/sdb1/1/a/ec_deleted\" \"tx9618710dd9e7493d87d03-00631eeaff\" \"container-server 18894\" 0.0015 \"-\" 18894 3\ncont2 INFO: 127.0.0.1 - - [12/Sep/2022:08:17:03 +0000] \"PUT /sdb1/1/a/ec_deleted\" 201 - \"PUT http://localhost/v1/a/ec_deleted\" \"tx9618710dd9e7493d87d03-00631eeaff\" \"proxy-server 18894\" 0.0158 \"-\" 18894 3\nacct2 INFO: 127.0.0.1 - - [12/Sep/2022:08:17:03 +0000] \"PUT /sdb1/0/a/ec_deleted\" 201 - \"PUT http://127.0.0.1:54179/sda1/1/a/ec_deleted\" \"tx9618710dd9e7493d87d03-00631eeaff\" \"container-server 18894\" 0.0028 \"-\" 18894 3\ncont1 INFO: 127.0.0.1 - - [12/Sep/2022:08:17:03 +0000] \"PUT /sda1/1/a/ec_deleted\" 201 - \"PUT http://localhost/v1/a/ec_deleted\" \"tx9618710dd9e7493d87d03-00631eeaff\" \"proxy-server 18894\" 0.0142 \"-\" 18894 3\nproxy INFO: 127.0.0.1 127.0.0.1 12/Sep/2022/08/17/03 PUT /v1/a/ec_deleted HTTP/1.0 201 - - t - - - tx9618710dd9e7493d87d03-00631eeaff - 0.0301 - - 1662970623.123205900 1662970623.153314114 3\nacct2 INFO: 127.0.0.1 - - [12/Sep/2022:08:17:03 +0000] \"HEAD /sdb1/0/a\" 204 - \"HEAD http://localhost/v1/a?format\u003djson\" \"txae86bda6f01c4a4bb5960-00631eeaff\" \"proxy-server 18894\" 0.0033 \"-\" 18894 -\nacct1 INFO: 127.0.0.1 - - [12/Sep/2022:08:17:03 +0000] \"PUT /sda1/0/a/ec_deleted\" 204 - \"DELETE http://127.0.0.1:54179/sda1/1/a/ec_deleted\" \"txae86bda6f01c4a4bb5960-00631eeaff\" \"container-server 18894\" 0.0031 \"-\" 18894 3\ncont1 INFO: 127.0.0.1 - - [12/Sep/2022:08:17:03 +0000] \"DELETE /sda1/1/a/ec_deleted\" 204 - \"DELETE http://localhost/v1/a/ec_deleted\" \"txae86bda6f01c4a4bb5960-00631eeaff\" \"proxy-server 18894\" 0.0148 \"-\" 18894 -\nacct2 INFO: 127.0.0.1 - - [12/Sep/2022:08:17:03 +0000] \"PUT /sdb1/0/a/ec_deleted\" 204 - \"DELETE http://127.0.0.1:54180/sdb1/1/a/ec_deleted\" \"txae86bda6f01c4a4bb5960-00631eeaff\" \"container-server 18894\" 0.0015 \"-\" 18894 3\ncont2 INFO: 127.0.0.1 - - [12/Sep/2022:08:17:03 +0000] \"DELETE /sdb1/1/a/ec_deleted\" 204 - \"DELETE http://localhost/v1/a/ec_deleted\" \"txae86bda6f01c4a4bb5960-00631eeaff\" \"proxy-server 18894\" 0.0136 \"-\" 18894 -\nproxy INFO: 127.0.0.1 127.0.0.1 12/Sep/2022/08/17/03 DELETE /v1/a/ec_deleted HTTP/1.0 204 - - - - - - txae86bda6f01c4a4bb5960-00631eeaff - 0.0277 - - 1662970623.155086994 1662970623.182821035 -\nacct1 INFO: 127.0.0.1 - - [12/Sep/2022:08:17:03 +0000] \"HEAD /sda1/0/a\" 204 - \"HEAD http://localhost/v1/a?format\u003djson\" \"tx82edf5e9c7eb4983a9618-00631eeaff\" \"proxy-server 18894\" 0.0038 \"-\" 18894 -\ncont2 INFO: 127.0.0.1 - - [12/Sep/2022:08:17:03 +0000] \"HEAD /sdb1/1/a/ec_deleted\" 404 - \"HEAD http://localhost/v1/a/ec_deleted?format\u003djson\u0026states\u003dlisting\" \"tx73012ce9afaf444db04ff-00631eeaff\" \"proxy-server 18894\" 0.0013 \"-\" 18894 3\ncont1 INFO: 127.0.0.1 - - [12/Sep/2022:08:17:03 +0000] \"HEAD /sda1/1/a/ec_deleted\" 404 - \"HEAD http://localhost/v1/a/ec_deleted?format\u003djson\u0026states\u003dlisting\" \"tx73012ce9afaf444db04ff-00631eeaff\" \"proxy-server 18894\" 0.0013 \"-\" 18894 3\nproxy ERROR: ERROR Unhandled exception in request: \nTraceback (most recent call last):\n  File \"/Users/acoles/0dev/openstack/swift/swift/proxy/server.py\", line 598, in handle_request\n    return handler(req)\n  File \"/Users/acoles/0dev/openstack/swift/swift/proxy/controllers/base.py\", line 389, in wrapped\n    return func(*a, **kw)\n  File \"/Users/acoles/0dev/openstack/swift/swift/proxy/controllers/obj.py\", line 268, in GET\n    return self.GETorHEAD(req)\n  File \"/Users/acoles/0dev/openstack/swift/swift/proxy/controllers/obj.py\", line 256, in GETorHEAD\n    resp \u003d self._get_or_head_response(req, node_iter, partition, policy)\n  File \"/Users/acoles/0dev/openstack/swift/swift/proxy/controllers/obj.py\", line 2959, in _get_or_head_response\n    ec_request_count \u003d policy.ec_ndata\nAttributeError: \u0027StoragePolicy\u0027 object has no attribute \u0027ec_ndata\u0027 (txn: txda058f4d4df34904a8ab0-00631eeaff) (client_ip: 127.0.0.1)\nproxy INFO: 127.0.0.1 127.0.0.1 12/Sep/2022/08/17/03 GET /v1/a/ec_deleted/no-object-there HTTP/1.0 500 - - t - 125 - txda058f4d4df34904a8ab0-00631eeaff - 0.0170 - - 1662970623.184676170 1662970623.201690197 0\n\nFailure\nTraceback (most recent call last):\n  File \"/Users/acoles/.pyenv/versions/3.9.11/lib/python3.9/unittest/case.py\", line 59, in testPartExecutor\n    yield\n  File \"/Users/acoles/.pyenv/versions/3.9.11/lib/python3.9/unittest/case.py\", line 592, in run\n    self._callTestMethod(testMethod)\n  File \"/Users/acoles/.pyenv/versions/3.9.11/lib/python3.9/unittest/case.py\", line 550, in _callTestMethod\n    method()\n  File \"/Users/acoles/0dev/openstack/swift/test/unit/proxy/test_server.py\", line 7448, in test_GET_ec_deleted\n    self.assertEqual(headers[:len(exp)], exp)\n  File \"/Applications/PyCharm.app/Contents/plugins/python/helpers/pycharm/teamcity/diff_tools.py\", line 38, in _patched_equals\n    raise error\nException:  :: b\u0027HTTP/1.1 500\u0027 !\u003d b\u0027HTTP/1.1 404\u0027\n-------------------- \u003e\u003e begin captured logging \u003c\u003c --------------------","commit_id":"ed1c543431c7c498c2cdb6a5ff3e80706788a1b4"}]}
