)]}'
{"id":"openstack%2Fwatcher~987540","triplet_id":"openstack%2Fwatcher~master~I787397d511e86bb8b1834ec50085b2ce92217edd","project":"openstack/watcher","branch":"master","topic":"bug/2152254","attention_set":{},"removed_from_attention_set":{"30002":{"account":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"last_update":"2026-06-11 23:54:40.000000000","reason":"Change was submitted"},"26471":{"account":{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},"last_update":"2026-05-13 22:32:43.000000000","reason":"removed on reply"},"16312":{"account":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"last_update":"2026-05-19 07:47:20.000000000","reason":"\u003cGERRIT_ACCOUNT_16312\u003e replied on the change","reason_account":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"}}},"hashtags":[],"change_id":"I787397d511e86bb8b1834ec50085b2ce92217edd","subject":"Replace global lockutils locks with per-instance RLock","status":"MERGED","created":"2026-05-06 15:36:15.000000000","updated":"2026-06-11 23:56:11.000000000","submitted":"2026-06-11 23:54:40.000000000","submitter":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"total_comment_count":18,"unresolved_comment_count":2,"has_review_started":true,"submission_id":"987540-bug/2152254","meta_rev_id":"042f7c6e443cd0ef69bb592fc4070c86dcdf129d","_number":987540,"virtual_id_number":987540,"owner":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"actions":{},"labels":{"Verified":{"approved":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"value":0,"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},{"value":0,"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},{"value":0,"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},{"value":0,"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},{"tag":"autogenerated:zuul:gate","value":2,"date":"2026-06-11 23:54:40.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":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"all":[{"value":0,"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},{"value":2,"date":"2026-06-11 15:54:45.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},{"value":1,"date":"2026-05-29 15:50:27.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},{"value":2,"date":"2026-05-29 12:49:16.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},{"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":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"all":[{"value":0,"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},{"value":1,"date":"2026-06-11 15:54:45.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},{"value":0,"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},{"value":0,"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},{"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},"Review-Priority":{"all":[{"value":0,"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},{"value":0,"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},{"value":0,"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},{"value":0,"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{" 0":"Standard Change","+1":"Important Change","+2":"High Priority Change"},"default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"CC":[{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"}],"REVIEWER":[{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2026-05-06 15:36:22.000000000","updated_by":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"reviewer":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"state":"CC"},{"updated":"2026-05-06 17:23:17.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-05-06 18:31:35.000000000","updated_by":{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},"reviewer":{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},"state":"REVIEWER"},{"updated":"2026-05-13 15:54:36.000000000","updated_by":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"reviewer":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"state":"CC"},{"updated":"2026-05-14 08:51:12.000000000","updated_by":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"reviewer":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"state":"REVIEWER"},{"updated":"2026-06-11 15:54:45.000000000","updated_by":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"reviewer":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"state":"REVIEWER"}],"messages":[{"id":"d4d17af2068811593a7f399025241074ec987b55","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"date":"2026-05-06 15:36:15.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"824588107cb120d2c4d82081ccd9c1e3b5ea487d","tag":"autogenerated:zuul:automatic-ci","author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"date":"2026-05-06 15:36:22.000000000","message":"Patch Set 1:\n\nStarting automatic-ci jobs.","accounts_in_message":[],"_revision_number":1},{"id":"0e467c28eee3bbe986a414db29a2eb4d08ef4c1a","author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"date":"2026-05-06 15:41:56.000000000","message":"Patch Set 1: Workflow-1\n\n(1 comment)","accounts_in_message":[],"_revision_number":1},{"id":"225a2176f8d5970c5a2bb756c3b4b4f3aea9e0a7","tag":"autogenerated:zuul:automatic-ci","author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"date":"2026-05-06 15:50:57.000000000","message":"Patch Set 1:\n\n(7 comments)\n\nBuild succeeded (automatic-ci pipeline).\nhttps://zuul.teim.app/t/main/buildset/3a1ef0865ea84f12b98a29d902931167\n\n- teim-code-review https://zuul.teim.app/t/main/build/fe57c498102543f48b6d1cef8848138a : SUCCESS in 14m 26s","accounts_in_message":[],"_revision_number":1},{"id":"f0bf85a68ef3b1a5217b9917cfdf9a206f28cb1d","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-05-06 17:23:17.000000000","message":"Patch Set 1: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/38d52e67f8704194810b05f8b018d457\n\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/d500351b1d214363b06f8ba2287aa8b8 : SUCCESS in 6m 23s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/2c0fe2a9da584461808343317d2814e4 : SUCCESS in 4m 51s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/3d2941180b0f4724a824a45af93b3593 : SUCCESS in 5m 31s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/5a9f356bf9ba40108bf3fd00922f9e77 : SUCCESS in 4m 13s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/0763a966344a4d5e8d472333537f9837 : SUCCESS in 6m 41s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/a14c43decdc34a9e8215cc655632da0d : SUCCESS in 8m 01s\n- openstack-tox-py313-eventlet https://zuul.opendev.org/t/openstack/build/945a6a12f3964f5dbfd60ada6e8fa14a : SUCCESS in 3m 51s\n- watcher-grenade https://zuul.opendev.org/t/openstack/build/6c3c6f0ede144a9081ffe9d145bb97dc : SUCCESS in 53m 53s\n- watcher-grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/d9a8970e26ab472e9374a32a286d4746 : SUCCESS in 38m 20s\n- watcher-tempest-api-ipv6-only https://zuul.opendev.org/t/openstack/build/b702047d23634c9bb365d3561b7808eb : SUCCESS in 29m 38s\n- watcher-tempest-gnocchi https://zuul.opendev.org/t/openstack/build/149f94760b524412beea858697206e5e : SUCCESS in 1h 31m 57s\n- watcher-tempest-prometheus https://zuul.opendev.org/t/openstack/build/d9dd0c7239ce43d29c303fa962ccc572 : SUCCESS in 53m 05s\n- watcher-tempest-prometheus-eventlet https://zuul.opendev.org/t/openstack/build/d2ebca887369437caa853d341cadaf87 : SUCCESS in 1h 13m 22s\n- watcher-tempest-aetos https://zuul.opendev.org/t/openstack/build/959a08edf7de4e5a867b5b2d8847077e : SUCCESS in 1h 40m 58s","accounts_in_message":[],"_revision_number":1},{"id":"fc0a23a09813a708c69a0a2df5c922ace91e276e","author":{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},"date":"2026-05-06 18:31:35.000000000","message":"Patch Set 1: Code-Review+1\n\nBuild succeeded (check pipeline).\nhttps://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/buildset/c9662d171e87402fafb3b5ab349a3907\n\n- openstack-meta-content-provider-master https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/build/fa5e89e617014e68a047253d4c786156 : SUCCESS in 2h 53m 27s\n- watcher-operator-validation-master https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/build/1dda6eaf55fd4b0688855b616b86147f : SUCCESS in 2h 09m 52s","accounts_in_message":[],"_revision_number":1},{"id":"b596b7af29d12812a248440e7263f617c998c63b","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"date":"2026-05-12 18:16:37.000000000","message":"Uploaded patch set 2.\n\nOutdated Votes:\n* Code-Review+1 (copy condition: \"changekind:TRIVIAL_REBASE OR is:MIN\")\n* Verified+1 (copy condition: \"NEVER\")\n* Workflow-1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":2},{"id":"72f8c1a4b30c48364982113dcb5e7ce83041b353","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-05-12 20:32:09.000000000","message":"Patch Set 2: 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/32433f2e19cd431fa73f64f5fd4ae41f\n\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/b2d3ff8958fc41bca835b5f4c66480d1 : SUCCESS in 8m 04s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/bb485df1fe194e44b8e8e78af3c92fd2 : FAILURE in 4m 13s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/2597c91f63474c31ab16be71f6d079cb : SUCCESS in 3m 51s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/ab14b4f4c42e4dcc9495866bc3d39a2e : SUCCESS in 3m 11s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/6fc79c7a08e648cb94d092836e59313a : SUCCESS in 6m 05s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/e4ab3961720f4939bdf4f4d42cc5c71f : SUCCESS in 4m 29s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/810ec4518cab48f78c3a56ee0800119d : SUCCESS in 3m 32s\n- openstack-tox-py313-eventlet https://zuul.opendev.org/t/openstack/build/65d876c667564b7f854ce96eca89583b : SUCCESS in 6m 36s\n- watcher-grenade https://zuul.opendev.org/t/openstack/build/b24d30ef15f944b58e5666f8fcd19d6d : SUCCESS in 53m 02s\n- watcher-grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/6d28ab0a30504821b1750ae27a315ec6 : SUCCESS in 56m 59s\n- watcher-tempest-api-ipv6-only https://zuul.opendev.org/t/openstack/build/a7fba28fd4694f128d18ffe92c1e63ff : SUCCESS in 17m 59s\n- watcher-tempest-gnocchi https://zuul.opendev.org/t/openstack/build/2ceb6e3ee20e464394da838297fa1461 : SUCCESS in 1h 59m 32s\n- watcher-tempest-prometheus https://zuul.opendev.org/t/openstack/build/4c929ff65d894528963578739f45bdd2 : SUCCESS in 1h 04m 24s\n- watcher-tempest-prometheus-eventlet https://zuul.opendev.org/t/openstack/build/bd4aa06022bb449a9af253ff00827806 : SUCCESS in 2h 04m 45s\n- watcher-tempest-aetos https://zuul.opendev.org/t/openstack/build/5cafa8d499b841a2bb9c42d183ecc33c : SUCCESS in 1h 59m 57s","accounts_in_message":[],"_revision_number":2},{"id":"fd723ee952c97958b828dcf0c8a9b16643aa7291","author":{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},"date":"2026-05-12 21:06:45.000000000","message":"Patch Set 2: Code-Review+1\n\nBuild succeeded (check pipeline).\nhttps://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/buildset/69636649b0514ddfa354fc766d1a0454\n\n- openstack-meta-content-provider-master https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/build/512c56a2a2ca41ec89caa19869f093ef : SUCCESS in 2h 48m 28s\n- watcher-operator-validation-master https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/build/ca2910153b4e458cbac8ba26f2182881 : SUCCESS in 2h 09m 42s","accounts_in_message":[],"_revision_number":2},{"id":"a1371259fb50867c009d39e6527154ad91885866","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"date":"2026-05-13 11:07:54.000000000","message":"Uploaded patch set 3.\n\nOutdated Votes:\n* Code-Review+1 (copy condition: \"changekind:TRIVIAL_REBASE OR is:MIN\")\n* Verified-1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":3},{"id":"c7e2e8401903cf31e1d05d476fa0010f6c039879","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-05-13 13:03:05.000000000","message":"Patch Set 3: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/5c235ab49d464792ab480318839e1309\n\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/da0b994897f9417281a6d5240370ba30 : SUCCESS in 6m 06s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/96eca3abc48443d78e61d79384509402 : SUCCESS in 5m 34s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/c9b7d312de284668a6aa05deb1570fdc : SUCCESS in 4m 44s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/a7d97f26e5a946a4b9846b863e14e59f : SUCCESS in 5m 33s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/cff91762e38042fab6f36f3e9df5af2c : SUCCESS in 9m 49s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/2f5c74a1a4e6404e89ab2d55d5e83da3 : SUCCESS in 4m 32s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/092e86fd702d415eac4a707ca74f6a19 : SUCCESS in 4m 41s\n- openstack-tox-py313-eventlet https://zuul.opendev.org/t/openstack/build/165928271e2943b6b504a826b00ea2cf : SUCCESS in 5m 16s\n- watcher-grenade https://zuul.opendev.org/t/openstack/build/6fde2f24707749e99e44abe761aab5c7 : SUCCESS in 55m 06s\n- watcher-grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/15d38d4acf9a4b41bc5fc8917795d7c8 : SUCCESS in 51m 39s\n- watcher-tempest-api-ipv6-only https://zuul.opendev.org/t/openstack/build/315a55a7c7614b65bfb0f1ed82e8cb5c : SUCCESS in 37m 52s\n- watcher-tempest-gnocchi https://zuul.opendev.org/t/openstack/build/b695c75fcea74739a2e242469a6b68d9 : SUCCESS in 1h 46m 01s\n- watcher-tempest-prometheus https://zuul.opendev.org/t/openstack/build/4117c7a9ee944d62abf2d867c932c3c5 : SUCCESS in 1h 41m 07s\n- watcher-tempest-prometheus-eventlet https://zuul.opendev.org/t/openstack/build/9702d071f82240cb8895e1c12b534357 : SUCCESS in 1h 49m 52s\n- watcher-tempest-aetos https://zuul.opendev.org/t/openstack/build/10c6ec28117443cb9463a281f973f392 : SUCCESS in 1h 48m 09s","accounts_in_message":[],"_revision_number":3},{"id":"699135e2cf7416271803ed54ee588cc55beb4c88","author":{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},"date":"2026-05-13 15:01:35.000000000","message":"Patch Set 3: Code-Review+1\n\nBuild succeeded (check pipeline).\nhttps://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/buildset/7286bd1f8f74499f8d6744b160415ba0\n\n- openstack-meta-content-provider-master https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/build/c6651d20605147de92591087dddbade6 : SUCCESS in 3h 52m 11s\n- watcher-operator-validation-master https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/build/3142bd2a14a84ffdaefeabb09d984ce2 : SUCCESS in 2h 09m 25s","accounts_in_message":[],"_revision_number":3},{"id":"8f434183786cee529112effe37eda71b2986f455","author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"date":"2026-05-13 15:54:36.000000000","message":"Patch Set 3:\n\n(4 comments)","accounts_in_message":[],"_revision_number":3},{"id":"80e4c5b926ed734a8eaed0944649f60436c67f68","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"date":"2026-05-13 19:50:59.000000000","message":"Uploaded patch set 4.\n\nOutdated Votes:\n* Code-Review+1 (copy condition: \"changekind:TRIVIAL_REBASE OR is:MIN\")\n* Verified+1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":4},{"id":"cf196a49d02ef8b38fa3ff67089bc2d2dfec3e58","author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"date":"2026-05-13 19:51:28.000000000","message":"Patch Set 4:\n\n(2 comments)","accounts_in_message":[],"_revision_number":4},{"id":"fdc029295f94aff5f913aa03984f6aac43ecdf3f","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-05-13 22:08:02.000000000","message":"Patch Set 4: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/af88d4eae38a47d391b85e848dbef480\n\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/17b4ac7f3642486584c3f2a9f677e2d2 : SUCCESS in 6m 36s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/9ef767d663a74679ba612c2245cb0c19 : SUCCESS in 3m 57s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/5f68a652d5f048868a46e6a3b85479af : SUCCESS in 5m 15s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/7f53326f88a446029c01a91ee6017ef7 : SUCCESS in 5m 10s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/401e8f68d0f44911acf2cf6292871b1f : SUCCESS in 9m 42s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/1888c4becde44aaea3b0c4fc527a6c63 : SUCCESS in 8m 35s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/2bb65ea3eb384cb397aa083587145829 : SUCCESS in 4m 18s\n- openstack-tox-py313-eventlet https://zuul.opendev.org/t/openstack/build/c048f2aa6bbc4b9397a16dcb44ca0e5e : SUCCESS in 5m 39s\n- watcher-grenade https://zuul.opendev.org/t/openstack/build/1c80e6b7c83d429b88b52d0f093aed26 : SUCCESS in 54m 10s\n- watcher-grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/3230772c506242b89305171b31b63ee8 : SUCCESS in 1h 00m 29s\n- watcher-tempest-api-ipv6-only https://zuul.opendev.org/t/openstack/build/a689e1a74e6b4b2e938648306f78cc96 : SUCCESS in 37m 35s\n- watcher-tempest-gnocchi https://zuul.opendev.org/t/openstack/build/aca4092c9340481284ec37f29106f434 : SUCCESS in 1h 50m 36s\n- watcher-tempest-prometheus https://zuul.opendev.org/t/openstack/build/e016fd74b55f4173a7303db7d4bb10d0 : SUCCESS in 1h 55m 17s\n- watcher-tempest-prometheus-eventlet https://zuul.opendev.org/t/openstack/build/74ec77782bf849939760e11e4e6fca4e : SUCCESS in 2h 02m 30s\n- watcher-tempest-aetos https://zuul.opendev.org/t/openstack/build/33e5ebce7581484bae384960738dbe29 : SUCCESS in 1h 58m 58s","accounts_in_message":[],"_revision_number":4},{"id":"aede62bb5ba051da09eb22bcb5e6f6080b692982","author":{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},"date":"2026-05-13 22:32:43.000000000","message":"Patch Set 4: Code-Review-1\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttp://docs.openstack.org/infra/manual/developers.html#automated-testing\n\nhttps://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/buildset/dbd94c3ac4f24df0b096d51f35afadfa\n\n- openstack-meta-content-provider-master https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/build/6041bdc7b5a2494daab35feafb95fe54 : SUCCESS in 2h 40m 28s\n- watcher-operator-validation-master https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/build/9ab5833dee2647c4bb0f6d9625b0acf0 : FAILURE in 1h 59m 06s","accounts_in_message":[],"_revision_number":4},{"id":"7a7ebb2876beb1cf3e2532276bbe2b3e636b9b6d","author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"date":"2026-05-14 08:22:29.000000000","message":"Patch Set 4:\n\n(1 comment)","accounts_in_message":[],"_revision_number":4},{"id":"c133cc45ef2f92b4e2cb8116b03f693ba8acc727","author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"date":"2026-05-14 08:23:47.000000000","message":"Patch Set 4:\n\n(1 comment)","accounts_in_message":[],"_revision_number":4},{"id":"cf1758b0ac669fcdb99a8ce5b8a0d51baf206eda","author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"date":"2026-05-14 08:50:29.000000000","message":"Patch Set 4:\n\n(1 comment)","accounts_in_message":[],"_revision_number":4},{"id":"3b463870581dd337537b9ca30b6ca21e634f7325","author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"date":"2026-05-14 08:51:12.000000000","message":"Patch Set 4: Code-Review-1","accounts_in_message":[],"_revision_number":4},{"id":"4330a1c5089534f6da2e0b7aabbfe2ef353575f8","author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"date":"2026-05-14 17:10:20.000000000","message":"Patch Set 4:\n\n(1 comment)","accounts_in_message":[],"_revision_number":4},{"id":"e0304ac82adf2b07c1b2977b6099d36bae367a5c","author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"date":"2026-05-19 07:47:20.000000000","message":"Patch Set 4:\n\n(1 comment)","accounts_in_message":[],"_revision_number":4},{"id":"f112740a32b118fde43e164bf6ba386129d58551","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"date":"2026-05-20 14:11:04.000000000","message":"Uploaded patch set 5: Patch Set 4 was rebased.\n\nCopied Votes:\n* Code-Review-1 (copy condition: \"**changekind:TRIVIAL_REBASE** OR is:MIN\")\n\nOutdated Votes:\n* Verified+1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":5},{"id":"9e387334a86bcf1a7797ec337e5d3ad8b3c34357","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-05-20 16:20:07.000000000","message":"Patch Set 5: 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/5c074b8396c94c60881049b03792c821\n\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/d1a91774a7824413a8782bf2ecfe615b : SUCCESS in 8m 24s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/5200cd18ffc6494db5f6b8c149bf3c30 : SUCCESS in 4m 28s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/d5aff92e915547479a65e1009dc0778e : FAILURE in 6m 07s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/5d6961949b044148947b1f59a0894666 : SUCCESS in 6m 49s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/ace173f0c739494cac8fe5ce4a6e4385 : SUCCESS in 6m 02s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/8050f97731d840c385d2e20c3ed5302e : SUCCESS in 7m 39s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/82ef2fd2adb6443a99750bbb7017d96c : SUCCESS in 4m 50s\n- openstack-tox-py313-eventlet https://zuul.opendev.org/t/openstack/build/2a0c6d6e03134b5e9375ea3678f8756e : SUCCESS in 5m 32s\n- watcher-grenade https://zuul.opendev.org/t/openstack/build/8a362def74d8498a828d9ca51b67d36b : SUCCESS in 50m 16s\n- watcher-grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/f6fac2272de14a79b1d070d8a0e2899e : SUCCESS in 54m 00s\n- watcher-tempest-api-ipv6-only https://zuul.opendev.org/t/openstack/build/edf6019813d541f3a32fba56107e978d : SUCCESS in 39m 24s\n- watcher-tempest-gnocchi https://zuul.opendev.org/t/openstack/build/ec3f5b61ada942789f62fbc00b84a767 : SUCCESS in 1h 08m 28s\n- watcher-tempest-prometheus https://zuul.opendev.org/t/openstack/build/168ee98ebd3c45cb86d78e8bffbbff73 : SUCCESS in 1h 53m 58s\n- watcher-tempest-prometheus-eventlet https://zuul.opendev.org/t/openstack/build/ab76f34d9cb94d3191437e10982730bd : SUCCESS in 1h 35m 03s\n- watcher-tempest-aetos https://zuul.opendev.org/t/openstack/build/808123dd368445a1971bb99dede60fe8 : SUCCESS in 1h 58m 16s","accounts_in_message":[],"_revision_number":5},{"id":"9937b5095fec65890e223c603c34ebb6239d354d","author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"date":"2026-05-20 19:20:57.000000000","message":"Patch Set 5:\n\n(1 comment)","accounts_in_message":[],"_revision_number":5},{"id":"8d9ec4a8c406c0710c00263e7573dfcc00d23ce4","author":{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},"date":"2026-05-20 19:58:00.000000000","message":"Patch Set 5: Code-Review-1\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttp://docs.openstack.org/infra/manual/developers.html#automated-testing\n\nhttps://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/buildset/069b26db922949c988e0f5fa094b623b\n\n- openstack-meta-content-provider-master https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/build/c2690709fe1844d2a4e993bb9f033cc1 : SUCCESS in 4h 15m 10s\n- watcher-operator-validation-master https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/build/c21afe06804840f69e2b4acac2775977 : FAILURE in 1h 42m 21s","accounts_in_message":[],"_revision_number":5},{"id":"c4140c709311ac540bb42bf919ad5dce49576587","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-05-20 21:29:24.000000000","message":"Patch Set 5: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/848ec61f2db74f79b8acffb9615fd324\n\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/26292223902b4d4a96b04ca77f475fe4 : SUCCESS in 4m 18s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/ed67e8fb77514367ac0d1d553efd6ccc : SUCCESS in 3m 54s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/98470db208bc422488b8fdd5bccf94e3 : SUCCESS in 3m 14s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/1e58ad9382f642aeb69c6092ed8a37c7 : SUCCESS in 4m 34s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/8512a71537464c8aad1950db0a384020 : SUCCESS in 5m 04s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/709a474d6d574629ae528c5d99e4583d : SUCCESS in 5m 11s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/5c9773fd15674cd48679a1a6fe80ea98 : SUCCESS in 4m 03s\n- openstack-tox-py313-eventlet https://zuul.opendev.org/t/openstack/build/9e72e99fe9044349bfd93ef5accbd0c9 : SUCCESS in 3m 12s\n- watcher-grenade https://zuul.opendev.org/t/openstack/build/64a8d67b43c940e083702519761d8e43 : SUCCESS in 24m 20s\n- watcher-grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/47f4e8f8a2334e75bfcf54dedb8b5e5f : SUCCESS in 23m 29s\n- watcher-tempest-api-ipv6-only https://zuul.opendev.org/t/openstack/build/8e2b9c66cd834caf8e14b6fbf419f17f : SUCCESS in 16m 15s\n- watcher-tempest-gnocchi https://zuul.opendev.org/t/openstack/build/b1aeddcebc9e4c2292fe71daed349b5a : SUCCESS in 1h 04m 00s\n- watcher-tempest-prometheus https://zuul.opendev.org/t/openstack/build/5a0b939baec54f4890f5a2e6a67b96a1 : SUCCESS in 1h 08m 19s\n- watcher-tempest-prometheus-eventlet https://zuul.opendev.org/t/openstack/build/002e25c85edc4476a74f28f99b30df63 : SUCCESS in 1h 03m 05s\n- watcher-tempest-aetos https://zuul.opendev.org/t/openstack/build/1f4bded72f074268aa95e582762321d3 : SUCCESS in 2h 02m 46s","accounts_in_message":[],"_revision_number":5},{"id":"a30919b801904eb6ddce633418fa780835bcfe6f","author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"date":"2026-05-21 12:42:13.000000000","message":"Patch Set 5: -Code-Review","accounts_in_message":[],"_revision_number":5},{"id":"693b8dbc76e99886b5e1322d7adb082ab019b35d","author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"date":"2026-05-27 09:32:54.000000000","message":"Patch Set 5: Code-Review+2\n\n(3 comments)","accounts_in_message":[],"_revision_number":5},{"id":"e0951898a5a62cec0c8a96e9e66a0b62f55d9a4b","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"date":"2026-05-29 12:49:16.000000000","message":"Uploaded patch set 6: Patch Set 5 was rebased.\n\nCopied Votes:\n* Code-Review+2, Code-Review-1 (copy condition: \"**changekind:TRIVIAL_REBASE** OR is:MIN\")\n\nOutdated Votes:\n* Verified+1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":6},{"id":"398bf2f6b60ce3396791a7457179d420563fa9be","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-05-29 14:56:51.000000000","message":"Patch Set 6: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/ac30020a0a9040acace13026d467f651\n\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/3bd2a845d0f145979af3dc216b9c14f4 : SUCCESS in 8m 16s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/b56027c3b5b24c81829f81b658175780 : SUCCESS in 4m 09s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/167c4a7d1a264d1283f583d75cb0b41a : SUCCESS in 6m 53s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/56b2c6be201b4b088c97aaf257f121ee : SUCCESS in 5m 09s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/164e84dc80df42b2bccd0785ca7451f1 : SUCCESS in 8m 23s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/732c329efb4148a5b2cf5eebfaf1d3fc : SUCCESS in 9m 39s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/177b4cdb3f4f43de9d1797de8f6164d3 : SUCCESS in 4m 40s\n- openstack-tox-py313-eventlet https://zuul.opendev.org/t/openstack/build/947f1b785098406f98f87a7299a9d050 : SUCCESS in 6m 58s\n- watcher-grenade https://zuul.opendev.org/t/openstack/build/f7f9ac03f4da409793aac389d1617b6b : SUCCESS in 53m 35s\n- watcher-grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/955afaefea9c4805b0a25fa6ea646cc1 : SUCCESS in 54m 32s\n- watcher-tempest-api-ipv6-only https://zuul.opendev.org/t/openstack/build/6faee73e98a94c77b6752ae5295c031d : SUCCESS in 24m 38s\n- watcher-tempest-gnocchi https://zuul.opendev.org/t/openstack/build/d4f5add0f1744173b5ee333b8df3e792 : SUCCESS in 1h 54m 32s\n- watcher-tempest-prometheus https://zuul.opendev.org/t/openstack/build/33a7a37e1b6e4f0eaa58bdfaa5b16c89 : SUCCESS in 1h 31m 22s\n- watcher-tempest-prometheus-eventlet https://zuul.opendev.org/t/openstack/build/d17516c323ec4066a05e74311d756143 : SUCCESS in 1h 24m 47s\n- watcher-tempest-aetos https://zuul.opendev.org/t/openstack/build/5715971962554130892855bb968fa961 : SUCCESS in 2h 02m 53s","accounts_in_message":[],"_revision_number":6},{"id":"688c41ebc59b94ee921fdee76bc85b964de3071b","author":{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},"date":"2026-05-29 15:50:27.000000000","message":"Patch Set 6: Code-Review+1\n\nBuild succeeded (check pipeline).\nhttps://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/buildset/51d429ff0c714cbcbc688f08c7c48f85\n\n- openstack-meta-content-provider-master https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/build/e6047235fbc0467e8cc5aa014b63bad2 : SUCCESS in 2h 59m 47s\n- watcher-operator-validation-master https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/build/e6db247f2a4e46a388cb3083e55e79ec : SUCCESS in 2h 16m 11s","accounts_in_message":[],"_revision_number":6},{"id":"80b5b237bad677b25b1d0d9fc149333ea2d26b7d","author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"date":"2026-06-11 15:54:45.000000000","message":"Patch Set 6: Code-Review+2 Workflow+1\n\n(1 comment)","accounts_in_message":[],"_revision_number":6},{"id":"7a2645316aee4a54a180f665b932c2db25e67f6e","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-11 15:55:28.000000000","message":"Patch Set 6: -Verified\n\nStarting gate jobs.","accounts_in_message":[],"_revision_number":6},{"id":"9c772f632285a8025e7939675e7968bf182f85ff","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-11 18:06:57.000000000","message":"Patch Set 6: Verified-2\n\nBuild failed (gate pipeline).  For information on how to proceed, see\nhttps://docs.opendev.org/opendev/infra-manual/latest/developers.html#automated-testing\n\nhttps://zuul.opendev.org/t/openstack/buildset/03436ace6c45402bacac6a7ddd80d3ce\n\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/e5b602d92a334863b35b3e0f85c5d295 : SUCCESS in 4m 04s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/fe5afb625a81433ba7b958da4f3cf670 : SUCCESS in 6m 24s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/b3da1f56fa4d44799402f545fa5c97e3 : SUCCESS in 3m 26s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/fa7fe791c9b44861aa4caa239b0838f7 : SUCCESS in 5m 26s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/228133cc075c49fa85ba405dff3e35d3 : SUCCESS in 5m 23s\n- openstack-tox-py313-eventlet https://zuul.opendev.org/t/openstack/build/5281a09a22d14baeb7421d517564229a : SUCCESS in 5m 57s\n- watcher-grenade https://zuul.opendev.org/t/openstack/build/88a5690efdd24ac9bee629888cdc9dc0 : SUCCESS in 45m 36s\n- watcher-grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/e9a95d572b8249f7a95a0f69a6a79090 : SUCCESS in 24m 04s\n- watcher-tempest-api-ipv6-only https://zuul.opendev.org/t/openstack/build/6220b68b53cf4e97b625bc0f079c807b : SUCCESS in 37m 55s\n- watcher-tempest-gnocchi https://zuul.opendev.org/t/openstack/build/1954157913744a109fb46ed060c24fe0 : SUCCESS in 1h 47m 22s\n- watcher-tempest-prometheus https://zuul.opendev.org/t/openstack/build/747562246438443fa80d21bf8a2ae11d : TIMED_OUT in 2h 05m 46s\n- watcher-tempest-prometheus-eventlet https://zuul.opendev.org/t/openstack/build/aaab21f9e00b40c3b17d794afb4edded : SUCCESS in 1h 43m 23s\n- watcher-tempest-aetos https://zuul.opendev.org/t/openstack/build/ea909ec306044033b8bda9d242d44120 : SUCCESS in 2h 00m 58s","accounts_in_message":[],"_revision_number":6},{"id":"a4f7d5a6d772c4d2e3f7849864fbd01e3788fb4b","author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"date":"2026-06-11 19:29:20.000000000","message":"Patch Set 6:\n\n(1 comment)","accounts_in_message":[],"_revision_number":6},{"id":"3f545e00a450c8d1f3b4d73f107d8134ee59e6ed","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-11 21:36:24.000000000","message":"Patch Set 6: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/f644ebacf11e438d9cab9d5bd5b5137d\n\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/10d1c6c166d946c99d59e42f0f3b58a7 : SUCCESS in 6m 16s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/5ae5eb68f28c4e709ea34e036815ff25 : SUCCESS in 4m 37s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/77baaea8451b4b9989ec528915f26c0a : SUCCESS in 4m 00s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/789747b04096448cbcf45a9c7799cd1e : SUCCESS in 4m 58s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/c6355530f1144a8097019ee12d901053 : SUCCESS in 5m 59s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/86f2419aa3784d0689a27d771db1a562 : SUCCESS in 5m 17s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/32abd5604023434381024b7838cd8de5 : SUCCESS in 3m 02s\n- openstack-tox-py313-eventlet https://zuul.opendev.org/t/openstack/build/15e8c1899c774b54af7c030ba7446882 : SUCCESS in 5m 26s\n- watcher-grenade https://zuul.opendev.org/t/openstack/build/877f4874346043e49c3ccb1df5eed306 : SUCCESS in 52m 13s\n- watcher-grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/3a53bd5497e04bb8961b0e2db74f4202 : SUCCESS in 30m 26s\n- watcher-tempest-api-ipv6-only https://zuul.opendev.org/t/openstack/build/8b3fca93ea764b8a91358af7087f383e : SUCCESS in 37m 27s\n- watcher-tempest-gnocchi https://zuul.opendev.org/t/openstack/build/aa4cfd42a9cd4466b2941d1b0371bb83 : SUCCESS in 1h 38m 01s\n- watcher-tempest-prometheus https://zuul.opendev.org/t/openstack/build/a13651be15c04573aaa5586730dd6f7d : SUCCESS in 1h 22m 02s\n- watcher-tempest-prometheus-eventlet https://zuul.opendev.org/t/openstack/build/f6692927c0584d378b516ead837b3a96 : SUCCESS in 1h 35m 55s\n- watcher-tempest-aetos https://zuul.opendev.org/t/openstack/build/caa1d808ced44bdabdcb1973a4a57e41 : SUCCESS in 1h 54m 04s","accounts_in_message":[],"_revision_number":6},{"id":"d97ef2599ca160af75f3d1d3c57d15118b436aae","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-11 21:36:58.000000000","message":"Patch Set 6: -Verified\n\nStarting gate jobs.","accounts_in_message":[],"_revision_number":6},{"id":"1eb65f3fc3ff5de88467f19946b2c57be0f3368c","author":{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},"date":"2026-06-11 22:42:02.000000000","message":"Patch Set 6:\n\nBuild succeeded (check pipeline).\nhttps://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/buildset/3dfae55032bc41439e1160ad32303ef2\n\n- openstack-meta-content-provider-master https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/build/42e5833f3bb6475f989042c43f49123a : SUCCESS in 3h 11m 28s\n- watcher-operator-validation-master https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/build/e41109222c5f42adb8b92d1c38dbd158 : SUCCESS in 2h 16m 24s","accounts_in_message":[],"_revision_number":6},{"id":"fe86eb24943be8fe9298a9067218816c562a2e43","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-11 23:54:40.000000000","message":"Patch Set 6: Verified+2\n\nBuild succeeded (gate pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/53598aa8d6ab4771bb244875e53c9940\n\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/a3e7079eb991478586bc7e99bbdc32ac : SUCCESS in 4m 17s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/742a2f11b03d4610adf415ddc04f53d4 : SUCCESS in 3m 29s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/62f3b9ba40e3434faac11a2096c6fb50 : SUCCESS in 5m 14s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/1064e784b639442bbdd7359cc7e40e54 : SUCCESS in 10m 23s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/bf68874bfbcb47b8a551be92e8fe50f9 : SUCCESS in 3m 27s\n- openstack-tox-py313-eventlet https://zuul.opendev.org/t/openstack/build/0f10fb38aaa840ceb62228d847fe64f6 : SUCCESS in 4m 50s\n- watcher-grenade https://zuul.opendev.org/t/openstack/build/37178519812045808997d6144a3bab52 : SUCCESS in 55m 20s\n- watcher-grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/4ed5b2c57dc8448488e5fce0dbd9295a : SUCCESS in 52m 37s\n- watcher-tempest-api-ipv6-only https://zuul.opendev.org/t/openstack/build/85b1cb37527f44acb765195ca696a744 : SUCCESS in 16m 30s\n- watcher-tempest-gnocchi https://zuul.opendev.org/t/openstack/build/941b59254920470e9d2d373817495fc5 : SUCCESS in 1h 23m 26s\n- watcher-tempest-prometheus https://zuul.opendev.org/t/openstack/build/8757fe763430434c90c2af6dfd76076e : SUCCESS in 1h 58m 22s\n- watcher-tempest-prometheus-eventlet https://zuul.opendev.org/t/openstack/build/36bb8ac97e5b41079c7850a174f1c3b1 : SUCCESS in 2h 06m 13s\n- watcher-tempest-aetos https://zuul.opendev.org/t/openstack/build/a4dc9aeba04c4a92b131395e0d5b0ea7 : SUCCESS in 1h 10m 15s","accounts_in_message":[],"_revision_number":6},{"id":"634f53c897898efbc02f6ebea4bdd8342a3bd25a","tag":"autogenerated:gerrit:merged","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-11 23:54:40.000000000","message":"Change has been successfully merged","accounts_in_message":[],"_revision_number":6},{"id":"042f7c6e443cd0ef69bb592fc4070c86dcdf129d","tag":"autogenerated:zuul:promote","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-11 23:56:11.000000000","message":"Patch Set 6:\n\nBuild succeeded (promote pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/712154df42434c168547ae089c87808c\n\n- promote-openstack-tox-docs https://zuul.opendev.org/t/openstack/build/324b227bff8a422c8ff1abff61a3aa5b : SUCCESS in 46s\n- promote-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/efc574e3e9604c0fb2fb16686b5187d4 : SUCCESS in 43s","accounts_in_message":[],"_revision_number":6}],"current_revision_number":6,"current_revision":"51a27ae3b5aabf989d14f5acc3a1094db5df8d3a","revisions":{"36a4563d8e334caf4c3d1d3fff860fd6cc0f97f6":{"kind":"REWORK","_number":1,"created":"2026-05-06 15:36:15.000000000","uploader":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"ref":"refs/changes/40/987540/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/watcher","ref":"refs/changes/40/987540/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/watcher refs/changes/40/987540/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/watcher refs/changes/40/987540/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/watcher refs/changes/40/987540/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/watcher refs/changes/40/987540/1"}}},"commit":{"parents":[{"commit":"3ad4092b785695159316064c122142cb56f6e7c6","subject":"Merge \"Add debug logging for host rejection in workload_balance\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/3ad4092b785695159316064c122142cb56f6e7c6"}]}],"author":{"name":"Douglas Viroel","email":"viroel@gmail.com","date":"2026-05-06 11:45:17.000000000","tz":-180},"committer":{"name":"Douglas Viroel","email":"viroel@gmail.com","date":"2026-05-06 15:34:39.000000000","tz":-180},"subject":"Replace global lockutils locks with per-instance RLock","message":"Replace global lockutils locks with per-instance RLock\n\nReplace oslo.concurrency\u0027s global named locks with a per-instance\nthreading.RLock on ModelRoot, StorageModelRoot, and BaremetalModelRoot.\n\nThe previous approach used @lockutils.synchronized(\"model_root\") and\nequivalent decorators, which acquire a process-wide named lock shared\nacross all model instances. This caused unnecessary contention: strategy\ncopies (deep-copied from the collector\u0027s master model) contended on the\nsame global lock even though they are independent single-threaded objects.\n\nThe new approach introduces:\n* @with_instance_lock class decorator: injects self._lock (threading.RLock)\n  by wrapping each class\u0027s __init__, and adds __deepcopy__ so that deep\n  copies receive a fresh RLock rather than failing to copy the original.\n* @instance_lock method decorator: acquires self._lock rather than a global\n  named lock, scoping synchronization to the individual instance.\n\nEach deep copy obtained by a strategy now has its own independent lock\nthat is never contended, eliminating global lock overhead during\nstrategy execution without requiring any conditional locking logic.\n\nPartial-Bug: #2141951\nAssisted-By: Claude Sonnet 4.6\nChange-Id: I787397d511e86bb8b1834ec50085b2ce92217edd\nSigned-off-by: Douglas Viroel \u003cviroel@gmail.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/36a4563d8e334caf4c3d1d3fff860fd6cc0f97f6"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/36a4563d8e334caf4c3d1d3fff860fd6cc0f97f6"}]},"branch":"refs/heads/master"},"9f689f41a32df33ce61490d1ab0124857f6e518f":{"kind":"REWORK","_number":2,"created":"2026-05-12 18:16:37.000000000","uploader":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"ref":"refs/changes/40/987540/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/watcher","ref":"refs/changes/40/987540/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/watcher refs/changes/40/987540/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/watcher refs/changes/40/987540/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/watcher refs/changes/40/987540/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/watcher refs/changes/40/987540/2"}}},"commit":{"parents":[{"commit":"25d064650963649c5c7e906a1c3fceb4637c44d3","subject":"Add regression test for map_instance reentrant deadlock","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/25d064650963649c5c7e906a1c3fceb4637c44d3"}]}],"author":{"name":"Douglas Viroel","email":"viroel@gmail.com","date":"2026-05-06 11:45:17.000000000","tz":-180},"committer":{"name":"Douglas Viroel","email":"viroel@gmail.com","date":"2026-05-12 18:15:26.000000000","tz":-180},"subject":"Replace global lockutils locks with per-instance RLock","message":"Replace global lockutils locks with per-instance RLock\n\nReplace oslo.concurrency\u0027s global named locks with a per-instance\nthreading.RLock on ModelRoot, StorageModelRoot, and BaremetalModelRoot.\n\nThe previous approach used @lockutils.synchronized(\"model_root\") and\nequivalent decorators, which acquire a process-wide named lock shared\nacross all model instances. This had two problems:\n\n1. The global threading.Semaphore used by lockutils is non-reentrant.\n   Methods such as map_instance(), unmap_instance(), and migrate_instance()\n   acquire the lock and then call other decorated methods (e.g.\n   get_instance_by_uuid, get_node_by_uuid) on the same thread, causing\n   a permanent deadlock when those methods are called with string UUID\n   arguments.\n\n2. Strategy deep copies and the collector\u0027s master model shared the same\n   global lock, causing unnecessary contention on logically independent\n   data.\n\nThe new approach introduces:\n* @with_instance_lock class decorator: injects self._lock (threading.RLock)\n  by wrapping each class\u0027s __init__, and adds __deepcopy__ so that deep\n  copies receive a fresh RLock rather than failing to copy the original.\n* @instance_lock method decorator: acquires self._lock rather than a global\n  named lock, scoping synchronization to the individual instance.\n\nEach deep copy obtained by a strategy now has its own independent lock\nthat is never contended, eliminating global lock overhead during\nstrategy execution without requiring any conditional locking logic.\n\nCloses-Bug: #2152254\nPartial-Bug: #2141951\nAssisted-By: Claude Sonnet 4.6\nChange-Id: I787397d511e86bb8b1834ec50085b2ce92217edd\nSigned-off-by: Douglas Viroel \u003cviroel@gmail.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/9f689f41a32df33ce61490d1ab0124857f6e518f"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/9f689f41a32df33ce61490d1ab0124857f6e518f"}]},"branch":"refs/heads/master"},"bef15026f51cd20d292da62a9a52ef37c1058ffa":{"kind":"REWORK","_number":3,"created":"2026-05-13 11:07:54.000000000","uploader":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"ref":"refs/changes/40/987540/3","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/watcher","ref":"refs/changes/40/987540/3","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/watcher refs/changes/40/987540/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/watcher refs/changes/40/987540/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/watcher refs/changes/40/987540/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/watcher refs/changes/40/987540/3"}}},"commit":{"parents":[{"commit":"25d064650963649c5c7e906a1c3fceb4637c44d3","subject":"Add regression test for map_instance reentrant deadlock","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/25d064650963649c5c7e906a1c3fceb4637c44d3"}]}],"author":{"name":"Douglas Viroel","email":"viroel@gmail.com","date":"2026-05-06 11:45:17.000000000","tz":-180},"committer":{"name":"Douglas Viroel","email":"viroel@gmail.com","date":"2026-05-13 11:07:04.000000000","tz":-180},"subject":"Replace global lockutils locks with per-instance RLock","message":"Replace global lockutils locks with per-instance RLock\n\nReplace oslo.concurrency\u0027s global named locks with a per-instance\nthreading.RLock on ModelRoot, StorageModelRoot, and BaremetalModelRoot.\n\nThe previous approach used @lockutils.synchronized(\"model_root\") and\nequivalent decorators, which acquire a process-wide named lock shared\nacross all model instances. This had two problems:\n\n1. The global threading.Semaphore used by lockutils is non-reentrant.\n   Methods such as map_instance(), unmap_instance(), and migrate_instance()\n   acquire the lock and then call other decorated methods (e.g.\n   get_instance_by_uuid, get_node_by_uuid) on the same thread, causing\n   a permanent deadlock when those methods are called with string UUID\n   arguments.\n\n2. Strategy deep copies and the collector\u0027s master model shared the same\n   global lock, causing unnecessary contention on logically independent\n   data.\n\nThe new approach introduces:\n* @with_instance_lock class decorator: injects self._lock (threading.RLock)\n  by wrapping each class\u0027s __init__, and adds __deepcopy__ so that deep\n  copies receive a fresh RLock rather than failing to copy the original.\n* @instance_lock method decorator: acquires self._lock rather than a global\n  named lock, scoping synchronization to the individual instance.\n\nEach deep copy obtained by a strategy now has its own independent lock\nthat is never contended, eliminating global lock overhead during\nstrategy execution without requiring any conditional locking logic.\n\nCloses-Bug: #2152254\nPartial-Bug: #2141951\nAssisted-By: Claude Sonnet 4.6\nChange-Id: I787397d511e86bb8b1834ec50085b2ce92217edd\nSigned-off-by: Douglas Viroel \u003cviroel@gmail.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/bef15026f51cd20d292da62a9a52ef37c1058ffa"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/bef15026f51cd20d292da62a9a52ef37c1058ffa"}]},"branch":"refs/heads/master"},"7554e6b49ec56e3a55bd87f912941ad9e21d4b39":{"kind":"REWORK","_number":4,"created":"2026-05-13 19:50:59.000000000","uploader":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"ref":"refs/changes/40/987540/4","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/watcher","ref":"refs/changes/40/987540/4","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/watcher refs/changes/40/987540/4 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/watcher refs/changes/40/987540/4 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/watcher refs/changes/40/987540/4 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/watcher refs/changes/40/987540/4"}}},"commit":{"parents":[{"commit":"25d064650963649c5c7e906a1c3fceb4637c44d3","subject":"Add regression test for map_instance reentrant deadlock","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/25d064650963649c5c7e906a1c3fceb4637c44d3"}]}],"author":{"name":"Douglas Viroel","email":"viroel@gmail.com","date":"2026-05-06 11:45:17.000000000","tz":-180},"committer":{"name":"Douglas Viroel","email":"viroel@gmail.com","date":"2026-05-13 19:49:05.000000000","tz":-180},"subject":"Replace global lockutils locks with per-instance RLock","message":"Replace global lockutils locks with per-instance RLock\n\nReplace oslo.concurrency\u0027s global named locks with a per-instance\nthreading.RLock on ModelRoot, StorageModelRoot, and BaremetalModelRoot.\n\nThe previous approach used @lockutils.synchronized(\"model_root\") and\nequivalent decorators, which acquire a process-wide named lock shared\nacross all model instances. This had two problems:\n\n1. The global threading.Semaphore used by lockutils is non-reentrant.\n   Methods such as map_instance(), unmap_instance(), and migrate_instance()\n   acquire the lock and then call other decorated methods (e.g.\n   get_instance_by_uuid, get_node_by_uuid) on the same thread, causing\n   a permanent deadlock when those methods are called with string UUID\n   arguments.\n\n2. Strategy deep copies and the collector\u0027s master model shared the same\n   global lock, causing unnecessary contention on logically independent\n   data.\n\nThe new approach introduces:\n* @with_instance_lock class decorator: injects self._lock (threading.RLock)\n  by wrapping each class\u0027s __init__, and adds __deepcopy__ so that deep\n  copies receive a fresh RLock rather than failing to copy the original.\n* @instance_lock method decorator: acquires self._lock rather than a global\n  named lock, scoping synchronization to the individual instance.\n\nEach deep copy obtained by a strategy now has its own independent lock\nthat is never contended, eliminating global lock overhead during\nstrategy execution without requiring any conditional locking logic.\n\nCloses-Bug: #2152254\nPartial-Bug: #2141951\nAssisted-By: Claude Sonnet 4.6\nChange-Id: I787397d511e86bb8b1834ec50085b2ce92217edd\nSigned-off-by: Douglas Viroel \u003cviroel@gmail.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/7554e6b49ec56e3a55bd87f912941ad9e21d4b39"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/7554e6b49ec56e3a55bd87f912941ad9e21d4b39"}]},"branch":"refs/heads/master"},"2477f8fd4c6f158d562c44811011bc1b568dc2fb":{"kind":"TRIVIAL_REBASE","_number":5,"created":"2026-05-20 14:11:04.000000000","uploader":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"ref":"refs/changes/40/987540/5","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/watcher","ref":"refs/changes/40/987540/5","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/watcher refs/changes/40/987540/5 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/watcher refs/changes/40/987540/5 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/watcher refs/changes/40/987540/5 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/watcher refs/changes/40/987540/5"}}},"commit":{"parents":[{"commit":"e3876ca3bab6a8477f558bf75a604a3674d12569","subject":"Add regression test for map_instance reentrant deadlock","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/e3876ca3bab6a8477f558bf75a604a3674d12569"}]}],"author":{"name":"Douglas Viroel","email":"viroel@gmail.com","date":"2026-05-06 11:45:17.000000000","tz":-180},"committer":{"name":"Douglas Viroel","email":"viroel@gmail.com","date":"2026-05-20 14:10:41.000000000","tz":-180},"subject":"Replace global lockutils locks with per-instance RLock","message":"Replace global lockutils locks with per-instance RLock\n\nReplace oslo.concurrency\u0027s global named locks with a per-instance\nthreading.RLock on ModelRoot, StorageModelRoot, and BaremetalModelRoot.\n\nThe previous approach used @lockutils.synchronized(\"model_root\") and\nequivalent decorators, which acquire a process-wide named lock shared\nacross all model instances. This had two problems:\n\n1. The global threading.Semaphore used by lockutils is non-reentrant.\n   Methods such as map_instance(), unmap_instance(), and migrate_instance()\n   acquire the lock and then call other decorated methods (e.g.\n   get_instance_by_uuid, get_node_by_uuid) on the same thread, causing\n   a permanent deadlock when those methods are called with string UUID\n   arguments.\n\n2. Strategy deep copies and the collector\u0027s master model shared the same\n   global lock, causing unnecessary contention on logically independent\n   data.\n\nThe new approach introduces:\n* @with_instance_lock class decorator: injects self._lock (threading.RLock)\n  by wrapping each class\u0027s __init__, and adds __deepcopy__ so that deep\n  copies receive a fresh RLock rather than failing to copy the original.\n* @instance_lock method decorator: acquires self._lock rather than a global\n  named lock, scoping synchronization to the individual instance.\n\nEach deep copy obtained by a strategy now has its own independent lock\nthat is never contended, eliminating global lock overhead during\nstrategy execution without requiring any conditional locking logic.\n\nCloses-Bug: #2152254\nPartial-Bug: #2141951\nAssisted-By: Claude Sonnet 4.6\nChange-Id: I787397d511e86bb8b1834ec50085b2ce92217edd\nSigned-off-by: Douglas Viroel \u003cviroel@gmail.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/2477f8fd4c6f158d562c44811011bc1b568dc2fb"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/2477f8fd4c6f158d562c44811011bc1b568dc2fb"}]},"branch":"refs/heads/master"},"51a27ae3b5aabf989d14f5acc3a1094db5df8d3a":{"kind":"TRIVIAL_REBASE","_number":6,"created":"2026-05-29 12:49:16.000000000","uploader":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"ref":"refs/changes/40/987540/6","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/watcher","ref":"refs/changes/40/987540/6","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/watcher refs/changes/40/987540/6 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/watcher refs/changes/40/987540/6 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/watcher refs/changes/40/987540/6 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/watcher refs/changes/40/987540/6"}}},"commit":{"parents":[{"commit":"0c88a379458a460d086b04c15a386870fe3e071a","subject":"Add regression test for map_instance reentrant deadlock","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/0c88a379458a460d086b04c15a386870fe3e071a"}]}],"author":{"name":"Douglas Viroel","email":"viroel@gmail.com","date":"2026-05-06 11:45:17.000000000","tz":-180},"committer":{"name":"Douglas Viroel","email":"viroel@gmail.com","date":"2026-05-29 12:47:35.000000000","tz":-180},"subject":"Replace global lockutils locks with per-instance RLock","message":"Replace global lockutils locks with per-instance RLock\n\nReplace oslo.concurrency\u0027s global named locks with a per-instance\nthreading.RLock on ModelRoot, StorageModelRoot, and BaremetalModelRoot.\n\nThe previous approach used @lockutils.synchronized(\"model_root\") and\nequivalent decorators, which acquire a process-wide named lock shared\nacross all model instances. This had two problems:\n\n1. The global threading.Semaphore used by lockutils is non-reentrant.\n   Methods such as map_instance(), unmap_instance(), and migrate_instance()\n   acquire the lock and then call other decorated methods (e.g.\n   get_instance_by_uuid, get_node_by_uuid) on the same thread, causing\n   a permanent deadlock when those methods are called with string UUID\n   arguments.\n\n2. Strategy deep copies and the collector\u0027s master model shared the same\n   global lock, causing unnecessary contention on logically independent\n   data.\n\nThe new approach introduces:\n* @with_instance_lock class decorator: injects self._lock (threading.RLock)\n  by wrapping each class\u0027s __init__, and adds __deepcopy__ so that deep\n  copies receive a fresh RLock rather than failing to copy the original.\n* @instance_lock method decorator: acquires self._lock rather than a global\n  named lock, scoping synchronization to the individual instance.\n\nEach deep copy obtained by a strategy now has its own independent lock\nthat is never contended, eliminating global lock overhead during\nstrategy execution without requiring any conditional locking logic.\n\nCloses-Bug: #2152254\nPartial-Bug: #2141951\nAssisted-By: Claude Sonnet 4.6\nChange-Id: I787397d511e86bb8b1834ec50085b2ce92217edd\nSigned-off-by: Douglas Viroel \u003cviroel@gmail.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/51a27ae3b5aabf989d14f5acc3a1094db5df8d3a"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/51a27ae3b5aabf989d14f5acc3a1094db5df8d3a"}]},"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":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"}},{"label":"Workflow","status":"MAY","applied_by":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"}}]}],"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":{"label:Verified\u003dMAX":"","label:Verified\u003dMIN":""}}},{"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":{"label:Code-Review\u003dMAX":"","label:Code-Review\u003dMIN":""}}},{"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":{"label:Workflow\u003dMAX":"","label:Workflow\u003dMIN":""}}}]}
