)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":16137,"name":"Tobias Urdin","email":"tobias.urdin@binero.com","username":"tobasco"},"change_message_id":"6009fe745f5954b6d9b84cefd5fbf6504451c452","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"13b22a3e_9c7d19c2","updated":"2022-07-02 14:29:39.000000000","message":"recheck this looks like a nova race between upgrade-status and compute nodes in devstack?","commit_id":"d184a3e0c8c361c3231df713e7f7bfc5096f97cb"},{"author":{"_account_id":16137,"name":"Tobias Urdin","email":"tobias.urdin@binero.com","username":"tobasco"},"change_message_id":"4ae5e047545c4a9c1f2d122738dcf3ac9306e021","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"0bb4dee8_59c0dfd8","updated":"2022-07-15 18:22:32.000000000","message":"recheck get new logs","commit_id":"24e6340b2e7cd188d8dca5d19172662a306637f9"},{"author":{"_account_id":30491,"name":"Radosław Piliszek","display_name":"Radek","email":"radek@piliszek.it","username":"yoctozepto","status":"self-employed techologist, collaborating mostly with 7bulls.com"},"change_message_id":"13394cf9414b3621ac3d235e1dcca73188c6b097","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":17,"id":"6098f47b_7421a1da","updated":"2022-08-31 13:35:46.000000000","message":"Also, let me link the spec that was crated back then: https://review.opendev.org/c/openstack/oslo-specs/+/692784\n\nAnd the current discussion we are having on the openstack-discuss mailing list: https://lists.openstack.org/pipermail/openstack-discuss/2022-August/030179.html","commit_id":"55d633d1e0c5af0efff47aec9a53c7e400682c2f"},{"author":{"_account_id":30491,"name":"Radosław Piliszek","display_name":"Radek","email":"radek@piliszek.it","username":"yoctozepto","status":"self-employed techologist, collaborating mostly with 7bulls.com"},"change_message_id":"930fbf3c1bf6fa8b2073c16dfa9573a8aa0aa69e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":17,"id":"1aac5943_4854adc9","updated":"2022-08-31 13:19:15.000000000","message":"And also this mysterious branch: https://review.opendev.org/q/project:openstack%252Foslo.messaging+branch:feature%252Fnats-driver","commit_id":"55d633d1e0c5af0efff47aec9a53c7e400682c2f"},{"author":{"_account_id":30491,"name":"Radosław Piliszek","display_name":"Radek","email":"radek@piliszek.it","username":"yoctozepto","status":"self-employed techologist, collaborating mostly with 7bulls.com"},"change_message_id":"8bfd03746588aa0486b0a0a8b19b1f89609de2e4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":17,"id":"5084e5c5_528c43cb","updated":"2022-09-02 14:56:25.000000000","message":"And some old OpenStack materials that Tobias has dug up:\n\nhttps://wiki.openstack.org/wiki/Oslo/blueprints/asyncio\nhttps://blueprints.launchpad.net/oslo.messaging/+spec/asyncio-executor\nhttps://lists.openstack.org/pipermail/openstack-dev/2013-May/009784.html","commit_id":"55d633d1e0c5af0efff47aec9a53c7e400682c2f"},{"author":{"_account_id":30491,"name":"Radosław Piliszek","display_name":"Radek","email":"radek@piliszek.it","username":"yoctozepto","status":"self-employed techologist, collaborating mostly with 7bulls.com"},"change_message_id":"fe689cde89bca168bc486039f81e4478d9c1a21e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":17,"id":"f0a88b00_5e9b2ec8","updated":"2022-08-31 13:17:56.000000000","message":"BTW, I have also found this: https://review.opendev.org/c/openstack/oslo.messaging/+/680629 that died due to a lack of a blueprint/spec.","commit_id":"55d633d1e0c5af0efff47aec9a53c7e400682c2f"},{"author":{"_account_id":16137,"name":"Tobias Urdin","email":"tobias.urdin@binero.com","username":"tobasco"},"change_message_id":"86f7308756dbbf30e5bd24c6bed567cc8b00dee5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"9312dea9_00b4ef06","updated":"2022-09-23 06:02:47.000000000","message":"recheck cirros crashed?","commit_id":"423772bfce8beb39f44b2810ad44ee56a2279cf3"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"3c2e862543a606d3d2b3c4c666e7059e2dc1d1a6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":20,"id":"200110da_34be5b00","updated":"2024-07-29 10:06:39.000000000","message":"@tobias.urdin@binero.com:\nHey Tobias,\n\nWould you be ok to consider restarting this topic?\n\nIndeed, Eventlet now support Asyncio [1], and the eventlet removal community goal is now official [2].\n\nI think that those achievements re-opens the doors of the feasibility of this topic.\n\nThanks for your time and for your consideration.\n\n[1] https://eventlet.readthedocs.io/en/latest/asyncio/asyncio.html#asyncio-compatibility\n[2] https://governance.openstack.org/tc/goals/proposed/remove-eventlet.html","commit_id":"6f57130ac1c340ba4b930b2832ab5b94f1e1a338"}],"requirements.txt":[{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"b28698be24ce7ec72e8fdcf6d635824c51a28ad3","unresolved":true,"context_lines":[{"line_number":27,"context_line":"kombu\u003e\u003d4.6.6 # BSD"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"# nats driver"},{"line_number":30,"context_line":"nats-python # MIT"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"# middleware"},{"line_number":33,"context_line":"oslo.middleware\u003e\u003d3.31.0 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":17,"id":"3b0852f5_91b5c814","line":30,"range":{"start_line":30,"start_character":0,"end_line":30,"end_character":11},"updated":"2022-09-02 07:26:44.000000000","message":"This is a fork, not really active, of an other library which does not exists anymore. Apparently it doesn\u0027t support IPV6. Sockets disconnections seems poorly handled [1]. The latest changes/activities dates back to April 2021.\n\nFrom my view point I don\u0027t think using this library is a solution.\n\nhttps://github.com/Gr1N/nats-python/pull/5","commit_id":"55d633d1e0c5af0efff47aec9a53c7e400682c2f"},{"author":{"_account_id":30491,"name":"Radosław Piliszek","display_name":"Radek","email":"radek@piliszek.it","username":"yoctozepto","status":"self-employed techologist, collaborating mostly with 7bulls.com"},"change_message_id":"ff462f272f5662d76bff536f80a2ee5c398f0edc","unresolved":true,"context_lines":[{"line_number":27,"context_line":"kombu\u003e\u003d4.6.6 # BSD"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"# nats driver"},{"line_number":30,"context_line":"nats-python # MIT"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"# middleware"},{"line_number":33,"context_line":"oslo.middleware\u003e\u003d3.31.0 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":17,"id":"f733da63_20415d39","line":30,"range":{"start_line":30,"start_character":0,"end_line":30,"end_character":11},"in_reply_to":"2ba686fa_ed61d0f7","updated":"2022-09-02 14:29:14.000000000","message":"Also: https://stackoverflow.com/questions/69888850/how-to-call-async-method-from-greenlet-playwright","commit_id":"55d633d1e0c5af0efff47aec9a53c7e400682c2f"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"360dff19ef69899b04b50daf6b3d2ef04ba98c72","unresolved":true,"context_lines":[{"line_number":27,"context_line":"kombu\u003e\u003d4.6.6 # BSD"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"# nats driver"},{"line_number":30,"context_line":"nats-python # MIT"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"# middleware"},{"line_number":33,"context_line":"oslo.middleware\u003e\u003d3.31.0 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":17,"id":"c521feac_41b12c38","line":30,"range":{"start_line":30,"start_character":0,"end_line":30,"end_character":11},"in_reply_to":"3b0852f5_91b5c814","updated":"2022-09-02 08:16:32.000000000","message":"Personally I\u0027d prefer to see if we can use nats.py [1]. This could be a good opportunity to see how we can made async coexist with eventlet, and it could help us to define guideline to see how to move Openstack away from eventlet. We could kill two birds with one stone\n\nAs nats.py [1] is the official python implementation for nats, I\u0027m less worried about the perenity of its maintenance. I don\u0027t expect that this project would become inactive in few months.\n\nIf we isolate the development of this new driver (based on nats.py) on an development branch, by trying to make the libs (nats.py/eventlet) coexist we won\u0027t trigger lot of side effects for the other deliverables and we could softly see how-to designs guidelines to drop eventlet in the same time. \n\n[1] https://github.com/nats-io/nats.py","commit_id":"55d633d1e0c5af0efff47aec9a53c7e400682c2f"},{"author":{"_account_id":30491,"name":"Radosław Piliszek","display_name":"Radek","email":"radek@piliszek.it","username":"yoctozepto","status":"self-employed techologist, collaborating mostly with 7bulls.com"},"change_message_id":"0839e0ba8c1840376f8689a03f3a49a79d64b399","unresolved":true,"context_lines":[{"line_number":27,"context_line":"kombu\u003e\u003d4.6.6 # BSD"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"# nats driver"},{"line_number":30,"context_line":"nats-python # MIT"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"# middleware"},{"line_number":33,"context_line":"oslo.middleware\u003e\u003d3.31.0 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":17,"id":"cf4234d9_35b2f9ca","line":30,"range":{"start_line":30,"start_character":0,"end_line":30,"end_character":11},"in_reply_to":"519eccaf_b7a547c4","updated":"2022-09-06 08:59:26.000000000","message":"Yeah, but we need also other oslo libs to support it this way. I have little experience at this level of openstack programming. Definitely doable, but I can\u0027t guess any rough numbers how much work this really is.","commit_id":"55d633d1e0c5af0efff47aec9a53c7e400682c2f"},{"author":{"_account_id":30491,"name":"Radosław Piliszek","display_name":"Radek","email":"radek@piliszek.it","username":"yoctozepto","status":"self-employed techologist, collaborating mostly with 7bulls.com"},"change_message_id":"3cf5c58ae552dfc247d2639dd1fa0285bffba255","unresolved":true,"context_lines":[{"line_number":27,"context_line":"kombu\u003e\u003d4.6.6 # BSD"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"# nats driver"},{"line_number":30,"context_line":"nats-python # MIT"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"# middleware"},{"line_number":33,"context_line":"oslo.middleware\u003e\u003d3.31.0 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":17,"id":"8ead29f9_37a9a30f","line":30,"range":{"start_line":30,"start_character":0,"end_line":30,"end_character":11},"in_reply_to":"5a0e8a04_d2402aee","updated":"2022-09-02 12:42:27.000000000","message":"We need an asyncio plan and a simple-enough PoC to kickoff this plan.\n\nI am thinking about porting Keystone to work on asyncio, then something that utilises RPC but in a very simple manner, like Blazar.","commit_id":"55d633d1e0c5af0efff47aec9a53c7e400682c2f"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"0d8a5e811a0f54e24081f244e8287122bf9dba76","unresolved":true,"context_lines":[{"line_number":27,"context_line":"kombu\u003e\u003d4.6.6 # BSD"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"# nats driver"},{"line_number":30,"context_line":"nats-python # MIT"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"# middleware"},{"line_number":33,"context_line":"oslo.middleware\u003e\u003d3.31.0 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":17,"id":"5a0e8a04_d2402aee","line":30,"range":{"start_line":30,"start_character":0,"end_line":30,"end_character":11},"in_reply_to":"5b731b9f_2b277f33","updated":"2022-09-02 11:21:38.000000000","message":"To summarize our IRC discussion, the main problem we face by using nats.py is that that\u0027s library is based on asyncio. \n\nOn Openstack we widely use eventlet and gevent.\n\nThe issue is that eventlet/greenlet and asyncio cannot live together inside the same application, and when you wrap a sync library with an async API, you have to decide in which world you wanna live.\n\nWhile service needs to rely on eventlet we can\u0027t move libraries to asyncio. Indeed it seems it is generally impossible to have eventlet and asyncio used in the same process without stepping onto bugs.\n\nDuring previous Openstack series, one of the main blocking point to move away from eventlet was oslo.db which relied on version of sqlalchemy who were not compatible with asyncio. That mean that services have to rely on gevent and eventlet to green the world. Fortunately for us the support of asyncio have been added in recent versions of sqlalchemy [1]. The good news is that we already support compatible versions in our upper-constraints [2].\n\nEnsuring that oslo.db support well asyncio, would makes our life easier to move services (and also the other oslo libs) away to eventlet too.\n\n[1] https://docs.sqlalchemy.org/en/14/orm/extensions/asyncio.html\n[2] https://opendev.org/openstack/requirements/src/branch/master/upper-constraints.txt#L150","commit_id":"55d633d1e0c5af0efff47aec9a53c7e400682c2f"},{"author":{"_account_id":30491,"name":"Radosław Piliszek","display_name":"Radek","email":"radek@piliszek.it","username":"yoctozepto","status":"self-employed techologist, collaborating mostly with 7bulls.com"},"change_message_id":"dd3b6468064eb91b146f941e0e9942a74c643800","unresolved":true,"context_lines":[{"line_number":27,"context_line":"kombu\u003e\u003d4.6.6 # BSD"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"# nats driver"},{"line_number":30,"context_line":"nats-python # MIT"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"# middleware"},{"line_number":33,"context_line":"oslo.middleware\u003e\u003d3.31.0 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":17,"id":"a3cb18e8_46775dba","line":30,"range":{"start_line":30,"start_character":0,"end_line":30,"end_character":11},"in_reply_to":"7567b5e9_8dca2122","updated":"2022-09-05 14:58:40.000000000","message":"I, personally, prefer to work on an approach that cleans up the eventlet in its entirety, however, I understand it might not be easy. I wonder if we can have oslo libs supporting *both* (but not at once!!) the event loops during the migration period. Blazar is a good example because it is relatively simple, yet relies heavily on RPC.","commit_id":"55d633d1e0c5af0efff47aec9a53c7e400682c2f"},{"author":{"_account_id":30491,"name":"Radosław Piliszek","display_name":"Radek","email":"radek@piliszek.it","username":"yoctozepto","status":"self-employed techologist, collaborating mostly with 7bulls.com"},"change_message_id":"e1636952adcba6d7fe868cc2f7b210a20141747b","unresolved":true,"context_lines":[{"line_number":27,"context_line":"kombu\u003e\u003d4.6.6 # BSD"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"# nats driver"},{"line_number":30,"context_line":"nats-python # MIT"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"# middleware"},{"line_number":33,"context_line":"oslo.middleware\u003e\u003d3.31.0 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":17,"id":"2ba686fa_ed61d0f7","line":30,"range":{"start_line":30,"start_character":0,"end_line":30,"end_character":11},"in_reply_to":"8ead29f9_37a9a30f","updated":"2022-09-02 14:18:01.000000000","message":"Just leaving these links here in case they might come useful later:\nhttps://github.com/miguelgrinberg/greenletio\nhttps://docs.sqlalchemy.org/en/14/orm/extensions/asyncio.html","commit_id":"55d633d1e0c5af0efff47aec9a53c7e400682c2f"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"4e6dc2116cb08972abb040b1ef391095fee3991b","unresolved":true,"context_lines":[{"line_number":27,"context_line":"kombu\u003e\u003d4.6.6 # BSD"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"# nats driver"},{"line_number":30,"context_line":"nats-python # MIT"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"# middleware"},{"line_number":33,"context_line":"oslo.middleware\u003e\u003d3.31.0 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":17,"id":"519eccaf_b7a547c4","line":30,"range":{"start_line":30,"start_character":0,"end_line":30,"end_character":11},"in_reply_to":"a3cb18e8_46775dba","updated":"2022-09-06 08:57:01.000000000","message":"Freeing Blazar from eventlet without relying on IPC to RPC will avoid performance issues introduced by the IPC to RPC calls. So, personally, I prefer this plan of action.\n\nWithout too digging this point, I\u0027d say that at long we as only load the NATS driver into Blazar and at long as Blazar is free from eventlet, then the Oslo libs can support the both libs (asyncio and eventlet) in parallel. As long they are not loaded at the same time, I don\u0027t think this is an issue.","commit_id":"55d633d1e0c5af0efff47aec9a53c7e400682c2f"},{"author":{"_account_id":30491,"name":"Radosław Piliszek","display_name":"Radek","email":"radek@piliszek.it","username":"yoctozepto","status":"self-employed techologist, collaborating mostly with 7bulls.com"},"change_message_id":"cad5af50644744ae539bc11fcab1b604cb45b103","unresolved":true,"context_lines":[{"line_number":27,"context_line":"kombu\u003e\u003d4.6.6 # BSD"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"# nats driver"},{"line_number":30,"context_line":"nats-python # MIT"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"# middleware"},{"line_number":33,"context_line":"oslo.middleware\u003e\u003d3.31.0 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":17,"id":"5b731b9f_2b277f33","line":30,"range":{"start_line":30,"start_character":0,"end_line":30,"end_character":11},"in_reply_to":"c521feac_41b12c38","updated":"2022-09-02 08:49:00.000000000","message":"It is also interesting that the official library (excluding the JetStream support which was not there yet for the legacy lib) is already 6x bigger (though some of that factor might be contributed by the very descriptive comments). There seems to be logic to handle reconnects, server switching, undelivered messages, unreceived replies... We *must* use the up-to-date and official one.","commit_id":"55d633d1e0c5af0efff47aec9a53c7e400682c2f"},{"author":{"_account_id":30491,"name":"Radosław Piliszek","display_name":"Radek","email":"radek@piliszek.it","username":"yoctozepto","status":"self-employed techologist, collaborating mostly with 7bulls.com"},"change_message_id":"5ac55038e896e45bac2b66a019a8253c752c9839","unresolved":true,"context_lines":[{"line_number":27,"context_line":"kombu\u003e\u003d4.6.6 # BSD"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"# nats driver"},{"line_number":30,"context_line":"nats-python # MIT"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"# middleware"},{"line_number":33,"context_line":"oslo.middleware\u003e\u003d3.31.0 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":17,"id":"cc7b83c9_b9b966a7","line":30,"range":{"start_line":30,"start_character":0,"end_line":30,"end_character":11},"in_reply_to":"cf4234d9_35b2f9ca","updated":"2022-09-06 09:00:15.000000000","message":"I.e., similarly we need oslo.db and its driver to support the operations in async (otherwise we will get event loop block).","commit_id":"55d633d1e0c5af0efff47aec9a53c7e400682c2f"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"93b954e24ee587dafd90b676237547d3eeb8a137","unresolved":true,"context_lines":[{"line_number":27,"context_line":"kombu\u003e\u003d4.6.6 # BSD"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"# nats driver"},{"line_number":30,"context_line":"nats-python # MIT"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"# middleware"},{"line_number":33,"context_line":"oslo.middleware\u003e\u003d3.31.0 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":17,"id":"7567b5e9_8dca2122","line":30,"range":{"start_line":30,"start_character":0,"end_line":30,"end_character":11},"in_reply_to":"f733da63_20415d39","updated":"2022-09-05 13:12:29.000000000","message":"I agree with the asyncio plan and porting first something simple like blazar.\n\nAre you thinking that we should drop eventlet from blazar? Or, are you thinking that we should rely on IPC to RPC first like suggested by Sean on IRC? (through privsep messages, or by using the socket notification driver https://review.opendev.org/c/openstack/oslo.messaging/+/841892).\n\nIf you think we need to drop eventlet first, then we should identify which part of blazar needs to become async and then update its code base. Once blazar is fully  transitioned away from eventlet then we could start using  oslo.messaging\u0027 nats driver.\n\nIn this way, by starting with simple deliverables first (e.g blazar), we could migrate more and more services and then finishing with the heavy eventlet consumers like Nova.","commit_id":"55d633d1e0c5af0efff47aec9a53c7e400682c2f"}]}
