)]}'
{"id":"openstack%2Fswift~1000802","triplet_id":"openstack%2Fswift~master~I073b981d509ed331dbacdba9f5ae199775a931c8","project":"openstack/swift","branch":"master","hashtags":[],"change_id":"I073b981d509ed331dbacdba9f5ae199775a931c8","subject":"sq? reconstructor: invalidate hashes after an rsync revert","status":"NEW","created":"2026-08-13 07:03:22.000000000","updated":"2026-08-13 08:22:52.000000000","submit_type":"MERGE_IF_NECESSARY","mergeable":true,"submittable":false,"total_comment_count":0,"unresolved_comment_count":0,"has_review_started":true,"meta_rev_id":"f47cd5516eba24e5da67510552f9a525fcdfc45e","_number":1000802,"virtual_id_number":1000802,"owner":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"actions":{},"labels":{"Verified":{"recommended":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"tag":"autogenerated:zuul:check","value":1,"date":"2026-08-13 08:22:52.000000000","permitted_voting_range":{"min":-2,"max":2},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"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":{"all":[{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"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":"","default_value":0,"optional":true},"Workflow":{"all":[{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"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"]}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2026-08-13 07:58:57.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":"CC"},{"updated":"2026-08-13 08:22:52.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"}],"messages":[{"id":"e6307a47dbd563ee366edfd45e21c314862032c8","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"date":"2026-08-13 07:03:22.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"7f77c139acc0a2fb1ec0f0796486476f13612566","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-08-13 07:58:57.000000000","message":"Patch Set 1:\n\nBuild succeeded (ARM64 pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/8211e1c33e774c249f28a3145ebabd1c\n\n- swift-tox-py312-arm64 https://zuul.opendev.org/t/openstack/build/787b9b14731d450293ce37f80284529e : SUCCESS in 38m 34s","accounts_in_message":[],"_revision_number":1},{"id":"f47cd5516eba24e5da67510552f9a525fcdfc45e","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-08-13 08:22:52.000000000","message":"Patch Set 1: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/4a60d5cc2ab24c39bd4e0b6f39a13f88\n\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/e92bf39aa39b493580c3f16ea9ee6714 : SUCCESS in 11m 40s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/41b4b19840064671a7cee036e4aa8911 : SUCCESS in 9m 43s\n- grenade https://zuul.opendev.org/t/openstack/build/5d27cff6bd584c75adc08f5a0dd24bb7 : SUCCESS in 1h 02m 40s\n- grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/7b59adc03cac4ce28fb7170082e76e54 : SUCCESS in 1h 07m 51s\n- tempest-integrated-object-storage https://zuul.opendev.org/t/openstack/build/520b15c0ad194ebe8af1fb9b9e15ebbe : SUCCESS in 45m 33s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/df8b1269108f4a1299eb0566d8da3477 : SUCCESS in 1h 02m 54s\n- swift-tox-func-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/46f87e3dd2ee484faf4a8e67500974c3 : SUCCESS in 20m 30s (non-voting)\n- swift-tox-func-encryption-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/e9da18012db24916a4584fd2f297c01b : SUCCESS in 19m 58s (non-voting)\n- swift-tox-func-ec-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/ab10618280b14a4b999f4cdaa246d144 : SUCCESS in 18m 59s (non-voting)\n- swift-build-image https://zuul.opendev.org/t/openstack/build/a7d61fcf0bd04893b54458a809c48616 : SUCCESS in 7m 12s (non-voting)\n- swift-tox-py37 https://zuul.opendev.org/t/openstack/build/2bf1f55a905e4253b2979a32255714b6 : SUCCESS in 27m 11s\n- swift-tox-py310 https://zuul.opendev.org/t/openstack/build/d5dde9941bb04737b4e8bf6abad1070a : SUCCESS in 21m 44s\n- swift-tox-py313 https://zuul.opendev.org/t/openstack/build/78156fa9f1514648a986da1016d144e4 : SUCCESS in 30m 30s\n- swift-tox-py314 https://zuul.opendev.org/t/openstack/build/24fe666047014218a64fff31748fbe78 : SUCCESS in 22m 24s\n- swift-tox-func-py312 https://zuul.opendev.org/t/openstack/build/0854ae4182ef4b3c901077699cd0b2de : SUCCESS in 15m 21s\n- swift-tox-func-encryption-py312 https://zuul.opendev.org/t/openstack/build/dc0407c1fbe846b8abeb2ca6afa1b726 : SUCCESS in 13m 13s\n- swift-tox-func-ec-py312 https://zuul.opendev.org/t/openstack/build/1500c23c240c4bb5b50bb2c8348a1b99 : SUCCESS in 23m 35s\n- swift-tox-func-py39-centos-9-stream https://zuul.opendev.org/t/openstack/build/8fa5dd7800a04fd4b3c14a049c9dada4 : SUCCESS in 18m 13s\n- swift-func-cors https://zuul.opendev.org/t/openstack/build/6e8ee244f6a04a8c86501956f4aa363e : SUCCESS in 6m 21s\n- swift-tox-func-ceph-s3tests-tempauth https://zuul.opendev.org/t/openstack/build/43c85470af48409a9463888a7aafce3f : FAILURE in 7m 34s (non-voting)\n- swift-tox-func-s3api-compat-tests-tempauth https://zuul.opendev.org/t/openstack/build/02731fc75fd843b09f922d5f06dcf6e3 : SUCCESS in 9m 31s\n- swift-probetests-centos-9-stream https://zuul.opendev.org/t/openstack/build/0970d20220a84df8beb0ed11f2abaa10 : SUCCESS in 1h 05m 56s\n- swift-dsvm-functional https://zuul.opendev.org/t/openstack/build/de862270cc8d432289dac5bb48d59d1d : SUCCESS in 40m 07s\n- swift-dsvm-functional-ipv6 https://zuul.opendev.org/t/openstack/build/8e3ae443ffae4edea4579e571f7b0e54 : SUCCESS in 59m 39s\n- swift-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/711d5499466a4a0488c6f532c106df43 : SUCCESS in 27m 28s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/58afc09201e0496fb7288ff52cb8aca8 : SUCCESS in 5m 30s\n- swift-multinode-rolling-upgrade https://zuul.opendev.org/t/openstack/build/be5a645566794feeaa648c6b9617ea67 : SUCCESS in 18m 29s\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/47c00b8449684320a705987e1e4c6e95 : SUCCESS in 51m 10s\n\nWarning:\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/zuul/zuul-jobs/playbooks/unittests/post.yaml for job swift-tox-func-encryption-py39-centos-9-stream-fips.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/post.yaml for job swift-tox-func-encryption-py39-centos-9-stream-fips.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/cleanup.yaml for job swift-tox-func-encryption-py39-centos-9-stream-fips.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/post-logs.yaml for job swift-tox-func-encryption-py39-centos-9-stream-fips.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/zuul/zuul-jobs/playbooks/unittests/post.yaml for job swift-tox-func-py39-centos-9-stream-fips.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/post.yaml for job swift-tox-func-py39-centos-9-stream-fips.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/cleanup.yaml for job swift-tox-func-py39-centos-9-stream-fips.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/post-logs.yaml for job swift-tox-func-py39-centos-9-stream-fips.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/zuul/zuul-jobs/playbooks/unittests/post.yaml for job swift-tox-func-ec-py39-centos-9-stream-fips.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/post.yaml for job swift-tox-func-ec-py39-centos-9-stream-fips.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/cleanup.yaml for job swift-tox-func-ec-py39-centos-9-stream-fips.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/post-logs.yaml for job swift-tox-func-ec-py39-centos-9-stream-fips.  Add to preserve-home-paths if safe, or otherwise remove.","accounts_in_message":[],"_revision_number":1}],"current_revision_number":1,"current_revision":"530a2a51f3796fb8ff1c8512f5c4a13eee47341d","revisions":{"530a2a51f3796fb8ff1c8512f5c4a13eee47341d":{"kind":"REWORK","_number":1,"created":"2026-08-13 07:03:22.000000000","uploader":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"ref":"refs/changes/02/1000802/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/02/1000802/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/02/1000802/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/02/1000802/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/02/1000802/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/02/1000802/1"}}},"commit":{"parents":[{"commit":"32d72ff0c254b91dc7758fe0656684b41903d4c2","subject":"reconstructor: optionally use rsync to revert handoffs","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/32d72ff0c254b91dc7758fe0656684b41903d4c2"}]}],"author":{"name":"Christian Schwede","email":"cschwede@mailbox.org","date":"2026-08-13 07:02:46.000000000","tz":120},"committer":{"name":"Christian Schwede","email":"cschwede@mailbox.org","date":"2026-08-13 07:03:11.000000000","tz":120},"subject":"sq? reconstructor: invalidate hashes after an rsync revert","message":"sq? reconstructor: invalidate hashes after an rsync revert\n\nRemoving the suffix dirs left a stale entry in hashes.pkl, so the handoff\npartition was never dropped: a revert job got rebuilt every cycle for a\nsuffix that no longer exists, rsync failed on the missing source dir, and\nhandoffs_remaining never went back to zero.\n\nA failed rsync also had its output thrown away before it was logged, so\nthere was no way to tell why it failed. Log it the way the replicator\ndoes, add --itemize-changes and the log_rsync_transfers option that goes\nwith it, and exclude rsync tempfiles so a killed transfer cannot be sent\non as object data.\n\nThe reconstructor does not inherit rsync_module from [object-replicator],\nso a SAIO has to set it in both sections; document that along with the\nother rsync options it reads.\n\nChange-Id: I073b981d509ed331dbacdba9f5ae199775a931c8\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\nSigned-off-by: Christian Schwede \u003ccschwede@mailbox.org\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/530a2a51f3796fb8ff1c8512f5c4a13eee47341d"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/530a2a51f3796fb8ff1c8512f5c4a13eee47341d"}]},"branch":"refs/heads/master"}},"requirements":[],"submit_records":[{"rule_name":"gerrit~DefaultSubmitRule","status":"OK","labels":[{"label":"Verified","status":"MAY","applied_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}},{"label":"Code-Review","status":"MAY"},{"label":"Workflow","status":"MAY"}]}],"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":""}}}]}
