)]}'
{"id":"openstack%2Fwatcher~987540","triplet_id":"openstack%2Fwatcher~master~I787397d511e86bb8b1834ec50085b2ce92217edd","project":"openstack/watcher","branch":"master","topic":"bug/2141951_rlock","attention_set":{"30002":{"account":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"last_update":"2026-05-06 15:50:57.000000000","reason":"Someone else replied on the change"}},"removed_from_attention_set":{},"hashtags":[],"change_id":"I787397d511e86bb8b1834ec50085b2ce92217edd","subject":"Replace global lockutils locks with per-instance RLock","status":"NEW","created":"2026-05-06 15:36:15.000000000","updated":"2026-05-06 18:31:35.000000000","submit_type":"MERGE_IF_NECESSARY","mergeable":true,"submittable":false,"total_comment_count":8,"unresolved_comment_count":0,"has_review_started":true,"meta_rev_id":"fc0a23a09813a708c69a0a2df5c922ace91e276e","_number":987540,"virtual_id_number":987540,"owner":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"actions":{},"labels":{"Verified":{"recommended":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"tag":"autogenerated:zuul:check","value":1,"date":"2026-05-06 17:23:17.000000000","permitted_voting_range":{"min":-2,"max":2},"_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"}],"values":{"-2":"Fails","-1":"Doesn\u0027t seem to work"," 0":"No score","+1":"Works for me","+2":"Verified"},"description":"","value":1,"default_value":0,"optional":true},"Code-Review":{"recommended":{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},"all":[{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"value":1,"date":"2026-05-06 18:31:35.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":0,"permitted_voting_range":{"min":-2,"max":2},"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"}],"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":"","value":1,"default_value":0,"optional":true},"Workflow":{"rejected":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"all":[{"_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"},{"value":-1,"date":"2026-05-06 15:41:56.000000000","permitted_voting_range":{"min":-1,"max":1},"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"}],"values":{"-1":"Work in progress"," 0":"Ready for reviews","+1":"Approved"},"description":"","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":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"}]},"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"}],"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}],"current_revision_number":1,"current_revision":"36a4563d8e334caf4c3d1d3fff860fd6cc0f97f6","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"}},"requirements":[],"submit_records":[{"rule_name":"gerrit~DefaultSubmitRule","status":"OK","labels":[{"label":"Verified","status":"MAY","applied_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}},{"label":"Code-Review","status":"MAY","applied_by":{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"}},{"label":"Workflow","status":"MAY","applied_by":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"}}]}],"submit_requirements":[{"name":"Verified","description":"Verified in gate by CI","status":"UNSATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Verified\u003dMAX AND -label:Verified\u003dMIN","fulfilled":false,"status":"FAIL","passing_atoms":[],"failing_atoms":["label:Verified\u003dMAX","label:Verified\u003dMIN"],"atom_explanations":{"label:Verified\u003dMAX":"","label:Verified\u003dMIN":""}}},{"name":"Code-Review","description":"Code reviewed by core reviewer","status":"UNSATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Code-Review\u003dMAX AND -label:Code-Review\u003dMIN","fulfilled":false,"status":"FAIL","passing_atoms":[],"failing_atoms":["label:Code-Review\u003dMAX","label:Code-Review\u003dMIN"],"atom_explanations":{"label:Code-Review\u003dMAX":"","label:Code-Review\u003dMIN":""}}},{"name":"Workflow","description":"Approved for gate by core reviewer","status":"UNSATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Workflow\u003dMAX AND -label:Workflow\u003dMIN","fulfilled":false,"status":"FAIL","passing_atoms":["label:Workflow\u003dMIN"],"failing_atoms":["label:Workflow\u003dMAX"],"atom_explanations":{"label:Workflow\u003dMAX":"","label:Workflow\u003dMIN":""}}}]}
