)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"47399a2b433bd38faaed55624aa9737421125fd9","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":1,"id":"4dbda435_4c431b37","updated":"2025-01-14 00:58:04.000000000","message":"The current code only works with \"Connexion 2.x\" and its dependencies have lower versions compared with the upper constraints.\n- werkzeug\n- Flask\n- openapi_schema_validator\n- jsonschema\n\nStarting from Connexion 3.0, the ASGI interface is adopted instead of WSGI.  \n    - References: https://connexion.readthedocs.io/en/stable/v3.html\n\nHowever, `eventlet` only supports WSGI servers. \n- As long as we use evenlet, switching to Connexion 3.0 is difficult.\n- we might need to replace `eventlet` with other alternatives that work with Connexion 3.0","commit_id":"7f3c49209c5c7d9039c304f6cf49f0db1c1c533e"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"327b53096fd7c5e8c97d83534ec69e1f9b866bab","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"489fb1e9_4ec1e9c9","updated":"2025-01-07 07:58:43.000000000","message":"This current code version doesn\u0027t work with the current upper-constraints.txt\n\nit has only been tested with the following versions: \n- jsonschema \u003c\u003d 4.19.0\n- flask \u003c 2.2.3\n- Werkzeug \u003d\u003d 2.2.3\n\nwe need to resolve the version conflicts.","commit_id":"7f3c49209c5c7d9039c304f6cf49f0db1c1c533e"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"808949bb11f3cfe47943a8d73b0f497026b6d188","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":1,"id":"56adb897_12dd6ad1","in_reply_to":"4dbda435_4c431b37","updated":"2025-02-10 03:09:23.000000000","message":"In my opinion, there might be three solutions:\n1. Lower the versions of the related packages in upper constraints (less feasible as we move forward).\n2. Replace Eventlet used in the HTTP driver with other alternatives that work with ASGI.\n3. Replace Connexion 3.0 with other alternatives that support WSGI.\nI would appreciate any feedback or suggestions on these patches and potential solutions.","commit_id":"7f3c49209c5c7d9039c304f6cf49f0db1c1c533e"},{"author":{"_account_id":11583,"name":"Arnaud Morin","email":"arnaud.morin@gmail.com","username":"arnaudmorin"},"change_message_id":"f0bc4296c5189bc463ffe234ce77b04ed335ab20","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":1,"id":"fdeac355_0c73daa9","in_reply_to":"56adb897_12dd6ad1","updated":"2025-02-11 07:52:14.000000000","message":"There is a current work ongoing to get rid of eventlet (see eventlet-removal here: https://wiki.openstack.org/wiki/Eventlet-removal).\nAs your patch seems to require this to be finished, I would recommand to either wait or try to help in the removal work.","commit_id":"7f3c49209c5c7d9039c304f6cf49f0db1c1c533e"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"0d7cc9dcac701d9824a4c6396d1738983c8b5341","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"fda55f50_bc94f044","in_reply_to":"e36154ba_921cd572","updated":"2025-03-24 06:29:20.000000000","message":"The dependency conflicts have been completely resolved by re-implementing http-server and client solely using flask instead of the auto-generated code based on connexion[flask].\n\nTherefore, these http-driver patches do not depend on the eventlet-removal work anymore and can be handled independently.","commit_id":"7f3c49209c5c7d9039c304f6cf49f0db1c1c533e"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"2aa726bc3721d8fd6f8af90d0bf8763ccd90762a","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":1,"id":"e36154ba_921cd572","in_reply_to":"fdeac355_0c73daa9","updated":"2025-02-14 08:45:49.000000000","message":"Thank you for the feedback and suggestions! I will try catching up on the progress of the eventlet removal work. Once an alternative to Eventlet has been decided, we can begin integrating it into our patches.","commit_id":"7f3c49209c5c7d9039c304f6cf49f0db1c1c533e"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"062492bfe01a4259d99f2b0ac306ad5afa194bba","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"04c68d35_41ea9a3c","updated":"2025-04-09 09:29:08.000000000","message":"Hello Xiang,\n\nThanks for your work and your proposal.\nAs Arnaud said early in these comments, Eventlet is going up deprecated and planned for removal.\nYour patch rely actively on Eventlet, I made some inline comments.\n\nIf you want to implement Async behavior, I\u0027d suggest you to take a look to the alternatives proposed here https://removal.eventlet.org/guide/getting-started/\n\nYou can either propose an architecture based on AsyncIO or threading.\nYou can also inspire from the work made on oslo.db to implement an async driver based on asyncio for oslo.db https://opendev.org/openstack/oslo.db/commit/7cfe7fc693894a3488f9c45e35250a458b93cb63\n\nEnd users would be able to decide which driver to use.\nHopefully these elements will help you during your implementation journey.","commit_id":"9c7138a1be778ce9bcacc162bd133a9849652cc0"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"7f3599fe9e364071c51e02af960d066aa66acc12","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"2940f20d_717293ec","updated":"2025-04-04 01:38:44.000000000","message":"recheck","commit_id":"9c7138a1be778ce9bcacc162bd133a9849652cc0"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"3d51d6aa74f2e81de9716e7272afb4aa49861f81","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"9b6586d7_43d50945","in_reply_to":"04c68d35_41ea9a3c","updated":"2025-04-11 05:29:13.000000000","message":"Thank you so much for the comments and suggestions!\nThis current version indeed heavily relies on eventlet. \nLet me take some time to see if there is an easy way to get rid of it and how to proceed.","commit_id":"9c7138a1be778ce9bcacc162bd133a9849652cc0"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"4815ecf86d86a5612e71ca4563b6ae38d9841d59","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"1f1a6d9a_fdcd3dd4","in_reply_to":"9b6586d7_43d50945","updated":"2025-05-29 09:01:04.000000000","message":"Since this work of removing eventlet on our side is taking a long time, I wonder if it is possible for the team to review and merge my first two patches that do not depend on Eventlet. This would allow us to make some progress in the meantime. \n\n[1] https://review.opendev.org/c/openstack/oslo.messaging/+/912499/28\n[2] https://review.opendev.org/c/openstack/oslo.messaging/+/914840/27","commit_id":"9c7138a1be778ce9bcacc162bd133a9849652cc0"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"22a605a492bb476c55a93b79b96dd1b8efb1bbaa","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":11,"id":"26bd7542_8d3dfaa3","updated":"2025-08-15 22:34:34.000000000","message":"Just as a note, https://github.com/cherrypy/cheroot was adopted by Ironic to replace our eventlet wsgi setup, because the interfaces are similar. You may be able to use this library to help get migrated off eventlet with this patchset.","commit_id":"8d6e266ca6056188e63cdb9d17e3c333a808b8eb"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"97c99c28d41d5b2f714b0265aca65b7dd7dfe940","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":11,"id":"4c4ea0a5_fe501032","in_reply_to":"26bd7542_8d3dfaa3","updated":"2025-09-11 08:48:18.000000000","message":"Thank you so much for this information! I am currently trying to adopt cheroot in the next patch","commit_id":"8d6e266ca6056188e63cdb9d17e3c333a808b8eb"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"b8a525797e2a59531efc69bcb49e995b2215d3f5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"9efc6bf8_354bfc3b","in_reply_to":"44372074_e39ed0e9","updated":"2026-01-08 16:40:55.000000000","message":"Done","commit_id":"8d6e266ca6056188e63cdb9d17e3c333a808b8eb"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"67b29e686fe1514e0a59b3c60c749953a1ef176a","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":11,"id":"44372074_e39ed0e9","in_reply_to":"4c4ea0a5_fe501032","updated":"2025-09-18 09:34:58.000000000","message":"Thank you for your suggestion earlier. I\u0027ve successfully replaced eventlet with cheroot in my latest patch:\n- https://review.opendev.org/c/openstack/oslo.messaging/+/961583/3","commit_id":"8d6e266ca6056188e63cdb9d17e3c333a808b8eb"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"d3b555acec5563db1527b879ab03be0be2ea6944","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":16,"id":"fdcb52f5_607e1e1f","updated":"2025-09-27 11:02:59.000000000","message":"As noted by Arnaud in a different change we definitely need a documentation (which can be short) to explian how this service is expected to be deployed.","commit_id":"232d5caf15759102011f3d599dbde81f3b7b5e7d"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"0c831fa6aacf932dbf126a500dd8ec43d7ed7d6b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"4dd0e560_b709b624","in_reply_to":"fdcb52f5_607e1e1f","updated":"2026-01-19 15:08:04.000000000","message":"As discussed, i\u0027ve added the documentation in my latest patch [1].\nit would be great if you can take a look and let me know if any questions or concerns. I hope that concludes this series of patches.\n\n[1] https://review.opendev.org/c/openstack/oslo.messaging/+/973843","commit_id":"232d5caf15759102011f3d599dbde81f3b7b5e7d"}],"oslo_messaging/_drivers/http_driver/broadcaster.py":[{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"062492bfe01a4259d99f2b0ac306ad5afa194bba","unresolved":true,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"try:"},{"line_number":16,"context_line":"    import eventlet"},{"line_number":17,"context_line":"    eventlet.monkey_patch()"},{"line_number":18,"context_line":"except ImportError:"},{"line_number":19,"context_line":"    raise"},{"line_number":20,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"c311310b_8c7eaaf6","line":17,"updated":"2025-04-09 09:29:08.000000000","message":"I do not think we want libraries (in general) deciding if we want to monkey patch the env.\nIf you apply the monkey patching at the library level, it will green all the env and if a service explicitly decided to not use eventlet, it will end by becoming an eventlet one...\n\nBy example Octavia banned Eventlet usages from their environment and they use oslo.messaging, so if they decide to use this driver, they will end by being greened by Eventlet without having a chance to disable Eventlet.\n\nhttps://opendev.org/openstack/octavia/search?q\u003doslo_messaging","commit_id":"9c7138a1be778ce9bcacc162bd133a9849652cc0"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"b8a525797e2a59531efc69bcb49e995b2215d3f5","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"try:"},{"line_number":16,"context_line":"    import eventlet"},{"line_number":17,"context_line":"    eventlet.monkey_patch()"},{"line_number":18,"context_line":"except ImportError:"},{"line_number":19,"context_line":"    raise"},{"line_number":20,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"7933c331_5d37a5bf","line":17,"in_reply_to":"c311310b_8c7eaaf6","updated":"2026-01-08 16:40:55.000000000","message":"Thank you, and I agree. This is indeed a problem. \nSince I completely removed the dependency on eventlet in my later patch [1], this shouldn\u0027t be a concern anymore. \n\nI’ll also do a rebase to eliminate all the eventlet-dependent implementations in (#1~#5) patches, instead of replacing them later in a separate patch (#6).\n\n[1] https://review.opendev.org/c/openstack/oslo.messaging/+/961583/16","commit_id":"9c7138a1be778ce9bcacc162bd133a9849652cc0"}],"oslo_messaging/_drivers/http_driver/consul_operator.py":[{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"b4e2165b55466b51f4b37794776ca598c0dd8183","unresolved":true,"context_lines":[{"line_number":296,"context_line":""},{"line_number":297,"context_line":"        # try fetching from consul."},{"line_number":298,"context_line":"        try:"},{"line_number":299,"context_line":"            if fetch_all:"},{"line_number":300,"context_line":"                result \u003d self._fetch_all_services(consul_svc, server)"},{"line_number":301,"context_line":"            else:"},{"line_number":302,"context_line":"                result \u003d self._fetch_services(consul_svc, server)"}],"source_content_type":"text/x-python","patch_set":38,"id":"5098c366_8dc6fbea","line":299,"updated":"2026-09-10 23:33:43.000000000","message":"The new fetch_all mode changes the discovery scope, but cache lookup above does not distinguish it. A normal lookup can populate a local-preferred result that a subsequent fetch_all\u003dTrue lookup returns from cache without querying the other datacenters. The reverse order can also return an all-datacenter set to a local-preferred lookup.\n\nPlease extend the cache fix discussed on 912499 so both cached results and timestamps use (consul_svc, server, fetch_all). A fresh full-service snapshot may satisfy a directed lookup only within the same fetch_all scope, and that reuse must not renew its lifetime. Merely separating timestamps while leaving the result dictionaries shared would not fix this.\n\nTest both query orders with distinct local and remote endpoints: normal discovery must retain its local-preferred policy, while fetch_all must return the complete expected fanout set. Our local regression reproduces scope mixing on the posted full stack and passes with separate per-query contents and timestamps. This can be fixed in the original cache; it does not require a migration compatibility layer.","commit_id":"0196b876ed2032aeb1b090710f7452f505bcf639"}],"oslo_messaging/_drivers/http_driver/flask/app/fanout_handler.py":[{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"062492bfe01a4259d99f2b0ac306ad5afa194bba","unresolved":true,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"try:"},{"line_number":16,"context_line":"    import eventlet"},{"line_number":17,"context_line":"    eventlet.monkey_patch()"},{"line_number":18,"context_line":"except ImportError:"},{"line_number":19,"context_line":"    raise"},{"line_number":20,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"06026ca2_5011821d","line":17,"updated":"2025-04-09 09:29:08.000000000","message":"Same think here.","commit_id":"9c7138a1be778ce9bcacc162bd133a9849652cc0"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"b8a525797e2a59531efc69bcb49e995b2215d3f5","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"try:"},{"line_number":16,"context_line":"    import eventlet"},{"line_number":17,"context_line":"    eventlet.monkey_patch()"},{"line_number":18,"context_line":"except ImportError:"},{"line_number":19,"context_line":"    raise"},{"line_number":20,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"946c13b3_90b79843","line":17,"in_reply_to":"06026ca2_5011821d","updated":"2026-01-08 16:40:55.000000000","message":"same above","commit_id":"9c7138a1be778ce9bcacc162bd133a9849652cc0"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"d3b555acec5563db1527b879ab03be0be2ea6944","unresolved":true,"context_lines":[{"line_number":45,"context_line":"    def initiate_fanout(self, fanout_message):"},{"line_number":46,"context_line":"        \"\"\"Start the fanout process in a separate thread.\"\"\""},{"line_number":47,"context_line":"        try:"},{"line_number":48,"context_line":"            fanout_thread \u003d threading.Thread(target\u003dself._process_fanout,"},{"line_number":49,"context_line":"                                             args\u003d[fanout_message])"},{"line_number":50,"context_line":"            fanout_thread.start()"},{"line_number":51,"context_line":"        except Exception as err:"}],"source_content_type":"text/x-python","patch_set":16,"id":"f95fceaa_7929fbd1","line":48,"range":{"start_line":48,"start_character":28,"end_line":48,"end_character":44},"updated":"2025-09-27 11:02:59.000000000","message":"Do we need some sort of thread pool here ? This may spawn threads without any limit.","commit_id":"232d5caf15759102011f3d599dbde81f3b7b5e7d"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"b8a525797e2a59531efc69bcb49e995b2215d3f5","unresolved":false,"context_lines":[{"line_number":45,"context_line":"    def initiate_fanout(self, fanout_message):"},{"line_number":46,"context_line":"        \"\"\"Start the fanout process in a separate thread.\"\"\""},{"line_number":47,"context_line":"        try:"},{"line_number":48,"context_line":"            fanout_thread \u003d threading.Thread(target\u003dself._process_fanout,"},{"line_number":49,"context_line":"                                             args\u003d[fanout_message])"},{"line_number":50,"context_line":"            fanout_thread.start()"},{"line_number":51,"context_line":"        except Exception as err:"}],"source_content_type":"text/x-python","patch_set":16,"id":"7568d48c_7ba8e581","line":48,"range":{"start_line":48,"start_character":28,"end_line":48,"end_character":44},"in_reply_to":"f95fceaa_7929fbd1","updated":"2026-01-08 16:40:55.000000000","message":"I agree. I’ve just introduced a new option called max_concurrent_fanouts for this purpose.","commit_id":"232d5caf15759102011f3d599dbde81f3b7b5e7d"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"d3b555acec5563db1527b879ab03be0be2ea6944","unresolved":true,"context_lines":[{"line_number":48,"context_line":"            fanout_thread \u003d threading.Thread(target\u003dself._process_fanout,"},{"line_number":49,"context_line":"                                             args\u003d[fanout_message])"},{"line_number":50,"context_line":"            fanout_thread.start()"},{"line_number":51,"context_line":"        except Exception as err:"},{"line_number":52,"context_line":"            LOG.error(\u0027Fanout initiation failed with %s. msg_id: %s\u0027,"},{"line_number":53,"context_line":"                      str(err), fanout_message[\u0027msg_id\u0027])"},{"line_number":54,"context_line":"        return None"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    def _process_fanout(self, fanout_message):"}],"source_content_type":"text/x-python","patch_set":16,"id":"04bb7f16_ce06928e","line":53,"range":{"start_line":51,"start_character":32,"end_line":53,"end_character":57},"updated":"2025-09-27 11:02:59.000000000","message":"We should raise the exception here so that an error is returned. This apparently indicates that the server can\u0027t process the request.","commit_id":"232d5caf15759102011f3d599dbde81f3b7b5e7d"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"b8a525797e2a59531efc69bcb49e995b2215d3f5","unresolved":false,"context_lines":[{"line_number":48,"context_line":"            fanout_thread \u003d threading.Thread(target\u003dself._process_fanout,"},{"line_number":49,"context_line":"                                             args\u003d[fanout_message])"},{"line_number":50,"context_line":"            fanout_thread.start()"},{"line_number":51,"context_line":"        except Exception as err:"},{"line_number":52,"context_line":"            LOG.error(\u0027Fanout initiation failed with %s. msg_id: %s\u0027,"},{"line_number":53,"context_line":"                      str(err), fanout_message[\u0027msg_id\u0027])"},{"line_number":54,"context_line":"        return None"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    def _process_fanout(self, fanout_message):"}],"source_content_type":"text/x-python","patch_set":16,"id":"192a6466_73013ec2","line":53,"range":{"start_line":51,"start_character":32,"end_line":53,"end_character":57},"in_reply_to":"04bb7f16_ce06928e","updated":"2026-01-08 16:40:55.000000000","message":"great idea! fixed.","commit_id":"232d5caf15759102011f3d599dbde81f3b7b5e7d"}],"oslo_messaging/_drivers/http_driver/options.py":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"d215d3a89101df45f139db3a943e5c11a8c3397a","unresolved":true,"context_lines":[{"line_number":137,"context_line":""},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"def register_broadcaster_opts(conf):"},{"line_number":140,"context_line":"    bc_opt_group \u003d cfg.OptGroup(name\u003d\u0027http_broadcaster_opts\u0027,"},{"line_number":141,"context_line":"                                title\u003d\u0027HTTP broadcaster options\u0027)"},{"line_number":142,"context_line":"    conf.register_group(bc_opt_group)"},{"line_number":143,"context_line":"    conf.register_opts(broadcaster_opts, group\u003dbc_opt_group)"}],"source_content_type":"text/x-python","patch_set":16,"id":"7329d358_b9905942","line":140,"range":{"start_line":140,"start_character":38,"end_line":140,"end_character":59},"updated":"2025-09-27 10:51:39.000000000","message":"This does not align with what is added to list_opts.","commit_id":"232d5caf15759102011f3d599dbde81f3b7b5e7d"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"b8a525797e2a59531efc69bcb49e995b2215d3f5","unresolved":false,"context_lines":[{"line_number":137,"context_line":""},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"def register_broadcaster_opts(conf):"},{"line_number":140,"context_line":"    bc_opt_group \u003d cfg.OptGroup(name\u003d\u0027http_broadcaster_opts\u0027,"},{"line_number":141,"context_line":"                                title\u003d\u0027HTTP broadcaster options\u0027)"},{"line_number":142,"context_line":"    conf.register_group(bc_opt_group)"},{"line_number":143,"context_line":"    conf.register_opts(broadcaster_opts, group\u003dbc_opt_group)"}],"source_content_type":"text/x-python","patch_set":16,"id":"c859e50b_02ccc6bc","line":140,"range":{"start_line":140,"start_character":38,"end_line":140,"end_character":59},"in_reply_to":"7329d358_b9905942","updated":"2026-01-08 16:40:55.000000000","message":"sorry about this. i\u0027ve changed it to \"oslo_messaging_http_broadcaster\" which aligns with list_opts.","commit_id":"232d5caf15759102011f3d599dbde81f3b7b5e7d"}],"pyproject.toml":[{"author":{"_account_id":11583,"name":"Arnaud Morin","email":"arnaud.morin@gmail.com","username":"arnaudmorin"},"change_message_id":"a47e49344166d99f26ec267345e7ea988b835ab5","unresolved":true,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"[project.scripts]"},{"line_number":46,"context_line":"oslo-messaging-send-notification \u003d \"oslo_messaging.notify.notifier:_send_notification\""},{"line_number":47,"context_line":"broadcaster \u003d \"oslo_messaging._drivers.http_driver.broadcaster:main\""},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"[project.entry-points.\"oslo.messaging.drivers\"]"},{"line_number":50,"context_line":"rabbit \u003d \"oslo_messaging._drivers.impl_rabbit:RabbitDriver\""}],"source_content_type":"text/x-toml","patch_set":16,"id":"a558bb4d_15a55caa","line":47,"updated":"2025-09-24 20:52:37.000000000","message":"IIUC this will create a script named \"broadcaster\". Should this script be prefixed with \"oslo-messaging-\" like the send-notification one?","commit_id":"232d5caf15759102011f3d599dbde81f3b7b5e7d"},{"author":{"_account_id":36129,"name":"Xiang Wang","display_name":"Xiang(Roger) Wang","email":"rogerxiang.wang@gmail.com","username":"xiang-roger-wang"},"change_message_id":"b8a525797e2a59531efc69bcb49e995b2215d3f5","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"[project.scripts]"},{"line_number":46,"context_line":"oslo-messaging-send-notification \u003d \"oslo_messaging.notify.notifier:_send_notification\""},{"line_number":47,"context_line":"broadcaster \u003d \"oslo_messaging._drivers.http_driver.broadcaster:main\""},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"[project.entry-points.\"oslo.messaging.drivers\"]"},{"line_number":50,"context_line":"rabbit \u003d \"oslo_messaging._drivers.impl_rabbit:RabbitDriver\""}],"source_content_type":"text/x-toml","patch_set":16,"id":"630b01f3_9defc6ea","line":47,"in_reply_to":"43d4c462_300b0e47","updated":"2026-01-08 16:40:55.000000000","message":"+1 renamed it to oslo-messaging-http-broadcaster","commit_id":"232d5caf15759102011f3d599dbde81f3b7b5e7d"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"d3b555acec5563db1527b879ab03be0be2ea6944","unresolved":true,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"[project.scripts]"},{"line_number":46,"context_line":"oslo-messaging-send-notification \u003d \"oslo_messaging.notify.notifier:_send_notification\""},{"line_number":47,"context_line":"broadcaster \u003d \"oslo_messaging._drivers.http_driver.broadcaster:main\""},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"[project.entry-points.\"oslo.messaging.drivers\"]"},{"line_number":50,"context_line":"rabbit \u003d \"oslo_messaging._drivers.impl_rabbit:RabbitDriver\""}],"source_content_type":"text/x-toml","patch_set":16,"id":"43d4c462_300b0e47","line":47,"in_reply_to":"a558bb4d_15a55caa","updated":"2025-09-27 11:02:59.000000000","message":"+1  maybe oslo-messaging-http-broadcaster  ?","commit_id":"232d5caf15759102011f3d599dbde81f3b7b5e7d"}]}
