)]}'
{".zuul.yaml":[{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"e6bbcb6e256f819d47da09cfd513706fea23e89e","unresolved":false,"context_lines":[{"line_number":370,"context_line":"      - release-notes-jobs-python3"},{"line_number":371,"context_line":"    check:"},{"line_number":372,"context_line":"      jobs:"},{"line_number":373,"context_line":"        - openstack-tox-py312-threading"},{"line_number":374,"context_line":"        - watcher-grenade"},{"line_number":375,"context_line":"        - watcher-tempest-api-ipv6-only"},{"line_number":376,"context_line":"        - watcher-tempest-gnocchi"}],"source_content_type":"text/x-yaml","patch_set":1,"id":"714dc093_b4279cd7","line":373,"in_reply_to":"63ee4af9_c8eb43d9","updated":"2026-03-17 11:25:35.000000000","message":"Done","commit_id":"2f03cb2144a72149dfe68e8f26554ab273303813"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"ddbd0ac8f9260343cbc513ada2ea12b79b73414b","unresolved":true,"context_lines":[{"line_number":370,"context_line":"      - release-notes-jobs-python3"},{"line_number":371,"context_line":"    check:"},{"line_number":372,"context_line":"      jobs:"},{"line_number":373,"context_line":"        - openstack-tox-py312-threading"},{"line_number":374,"context_line":"        - watcher-grenade"},{"line_number":375,"context_line":"        - watcher-tempest-api-ipv6-only"},{"line_number":376,"context_line":"        - watcher-tempest-gnocchi"}],"source_content_type":"text/x-yaml","patch_set":1,"id":"63ee4af9_c8eb43d9","line":373,"in_reply_to":"d278dc04_32574214","updated":"2026-03-17 01:40:01.000000000","message":"\u003e CI job definitions were renamed from *-threading to *-eventlet, but the job references in the check and gate pipelines were NOT updated to match, causing CI to reference non-existent jobs\n\u003e \n\u003e **Severity**: CRITICAL | **Confidence**: 1.0\n\u003e \n\u003e **Risk**: CI pipelines will fail to find the renamed jobs, blocking all merges and breaking the project\u0027s CI/CD workflow\n\u003e \n\u003e **Priority**: Immediate\n\u003e **Why This Matters**: This is a blocking issue that will cause Zuul to fail when trying to schedule non-existent jobs\n\u003e \n\u003e **Recommendation**:\n\u003e Update the pipeline job references on lines 373, 381, 385, and 392 from \u0027openstack-tox-py312-threading\u0027 to \u0027openstack-tox-py312-eventlet\u0027 and from \u0027watcher-tempest-prometheus-threading\u0027 to \u0027watcher-tempest-prometheus-eventlet\u0027 to match the renamed job definitions.\n\nOh right, needs fix","commit_id":"2f03cb2144a72149dfe68e8f26554ab273303813"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"13070a42c19d2886fbb2571c07d7a3bf5c707d8e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"46e307a5_2734d460","updated":"2026-03-19 14:09:49.000000000","message":"Just a minor issue with the logging.\n\nBTW, you plan to move commands back to watcher.cmd without eventlet directory? https://github.com/openstack/watcher/tree/13fb52e50841cc883e372e5847409e7cc3c349b2/watcher/cmd/eventlet","commit_id":"eafba8b5c10bed055c08b91790f6346bbdb21eab"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"6ce4635719202883e408f276dbf50ecbfd5a16bc","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":3,"id":"15acdfc3_9079885b","in_reply_to":"46e307a5_2734d460","updated":"2026-03-19 18:45:04.000000000","message":"The original idea was to keep the commands that run in eventlet mode inside this directory. In theory they still can run in eventlet mode. We could, but we can also defer to the code removal patch","commit_id":"eafba8b5c10bed055c08b91790f6346bbdb21eab"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"f684128c4189f3fb7f45a4eafd7a2ef18dd528b3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"6678abc4_d9883570","updated":"2026-03-20 15:35:40.000000000","message":"lgtm, thanks Doug, this was a lot of great work!","commit_id":"0eb209ae7999e22a53064692aadbff6d02a78a73"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"bf23e59cd0b419dc4d76539ab04c21931601681d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"0182abf6_d79b09cc","updated":"2026-04-07 17:24:18.000000000","message":"recheck\n\n\"NOTICE: Load on the opendev.org Gitea backends is under control again for now, if any Zuul jobs failed with SSL errors or disconnects reaching the service prior to 16:15 UTC they can be safely rechecked\"","commit_id":"58a2fc9a37fafeb8c58374b3df50f170d0d626fb"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"8b07f5bd5c3db94b1d4d09073d41f651053ee5cf","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"eca999c7_497ccd64","updated":"2026-04-07 15:26:38.000000000","message":"recheck\n\npep8 job failed on fetching code\n```\nAn unexpected error has occurred: CalledProcessError: command: (\u0027/usr/bin/git\u0027, \u0027fetch\u0027, \u0027origin\u0027, \u0027--tags\u0027)\nreturn code: 128\nstdout: (none)\nstderr:\n    fatal: unable to access \u0027https://opendev.org/openstack/hacking/\u0027: gnutls_handshake() failed: The TLS connection was non-properly terminated.\n```","commit_id":"58a2fc9a37fafeb8c58374b3df50f170d0d626fb"}],"doc/source/contributor/concurrency.rst":[{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"e6bbcb6e256f819d47da09cfd513706fea23e89e","unresolved":false,"context_lines":[{"line_number":55,"context_line":"Concurrency modes"},{"line_number":56,"context_line":"#################"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"Eventlet has been the main concurrency library within the OpenStack community"},{"line_number":59,"context_line":"for the last 10 years since the removal of twisted. Over the last few years,"},{"line_number":60,"context_line":"the maintenance of eventlet has decreased and the efforts to remove the GIL"},{"line_number":61,"context_line":"from Python (PEP 703), have fundamentally changed how concurrency works, making"}],"source_content_type":"text/x-rst","patch_set":1,"id":"899161a0_6380771f","line":58,"in_reply_to":"d2df4ddf_b2ebb8e3","updated":"2026-03-17 11:25:35.000000000","message":"\u003e Documentation typo \u0027Evenlet\u0027 was fixed to \u0027Eventlet\u0027 but could be verified for other typos in the same section\n\u003e \n\u003e **Severity**: SUGGESTION | **Confidence**: 0.7\n\u003e \n\u003e **Benefit**: Ensures professional documentation quality and prevents user confusion\n\u003e \n\u003e **Recommendation**:\n\u003e The fix from \u0027Evenlet\u0027 to \u0027Eventlet\u0027 is good. Consider a quick review of the rest of the concurrency.rst file for similar issues\n\nPlease fix.","commit_id":"2f03cb2144a72149dfe68e8f26554ab273303813"}],"releasenotes/notes/deprecate_eventlet_mode-1f8ecbc2e09ba6f1.yaml":[{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"e6bbcb6e256f819d47da09cfd513706fea23e89e","unresolved":true,"context_lines":[{"line_number":7,"context_line":"    \u003chttps://wiki.openstack.org/wiki/Eventlet-removal\u003e`__ documentation."},{"line_number":8,"context_line":"deprecations:"},{"line_number":9,"context_line":"  - |"},{"line_number":10,"context_line":"    The Eventlet concurrency mode is now deprecated and will be removed in a"},{"line_number":11,"context_line":"    future release. To temporarily re-enable Eventlet mode, set the environment"},{"line_number":12,"context_line":"    variable ``OS_WATCHER_DISABLE_EVENTLET_PATCHING\u003dfalse`` in the service"},{"line_number":13,"context_line":"    configuration. Users are encouraged to migrate to native threading mode."}],"source_content_type":"text/x-yaml","patch_set":1,"id":"e7213f3b_dc749049","line":10,"in_reply_to":"7dea1658_9a3d156d","updated":"2026-03-17 11:25:35.000000000","message":"\u003e The release note does not specify a concrete deprecation timeline or target release for eventlet mode removal\n\u003e \n\u003e **Severity**: WARNING | **Confidence**: 0.8\n\u003e \n\u003e **Impact**: Users and operators have no clear guidance on when they must migrate away from eventlet mode, making planning difficult\n\u003e \n\u003e **Suggestion**:\n\u003e Add a specific target release for eventlet removal (e.g., \u0027will be removed in the 2027.1 release\u0027). This aligns with standard OpenStack deprecation practices.\n\nStill need to sync with the watcher team to define a target release.","commit_id":"2f03cb2144a72149dfe68e8f26554ab273303813"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"59feae79405533ae4ac9fdd9f10d5ca03fc79287","unresolved":true,"context_lines":[{"line_number":7,"context_line":"    \u003chttps://wiki.openstack.org/wiki/Eventlet-removal\u003e`__ documentation."},{"line_number":8,"context_line":"deprecations:"},{"line_number":9,"context_line":"  - |"},{"line_number":10,"context_line":"    The Eventlet concurrency mode is now deprecated and will be removed in a"},{"line_number":11,"context_line":"    future release. To temporarily re-enable Eventlet mode, set the environment"},{"line_number":12,"context_line":"    variable ``OS_WATCHER_DISABLE_EVENTLET_PATCHING\u003dfalse`` in the service"},{"line_number":13,"context_line":"    configuration. Users are encouraged to migrate to native threading mode."}],"source_content_type":"text/x-yaml","patch_set":1,"id":"36a72c2d_d7c7fec8","line":10,"in_reply_to":"e7213f3b_dc749049","updated":"2026-04-06 20:24:00.000000000","message":"We can determin this later but in incliend to do the removal in 2027.1","commit_id":"2f03cb2144a72149dfe68e8f26554ab273303813"}],"watcher/common/oslo_service_helper.py":[{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"e6bbcb6e256f819d47da09cfd513706fea23e89e","unresolved":false,"context_lines":[{"line_number":29,"context_line":"            \"be removed in future releases.\")"},{"line_number":30,"context_line":"    else:"},{"line_number":31,"context_line":"        backend.init_backend(backend.BackendType.THREADING)"},{"line_number":32,"context_line":"        LOG.warning("},{"line_number":33,"context_line":"            \"Service is starting with Threading based service backend.\")"}],"source_content_type":"text/x-python","patch_set":1,"id":"b1785856_641e0d2b","line":32,"in_reply_to":"0fb44ed9_ff869ebb","updated":"2026-03-17 11:25:35.000000000","message":"\u003e The LOG.warning for threading mode startup is unconditional and will log on every service start, which could be noisy in production environments\n\u003e \n\u003e **Severity**: WARNING | **Confidence**: 0.8\n\u003e \n\u003e **Impact**: Every service startup will generate a warning log message, which may cause log noise and trigger monitoring alerts\n\u003e \n\u003e **Suggestion**:\n\u003e Consider changing LOG.warning to LOG.info for the threading backend message since threading is now the default. Only use warning for the deprecated eventlet mode.\n\nPlease fix.","commit_id":"2f03cb2144a72149dfe68e8f26554ab273303813"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"13070a42c19d2886fbb2571c07d7a3bf5c707d8e","unresolved":true,"context_lines":[{"line_number":29,"context_line":"            \"be removed in future releases.\")"},{"line_number":30,"context_line":"    else:"},{"line_number":31,"context_line":"        backend.init_backend(backend.BackendType.THREADING)"},{"line_number":32,"context_line":"        LOG.info("},{"line_number":33,"context_line":"            \"Service is starting with Threading based service backend.\")"}],"source_content_type":"text/x-python","patch_set":3,"id":"79f9a795_bab0cd26","line":32,"range":{"start_line":32,"start_character":0,"end_line":32,"end_character":2},"updated":"2026-03-19 14:09:49.000000000","message":"There is some issue with LOG.info at this point, note this is not longer printed in the log file:\n\nhttps://45ab50c71482ae2fd55d-f5b371aed546eed3ac03c77e9adc0c03.ssl.cf5.rackcdn.com/openstack/a5a452f2032841619e2e92ad25665e71/controller/logs/screen-watcher-decision-engine.txt\n\nWhile it works in eventlet ones:\n\nhttps://storage.bhs.cloud.ovh.net/v1/AUTH_dcaab5e32b234d56b626f72581e3644c/zuul_opendev_logs_27c/openstack/27c2ebd0944d475f87ccd3345ed58fb8/controller/logs/screen-watcher-applier.txt","commit_id":"eafba8b5c10bed055c08b91790f6346bbdb21eab"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"d8a82d33a189a21c55f3cae3ed055eec6fd69cd0","unresolved":false,"context_lines":[{"line_number":29,"context_line":"            \"be removed in future releases.\")"},{"line_number":30,"context_line":"    else:"},{"line_number":31,"context_line":"        backend.init_backend(backend.BackendType.THREADING)"},{"line_number":32,"context_line":"        LOG.info("},{"line_number":33,"context_line":"            \"Service is starting with Threading based service backend.\")"}],"source_content_type":"text/x-python","patch_set":3,"id":"50d99a3c_d101e4d0","line":32,"range":{"start_line":32,"start_character":0,"end_line":32,"end_character":2},"in_reply_to":"4c76e4f9_b0288f37","updated":"2026-03-20 14:57:23.000000000","message":"I think it\u0027s useful to keep the log line at least until we remove the eventlet code. Thanks!","commit_id":"eafba8b5c10bed055c08b91790f6346bbdb21eab"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"a48f26b44bc4c89c4a93c8565593114ac709ce7a","unresolved":true,"context_lines":[{"line_number":29,"context_line":"            \"be removed in future releases.\")"},{"line_number":30,"context_line":"    else:"},{"line_number":31,"context_line":"        backend.init_backend(backend.BackendType.THREADING)"},{"line_number":32,"context_line":"        LOG.info("},{"line_number":33,"context_line":"            \"Service is starting with Threading based service backend.\")"}],"source_content_type":"text/x-python","patch_set":3,"id":"4c76e4f9_b0288f37","line":32,"range":{"start_line":32,"start_character":0,"end_line":32,"end_character":2},"in_reply_to":"79f9a795_bab0cd26","updated":"2026-03-19 18:41:33.000000000","message":"you are right, this might be happening because the log initialization happens afterwards, and initializing the oslo backend must one of the first things to do, before import its modules. So instead of modifying the log configuration here, i would propose to keep it as warning message, and remove all logs once we delete all eventlet code. Or just remove the log message now.","commit_id":"eafba8b5c10bed055c08b91790f6346bbdb21eab"}],"watcher/eventlet.py":[{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"e6bbcb6e256f819d47da09cfd513706fea23e89e","unresolved":true,"context_lines":[{"line_number":32,"context_line":"    MONKEY_PATCHED \u003d True"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"def _is_patching_enabled():"},{"line_number":36,"context_line":"    # NOTE(dviroel): The default is now to always disable eventlet patching"},{"line_number":37,"context_line":"    if (os.environ.get(\u0027OS_WATCHER_DISABLE_EVENTLET_PATCHING\u0027, \u0027\u0027).lower()"},{"line_number":38,"context_line":"            in (\u00270\u0027, \u0027false\u0027, \u0027no\u0027, \u0027n\u0027)):"}],"source_content_type":"text/x-python","patch_set":1,"id":"6d9dbda9_5d0b3ebc","line":35,"in_reply_to":"de2783b2_66ea8740","updated":"2026-03-17 11:25:35.000000000","message":"\u003e The function name _is_patching_enabled() returns True when patching is disabled, which is counterintuitive\n\u003e \n\u003e **Severity**: SUGGESTION | **Confidence**: 0.7\n\u003e \n\u003e **Benefit**: Improves code readability and reduces cognitive load for future maintainers by making the function name accurately reflect its return value semantics\n\u003e \n\u003e **Recommendation**:\n\u003e Consider renaming the function to _should_patch() or _is_eventlet_enabled() to better reflect its purpose\n\nFine as is, if DISABLE_EVENTLET is False, it returns that patching is enabled.\nDevs don\u0027t need to look at this private function, should only use \u0027patch()\u0027 function.\nWe will delete all of this in the next release.","commit_id":"2f03cb2144a72149dfe68e8f26554ab273303813"}]}
