)]}'
{"id":"openstack%2Fswift~998180","triplet_id":"openstack%2Fswift~master~I5164c841ca31ca57a3ee2c8661edbab1d2daaae6","project":"openstack/swift","branch":"master","attention_set":{"6968":{"account":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"last_update":"2026-08-27 00:54:45.000000000","reason":"Vote got outdated and was removed: Code-Review+1"}},"removed_from_attention_set":{"1179":{"account":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"last_update":"2026-08-27 00:57:05.000000000","reason":"\u003cGERRIT_ACCOUNT_1179\u003e replied on the change","reason_account":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"}}},"hashtags":[],"change_id":"I5164c841ca31ca57a3ee2c8661edbab1d2daaae6","subject":"object-expirer: Allow covering multiple process ids","status":"NEW","created":"2026-07-21 16:20:36.000000000","updated":"2026-08-27 00:57:05.000000000","submit_type":"MERGE_IF_NECESSARY","mergeable":true,"submittable":false,"total_comment_count":4,"unresolved_comment_count":2,"has_review_started":true,"meta_rev_id":"8cfbaf1c30c8244d06a16b13731fd1453dd9b46c","_number":998180,"virtual_id_number":998180,"owner":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"actions":{},"labels":{"Verified":{"all":[{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"}],"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":{"all":[{"value":0,"permitted_voting_range":{"min":-2,"max":2},"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"}],"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":[{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"}],"values":{"-1":"Work in progress"," 0":"Ready for reviews","+1":"Approved"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"REVIEWER":[{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2026-07-23 09:25:08.000000000","updated_by":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"reviewer":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"state":"REVIEWER"}],"messages":[{"id":"a07c41d6f7346d48b397d0687eb58b1c8e1f880e","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"date":"2026-07-21 16:20:36.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"bdf8a40b2f13054c0b79125d20e7f3118a1c234a","author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"date":"2026-07-23 09:25:08.000000000","message":"Patch Set 1: Code-Review+1\n\n(2 comments)","accounts_in_message":[],"_revision_number":1},{"id":"744f644e3fe4d3a733560f275096f2bdfc78fbd5","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"date":"2026-08-27 00:54:45.000000000","message":"Uploaded patch set 2.\n\nOutdated Votes:\n* Code-Review+1 (copy condition: \"changekind:TRIVIAL_REBASE OR is:MIN\")\n","accounts_in_message":[],"_revision_number":2},{"id":"8cfbaf1c30c8244d06a16b13731fd1453dd9b46c","author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"date":"2026-08-27 00:57:05.000000000","message":"Patch Set 2:\n\n(2 comments)","accounts_in_message":[],"_revision_number":2}],"current_revision_number":2,"current_revision":"c891946b78891b1812beea7e7eb514741457bff9","revisions":{"bd0b04e4ab1f5a205f0c1f14dd8c7a325e38007e":{"kind":"REWORK","_number":1,"created":"2026-07-21 16:20:36.000000000","uploader":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"ref":"refs/changes/80/998180/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/80/998180/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/80/998180/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/80/998180/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/80/998180/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/80/998180/1"}}},"commit":{"parents":[{"commit":"e2f9298b82f41c3f52d38dcdef159b07150e2831","subject":"Parallel distributed task container iteration","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/e2f9298b82f41c3f52d38dcdef159b07150e2831"}]}],"author":{"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","date":"2026-06-26 19:48:39.000000000","tz":-300},"committer":{"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","date":"2026-07-21 16:06:24.000000000","tz":-300},"subject":"object-expirer: Allow covering multiple process ids","message":"object-expirer: Allow covering multiple process ids\n\nOperators split expirer queue work across configured process ids.\nWhen one node is unavailable, a remaining daemon should be able to\ncover that node\u0027s process id without changing the total processes\nvalue.\n\nAllow process to be a comma-separated list and keep process_ids\nnormalized as a tuple. A daemon configured with process \u003d 1, 2 now\nlists the task containers assigned to both ids and accepts task\nobjects assigned to either id.\n\nParallel task-container iteration can assign different task-object\nindex contexts to different containers when processes outnumber\ntask_container_per_day. TaskAssignment owns the serial and parallel\nassignment strategies, selected task containers, and task-object\nownership checks used by iter_task_to_expire.\n\nDocument the operational syntax and add unit coverage for parsing,\nlegacy serial selection, parallel container selection, and task-object\nfiltering.\n\nChange-Id: I5164c841ca31ca57a3ee2c8661edbab1d2daaae6\nAssisted-by: Codex (GPT-5) \u003cnoreply@openai.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/bd0b04e4ab1f5a205f0c1f14dd8c7a325e38007e"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/bd0b04e4ab1f5a205f0c1f14dd8c7a325e38007e"}]},"branch":"refs/heads/master"},"c891946b78891b1812beea7e7eb514741457bff9":{"kind":"REWORK","_number":2,"created":"2026-08-27 00:54:45.000000000","uploader":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"ref":"refs/changes/80/998180/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/80/998180/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/80/998180/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/80/998180/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/80/998180/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/80/998180/2"}}},"commit":{"parents":[{"commit":"e2f9298b82f41c3f52d38dcdef159b07150e2831","subject":"Parallel distributed task container iteration","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/e2f9298b82f41c3f52d38dcdef159b07150e2831"}]}],"author":{"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","date":"2026-06-26 19:48:39.000000000","tz":-300},"committer":{"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","date":"2026-08-27 00:46:30.000000000","tz":-300},"subject":"object-expirer: Allow covering multiple process ids","message":"object-expirer: Allow covering multiple process ids\n\nOperators split expirer queue work across configured process ids.\nWhen one node is unavailable, a remaining daemon should be able to\ncover that node\u0027s process id without changing the total processes\nvalue.\n\nAllow process to be a comma-separated list and keep process_ids\nnormalized as a tuple. A daemon configured with process \u003d 1, 2 now\nlists the task containers assigned to both ids and accepts task\nobjects assigned to either id.\n\nParallel task-container iteration can assign different task-object\nindex contexts to different containers when processes outnumber\ntask_container_per_day. TaskAssignment owns the serial and parallel\nassignment strategies, selected task containers, and task-object\nownership checks used by iter_task_to_expire.\n\nDocument the operational syntax and add unit coverage for parsing,\nlegacy serial selection, parallel container selection, and task-object\nfiltering.\n\nChange-Id: I5164c841ca31ca57a3ee2c8661edbab1d2daaae6\nAssisted-By: Codex:gpt-5.6\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/c891946b78891b1812beea7e7eb514741457bff9"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/c891946b78891b1812beea7e7eb514741457bff9"}]},"branch":"refs/heads/master"}},"requirements":[],"submit_records":[{"rule_name":"gerrit~DefaultSubmitRule","status":"OK","labels":[{"label":"Verified","status":"MAY"},{"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":""}}}]}
