)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"0898c35821b469e61a355584720d70a24e007d31","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"2e4c4e9a_42887fb7","updated":"2022-09-02 07:10:02.000000000","message":"Removes my -1, Ben\u0027s comment was right. Typos can be fixed through a follow up patch.","commit_id":"805e8f9ffee4a1aa541d745039da610839839e32"},{"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":"49c4949c2a8a773183bb4cc36728779bb8832e0a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"d7c3e9f7_8dfe5c1f","in_reply_to":"2e4c4e9a_42887fb7","updated":"2022-09-02 08:14:10.000000000","message":"Yup, but we are left with refreshing this spec anyways.","commit_id":"805e8f9ffee4a1aa541d745039da610839839e32"},{"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":"0126ba50d5f8004d49bf763cc07eef2bd5677c6f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"11f953a1_f752596c","updated":"2022-10-06 18:22:12.000000000","message":"A relevant discussion has happened last Tuesday on the #openstack-blazar channel: https://meetings.opendev.org/irclogs/%23openstack-blazar/%23openstack-blazar.2022-10-04.log.html between me, Tobias and Hervé.","commit_id":"cda4dc79e1fa3d16bf406fd109d74dd0d9870690"}],"specs/antelop/nats-transport.rst":[{"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":"4e06dad792d4c776fc6868ad6da996812508a273","unresolved":true,"context_lines":[{"line_number":183,"context_line":"The nats.py library is based on asyncio to manage async events."},{"line_number":184,"context_line":"Asyncio is not compatible with eventlet/greenlet."},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"Eventlet and greenlet rely on monkey patching of the stdlib, using it in"},{"line_number":187,"context_line":"the same process that asyncio would lead to bugs."},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"On Openstack we heavily rely on eventlet and greenlet so the usage of this new"}],"source_content_type":"text/x-rst","patch_set":6,"id":"4b7bd883_3cf6acfc","line":186,"range":{"start_line":186,"start_character":9,"end_line":186,"end_character":21},"updated":"2022-10-06 18:34:25.000000000","message":"No, only eventlet is about monkey-patching. Greenlet only gives the greenlets/microthreads/lightweight_threads/magic_coroutines - you name it.","commit_id":"cda4dc79e1fa3d16bf406fd109d74dd0d9870690"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"948f2876f7d6925376b959f7e80b85433a4be513","unresolved":true,"context_lines":[{"line_number":187,"context_line":"the same process that asyncio would lead to bugs."},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"On Openstack we heavily rely on eventlet and greenlet so the usage of this new"},{"line_number":190,"context_line":"driver will require services free from eventlet."},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"With this new driver async calls will become explicit contrary to the"},{"line_number":193,"context_line":"actual design where they are made implicit by eventlet and by its"}],"source_content_type":"text/x-rst","patch_set":6,"id":"7605f989_dbef97f8","line":190,"updated":"2022-10-03 13:17:36.000000000","message":"that will rule out its use in nova,neutron,cinder,swift, glance and keystone\nwithout the workaround mentioned later","commit_id":"cda4dc79e1fa3d16bf406fd109d74dd0d9870690"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"948f2876f7d6925376b959f7e80b85433a4be513","unresolved":true,"context_lines":[{"line_number":201,"context_line":"Options to run asyncio code (nats.py) would be either to use privsep to send"},{"line_number":202,"context_line":"message between asyncio processes and monkey patched (with eventlet)"},{"line_number":203,"context_line":"processes, or to use oslo.messaging\u0027 future unix socket notification driver"},{"line_number":204,"context_line":"[7]_."},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"Another option would be to follow sqlalchemy as an example in how they"},{"line_number":207,"context_line":"mixed eventlet and asyncio [8]_."}],"source_content_type":"text/x-rst","patch_set":6,"id":"290f1f17_74568de6","line":204,"updated":"2022-10-03 13:17:36.000000000","message":"that feels like a bit of an abuse of what that driver was intended for\n\nperhaps it woudl be better to factor out the simple unix socket core code to provide a base for both usescuase. the core of the unix socket notifcaiton patch is just providing a simple write only interface but we need a by directional socket in this case.\n\n\nprivsep already has that in its channl classes so that would be a simpler short term workaround\n\ncreate a unprivialdged priv sep context and use that o execute teh asynio funtions.","commit_id":"cda4dc79e1fa3d16bf406fd109d74dd0d9870690"},{"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":"68cc35ce074762b004f5b5da65c73871c319e3c5","unresolved":true,"context_lines":[{"line_number":204,"context_line":"[7]_."},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"Another option would be to follow sqlalchemy as an example in how they"},{"line_number":207,"context_line":"mixed eventlet and asyncio [8]_."},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"Testing Impact"},{"line_number":210,"context_line":"--------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"36f5a96d_393745b4","line":207,"range":{"start_line":207,"start_character":28,"end_line":207,"end_character":29},"updated":"2022-10-06 18:20:48.000000000","message":"Something\u0027s wrong with the numeration. For example, this should be a 9 atm.","commit_id":"cda4dc79e1fa3d16bf406fd109d74dd0d9870690"},{"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":"4e06dad792d4c776fc6868ad6da996812508a273","unresolved":true,"context_lines":[{"line_number":204,"context_line":"[7]_."},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"Another option would be to follow sqlalchemy as an example in how they"},{"line_number":207,"context_line":"mixed eventlet and asyncio [8]_."},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"Testing Impact"},{"line_number":210,"context_line":"--------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"3d1b9a47_119dee10","line":207,"updated":"2022-10-06 18:34:25.000000000","message":"They did not. See also the comment I left on [9] below.","commit_id":"cda4dc79e1fa3d16bf406fd109d74dd0d9870690"},{"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":"4e06dad792d4c776fc6868ad6da996812508a273","unresolved":true,"context_lines":[{"line_number":305,"context_line":".. [6] https://github.com/nats-io/nats.py"},{"line_number":306,"context_line":".. [7] https://github.com/nats-io/stan.py"},{"line_number":307,"context_line":".. [8] https://review.opendev.org/c/openstack/oslo.messaging/+/841892"},{"line_number":308,"context_line":".. [9] https://docs.sqlalchemy.org/en/14/orm/extensions/asyncio.html"},{"line_number":309,"context_line":""},{"line_number":310,"context_line":".. note::"},{"line_number":311,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"c98b091a_79782954","line":308,"updated":"2022-10-06 18:34:25.000000000","message":"This only really discusses how SQLAlchemy drives synchronous and asynchronous stuff in the same codebase. It explicitly mentions that gevent and eventlet are not in use - we seem unable to afford that.","commit_id":"cda4dc79e1fa3d16bf406fd109d74dd0d9870690"}],"specs/ussuri/nats-transport.rst":[{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"0b1b24617f0f04d574c270c09aecd2799eee1216","unresolved":false,"context_lines":[{"line_number":5,"context_line":"This specification proposes a new transport driver for oslo.messaging"},{"line_number":6,"context_line":"that uses NATS. NATS is a high-performance messaging system [1]_ [2]_"},{"line_number":7,"context_line":"written in Go. NATS is designed as a central nervous system for the"},{"line_number":8,"context_line":"cloud control plane [3]_. While NATS Sreaming has message persistency"},{"line_number":9,"context_line":"like RabbitMQ, NATS itself doesn\u0027t but it\u0027s not a problem for"},{"line_number":10,"context_line":"oslo.messaging because every message has its own lifetime. NATS server"},{"line_number":11,"context_line":"supports clustering for high availability."}],"source_content_type":"text/x-rst","patch_set":3,"id":"3fa7e38b_18ad6ea3","line":8,"range":{"start_line":8,"start_character":37,"end_line":8,"end_character":45},"updated":"2020-01-23 10:54:56.000000000","message":"Nits \u003d\u003e \"Streaming\"","commit_id":"805e8f9ffee4a1aa541d745039da610839839e32"},{"author":{"_account_id":8770,"name":"Ken Giusti","email":"kgiusti@gmail.com","username":"kgiusti"},"change_message_id":"b8d3b68637a1fca968bd6676dbe25134c2170e4a","unresolved":false,"context_lines":[{"line_number":5,"context_line":"This specification proposes a new transport driver for oslo.messaging"},{"line_number":6,"context_line":"that uses NATS. NATS is a high-performance messaging system [1]_ [2]_"},{"line_number":7,"context_line":"written in Go. NATS is designed as a central nervous system for the"},{"line_number":8,"context_line":"cloud control plane [3]_. While NATS Sreaming has message persistency"},{"line_number":9,"context_line":"like RabbitMQ, NATS itself doesn\u0027t but it\u0027s not a problem for"},{"line_number":10,"context_line":"oslo.messaging because every message has its own lifetime. NATS server"},{"line_number":11,"context_line":"supports clustering for high availability."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"3fa7e38b_66f4ce87","line":10,"range":{"start_line":8,"start_character":26,"end_line":10,"end_character":58},"updated":"2019-11-22 19:35:44.000000000","message":"Unclear about what this means - message lifetime is dependent on use case.  Specifically RPC does not require storage but Notifications does.\n\nWill this driver support Notifications API which requires messages be stored until receivers become available?","commit_id":"805e8f9ffee4a1aa541d745039da610839839e32"},{"author":{"_account_id":659,"name":"Akira Yoshiyama","email":"akirayoshiyama@gmail.com","username":"yosshy"},"change_message_id":"41f086e95a98eacc0ea31970bba3706b80e39766","unresolved":false,"context_lines":[{"line_number":5,"context_line":"This specification proposes a new transport driver for oslo.messaging"},{"line_number":6,"context_line":"that uses NATS. NATS is a high-performance messaging system [1]_ [2]_"},{"line_number":7,"context_line":"written in Go. NATS is designed as a central nervous system for the"},{"line_number":8,"context_line":"cloud control plane [3]_. While NATS Sreaming has message persistency"},{"line_number":9,"context_line":"like RabbitMQ, NATS itself doesn\u0027t but it\u0027s not a problem for"},{"line_number":10,"context_line":"oslo.messaging because every message has its own lifetime. NATS server"},{"line_number":11,"context_line":"supports clustering for high availability."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"3fa7e38b_fb728c49","line":10,"range":{"start_line":8,"start_character":26,"end_line":10,"end_character":58},"in_reply_to":"3fa7e38b_66f4ce87","updated":"2019-11-25 08:43:03.000000000","message":"No. I\u0027m not sure about Notification API, but I have 2 ideas:\n\n* Using NATS Streaming Server[1]. It has message persistence and looks suitable for Notification API.\n* Limits NATS for RPC usage. There are several drivers supporting it.\n\n[1] https://docs.nats.io/nats-streaming-concepts/intro","commit_id":"805e8f9ffee4a1aa541d745039da610839839e32"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8a16cef2fdd5a916f6c5b3d9a083b0a7312be417","unresolved":false,"context_lines":[{"line_number":5,"context_line":"This specification proposes a new transport driver for oslo.messaging"},{"line_number":6,"context_line":"that uses NATS. NATS is a high-performance messaging system [1]_ [2]_"},{"line_number":7,"context_line":"written in Go. NATS is designed as a central nervous system for the"},{"line_number":8,"context_line":"cloud control plane [3]_. While NATS Sreaming has message persistency"},{"line_number":9,"context_line":"like RabbitMQ, NATS itself doesn\u0027t but it\u0027s not a problem for"},{"line_number":10,"context_line":"oslo.messaging because every message has its own lifetime. NATS server"},{"line_number":11,"context_line":"supports clustering for high availability."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"df33271e_95010bb3","line":10,"range":{"start_line":8,"start_character":26,"end_line":10,"end_character":58},"in_reply_to":"3fa7e38b_fb728c49","updated":"2020-04-06 12:59:46.000000000","message":"i would limit it to RPC initally to reduce the scope and consier notification later.","commit_id":"805e8f9ffee4a1aa541d745039da610839839e32"},{"author":{"_account_id":8770,"name":"Ken Giusti","email":"kgiusti@gmail.com","username":"kgiusti"},"change_message_id":"b8d3b68637a1fca968bd6676dbe25134c2170e4a","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"RabbitMQ is widely used in OpenStack deployments but it has problems:"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"* Big footprint: RabbitMQ is only one using Erlang for a typical"},{"line_number":20,"context_line":"  OpenStack deployment and it requires 40MB+ disk space and ~30"},{"line_number":21,"context_line":"  packages in Ubuntu. RDO stein contains 43 packages of Erlang."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"* HA performance: \"Avoid multiple nodes (HA)\" is one of the best"},{"line_number":24,"context_line":"  practices from the point of view of performance [4]_."}],"source_content_type":"text/x-rst","patch_set":3,"id":"3fa7e38b_8630ea56","line":21,"range":{"start_line":19,"start_character":2,"end_line":21,"end_character":63},"updated":"2019-11-22 19:35:44.000000000","message":"What will be the resource savings of NATS as compared to RabbitMQ in a typical deployment?","commit_id":"805e8f9ffee4a1aa541d745039da610839839e32"},{"author":{"_account_id":659,"name":"Akira Yoshiyama","email":"akirayoshiyama@gmail.com","username":"yosshy"},"change_message_id":"41f086e95a98eacc0ea31970bba3706b80e39766","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"RabbitMQ is widely used in OpenStack deployments but it has problems:"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"* Big footprint: RabbitMQ is only one using Erlang for a typical"},{"line_number":20,"context_line":"  OpenStack deployment and it requires 40MB+ disk space and ~30"},{"line_number":21,"context_line":"  packages in Ubuntu. RDO stein contains 43 packages of Erlang."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"* HA performance: \"Avoid multiple nodes (HA)\" is one of the best"},{"line_number":24,"context_line":"  practices from the point of view of performance [4]_."}],"source_content_type":"text/x-rst","patch_set":3,"id":"3fa7e38b_bbb734d8","line":21,"range":{"start_line":19,"start_character":2,"end_line":21,"end_character":63},"in_reply_to":"3fa7e38b_8630ea56","updated":"2019-11-25 08:43:03.000000000","message":"The file size of a statically linked binary of nats-server 2.4 is ~9.5MB. Of course, it works without any other binary file.","commit_id":"805e8f9ffee4a1aa541d745039da610839839e32"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8a16cef2fdd5a916f6c5b3d9a083b0a7312be417","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"RabbitMQ is widely used in OpenStack deployments but it has problems:"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"* Big footprint: RabbitMQ is only one using Erlang for a typical"},{"line_number":20,"context_line":"  OpenStack deployment and it requires 40MB+ disk space and ~30"},{"line_number":21,"context_line":"  packages in Ubuntu. RDO stein contains 43 packages of Erlang."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"* HA performance: \"Avoid multiple nodes (HA)\" is one of the best"},{"line_number":24,"context_line":"  practices from the point of view of performance [4]_."}],"source_content_type":"text/x-rst","patch_set":3,"id":"df33271e_959d8b68","line":21,"range":{"start_line":19,"start_character":2,"end_line":21,"end_character":63},"in_reply_to":"3fa7e38b_bbb734d8","updated":"2020-04-06 12:59:46.000000000","message":"i dont think diskspace was what ken was asking about.\ndisk is cheap and largely irrelevent the benifits woudl come form reduced ram or cpu load. im not sure if that is quantified in any public benchmarks or if those would be transferable to openstack or not\n\nin theory the main advantages to NATS are HA and easy scaling where it is reported to have beeter latency and throuput then rabbit in clustered operation.","commit_id":"805e8f9ffee4a1aa541d745039da610839839e32"},{"author":{"_account_id":20523,"name":"Andy Smith","email":"ansmith@redhat.com","username":"ajssmith"},"change_message_id":"915926777453e9ea80227187867ac5cfe65f0cd1","unresolved":false,"context_lines":[{"line_number":28,"context_line":"  said that clustered RabbitMQ servers in his OpenStack deployment"},{"line_number":29,"context_line":"  suddenly died without failover and he decided to stop using RabbitMQ"},{"line_number":30,"context_line":"  clustering."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"Proposed change"},{"line_number":34,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3fa7e38b_23bc88b3","line":31,"updated":"2019-11-22 17:46:34.000000000","message":"Taking a step back, a proposal to add an additional messaging transport to Oslo.Messaging based on the technical merits and success of that messaging technology outside of OpenStack sounds reasonable. With the popularity of OpenStack summit sessions detailing the challenges and dislikes of RabbitMQ, it would be expected that the availability of alternative messaging backends would be followed by broad adoption. It must be recognized, however, that there is an “institutional preference” for the use of RabbitMQ in OpenStack that (for likely good) reason will never change. \n\nWe have learned from our experiences developing and maintaining other non-RabbitMQ drivers that the biggest barrier to adoption is in the multiple dimensions of institutional knowledge gained with the RabbitMQ server across the developer, operator and vendor spectrums (e.g. development, testing, debugging, CI, deployment, configuration, ha, monitoring, operational best practices, documentation, support, etc.). The result is that to move away from RabbitMQ has a significant switching cost that is orders of magnitude greater than the noted challenges and dislikes. Short of transformative changes to the architecture of service communication in OpenStack, there is no broadly based compelling reason to adopt an alternative messaging backend beyond experimentation. The decision to add a new driver to Oslo.Messaging should recognize and factor this into the expected outcome and return on investment of such an effort.","commit_id":"805e8f9ffee4a1aa541d745039da610839839e32"},{"author":{"_account_id":659,"name":"Akira Yoshiyama","email":"akirayoshiyama@gmail.com","username":"yosshy"},"change_message_id":"41f086e95a98eacc0ea31970bba3706b80e39766","unresolved":false,"context_lines":[{"line_number":28,"context_line":"  said that clustered RabbitMQ servers in his OpenStack deployment"},{"line_number":29,"context_line":"  suddenly died without failover and he decided to stop using RabbitMQ"},{"line_number":30,"context_line":"  clustering."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"Proposed change"},{"line_number":34,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3fa7e38b_bb13b4b7","line":31,"in_reply_to":"3fa7e38b_23bc88b3","updated":"2019-11-25 08:43:03.000000000","message":"Thank you for your frank opinion. I should understand and consider it. \nJapanese stackers will have OpenStack OpsMeetup on Dec.10 and I\u0027ll propose discussion about it.","commit_id":"805e8f9ffee4a1aa541d745039da610839839e32"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8a16cef2fdd5a916f6c5b3d9a083b0a7312be417","unresolved":false,"context_lines":[{"line_number":28,"context_line":"  said that clustered RabbitMQ servers in his OpenStack deployment"},{"line_number":29,"context_line":"  suddenly died without failover and he decided to stop using RabbitMQ"},{"line_number":30,"context_line":"  clustering."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"Proposed change"},{"line_number":34,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":3,"id":"df33271e_35d8ff7d","line":31,"in_reply_to":"3fa7e38b_bb13b4b7","updated":"2020-04-06 12:59:46.000000000","message":"while i dont disagree that that is all true i dont think that is a reason to not proceed with the development of the dirver. if the driver is shown to be useful it will be adopted.\n\nthe other option i guess would be to package it in a different repo and load it via stevador rather then keep it in tree. to my knowaldge this is not how oslo generaly prefers to handel this but if the concern was maintance or adtoption that would be an alternitive.","commit_id":"805e8f9ffee4a1aa541d745039da610839839e32"},{"author":{"_account_id":8770,"name":"Ken Giusti","email":"kgiusti@gmail.com","username":"kgiusti"},"change_message_id":"b8d3b68637a1fca968bd6676dbe25134c2170e4a","unresolved":false,"context_lines":[{"line_number":30,"context_line":"  clustering."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"Proposed change"},{"line_number":34,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"Implements a new driver of oslo.messaging to use NATS as the RPC and"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3fa7e38b_8668eaf3","line":33,"updated":"2019-11-22 19:35:44.000000000","message":"What about deployment of intermediaries? Will this require some separate infrastructure be deployed between the two communicating parties?","commit_id":"805e8f9ffee4a1aa541d745039da610839839e32"},{"author":{"_account_id":659,"name":"Akira Yoshiyama","email":"akirayoshiyama@gmail.com","username":"yosshy"},"change_message_id":"41f086e95a98eacc0ea31970bba3706b80e39766","unresolved":false,"context_lines":[{"line_number":30,"context_line":"  clustering."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"Proposed change"},{"line_number":34,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"Implements a new driver of oslo.messaging to use NATS as the RPC and"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3fa7e38b_5b672052","line":33,"in_reply_to":"3fa7e38b_8668eaf3","updated":"2019-11-25 08:43:03.000000000","message":"NATS server is a stand-alone message broker like RabbitMQ server. It requires no additional service for clients.","commit_id":"805e8f9ffee4a1aa541d745039da610839839e32"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"3ecc41a398717c28a7a8930e107b59c91361a667","unresolved":false,"context_lines":[{"line_number":45,"context_line":"Security impact"},{"line_number":46,"context_line":"---------------"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"Nothing. The NATS driver should have 2 security capabilities like"},{"line_number":49,"context_line":"other drivers: authentication and encryption. pynats2 python client"},{"line_number":50,"context_line":"library has both, so we can use them in the driver."},{"line_number":51,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"3fa7e38b_eeda0c77","line":48,"updated":"2019-11-19 23:09:29.000000000","message":"I\u0027m not sure I would say \"Nothing\". As I noted below, because of the nature of the pynats2 driver we would essentially be adopting it as well, which puts us on the hook for any security vulnerabilities found in it.\n\nI suppose we could pretend it\u0027s not an Oslo deliverable, but since it\u0027s an oslo.messaging-specific fork of pynats2 and owned by the same person maintaining the o.m driver, it would be disingenuous to claim it\u0027s not our problem.","commit_id":"805e8f9ffee4a1aa541d745039da610839839e32"},{"author":{"_account_id":659,"name":"Akira Yoshiyama","email":"akirayoshiyama@gmail.com","username":"yosshy"},"change_message_id":"41f086e95a98eacc0ea31970bba3706b80e39766","unresolved":false,"context_lines":[{"line_number":45,"context_line":"Security impact"},{"line_number":46,"context_line":"---------------"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"Nothing. The NATS driver should have 2 security capabilities like"},{"line_number":49,"context_line":"other drivers: authentication and encryption. pynats2 python client"},{"line_number":50,"context_line":"library has both, so we can use them in the driver."},{"line_number":51,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"3fa7e38b_fbdfecd3","line":48,"in_reply_to":"3fa7e38b_eeda0c77","updated":"2019-11-25 08:43:03.000000000","message":"Should I write \"pynats2 is a deliverable for Oslo and it may have seurity volunerabilities\" here?","commit_id":"805e8f9ffee4a1aa541d745039da610839839e32"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"72e9c88f328919c52bfb575a886593faf3b1a923","unresolved":false,"context_lines":[{"line_number":45,"context_line":"Security impact"},{"line_number":46,"context_line":"---------------"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"Nothing. The NATS driver should have 2 security capabilities like"},{"line_number":49,"context_line":"other drivers: authentication and encryption. pynats2 python client"},{"line_number":50,"context_line":"library has both, so we can use them in the driver."},{"line_number":51,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"3fa7e38b_fcd918f3","line":48,"in_reply_to":"3fa7e38b_fbdfecd3","updated":"2019-11-25 20:40:37.000000000","message":"Sure, sounds good.","commit_id":"805e8f9ffee4a1aa541d745039da610839839e32"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"3ecc41a398717c28a7a8930e107b59c91361a667","unresolved":false,"context_lines":[{"line_number":52,"context_line":"Performance Impact"},{"line_number":53,"context_line":"------------------"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"Nothing."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"Configuration Impact"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3fa7e38b_d377b7d0","line":55,"updated":"2019-11-19 23:09:29.000000000","message":"Hopefully it will be positive. It would be interesting to see a benchmark comparing Rabbit and NATS throughput with oslo.messaging, kind of like NATS has on https://nats.io/about/","commit_id":"805e8f9ffee4a1aa541d745039da610839839e32"},{"author":{"_account_id":659,"name":"Akira Yoshiyama","email":"akirayoshiyama@gmail.com","username":"yosshy"},"change_message_id":"41f086e95a98eacc0ea31970bba3706b80e39766","unresolved":false,"context_lines":[{"line_number":52,"context_line":"Performance Impact"},{"line_number":53,"context_line":"------------------"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"Nothing."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"Configuration Impact"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3fa7e38b_b6fe6902","line":55,"in_reply_to":"3fa7e38b_d377b7d0","updated":"2019-11-25 08:43:03.000000000","message":"oslo.messaging/tools/simulator.py said that performance of the current version of NATS driver is equivalent to RabbitMQ driver (rabbit). IMO, the reason is sending messages. As rabbit, NATS driver makes connection per sending message because making connection pool for sending has several problems:\n\n* It\u0027s not sure that the number of message broker is only one per service.\n* TLS connections in the connection pool will be broken when the service forks.\n\nIt should be better to add a hook for service forking.","commit_id":"805e8f9ffee4a1aa541d745039da610839839e32"},{"author":{"_account_id":8770,"name":"Ken Giusti","email":"kgiusti@gmail.com","username":"kgiusti"},"change_message_id":"708d00e24a561832f296e21e9ab59cbe21135447","unresolved":false,"context_lines":[{"line_number":104,"context_line":"Developer Impact"},{"line_number":105,"context_line":"----------------"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"Nothing."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"Testing Impact"},{"line_number":110,"context_line":"--------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3fa7e38b_e9cf9c88","line":107,"updated":"2019-12-04 20:38:50.000000000","message":"Since we\u0027ve created a dedicated feature branch for this work called \u0027feature/nats-driver\u0027 you should update this entry indicating that the development will initially be done on that branch.\n\nhttps://opendev.org/openstack/oslo.messaging/src/branch/feature/nats-driver","commit_id":"805e8f9ffee4a1aa541d745039da610839839e32"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"3ecc41a398717c28a7a8930e107b59c91361a667","unresolved":false,"context_lines":[{"line_number":121,"context_line":""},{"line_number":122,"context_line":"* oslo.messaging-tox-py36-func-nats"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"pynats2 python client library only supports Python 3.6+. It doesn\u0027t"},{"line_number":125,"context_line":"use asyncio, so we can make it available with Python 2.x. However,"},{"line_number":126,"context_line":"Python 2.x will be unsupported on Jan 1st, 2020, and the NATS driver"},{"line_number":127,"context_line":"won\u0027t be required backward compatibility because it\u0027s new one, so"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3fa7e38b_934fff90","line":124,"updated":"2019-11-19 23:09:29.000000000","message":"Yeah, this shouldn\u0027t be a problem. As of the Ussuri release OpenStack is only supporting Python 3.6+. There\u0027s no reason we would need to support Python 2 for this driver.","commit_id":"805e8f9ffee4a1aa541d745039da610839839e32"},{"author":{"_account_id":659,"name":"Akira Yoshiyama","email":"akirayoshiyama@gmail.com","username":"yosshy"},"change_message_id":"41f086e95a98eacc0ea31970bba3706b80e39766","unresolved":false,"context_lines":[{"line_number":121,"context_line":""},{"line_number":122,"context_line":"* oslo.messaging-tox-py36-func-nats"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"pynats2 python client library only supports Python 3.6+. It doesn\u0027t"},{"line_number":125,"context_line":"use asyncio, so we can make it available with Python 2.x. However,"},{"line_number":126,"context_line":"Python 2.x will be unsupported on Jan 1st, 2020, and the NATS driver"},{"line_number":127,"context_line":"won\u0027t be required backward compatibility because it\u0027s new one, so"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3fa7e38b_96200d9c","line":124,"in_reply_to":"3fa7e38b_934fff90","updated":"2019-11-25 08:43:03.000000000","message":"I see.","commit_id":"805e8f9ffee4a1aa541d745039da610839839e32"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"3ecc41a398717c28a7a8930e107b59c91361a667","unresolved":false,"context_lines":[{"line_number":137,"context_line":"  akirayoshiyama@gmail.com  (Akira72 or yosshy on IRC)"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"Other contributors:"},{"line_number":140,"context_line":"  No one for now. Contributors are welcome."},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"Milestones"},{"line_number":143,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3fa7e38b_4e080026","line":140,"updated":"2019-11-19 23:09:29.000000000","message":"This is a concern. Per https://docs.openstack.org/oslo.messaging/latest/contributor/supported-messaging-drivers.html#support we\u0027re looking for two maintainers for new drivers to avoid the situation we\u0027ve run into in the past where a driver is added and then quickly abandoned by the original developer. It then falls to the oslo.messaging team to do all of the maintenance on it.\n\nOne possibility would be to implement the driver in a separate repo. Since it looks like oslo.messaging uses entrypoints to find drivers I think that should work without too much trouble even today.\n\nThen if the driver gets wide adoption, hopefully we can find enough people interested in maintaining it to bring it into oslo.messaging itself.","commit_id":"805e8f9ffee4a1aa541d745039da610839839e32"},{"author":{"_account_id":8770,"name":"Ken Giusti","email":"kgiusti@gmail.com","username":"kgiusti"},"change_message_id":"b8d3b68637a1fca968bd6676dbe25134c2170e4a","unresolved":false,"context_lines":[{"line_number":137,"context_line":"  akirayoshiyama@gmail.com  (Akira72 or yosshy on IRC)"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"Other contributors:"},{"line_number":140,"context_line":"  No one for now. Contributors are welcome."},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"Milestones"},{"line_number":143,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3fa7e38b_c92d9546","line":140,"in_reply_to":"3fa7e38b_4e080026","updated":"2019-11-22 19:35:44.000000000","message":"I agree with Ben regarding developing the driver as an external library initially.\n\nOne thing to consider is creating a feature branch in oslo.messaging for the developers to use.\n\nIn that feature branch the developers can modify the setup.cfg and package requirements to load their nats driver from pypi.  With that they can leverage the existing testing infrastructure that comes along with the oslo.messaging repo.","commit_id":"805e8f9ffee4a1aa541d745039da610839839e32"},{"author":{"_account_id":659,"name":"Akira Yoshiyama","email":"akirayoshiyama@gmail.com","username":"yosshy"},"change_message_id":"41f086e95a98eacc0ea31970bba3706b80e39766","unresolved":false,"context_lines":[{"line_number":137,"context_line":"  akirayoshiyama@gmail.com  (Akira72 or yosshy on IRC)"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"Other contributors:"},{"line_number":140,"context_line":"  No one for now. Contributors are welcome."},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"Milestones"},{"line_number":143,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3fa7e38b_d69d25bb","line":140,"in_reply_to":"3fa7e38b_4e080026","updated":"2019-11-25 08:43:03.000000000","message":"Looks good.","commit_id":"805e8f9ffee4a1aa541d745039da610839839e32"},{"author":{"_account_id":8770,"name":"Ken Giusti","email":"kgiusti@gmail.com","username":"kgiusti"},"change_message_id":"1fad4f59e93e509b89a3427e2fcaa854398d123e","unresolved":false,"context_lines":[{"line_number":137,"context_line":"  akirayoshiyama@gmail.com  (Akira72 or yosshy on IRC)"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"Other contributors:"},{"line_number":140,"context_line":"  No one for now. Contributors are welcome."},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"Milestones"},{"line_number":143,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3fa7e38b_49eb50a3","line":140,"in_reply_to":"3fa7e38b_7c9448e8","updated":"2019-12-09 15:06:59.000000000","message":"Update: the feature branch has been created:\n\nhttps://opendev.org/openstack/oslo.messaging/src/branch/feature/nats-driver\n\nSince this is a dedicated branch for NATS driver development you can develop the driver directly in this repo rather than as an external library.  That should ease the development work a bit.  We can revisit the external library vs in-repo decision when the development is done.","commit_id":"805e8f9ffee4a1aa541d745039da610839839e32"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"72e9c88f328919c52bfb575a886593faf3b1a923","unresolved":false,"context_lines":[{"line_number":137,"context_line":"  akirayoshiyama@gmail.com  (Akira72 or yosshy on IRC)"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"Other contributors:"},{"line_number":140,"context_line":"  No one for now. Contributors are welcome."},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"Milestones"},{"line_number":143,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3fa7e38b_7c9448e8","line":140,"in_reply_to":"3fa7e38b_d69d25bb","updated":"2019-11-25 20:40:37.000000000","message":"We discussed this in the virtual PTG today and decided to pursue the feature branch option for now. That should allow you to make progress on implementing and testing the driver, and once the feature branch is fully functional we can revisit this topic and decide how to proceed from there.\n\nSee https://review.opendev.org/#/c/695979/","commit_id":"805e8f9ffee4a1aa541d745039da610839839e32"},{"author":{"_account_id":8770,"name":"Ken Giusti","email":"kgiusti@gmail.com","username":"kgiusti"},"change_message_id":"b8d3b68637a1fca968bd6676dbe25134c2170e4a","unresolved":false,"context_lines":[{"line_number":153,"context_line":"* Functional test integration"},{"line_number":154,"context_line":"* Implement devstack plugin"},{"line_number":155,"context_line":"* Upstream CI integration"},{"line_number":156,"context_line":"* Send announcement to openstack-discuss following release"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"Incubation"},{"line_number":159,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3fa7e38b_09a88d75","line":156,"range":{"start_line":156,"start_character":2,"end_line":156,"end_character":58},"updated":"2019-11-22 19:35:44.000000000","message":"You\u0027ll want to integrate the driver in at least one deployment tool before sending the announcement.\n\nFolks will want to be able to deploy the new driver using tooling they are familiar with.","commit_id":"805e8f9ffee4a1aa541d745039da610839839e32"},{"author":{"_account_id":659,"name":"Akira Yoshiyama","email":"akirayoshiyama@gmail.com","username":"yosshy"},"change_message_id":"41f086e95a98eacc0ea31970bba3706b80e39766","unresolved":false,"context_lines":[{"line_number":153,"context_line":"* Functional test integration"},{"line_number":154,"context_line":"* Implement devstack plugin"},{"line_number":155,"context_line":"* Upstream CI integration"},{"line_number":156,"context_line":"* Send announcement to openstack-discuss following release"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"Incubation"},{"line_number":159,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3fa7e38b_76b1d100","line":156,"range":{"start_line":156,"start_character":2,"end_line":156,"end_character":58},"in_reply_to":"3fa7e38b_09a88d75","updated":"2019-11-25 08:43:03.000000000","message":"I see. I\u0027ll make a devstack plugin for NATS.","commit_id":"805e8f9ffee4a1aa541d745039da610839839e32"},{"author":{"_account_id":8770,"name":"Ken Giusti","email":"kgiusti@gmail.com","username":"kgiusti"},"change_message_id":"b8d3b68637a1fca968bd6676dbe25134c2170e4a","unresolved":false,"context_lines":[{"line_number":163,"context_line":"Adoption"},{"line_number":164,"context_line":"--------"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"The NATS driver is expected to be adopted in many deployments which"},{"line_number":167,"context_line":"operators doesn\u0027t like to use RabbitMQ."},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"Library"},{"line_number":170,"context_line":"-------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3fa7e38b_897f9d15","line":167,"range":{"start_line":166,"start_character":0,"end_line":167,"end_character":38},"updated":"2019-11-22 19:35:44.000000000","message":"As Andy has pointed out, having the driver available is the relatively easy part.\n\nThe hard lesson learned is that without adoption of the new driver by the available deployment tools first it will be very hard to get significant uptake of the new driver by the community.","commit_id":"805e8f9ffee4a1aa541d745039da610839839e32"},{"author":{"_account_id":659,"name":"Akira Yoshiyama","email":"akirayoshiyama@gmail.com","username":"yosshy"},"change_message_id":"41f086e95a98eacc0ea31970bba3706b80e39766","unresolved":false,"context_lines":[{"line_number":163,"context_line":"Adoption"},{"line_number":164,"context_line":"--------"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"The NATS driver is expected to be adopted in many deployments which"},{"line_number":167,"context_line":"operators doesn\u0027t like to use RabbitMQ."},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"Library"},{"line_number":170,"context_line":"-------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3fa7e38b_96b48df2","line":167,"range":{"start_line":166,"start_character":0,"end_line":167,"end_character":38},"in_reply_to":"3fa7e38b_897f9d15","updated":"2019-11-25 08:43:03.000000000","message":"I see.","commit_id":"805e8f9ffee4a1aa541d745039da610839839e32"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"3ecc41a398717c28a7a8930e107b59c91361a667","unresolved":false,"context_lines":[{"line_number":193,"context_line":"Dependencies"},{"line_number":194,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"The driver will require pynats2, threading based NATS python client."},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"References"},{"line_number":199,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3fa7e38b_6e74dc9c","line":196,"updated":"2019-11-19 23:09:29.000000000","message":"I think it\u0027s important to point out that this is a fork of the original client library, and unless we can get the changes there into the upstream library we are also essentially adopting this. Generally speaking, the Oslo team doesn\u0027t own any of the other client libraries for the other drivers in oslo.messaging so this is a non-trivial addition.","commit_id":"805e8f9ffee4a1aa541d745039da610839839e32"}]}
