)]}'
{"id":"openstack%2Fswift~1005834","triplet_id":"openstack%2Fswift~master~I9bc13cc205501b37e4bb25310f362ce060f77f56","project":"openstack/swift","branch":"master","attention_set":{},"removed_from_attention_set":{"1179":{"account":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"last_update":"2026-09-17 20:49:54.000000000","reason":"Change was abandoned"}},"hashtags":[],"change_id":"I9bc13cc205501b37e4bb25310f362ce060f77f56","subject":"sq? relinker: Add audit step to quarantine stale hash directories","status":"ABANDONED","created":"2026-09-16 07:51:58.000000000","updated":"2026-09-17 20:49:54.000000000","total_comment_count":3,"unresolved_comment_count":0,"has_review_started":true,"meta_rev_id":"fa2e8cd4ed27f943b21ae973996467dab966d76c","_number":1005834,"virtual_id_number":1005834,"owner":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"actions":{},"labels":{"Verified":{"recommended":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"tag":"autogenerated:zuul:check","value":1,"date":"2026-09-16 08:08:14.000000000","permitted_voting_range":{"min":-2,"max":2},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"_account_id":38767,"name":"Wael Halbawi","display_name":"Wael Halbawi","email":"whalbawi@nvidia.com","username":"whalbawi"}],"values":{"-2":"Fails","-1":"Doesn\u0027t seem to work"," 0":"No score","+1":"Works for me","+2":"Verified"},"description":"","value":1,"default_value":0,"optional":true},"Code-Review":{"recommended":{"_account_id":38767,"name":"Wael Halbawi","display_name":"Wael Halbawi","email":"whalbawi@nvidia.com","username":"whalbawi"},"all":[{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"value":1,"date":"2026-09-16 16:20:27.000000000","permitted_voting_range":{"min":-1,"max":1},"_account_id":38767,"name":"Wael Halbawi","display_name":"Wael Halbawi","email":"whalbawi@nvidia.com","username":"whalbawi"}],"values":{"-2":"Do not merge","-1":"This patch needs further work before it can be merged"," 0":"No score","+1":"Looks good to me, but someone else must approve","+2":"Looks good to me (core reviewer)"},"description":"","value":1,"default_value":0,"optional":true},"Workflow":{"all":[{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"_account_id":38767,"name":"Wael Halbawi","display_name":"Wael Halbawi","email":"whalbawi@nvidia.com","username":"whalbawi"}],"values":{"-1":"Work in progress"," 0":"Ready for reviews","+1":"Approved"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"REVIEWER":[{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"_account_id":38767,"name":"Wael Halbawi","display_name":"Wael Halbawi","email":"whalbawi@nvidia.com","username":"whalbawi"}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2026-09-16 08:08:14.000000000","updated_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"reviewer":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"state":"REVIEWER"},{"updated":"2026-09-16 16:20:23.000000000","updated_by":{"_account_id":38767,"name":"Wael Halbawi","display_name":"Wael Halbawi","email":"whalbawi@nvidia.com","username":"whalbawi"},"reviewer":{"_account_id":38767,"name":"Wael Halbawi","display_name":"Wael Halbawi","email":"whalbawi@nvidia.com","username":"whalbawi"},"state":"CC"},{"updated":"2026-09-16 16:20:27.000000000","updated_by":{"_account_id":38767,"name":"Wael Halbawi","display_name":"Wael Halbawi","email":"whalbawi@nvidia.com","username":"whalbawi"},"reviewer":{"_account_id":38767,"name":"Wael Halbawi","display_name":"Wael Halbawi","email":"whalbawi@nvidia.com","username":"whalbawi"},"state":"REVIEWER"}],"messages":[{"id":"3b8e361811e0d8bb8790f0875f4297603669177f","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"date":"2026-09-16 07:51:58.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"8a52ed71c687e225879b94bfeb9a95b989ca5144","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-09-16 08:08:14.000000000","message":"Patch Set 1: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/515c4654ec804154ab9ed16632247733\n\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/534012beedff4a37a478edfc21511284 : SUCCESS in 10m 48s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/8c3ddf830e12421595836aa82f7f2a93 : SUCCESS in 9m 30s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/bcb7e93d76294a87ae76ccc53ed2f1c0 : SUCCESS in 4m 11s","accounts_in_message":[],"_revision_number":1},{"id":"3d3be23be1fd08beae4787cfc71b008bc38cac19","author":{"_account_id":38767,"name":"Wael Halbawi","display_name":"Wael Halbawi","email":"whalbawi@nvidia.com","username":"whalbawi"},"date":"2026-09-16 16:20:23.000000000","message":"Patch Set 1:\n\n(2 comments)","accounts_in_message":[],"_revision_number":1},{"id":"733c9608c3ef541666aa75abfb4856b6de4301d6","author":{"_account_id":38767,"name":"Wael Halbawi","display_name":"Wael Halbawi","email":"whalbawi@nvidia.com","username":"whalbawi"},"date":"2026-09-16 16:20:27.000000000","message":"Patch Set 1: Code-Review+1","accounts_in_message":[],"_revision_number":1},{"id":"8da0154e9742b31121879a01d5dec0f64ac4dd7c","author":{"_account_id":38767,"name":"Wael Halbawi","display_name":"Wael Halbawi","email":"whalbawi@nvidia.com","username":"whalbawi"},"date":"2026-09-17 16:25:14.000000000","message":"Patch Set 1:\n\n(1 comment)","accounts_in_message":[],"_revision_number":1},{"id":"fa2e8cd4ed27f943b21ae973996467dab966d76c","tag":"autogenerated:gerrit:abandon","author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"date":"2026-09-17 20:49:54.000000000","message":"Abandoned\n\nall better as 966980: relinker: Add audit step to quarantine stale hash directories | https://review.opendev.org/c/openstack/swift/+/966980","accounts_in_message":[],"_revision_number":1}],"current_revision_number":1,"current_revision":"f9e606adccedaeb50916005f97a4d5a81e253223","revisions":{"f9e606adccedaeb50916005f97a4d5a81e253223":{"kind":"REWORK","_number":1,"created":"2026-09-16 07:51:58.000000000","uploader":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"ref":"refs/changes/34/1005834/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/34/1005834/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/34/1005834/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/34/1005834/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/34/1005834/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/34/1005834/1"}}},"commit":{"parents":[{"commit":"ec4e5766e5add8402efb603ce87ca84ecdb170b2","subject":"relinker: Add audit step to quarantine stale hash directories","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/ec4e5766e5add8402efb603ce87ca84ecdb170b2"}]}],"author":{"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","date":"2026-09-16 06:38:13.000000000","tz":-300},"committer":{"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","date":"2026-09-16 07:51:37.000000000","tz":-300},"subject":"sq? relinker: Add audit step to quarantine stale hash directories","message":"sq? relinker: Add audit step to quarantine stale hash directories\n\nIn exceptional circumstances, requirements outside the operator\u0027s\ncontrol may force a part power increase (PPI) to be marked finished\nbefore relinker cleanup completes. Once the ring no longer records the\nPPI, hash directories left in the old namespace look like data for a\ncurrent partition. Replication can preserve them as dark data, while EC\nreconstruction fails for lack of enough related fragments.\n\nAdd an audit action that calculates each hash\u0027s expected partition at\nthe current partition power. It quarantines a misplaced hash only when\nthe found partition is an ancestor of the expected partition within a\nbounded number of PPIs; unrelated misplacements are reported and left\nuntouched. The default ancestry limit is two and is configurable.\n\nQuarantine is deliberately conservative. These remnants may be older\nthan `reclaim_age` and the tombstones that once protected against\nresurrection. Relinking them into the current namespace could therefore\nmake deleted data durable again.\n\nA finished ring provides no hint about which policy was affected, so\naudit requires explicit `--policy` selection. Replicated audits also\nrequire service coordination to prevent peers from restoring quarantined\ndirectories; the operational procedure is documented in\n`ring_partpower.rst`.\n\nAssisted-By: Codex:gpt-5.6\nRelated-Change-Id: I6d1de8caa1322168e5e26682a586d11dc606e19a\nChange-Id: I9bc13cc205501b37e4bb25310f362ce060f77f56\nSigned-off-by: Wael Halbawi \u003cwhalbawi@nvidia.com\u003e\nSigned-off-by: Clay Gerrard \u003cclay.gerrard@gmail.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/f9e606adccedaeb50916005f97a4d5a81e253223"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/f9e606adccedaeb50916005f97a4d5a81e253223"}]},"branch":"refs/heads/master"}},"requirements":[],"submit_records":[],"submit_requirements":[{"name":"Verified","description":"Verified in gate by CI","status":"UNSATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Verified\u003dMAX AND -label:Verified\u003dMIN","fulfilled":false,"status":"FAIL","passing_atoms":[],"failing_atoms":["label:Verified\u003dMAX","label:Verified\u003dMIN"],"atom_explanations":{"label:Verified\u003dMAX":"","label:Verified\u003dMIN":""}}},{"name":"Code-Review","description":"Code reviewed by core reviewer","status":"UNSATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Code-Review\u003dMAX AND -label:Code-Review\u003dMIN","fulfilled":false,"status":"FAIL","passing_atoms":[],"failing_atoms":["label:Code-Review\u003dMAX","label:Code-Review\u003dMIN"],"atom_explanations":{"label:Code-Review\u003dMAX":"","label:Code-Review\u003dMIN":""}}},{"name":"Workflow","description":"Approved for gate by core reviewer","status":"UNSATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Workflow\u003dMAX AND -label:Workflow\u003dMIN","fulfilled":false,"status":"FAIL","passing_atoms":[],"failing_atoms":["label:Workflow\u003dMAX","label:Workflow\u003dMIN"],"atom_explanations":{"label:Workflow\u003dMAX":"","label:Workflow\u003dMIN":""}}}]}
