)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"6c4924e1f4c377238462782e3cb7a8b4a2f8de37","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"06eb9f9f_33b4c600","updated":"2024-01-24 16:53:13.000000000","message":"these tests didn\u0027t even work; it\u0027s going to get squashed\n\n905554: Container-updater: fix account-suppresion issue | https://review.opendev.org/c/openstack/swift/+/905554","commit_id":"418012f1ad3e54abc69c0488bd17b8e3d590677f"}],"test/unit/container/test_updater.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"5d44fd54d252a1eeb2a3448579fa9033ba06b656","unresolved":true,"context_lines":[{"line_number":311,"context_line":"        subdir \u003d os.path.join(containers_dir, \u0027subdir\u0027)"},{"line_number":312,"context_line":"        os.mkdir(subdir)"},{"line_number":313,"context_line":"        cb \u003d ContainerBroker(os.path.join(subdir, \u0027hash.db\u0027), account\u003d\u0027a\u0027,"},{"line_number":314,"context_line":"                             container\u003d\u0027\\xce\\xa9\u0027)"},{"line_number":315,"context_line":"        cb.initialize(normalize_timestamp(1), 0)"},{"line_number":316,"context_line":"        obj_name \u003d u\u0027\\N{GREEK CAPITAL LETTER OMEGA}\u0027"},{"line_number":317,"context_line":"        if six.PY2:"}],"source_content_type":"text/x-python","patch_set":1,"id":"58b438a0_3f53c1d3","line":314,"updated":"2024-01-22 20:47:29.000000000","message":"Huh -- so, the broker takes native strings... which makes this test different container names under py2 vs py3, causing the test failure. Surely that wasn\u0027t intentional; looks like this choice of name dates back to the initial Swift release, so we must have just missed the fact that it should change in https://github.com/openstack/swift/commit/575538b5","commit_id":"418012f1ad3e54abc69c0488bd17b8e3d590677f"},{"author":{"_account_id":36697,"name":"Yihong Jin","display_name":"Yihong Jin","email":"yihongjin404@gmail.com","username":"yihongjin"},"change_message_id":"b3ef597776063dd20717882049d3861f8ee83c58","unresolved":true,"context_lines":[{"line_number":311,"context_line":"        subdir \u003d os.path.join(containers_dir, \u0027subdir\u0027)"},{"line_number":312,"context_line":"        os.mkdir(subdir)"},{"line_number":313,"context_line":"        cb \u003d ContainerBroker(os.path.join(subdir, \u0027hash.db\u0027), account\u003d\u0027a\u0027,"},{"line_number":314,"context_line":"                             container\u003d\u0027\\xce\\xa9\u0027)"},{"line_number":315,"context_line":"        cb.initialize(normalize_timestamp(1), 0)"},{"line_number":316,"context_line":"        obj_name \u003d u\u0027\\N{GREEK CAPITAL LETTER OMEGA}\u0027"},{"line_number":317,"context_line":"        if six.PY2:"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a983427_88236bf4","line":314,"in_reply_to":"58b438a0_3f53c1d3","updated":"2024-01-24 07:50:31.000000000","message":"Thank you for providing the context! May I modify it to ensure compatibility with Python 2 in order to pass the test? I have intergrated this test with my initial changes (not completely certain if I executed the \"squash\" process as supposed), without altering \u0027\\xce\\xa9\u0027. Could you please advise on the necessary steps for correction?","commit_id":"418012f1ad3e54abc69c0488bd17b8e3d590677f"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"6c4924e1f4c377238462782e3cb7a8b4a2f8de37","unresolved":true,"context_lines":[{"line_number":311,"context_line":"        subdir \u003d os.path.join(containers_dir, \u0027subdir\u0027)"},{"line_number":312,"context_line":"        os.mkdir(subdir)"},{"line_number":313,"context_line":"        cb \u003d ContainerBroker(os.path.join(subdir, \u0027hash.db\u0027), account\u003d\u0027a\u0027,"},{"line_number":314,"context_line":"                             container\u003d\u0027\\xce\\xa9\u0027)"},{"line_number":315,"context_line":"        cb.initialize(normalize_timestamp(1), 0)"},{"line_number":316,"context_line":"        obj_name \u003d u\u0027\\N{GREEK CAPITAL LETTER OMEGA}\u0027"},{"line_number":317,"context_line":"        if six.PY2:"}],"source_content_type":"text/x-python","patch_set":1,"id":"31b4f0d8_2779e22d","line":314,"in_reply_to":"7a983427_88236bf4","updated":"2024-01-24 16:53:13.000000000","message":"please do!","commit_id":"418012f1ad3e54abc69c0488bd17b8e3d590677f"},{"author":{"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},"change_message_id":"835b52cbb2508f18082e9380a567de0540204561","unresolved":true,"context_lines":[{"line_number":376,"context_line":"        containers_dir \u003d os.path.join(self.sda1, DATADIR)"},{"line_number":377,"context_line":"        os.mkdir(containers_dir)"},{"line_number":378,"context_line":"        subdir \u003d os.path.join(containers_dir, \u0027subdir\u0027)"},{"line_number":379,"context_line":"        os.mkdir(subdir)"},{"line_number":380,"context_line":"        acct_name \u003d u\u0027\\N{SNOWMAN}\u0027"},{"line_number":381,"context_line":"        cb \u003d ContainerBroker(os.path.join(subdir, \u0027hash.db\u0027),"},{"line_number":382,"context_line":"                             account\u003dacct_name,"}],"source_content_type":"text/x-python","patch_set":1,"id":"6d5a5d68_d9a917b7","line":379,"updated":"2024-01-16 19:33:46.000000000","message":"One could use os.makedirs() here, I think.","commit_id":"418012f1ad3e54abc69c0488bd17b8e3d590677f"},{"author":{"_account_id":36697,"name":"Yihong Jin","display_name":"Yihong Jin","email":"yihongjin404@gmail.com","username":"yihongjin"},"change_message_id":"b3ef597776063dd20717882049d3861f8ee83c58","unresolved":false,"context_lines":[{"line_number":376,"context_line":"        containers_dir \u003d os.path.join(self.sda1, DATADIR)"},{"line_number":377,"context_line":"        os.mkdir(containers_dir)"},{"line_number":378,"context_line":"        subdir \u003d os.path.join(containers_dir, \u0027subdir\u0027)"},{"line_number":379,"context_line":"        os.mkdir(subdir)"},{"line_number":380,"context_line":"        acct_name \u003d u\u0027\\N{SNOWMAN}\u0027"},{"line_number":381,"context_line":"        cb \u003d ContainerBroker(os.path.join(subdir, \u0027hash.db\u0027),"},{"line_number":382,"context_line":"                             account\u003dacct_name,"}],"source_content_type":"text/x-python","patch_set":1,"id":"5c860a2c_58edbe6d","line":379,"in_reply_to":"6d5a5d68_d9a917b7","updated":"2024-01-24 07:50:31.000000000","message":"Done","commit_id":"418012f1ad3e54abc69c0488bd17b8e3d590677f"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"5d44fd54d252a1eeb2a3448579fa9033ba06b656","unresolved":true,"context_lines":[{"line_number":377,"context_line":"        os.mkdir(containers_dir)"},{"line_number":378,"context_line":"        subdir \u003d os.path.join(containers_dir, \u0027subdir\u0027)"},{"line_number":379,"context_line":"        os.mkdir(subdir)"},{"line_number":380,"context_line":"        acct_name \u003d u\u0027\\N{SNOWMAN}\u0027"},{"line_number":381,"context_line":"        cb \u003d ContainerBroker(os.path.join(subdir, \u0027hash.db\u0027),"},{"line_number":382,"context_line":"                             account\u003dacct_name,"},{"line_number":383,"context_line":"                             container\u003d\u0027\\xce\\xa9\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1b1b50a0_f8192bcb","line":380,"updated":"2024-01-22 20:47:29.000000000","message":"There\u0027s a good chance we ought to `.encode(\u0027utf8\u0027)` this on py2.","commit_id":"418012f1ad3e54abc69c0488bd17b8e3d590677f"},{"author":{"_account_id":36697,"name":"Yihong Jin","display_name":"Yihong Jin","email":"yihongjin404@gmail.com","username":"yihongjin"},"change_message_id":"94ca886bc5188b08967c2c19e2d0fb1e09da6737","unresolved":false,"context_lines":[{"line_number":377,"context_line":"        os.mkdir(containers_dir)"},{"line_number":378,"context_line":"        subdir \u003d os.path.join(containers_dir, \u0027subdir\u0027)"},{"line_number":379,"context_line":"        os.mkdir(subdir)"},{"line_number":380,"context_line":"        acct_name \u003d u\u0027\\N{SNOWMAN}\u0027"},{"line_number":381,"context_line":"        cb \u003d ContainerBroker(os.path.join(subdir, \u0027hash.db\u0027),"},{"line_number":382,"context_line":"                             account\u003dacct_name,"},{"line_number":383,"context_line":"                             container\u003d\u0027\\xce\\xa9\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"2c06a213_c4f6a24f","line":380,"in_reply_to":"03edf173_a0368de1","updated":"2024-01-25 00:00:06.000000000","message":"oops, I think I missed context here. We do need to encode the unicode string before quote it with original quote function provided by six. Will take a look at swift.common.utils\u0027s quote to find the best approach.","commit_id":"418012f1ad3e54abc69c0488bd17b8e3d590677f"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"6c4924e1f4c377238462782e3cb7a8b4a2f8de37","unresolved":false,"context_lines":[{"line_number":377,"context_line":"        os.mkdir(containers_dir)"},{"line_number":378,"context_line":"        subdir \u003d os.path.join(containers_dir, \u0027subdir\u0027)"},{"line_number":379,"context_line":"        os.mkdir(subdir)"},{"line_number":380,"context_line":"        acct_name \u003d u\u0027\\N{SNOWMAN}\u0027"},{"line_number":381,"context_line":"        cb \u003d ContainerBroker(os.path.join(subdir, \u0027hash.db\u0027),"},{"line_number":382,"context_line":"                             account\u003dacct_name,"},{"line_number":383,"context_line":"                             container\u003d\u0027\\xce\\xa9\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"03edf173_a0368de1","line":380,"in_reply_to":"0c66d4e9_3c320c2c","updated":"2024-01-24 16:53:13.000000000","message":"Acknowledged","commit_id":"418012f1ad3e54abc69c0488bd17b8e3d590677f"},{"author":{"_account_id":36697,"name":"Yihong Jin","display_name":"Yihong Jin","email":"yihongjin404@gmail.com","username":"yihongjin"},"change_message_id":"b3ef597776063dd20717882049d3861f8ee83c58","unresolved":true,"context_lines":[{"line_number":377,"context_line":"        os.mkdir(containers_dir)"},{"line_number":378,"context_line":"        subdir \u003d os.path.join(containers_dir, \u0027subdir\u0027)"},{"line_number":379,"context_line":"        os.mkdir(subdir)"},{"line_number":380,"context_line":"        acct_name \u003d u\u0027\\N{SNOWMAN}\u0027"},{"line_number":381,"context_line":"        cb \u003d ContainerBroker(os.path.join(subdir, \u0027hash.db\u0027),"},{"line_number":382,"context_line":"                             account\u003dacct_name,"},{"line_number":383,"context_line":"                             container\u003d\u0027\\xce\\xa9\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"0c66d4e9_3c320c2c","line":380,"in_reply_to":"1b1b50a0_f8192bcb","updated":"2024-01-24 07:50:31.000000000","message":"Note: If Bytes is used instead of native string, we need to replace urllib.parse.quote with urllib.parse.quote_from_bytes","commit_id":"418012f1ad3e54abc69c0488bd17b8e3d590677f"},{"author":{"_account_id":36697,"name":"Yihong Jin","display_name":"Yihong Jin","email":"yihongjin404@gmail.com","username":"yihongjin"},"change_message_id":"b3ef597776063dd20717882049d3861f8ee83c58","unresolved":true,"context_lines":[{"line_number":393,"context_line":"        suppress_util \u003d now + cu.account_suppression_time"},{"line_number":394,"context_line":"        self.assertEqual({acct_name: suppress_util},"},{"line_number":395,"context_line":"                         cu.account_suppressions)"},{"line_number":396,"context_line":"        # I guess with the pid/worker is reaped this file is flushed/closed?"},{"line_number":397,"context_line":"        cu.new_account_suppressions.close()"},{"line_number":398,"context_line":"        with open(tmpfilename) as f:"},{"line_number":399,"context_line":"            account_lines \u003d f.readlines()"},{"line_number":400,"context_line":"        expected \u003d \u0027%s %s\\n\u0027 % (\u0027%E2%98%83\u0027, str(suppress_util))"}],"source_content_type":"text/x-python","patch_set":1,"id":"f65e7ff2_47c1446c","line":397,"range":{"start_line":396,"start_character":0,"end_line":397,"end_character":43},"updated":"2024-01-24 07:50:31.000000000","message":"I believe so. But perhaps it is good to keep it explicit?","commit_id":"418012f1ad3e54abc69c0488bd17b8e3d590677f"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"6c4924e1f4c377238462782e3cb7a8b4a2f8de37","unresolved":true,"context_lines":[{"line_number":393,"context_line":"        suppress_util \u003d now + cu.account_suppression_time"},{"line_number":394,"context_line":"        self.assertEqual({acct_name: suppress_util},"},{"line_number":395,"context_line":"                         cu.account_suppressions)"},{"line_number":396,"context_line":"        # I guess with the pid/worker is reaped this file is flushed/closed?"},{"line_number":397,"context_line":"        cu.new_account_suppressions.close()"},{"line_number":398,"context_line":"        with open(tmpfilename) as f:"},{"line_number":399,"context_line":"            account_lines \u003d f.readlines()"},{"line_number":400,"context_line":"        expected \u003d \u0027%s %s\\n\u0027 % (\u0027%E2%98%83\u0027, str(suppress_util))"}],"source_content_type":"text/x-python","patch_set":1,"id":"3cfe38d3_503d132c","line":397,"range":{"start_line":396,"start_character":0,"end_line":397,"end_character":43},"in_reply_to":"f65e7ff2_47c1446c","updated":"2024-01-24 16:53:13.000000000","message":"yes, i would prefer that and would quickly approve a change that fixed the issue and added tests.\n\nhowever it\u0027s probably orthogonal to what you\u0027re actually trying to achive so it shouldn\u0027t be a blocker.  The more a change does the more oppertunity there is for a reviewer to find something that might reasonable justify a negative reivew (i.e. xyz should be addressed before the change is suitable to merge).\n\nYou can *try* to do more than one thing in a review, but sometimes that\u0027s actually going to be slower than having a small change that does one thing really well and then follow-up change(s) to address other small thing(s) you want to clean-up as well.  It\u0027s a very nuanced trade-off unfortunately.  Sometimes if you\u0027re trying to fix something significant it can help to fix the smaller cleanups as a \"pre-factor\" other-wise a big change can get de-railed with review comments about existing stuff that should also be improved.  Use your best judgement and we\u0027ll try to help.","commit_id":"418012f1ad3e54abc69c0488bd17b8e3d590677f"}]}
