)]}'
{"id":"openstack%2Ftooz~981248","triplet_id":"openstack%2Ftooz~master~Ie4cfa40ee7fcd9a82616a60ef4d9ca10802c4692","project":"openstack/tooz","branch":"master","topic":"fix-zookeeper","attention_set":{},"removed_from_attention_set":{"15334":{"account":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"last_update":"2026-03-23 12:06:52.000000000","reason":"Change was submitted"},"9816":{"account":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"last_update":"2026-03-23 10:17:41.000000000","reason":"\u003cGERRIT_ACCOUNT_9816\u003e replied on the change","reason_account":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"}},"16137":{"account":{"_account_id":16137,"name":"Tobias Urdin","email":"tobias.urdin@binero.com","username":"tobasco"},"last_update":"2026-03-23 12:06:52.000000000","reason":"Change was submitted"}},"hashtags":[],"change_id":"Ie4cfa40ee7fcd9a82616a60ef4d9ca10802c4692","subject":"zookeeper: Track joined groups to fix leave-on-stop race","status":"MERGED","created":"2026-03-19 13:15:19.000000000","updated":"2026-03-23 12:07:42.000000000","submitted":"2026-03-23 12:06:52.000000000","submitter":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"total_comment_count":0,"unresolved_comment_count":0,"has_review_started":true,"submission_id":"981248-fix-zookeeper","meta_rev_id":"ec090618f354f1afd65ad16f6eb4e5fdbc007f16","_number":981248,"virtual_id_number":981248,"owner":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"actions":{},"labels":{"Verified":{"approved":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"value":0,"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},{"tag":"autogenerated:zuul:gate","value":2,"date":"2026-03-23 12:06: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":"","default_value":0,"optional":true},"Code-Review":{"approved":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"all":[{"value":2,"date":"2026-03-23 10:17:41.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},{"value":0,"_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":{"approved":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"all":[{"value":1,"date":"2026-03-23 10:19:48.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},{"value":0,"_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},"Backport-Candidate":{"all":[{"value":0,"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-2":"Do Not Backport","-1":"Not A Backport Candidate"," 0":"Backport Review Needed","+1":"Proposed Backport","+2":"Should Backport"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[{"_account_id":16137,"name":"Tobias Urdin","email":"tobias.urdin@binero.com","username":"tobasco"}],"reviewers":{"REVIEWER":[{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},{"_account_id":16137,"name":"Tobias Urdin","email":"tobias.urdin@binero.com","username":"tobasco"},{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2026-03-19 15:10:44.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-03-20 10:34:03.000000000","updated_by":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"reviewer":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"state":"REVIEWER"},{"updated":"2026-03-20 10:34:24.000000000","updated_by":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"reviewer":{"_account_id":16137,"name":"Tobias Urdin","email":"tobias.urdin@binero.com","username":"tobasco"},"state":"REVIEWER"}],"messages":[{"id":"a5fdfe26a3c303a72b582fc92621f7e726c1411d","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"date":"2026-03-19 13:15:19.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"e6b12865f3eb0063f8629a126aa4d23fc556497a","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-03-19 15:10:44.000000000","message":"Patch Set 1: Verified-1\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttps://docs.opendev.org/opendev/infra-manual/latest/developers.html#automated-testing\nand https://docs.openstack.org/project-team-guide/testing.html#how-to-handle-test-failures\n\nhttps://zuul.opendev.org/t/openstack/buildset/d95ab45e28f64e81b9d4464dc02629c8\n\n- tempest-full-py3 https://zuul.opendev.org/t/openstack/build/81a0a0c992984eeb862f42e92c2502d7 : SUCCESS in 1h 49m 07s\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/f769c3ff103f4691aa426b7ee0be712a : SUCCESS in 5m 20s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/5134c8cc6f1a4a0ba4f8dfb42acc64ca : SUCCESS in 5m 20s\n- openstack-tox-py310 https://zuul.opendev.org/t/openstack/build/c81a6509a35a452d9f76d449a4c0aaa6 : SUCCESS in 4m 27s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/518999dd28774271ac46e0ac2fa623ac : SUCCESS in 5m 08s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/b8472c46eb044f77b4e085c3fc041f80 : SUCCESS in 7m 03s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/e99425312b0b4278af3dc99e44d6309f : SUCCESS in 4m 53s\n- tooz-tox-examples https://zuul.opendev.org/t/openstack/build/94570215a8d7453bbcd5796ffc93323b : SUCCESS in 4m 42s\n- tooz-tox-py310-etcd3gw https://zuul.opendev.org/t/openstack/build/00b2e67298ac4ad3aa75b24bbc511f00 : SUCCESS in 4m 40s\n- tooz-tox-py313-etcd3gw https://zuul.opendev.org/t/openstack/build/5c6f6c9fd45942c680338947eed60602 : SUCCESS in 5m 04s\n- tooz-tox-py310-zookeeper https://zuul.opendev.org/t/openstack/build/f9f6845e2c7f425ba17efb5b0f5720e1 : FAILURE in 5m 41s\n- tooz-tox-py313-zookeeper https://zuul.opendev.org/t/openstack/build/7062cb668d2e4428b23b867c4746e088 : FAILURE in 4m 23s\n- tooz-tox-py310-redis https://zuul.opendev.org/t/openstack/build/c0d54ff8cc4d4857821ab42415a5ee65 : SUCCESS in 6m 10s\n- tooz-tox-py313-redis https://zuul.opendev.org/t/openstack/build/ebfac2878e1048b49499aaef33708de4 : SUCCESS in 6m 42s\n- tooz-tox-py310-sentinel https://zuul.opendev.org/t/openstack/build/a0bb39630aea45efadd1d7d73198b0f5 : SUCCESS in 5m 51s\n- tooz-tox-py313-sentinel https://zuul.opendev.org/t/openstack/build/faabfeedc62e4996a0bb1f81613b251d : SUCCESS in 8m 26s\n- tooz-tox-py310-memcached https://zuul.opendev.org/t/openstack/build/9f436dd131374030886cc43fec13f8eb : SUCCESS in 5m 53s\n- tooz-tox-py313-memcached https://zuul.opendev.org/t/openstack/build/c9d112e2c6c04a23ac2fd8cec513c368 : SUCCESS in 4m 18s\n- tooz-tox-py310-postgresql https://zuul.opendev.org/t/openstack/build/278f1527d0d2479489330ed407d35daf : SUCCESS in 3m 37s\n- tooz-tox-py313-postgresql https://zuul.opendev.org/t/openstack/build/257d884b55f4486386168b51ab79819e : SUCCESS in 4m 48s\n- tooz-tox-py310-mysql https://zuul.opendev.org/t/openstack/build/b660ffcb1fe64604a5193c2b57c3ee02 : SUCCESS in 4m 22s\n- tooz-tox-py313-mysql https://zuul.opendev.org/t/openstack/build/2ca21a6dcca945e29dfac03d410a910c : SUCCESS in 9m 19s\n- tooz-tox-py310-consul https://zuul.opendev.org/t/openstack/build/7c6c0f25e57d4df9ae7a84b4c193d448 : SUCCESS in 4m 03s\n- tooz-tox-py313-consul https://zuul.opendev.org/t/openstack/build/1e89606ba94349cca12a216f587b5652 : SUCCESS in 6m 34s","accounts_in_message":[],"_revision_number":1},{"id":"30a9c303008d122e48ed039cce454ae18dd57ee8","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"date":"2026-03-19 15:33:54.000000000","message":"Uploaded patch set 2: Patch Set 1 was rebased.\n\nOutdated Votes:\n* Verified-1\n","accounts_in_message":[],"_revision_number":2},{"id":"9de19aa1ceea05e6951b9d01be261828b8069adc","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"date":"2026-03-19 15:38:14.000000000","message":"Uploaded patch set 3.","accounts_in_message":[],"_revision_number":3},{"id":"cc6173722e123812d267273c6f4e8ddba4c01081","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-03-19 17:42:42.000000000","message":"Patch Set 3: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/b7bd5fdbf5134c989f49b2802d009213\n\n- tempest-full-py3 https://zuul.opendev.org/t/openstack/build/27fcf51454f046bdb93883b9a524394b : SUCCESS in 2h 00m 59s\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/597c8373318446b7a6a1d0a6fe78ad7b : SUCCESS in 6m 11s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/cf29d16103c64e9081fe52db4db53ae1 : SUCCESS in 6m 10s\n- openstack-tox-py310 https://zuul.opendev.org/t/openstack/build/51f7239cfa4541b596fd11c67002b0d1 : SUCCESS in 5m 39s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/fe8f3cc0ef9a4bbc920dabe8886eab2d : SUCCESS in 4m 34s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/5539e5805236405cb4270846ede02a00 : SUCCESS in 8m 30s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/4458787cdbb34303a42f83b6d85d3316 : SUCCESS in 5m 23s\n- tooz-tox-examples https://zuul.opendev.org/t/openstack/build/1d71e7ffae3d4bc58046c105591bb97a : SUCCESS in 5m 50s\n- tooz-tox-py310-etcd3gw https://zuul.opendev.org/t/openstack/build/f528151e6bd749ff90f7e2a293930463 : SUCCESS in 6m 02s\n- tooz-tox-py313-etcd3gw https://zuul.opendev.org/t/openstack/build/b2db3ec405b74c42bc97ad90ba3d9022 : SUCCESS in 5m 55s\n- tooz-tox-py310-zookeeper https://zuul.opendev.org/t/openstack/build/2ce8aa3979c84d13a6a179f6eda95b4c : SUCCESS in 4m 52s\n- tooz-tox-py313-zookeeper https://zuul.opendev.org/t/openstack/build/0e57582f7f484ffb90af3cdcb9f9ef42 : SUCCESS in 5m 31s\n- tooz-tox-py310-redis https://zuul.opendev.org/t/openstack/build/355001f21c034b0fbd02fef109603fca : SUCCESS in 6m 43s\n- tooz-tox-py313-redis https://zuul.opendev.org/t/openstack/build/4329affdc05f42aeb0c7016626385ee9 : SUCCESS in 8m 19s\n- tooz-tox-py310-sentinel https://zuul.opendev.org/t/openstack/build/03061f6106604e2b957184c0400872f7 : SUCCESS in 6m 43s\n- tooz-tox-py313-sentinel https://zuul.opendev.org/t/openstack/build/7574e1cb40a045f18f3ebc3716fdeea6 : SUCCESS in 8m 24s\n- tooz-tox-py310-memcached https://zuul.opendev.org/t/openstack/build/325550edbd274a2a83c15b6f6dd465fa : SUCCESS in 4m 49s\n- tooz-tox-py313-memcached https://zuul.opendev.org/t/openstack/build/f2ebc49ce52e41d397e5b7b86b294bee : SUCCESS in 5m 58s\n- tooz-tox-py310-postgresql https://zuul.opendev.org/t/openstack/build/d63080c09e9048a9a99996d062dbeab6 : SUCCESS in 3m 37s\n- tooz-tox-py313-postgresql https://zuul.opendev.org/t/openstack/build/dcee6c5075d14f5297daf4f0c346519b : SUCCESS in 4m 36s\n- tooz-tox-py310-mysql https://zuul.opendev.org/t/openstack/build/ba067dd93b8c4d5fbc1c5711e8eb33b2 : SUCCESS in 4m 05s\n- tooz-tox-py313-mysql https://zuul.opendev.org/t/openstack/build/47ca5510acd54cd9839c635beb967885 : SUCCESS in 6m 56s\n- tooz-tox-py310-consul https://zuul.opendev.org/t/openstack/build/34e24d99b374410691df496fcda00c34 : SUCCESS in 3m 31s\n- tooz-tox-py313-consul https://zuul.opendev.org/t/openstack/build/137841b5b7c84524959a547a56ef10e6 : SUCCESS in 6m 18s","accounts_in_message":[],"_revision_number":3},{"id":"c3cfffc4e06f2aaa6f396639da62fc80458ad59a","author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"date":"2026-03-23 10:17:41.000000000","message":"Patch Set 3: Code-Review+2","accounts_in_message":[],"_revision_number":3},{"id":"5b2bddc54dd13ff8d2b0ada50453c2e823629055","author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"date":"2026-03-23 10:19:48.000000000","message":"Patch Set 3: Workflow+1","accounts_in_message":[],"_revision_number":3},{"id":"d75a28f58953a05b9ccadb3153205ffb99035086","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-03-23 10:20:10.000000000","message":"Patch Set 3: -Verified\n\nStarting gate jobs.","accounts_in_message":[],"_revision_number":3},{"id":"410f7cec18dc379ec849728c9806c473cad0f2f3","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-03-23 12:06:52.000000000","message":"Patch Set 3: Verified+2\n\nBuild succeeded (gate pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/43842e4e6dc14ac28824d6ae6573067e\n\n- tempest-full-py3 https://zuul.opendev.org/t/openstack/build/726433bab2b841fe87be14781f0cbfcb : SUCCESS in 1h 45m 25s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/4f5e2a8ee4b04e8a84492fe4f033c8bb : SUCCESS in 3m 47s\n- openstack-tox-py310 https://zuul.opendev.org/t/openstack/build/583dea52cb52408c852fd5ed3fd330e2 : SUCCESS in 4m 55s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/9a8039a301124926a160f37f900b8a09 : SUCCESS in 6m 10s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/47a1a57a4d984084961b1c18b6e02143 : SUCCESS in 5m 33s\n- tooz-tox-examples https://zuul.opendev.org/t/openstack/build/5b9ccc2bf2784330a3f89b33d133f80e : SUCCESS in 5m 26s\n- tooz-tox-py310-etcd3gw https://zuul.opendev.org/t/openstack/build/4f6325372e5f4cbba820e03ac87c8a98 : SUCCESS in 5m 54s\n- tooz-tox-py313-etcd3gw https://zuul.opendev.org/t/openstack/build/9f8540de19d0420895a394ead5f0826a : SUCCESS in 5m 49s\n- tooz-tox-py310-zookeeper https://zuul.opendev.org/t/openstack/build/fffe0120931b41478946d35362ef6c1b : SUCCESS in 4m 29s\n- tooz-tox-py313-zookeeper https://zuul.opendev.org/t/openstack/build/1a2d5b8bb456445d9eb7217fef6fd987 : SUCCESS in 3m 50s\n- tooz-tox-py310-redis https://zuul.opendev.org/t/openstack/build/5fd810eca1ec45599a0be1e6afc2ccce : SUCCESS in 6m 57s\n- tooz-tox-py313-redis https://zuul.opendev.org/t/openstack/build/b0be96a79b634aa593a447144043ba10 : SUCCESS in 6m 36s\n- tooz-tox-py310-sentinel https://zuul.opendev.org/t/openstack/build/badd9f82137041cd8874686e5cd423a1 : SUCCESS in 6m 25s\n- tooz-tox-py313-sentinel https://zuul.opendev.org/t/openstack/build/5d021ad23fe14607a603f9224acfbabb : SUCCESS in 7m 03s\n- tooz-tox-py310-memcached https://zuul.opendev.org/t/openstack/build/aa3ff2bc103440c0a76b0e82b961ab13 : SUCCESS in 5m 27s\n- tooz-tox-py313-memcached https://zuul.opendev.org/t/openstack/build/a41be28239544a3d9156041d733eb3b1 : SUCCESS in 5m 22s\n- tooz-tox-py310-postgresql https://zuul.opendev.org/t/openstack/build/0cda618155874b7c9492e672524a855d : SUCCESS in 4m 43s\n- tooz-tox-py313-postgresql https://zuul.opendev.org/t/openstack/build/cea25af8b4644204a7b69126a8d21baf : SUCCESS in 5m 13s\n- tooz-tox-py310-mysql https://zuul.opendev.org/t/openstack/build/126e5e3fb726446ca36f69893e0b1d45 : SUCCESS in 5m 21s\n- tooz-tox-py313-mysql https://zuul.opendev.org/t/openstack/build/29e80df609d1481badd53efe1b9af86c : SUCCESS in 9m 01s\n- tooz-tox-py310-consul https://zuul.opendev.org/t/openstack/build/45aa104872a143658496ee2650ecbc60 : SUCCESS in 4m 34s\n- tooz-tox-py313-consul https://zuul.opendev.org/t/openstack/build/b020665197ec4122ad172424f363152a : SUCCESS in 5m 06s","accounts_in_message":[],"_revision_number":3},{"id":"70413eb32df0bad300637b1782c3142c6ba24bdc","tag":"autogenerated:gerrit:merged","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-03-23 12:06:52.000000000","message":"Change has been successfully merged","accounts_in_message":[],"_revision_number":3},{"id":"ec090618f354f1afd65ad16f6eb4e5fdbc007f16","tag":"autogenerated:zuul:promote","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-03-23 12:07:42.000000000","message":"Patch Set 3:\n\nBuild succeeded (promote pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/a02d77eb2b2a4015bfe13d228fee91a8\n\n- promote-openstack-tox-docs https://zuul.opendev.org/t/openstack/build/10ba90adc5cb48cb83f95a7bf89af733 : SUCCESS in 40s","accounts_in_message":[],"_revision_number":3}],"current_revision_number":3,"current_revision":"99419c50ce0b22aaed98f0561a97a0e48dae0aa9","revisions":{"3c3cbdf6673f318513d064606245f7673c4447d2":{"kind":"REWORK","_number":1,"created":"2026-03-19 13:15:19.000000000","uploader":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"ref":"refs/changes/48/981248/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/tooz","ref":"refs/changes/48/981248/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/tooz refs/changes/48/981248/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/tooz refs/changes/48/981248/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/tooz refs/changes/48/981248/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/tooz refs/changes/48/981248/1"}}},"commit":{"parents":[{"commit":"2e5a8a1bc71ab81d6bd5ec8a74855ec138b416fa","subject":"zookeeper: Inline async methods","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/tooz/commit/2e5a8a1bc71ab81d6bd5ec8a74855ec138b416fa"}]}],"author":{"name":"Stephen Finucane","email":"stephenfin@redhat.com","date":"2026-03-19 12:37:52.000000000","tz":60},"committer":{"name":"Stephen Finucane","email":"stephenfin@redhat.com","date":"2026-03-19 13:14:53.000000000","tz":60},"subject":"zookeeper: Track joined groups to fix leave-on-stop race","message":"zookeeper: Track joined groups to fix leave-on-stop race\n\nThe KazooDriver never populated _joined_groups after a successful\njoin_group call, unlike every other driver. As a result, stop() found\nthe set empty and skipped the explicit leave_group().get() calls,\ninstead relying on ZooKeeper to clean up ephemeral nodes when the\nsession closed. That cleanup is asynchronous; a concurrent get_members()\ncall (e.g. from run_watchers()) could still see the departed members,\ncausing run_watchers() to miss leave events and leave ghost nodes in the\nconsistent hash ring.\n\nFix by extending the existing join/leave closures to update\n_joined_groups on success, so that stop() now issues synchronous\nleave_group() calls before closing the session.\n\nChange-Id: Ie4cfa40ee7fcd9a82616a60ef4d9ca10802c4692\nSigned-off-by: Stephen Finucane \u003cstephenfin@redhat.com\u003e\nAssisted-by: Claude Sonnet 4.6 \u003cnoreply@anthropic.com\u003e\nCloses-bug: #2144906\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/tooz/commit/3c3cbdf6673f318513d064606245f7673c4447d2"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/tooz/commit/3c3cbdf6673f318513d064606245f7673c4447d2"}]},"branch":"refs/heads/master"},"4e77bc6071713746aedf0fd9f69078efb1e1e394":{"kind":"TRIVIAL_REBASE","_number":2,"created":"2026-03-19 15:33:54.000000000","uploader":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"ref":"refs/changes/48/981248/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/tooz","ref":"refs/changes/48/981248/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/tooz refs/changes/48/981248/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/tooz refs/changes/48/981248/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/tooz refs/changes/48/981248/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/tooz refs/changes/48/981248/2"}}},"commit":{"parents":[{"commit":"5d270d65b9daa3fc0a9cee7244353f8791a0d3ae","subject":"zookeeper: Inline async methods","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/tooz/commit/5d270d65b9daa3fc0a9cee7244353f8791a0d3ae"}]}],"author":{"name":"Stephen Finucane","email":"stephenfin@redhat.com","date":"2026-03-19 12:37:52.000000000","tz":60},"committer":{"name":"Stephen Finucane","email":"stephenfin@redhat.com","date":"2026-03-19 15:33:43.000000000","tz":60},"subject":"zookeeper: Track joined groups to fix leave-on-stop race","message":"zookeeper: Track joined groups to fix leave-on-stop race\n\nThe KazooDriver never populated _joined_groups after a successful\njoin_group call, unlike every other driver. As a result, stop() found\nthe set empty and skipped the explicit leave_group().get() calls,\ninstead relying on ZooKeeper to clean up ephemeral nodes when the\nsession closed. That cleanup is asynchronous; a concurrent get_members()\ncall (e.g. from run_watchers()) could still see the departed members,\ncausing run_watchers() to miss leave events and leave ghost nodes in the\nconsistent hash ring.\n\nFix by extending the existing join/leave closures to update\n_joined_groups on success, so that stop() now issues synchronous\nleave_group() calls before closing the session.\n\nChange-Id: Ie4cfa40ee7fcd9a82616a60ef4d9ca10802c4692\nSigned-off-by: Stephen Finucane \u003cstephenfin@redhat.com\u003e\nAssisted-by: Claude Sonnet 4.6 \u003cnoreply@anthropic.com\u003e\nCloses-bug: #2144906\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/tooz/commit/4e77bc6071713746aedf0fd9f69078efb1e1e394"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/tooz/commit/4e77bc6071713746aedf0fd9f69078efb1e1e394"}]},"branch":"refs/heads/master"},"99419c50ce0b22aaed98f0561a97a0e48dae0aa9":{"kind":"REWORK","_number":3,"created":"2026-03-19 15:38:14.000000000","uploader":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"ref":"refs/changes/48/981248/3","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/tooz","ref":"refs/changes/48/981248/3","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/tooz refs/changes/48/981248/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/tooz refs/changes/48/981248/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/tooz refs/changes/48/981248/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/tooz refs/changes/48/981248/3"}}},"commit":{"parents":[{"commit":"772ef24c18fd60a09d3ffb7f578762c471660f07","subject":"Merge \"tests: Add test for str IDs\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/tooz/commit/772ef24c18fd60a09d3ffb7f578762c471660f07"}]}],"author":{"name":"Stephen Finucane","email":"stephenfin@redhat.com","date":"2026-03-19 15:35:41.000000000","tz":60},"committer":{"name":"Stephen Finucane","email":"stephenfin@redhat.com","date":"2026-03-19 15:37:20.000000000","tz":60},"subject":"zookeeper: Track joined groups to fix leave-on-stop race","message":"zookeeper: Track joined groups to fix leave-on-stop race\n\nThe KazooDriver never populated _joined_groups after a successful\njoin_group call, unlike every other driver. As a result, stop() found\nthe set empty and skipped the explicit leave_group().get() calls,\ninstead relying on ZooKeeper to clean up ephemeral nodes when the\nsession closed. That cleanup is asynchronous: a concurrent get_members()\ncall (e.g. from run_watchers()) could still see the departed members,\ncausing run_watchers() to miss leave events and leave ghost nodes in the\nconsistent hash ring.\n\nFix by extending the existing _join_group_handler and\n_leave_group_handler methods to update _joined_groups on success, so\nthat stop() now issues synchronous leave_group() calls before closing\nthe session.\n\nChange-Id: Ie4cfa40ee7fcd9a82616a60ef4d9ca10802c4692\nSigned-off-by: Stephen Finucane \u003cstephenfin@redhat.com\u003e\nAssisted-by: Claude Sonnet 4.6 \u003cnoreply@anthropic.com\u003e\nCloses-bug: #2144906\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/tooz/commit/99419c50ce0b22aaed98f0561a97a0e48dae0aa9"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/tooz/commit/99419c50ce0b22aaed98f0561a97a0e48dae0aa9"}]},"branch":"refs/heads/master"}},"requirements":[],"submit_records":[{"rule_name":"gerrit~DefaultSubmitRule","status":"CLOSED","labels":[{"label":"Verified","status":"MAY","applied_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}},{"label":"Code-Review","status":"MAY","applied_by":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"}},{"label":"Workflow","status":"MAY","applied_by":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"}},{"label":"Backport-Candidate","status":"MAY"}]}],"submit_requirements":[{"name":"Verified","description":"Verified in gate by CI","status":"SATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Verified\u003dMAX AND -label:Verified\u003dMIN","fulfilled":true,"status":"PASS","passing_atoms":["label:Verified\u003dMAX"],"failing_atoms":["label:Verified\u003dMIN"],"atom_explanations":{}}},{"name":"Backport-Candidate","description":"Backport candidate status","status":"NOT_APPLICABLE","is_legacy":false,"applicability_expression_result":{"fulfilled":false,"status":"FAIL"},"submittability_expression_result":{"expression":"is:true","fulfilled":true,"status":"NOT_EVALUATED","passing_atoms":[],"failing_atoms":[],"atom_explanations":{}}},{"name":"Code-Review","description":"Code reviewed by core reviewer","status":"SATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Code-Review\u003dMAX AND -label:Code-Review\u003dMIN","fulfilled":true,"status":"PASS","passing_atoms":["label:Code-Review\u003dMAX"],"failing_atoms":["label:Code-Review\u003dMIN"],"atom_explanations":{}}},{"name":"Workflow","description":"Approved for gate by core reviewer","status":"SATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Workflow\u003dMAX AND -label:Workflow\u003dMIN","fulfilled":true,"status":"PASS","passing_atoms":["label:Workflow\u003dMAX"],"failing_atoms":["label:Workflow\u003dMIN"],"atom_explanations":{}}}]}
