)]}'
{"watcher/applier/workflow_engine/default.py":[{"robot_id":"zuul","robot_run_id":"20accccb358d472d9604a41f2e17c7b6","url":"https://zuul.teim.app/t/main/buildset/20accccb358d472d9604a41f2e17c7b6","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"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"ab16828117e3a13d57aef2211d12eb364b5bb5f0","patch_set":1,"id":"7d68c789_122dd3fd","line":121,"updated":"2026-02-10 19:46:18.000000000","message":"Consider adding a log message when parallel engine is activated to help operators understand concurrency mode\n\n**Severity**: SUGGESTION | **Confidence**: 0.6\n\n**Benefit**: Current LOG.info message is good, but adding max_workers value would help operators understand parallelism level and tune performance.\n\n**Recommendation**:\nEnhance log message to include max_workers value: \u0027Using Taskflow parallel engine with threaded executor in native threading mode with max_workers\u003d%s\u0027","commit_id":"20e3d639d836b3e68e17a721820a3766db597bf2"}],"watcher/db/sqlalchemy/api.py":[{"robot_id":"zuul","robot_run_id":"20accccb358d472d9604a41f2e17c7b6","url":"https://zuul.teim.app/t/main/buildset/20accccb358d472d9604a41f2e17c7b6","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"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"ab16828117e3a13d57aef2211d12eb364b5bb5f0","patch_set":1,"id":"721c5a6e_58d8b282","line":234,"updated":"2026-02-10 19:46:18.000000000","message":"The update_action and update_action_plan methods have @oslo_db_api.retry_on_deadlock, consistent with other write operations\n\n**Severity**: SUGGESTION | **Confidence**: 0.7\n\n**Benefit**: Existing code has retry_on_deadlock on static methods using _session_for_write. Good defensive programming for production databases experiencing deadlocks under concurrent load.\n\n**Recommendation**:\nCurrent implementation is correct and follows existing patterns. Consider adding comment explaining decorators serve both production and test purposes.","commit_id":"20e3d639d836b3e68e17a721820a3766db597bf2"},{"robot_id":"zuul","robot_run_id":"c29d848d2eba4e788a2b93cbd970ce88","url":"https://zuul.teim.app/t/main/buildset/c29d848d2eba4e788a2b93cbd970ce88","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"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"f4be4c29174777f13d7385d1db4cf9fdd63f9db8","patch_set":2,"id":"368d59d3_e8b61afd","line":799,"updated":"2026-02-18 17:19:20.000000000","message":"update_action and update_action_plan add decorator to calling method but the actual database write is delegated to undecorated static helper methods\n\n**Severity**: WARNING | **Confidence**: 0.9\n\n**Impact**: Decorator placement creates a false sense of security - it appears methods are protected, but actual database operations in helper methods are not decorated.\n\n**Suggestion**:\nEither decorate the static helper methods (_do_update_action, _do_update_action_plan) with @oslo_db_api.retry_on_deadlock, or refactor to inline the update logic directly into update_action/update_action_plan (similar to update_goal, update_strategy, update_audit patterns).","commit_id":"b060ebb2218439c975ffa0e62a3e09780e6ce42c"},{"robot_id":"zuul","robot_run_id":"c29d848d2eba4e788a2b93cbd970ce88","url":"https://zuul.teim.app/t/main/buildset/c29d848d2eba4e788a2b93cbd970ce88","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"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"f4be4c29174777f13d7385d1db4cf9fdd63f9db8","patch_set":2,"id":"e72dae61_9f9ff4c8","line":809,"updated":"2026-02-18 17:19:20.000000000","message":"Private methods _do_update_action and _do_update_action_plan use _session_for_write() directly but are missing @oslo_db_api.retry_on_deadlock decorator\n\n**Severity**: CRITICAL | **Confidence**: 0.9\n\n**Risk**: Decorator does NOT propagate to static helper methods. Deadlocks in _do_update_action and _do_update_action_plan will NOT be retried, causing failures in high-concurrency scenarios.\n\n**Priority**: Immediate\n**Why This Matters**: The documented requirement at lines 54-56 states ANY method using _session_for_write must have the decorator. These static methods use _session_for_write() and with_for_update() which are prone to deadlocks.\n\n**Recommendation**:\nAdd @oslo_db_api.retry_on_deadlock decorator to both _do_update_action (line 809) and _do_update_action_plan (line 894). Alternatively, refactor to inline update logic directly in update_action and update_action_plan, similar to update_goal, update_strategy, and update_audit patterns.","commit_id":"b060ebb2218439c975ffa0e62a3e09780e6ce42c"},{"robot_id":"zuul","robot_run_id":"c29d848d2eba4e788a2b93cbd970ce88","url":"https://zuul.teim.app/t/main/buildset/c29d848d2eba4e788a2b93cbd970ce88","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"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"f4be4c29174777f13d7385d1db4cf9fdd63f9db8","patch_set":2,"id":"44c234f8_12fd9ef2","line":914,"updated":"2026-02-18 17:19:20.000000000","message":"get_efficacy_indicator_list and _get_efficacy_indicator call self._update within read operations but these are read methods not decorated for retry\n\n**Severity**: WARNING | **Confidence**: 0.7\n\n**Impact**: These methods perform database writes during read operations to handle migration compatibility. While _update is decorated, having writes in GET methods is a problematic pattern.\n\n**Suggestion**:\nConsider documenting this write-in-read behavior more prominently with comments explaining the migration compatibility requirement to prevent future confusion or accidental removal.","commit_id":"b060ebb2218439c975ffa0e62a3e09780e6ce42c"},{"robot_id":"zuul","robot_run_id":"2e4d680eec5c4100b64caf73736dd1e0","url":"https://zuul.teim.app/t/main/buildset/2e4d680eec5c4100b64caf73736dd1e0","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"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"5bb7f5c26ec314eee3f2a8fe0f2e83f2428fa2f5","patch_set":3,"id":"bcc23918_9d1641eb","line":503,"updated":"2026-02-26 10:38:40.000000000","message":"Multiple public update/destroy methods still use _update()/_destroy()/_soft_delete() helpers without explicit @oslo_db_api.retry_on_deadlock decorators\n\n**Severity**: WARNING | **Confidence**: 0.8\n\n**Impact**: While the helper methods (_create, _update, _soft_delete, _destroy) have the decorator, public methods that call them (update_goal, update_strategy, update_audit_template, destroy_goal, destroy_strategy, destroy_audit_template, etc.) do not have the decorator themselves. This creates inconsistency where methods directly using _session_for_write() have the decorator, but methods using the helpers do not. In high-concurrency scenarios, if oslo_db\u0027s DBAPI proxy is not being used, these methods won\u0027t get deadlock retry protection.\n\n**Suggestion**:\nConsider adding @oslo_db_api.retry_on_deadlock decorators to all public create/update/destroy/soft_delete methods for consistency, even those using helper methods. This ensures deadlock protection regardless of whether the oslo_db DBAPI proxy is used. Alternatively, document why methods using helpers don\u0027t need explicit decorators if the DBAPI proxy is always used.","commit_id":"880e2a5c51309731cb3f7c86dcf5882f533a9270"},{"robot_id":"zuul","robot_run_id":"afef3dfffd3c4e5aaf7dfc8331a467d6","url":"https://zuul.teim.app/t/main/buildset/afef3dfffd3c4e5aaf7dfc8331a467d6","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"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"ad834f535750ce54b9618362b9dfe1ae9b6ed79d","patch_set":3,"id":"8f09af32_5c4bd0b4","line":591,"updated":"2026-02-19 19:04:51.000000000","message":"The create_audit_template and create_audit methods perform uniqueness validation queries before calling _create. The decorator will retry the entire method on deadlock, which includes re-executing the uniqueness check. This is correct behavior but worth noting that both the validation query and the insert will be retried together.\n\n**Severity**: SUGGESTION | **Confidence**: 0.6\n\n**Benefit**: Understanding the retry scope helps with debugging potential concurrency issues during audit/audit_template creation.\n\n**Recommendation**:\nThe current implementation is correct. The decorator appropriately wraps both the uniqueness validation and the insert operation. If you want to minimize the retry scope to just the insert, you would need to restructure these methods to call _create directly and handle DBDuplicateEntry exceptions, but the current approach is simpler and valid.","commit_id":"880e2a5c51309731cb3f7c86dcf5882f533a9270"},{"robot_id":"zuul","robot_run_id":"6b8cee653bcf48c88617c165b3e87367","url":"https://zuul.teim.app/t/main/buildset/6b8cee653bcf48c88617c165b3e87367","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"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"55c37e23ed69b6ac4c64bb040ffc138246c9a0de","patch_set":3,"id":"03a264da_887bb873","line":737,"updated":"2026-02-20 16:25:16.000000000","message":"The update_audit method (line 737) also performs database write operations via _update() but does not have the decorator, relying on _update\u0027s decorator instead. This is a valid pattern but inconsistent with the new approach of decorating public methods.\n\n**Severity**: SUGGESTION | **Confidence**: 0.6\n\n**Benefit**: Ensures consistent decorator application pattern across all public write methods\n\n**Recommendation**:\nConsider whether update_audit should also have the @oslo_db_api.retry_on_deadlock decorator for consistency, though the existing _update decorator provides protection. This is a minor consistency consideration.","commit_id":"880e2a5c51309731cb3f7c86dcf5882f533a9270"},{"robot_id":"zuul","robot_run_id":"2e4d680eec5c4100b64caf73736dd1e0","url":"https://zuul.teim.app/t/main/buildset/2e4d680eec5c4100b64caf73736dd1e0","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"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"5bb7f5c26ec314eee3f2a8fe0f2e83f2428fa2f5","patch_set":3,"id":"2a34460f_ed9db4fd","line":737,"updated":"2026-02-26 10:38:40.000000000","message":"update_audit() method missing @oslo_db_api.retry_on_deadlock decorator despite performing write operations through _update() helper\n\n**Severity**: WARNING | **Confidence**: 0.9\n\n**Impact**: The update_audit() method performs database write operations via self._update() which internally uses _session_for_write(), but lacks the retry_on_deadlock decorator. This could result in failed operations under high concurrency when database deadlocks occur, as the method would not benefit from automatic retry handling that other update methods (like update_action, update_action_plan) now have.\n\n**Suggestion**:\nAdd @oslo_db_api.retry_on_deadlock decorator to update_audit() method at line 737 to maintain consistency with other update methods and ensure deadlock resilience. Consider adding this decorator to all public update methods (update_audit_template, update_efficacy_indicator, update_scoring_engine, update_service, update_action_description) for comprehensive coverage, as they all use _update() internally.","commit_id":"880e2a5c51309731cb3f7c86dcf5882f533a9270"},{"robot_id":"zuul","robot_run_id":"6b8cee653bcf48c88617c165b3e87367","url":"https://zuul.teim.app/t/main/buildset/6b8cee653bcf48c88617c165b3e87367","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"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"55c37e23ed69b6ac4c64bb040ffc138246c9a0de","patch_set":3,"id":"391a1b8e_7830ee8e","line":808,"updated":"2026-02-20 16:25:16.000000000","message":"Internal helper methods _do_update_action and _do_update_action_plan also use _session_for_write() but do not have the decorator. While the public methods (update_action, update_action_plan) that call them now have the decorator which provides protection, consider whether these should also be decorated for defensive purposes.\n\n**Severity**: SUGGESTION | **Confidence**: 0.7\n\n**Benefit**: Ensures deadlock protection even if these helper methods are called directly in the future, providing defense-in-depth\n\n**Recommendation**:\nConsider adding @oslo_db_api.retry_on_deadlock decorator to _do_update_action and _do_update_action_plan helper methods as well, since they directly use _session_for_write(). However, this is optional since the public-facing methods already provide the protection.","commit_id":"880e2a5c51309731cb3f7c86dcf5882f533a9270"},{"robot_id":"zuul","robot_run_id":"afef3dfffd3c4e5aaf7dfc8331a467d6","url":"https://zuul.teim.app/t/main/buildset/afef3dfffd3c4e5aaf7dfc8331a467d6","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"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"ad834f535750ce54b9618362b9dfe1ae9b6ed79d","patch_set":3,"id":"0c1f41d9_d066a560","line":808,"updated":"2026-02-19 19:04:51.000000000","message":"The _do_update_action and _do_update_action_plan helper methods are called by update_action and update_action_plan respectively. These helpers use _session_for_write() directly but do not have @oslo_db_api.retry_on_deadlock decorators. While the public methods (update_action, update_action_plan) now have the decorator, the helper methods are also directly callable as static methods. Consider adding the decorator to these helper methods for complete coverage.\n\n**Severity**: SUGGESTION | **Confidence**: 0.7\n\n**Benefit**: Provides defensive retry handling if these static methods are called directly from other code paths, ensuring consistent deadlock handling across all write operations.\n\n**Recommendation**:\nConsider adding @oslo_db_api.retry_on_deadlock decorator to _do_update_action (line 808) and _do_update_action_plan (line 893) to match the pattern used by _create, _update, _soft_delete, and _destroy methods. However, this is optional since the public-facing methods (update_action, update_action_plan) already have the decorator and are the primary entry points.","commit_id":"880e2a5c51309731cb3f7c86dcf5882f533a9270"}],"watcher/tests/unit/db/base.py":[{"robot_id":"zuul","robot_run_id":"20accccb358d472d9604a41f2e17c7b6","url":"https://zuul.teim.app/t/main/buildset/20accccb358d472d9604a41f2e17c7b6","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"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"ab16828117e3a13d57aef2211d12eb364b5bb5f0","patch_set":1,"id":"c8f82121_6b57ee5f","line":78,"updated":"2026-02-10 19:46:18.000000000","message":"The SQLite WAL journal mode is set using a direct sqlite3 connection, but there\u0027s no error handling if the PRAGMA fails\n\n**Severity**: WARNING | **Confidence**: 0.7\n\n**Impact**: If PRAGMA journal_mode\u003dWAL fails (filesystem permissions, OS limitations), error is silently ignored. Tests may pass in some environments but fail in others due to default DELETE journal mode.\n\n**Suggestion**:\nAdd error handling around PRAGMA execution to log or fail explicitly if WAL mode cannot be enabled. Check result of conn.execute to verify WAL mode was actually set.","commit_id":"20e3d639d836b3e68e17a721820a3766db597bf2"},{"robot_id":"zuul","robot_run_id":"20accccb358d472d9604a41f2e17c7b6","url":"https://zuul.teim.app/t/main/buildset/20accccb358d472d9604a41f2e17c7b6","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"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"ab16828117e3a13d57aef2211d12eb364b5bb5f0","patch_set":1,"id":"9c0d15c5_b98a569b","line":123,"updated":"2026-02-10 19:46:18.000000000","message":"The _register_sqlite_deadlock_filter method modifies oslo_db\u0027s internal _registry at runtime, which could have unexpected side effects if oslo_db\u0027s internal structure changes\n\n**Severity**: WARNING | **Confidence**: 0.8\n\n**Impact**: Direct access to exc_filters._registry (private module variable) could break if oslo_db changes internals. Class-level flag means filter registered once per test run, potentially causing issues with different SQLite configs.\n\n**Suggestion**:\nDocument as workaround specific to current oslo_db version. Add version check or try/except for future changes. Consider resetting filter registration between test classes if different configs needed.","commit_id":"20e3d639d836b3e68e17a721820a3766db597bf2"}]}
