)]}'
{"id":"openstack%2Fswift~920106","triplet_id":"openstack%2Fswift~master~I5b630e2f153c77eb0bd1e41cbfd1cb6903779e27","project":"openstack/swift","branch":"master","hashtags":[],"change_id":"I5b630e2f153c77eb0bd1e41cbfd1cb6903779e27","subject":"replicator: Add sync_batches_per_revert option","status":"ABANDONED","created":"2024-05-21 15:03:38.000000000","updated":"2024-05-21 15:05:09.000000000","total_comment_count":0,"unresolved_comment_count":0,"has_review_started":true,"meta_rev_id":"c7f212113d93a2c3d1f153376fdfb624bff5d146","_number":920106,"virtual_id_number":920106,"owner":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"actions":{},"labels":{"Verified":{"values":{"-2":"Fails","-1":"Doesn\u0027t seem to work"," 0":"No score","+1":"Works for me","+2":"Verified"},"description":"","default_value":0,"optional":true},"Code-Review":{"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":{"values":{"-1":"Work in progress"," 0":"Ready for reviews","+1":"Approved"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{},"pending_reviewers":{},"reviewer_updates":[],"messages":[{"id":"efc9a09e7e9a708ffb67e3dfa183741282557c4b","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"date":"2024-05-21 15:03:38.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"c7f212113d93a2c3d1f153376fdfb624bff5d146","tag":"autogenerated:gerrit:abandon","author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"date":"2024-05-21 15:05:09.000000000","message":"Abandoned","accounts_in_message":[],"_revision_number":1}],"current_revision_number":1,"current_revision":"85a5ba34fa1d4221a6e0154faf72f857461747fb","revisions":{"85a5ba34fa1d4221a6e0154faf72f857461747fb":{"kind":"REWORK","_number":1,"created":"2024-05-21 15:03:38.000000000","uploader":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"ref":"refs/changes/06/920106/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/06/920106/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/06/920106/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/06/920106/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/06/920106/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/06/920106/1"}}},"commit":{"parents":[{"commit":"337079f21f66c4f288c5ffa736a177f446472e5e","subject":"Merge \"replicator: Ensure handoffs can clear with large handoff_delete\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/337079f21f66c4f288c5ffa736a177f446472e5e"}]}],"author":{"name":"Tim Burke","email":"tim.burke@gmail.com","date":"2022-04-27 23:01:30.000000000","tz":-420},"committer":{"name":"Tim Burke","email":"tim.burke@gmail.com","date":"2024-05-21 15:03:22.000000000","tz":-420},"subject":"replicator: Add sync_batches_per_revert option","message":"replicator: Add sync_batches_per_revert option\n\nDefault to a single batch to match prior behavior; this default may\nchange as we gain more operational experience.\n\nStill try to revert all handoff data in the first pass -- just be able\nto break it up into a configurable number of (randomized) batches so we\ncan show progress (and delete data!) more frequently. If any of the\nbatches fail, continue to the next batch but don\u0027t delete the partition.\n\nThis has two main applications:\n\n- When a cluster is nearing full, the progressive delete provides relief\n  to full disks ASAP, without waiting for the complete partition to be\n  sync\u0027ed.\n\n- When old hardware is being decomissioned, drive errors may cause some\n  suffixes not only to cause rsync errors during replication, but also\n  to prevent quarantining during auditing. In such a case, the entire\n  partition would previously hang around indefinitely; with batching,\n  the partition would gradually drain, leaving behind only the bad\n  suffixes.\n\nIt also reduces the likelihood of timeouts (either rsync_timeout or\nhttp_timeout during REPLICATE calls). These timeouts now apply\nper-batch.\n\nAdditionally, it gives periodic opportunities for other replicators to\nsneak in and grab an rsync connection slot.\n\nSee also: https://review.opendev.org/c/openstack/swift/+/818017\nChange-Id: Ie12dcb4e524ee3af3ddc2b70c027fb62f68720fa\n\nChange-Id: I5b630e2f153c77eb0bd1e41cbfd1cb6903779e27\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/85a5ba34fa1d4221a6e0154faf72f857461747fb"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/85a5ba34fa1d4221a6e0154faf72f857461747fb"}]},"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":{}}},{"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":{}}},{"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":{}}}]}
