)]}'
{"/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"},"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"}],"/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"}],"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"},"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"},"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"},"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"},"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"},"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"},"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/diskfile.py":[{"author":{"_account_id":38496,"name":"Andressa Cabistani","display_name":"Andressa","email":"acabistani@gmail.com","username":"andressadotpy"},"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"},"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"}],"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"},"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"}]}
