)]}'
{"id":"openstack%2Fswift~987115","triplet_id":"openstack%2Fswift~master~I72070768b07f70002ba2a04de4def975f101f61d","project":"openstack/swift","branch":"master","topic":"reconstructor-ts-fixes","hashtags":[],"change_id":"I72070768b07f70002ba2a04de4def975f101f61d","subject":"wip: obj-reconstructor: search handoffs for local-newer frags","status":"NEW","created":"2026-05-04 04:38:22.000000000","updated":"2026-05-04 05:43:05.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":"c9153f0a411462650728b43e842b6aadf187d8ad","_number":987115,"virtual_id_number":987115,"owner":{"_account_id":34930,"name":"Jianjian Huo","email":"jhuo@nvidia.com","username":"jhuo"},"actions":{},"labels":{"Verified":{"recommended":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"tag":"autogenerated:zuul:check","value":1,"date":"2026-05-04 05:43:05.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-05-04 05:13:49.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-05-04 05:43:05.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":"f28da5d7c9dcacf13f5458305c17c91b5ba6956f","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":34930,"name":"Jianjian Huo","email":"jhuo@nvidia.com","username":"jhuo"},"date":"2026-05-04 04:38:22.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"757ce2e63220768b21bc3f2494b3417fba2eeb34","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-05-04 05:13:49.000000000","message":"Patch Set 1:\n\nBuild succeeded (ARM64 pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/75e72db8408e46199656d41381b310b5\n\n- swift-tox-py312-arm64 https://zuul.opendev.org/t/openstack/build/9721385f985e497483ece635515a9e3b : SUCCESS in 32m 38s","accounts_in_message":[],"_revision_number":1},{"id":"c9153f0a411462650728b43e842b6aadf187d8ad","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-05-04 05:43:05.000000000","message":"Patch Set 1: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/ad253b9107614182bfaabab31531c254\n\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/6afcb7d96a0149ffa4695de9ac88796f : SUCCESS in 9m 29s\n- grenade https://zuul.opendev.org/t/openstack/build/c6d83030cece4500b2c65757892eb27b : SUCCESS in 1h 01m 43s\n- grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/110b2138b0484174817c0989a1eb5693 : SUCCESS in 1h 00m 04s\n- tempest-integrated-object-storage https://zuul.opendev.org/t/openstack/build/13fc950e82ca4d068a36c7e1bed186f7 : SUCCESS in 36m 52s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/ff35a8a54a24490bbe68701811554ab6 : SUCCESS in 44m 24s\n- swift-tox-func-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/938c33157baf49aeaec4a5f9785ef836 : SUCCESS in 15m 46s (non-voting)\n- swift-tox-func-encryption-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/a8142802aef742ec8ec18304e58cd19d : SUCCESS in 20m 07s (non-voting)\n- swift-tox-func-ec-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/7f011ef8d0d94d198b31f506128739b3 : SUCCESS in 16m 52s (non-voting)\n- swift-build-image https://zuul.opendev.org/t/openstack/build/81e5e1dd90d449949a05bee629ee0ff6 : SUCCESS in 6m 34s (non-voting)\n- swift-tox-py37 https://zuul.opendev.org/t/openstack/build/c29711f2a7354d1ab700bd1c5f44012b : SUCCESS in 13m 03s\n- swift-tox-py310 https://zuul.opendev.org/t/openstack/build/0607cdf47e4e49909efae90386c4440a : SUCCESS in 17m 09s\n- swift-tox-py313 https://zuul.opendev.org/t/openstack/build/30039c96b43b4392a93da42aea140ee4 : SUCCESS in 11m 26s\n- swift-tox-py314 https://zuul.opendev.org/t/openstack/build/6a8294130ced4aba811000bf580dce06 : SUCCESS in 20m 25s\n- swift-tox-func-py312 https://zuul.opendev.org/t/openstack/build/8f457150af1c463cafbce098d98be0ca : SUCCESS in 11m 27s\n- swift-tox-func-encryption-py312 https://zuul.opendev.org/t/openstack/build/8081a19668ab42efb178a8d901db4bc7 : SUCCESS in 7m 51s\n- swift-tox-func-ec-py312 https://zuul.opendev.org/t/openstack/build/207ed2b43d434ee19a258455c07b26cb : SUCCESS in 9m 44s\n- swift-func-cors https://zuul.opendev.org/t/openstack/build/e08786e28fab4b96a268ae6bd539feba : SUCCESS in 5m 19s\n- swift-tox-func-ceph-s3tests-tempauth https://zuul.opendev.org/t/openstack/build/30bd6f2ea99c49f7b31d27666fe9ab10 : SUCCESS in 21m 54s (non-voting)\n- swift-tox-func-s3api-compat-tests-tempauth https://zuul.opendev.org/t/openstack/build/0a4ff7edf85247b181448f7b6d5db9cc : SUCCESS in 8m 09s\n- swift-probetests-centos-9-stream https://zuul.opendev.org/t/openstack/build/79debd3a74fb406ea67845ab987ac47b : SUCCESS in 59m 11s\n- swift-dsvm-functional https://zuul.opendev.org/t/openstack/build/c64b9173155a4054825b7e67ced4fae9 : SUCCESS in 28m 05s\n- swift-dsvm-functional-ipv6 https://zuul.opendev.org/t/openstack/build/5f372e134747400a9096fde8a1ee44a1 : SUCCESS in 49m 43s\n- swift-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/3bda5cb9a59b41eda8102ef9a7b3c31f : SUCCESS in 27m 29s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/62216935e1104e1d9d0bbe803d2e8fb7 : SUCCESS in 4m 15s\n- swift-multinode-rolling-upgrade https://zuul.opendev.org/t/openstack/build/367fe6e321c74236b39c1e0e7a37abe9 : SUCCESS in 24m 27s\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/3e86538cdcd548558af439bf1ac23a54 : SUCCESS in 55m 23s","accounts_in_message":[],"_revision_number":1}],"current_revision_number":1,"current_revision":"65be8243a2262558df2719c5acca627271dd61ab","revisions":{"65be8243a2262558df2719c5acca627271dd61ab":{"kind":"REWORK","_number":1,"created":"2026-05-04 04:38:22.000000000","uploader":{"_account_id":34930,"name":"Jianjian Huo","email":"jhuo@nvidia.com","username":"jhuo"},"ref":"refs/changes/15/987115/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/15/987115/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/15/987115/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/15/987115/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/15/987115/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/15/987115/1"}}},"commit":{"parents":[{"commit":"6cef345a24e61a6a77646968210f2ac2933c5bdb","subject":"obj-reconstructor: verify timestamp and etag before rebuilding frag","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/6cef345a24e61a6a77646968210f2ac2933c5bdb"}]}],"author":{"name":"Jianjian Huo","email":"jhuo@nvidia.com","date":"2026-05-04 04:32:41.000000000","tz":-420},"committer":{"name":"Jianjian Huo","email":"jhuo@nvidia.com","date":"2026-05-04 04:36:19.000000000","tz":-420},"subject":"wip: obj-reconstructor: search handoffs for local-newer frags","message":"wip: obj-reconstructor: search handoffs for local-newer frags\n\nWhen rebuilding a missing EC fragment, the reconstructor now refuses\npeer response buckets whose timestamp or EC etag do not match the local\nfragment. Production logs showed that most refused rebuilds were that\nthe local fragment was newer than the useful peer bucket.\n\nIn that case, matching local-version fragments have landed on handoffs\nwhile primaries still return an older useful bucket. This patch addes\nsearching a bounded set of handoffs for the local timestamp/etag before\ngiving up, while preserving the existing safety check: reconstruction\nis still only accepted from a bucket that has enough useful fragments\nand matches the local fragment metadata.\n\nChange-Id: I72070768b07f70002ba2a04de4def975f101f61d\nSigned-off-by: Jianjian Huo \u003cjhuo@nvidia.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/65be8243a2262558df2719c5acca627271dd61ab"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/65be8243a2262558df2719c5acca627271dd61ab"}]},"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":""}}}]}
