)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"ecc2e91e1849b9d0095ed040cb2221df478e80ab","unresolved":true,"context_lines":[{"line_number":16,"context_line":"operators had to manually move quarantined data back."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"This patch introduces a new boolean config option"},{"line_number":19,"context_line":"(quarantine_when_hash_location_mismatch) that defaults to true"},{"line_number":20,"context_line":"(maintaining backward compatibility). When set to false, the auditors"},{"line_number":21,"context_line":"will log hash location mismatches as errors instead of quarantining,"},{"line_number":22,"context_line":"allowing operators to:"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"36e1cabe_f5929253","line":19,"range":{"start_line":19,"start_character":46,"end_line":19,"end_character":62},"updated":"2026-04-22 15:45:27.000000000","message":"From PTG discussion: I think this is unnecessary -- defaulting to false avoids the difficult recovery, and operators always have the option of switching it to true to go quarantine what\u0027s been identified.","commit_id":"bf7cb871567ff82073e514e27087db9ee2553e31"},{"author":{"_account_id":38496,"name":"Andressa Cabistani","display_name":"Andressa","email":"acabistani@gmail.com","username":"andressadotpy","status":"I\u0027m a Software Engineer at Red Hat and I love Open Source and connect with people! Feel free to DM through IRC, I\u0027ll be delighted to chat"},"change_message_id":"19dcbfeba2a84eac9c36b9c89b90a4816a35f0b0","unresolved":true,"context_lines":[{"line_number":16,"context_line":"operators had to manually move quarantined data back."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"This patch introduces a new boolean config option"},{"line_number":19,"context_line":"(quarantine_when_hash_location_mismatch) that defaults to true"},{"line_number":20,"context_line":"(maintaining backward compatibility). When set to false, the auditors"},{"line_number":21,"context_line":"will log hash location mismatches as errors instead of quarantining,"},{"line_number":22,"context_line":"allowing operators to:"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"f1163b9b_5ac21fc1","line":19,"range":{"start_line":19,"start_character":46,"end_line":19,"end_character":62},"in_reply_to":"36e1cabe_f5929253","updated":"2026-05-12 08:30:59.000000000","message":"@tburke@nvidia.com @cschwede@nvidia.com I pushed a few changes yesterday for this, thank you!","commit_id":"bf7cb871567ff82073e514e27087db9ee2553e31"},{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"e6d872504d3cfe34d45831df321d0344291efb02","unresolved":true,"context_lines":[{"line_number":11,"context_line":"swift_hash_path_prefix or swift_hash_path_suffix in swift.conf."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Previously, when hash values were accidentally changed, auditors would"},{"line_number":14,"context_line":"quarantine all objects, accounts, and containers that appeared to be in"},{"line_number":15,"context_line":"the wrong filesystem locations. This made recovery difficult as"},{"line_number":16,"context_line":"operators had to manually move quarantined data back."},{"line_number":17,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":15,"id":"97906616_3e113afb","line":14,"updated":"2026-08-07 11:12:49.000000000","message":"It quarantines only objects, not accounts and container DBs at all","commit_id":"22c1a9c2591558bde349fd30831ec16664c3ed89"},{"author":{"_account_id":38496,"name":"Andressa Cabistani","display_name":"Andressa","email":"acabistani@gmail.com","username":"andressadotpy","status":"I\u0027m a Software Engineer at Red Hat and I love Open Source and connect with people! Feel free to DM through IRC, I\u0027ll be delighted to chat"},"change_message_id":"b08d9fd28aa1f860c1459d08a8839ba02fa97971","unresolved":false,"context_lines":[{"line_number":11,"context_line":"swift_hash_path_prefix or swift_hash_path_suffix in swift.conf."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Previously, when hash values were accidentally changed, auditors would"},{"line_number":14,"context_line":"quarantine all objects, accounts, and containers that appeared to be in"},{"line_number":15,"context_line":"the wrong filesystem locations. This made recovery difficult as"},{"line_number":16,"context_line":"operators had to manually move quarantined data back."},{"line_number":17,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":15,"id":"b6ff9c56_1de84a24","line":14,"in_reply_to":"97906616_3e113afb","updated":"2026-08-10 11:43:02.000000000","message":"Done","commit_id":"22c1a9c2591558bde349fd30831ec16664c3ed89"},{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"e6d872504d3cfe34d45831df321d0344291efb02","unresolved":true,"context_lines":[{"line_number":27,"context_line":"Changes include:"},{"line_number":28,"context_line":"- New exceptions: DiskFileHashLocationMismatch and"},{"line_number":29,"context_line":"DatabaseHashLocationMismatch"},{"line_number":30,"context_line":"- Config option added to object, account, and container auditors"},{"line_number":31,"context_line":"- Updated auditor logic to check config before quarantining"},{"line_number":32,"context_line":"- Full test coverage: unit tests and probe tests for all auditors"},{"line_number":33,"context_line":"- Updated object-server.conf-sample, account-server.conf-sample and"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":15,"id":"7a328f1e_86a1ba02","line":30,"updated":"2026-08-07 11:12:49.000000000","message":"The config option is never used by the DB auditors - there is basically no difference if it is set to true or false.","commit_id":"22c1a9c2591558bde349fd30831ec16664c3ed89"},{"author":{"_account_id":38496,"name":"Andressa Cabistani","display_name":"Andressa","email":"acabistani@gmail.com","username":"andressadotpy","status":"I\u0027m a Software Engineer at Red Hat and I love Open Source and connect with people! Feel free to DM through IRC, I\u0027ll be delighted to chat"},"change_message_id":"b08d9fd28aa1f860c1459d08a8839ba02fa97971","unresolved":false,"context_lines":[{"line_number":27,"context_line":"Changes include:"},{"line_number":28,"context_line":"- New exceptions: DiskFileHashLocationMismatch and"},{"line_number":29,"context_line":"DatabaseHashLocationMismatch"},{"line_number":30,"context_line":"- Config option added to object, account, and container auditors"},{"line_number":31,"context_line":"- Updated auditor logic to check config before quarantining"},{"line_number":32,"context_line":"- Full test coverage: unit tests and probe tests for all auditors"},{"line_number":33,"context_line":"- Updated object-server.conf-sample, account-server.conf-sample and"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":15,"id":"bc350469_3efe0df9","line":30,"in_reply_to":"7a328f1e_86a1ba02","updated":"2026-08-10 11:43:02.000000000","message":"Done","commit_id":"22c1a9c2591558bde349fd30831ec16664c3ed89"},{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"e6d872504d3cfe34d45831df321d0344291efb02","unresolved":true,"context_lines":[{"line_number":30,"context_line":"- Config option added to object, account, and container auditors"},{"line_number":31,"context_line":"- Updated auditor logic to check config before quarantining"},{"line_number":32,"context_line":"- Full test coverage: unit tests and probe tests for all auditors"},{"line_number":33,"context_line":"- Updated object-server.conf-sample, account-server.conf-sample and"},{"line_number":34,"context_line":"container-server.conf-sample with config documentation"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"Change-Id: Ia66b8422fd9f0c5de9f857f946e002e8e3dcf7b6"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":15,"id":"2278c115_b89da847","line":33,"updated":"2026-08-07 11:12:49.000000000","message":"Only the object-serve.conf-sample is included","commit_id":"22c1a9c2591558bde349fd30831ec16664c3ed89"},{"author":{"_account_id":38496,"name":"Andressa Cabistani","display_name":"Andressa","email":"acabistani@gmail.com","username":"andressadotpy","status":"I\u0027m a Software Engineer at Red Hat and I love Open Source and connect with people! Feel free to DM through IRC, I\u0027ll be delighted to chat"},"change_message_id":"b08d9fd28aa1f860c1459d08a8839ba02fa97971","unresolved":false,"context_lines":[{"line_number":30,"context_line":"- Config option added to object, account, and container auditors"},{"line_number":31,"context_line":"- Updated auditor logic to check config before quarantining"},{"line_number":32,"context_line":"- Full test coverage: unit tests and probe tests for all auditors"},{"line_number":33,"context_line":"- Updated object-server.conf-sample, account-server.conf-sample and"},{"line_number":34,"context_line":"container-server.conf-sample with config documentation"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"Change-Id: Ia66b8422fd9f0c5de9f857f946e002e8e3dcf7b6"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":15,"id":"98001c10_8babe978","line":33,"in_reply_to":"2278c115_b89da847","updated":"2026-08-10 11:43:02.000000000","message":"Done","commit_id":"22c1a9c2591558bde349fd30831ec16664c3ed89"},{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"2ccf4398299b5c4b0071f5213bd08315f348e010","unresolved":true,"context_lines":[{"line_number":32,"context_line":"- New hash location mismatch detection added to account and container auditors"},{"line_number":33,"context_line":"- Updated auditor logic to check config before quarantining"},{"line_number":34,"context_line":"- Full test coverage: unit tests and probe test"},{"line_number":35,"context_line":"- Updated object-server.conf-sample, account-server.conf-sample and"},{"line_number":36,"context_line":"container-server.conf-sample with config documentation"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"Change-Id: Ia66b8422fd9f0c5de9f857f946e002e8e3dcf7b6"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"9530e09e_8a1e7675","line":35,"updated":"2026-08-11 12:53:06.000000000","message":"This is wrong - see my other comments","commit_id":"001c238e6dfa9aff15e4ca15523ff82172951211"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"fecc58a314632f7309e556191159a7847998f4d4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"57528fc7_c836ab29","updated":"2026-04-14 13:42:17.000000000","message":"I think this is a great additional config option, which will help to prevent huge issues if hashes in swift.conf are accidentally changed - for example when managing many clusters and accidentally applying the wrong config update.\n\nI only had a brief look at the code; but applied the change and tested the behaviour - worked as expected. Will have a closer look later.","commit_id":"bf7cb871567ff82073e514e27087db9ee2553e31"},{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"7059d9a4453bfa65c7a7eb61164004f384e519e3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"6ecda05e_b3211219","updated":"2026-05-19 07:06:55.000000000","message":"I found an issue which might be irritating for operators. Please have a look at my inline comment","commit_id":"0b905bd9d91f105e09f3b9228bcc47ed619a9329"},{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"3f7db77de1fc75af7acc06b3abc1c10385ce9f7f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"ea14c02b_ef8d0bd7","updated":"2026-06-03 08:51:40.000000000","message":"-1 because I found a blocker that breaks existing behavior - please see my inline comment.\n\nWDYT about squashing the six probetest files into one? There are 31 today, and this single patch would bump this to 37, with some duplicated code.","commit_id":"d46eca2712b9fccdd5e70062495cd65b813da5cb"},{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"8a5c837f9301299bad65042830f3c54541740e3b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"aa5c2f6f_c08f2500","updated":"2026-06-08 15:52:25.000000000","message":"I think this is getting close! Please see my inline comment.","commit_id":"2faecfda85974fd5f077e01a2e8f63399200270f"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"a75540c9f9661d5a176fc35e18d23f762a7690d3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"52715067_8f59b758","updated":"2026-07-10 09:02:39.000000000","message":"hmm gertty didn\u0027t send the score","commit_id":"9fa398ae8c423c980ac29b074706a8c351f7a206"},{"author":{"_account_id":38496,"name":"Andressa Cabistani","display_name":"Andressa","email":"acabistani@gmail.com","username":"andressadotpy","status":"I\u0027m a Software Engineer at Red Hat and I love Open Source and connect with people! Feel free to DM through IRC, I\u0027ll be delighted to chat"},"change_message_id":"a5afe737773f6fd8380555c9424f757cf7329bbe","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"b661aad3_b69e4523","updated":"2026-08-05 09:34:14.000000000","message":"@cschwede@nvidia.com @matt@oliver.net.au @tburke@nvidia.com Hey folks! Thank you for the reviews here, I\u0027m learning a lot from the lots of you. I addressed all the comments you made and I was hoping to get some feedback on how the work is going and what I still need to do to get this merged as soon as possible. Thank you!","commit_id":"22c1a9c2591558bde349fd30831ec16664c3ed89"},{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"e6d872504d3cfe34d45831df321d0344291efb02","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"2c6239d5_9493de15","updated":"2026-08-07 11:12:49.000000000","message":"The commit msg needs some updates, and it looks to me like there is some dead code - please have a look at my inline comments","commit_id":"22c1a9c2591558bde349fd30831ec16664c3ed89"},{"author":{"_account_id":38496,"name":"Andressa Cabistani","display_name":"Andressa","email":"acabistani@gmail.com","username":"andressadotpy","status":"I\u0027m a Software Engineer at Red Hat and I love Open Source and connect with people! Feel free to DM through IRC, I\u0027ll be delighted to chat"},"change_message_id":"b08d9fd28aa1f860c1459d08a8839ba02fa97971","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"bb886028_661de602","in_reply_to":"2c6239d5_9493de15","updated":"2026-08-10 11:43:02.000000000","message":"thank you very much for all the comments, I just pushed a new patch that is supposed to address them! please let me know more findings so I can work on them","commit_id":"22c1a9c2591558bde349fd30831ec16664c3ed89"},{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"b5c381aea1206b527d314d93b94fb5a23e16b8a9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"5e190d43_ffc5117d","updated":"2026-08-17 15:56:56.000000000","message":"Something went wrong with the latest pachset - dead code was removed in between, the config option was fixed but now it\u0027s back to the previous version.\n\nPlease have a look at my suggestion for the probe test as well.","commit_id":"ef58dcb865dd446b239e002784afd53186b1bfe8"},{"author":{"_account_id":38496,"name":"Andressa Cabistani","display_name":"Andressa","email":"acabistani@gmail.com","username":"andressadotpy","status":"I\u0027m a Software Engineer at Red Hat and I love Open Source and connect with people! Feel free to DM through IRC, I\u0027ll be delighted to chat"},"change_message_id":"00a39e0410d7ff01192f5221aed97224745ca332","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"91966d4f_b99355fa","in_reply_to":"5e190d43_ffc5117d","updated":"2026-08-18 10:53:00.000000000","message":"I have no idea what happened but good thing you noticed 😆","commit_id":"ef58dcb865dd446b239e002784afd53186b1bfe8"},{"author":{"_account_id":38496,"name":"Andressa Cabistani","display_name":"Andressa","email":"acabistani@gmail.com","username":"andressadotpy","status":"I\u0027m a Software Engineer at Red Hat and I love Open Source and connect with people! Feel free to DM through IRC, I\u0027ll be delighted to chat"},"change_message_id":"c32e40fa9cb9f5deafc892a5667fe86ebbce1541","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"1d597007_9cf0695f","in_reply_to":"91966d4f_b99355fa","updated":"2026-08-18 11:28:21.000000000","message":"I think it\u0027s all addressed now 😆","commit_id":"ef58dcb865dd446b239e002784afd53186b1bfe8"}],"etc/account-server.conf-sample":[{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"2ccf4398299b5c4b0071f5213bd08315f348e010","unresolved":true,"context_lines":[{"line_number":263,"context_line":"# When set to false, accounts with hash location mismatches (e.g., due to"},{"line_number":264,"context_line":"# swift_hash_path_prefix or swift_hash_path_suffix changes in swift.conf)"},{"line_number":265,"context_line":"# will be logged as errors instead of being quarantined. This allows for"},{"line_number":266,"context_line":"# recovery when hash values are accidentally changed. Default is false."},{"line_number":267,"context_line":"# quarantine_when_hash_location_mismatch \u003d false"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"[account-reaper]"}],"source_content_type":"application/octet-stream","patch_set":16,"id":"43fd4f0f_64ab10dd","line":266,"updated":"2026-08-11 12:53:06.000000000","message":"It simply doesn\u0027t matter if it is set to true or false, it is never used. The account and container auditors are always only logging, never quarantining any .db file. You even ensure nothing gets quarantined in the tests (see my comments there)","commit_id":"001c238e6dfa9aff15e4ca15523ff82172951211"}],"etc/container-server.conf-sample":[{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"2ccf4398299b5c4b0071f5213bd08315f348e010","unresolved":true,"context_lines":[{"line_number":310,"context_line":"# swift_hash_path_prefix or swift_hash_path_suffix changes in swift.conf)"},{"line_number":311,"context_line":"# will be logged as errors instead of being quarantined. This allows for"},{"line_number":312,"context_line":"# recovery when hash values are accidentally changed. Default is false."},{"line_number":313,"context_line":"# quarantine_when_hash_location_mismatch \u003d false"},{"line_number":314,"context_line":""},{"line_number":315,"context_line":"[container-sync]"},{"line_number":316,"context_line":"# You can override the default log routing for this app here (don\u0027t use set!):"}],"source_content_type":"application/octet-stream","patch_set":16,"id":"4be55943_7456ad75","line":313,"updated":"2026-08-11 12:53:06.000000000","message":"It simply doesn\u0027t matter if it is set to true or false, it is never used. The account and container auditors are always only logging, never quarantining any .db file. You even ensure nothing gets quarantined in the tests (see my comments there)","commit_id":"001c238e6dfa9aff15e4ca15523ff82172951211"}],"etc/object-server.conf-sample":[{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"e6d872504d3cfe34d45831df321d0344291efb02","unresolved":true,"context_lines":[{"line_number":652,"context_line":"# swift_hash_path_prefix or swift_hash_path_suffix changes in swift.conf)"},{"line_number":653,"context_line":"# will be logged as errors instead of being quarantined. This allows for"},{"line_number":654,"context_line":"# recovery when hash values are accidentally changed. Default is false."},{"line_number":655,"context_line":"# quarantine_when_hash_location_mismatch \u003d false"},{"line_number":656,"context_line":""},{"line_number":657,"context_line":"[object-expirer]"},{"line_number":658,"context_line":"# If this true, this expirer will execute tasks from legacy expirer task queue,"}],"source_content_type":"application/octet-stream","patch_set":15,"id":"a1f9e676_84fa909b","line":655,"updated":"2026-08-07 11:12:49.000000000","message":"This is the wrong section - it must be in `[object-auditor]`, not in `[object-auditor:watcher:swift#dark_data]`","commit_id":"22c1a9c2591558bde349fd30831ec16664c3ed89"},{"author":{"_account_id":38496,"name":"Andressa Cabistani","display_name":"Andressa","email":"acabistani@gmail.com","username":"andressadotpy","status":"I\u0027m a Software Engineer at Red Hat and I love Open Source and connect with people! Feel free to DM through IRC, I\u0027ll be delighted to chat"},"change_message_id":"b08d9fd28aa1f860c1459d08a8839ba02fa97971","unresolved":false,"context_lines":[{"line_number":652,"context_line":"# swift_hash_path_prefix or swift_hash_path_suffix changes in swift.conf)"},{"line_number":653,"context_line":"# will be logged as errors instead of being quarantined. This allows for"},{"line_number":654,"context_line":"# recovery when hash values are accidentally changed. Default is false."},{"line_number":655,"context_line":"# quarantine_when_hash_location_mismatch \u003d false"},{"line_number":656,"context_line":""},{"line_number":657,"context_line":"[object-expirer]"},{"line_number":658,"context_line":"# If this true, this expirer will execute tasks from legacy expirer task queue,"}],"source_content_type":"application/octet-stream","patch_set":15,"id":"9443e266_7ab490e2","line":655,"in_reply_to":"a1f9e676_84fa909b","updated":"2026-08-10 11:43:02.000000000","message":"Done","commit_id":"22c1a9c2591558bde349fd30831ec16664c3ed89"},{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"b5c381aea1206b527d314d93b94fb5a23e16b8a9","unresolved":true,"context_lines":[{"line_number":648,"context_line":"# listings eventually settle."},{"line_number":649,"context_line":"# grace_age\u003d604800"},{"line_number":650,"context_line":""},{"line_number":651,"context_line":"# When set to false, objects with hash location mismatches (e.g., due to"},{"line_number":652,"context_line":"# swift_hash_path_prefix or swift_hash_path_suffix changes in swift.conf)"},{"line_number":653,"context_line":"# will be logged as errors instead of being quarantined. This allows for"},{"line_number":654,"context_line":"# recovery when hash values are accidentally changed. Default is false."}],"source_content_type":"application/octet-stream","patch_set":18,"id":"97aef843_48848e57","line":651,"updated":"2026-08-17 15:56:56.000000000","message":"This is still/again in the wrong section ([object-auditor:watcher:swift#dark_data]).","commit_id":"ef58dcb865dd446b239e002784afd53186b1bfe8"},{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"9dcc1652c5edb6c46212170b53e984b822f46f7c","unresolved":false,"context_lines":[{"line_number":648,"context_line":"# listings eventually settle."},{"line_number":649,"context_line":"# grace_age\u003d604800"},{"line_number":650,"context_line":""},{"line_number":651,"context_line":"# When set to false, objects with hash location mismatches (e.g., due to"},{"line_number":652,"context_line":"# swift_hash_path_prefix or swift_hash_path_suffix changes in swift.conf)"},{"line_number":653,"context_line":"# will be logged as errors instead of being quarantined. This allows for"},{"line_number":654,"context_line":"# recovery when hash values are accidentally changed. Default is false."}],"source_content_type":"application/octet-stream","patch_set":18,"id":"cfbe8539_0dd3990e","line":651,"in_reply_to":"97aef843_48848e57","updated":"2026-08-18 12:49:38.000000000","message":"Done","commit_id":"ef58dcb865dd446b239e002784afd53186b1bfe8"}],"swift/common/db_auditor.py":[{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"3f7db77de1fc75af7acc06b3abc1c10385ce9f7f","unresolved":true,"context_lines":[{"line_number":153,"context_line":"                self.failures +\u003d 1"},{"line_number":154,"context_line":"                self.logger.error(\u0027Audit Failed for %(path)s: %(err)s\u0027,"},{"line_number":155,"context_line":"                                  {\u0027path\u0027: path, \u0027err\u0027: str(e)})"},{"line_number":156,"context_line":"                broker.quarantine(str(e))"},{"line_number":157,"context_line":"            else:"},{"line_number":158,"context_line":"                self.logger.increment(\u0027failures\u0027)"},{"line_number":159,"context_line":"                self.failures +\u003d 1"}],"source_content_type":"text/x-python","patch_set":6,"id":"812fdc9d_1784fd4a","line":156,"updated":"2026-06-03 08:51:40.000000000","message":"This actually breaks the DB auditor run when using `quarantine_when_hash_location_mismatch \u003d true`.  \n\nbroker.quarantine() always raises sqlite3.DatabaseError (see https://github.com/openstack/swift/blob/master/swift/common/db.py#L472-L493), which is not catched here - and thus the DB auditor fails to quarantine more files.\n\nHow to reproduce on a SAIO:\n1. set `quarantine_when_hash_location_mismatch \u003d true`\n2. upload two objects to two different containers\n3. change the hash\n4. run `swift-init container-auditor once`\n\nNot all db files are quarantined, and the logs show tracebacks like this:\n\n    Jun 03 08:37:16 saio container-auditor-6031[29474]: UNCAUGHT EXCEPTION#012Traceback (most recent call last):#012  File \"/vagrant/swift/swift/common/db_auditor.py\", line 144, in audit#012    err \u003d self._audit(info, broker)#012          ^^^^^^^^^^^^^^^^^^^^^^^^^#012  File \"/vagrant/swift/swift/container/auditor.py\", line 39, in _audit#012    raise DatabaseHashLocationMismatch(#012swift.common.exceptions.DatabaseHashLocationMismatch: Hash of account/container names does not match directory name for container AUTH_test/hashtest-a (possible hash_path_preffix/suffix change in swift.conf#012#012During handling of the above exception, another exception occurred:#012#012Traceback (most recent call last):#012  File \"/home/vagrant/.local/bin/swift-container-auditor\", line 6, in \u003cmodule\u003e#012    sys.exit(main())#012             ^^^^^^#012  File \"/vagrant/swift/swift/container/auditor.py\", line 49, in main#012    run_daemon(ContainerAuditor, conf_file, **options)#012  File \"/vagrant/swift/swift/common/daemon.py\", line 330, in run_daemon#012    DaemonStrategy(d, logger).run(once\u003donce, **kwargs)#012  File \"/vagrant/swift/swift/common/daemon.py\", line 157, in run#012    self._run(once\u003donce, **kwargs)#012  File \"/vagrant/swift/swift/common/daemon.py\", line 229, in _run#012    return self._run_inline(once, **kwargs)#012           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#012  File \"/vagrant/swift/swift/common/daemon.py\", line 151, in _run_inline#012    self.daemon.run(once\u003donce, **kwargs)#012  File \"/vagrant/swift/swift/common/daemon.py\", line 63, in run#012    self.run_once(**kwargs)#012  File \"/vagrant/swift/swift/common/db_auditor.py\", line 124, in run_once#012    self._one_audit_pass(reported)#012  File \"/vagrant/swift/swift/common/db_auditor.py\", line 75, in _one_audit_pass#012    self.audit(path)#012  File \"/vagrant/swift/swift/common/db_auditor.py\", line 156, in audit#012    broker.quarantine(str(e))#012  File \"/vagrant/swift/swift/common/db.py\", line 493, in quarantine#012    raise sqlite3.DatabaseError(detail)#012sqlite3.DatabaseError: Quarantined /srv/node3/sdb3/containers/1/b83/0057e5b01f7439050ba7005bcc982b83 to /srv/node3/sdb3/quarantined/containers/0057e5b01f7439050ba7005bcc982b83 due to Hash of account/container names does not match directory name for container AUTH_test/hashtest-a (possible hash_path_preffix/suffix change in swift.conf\n\n\nPossible fix:\n\n    try:\n        broker.quarantine(str(e))\n    except sqlite3.DatabaseError:\n        pass","commit_id":"d46eca2712b9fccdd5e70062495cd65b813da5cb"},{"author":{"_account_id":38496,"name":"Andressa Cabistani","display_name":"Andressa","email":"acabistani@gmail.com","username":"andressadotpy","status":"I\u0027m a Software Engineer at Red Hat and I love Open Source and connect with people! Feel free to DM through IRC, I\u0027ll be delighted to chat"},"change_message_id":"41aabd7c9d0f8e4e6525a8cb380ba9759c708c25","unresolved":true,"context_lines":[{"line_number":153,"context_line":"                self.failures +\u003d 1"},{"line_number":154,"context_line":"                self.logger.error(\u0027Audit Failed for %(path)s: %(err)s\u0027,"},{"line_number":155,"context_line":"                                  {\u0027path\u0027: path, \u0027err\u0027: str(e)})"},{"line_number":156,"context_line":"                broker.quarantine(str(e))"},{"line_number":157,"context_line":"            else:"},{"line_number":158,"context_line":"                self.logger.increment(\u0027failures\u0027)"},{"line_number":159,"context_line":"                self.failures +\u003d 1"}],"source_content_type":"text/x-python","patch_set":6,"id":"ad24adec_292f4da1","line":156,"in_reply_to":"812fdc9d_1784fd4a","updated":"2026-06-10 08:42:23.000000000","message":"Thank you very much! I submitted a patch with your suggestion","commit_id":"d46eca2712b9fccdd5e70062495cd65b813da5cb"},{"author":{"_account_id":38496,"name":"Andressa Cabistani","display_name":"Andressa","email":"acabistani@gmail.com","username":"andressadotpy","status":"I\u0027m a Software Engineer at Red Hat and I love Open Source and connect with people! Feel free to DM through IRC, I\u0027ll be delighted to chat"},"change_message_id":"4aed3f5a8dad3afcccc7979a8371beadc068f807","unresolved":false,"context_lines":[{"line_number":153,"context_line":"                self.failures +\u003d 1"},{"line_number":154,"context_line":"                self.logger.error(\u0027Audit Failed for %(path)s: %(err)s\u0027,"},{"line_number":155,"context_line":"                                  {\u0027path\u0027: path, \u0027err\u0027: str(e)})"},{"line_number":156,"context_line":"                broker.quarantine(str(e))"},{"line_number":157,"context_line":"            else:"},{"line_number":158,"context_line":"                self.logger.increment(\u0027failures\u0027)"},{"line_number":159,"context_line":"                self.failures +\u003d 1"}],"source_content_type":"text/x-python","patch_set":6,"id":"ce41a9aa_20edbe5e","line":156,"in_reply_to":"ad24adec_292f4da1","updated":"2026-06-10 08:46:06.000000000","message":"Done","commit_id":"d46eca2712b9fccdd5e70062495cd65b813da5cb"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"6e2335a1200cb53187b67e25df6ac014389ed506","unresolved":false,"context_lines":[{"line_number":155,"context_line":"                self.logger.error(\u0027Audit Failed for %(path)s: %(err)s\u0027,"},{"line_number":156,"context_line":"                                  {\u0027path\u0027: path, \u0027err\u0027: str(e)})"},{"line_number":157,"context_line":"                try:"},{"line_number":158,"context_line":"                    broker.quarantine(str(e))"},{"line_number":159,"context_line":"                except sqlite3.DatabaseError:"},{"line_number":160,"context_line":"                    # broker.quarantine() always raises this after successfully"},{"line_number":161,"context_line":"                    # moving the database to quarantine - catch it so we can"}],"source_content_type":"text/x-python","patch_set":7,"id":"74f2058f_c9ff84a0","line":158,"updated":"2026-07-10 07:13:38.000000000","message":"I do worry a little about adding thing quarantining to DBs. Not that I don\u0027t think its a good idea. But it never used to really quarantine anything  and if someone sets `quarantine_when_hash_location_mismatch\u003dtrue` then if the prefix changes then every account and container will start quarantining... I know thats the point, but it also feels like a footgun.\nAnd feels like this is the situation the patch is trying to solve. \nI wonder if instead we should reframe the DB half to \"add optional log-only detection\" and reconsider if dbs should ever quarantine at all on location mismatch given the possible blast radius.","commit_id":"2faecfda85974fd5f077e01a2e8f63399200270f"},{"author":{"_account_id":38496,"name":"Andressa Cabistani","display_name":"Andressa","email":"acabistani@gmail.com","username":"andressadotpy","status":"I\u0027m a Software Engineer at Red Hat and I love Open Source and connect with people! Feel free to DM through IRC, I\u0027ll be delighted to chat"},"change_message_id":"0155cd93ba9a4adb1ae42cf93bdf763d91dbb75c","unresolved":false,"context_lines":[{"line_number":155,"context_line":"                self.logger.error(\u0027Audit Failed for %(path)s: %(err)s\u0027,"},{"line_number":156,"context_line":"                                  {\u0027path\u0027: path, \u0027err\u0027: str(e)})"},{"line_number":157,"context_line":"                try:"},{"line_number":158,"context_line":"                    broker.quarantine(str(e))"},{"line_number":159,"context_line":"                except sqlite3.DatabaseError:"},{"line_number":160,"context_line":"                    # broker.quarantine() always raises this after successfully"},{"line_number":161,"context_line":"                    # moving the database to quarantine - catch it so we can"}],"source_content_type":"text/x-python","patch_set":7,"id":"e33e0d2c_2cf2dfda","line":158,"in_reply_to":"74f2058f_c9ff84a0","updated":"2026-07-14 09:54:48.000000000","message":"Agreed, I\u0027ll update the DB part as log-only","commit_id":"2faecfda85974fd5f077e01a2e8f63399200270f"},{"author":{"_account_id":38496,"name":"Andressa Cabistani","display_name":"Andressa","email":"acabistani@gmail.com","username":"andressadotpy","status":"I\u0027m a Software Engineer at Red Hat and I love Open Source and connect with people! Feel free to DM through IRC, I\u0027ll be delighted to chat"},"change_message_id":"3900f00942a192328f6be068e5a863eb00eec482","unresolved":false,"context_lines":[{"line_number":155,"context_line":"                self.logger.error(\u0027Audit Failed for %(path)s: %(err)s\u0027,"},{"line_number":156,"context_line":"                                  {\u0027path\u0027: path, \u0027err\u0027: str(e)})"},{"line_number":157,"context_line":"                try:"},{"line_number":158,"context_line":"                    broker.quarantine(str(e))"},{"line_number":159,"context_line":"                except sqlite3.DatabaseError:"},{"line_number":160,"context_line":"                    # broker.quarantine() always raises this after successfully"},{"line_number":161,"context_line":"                    # moving the database to quarantine - catch it so we can"}],"source_content_type":"text/x-python","patch_set":7,"id":"9776dc7a_bb0cfab2","line":158,"in_reply_to":"e33e0d2c_2cf2dfda","updated":"2026-07-14 11:18:29.000000000","message":"I just pushed a new patch with the changes discussed here. I\u0027ll wait for your feedback, thank you!","commit_id":"2faecfda85974fd5f077e01a2e8f63399200270f"}],"swift/container/auditor.py":[{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"8a5c837f9301299bad65042830f3c54541740e3b","unresolved":true,"context_lines":[{"line_number":38,"context_line":"            if expected_hash !\u003d actual_hash:"},{"line_number":39,"context_line":"                raise DatabaseHashLocationMismatch("},{"line_number":40,"context_line":"                    \u0027Hash of account/container names does not match directory \u0027"},{"line_number":41,"context_line":"                    \u0027name for container %s/%s (possible hash_path_preffix/\u0027"},{"line_number":42,"context_line":"                    \u0027suffix change in swift.conf\u0027 % (account_name,"},{"line_number":43,"context_line":"                                                     container_name))"},{"line_number":44,"context_line":"        return None"}],"source_content_type":"text/x-python","patch_set":7,"id":"c3f978f6_3515db4b","line":41,"updated":"2026-06-08 15:52:25.000000000","message":"Sorry, missed this in the earlier patchsets.\n\nThere is a typo here: \"ff\" in \"preffix\". Usually I would see this as a nit, but it\u0027s a logging message and patterns might not match with this typo.","commit_id":"2faecfda85974fd5f077e01a2e8f63399200270f"},{"author":{"_account_id":38496,"name":"Andressa Cabistani","display_name":"Andressa","email":"acabistani@gmail.com","username":"andressadotpy","status":"I\u0027m a Software Engineer at Red Hat and I love Open Source and connect with people! Feel free to DM through IRC, I\u0027ll be delighted to chat"},"change_message_id":"41aabd7c9d0f8e4e6525a8cb380ba9759c708c25","unresolved":true,"context_lines":[{"line_number":38,"context_line":"            if expected_hash !\u003d actual_hash:"},{"line_number":39,"context_line":"                raise DatabaseHashLocationMismatch("},{"line_number":40,"context_line":"                    \u0027Hash of account/container names does not match directory \u0027"},{"line_number":41,"context_line":"                    \u0027name for container %s/%s (possible hash_path_preffix/\u0027"},{"line_number":42,"context_line":"                    \u0027suffix change in swift.conf\u0027 % (account_name,"},{"line_number":43,"context_line":"                                                     container_name))"},{"line_number":44,"context_line":"        return None"}],"source_content_type":"text/x-python","patch_set":7,"id":"f3cd743a_d24194b6","line":41,"in_reply_to":"1eba6496_4cdff376","updated":"2026-06-10 08:42:23.000000000","message":"what an eye heheheh","commit_id":"2faecfda85974fd5f077e01a2e8f63399200270f"},{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"017bcda5705877f30aa78b8861bb52b2b6f4579f","unresolved":true,"context_lines":[{"line_number":38,"context_line":"            if expected_hash !\u003d actual_hash:"},{"line_number":39,"context_line":"                raise DatabaseHashLocationMismatch("},{"line_number":40,"context_line":"                    \u0027Hash of account/container names does not match directory \u0027"},{"line_number":41,"context_line":"                    \u0027name for container %s/%s (possible hash_path_preffix/\u0027"},{"line_number":42,"context_line":"                    \u0027suffix change in swift.conf\u0027 % (account_name,"},{"line_number":43,"context_line":"                                                     container_name))"},{"line_number":44,"context_line":"        return None"}],"source_content_type":"text/x-python","patch_set":7,"id":"1eba6496_4cdff376","line":41,"in_reply_to":"c3f978f6_3515db4b","updated":"2026-06-09 06:42:35.000000000","message":"Oh, also: the closing \")\" is missing as well.","commit_id":"2faecfda85974fd5f077e01a2e8f63399200270f"},{"author":{"_account_id":38496,"name":"Andressa Cabistani","display_name":"Andressa","email":"acabistani@gmail.com","username":"andressadotpy","status":"I\u0027m a Software Engineer at Red Hat and I love Open Source and connect with people! Feel free to DM through IRC, I\u0027ll be delighted to chat"},"change_message_id":"4aed3f5a8dad3afcccc7979a8371beadc068f807","unresolved":false,"context_lines":[{"line_number":38,"context_line":"            if expected_hash !\u003d actual_hash:"},{"line_number":39,"context_line":"                raise DatabaseHashLocationMismatch("},{"line_number":40,"context_line":"                    \u0027Hash of account/container names does not match directory \u0027"},{"line_number":41,"context_line":"                    \u0027name for container %s/%s (possible hash_path_preffix/\u0027"},{"line_number":42,"context_line":"                    \u0027suffix change in swift.conf\u0027 % (account_name,"},{"line_number":43,"context_line":"                                                     container_name))"},{"line_number":44,"context_line":"        return None"}],"source_content_type":"text/x-python","patch_set":7,"id":"92a1a33f_8b6c6f46","line":41,"in_reply_to":"f3cd743a_d24194b6","updated":"2026-06-10 08:46:06.000000000","message":"Done","commit_id":"2faecfda85974fd5f077e01a2e8f63399200270f"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"e5a787cd6e4e5ab5a5de5eabb5e4e5864ff4d1a8","unresolved":false,"context_lines":[{"line_number":40,"context_line":"                    \u0027Hash of account/container names does not match directory \u0027"},{"line_number":41,"context_line":"                    \u0027name for container %s/%s (possible hash_path_prefix/\u0027"},{"line_number":42,"context_line":"                    \u0027suffix change in swift.conf)\u0027 % (account_name,"},{"line_number":43,"context_line":"                                                     container_name))"},{"line_number":44,"context_line":"        return None"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"3b20b467_96fe68e3","line":43,"updated":"2026-06-10 09:43:40.000000000","message":"pep8: E128 continuation line under-indented for visual indent","commit_id":"f1bfcf3dc97733a9b148232d1d592b8a6fad6d16"}],"swift/obj/auditor.py":[{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"2ccf4398299b5c4b0071f5213bd08315f348e010","unresolved":true,"context_lines":[{"line_number":297,"context_line":"                                  \u0027 quarantined: %(err)s\u0027,"},{"line_number":298,"context_line":"                                  {\u0027obj\u0027: location, \u0027err\u0027: err})"},{"line_number":299,"context_line":"            else:"},{"line_number":300,"context_line":"                self.errors +\u003d 1"},{"line_number":301,"context_line":"                self.logger.error("},{"line_number":302,"context_line":"                    \u0027ERROR Object %(obj)s has hash path mismatch \u0027"},{"line_number":303,"context_line":"                    \u0027(possible hash_path_prefix/suffix change): \u0027"}],"source_content_type":"text/x-python","patch_set":16,"id":"3f472424_ff29ce25","line":300,"updated":"2026-08-11 12:53:06.000000000","message":"This needs to be\n\n```\nself.logger.increment(\u0027errors\u0027)\nself.errors +\u003d 1\n```\n\nto increment the statsd errors as well","commit_id":"001c238e6dfa9aff15e4ca15523ff82172951211"}],"swift/obj/diskfile.py":[{"author":{"_account_id":38496,"name":"Andressa Cabistani","display_name":"Andressa","email":"acabistani@gmail.com","username":"andressadotpy","status":"I\u0027m a Software Engineer at Red Hat and I love Open Source and connect with people! Feel free to DM through IRC, I\u0027ll be delighted to chat"},"change_message_id":"e8aa8a7a83b4c0548a4264e09189c1f813ca7b95","unresolved":true,"context_lines":[{"line_number":2171,"context_line":"        return self._diskfile.manager"},{"line_number":2172,"context_line":""},{"line_number":2173,"context_line":"    def _init_checks(self):"},{"line_number":2174,"context_line":"        if self._fp is not None and self._fp.tell() \u003d\u003d 0:"},{"line_number":2175,"context_line":"            self._started_at_0 \u003d True"},{"line_number":2176,"context_line":"            if random.random() \u003c self._etag_validate_frac:"},{"line_number":2177,"context_line":"                self._iter_etag \u003d md5(usedforsecurity\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":2,"id":"495ec06e_8c792ae2","line":2174,"updated":"2026-05-07 11:00:55.000000000","message":"I added this check here to prevent AttributeErrors","commit_id":"a1e7a69aec5585bb2b50ce96e87ea98afc39a36b"},{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"7059d9a4453bfa65c7a7eb61164004f384e519e3","unresolved":true,"context_lines":[{"line_number":2771,"context_line":"        if hash_from_fs !\u003d hash_from_name:"},{"line_number":2772,"context_line":"            if quarantine_on_location_mismatch:"},{"line_number":2773,"context_line":"                try:"},{"line_number":2774,"context_line":"                    self._quarantine("},{"line_number":2775,"context_line":"                        data_file,"},{"line_number":2776,"context_line":"                        \"Hash of name in metadata does not match \""},{"line_number":2777,"context_line":"                        \"directory name\")"}],"source_content_type":"text/x-python","patch_set":4,"id":"85976684_a846cf73","line":2774,"updated":"2026-05-19 07:06:55.000000000","message":"This changes behavior a bit - before it was \"raise self._quarantine\", but now the returned exception is discarded and DiskFileHashLocationMismatch is raised below.\n\nOn rename failure this suppresses the OSError from quarantine_renamer and falls through to raise DiskFileHashLocationMismatch - the auditor then logs \"failed audit and was quarantined\" and bumps self.quarantines even though the file is still on disk.\n\nSuggestion: narrow the catch to (OSError, IOError) and re-raise, so the existing handler logs and increments self.errors.","commit_id":"0b905bd9d91f105e09f3b9228bcc47ed619a9329"},{"author":{"_account_id":38496,"name":"Andressa Cabistani","display_name":"Andressa","email":"acabistani@gmail.com","username":"andressadotpy","status":"I\u0027m a Software Engineer at Red Hat and I love Open Source and connect with people! Feel free to DM through IRC, I\u0027ll be delighted to chat"},"change_message_id":"af4aff3521f05d6fe61fab636c3ff3b4d874f33c","unresolved":true,"context_lines":[{"line_number":2771,"context_line":"        if hash_from_fs !\u003d hash_from_name:"},{"line_number":2772,"context_line":"            if quarantine_on_location_mismatch:"},{"line_number":2773,"context_line":"                try:"},{"line_number":2774,"context_line":"                    self._quarantine("},{"line_number":2775,"context_line":"                        data_file,"},{"line_number":2776,"context_line":"                        \"Hash of name in metadata does not match \""},{"line_number":2777,"context_line":"                        \"directory name\")"}],"source_content_type":"text/x-python","patch_set":4,"id":"be84c360_ec8e23b4","line":2774,"in_reply_to":"85976684_a846cf73","updated":"2026-05-19 12:20:22.000000000","message":"@cschwede@nvidia.com Thank you for your review, it was really helpful. I pushed some changes earlier related to that if you can take a look","commit_id":"0b905bd9d91f105e09f3b9228bcc47ed619a9329"}],"swift/obj/reconstructor.py":[{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"e6d872504d3cfe34d45831df321d0344291efb02","unresolved":true,"context_lines":[{"line_number":165,"context_line":"            logger or get_logger(conf, log_route\u003d\u0027object-reconstructor\u0027)"},{"line_number":166,"context_line":"        self.devices_dir \u003d conf.get(\u0027devices\u0027, \u0027/srv/node\u0027)"},{"line_number":167,"context_line":"        self.mount_check \u003d config_true_value(conf.get(\u0027mount_check\u0027, \u0027true\u0027))"},{"line_number":168,"context_line":"        self.quarantine_hash_location_mismatch \u003d config_true_value("},{"line_number":169,"context_line":"            conf.get(\u0027quarantine_when_hash_location_mismatch\u0027, \u0027false\u0027))"},{"line_number":170,"context_line":"        self.swift_dir \u003d conf.get(\u0027swift_dir\u0027, \u0027/etc/swift\u0027)"},{"line_number":171,"context_line":"        self.ring_ip \u003d conf.get(\u0027ring_ip\u0027, conf.get(\u0027bind_ip\u0027, \u00270.0.0.0\u0027))"}],"source_content_type":"text/x-python","patch_set":15,"id":"be5c1995_e08199bb","line":168,"updated":"2026-08-07 11:12:49.000000000","message":"This looks like unused code - likely to address the comment from Matt in PS7?","commit_id":"22c1a9c2591558bde349fd30831ec16664c3ed89"},{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"9dcc1652c5edb6c46212170b53e984b822f46f7c","unresolved":false,"context_lines":[{"line_number":165,"context_line":"            logger or get_logger(conf, log_route\u003d\u0027object-reconstructor\u0027)"},{"line_number":166,"context_line":"        self.devices_dir \u003d conf.get(\u0027devices\u0027, \u0027/srv/node\u0027)"},{"line_number":167,"context_line":"        self.mount_check \u003d config_true_value(conf.get(\u0027mount_check\u0027, \u0027true\u0027))"},{"line_number":168,"context_line":"        self.quarantine_hash_location_mismatch \u003d config_true_value("},{"line_number":169,"context_line":"            conf.get(\u0027quarantine_when_hash_location_mismatch\u0027, \u0027false\u0027))"},{"line_number":170,"context_line":"        self.swift_dir \u003d conf.get(\u0027swift_dir\u0027, \u0027/etc/swift\u0027)"},{"line_number":171,"context_line":"        self.ring_ip \u003d conf.get(\u0027ring_ip\u0027, conf.get(\u0027bind_ip\u0027, \u00270.0.0.0\u0027))"}],"source_content_type":"text/x-python","patch_set":15,"id":"4d829c4d_a85c5468","line":168,"in_reply_to":"033e607d_79900294","updated":"2026-08-18 12:49:38.000000000","message":"Done","commit_id":"22c1a9c2591558bde349fd30831ec16664c3ed89"},{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"b5c381aea1206b527d314d93b94fb5a23e16b8a9","unresolved":true,"context_lines":[{"line_number":165,"context_line":"            logger or get_logger(conf, log_route\u003d\u0027object-reconstructor\u0027)"},{"line_number":166,"context_line":"        self.devices_dir \u003d conf.get(\u0027devices\u0027, \u0027/srv/node\u0027)"},{"line_number":167,"context_line":"        self.mount_check \u003d config_true_value(conf.get(\u0027mount_check\u0027, \u0027true\u0027))"},{"line_number":168,"context_line":"        self.quarantine_hash_location_mismatch \u003d config_true_value("},{"line_number":169,"context_line":"            conf.get(\u0027quarantine_when_hash_location_mismatch\u0027, \u0027false\u0027))"},{"line_number":170,"context_line":"        self.swift_dir \u003d conf.get(\u0027swift_dir\u0027, \u0027/etc/swift\u0027)"},{"line_number":171,"context_line":"        self.ring_ip \u003d conf.get(\u0027ring_ip\u0027, conf.get(\u0027bind_ip\u0027, \u00270.0.0.0\u0027))"}],"source_content_type":"text/x-python","patch_set":15,"id":"033e607d_79900294","line":168,"in_reply_to":"5f80f305_476d8ea5","updated":"2026-08-17 15:56:56.000000000","message":"Still/again dead code","commit_id":"22c1a9c2591558bde349fd30831ec16664c3ed89"},{"author":{"_account_id":38496,"name":"Andressa Cabistani","display_name":"Andressa","email":"acabistani@gmail.com","username":"andressadotpy","status":"I\u0027m a Software Engineer at Red Hat and I love Open Source and connect with people! Feel free to DM through IRC, I\u0027ll be delighted to chat"},"change_message_id":"b08d9fd28aa1f860c1459d08a8839ba02fa97971","unresolved":false,"context_lines":[{"line_number":165,"context_line":"            logger or get_logger(conf, log_route\u003d\u0027object-reconstructor\u0027)"},{"line_number":166,"context_line":"        self.devices_dir \u003d conf.get(\u0027devices\u0027, \u0027/srv/node\u0027)"},{"line_number":167,"context_line":"        self.mount_check \u003d config_true_value(conf.get(\u0027mount_check\u0027, \u0027true\u0027))"},{"line_number":168,"context_line":"        self.quarantine_hash_location_mismatch \u003d config_true_value("},{"line_number":169,"context_line":"            conf.get(\u0027quarantine_when_hash_location_mismatch\u0027, \u0027false\u0027))"},{"line_number":170,"context_line":"        self.swift_dir \u003d conf.get(\u0027swift_dir\u0027, \u0027/etc/swift\u0027)"},{"line_number":171,"context_line":"        self.ring_ip \u003d conf.get(\u0027ring_ip\u0027, conf.get(\u0027bind_ip\u0027, \u00270.0.0.0\u0027))"}],"source_content_type":"text/x-python","patch_set":15,"id":"5f80f305_476d8ea5","line":168,"in_reply_to":"be5c1995_e08199bb","updated":"2026-08-10 11:43:02.000000000","message":"Done","commit_id":"22c1a9c2591558bde349fd30831ec16664c3ed89"}],"swift/obj/replicator.py":[{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"e6d872504d3cfe34d45831df321d0344291efb02","unresolved":true,"context_lines":[{"line_number":163,"context_line":"                    \u0027configuration to use option object-replicator/interval.\u0027)"},{"line_number":164,"context_line":"        self.rsync_timeout \u003d int(conf.get(\u0027rsync_timeout\u0027,"},{"line_number":165,"context_line":"                                          DEFAULT_RSYNC_TIMEOUT))"},{"line_number":166,"context_line":"        self.rsync_io_timeout \u003d conf.get(\u0027rsync_io_timeout\u0027, \u002730\u0027)"},{"line_number":167,"context_line":"        self.quarantine_hash_location_mismatch \u003d config_true_value("},{"line_number":168,"context_line":"            conf.get(\u0027quarantine_when_hash_location_mismatch\u0027, \u0027false\u0027))"},{"line_number":169,"context_line":"        self.rsync_bwlimit \u003d conf.get(\u0027rsync_bwlimit\u0027, \u00270\u0027)"}],"source_content_type":"text/x-python","patch_set":15,"id":"d49b8218_b9c87b20","line":166,"updated":"2026-08-07 11:12:49.000000000","message":"This looks like unused code - likely to address the comment from Matt in PS7?","commit_id":"22c1a9c2591558bde349fd30831ec16664c3ed89"},{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"9dcc1652c5edb6c46212170b53e984b822f46f7c","unresolved":false,"context_lines":[{"line_number":163,"context_line":"                    \u0027configuration to use option object-replicator/interval.\u0027)"},{"line_number":164,"context_line":"        self.rsync_timeout \u003d int(conf.get(\u0027rsync_timeout\u0027,"},{"line_number":165,"context_line":"                                          DEFAULT_RSYNC_TIMEOUT))"},{"line_number":166,"context_line":"        self.rsync_io_timeout \u003d conf.get(\u0027rsync_io_timeout\u0027, \u002730\u0027)"},{"line_number":167,"context_line":"        self.quarantine_hash_location_mismatch \u003d config_true_value("},{"line_number":168,"context_line":"            conf.get(\u0027quarantine_when_hash_location_mismatch\u0027, \u0027false\u0027))"},{"line_number":169,"context_line":"        self.rsync_bwlimit \u003d conf.get(\u0027rsync_bwlimit\u0027, \u00270\u0027)"}],"source_content_type":"text/x-python","patch_set":15,"id":"a4335827_7ab35562","line":166,"in_reply_to":"c1ed2c68_738f1318","updated":"2026-08-18 12:49:38.000000000","message":"Done","commit_id":"22c1a9c2591558bde349fd30831ec16664c3ed89"},{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"b5c381aea1206b527d314d93b94fb5a23e16b8a9","unresolved":true,"context_lines":[{"line_number":163,"context_line":"                    \u0027configuration to use option object-replicator/interval.\u0027)"},{"line_number":164,"context_line":"        self.rsync_timeout \u003d int(conf.get(\u0027rsync_timeout\u0027,"},{"line_number":165,"context_line":"                                          DEFAULT_RSYNC_TIMEOUT))"},{"line_number":166,"context_line":"        self.rsync_io_timeout \u003d conf.get(\u0027rsync_io_timeout\u0027, \u002730\u0027)"},{"line_number":167,"context_line":"        self.quarantine_hash_location_mismatch \u003d config_true_value("},{"line_number":168,"context_line":"            conf.get(\u0027quarantine_when_hash_location_mismatch\u0027, \u0027false\u0027))"},{"line_number":169,"context_line":"        self.rsync_bwlimit \u003d conf.get(\u0027rsync_bwlimit\u0027, \u00270\u0027)"}],"source_content_type":"text/x-python","patch_set":15,"id":"c1ed2c68_738f1318","line":166,"in_reply_to":"c4e2f948_e6c567ab","updated":"2026-08-17 15:56:56.000000000","message":"Still/again dead code","commit_id":"22c1a9c2591558bde349fd30831ec16664c3ed89"},{"author":{"_account_id":38496,"name":"Andressa Cabistani","display_name":"Andressa","email":"acabistani@gmail.com","username":"andressadotpy","status":"I\u0027m a Software Engineer at Red Hat and I love Open Source and connect with people! Feel free to DM through IRC, I\u0027ll be delighted to chat"},"change_message_id":"b08d9fd28aa1f860c1459d08a8839ba02fa97971","unresolved":false,"context_lines":[{"line_number":163,"context_line":"                    \u0027configuration to use option object-replicator/interval.\u0027)"},{"line_number":164,"context_line":"        self.rsync_timeout \u003d int(conf.get(\u0027rsync_timeout\u0027,"},{"line_number":165,"context_line":"                                          DEFAULT_RSYNC_TIMEOUT))"},{"line_number":166,"context_line":"        self.rsync_io_timeout \u003d conf.get(\u0027rsync_io_timeout\u0027, \u002730\u0027)"},{"line_number":167,"context_line":"        self.quarantine_hash_location_mismatch \u003d config_true_value("},{"line_number":168,"context_line":"            conf.get(\u0027quarantine_when_hash_location_mismatch\u0027, \u0027false\u0027))"},{"line_number":169,"context_line":"        self.rsync_bwlimit \u003d conf.get(\u0027rsync_bwlimit\u0027, \u00270\u0027)"}],"source_content_type":"text/x-python","patch_set":15,"id":"c4e2f948_e6c567ab","line":166,"in_reply_to":"d49b8218_b9c87b20","updated":"2026-08-10 11:43:02.000000000","message":"Done","commit_id":"22c1a9c2591558bde349fd30831ec16664c3ed89"}],"swift/obj/server.py":[{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"e6d872504d3cfe34d45831df321d0344291efb02","unresolved":true,"context_lines":[{"line_number":162,"context_line":"            config_true_value(conf.get(\u0027keep_cache_private\u0027, \u0027false\u0027))"},{"line_number":163,"context_line":"        self.keep_cache_slo_manifest \u003d \\"},{"line_number":164,"context_line":"            config_true_value(conf.get(\u0027keep_cache_slo_manifest\u0027, \u0027false\u0027))"},{"line_number":165,"context_line":"        self.quarantine_hash_location_mismatch \u003d config_true_value("},{"line_number":166,"context_line":"            conf.get(\u0027quarantine_when_hash_location_mismatch\u0027, \u0027false\u0027))"},{"line_number":167,"context_line":"        self.cooperative_period \u003d int(conf.get(\"cooperative_period\", 0))"},{"line_number":168,"context_line":"        self.etag_validate_frac \u003d config_percent_value("}],"source_content_type":"text/x-python","patch_set":15,"id":"441fc81c_0af266f7","line":165,"updated":"2026-08-07 11:12:49.000000000","message":"This looks like unused code - likely to address the comment from Matt in PS7?","commit_id":"22c1a9c2591558bde349fd30831ec16664c3ed89"},{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"9dcc1652c5edb6c46212170b53e984b822f46f7c","unresolved":false,"context_lines":[{"line_number":162,"context_line":"            config_true_value(conf.get(\u0027keep_cache_private\u0027, \u0027false\u0027))"},{"line_number":163,"context_line":"        self.keep_cache_slo_manifest \u003d \\"},{"line_number":164,"context_line":"            config_true_value(conf.get(\u0027keep_cache_slo_manifest\u0027, \u0027false\u0027))"},{"line_number":165,"context_line":"        self.quarantine_hash_location_mismatch \u003d config_true_value("},{"line_number":166,"context_line":"            conf.get(\u0027quarantine_when_hash_location_mismatch\u0027, \u0027false\u0027))"},{"line_number":167,"context_line":"        self.cooperative_period \u003d int(conf.get(\"cooperative_period\", 0))"},{"line_number":168,"context_line":"        self.etag_validate_frac \u003d config_percent_value("}],"source_content_type":"text/x-python","patch_set":15,"id":"1ca46889_9183e900","line":165,"in_reply_to":"003f04de_f5122cb5","updated":"2026-08-18 12:49:38.000000000","message":"Done","commit_id":"22c1a9c2591558bde349fd30831ec16664c3ed89"},{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"b5c381aea1206b527d314d93b94fb5a23e16b8a9","unresolved":true,"context_lines":[{"line_number":162,"context_line":"            config_true_value(conf.get(\u0027keep_cache_private\u0027, \u0027false\u0027))"},{"line_number":163,"context_line":"        self.keep_cache_slo_manifest \u003d \\"},{"line_number":164,"context_line":"            config_true_value(conf.get(\u0027keep_cache_slo_manifest\u0027, \u0027false\u0027))"},{"line_number":165,"context_line":"        self.quarantine_hash_location_mismatch \u003d config_true_value("},{"line_number":166,"context_line":"            conf.get(\u0027quarantine_when_hash_location_mismatch\u0027, \u0027false\u0027))"},{"line_number":167,"context_line":"        self.cooperative_period \u003d int(conf.get(\"cooperative_period\", 0))"},{"line_number":168,"context_line":"        self.etag_validate_frac \u003d config_percent_value("}],"source_content_type":"text/x-python","patch_set":15,"id":"003f04de_f5122cb5","line":165,"in_reply_to":"34ae5de4_aceeb426","updated":"2026-08-17 15:56:56.000000000","message":"Still/again dead code","commit_id":"22c1a9c2591558bde349fd30831ec16664c3ed89"},{"author":{"_account_id":38496,"name":"Andressa Cabistani","display_name":"Andressa","email":"acabistani@gmail.com","username":"andressadotpy","status":"I\u0027m a Software Engineer at Red Hat and I love Open Source and connect with people! Feel free to DM through IRC, I\u0027ll be delighted to chat"},"change_message_id":"b08d9fd28aa1f860c1459d08a8839ba02fa97971","unresolved":false,"context_lines":[{"line_number":162,"context_line":"            config_true_value(conf.get(\u0027keep_cache_private\u0027, \u0027false\u0027))"},{"line_number":163,"context_line":"        self.keep_cache_slo_manifest \u003d \\"},{"line_number":164,"context_line":"            config_true_value(conf.get(\u0027keep_cache_slo_manifest\u0027, \u0027false\u0027))"},{"line_number":165,"context_line":"        self.quarantine_hash_location_mismatch \u003d config_true_value("},{"line_number":166,"context_line":"            conf.get(\u0027quarantine_when_hash_location_mismatch\u0027, \u0027false\u0027))"},{"line_number":167,"context_line":"        self.cooperative_period \u003d int(conf.get(\"cooperative_period\", 0))"},{"line_number":168,"context_line":"        self.etag_validate_frac \u003d config_percent_value("}],"source_content_type":"text/x-python","patch_set":15,"id":"34ae5de4_aceeb426","line":165,"in_reply_to":"441fc81c_0af266f7","updated":"2026-08-10 11:43:02.000000000","message":"Done","commit_id":"22c1a9c2591558bde349fd30831ec16664c3ed89"}],"swift/obj/ssync_receiver.py":[{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"e6d872504d3cfe34d45831df321d0344291efb02","unresolved":true,"context_lines":[{"line_number":393,"context_line":"        except exceptions.DiskFileNotExist:"},{"line_number":394,"context_line":"            return {}"},{"line_number":395,"context_line":"        try:"},{"line_number":396,"context_line":"            df._quarantine_hash_location_mismatch \u003d getattr("},{"line_number":397,"context_line":"                self.app, \u0027quarantine_hash_location_mismatch\u0027, True)"},{"line_number":398,"context_line":"            df.open()"},{"line_number":399,"context_line":"        except exceptions.DiskFileDeleted as err:"}],"source_content_type":"text/x-python","patch_set":15,"id":"1d5e09b6_412cae4c","line":396,"updated":"2026-08-07 11:12:49.000000000","message":"This looks like unused code - likely to address the comment from Matt in PS7?","commit_id":"22c1a9c2591558bde349fd30831ec16664c3ed89"},{"author":{"_account_id":38496,"name":"Andressa Cabistani","display_name":"Andressa","email":"acabistani@gmail.com","username":"andressadotpy","status":"I\u0027m a Software Engineer at Red Hat and I love Open Source and connect with people! Feel free to DM through IRC, I\u0027ll be delighted to chat"},"change_message_id":"b08d9fd28aa1f860c1459d08a8839ba02fa97971","unresolved":false,"context_lines":[{"line_number":393,"context_line":"        except exceptions.DiskFileNotExist:"},{"line_number":394,"context_line":"            return {}"},{"line_number":395,"context_line":"        try:"},{"line_number":396,"context_line":"            df._quarantine_hash_location_mismatch \u003d getattr("},{"line_number":397,"context_line":"                self.app, \u0027quarantine_hash_location_mismatch\u0027, True)"},{"line_number":398,"context_line":"            df.open()"},{"line_number":399,"context_line":"        except exceptions.DiskFileDeleted as err:"}],"source_content_type":"text/x-python","patch_set":15,"id":"c69e8eb4_021a835b","line":396,"in_reply_to":"1d5e09b6_412cae4c","updated":"2026-08-10 11:43:02.000000000","message":"Done","commit_id":"22c1a9c2591558bde349fd30831ec16664c3ed89"},{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"9dcc1652c5edb6c46212170b53e984b822f46f7c","unresolved":false,"context_lines":[{"line_number":393,"context_line":"        except exceptions.DiskFileNotExist:"},{"line_number":394,"context_line":"            return {}"},{"line_number":395,"context_line":"        try:"},{"line_number":396,"context_line":"            df._quarantine_hash_location_mismatch \u003d getattr("},{"line_number":397,"context_line":"                self.app, \u0027quarantine_hash_location_mismatch\u0027, True)"},{"line_number":398,"context_line":"            df.open()"},{"line_number":399,"context_line":"        except exceptions.DiskFileDeleted as err:"}],"source_content_type":"text/x-python","patch_set":15,"id":"2354a147_cc803eeb","line":396,"in_reply_to":"2407015f_0705fd6a","updated":"2026-08-18 12:49:38.000000000","message":"Done","commit_id":"22c1a9c2591558bde349fd30831ec16664c3ed89"},{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"b5c381aea1206b527d314d93b94fb5a23e16b8a9","unresolved":true,"context_lines":[{"line_number":393,"context_line":"        except exceptions.DiskFileNotExist:"},{"line_number":394,"context_line":"            return {}"},{"line_number":395,"context_line":"        try:"},{"line_number":396,"context_line":"            df._quarantine_hash_location_mismatch \u003d getattr("},{"line_number":397,"context_line":"                self.app, \u0027quarantine_hash_location_mismatch\u0027, True)"},{"line_number":398,"context_line":"            df.open()"},{"line_number":399,"context_line":"        except exceptions.DiskFileDeleted as err:"}],"source_content_type":"text/x-python","patch_set":15,"id":"2407015f_0705fd6a","line":396,"in_reply_to":"c69e8eb4_021a835b","updated":"2026-08-17 15:56:56.000000000","message":"Still/again dead code","commit_id":"22c1a9c2591558bde349fd30831ec16664c3ed89"}],"swift/obj/ssync_sender.py":[{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"e6d872504d3cfe34d45831df321d0344291efb02","unresolved":true,"context_lines":[{"line_number":399,"context_line":"            url_path \u003d urllib.parse.quote("},{"line_number":400,"context_line":"                \u0027/%s/%s/%s\u0027 % (df.account, df.container, df.obj))"},{"line_number":401,"context_line":"            try:"},{"line_number":402,"context_line":"                df._quarantine_hash_location_mismatch \u003d getattr("},{"line_number":403,"context_line":"                    self.daemon, \u0027quarantine_hash_location_mismatch\u0027, True)"},{"line_number":404,"context_line":"                df.open()"},{"line_number":405,"context_line":"                if want.get(\u0027data\u0027):"}],"source_content_type":"text/x-python","patch_set":15,"id":"343701bb_0a2c6492","line":402,"updated":"2026-08-07 11:12:49.000000000","message":"This looks like unused code - likely to address the comment from Matt in PS7?","commit_id":"22c1a9c2591558bde349fd30831ec16664c3ed89"},{"author":{"_account_id":38496,"name":"Andressa Cabistani","display_name":"Andressa","email":"acabistani@gmail.com","username":"andressadotpy","status":"I\u0027m a Software Engineer at Red Hat and I love Open Source and connect with people! Feel free to DM through IRC, I\u0027ll be delighted to chat"},"change_message_id":"b08d9fd28aa1f860c1459d08a8839ba02fa97971","unresolved":false,"context_lines":[{"line_number":399,"context_line":"            url_path \u003d urllib.parse.quote("},{"line_number":400,"context_line":"                \u0027/%s/%s/%s\u0027 % (df.account, df.container, df.obj))"},{"line_number":401,"context_line":"            try:"},{"line_number":402,"context_line":"                df._quarantine_hash_location_mismatch \u003d getattr("},{"line_number":403,"context_line":"                    self.daemon, \u0027quarantine_hash_location_mismatch\u0027, True)"},{"line_number":404,"context_line":"                df.open()"},{"line_number":405,"context_line":"                if want.get(\u0027data\u0027):"}],"source_content_type":"text/x-python","patch_set":15,"id":"5edede1a_83fcece5","line":402,"in_reply_to":"343701bb_0a2c6492","updated":"2026-08-10 11:43:02.000000000","message":"Done","commit_id":"22c1a9c2591558bde349fd30831ec16664c3ed89"},{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"9dcc1652c5edb6c46212170b53e984b822f46f7c","unresolved":false,"context_lines":[{"line_number":399,"context_line":"            url_path \u003d urllib.parse.quote("},{"line_number":400,"context_line":"                \u0027/%s/%s/%s\u0027 % (df.account, df.container, df.obj))"},{"line_number":401,"context_line":"            try:"},{"line_number":402,"context_line":"                df._quarantine_hash_location_mismatch \u003d getattr("},{"line_number":403,"context_line":"                    self.daemon, \u0027quarantine_hash_location_mismatch\u0027, True)"},{"line_number":404,"context_line":"                df.open()"},{"line_number":405,"context_line":"                if want.get(\u0027data\u0027):"}],"source_content_type":"text/x-python","patch_set":15,"id":"2ee41aca_dda1c365","line":402,"in_reply_to":"5d8b235f_7c8d49fd","updated":"2026-08-18 12:49:38.000000000","message":"Done","commit_id":"22c1a9c2591558bde349fd30831ec16664c3ed89"},{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"b5c381aea1206b527d314d93b94fb5a23e16b8a9","unresolved":true,"context_lines":[{"line_number":399,"context_line":"            url_path \u003d urllib.parse.quote("},{"line_number":400,"context_line":"                \u0027/%s/%s/%s\u0027 % (df.account, df.container, df.obj))"},{"line_number":401,"context_line":"            try:"},{"line_number":402,"context_line":"                df._quarantine_hash_location_mismatch \u003d getattr("},{"line_number":403,"context_line":"                    self.daemon, \u0027quarantine_hash_location_mismatch\u0027, True)"},{"line_number":404,"context_line":"                df.open()"},{"line_number":405,"context_line":"                if want.get(\u0027data\u0027):"}],"source_content_type":"text/x-python","patch_set":15,"id":"5d8b235f_7c8d49fd","line":402,"in_reply_to":"5edede1a_83fcece5","updated":"2026-08-17 15:56:56.000000000","message":"Still/again dead code","commit_id":"22c1a9c2591558bde349fd30831ec16664c3ed89"}],"test/probe/test_object_hash_location_mismatch.py":[{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"b5c381aea1206b527d314d93b94fb5a23e16b8a9","unresolved":true,"context_lines":[{"line_number":102,"context_line":"            old_swift_dir \u003d manager.SWIFT_DIR"},{"line_number":103,"context_line":"            manager.SWIFT_DIR \u003d self.conf_dest"},{"line_number":104,"context_line":"            try:"},{"line_number":105,"context_line":"                Manager([\u0027object-auditor\u0027]).once()"},{"line_number":106,"context_line":"            finally:"},{"line_number":107,"context_line":"                manager.SWIFT_DIR \u003d old_swift_dir"},{"line_number":108,"context_line":"        finally:"}],"source_content_type":"text/x-python","patch_set":18,"id":"5f0eca21_5447541e","line":105,"updated":"2026-08-17 15:56:56.000000000","message":"If this fails the whole test passes), even if the auditor failed. This does not verify that the change itself works. You need to ensure it run successfully, otherwise the quarantine count would never change. For example:\n\n```\nstatus \u003d Manager([\u0027object-auditor\u0027]).once()\n# ...\n# Later\n# ...\nself.assertEqual(0, status, \u0027object-auditor pass failed (status %s)\u0027 % status)\n```","commit_id":"ef58dcb865dd446b239e002784afd53186b1bfe8"},{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"9dcc1652c5edb6c46212170b53e984b822f46f7c","unresolved":false,"context_lines":[{"line_number":102,"context_line":"            old_swift_dir \u003d manager.SWIFT_DIR"},{"line_number":103,"context_line":"            manager.SWIFT_DIR \u003d self.conf_dest"},{"line_number":104,"context_line":"            try:"},{"line_number":105,"context_line":"                Manager([\u0027object-auditor\u0027]).once()"},{"line_number":106,"context_line":"            finally:"},{"line_number":107,"context_line":"                manager.SWIFT_DIR \u003d old_swift_dir"},{"line_number":108,"context_line":"        finally:"}],"source_content_type":"text/x-python","patch_set":18,"id":"b558a83d_6a9ab915","line":105,"in_reply_to":"5f0eca21_5447541e","updated":"2026-08-18 12:49:38.000000000","message":"Done","commit_id":"ef58dcb865dd446b239e002784afd53186b1bfe8"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"4fff81d505c96ee155b68f9e3159cfea6ca2240b","unresolved":false,"context_lines":[{"line_number":108,"context_line":"        finally:"},{"line_number":109,"context_line":"            with open(swift_conf_path, \u0027w\u0027) as f:"},{"line_number":110,"context_line":"                f.write(original_conf)"},{"line_number":111,"context_line":"        "},{"line_number":112,"context_line":"        self.assertEqual(0, status,"},{"line_number":113,"context_line":"                         \u0027object-auditor pass failed (status %s)\u0027 % status)"},{"line_number":114,"context_line":"        quarantine_count_after \u003d self.get_quarantine_count()"}],"source_content_type":"text/x-python","patch_set":19,"id":"1c8b7bbc_b78b4f5c","line":111,"updated":"2026-08-18 12:32:11.000000000","message":"pep8: W293 blank line contains whitespace","commit_id":"c015ca79e54d13908e331f44b02f70c892f3c346"}],"test/unit/account/test_auditor.py":[{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"2ccf4398299b5c4b0071f5213bd08315f348e010","unresolved":true,"context_lines":[{"line_number":209,"context_line":"        self.assertEqual(auditor_instance.failures, 1)"},{"line_number":210,"context_line":"        mock_broker.quarantine.assert_not_called()"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"    def test_audit_exception_handler_never_quarantine_with_config_true(self):"},{"line_number":213,"context_line":"        conf \u003d {\u0027quarantine_when_hash_location_mismatch\u0027: \u0027true\u0027}"},{"line_number":214,"context_line":"        auditor_instance \u003d auditor.AccountAuditor(conf, logger\u003ddebug_logger())"},{"line_number":215,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"17f366c8_a0348ba5","line":212,"updated":"2026-08-11 12:53:06.000000000","message":"You\u0027re testing here that the auditor never quarantines - even if `\u0027quarantine_when_hash_location_mismatch\u0027: \u0027true\u0027`. Besides this value, both tests are equal, so you can remove a lot of duplicate code and just have a single test to ensure nothing gets quarantined (which is the behavior before this patch).","commit_id":"001c238e6dfa9aff15e4ca15523ff82172951211"},{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"2ccf4398299b5c4b0071f5213bd08315f348e010","unresolved":true,"context_lines":[{"line_number":230,"context_line":"            auditor_instance.audit(\u0027/fake/path/test.db\u0027)"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"        self.assertEqual(auditor_instance.failures, 1)"},{"line_number":233,"context_line":"        mock_broker.quarantine.assert_not_called()"},{"line_number":234,"context_line":""},{"line_number":235,"context_line":""},{"line_number":236,"context_line":"if __name__ \u003d\u003d \u0027__main__\u0027:"}],"source_content_type":"text/x-python","patch_set":16,"id":"2fcd4d0e_3b575444","line":233,"updated":"2026-08-11 12:53:06.000000000","message":"Here you are ensuring that quarantine never gets called","commit_id":"001c238e6dfa9aff15e4ca15523ff82172951211"}],"test/unit/container/test_auditor.py":[{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"2ccf4398299b5c4b0071f5213bd08315f348e010","unresolved":true,"context_lines":[{"line_number":135,"context_line":"        self.assertEqual(auditor_instance.failures, 1)"},{"line_number":136,"context_line":"        mock_broker.quarantine.assert_not_called()"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"    def test_audit_exception_handler_never_quarantine_with_config_true(self):"},{"line_number":139,"context_line":"        conf \u003d {\u0027quarantine_when_hash_location_mismatch\u0027: \u0027true\u0027}"},{"line_number":140,"context_line":"        auditor_instance \u003d auditor.ContainerAuditor("},{"line_number":141,"context_line":"            conf, logger\u003ddebug_logger())"}],"source_content_type":"text/x-python","patch_set":16,"id":"34bfed42_56fb685d","line":138,"updated":"2026-08-11 12:53:06.000000000","message":"You\u0027re testing here that the auditor never quarantines - even if `\u0027quarantine_when_hash_location_mismatch\u0027: \u0027true\u0027`. Besides this value, both tests are equal, so you can remove a lot of duplicate code and just have a single test to ensure nothing gets quarantined (which is the behavior before this patch).","commit_id":"001c238e6dfa9aff15e4ca15523ff82172951211"},{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"2ccf4398299b5c4b0071f5213bd08315f348e010","unresolved":true,"context_lines":[{"line_number":156,"context_line":"            auditor_instance.audit(\u0027/fake/path/test.db\u0027)"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"        self.assertEqual(auditor_instance.failures, 1)"},{"line_number":159,"context_line":"        mock_broker.quarantine.assert_not_called()"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"if __name__ \u003d\u003d \u0027__main__\u0027:"}],"source_content_type":"text/x-python","patch_set":16,"id":"9495c3c9_d10c52e5","line":159,"updated":"2026-08-11 12:53:06.000000000","message":"Here you are ensuring that quarantine never gets called","commit_id":"001c238e6dfa9aff15e4ca15523ff82172951211"}],"test/unit/obj/test_diskfile.py":[{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"6e2335a1200cb53187b67e25df6ac014389ed506","unresolved":false,"context_lines":[{"line_number":5558,"context_line":"            diskfile.AuditLocation(hashdir, self.existing_device, \u00270\u0027,"},{"line_number":5559,"context_line":"                                   policy\u003dPOLICIES.default))"},{"line_number":5560,"context_line":"        df._quarantine_hash_location_mismatch \u003d False"},{"line_number":5561,"context_line":"        self.assertRaises(DiskFileHashLocationMismatch, df.open)"},{"line_number":5562,"context_line":""},{"line_number":5563,"context_line":"    def test_close_error(self):"},{"line_number":5564,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"dcadd415_8af13e2c","line":5561,"updated":"2026-07-10 07:13:38.000000000","message":"NIT: This is cool, but do we want to duplicate this test and make it something like `test_from_audit_location_with_mismatched_hash_quarantine_false` or something then leave the old on as it is?\n\nWhy, because testing the default/legecy quarantine path is now untested. What happens by default. ie. default patch \u003d\u003d attribute absent which what, defaults to True so would still quarantine?. That\u0027s now not tested.","commit_id":"2faecfda85974fd5f077e01a2e8f63399200270f"},{"author":{"_account_id":38496,"name":"Andressa Cabistani","display_name":"Andressa","email":"acabistani@gmail.com","username":"andressadotpy","status":"I\u0027m a Software Engineer at Red Hat and I love Open Source and connect with people! Feel free to DM through IRC, I\u0027ll be delighted to chat"},"change_message_id":"0155cd93ba9a4adb1ae42cf93bdf763d91dbb75c","unresolved":false,"context_lines":[{"line_number":5558,"context_line":"            diskfile.AuditLocation(hashdir, self.existing_device, \u00270\u0027,"},{"line_number":5559,"context_line":"                                   policy\u003dPOLICIES.default))"},{"line_number":5560,"context_line":"        df._quarantine_hash_location_mismatch \u003d False"},{"line_number":5561,"context_line":"        self.assertRaises(DiskFileHashLocationMismatch, df.open)"},{"line_number":5562,"context_line":""},{"line_number":5563,"context_line":"    def test_close_error(self):"},{"line_number":5564,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"9c557d98_2c1bddf0","line":5561,"in_reply_to":"dcadd415_8af13e2c","updated":"2026-07-14 09:54:48.000000000","message":"Done!","commit_id":"2faecfda85974fd5f077e01a2e8f63399200270f"}]}
