)]}'
{"id":"openstack%2Fwatcher~987492","triplet_id":"openstack%2Fwatcher~master~Ia744d2d20d25c320880ea52f44db674e46448cdc","project":"openstack/watcher","branch":"master","topic":"bug/2141951","attention_set":{"30002":{"account":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"last_update":"2026-05-06 15:40:40.000000000","reason":"Someone else replied on the change"}},"removed_from_attention_set":{},"hashtags":[],"change_id":"Ia744d2d20d25c320880ea52f44db674e46448cdc","subject":"[WIP] Add optional lock-free mode for cluster data models","status":"NEW","created":"2026-05-06 12:08:47.000000000","updated":"2026-05-06 15:40:40.000000000","submit_type":"MERGE_IF_NECESSARY","mergeable":true,"submittable":false,"total_comment_count":6,"unresolved_comment_count":0,"has_review_started":true,"meta_rev_id":"a1fe3622b1fb23757e046057d1499e5b7f3d9d3e","_number":987492,"virtual_id_number":987492,"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 13:57:35.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 15:40:40.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 13:36:29.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 12:08:55.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 13:57:35.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 15:40:40.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":"7b1627d11d2e5097c9cd83071d01724f6361569f","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"date":"2026-05-06 12:08:47.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"a55ddfea0ddd4427871d6b1ea9553b66fdebde04","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 12:08:55.000000000","message":"Patch Set 1:\n\nStarting automatic-ci jobs.","accounts_in_message":[],"_revision_number":1},{"id":"8142ed6041efb90d6b5d66df811fb9efb4827e9c","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"date":"2026-05-06 12:14:44.000000000","message":"Uploaded patch set 2.","accounts_in_message":[],"_revision_number":2},{"id":"537fb549288d0bf1afd73eabd1e8cb7148e7ecef","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 12:15:09.000000000","message":"Patch Set 2:\n\nStarting automatic-ci jobs.","accounts_in_message":[],"_revision_number":2},{"id":"8930c7b0398e47aa6345e0669496c3d845c7d0e4","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 12:30:29.000000000","message":"Patch Set 2:\n\n(5 comments)\n\nBuild succeeded (automatic-ci pipeline).\nhttps://zuul.teim.app/t/main/buildset/733cd8a52c9e4569a425b3272a3385b4\n\n- teim-code-review https://zuul.teim.app/t/main/build/74b9605780dc403a9e0451a665660fa3 : SUCCESS in 14m 51s","accounts_in_message":[],"_revision_number":2},{"id":"8196c53670c08be854a5333ca1257dbb5a93079e","author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"date":"2026-05-06 13:36:29.000000000","message":"Patch Set 2: Workflow-1\n\n(1 comment)","accounts_in_message":[],"_revision_number":2},{"id":"2a666909bad26a465c4308632e06a7ff14439f30","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-05-06 13:57:35.000000000","message":"Patch Set 2: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/5a5bcece32cf4933b78fb8c49446b328\n\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/cc62b1fb04384dd1b2a304fae514e66a : SUCCESS in 8m 59s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/0949efdc0c5445e48c0e072df6660a62 : SUCCESS in 4m 28s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/7fc2c804b0694f16a6eeb6c71de35256 : SUCCESS in 5m 52s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/c1f26de0cc4f427fbefc43e6b25d24ea : SUCCESS in 6m 09s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/fb854b7bf738480d84e48d3f9172c27c : SUCCESS in 10m 21s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/cbef7f8c505540c993e677e2dc3f2a17 : SUCCESS in 10m 13s\n- openstack-tox-py313-eventlet https://zuul.opendev.org/t/openstack/build/b6e89ec061e5486194261d136f422af7 : SUCCESS in 3m 01s\n- watcher-grenade https://zuul.opendev.org/t/openstack/build/8b284cb1a06947379aeeba7f9d56e002 : SUCCESS in 51m 08s\n- watcher-grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/f5d2828aba474a518e0affe52cf79952 : SUCCESS in 53m 30s\n- watcher-tempest-api-ipv6-only https://zuul.opendev.org/t/openstack/build/e381237853fb402192d3cab7305f9d5d : SUCCESS in 35m 48s\n- watcher-tempest-gnocchi https://zuul.opendev.org/t/openstack/build/604fbbaa0237455aa9afa9161a4d3aaf : SUCCESS in 1h 31m 54s\n- watcher-tempest-prometheus https://zuul.opendev.org/t/openstack/build/0a74df9888d74485a221fe81526e9203 : SUCCESS in 1h 24m 35s\n- watcher-tempest-prometheus-eventlet https://zuul.opendev.org/t/openstack/build/67124039b20d48b6b27c495af2189356 : SUCCESS in 1h 35m 20s\n- watcher-tempest-aetos https://zuul.opendev.org/t/openstack/build/ed31978df1eb422e9972c00ae272edb9 : SUCCESS in 1h 21m 03s","accounts_in_message":[],"_revision_number":2},{"id":"a1fe3622b1fb23757e046057d1499e5b7f3d9d3e","author":{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},"date":"2026-05-06 15:40:40.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/0445b0f17eb34caba7d50eb4a7639bd0\n\n- openstack-meta-content-provider-master https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/build/55220fe1e8834f00bcac5b696c16b9c5 : SUCCESS in 3h 03m 12s\n- watcher-operator-validation-master https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/build/9ada14dc61224c4b915d0c58b3f2f8be : SUCCESS in 2h 10m 35s","accounts_in_message":[],"_revision_number":2}],"current_revision_number":2,"current_revision":"aa993c69c583336fb7156e86ff37cd8be2f63842","revisions":{"fccb3f3549a880950424ab1427ab979d60e5ba12":{"kind":"REWORK","_number":1,"created":"2026-05-06 12:08:47.000000000","uploader":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"ref":"refs/changes/92/987492/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/watcher","ref":"refs/changes/92/987492/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/watcher refs/changes/92/987492/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/watcher refs/changes/92/987492/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/watcher refs/changes/92/987492/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/watcher refs/changes/92/987492/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 12:08:39.000000000","tz":-180},"subject":"[WIP] Add optional lock-free mode for cluster data models","message":"[WIP] Add optional lock-free mode for cluster data models\n\nIntroduce conditional locking mechanism for ModelRoot, StorageModelRoot,\nand BaremetalModelRoot classes to eliminate unnecessary lock overhead in\nsingle-threaded strategy execution contexts.\n\nWhile strategies operate on deep-copied cluster models in single-threaded\ncontexts, the current implementation still acquires locks on every method\ncall, creating unnecessary synchronization overhead. In large-scale\nenvironments this could results in millions of lock acquisitions\nduring strategy execution with no concurrency benefit.\n\nChanges:\n* Add conditional_lock decorator to model_root.py that checks _use_locks\n  flag at runtime - if False, skips locking entirely; if True, applies\n  normal lockutils.lock() behavior\n* Add use_locks parameter (default\u003dTrue) to __init__ of ModelRoot,\n  StorageModelRoot, and BaremetalModelRoot with property getter/setter\n* Replace @lockutils.synchronized decorators with @conditional_lock in\n  all 37 synchronized methods across the three model classes\n* Add get_latest_cluster_data_model_no_locks() method to\n  BaseClusterDataModelCollector that returns a deep copy with locks\n  disabled\n* Update BaseStrategy to use lock-free model copies for compute_model,\n  storage_model, and baremetal_model properties\n\nPartial-Bug: #2141951\nAssisted-By: Claude Sonnet 4.5\nChange-Id: Ia744d2d20d25c320880ea52f44db674e46448cdc\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/fccb3f3549a880950424ab1427ab979d60e5ba12"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/fccb3f3549a880950424ab1427ab979d60e5ba12"}]},"branch":"refs/heads/master"},"aa993c69c583336fb7156e86ff37cd8be2f63842":{"kind":"REWORK","_number":2,"created":"2026-05-06 12:14:44.000000000","uploader":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"ref":"refs/changes/92/987492/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/watcher","ref":"refs/changes/92/987492/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/watcher refs/changes/92/987492/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/watcher refs/changes/92/987492/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/watcher refs/changes/92/987492/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/watcher refs/changes/92/987492/2"}}},"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 12:14:33.000000000","tz":-180},"subject":"[WIP] Add optional lock-free mode for cluster data models","message":"[WIP] Add optional lock-free mode for cluster data models\n\nIntroduce conditional locking mechanism for ModelRoot, StorageModelRoot,\nand BaremetalModelRoot classes to eliminate unnecessary lock overhead in\nsingle-threaded strategy execution contexts.\n\nWhile strategies operate on deep-copied cluster models in single-threaded\ncontexts, the current implementation still acquires locks on every method\ncall, creating unnecessary synchronization overhead. In large-scale\nenvironments this could results in millions of lock acquisitions\nduring strategy execution with no concurrency benefit.\n\nChanges:\n* Add conditional_lock decorator to model_root.py that checks _use_locks\n  flag at runtime - if False, skips locking entirely; if True, applies\n  normal lockutils.lock() behavior\n* Add use_locks parameter (default\u003dTrue) to __init__ of ModelRoot,\n  StorageModelRoot, and BaremetalModelRoot with property getter/setter\n* Replace @lockutils.synchronized decorators with @conditional_lock in\n  all 37 synchronized methods across the three model classes\n* Add get_latest_cluster_data_model_no_locks() method to\n  BaseClusterDataModelCollector that returns a deep copy with locks\n  disabled\n* Update BaseStrategy to use lock-free model copies for compute_model,\n  storage_model, and baremetal_model properties\n\nPartial-Bug: #2141951\nAssisted-By: Claude Sonnet 4.5\nChange-Id: Ia744d2d20d25c320880ea52f44db674e46448cdc\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/aa993c69c583336fb7156e86ff37cd8be2f63842"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/aa993c69c583336fb7156e86ff37cd8be2f63842"}]},"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":""}}}]}
