)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"9fc1c7cc5ebb9db8f2f8511cd296312574896b3c","unresolved":false,"context_lines":[{"line_number":10,"context_line":"ipam module. In the scenario of large-scale port"},{"line_number":11,"context_line":"creation, avoid ip allocation exceeding the maximum"},{"line_number":12,"context_line":"retry limit failure and improve ip allocation efficiency."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Implements: blueprint introduce-distributed-locks-to-ipam"},{"line_number":15,"context_line":"Change-Id: I1483a6474d5f5a7530a2b2e9e369f712b591fec4"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"7faddb67_7f4f056a","line":13,"updated":"2019-07-26 00:18:57.000000000","message":"Please add a Related-Bug: tag referencing https://bugs.launchpad.net/neutron/+bug/1836834","commit_id":"cd712041e2bf73467d941c8a5bbcf4a7f27bc45d"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"f16fa664cf0aebb20fc1597793622a6ed01883c7","unresolved":false,"context_lines":[{"line_number":10,"context_line":"ipam module. In the scenario of large-scale port"},{"line_number":11,"context_line":"creation, avoid ip allocation exceeding the maximum"},{"line_number":12,"context_line":"retry limit failure and improve ip allocation efficiency."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Implements: blueprint introduce-distributed-locks-to-ipam"},{"line_number":15,"context_line":"Change-Id: I1483a6474d5f5a7530a2b2e9e369f712b591fec4"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"7faddb67_dfcf1955","line":13,"in_reply_to":"7faddb67_7f4f056a","updated":"2019-07-26 02:04:47.000000000","message":"Related-Bug: #1836834\n\nI think this flag is ok.","commit_id":"cd712041e2bf73467d941c8a5bbcf4a7f27bc45d"}],"specs/train/introduce-distributed-locks-to-ipam.rst":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"b083f55d45ec64635a555b274a3d99f33f574a1b","unresolved":false,"context_lines":[{"line_number":8,"context_line":"Introduce distributed locks to ipam module"},{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/neutron/+spec/introduce-distributed-locks-to-ipam"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Introduce the OpenStack tooz distributed lock to the ipam module. In the scenario"},{"line_number":14,"context_line":"of large-scale port creation, avoid ip allocation exceeding the maximum retry"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9fb8cfa7_9a089e28","line":11,"updated":"2019-06-25 09:31:11.000000000","message":"I think You should first create RFE for this and BP if it will be needed: https://docs.openstack.org/neutron/latest/contributor/policies/blueprints.html#neutron-request-for-feature-enhancements","commit_id":"46e2cee1817a2577107d12d0a242a504f75033e3"},{"author":{"_account_id":30200,"name":"qinhaizhong","email":"qinhaizhong01@inspur.com","username":"qinhaizhong01"},"change_message_id":"5b06355ba76a3e4138b6a6291a88a81e105913c2","unresolved":false,"context_lines":[{"line_number":8,"context_line":"Introduce distributed locks to ipam module"},{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/neutron/+spec/introduce-distributed-locks-to-ipam"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Introduce the OpenStack tooz distributed lock to the ipam module. In the scenario"},{"line_number":14,"context_line":"of large-scale port creation, avoid ip allocation exceeding the maximum retry"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7faddb67_32bf10d2","line":11,"in_reply_to":"9fb8cfa7_9a089e28","updated":"2019-07-17 06:18:33.000000000","message":"Done\nPlease see RFE:https://bugs.launchpad.net/neutron/+bug/1836834, and \nI updated this bp and changed the target to implement a new ipam driver by introducing distributed locks.","commit_id":"46e2cee1817a2577107d12d0a242a504f75033e3"},{"author":{"_account_id":30200,"name":"qinhaizhong","email":"qinhaizhong01@inspur.com","username":"qinhaizhong01"},"change_message_id":"4575c2d7d23708af598f9636bb3d7115a55de404","unresolved":false,"context_lines":[{"line_number":8,"context_line":"Introduce distributed locks to ipam module"},{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/neutron/+spec/introduce-distributed-locks-to-ipam"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Introduce the OpenStack tooz distributed lock to the ipam module. In the scenario"},{"line_number":14,"context_line":"of large-scale port creation, avoid ip allocation exceeding the maximum retry"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9fb8cfa7_2a0be47c","line":11,"in_reply_to":"9fb8cfa7_9a089e28","updated":"2019-07-02 11:58:44.000000000","message":"Thanks,I am learning how to summit a RFE.","commit_id":"46e2cee1817a2577107d12d0a242a504f75033e3"},{"author":{"_account_id":4187,"name":"Ryan Tidwell","email":"rtidwell@suse.com","username":"ryan-tidwell"},"change_message_id":"62c4e590cbb420b1522f1795cf1678b33220e28d","unresolved":false,"context_lines":[{"line_number":17,"context_line":"Problem Description"},{"line_number":18,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"1.Current port creation has a probability of failure."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"  When the virtual machines are created in batches, nova will call the neutron"},{"line_number":23,"context_line":"  API to create the port concurrently. Because the ip allocation conflict will"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dfbec78f_3b9c010e","line":20,"range":{"start_line":20,"start_character":2,"end_line":20,"end_character":52},"updated":"2019-05-12 17:22:10.000000000","message":"Can you provide more details on the exact use case you are attempting to address? Is it simple bulk port creation, or is it highly concurrent port creation from multiple clients on the same network? The approach for dealing with these scenarios is quite different in my opinion.\n\nI find this approach to be inappropriate for simple bulk port creation, but perhaps effective for handling highly concurrent port creation initiated by multiple clients.","commit_id":"46e2cee1817a2577107d12d0a242a504f75033e3"},{"author":{"_account_id":30200,"name":"qinhaizhong","email":"qinhaizhong01@inspur.com","username":"qinhaizhong01"},"change_message_id":"4575c2d7d23708af598f9636bb3d7115a55de404","unresolved":false,"context_lines":[{"line_number":17,"context_line":"Problem Description"},{"line_number":18,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"1.Current port creation has a probability of failure."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"  When the virtual machines are created in batches, nova will call the neutron"},{"line_number":23,"context_line":"  API to create the port concurrently. Because the ip allocation conflict will"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9fb8cfa7_ea04ec4b","line":20,"range":{"start_line":20,"start_character":2,"end_line":20,"end_character":52},"in_reply_to":"dfbec78f_3b9c010e","updated":"2019-07-02 11:58:44.000000000","message":"1 Please see reference [1] for more details:\nhttps://bugs.launchpad.net/neutron/+bug/1777968\n2 My scenario is to create 1000 virtual machines from the horizon at one time or using cmd \"neutron port-create\" in script send 1000 calls, which will concurrently request 1000 times create_port methods.","commit_id":"46e2cee1817a2577107d12d0a242a504f75033e3"},{"author":{"_account_id":4187,"name":"Ryan Tidwell","email":"rtidwell@suse.com","username":"ryan-tidwell"},"change_message_id":"d9215789222836e956a21ba1316a2f19d683bc4f","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"1.Current port creation has a probability of failure."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"  When the virtual machines are created in batches, nova will call the neutron"},{"line_number":23,"context_line":"  API to create the port concurrently. Because the ip allocation conflict will"},{"line_number":24,"context_line":"  cause the creation of the port to fail, see [1]_."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"2.When creating ports concurrently, the utilization ratio of neutron"},{"line_number":27,"context_line":"  server CPU increases and the allocation efficiency decreases."}],"source_content_type":"text/x-rst","patch_set":1,"id":"dfbec78f_055faa0e","line":24,"range":{"start_line":22,"start_character":2,"end_line":24,"end_character":51},"updated":"2019-05-07 15:51:49.000000000","message":"Keep in mind that a lot of these problems exist because ML2  interacts with IPAM in a very un-optimized way on bulk port creation. In its current state, introducing locking in IPAM will only hurt the performance of bulk port creation as it invokes IPAM once for every port it creates.\n\nI would say that the first step is to refactor ML2 such that bulk port creation interacts with IPAM in a bulk manner. If we find that to be insufficient, then we should pursue this approach.","commit_id":"46e2cee1817a2577107d12d0a242a504f75033e3"},{"author":{"_account_id":30200,"name":"qinhaizhong","email":"qinhaizhong01@inspur.com","username":"qinhaizhong01"},"change_message_id":"4575c2d7d23708af598f9636bb3d7115a55de404","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"1.Current port creation has a probability of failure."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"  When the virtual machines are created in batches, nova will call the neutron"},{"line_number":23,"context_line":"  API to create the port concurrently. Because the ip allocation conflict will"},{"line_number":24,"context_line":"  cause the creation of the port to fail, see [1]_."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"2.When creating ports concurrently, the utilization ratio of neutron"},{"line_number":27,"context_line":"  server CPU increases and the allocation efficiency decreases."}],"source_content_type":"text/x-rst","patch_set":1,"id":"9fb8cfa7_6abf9c60","line":24,"range":{"start_line":22,"start_character":2,"end_line":24,"end_character":51},"in_reply_to":"dfbec78f_055faa0e","updated":"2019-07-02 11:58:44.000000000","message":"Thanks,I am testing to evaluate if there is any impact on the bulk port creation.","commit_id":"46e2cee1817a2577107d12d0a242a504f75033e3"},{"author":{"_account_id":4187,"name":"Ryan Tidwell","email":"rtidwell@suse.com","username":"ryan-tidwell"},"change_message_id":"d9215789222836e956a21ba1316a2f19d683bc4f","unresolved":false,"context_lines":[{"line_number":31,"context_line":"  after ``retry_interval\u003d0.1`` and re-call ``create_port`` until it exceeds"},{"line_number":32,"context_line":"  ``max_retries\u003d10``. When concurrency is large and conflict intensifies,"},{"line_number":33,"context_line":"  repeated call to create_port increases CPU\u0027s burden and reduces allocation"},{"line_number":34,"context_line":"  efficiency. Adjusting ``retry_interval`` and ``max_retries`` can only reduce"},{"line_number":35,"context_line":"  the probability of problems, but can not solve them thoroughly."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"Proposed Change"},{"line_number":38,"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":1,"id":"dfbec78f_5a6d8102","line":35,"range":{"start_line":34,"start_character":14,"end_line":35,"end_character":65},"updated":"2019-05-07 15:51:49.000000000","message":"This is true, the current approach in neutron is an optimistic approach that optimizes for the best case.","commit_id":"46e2cee1817a2577107d12d0a242a504f75033e3"},{"author":{"_account_id":30200,"name":"qinhaizhong","email":"qinhaizhong01@inspur.com","username":"qinhaizhong01"},"change_message_id":"4575c2d7d23708af598f9636bb3d7115a55de404","unresolved":false,"context_lines":[{"line_number":31,"context_line":"  after ``retry_interval\u003d0.1`` and re-call ``create_port`` until it exceeds"},{"line_number":32,"context_line":"  ``max_retries\u003d10``. When concurrency is large and conflict intensifies,"},{"line_number":33,"context_line":"  repeated call to create_port increases CPU\u0027s burden and reduces allocation"},{"line_number":34,"context_line":"  efficiency. Adjusting ``retry_interval`` and ``max_retries`` can only reduce"},{"line_number":35,"context_line":"  the probability of problems, but can not solve them thoroughly."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"Proposed Change"},{"line_number":38,"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":1,"id":"9fb8cfa7_4522cba4","line":35,"range":{"start_line":34,"start_character":14,"end_line":35,"end_character":65},"in_reply_to":"dfbec78f_2de4d53b","updated":"2019-07-02 11:58:44.000000000","message":"Tooz\u0027s backend driver supports many types such as zk, memcached, redis, mysql...,mysql is just one of driver. Although we are using mysql as the backend driver, the mysql load has not changed much in our tests.","commit_id":"46e2cee1817a2577107d12d0a242a504f75033e3"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"5ab4b17c7789def7af028ac9f3fe76dc4a8c8c42","unresolved":false,"context_lines":[{"line_number":31,"context_line":"  after ``retry_interval\u003d0.1`` and re-call ``create_port`` until it exceeds"},{"line_number":32,"context_line":"  ``max_retries\u003d10``. When concurrency is large and conflict intensifies,"},{"line_number":33,"context_line":"  repeated call to create_port increases CPU\u0027s burden and reduces allocation"},{"line_number":34,"context_line":"  efficiency. Adjusting ``retry_interval`` and ``max_retries`` can only reduce"},{"line_number":35,"context_line":"  the probability of problems, but can not solve them thoroughly."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"Proposed Change"},{"line_number":38,"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":1,"id":"dfbec78f_2de4d53b","line":35,"range":{"start_line":34,"start_character":14,"end_line":35,"end_character":65},"in_reply_to":"dfbec78f_5a6d8102","updated":"2019-05-10 17:27:10.000000000","message":"Yes, IMO, \u0027wait and retry\u0027 is the more popular solution for the scalability and stateless services. Actually such \u0027distributed\u0027 lock is not actually distributed, it just store the lock to a center DB or storage (correct me if I\u0027m wrong). Then it seems to be the cluster-wide bottleneck?","commit_id":"46e2cee1817a2577107d12d0a242a504f75033e3"},{"author":{"_account_id":4187,"name":"Ryan Tidwell","email":"rtidwell@suse.com","username":"ryan-tidwell"},"change_message_id":"d9215789222836e956a21ba1316a2f19d683bc4f","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"This solution has the following important changes:"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"  1.Add the configuration field ``ip_allocate_with_tooz`` to neutron.conf."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"  2.Introducing OpenStack tooz distributed lock into ``ip_allocate`` method."},{"line_number":50,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"dfbec78f_9a31b90e","line":47,"range":{"start_line":47,"start_character":4,"end_line":47,"end_character":74},"updated":"2019-05-07 15:51:49.000000000","message":"Does this mean operators can opt in/out if they choose? I am supportive of this being optional, with ip_allocate_with_tooz defaulting to False to allow operators to opt in if they so choose. Tooz shouldn\u0027t be forced on operators, so I like that this is configurable.","commit_id":"46e2cee1817a2577107d12d0a242a504f75033e3"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"4b1cfa5352e1d44024231c867b1d0b6ee6d2a7bd","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"This solution has the following important changes:"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"  1.Add the configuration field ``ip_allocate_with_tooz`` to neutron.conf."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"  2.Introducing OpenStack tooz distributed lock into ``ip_allocate`` method."},{"line_number":50,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9fb8cfa7_8df0e593","line":47,"range":{"start_line":47,"start_character":4,"end_line":47,"end_character":74},"in_reply_to":"9fb8cfa7_2d59b934","updated":"2019-07-02 15:47:04.000000000","message":"I agree with Ryan here. You can avoid code duplication by extracting some common pieces to some BaseDriver class and reuse it in 2 different drivers. That is not a problem. And this ipam_driver config option is knob which You actually need to make it configurable to use or not use new driver :)\nWe really should stop adding config options when it\u0027s not really, really needed.","commit_id":"46e2cee1817a2577107d12d0a242a504f75033e3"},{"author":{"_account_id":30200,"name":"qinhaizhong","email":"qinhaizhong01@inspur.com","username":"qinhaizhong01"},"change_message_id":"4575c2d7d23708af598f9636bb3d7115a55de404","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"This solution has the following important changes:"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"  1.Add the configuration field ``ip_allocate_with_tooz`` to neutron.conf."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"  2.Introducing OpenStack tooz distributed lock into ``ip_allocate`` method."},{"line_number":50,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9fb8cfa7_25c9d7aa","line":47,"range":{"start_line":47,"start_character":4,"end_line":47,"end_character":74},"in_reply_to":"9fb8cfa7_663727b2","updated":"2019-07-02 11:58:44.000000000","message":"Please see above.","commit_id":"46e2cee1817a2577107d12d0a242a504f75033e3"},{"author":{"_account_id":4187,"name":"Ryan Tidwell","email":"rtidwell@suse.com","username":"ryan-tidwell"},"change_message_id":"eeeb86198581995b1d15633ffe898e1c0ae2d6fd","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"This solution has the following important changes:"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"  1.Add the configuration field ``ip_allocate_with_tooz`` to neutron.conf."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"  2.Introducing OpenStack tooz distributed lock into ``ip_allocate`` method."},{"line_number":50,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9fb8cfa7_2d59b934","line":47,"range":{"start_line":47,"start_character":4,"end_line":47,"end_character":74},"in_reply_to":"9fb8cfa7_85d6834e","updated":"2019-07-02 15:24:26.000000000","message":"I disagree. This is the perfect situation for implementing another IPAM driver. I make the distinction between duplication of code and duplication of logic. I don\u0027t envision us re-writing the exact same code or performing large copy/paste dumps when writing a new driver. If we find that happening, we should refactor the IPAM interface, which coincidentally has been discussed before. In this case, we\u0027re talking about duplication of logic. That is natural when you think about driver implementations of any kind. Different drivers may logically do many of the same things, but how they do it is different. That\u0027s what we\u0027re talking about here.\n\nIn this case, I think it makes sense to pursue another IPAM driver. It allows us a lot of flexibility in terms of re-thinking the implementation without disturbing the current install base. Once it\u0027s ready, users can opt in and we can consider deprecating the old default driver and providing a migration path to a new and shinier driver (if something other than a config change is even needed).\n\nThe IPAM driver interface exists for the very purpose of supporting different IPAM backends, in my mind this is exactly the scenario where it shows its utility.","commit_id":"46e2cee1817a2577107d12d0a242a504f75033e3"},{"author":{"_account_id":30200,"name":"qinhaizhong","email":"qinhaizhong01@inspur.com","username":"qinhaizhong01"},"change_message_id":"4575c2d7d23708af598f9636bb3d7115a55de404","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"This solution has the following important changes:"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"  1.Add the configuration field ``ip_allocate_with_tooz`` to neutron.conf."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"  2.Introducing OpenStack tooz distributed lock into ``ip_allocate`` method."},{"line_number":50,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9fb8cfa7_85d6834e","line":47,"range":{"start_line":47,"start_character":4,"end_line":47,"end_character":74},"in_reply_to":"9fb8cfa7_cfd96856","updated":"2019-07-02 11:58:44.000000000","message":"Thanks,\nIn my opinion, the current ipam driver, only the allocation of ip address may cause conflicts, which is related to the two interfaces \"create_port\" and \"create_port_bulk\". If we  implement a new ipam driver, it will repeat a lot of the same code, so I suggest to introduce the distribution Lock to the current ipam driver instead of writing a new one.","commit_id":"46e2cee1817a2577107d12d0a242a504f75033e3"},{"author":{"_account_id":4187,"name":"Ryan Tidwell","email":"rtidwell@suse.com","username":"ryan-tidwell"},"change_message_id":"606cd29df5aa26084cf1c8e5413d94fa8560fa61","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"This solution has the following important changes:"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"  1.Add the configuration field ``ip_allocate_with_tooz`` to neutron.conf."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"  2.Introducing OpenStack tooz distributed lock into ``ip_allocate`` method."},{"line_number":50,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9fb8cfa7_663727b2","line":47,"range":{"start_line":47,"start_character":4,"end_line":47,"end_character":74},"in_reply_to":"9fb8cfa7_cfd96856","updated":"2019-06-26 19:15:14.000000000","message":"This is a good idea. If we want to pursue this implementing it as a new IPAM driver is the cleanest approach. That allows operators to opt in and we can compare its performance against the current default IPAM driver.","commit_id":"46e2cee1817a2577107d12d0a242a504f75033e3"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"b083f55d45ec64635a555b274a3d99f33f574a1b","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"This solution has the following important changes:"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"  1.Add the configuration field ``ip_allocate_with_tooz`` to neutron.conf."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"  2.Introducing OpenStack tooz distributed lock into ``ip_allocate`` method."},{"line_number":50,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9fb8cfa7_cfd96856","line":47,"range":{"start_line":47,"start_character":4,"end_line":47,"end_character":74},"in_reply_to":"dfbec78f_9a31b90e","updated":"2019-06-25 09:31:11.000000000","message":"IPAM already have \"drivers\" concept: https://github.com/openstack/neutron/blob/688bbdd5cd10a13b010902525617fd43d8a415b6/doc/source/admin/config-ipam.rst\nCan\u0027t this be done as new IPAM driver simply?","commit_id":"46e2cee1817a2577107d12d0a242a504f75033e3"},{"author":{"_account_id":30200,"name":"qinhaizhong","email":"qinhaizhong01@inspur.com","username":"qinhaizhong01"},"change_message_id":"4575c2d7d23708af598f9636bb3d7115a55de404","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"This solution has the following important changes:"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"  1.Add the configuration field ``ip_allocate_with_tooz`` to neutron.conf."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"  2.Introducing OpenStack tooz distributed lock into ``ip_allocate`` method."},{"line_number":50,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9fb8cfa7_053db3b9","line":47,"range":{"start_line":47,"start_character":4,"end_line":47,"end_character":74},"in_reply_to":"dfbec78f_9a31b90e","updated":"2019-07-02 11:58:44.000000000","message":"Yes, it is configurable!","commit_id":"46e2cee1817a2577107d12d0a242a504f75033e3"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"5ab4b17c7789def7af028ac9f3fe76dc4a8c8c42","unresolved":false,"context_lines":[{"line_number":55,"context_line":"allocates ip via the neutronclient call ``create_port`` API."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"With this solution (introduce OpenStack tooz), the success rate of successfully"},{"line_number":58,"context_line":"creating instances is increased to 100%, and the average time to create a"},{"line_number":59,"context_line":"instance is reduced by about 20 seconds."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"References"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dfbec78f_ed855d5b","line":58,"range":{"start_line":58,"start_character":22,"end_line":58,"end_character":39},"updated":"2019-05-10 17:27:10.000000000","message":"So what\u0027s the original rate? And what\u0027s the rate for 1000 instances creation in different networks?\nSo, IMO, the test is an extreme scenario, do we really need such lock?","commit_id":"46e2cee1817a2577107d12d0a242a504f75033e3"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"11473bcd0cad1392109d1f9e19aefc23623c1b19","unresolved":false,"context_lines":[{"line_number":55,"context_line":"allocates ip via the neutronclient call ``create_port`` API."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"With this solution (introduce OpenStack tooz), the success rate of successfully"},{"line_number":58,"context_line":"creating instances is increased to 100%, and the average time to create a"},{"line_number":59,"context_line":"instance is reduced by about 20 seconds."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"References"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dfbec78f_01b98ce7","line":58,"range":{"start_line":58,"start_character":22,"end_line":58,"end_character":39},"in_reply_to":"dfbec78f_ad4c3742","updated":"2019-05-13 01:28:46.000000000","message":"Thanks for the feedback. So can bulk port creation narrow down your customer\u0027s problem, Ryan also mentioned same thing. Or can we just let the user create 1000 ports with 1000 different IPs by specifying the address for the port create API?","commit_id":"46e2cee1817a2577107d12d0a242a504f75033e3"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"8fea9e67a72503433d5a996fb7e484ecb86cc723","unresolved":false,"context_lines":[{"line_number":55,"context_line":"allocates ip via the neutronclient call ``create_port`` API."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"With this solution (introduce OpenStack tooz), the success rate of successfully"},{"line_number":58,"context_line":"creating instances is increased to 100%, and the average time to create a"},{"line_number":59,"context_line":"instance is reduced by about 20 seconds."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"References"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dfbec78f_ad4c3742","line":58,"range":{"start_line":58,"start_character":22,"end_line":58,"end_character":39},"in_reply_to":"dfbec78f_ed855d5b","updated":"2019-05-12 06:03:09.000000000","message":"With the demand we get from the customer site, the probability of IP conflict is relatively high. After adding lock, this phenomenon is obviously avoided. IMO, we should face the problem. So, I think add this lock is necessary.","commit_id":"46e2cee1817a2577107d12d0a242a504f75033e3"},{"author":{"_account_id":4187,"name":"Ryan Tidwell","email":"rtidwell@suse.com","username":"ryan-tidwell"},"change_message_id":"d9215789222836e956a21ba1316a2f19d683bc4f","unresolved":false,"context_lines":[{"line_number":61,"context_line":"References"},{"line_number":62,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":".. [1] https://bugs.launchpad.net/neutron/+bug/1777968"},{"line_number":65,"context_line":".. [2] https://launchpad.net/python-tooz"},{"line_number":66,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"dfbec78f_850cfa3b","line":64,"range":{"start_line":64,"start_character":7,"end_line":64,"end_character":54},"updated":"2019-05-07 15:51:49.000000000","message":"The fixes committed for this solve only one aspect of the problem. Keep in mind that ML2 still invokes IPAM multiple times on a bulk port creation. Fixing the way ML2 interacts with IPAM will go a long way toward addressing similar issues.","commit_id":"46e2cee1817a2577107d12d0a242a504f75033e3"},{"author":{"_account_id":30200,"name":"qinhaizhong","email":"qinhaizhong01@inspur.com","username":"qinhaizhong01"},"change_message_id":"4575c2d7d23708af598f9636bb3d7115a55de404","unresolved":false,"context_lines":[{"line_number":61,"context_line":"References"},{"line_number":62,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":".. [1] https://bugs.launchpad.net/neutron/+bug/1777968"},{"line_number":65,"context_line":".. [2] https://launchpad.net/python-tooz"},{"line_number":66,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9fb8cfa7_c5fa3bb8","line":64,"range":{"start_line":64,"start_character":7,"end_line":64,"end_character":54},"in_reply_to":"dfbec78f_850cfa3b","updated":"2019-07-02 11:58:44.000000000","message":"Thanks, I will study and consider whether the \"bulk port create\" has the same problem.","commit_id":"46e2cee1817a2577107d12d0a242a504f75033e3"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"16ecaf3da512ab5ef258d3a99c40ecb9a7038587","unresolved":false,"context_lines":[{"line_number":18,"context_line":"Problem Description"},{"line_number":19,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"1.Current port creation has a probability of failure."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"  When the virtual machines are created in batches, nova will call the neutron"},{"line_number":24,"context_line":"  API to create the port concurrently. Because the ip allocation conflict will"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7faddb67_333ab298","line":21,"range":{"start_line":21,"start_character":1,"end_line":21,"end_character":2},"updated":"2019-07-17 09:47:40.000000000","message":"I think that there is missing space after this dot and this renders strange in HTML, see http://logs.openstack.org/21/657221/3/check/openstack-tox-docs/750d217/html/specs/train/introduce-distributed-locks-to-ipam.html","commit_id":"93c0120ea7f7cb6b2a3d4dfbafa9f9e83ca0fc81"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"2fcd2d31ac7ddce81ec7085fe80855d56d40fa9b","unresolved":false,"context_lines":[{"line_number":18,"context_line":"Problem Description"},{"line_number":19,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"1.Current port creation has a probability of failure."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"  When the virtual machines are created in batches, nova will call the neutron"},{"line_number":24,"context_line":"  API to create the port concurrently. Because the ip allocation conflict will"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7faddb67_c05d7479","line":21,"range":{"start_line":21,"start_character":1,"end_line":21,"end_character":2},"in_reply_to":"7faddb67_333ab298","updated":"2019-07-18 01:31:02.000000000","message":"Done","commit_id":"93c0120ea7f7cb6b2a3d4dfbafa9f9e83ca0fc81"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"16ecaf3da512ab5ef258d3a99c40ecb9a7038587","unresolved":false,"context_lines":[{"line_number":21,"context_line":"1.Current port creation has a probability of failure."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"  When the virtual machines are created in batches, nova will call the neutron"},{"line_number":24,"context_line":"  API to create the port concurrently. Because the ip allocation conflict will"},{"line_number":25,"context_line":"  cause the creation of the port to fail, see [1]_.And bulk port creation has"},{"line_number":26,"context_line":"  the same problem."},{"line_number":27,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"7faddb67_f33f3a84","line":24,"range":{"start_line":24,"start_character":20,"end_line":24,"end_character":24},"updated":"2019-07-17 09:47:40.000000000","message":"ports, if it is one port than it\u0027s not a problem :)","commit_id":"93c0120ea7f7cb6b2a3d4dfbafa9f9e83ca0fc81"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"2fcd2d31ac7ddce81ec7085fe80855d56d40fa9b","unresolved":false,"context_lines":[{"line_number":21,"context_line":"1.Current port creation has a probability of failure."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"  When the virtual machines are created in batches, nova will call the neutron"},{"line_number":24,"context_line":"  API to create the port concurrently. Because the ip allocation conflict will"},{"line_number":25,"context_line":"  cause the creation of the port to fail, see [1]_.And bulk port creation has"},{"line_number":26,"context_line":"  the same problem."},{"line_number":27,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"7faddb67_204ec8c0","line":24,"range":{"start_line":24,"start_character":20,"end_line":24,"end_character":24},"in_reply_to":"7faddb67_f33f3a84","updated":"2019-07-18 01:31:02.000000000","message":"Done","commit_id":"93c0120ea7f7cb6b2a3d4dfbafa9f9e83ca0fc81"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"16ecaf3da512ab5ef258d3a99c40ecb9a7038587","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"  When the virtual machines are created in batches, nova will call the neutron"},{"line_number":24,"context_line":"  API to create the port concurrently. Because the ip allocation conflict will"},{"line_number":25,"context_line":"  cause the creation of the port to fail, see [1]_.And bulk port creation has"},{"line_number":26,"context_line":"  the same problem."},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"2.When creating ports concurrently, the utilization ratio of neutron"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7faddb67_934e0636","line":25,"range":{"start_line":25,"start_character":50,"end_line":25,"end_character":51},"updated":"2019-07-17 09:47:40.000000000","message":"missing space after the dot","commit_id":"93c0120ea7f7cb6b2a3d4dfbafa9f9e83ca0fc81"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"2fcd2d31ac7ddce81ec7085fe80855d56d40fa9b","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"  When the virtual machines are created in batches, nova will call the neutron"},{"line_number":24,"context_line":"  API to create the port concurrently. Because the ip allocation conflict will"},{"line_number":25,"context_line":"  cause the creation of the port to fail, see [1]_.And bulk port creation has"},{"line_number":26,"context_line":"  the same problem."},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"2.When creating ports concurrently, the utilization ratio of neutron"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7faddb67_e0c99025","line":25,"range":{"start_line":25,"start_character":50,"end_line":25,"end_character":51},"in_reply_to":"7faddb67_934e0636","updated":"2019-07-18 01:31:02.000000000","message":"Done","commit_id":"93c0120ea7f7cb6b2a3d4dfbafa9f9e83ca0fc81"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"16ecaf3da512ab5ef258d3a99c40ecb9a7038587","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"  When the virtual machines are created in batches, nova will call the neutron"},{"line_number":24,"context_line":"  API to create the port concurrently. Because the ip allocation conflict will"},{"line_number":25,"context_line":"  cause the creation of the port to fail, see [1]_.And bulk port creation has"},{"line_number":26,"context_line":"  the same problem."},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"2.When creating ports concurrently, the utilization ratio of neutron"},{"line_number":29,"context_line":"  server CPU increases and the allocation efficiency decreases."}],"source_content_type":"text/x-rst","patch_set":3,"id":"7faddb67_d371de77","line":26,"range":{"start_line":25,"start_character":51,"end_line":26,"end_character":18},"updated":"2019-07-17 09:47:40.000000000","message":"can You elaborate on this a bit more? I though that problem which You are trying to solve is caused by the fact that nova sends many POST requests in short time and all of them are run by different API workers.\nIn case of bulk port creation, I think that only one API worker is processing all ports so how we can hit the same problem here and how tooz lock can help to solve it?","commit_id":"93c0120ea7f7cb6b2a3d4dfbafa9f9e83ca0fc81"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"8986305e9eb8807bd3fdf2448ec25c8f16bc7c6b","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"  When the virtual machines are created in batches, nova will call the neutron"},{"line_number":24,"context_line":"  API to create the port concurrently. Because the ip allocation conflict will"},{"line_number":25,"context_line":"  cause the creation of the port to fail, see [1]_.And bulk port creation has"},{"line_number":26,"context_line":"  the same problem."},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"2.When creating ports concurrently, the utilization ratio of neutron"},{"line_number":29,"context_line":"  server CPU increases and the allocation efficiency decreases."}],"source_content_type":"text/x-rst","patch_set":3,"id":"7faddb67_38b4aa7f","line":26,"range":{"start_line":25,"start_character":51,"end_line":26,"end_character":18},"in_reply_to":"7faddb67_a6fe5068","updated":"2019-07-19 08:46:46.000000000","message":"ok, now I see. Thx :)","commit_id":"93c0120ea7f7cb6b2a3d4dfbafa9f9e83ca0fc81"},{"author":{"_account_id":30200,"name":"qinhaizhong","email":"qinhaizhong01@inspur.com","username":"qinhaizhong01"},"change_message_id":"1c52ad0ac1d84440fb9f2410c58f8fa8f8a3b292","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"  When the virtual machines are created in batches, nova will call the neutron"},{"line_number":24,"context_line":"  API to create the port concurrently. Because the ip allocation conflict will"},{"line_number":25,"context_line":"  cause the creation of the port to fail, see [1]_.And bulk port creation has"},{"line_number":26,"context_line":"  the same problem."},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"2.When creating ports concurrently, the utilization ratio of neutron"},{"line_number":29,"context_line":"  server CPU increases and the allocation efficiency decreases."}],"source_content_type":"text/x-rst","patch_set":3,"id":"7faddb67_a6fe5068","line":26,"range":{"start_line":25,"start_character":51,"end_line":26,"end_character":18},"in_reply_to":"7faddb67_d371de77","updated":"2019-07-18 04:43:47.000000000","message":"Thank you, I updated this bp, please review.\nAnd bulk create port has the similiar problem, when multiple \"create_port_bulk\" APIs are called simultaneously on the same subnet, although this scenario is used less frequently.\nIn case of bulk port creation, I would use tooz lock the ip before it is committed to db.","commit_id":"93c0120ea7f7cb6b2a3d4dfbafa9f9e83ca0fc81"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"16ecaf3da512ab5ef258d3a99c40ecb9a7038587","unresolved":false,"context_lines":[{"line_number":25,"context_line":"  cause the creation of the port to fail, see [1]_.And bulk port creation has"},{"line_number":26,"context_line":"  the same problem."},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"2.When creating ports concurrently, the utilization ratio of neutron"},{"line_number":29,"context_line":"  server CPU increases and the allocation efficiency decreases."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"  When an ip allocation conflict fails to submit a database, a ``DB ERROR``"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7faddb67_533dee8c","line":28,"range":{"start_line":28,"start_character":1,"end_line":28,"end_character":2},"updated":"2019-07-17 09:47:40.000000000","message":"same here","commit_id":"93c0120ea7f7cb6b2a3d4dfbafa9f9e83ca0fc81"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"2fcd2d31ac7ddce81ec7085fe80855d56d40fa9b","unresolved":false,"context_lines":[{"line_number":25,"context_line":"  cause the creation of the port to fail, see [1]_.And bulk port creation has"},{"line_number":26,"context_line":"  the same problem."},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"2.When creating ports concurrently, the utilization ratio of neutron"},{"line_number":29,"context_line":"  server CPU increases and the allocation efficiency decreases."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"  When an ip allocation conflict fails to submit a database, a ``DB ERROR``"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7faddb67_a0cf1827","line":28,"range":{"start_line":28,"start_character":1,"end_line":28,"end_character":2},"in_reply_to":"7faddb67_533dee8c","updated":"2019-07-18 01:31:02.000000000","message":"Done","commit_id":"93c0120ea7f7cb6b2a3d4dfbafa9f9e83ca0fc81"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"16ecaf3da512ab5ef258d3a99c40ecb9a7038587","unresolved":false,"context_lines":[{"line_number":40,"context_line":"Proposed Change"},{"line_number":41,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"This solution implements a new ipam driver by introducing a distributed lock"},{"line_number":45,"context_line":"to completely solve the problem of ip address allocation conflict leading"},{"line_number":46,"context_line":"to failure."}],"source_content_type":"text/x-rst","patch_set":3,"id":"7faddb67_330872d8","line":43,"updated":"2019-07-17 09:47:40.000000000","message":"nit: not necessary empty line","commit_id":"93c0120ea7f7cb6b2a3d4dfbafa9f9e83ca0fc81"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"2fcd2d31ac7ddce81ec7085fe80855d56d40fa9b","unresolved":false,"context_lines":[{"line_number":40,"context_line":"Proposed Change"},{"line_number":41,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"This solution implements a new ipam driver by introducing a distributed lock"},{"line_number":45,"context_line":"to completely solve the problem of ip address allocation conflict leading"},{"line_number":46,"context_line":"to failure."}],"source_content_type":"text/x-rst","patch_set":3,"id":"7faddb67_c0d254d1","line":43,"in_reply_to":"7faddb67_330872d8","updated":"2019-07-18 01:31:02.000000000","message":"Done","commit_id":"93c0120ea7f7cb6b2a3d4dfbafa9f9e83ca0fc81"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"16ecaf3da512ab5ef258d3a99c40ecb9a7038587","unresolved":false,"context_lines":[{"line_number":45,"context_line":"to completely solve the problem of ip address allocation conflict leading"},{"line_number":46,"context_line":"to failure."},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"Distributed locks we will use openstack tooz [2]_ , which supports many backend"},{"line_number":49,"context_line":"drivers, such as Zookeeper, Memcached, Redis, Mysql, etc., and it is an"},{"line_number":50,"context_line":"openstack native project."},{"line_number":51,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"7faddb67_132a162b","line":48,"range":{"start_line":48,"start_character":30,"end_line":48,"end_character":39},"updated":"2019-07-17 09:47:40.000000000","message":"nit: OpenStack - and the same applies to other places in this document as well.","commit_id":"93c0120ea7f7cb6b2a3d4dfbafa9f9e83ca0fc81"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"2fcd2d31ac7ddce81ec7085fe80855d56d40fa9b","unresolved":false,"context_lines":[{"line_number":45,"context_line":"to completely solve the problem of ip address allocation conflict leading"},{"line_number":46,"context_line":"to failure."},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"Distributed locks we will use openstack tooz [2]_ , which supports many backend"},{"line_number":49,"context_line":"drivers, such as Zookeeper, Memcached, Redis, Mysql, etc., and it is an"},{"line_number":50,"context_line":"openstack native project."},{"line_number":51,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"7faddb67_80d8dcee","line":48,"range":{"start_line":48,"start_character":30,"end_line":48,"end_character":39},"in_reply_to":"7faddb67_132a162b","updated":"2019-07-18 01:31:02.000000000","message":"Done","commit_id":"93c0120ea7f7cb6b2a3d4dfbafa9f9e83ca0fc81"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"16ecaf3da512ab5ef258d3a99c40ecb9a7038587","unresolved":false,"context_lines":[{"line_number":46,"context_line":"to failure."},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"Distributed locks we will use openstack tooz [2]_ , which supports many backend"},{"line_number":49,"context_line":"drivers, such as Zookeeper, Memcached, Redis, Mysql, etc., and it is an"},{"line_number":50,"context_line":"openstack native project."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"In our environment,and use mysql as backend driver, we create 1000 instances in"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7faddb67_13b8d6e2","line":49,"range":{"start_line":49,"start_character":17,"end_line":49,"end_character":51},"updated":"2019-07-17 09:47:40.000000000","message":"just out of curiosity, which driver do You recommend? Will it be configurable for user which driver to use or will it be hardcoded?","commit_id":"93c0120ea7f7cb6b2a3d4dfbafa9f9e83ca0fc81"},{"author":{"_account_id":30200,"name":"qinhaizhong","email":"qinhaizhong01@inspur.com","username":"qinhaizhong01"},"change_message_id":"1c52ad0ac1d84440fb9f2410c58f8fa8f8a3b292","unresolved":false,"context_lines":[{"line_number":46,"context_line":"to failure."},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"Distributed locks we will use openstack tooz [2]_ , which supports many backend"},{"line_number":49,"context_line":"drivers, such as Zookeeper, Memcached, Redis, Mysql, etc., and it is an"},{"line_number":50,"context_line":"openstack native project."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"In our environment,and use mysql as backend driver, we create 1000 instances in"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7faddb67_264ee0c0","line":49,"range":{"start_line":49,"start_character":17,"end_line":49,"end_character":51},"in_reply_to":"7faddb67_13b8d6e2","updated":"2019-07-18 04:43:47.000000000","message":"Which driver is the best I have no good advice, but in my demo is the Mysql as back-end driver, the effect is obvious and good, I think the memory type back-end driver performance will be higher. We will not adopt Hard-coded, it is configurable, I plan to add the [tooz] option in neutron.conf to configure the backend driver for distributed locks.","commit_id":"93c0120ea7f7cb6b2a3d4dfbafa9f9e83ca0fc81"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"16ecaf3da512ab5ef258d3a99c40ecb9a7038587","unresolved":false,"context_lines":[{"line_number":49,"context_line":"drivers, such as Zookeeper, Memcached, Redis, Mysql, etc., and it is an"},{"line_number":50,"context_line":"openstack native project."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"In our environment,and use mysql as backend driver, we create 1000 instances in"},{"line_number":53,"context_line":"batches via rally, and test allocates ip via the neutronclient"},{"line_number":54,"context_line":"call ``create_port`` API."},{"line_number":55,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"7faddb67_9315a6e7","line":52,"range":{"start_line":52,"start_character":18,"end_line":52,"end_character":19},"updated":"2019-07-17 09:47:40.000000000","message":"missing space after comma","commit_id":"93c0120ea7f7cb6b2a3d4dfbafa9f9e83ca0fc81"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"2fcd2d31ac7ddce81ec7085fe80855d56d40fa9b","unresolved":false,"context_lines":[{"line_number":49,"context_line":"drivers, such as Zookeeper, Memcached, Redis, Mysql, etc., and it is an"},{"line_number":50,"context_line":"openstack native project."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"In our environment,and use mysql as backend driver, we create 1000 instances in"},{"line_number":53,"context_line":"batches via rally, and test allocates ip via the neutronclient"},{"line_number":54,"context_line":"call ``create_port`` API."},{"line_number":55,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"7faddb67_20e328a6","line":52,"range":{"start_line":52,"start_character":18,"end_line":52,"end_character":19},"in_reply_to":"7faddb67_9315a6e7","updated":"2019-07-18 01:31:02.000000000","message":"Done","commit_id":"93c0120ea7f7cb6b2a3d4dfbafa9f9e83ca0fc81"},{"author":{"_account_id":30200,"name":"qinhaizhong","email":"qinhaizhong01@inspur.com","username":"qinhaizhong01"},"change_message_id":"1c52ad0ac1d84440fb9f2410c58f8fa8f8a3b292","unresolved":false,"context_lines":[{"line_number":49,"context_line":"drivers, such as Zookeeper, Memcached, Redis, Mysql, etc., and it is an"},{"line_number":50,"context_line":"openstack native project."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"In our environment,and use mysql as backend driver, we create 1000 instances in"},{"line_number":53,"context_line":"batches via rally, and test allocates ip via the neutronclient"},{"line_number":54,"context_line":"call ``create_port`` API."},{"line_number":55,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"7faddb67_46de7cda","line":52,"range":{"start_line":52,"start_character":18,"end_line":52,"end_character":19},"in_reply_to":"7faddb67_9315a6e7","updated":"2019-07-18 04:43:47.000000000","message":"Thank you for your suggestion.","commit_id":"93c0120ea7f7cb6b2a3d4dfbafa9f9e83ca0fc81"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"fb1b2fed04c5612743b0914ca5df273f4383695a","unresolved":false,"context_lines":[{"line_number":5,"context_line":" http://creativecommons.org/licenses/by/3.0/legalcode"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":8,"context_line":"Introduce distributed locks to ipam module"},{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/neutron/+spec/introduce-distributed-locks-to-ipam"}],"source_content_type":"text/x-rst","patch_set":6,"id":"7faddb67_66934302","line":8,"range":{"start_line":8,"start_character":0,"end_line":8,"end_character":42},"updated":"2019-07-22 14:33:41.000000000","message":"Thanks for submitting this, IMO, we need more information, please follow this template to add something more about this proposal:\nhttps://specs.openstack.org/openstack/neutron-specs/specs/template.html","commit_id":"911e4479aa6fc16e4214cef8a4ad9cffafd47422"},{"author":{"_account_id":30200,"name":"qinhaizhong","email":"qinhaizhong01@inspur.com","username":"qinhaizhong01"},"change_message_id":"810a4492c225fddc21341e17d7fa0d909d7cedd9","unresolved":false,"context_lines":[{"line_number":5,"context_line":" http://creativecommons.org/licenses/by/3.0/legalcode"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":8,"context_line":"Introduce distributed locks to ipam module"},{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/neutron/+spec/introduce-distributed-locks-to-ipam"}],"source_content_type":"text/x-rst","patch_set":6,"id":"7faddb67_14b4eb34","line":8,"range":{"start_line":8,"start_character":0,"end_line":8,"end_character":42},"in_reply_to":"7faddb67_66934302","updated":"2019-07-23 10:19:23.000000000","message":"Done","commit_id":"911e4479aa6fc16e4214cef8a4ad9cffafd47422"},{"author":{"_account_id":4187,"name":"Ryan Tidwell","email":"rtidwell@suse.com","username":"ryan-tidwell"},"change_message_id":"ad8a3cbc1255cfbd50ebd23dd6e74398f59c7b2c","unresolved":false,"context_lines":[{"line_number":84,"context_line":"Solve the problem of creating port failures caused by ip allocation conflicts,"},{"line_number":85,"context_line":"and improve the performance of the neutron server concurrently to create ports."},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"In our environment, and use mysql as backend driver, we create 1000 instances in"},{"line_number":88,"context_line":"batches via rally, and test allocates ip via the neutronclient"},{"line_number":89,"context_line":"call ``create_port`` API.With this solution (introduce OpenStack tooz), the"},{"line_number":90,"context_line":"success rate of successfully creating instances is increased to 100%, and the"},{"line_number":91,"context_line":"average time to create a instance is reduced by about 20 seconds."},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"Other deployer impact"},{"line_number":94,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":10,"id":"7faddb67_ada90591","line":91,"range":{"start_line":87,"start_character":0,"end_line":91,"end_character":64},"updated":"2019-07-23 16:03:36.000000000","message":"Have we thought through the drawbacks? There are always trade-offs. Are there situations where a tooz driver may not be appropriate? This is kind of content that should go in this section.\n\nnit: Can we either link to some hard data or soften the language here? Can we simply say that a proof-of-concept implementation leveraging tooz yielded promising results (like the ones reference here)? When I read this it seems like it make some promises about performance, I don\u0027t think we want to promise these numbers. I think we just want to say there is *potential* for improvement given the results of the proof-of-concept.","commit_id":"8af7663f52f8758762630cb7981612bfb9899533"},{"author":{"_account_id":30200,"name":"qinhaizhong","email":"qinhaizhong01@inspur.com","username":"qinhaizhong01"},"change_message_id":"9a78f08f80b535003d30f5a8f22881397f593687","unresolved":false,"context_lines":[{"line_number":84,"context_line":"Solve the problem of creating port failures caused by ip allocation conflicts,"},{"line_number":85,"context_line":"and improve the performance of the neutron server concurrently to create ports."},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"In our environment, and use mysql as backend driver, we create 1000 instances in"},{"line_number":88,"context_line":"batches via rally, and test allocates ip via the neutronclient"},{"line_number":89,"context_line":"call ``create_port`` API.With this solution (introduce OpenStack tooz), the"},{"line_number":90,"context_line":"success rate of successfully creating instances is increased to 100%, and the"},{"line_number":91,"context_line":"average time to create a instance is reduced by about 20 seconds."},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"Other deployer impact"},{"line_number":94,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":10,"id":"7faddb67_072d8da7","line":91,"range":{"start_line":87,"start_character":0,"end_line":91,"end_character":64},"in_reply_to":"7faddb67_ada90591","updated":"2019-07-24 03:15:27.000000000","message":"Done","commit_id":"8af7663f52f8758762630cb7981612bfb9899533"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"c63971377160cea91c6f06548cfea3422f7523d9","unresolved":false,"context_lines":[{"line_number":53,"context_line":""},{"line_number":54,"context_line":"Alternatives"},{"line_number":55,"context_line":"------------"},{"line_number":56,"context_line":"* We will modify the current ipam driver to introduce distributed locks to solve"},{"line_number":57,"context_line":"  the above mentioned problems when creating a new ipam driver is not feasible."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"Data model impact"}],"source_content_type":"text/x-rst","patch_set":15,"id":"7faddb67_b67069de","line":56,"range":{"start_line":56,"start_character":5,"end_line":56,"end_character":9},"updated":"2019-07-24 10:20:19.000000000","message":"nit: shouldn\u0027t here be \"can\" instead of \"will\"?","commit_id":"8c043a4c0c6c956468f97363478e11e7643264f8"},{"author":{"_account_id":30200,"name":"qinhaizhong","email":"qinhaizhong01@inspur.com","username":"qinhaizhong01"},"change_message_id":"1e1c02fbdbe7edc29735a176e875da95ac044e5c","unresolved":false,"context_lines":[{"line_number":53,"context_line":""},{"line_number":54,"context_line":"Alternatives"},{"line_number":55,"context_line":"------------"},{"line_number":56,"context_line":"* We will modify the current ipam driver to introduce distributed locks to solve"},{"line_number":57,"context_line":"  the above mentioned problems when creating a new ipam driver is not feasible."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"Data model impact"}],"source_content_type":"text/x-rst","patch_set":15,"id":"7faddb67_847c0521","line":56,"range":{"start_line":56,"start_character":5,"end_line":56,"end_character":9},"in_reply_to":"7faddb67_b67069de","updated":"2019-07-25 03:17:16.000000000","message":"Done","commit_id":"8c043a4c0c6c956468f97363478e11e7643264f8"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"c63971377160cea91c6f06548cfea3422f7523d9","unresolved":false,"context_lines":[{"line_number":74,"context_line":""},{"line_number":75,"context_line":"Other end user impact"},{"line_number":76,"context_line":"---------------------"},{"line_number":77,"context_line":"* Users can configure the backend driver for tooz using the [tooz] configuration"},{"line_number":78,"context_line":"  block in neutron.conf."},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"* Users can switch to our new ipam driver by setting \"ipam_driver\" in neutron.conf."}],"source_content_type":"text/x-rst","patch_set":15,"id":"7faddb67_b65f0971","line":77,"range":{"start_line":77,"start_character":2,"end_line":77,"end_character":7},"updated":"2019-07-24 10:20:19.000000000","message":"probably operator instead of user :)","commit_id":"8c043a4c0c6c956468f97363478e11e7643264f8"},{"author":{"_account_id":30200,"name":"qinhaizhong","email":"qinhaizhong01@inspur.com","username":"qinhaizhong01"},"change_message_id":"1e1c02fbdbe7edc29735a176e875da95ac044e5c","unresolved":false,"context_lines":[{"line_number":74,"context_line":""},{"line_number":75,"context_line":"Other end user impact"},{"line_number":76,"context_line":"---------------------"},{"line_number":77,"context_line":"* Users can configure the backend driver for tooz using the [tooz] configuration"},{"line_number":78,"context_line":"  block in neutron.conf."},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"* Users can switch to our new ipam driver by setting \"ipam_driver\" in neutron.conf."}],"source_content_type":"text/x-rst","patch_set":15,"id":"7faddb67_248e712e","line":77,"range":{"start_line":77,"start_character":2,"end_line":77,"end_character":7},"in_reply_to":"7faddb67_b65f0971","updated":"2019-07-25 03:17:16.000000000","message":"Done","commit_id":"8c043a4c0c6c956468f97363478e11e7643264f8"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"c63971377160cea91c6f06548cfea3422f7523d9","unresolved":false,"context_lines":[{"line_number":77,"context_line":"* Users can configure the backend driver for tooz using the [tooz] configuration"},{"line_number":78,"context_line":"  block in neutron.conf."},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"* Users can switch to our new ipam driver by setting \"ipam_driver\" in neutron.conf."},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"Performance Impact"},{"line_number":83,"context_line":"------------------"}],"source_content_type":"text/x-rst","patch_set":15,"id":"7faddb67_56549554","line":80,"range":{"start_line":80,"start_character":2,"end_line":80,"end_character":7},"updated":"2019-07-24 10:20:19.000000000","message":"same here","commit_id":"8c043a4c0c6c956468f97363478e11e7643264f8"},{"author":{"_account_id":30200,"name":"qinhaizhong","email":"qinhaizhong01@inspur.com","username":"qinhaizhong01"},"change_message_id":"1e1c02fbdbe7edc29735a176e875da95ac044e5c","unresolved":false,"context_lines":[{"line_number":77,"context_line":"* Users can configure the backend driver for tooz using the [tooz] configuration"},{"line_number":78,"context_line":"  block in neutron.conf."},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"* Users can switch to our new ipam driver by setting \"ipam_driver\" in neutron.conf."},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"Performance Impact"},{"line_number":83,"context_line":"------------------"}],"source_content_type":"text/x-rst","patch_set":15,"id":"7faddb67_c482fd00","line":80,"range":{"start_line":80,"start_character":2,"end_line":80,"end_character":7},"in_reply_to":"7faddb67_56549554","updated":"2019-07-25 03:17:16.000000000","message":"Done","commit_id":"8c043a4c0c6c956468f97363478e11e7643264f8"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"c63971377160cea91c6f06548cfea3422f7523d9","unresolved":false,"context_lines":[{"line_number":93,"context_line":"The bad aspects:"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"* The minimum time to create vms or ports has increased slightly, and creating a"},{"line_number":96,"context_line":"  port time in a non-concurrent scenario will also increase slightly."},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"Other deployer impact"},{"line_number":99,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":15,"id":"7faddb67_d6616513","line":96,"updated":"2019-07-24 10:20:19.000000000","message":"IMO this isn\u0027t big issue if we can make it more reliable under higher load (more vms spawned in short time)","commit_id":"8c043a4c0c6c956468f97363478e11e7643264f8"},{"author":{"_account_id":30200,"name":"qinhaizhong","email":"qinhaizhong01@inspur.com","username":"qinhaizhong01"},"change_message_id":"374aa3376865e4004209da7c5b2bb851d14a0d70","unresolved":false,"context_lines":[{"line_number":93,"context_line":"The bad aspects:"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"* The minimum time to create vms or ports has increased slightly, and creating a"},{"line_number":96,"context_line":"  port time in a non-concurrent scenario will also increase slightly."},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"Other deployer impact"},{"line_number":99,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":15,"id":"7faddb67_e4e059fd","line":96,"in_reply_to":"7faddb67_d6616513","updated":"2019-07-25 03:16:06.000000000","message":"Done\nYes, this is a slight impact, I think I should let everyone know. I will update this title.","commit_id":"8c043a4c0c6c956468f97363478e11e7643264f8"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"c63971377160cea91c6f06548cfea3422f7523d9","unresolved":false,"context_lines":[{"line_number":120,"context_line":"* Support for parsing [tooz] backend drivers, encapsulating distributed lock modules,"},{"line_number":121,"context_line":"  and implementing distributed lock initialization, locking, unlocking, etc."},{"line_number":122,"context_line":"* Make \"create_port\" to support the new ipam driver."},{"line_number":123,"context_line":"* Make \"bulk_create_port\" to support the new ipam driver."},{"line_number":124,"context_line":"* Add related tests."},{"line_number":125,"context_line":"* Documentation work."},{"line_number":126,"context_line":""}],"source_content_type":"text/x-rst","patch_set":15,"id":"7faddb67_b6d4e9be","line":123,"updated":"2019-07-24 10:20:19.000000000","message":"what changes are required in \"create_port\" and \"bulk_create_port\" methods exactly? I though that IPAM driver should just be configured and those methods should work with any of them.","commit_id":"8c043a4c0c6c956468f97363478e11e7643264f8"},{"author":{"_account_id":30200,"name":"qinhaizhong","email":"qinhaizhong01@inspur.com","username":"qinhaizhong01"},"change_message_id":"374aa3376865e4004209da7c5b2bb851d14a0d70","unresolved":false,"context_lines":[{"line_number":120,"context_line":"* Support for parsing [tooz] backend drivers, encapsulating distributed lock modules,"},{"line_number":121,"context_line":"  and implementing distributed lock initialization, locking, unlocking, etc."},{"line_number":122,"context_line":"* Make \"create_port\" to support the new ipam driver."},{"line_number":123,"context_line":"* Make \"bulk_create_port\" to support the new ipam driver."},{"line_number":124,"context_line":"* Add related tests."},{"line_number":125,"context_line":"* Documentation work."},{"line_number":126,"context_line":""}],"source_content_type":"text/x-rst","patch_set":15,"id":"7faddb67_64fea9af","line":123,"in_reply_to":"7faddb67_b6d4e9be","updated":"2019-07-25 03:16:06.000000000","message":"Done\n\nCurrently \"create_port\" design, ipam module is one of the sub-transactions, the point that is actually submitted to the database is in the \"_create_port_db\" method, the distributed lock must be released after the data is submitted to the database, otherwise there will be a problem of ip address allocation conflict, so we need to make some minor adjustments to the \"create_port\" method or add a decorator, similar to \"bulk_create_port\".","commit_id":"8c043a4c0c6c956468f97363478e11e7643264f8"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"c63971377160cea91c6f06548cfea3422f7523d9","unresolved":false,"context_lines":[{"line_number":121,"context_line":"  and implementing distributed lock initialization, locking, unlocking, etc."},{"line_number":122,"context_line":"* Make \"create_port\" to support the new ipam driver."},{"line_number":123,"context_line":"* Make \"bulk_create_port\" to support the new ipam driver."},{"line_number":124,"context_line":"* Add related tests."},{"line_number":125,"context_line":"* Documentation work."},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"Dependencies"}],"source_content_type":"text/x-rst","patch_set":15,"id":"7faddb67_16e37da6","line":124,"updated":"2019-07-24 10:20:19.000000000","message":"What tests exactly You are planning to add? How You want to test this new driver?","commit_id":"8c043a4c0c6c956468f97363478e11e7643264f8"},{"author":{"_account_id":30200,"name":"qinhaizhong","email":"qinhaizhong01@inspur.com","username":"qinhaizhong01"},"change_message_id":"374aa3376865e4004209da7c5b2bb851d14a0d70","unresolved":false,"context_lines":[{"line_number":121,"context_line":"  and implementing distributed lock initialization, locking, unlocking, etc."},{"line_number":122,"context_line":"* Make \"create_port\" to support the new ipam driver."},{"line_number":123,"context_line":"* Make \"bulk_create_port\" to support the new ipam driver."},{"line_number":124,"context_line":"* Add related tests."},{"line_number":125,"context_line":"* Documentation work."},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"Dependencies"}],"source_content_type":"text/x-rst","patch_set":15,"id":"7faddb67_8420854b","line":124,"in_reply_to":"7faddb67_16e37da6","updated":"2019-07-25 03:16:06.000000000","message":"Done\nI mean to add some unit tests, unit tests should be added during the development of the code process, I will remove this sentence.","commit_id":"8c043a4c0c6c956468f97363478e11e7643264f8"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"c63971377160cea91c6f06548cfea3422f7523d9","unresolved":false,"context_lines":[{"line_number":130,"context_line":""},{"line_number":131,"context_line":"Testing"},{"line_number":132,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":133,"context_line":"Unit tests, functional tests, API tests and scenario tests are necessary."},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"Documentation Impact"},{"line_number":136,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":15,"id":"7faddb67_36f9d94c","line":133,"range":{"start_line":133,"start_character":30,"end_line":133,"end_character":58},"updated":"2019-07-24 10:20:19.000000000","message":"how You want to test it in API and scenario tests? Can You elaborate on this a bit more?","commit_id":"8c043a4c0c6c956468f97363478e11e7643264f8"},{"author":{"_account_id":30200,"name":"qinhaizhong","email":"qinhaizhong01@inspur.com","username":"qinhaizhong01"},"change_message_id":"374aa3376865e4004209da7c5b2bb851d14a0d70","unresolved":false,"context_lines":[{"line_number":130,"context_line":""},{"line_number":131,"context_line":"Testing"},{"line_number":132,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":133,"context_line":"Unit tests, functional tests, API tests and scenario tests are necessary."},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"Documentation Impact"},{"line_number":136,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":15,"id":"7faddb67_a4cb4170","line":133,"range":{"start_line":133,"start_character":30,"end_line":133,"end_character":58},"in_reply_to":"7faddb67_36f9d94c","updated":"2019-07-25 03:16:06.000000000","message":"Done\nI am sorry that this sentence was copied from another spec, it is my carelessness. I will adjust this paragraph.","commit_id":"8c043a4c0c6c956468f97363478e11e7643264f8"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"c63971377160cea91c6f06548cfea3422f7523d9","unresolved":false,"context_lines":[{"line_number":134,"context_line":""},{"line_number":135,"context_line":"Documentation Impact"},{"line_number":136,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":137,"context_line":"New ipam driver configuration document."},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"References"},{"line_number":140,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":15,"id":"7faddb67_768431b2","line":137,"updated":"2019-07-24 10:20:19.000000000","message":"configuration docs are generated automatically so I don\u0027t think it needs to be included here :)","commit_id":"8c043a4c0c6c956468f97363478e11e7643264f8"},{"author":{"_account_id":30200,"name":"qinhaizhong","email":"qinhaizhong01@inspur.com","username":"qinhaizhong01"},"change_message_id":"374aa3376865e4004209da7c5b2bb851d14a0d70","unresolved":false,"context_lines":[{"line_number":134,"context_line":""},{"line_number":135,"context_line":"Documentation Impact"},{"line_number":136,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":137,"context_line":"New ipam driver configuration document."},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"References"},{"line_number":140,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":15,"id":"7faddb67_44c84d73","line":137,"in_reply_to":"7faddb67_768431b2","updated":"2019-07-25 03:16:06.000000000","message":"Done\nOk, I will remove.","commit_id":"8c043a4c0c6c956468f97363478e11e7643264f8"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"9fc1c7cc5ebb9db8f2f8511cd296312574896b3c","unresolved":false,"context_lines":[{"line_number":21,"context_line":"1. Current port creation has a probability of failure."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"  When the virtual machines are created in batches, nova will call the neutron"},{"line_number":24,"context_line":"  API to create the ports concurrently. Because the ip allocation conflict will"},{"line_number":25,"context_line":"  cause the creation of the port to fail, see [1]_."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"  And bulk create port has the similiar problem, when multiple \"create_port_bulk\""},{"line_number":28,"context_line":"  APIs are called simultaneously on the same subnet, although this scenario is"}],"source_content_type":"text/x-rst","patch_set":17,"id":"7faddb67_3f242daf","line":25,"range":{"start_line":24,"start_character":40,"end_line":25,"end_character":40},"updated":"2019-07-26 00:18:57.000000000","message":"For clarity, I would rephrase this as: Port creation will fail if there is an ip allocation conflict","commit_id":"cd712041e2bf73467d941c8a5bbcf4a7f27bc45d"},{"author":{"_account_id":30200,"name":"qinhaizhong","email":"qinhaizhong01@inspur.com","username":"qinhaizhong01"},"change_message_id":"cfae261573f63d34f90f86a2f2e5c53db28f0e29","unresolved":false,"context_lines":[{"line_number":21,"context_line":"1. Current port creation has a probability of failure."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"  When the virtual machines are created in batches, nova will call the neutron"},{"line_number":24,"context_line":"  API to create the ports concurrently. Because the ip allocation conflict will"},{"line_number":25,"context_line":"  cause the creation of the port to fail, see [1]_."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"  And bulk create port has the similiar problem, when multiple \"create_port_bulk\""},{"line_number":28,"context_line":"  APIs are called simultaneously on the same subnet, although this scenario is"}],"source_content_type":"text/x-rst","patch_set":17,"id":"7faddb67_af0bb58b","line":25,"range":{"start_line":24,"start_character":40,"end_line":25,"end_character":40},"in_reply_to":"7faddb67_3f242daf","updated":"2019-08-01 03:28:20.000000000","message":"Done","commit_id":"cd712041e2bf73467d941c8a5bbcf4a7f27bc45d"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"9fc1c7cc5ebb9db8f2f8511cd296312574896b3c","unresolved":false,"context_lines":[{"line_number":34,"context_line":"  When an ip allocation conflict fails to submit a database, a ``DB ERROR``"},{"line_number":35,"context_line":"  exception is thrown. ``Create_port`` will catch the above exception and rest"},{"line_number":36,"context_line":"  after ``retry_interval\u003d0.1`` and re-call ``create_port`` until it exceeds"},{"line_number":37,"context_line":"  ``max_retries\u003d10``.When it exceeds ``max_retries\u003d10`` times, \"Create_port\""},{"line_number":38,"context_line":"  will fail. When concurrency is large and conflict intensifies, repeated call"},{"line_number":39,"context_line":"  to create_port increases CPU\u0027s burden and reduces allocation efficiency."},{"line_number":40,"context_line":"  Adjusting ``retry_interval`` and ``max_retries`` can only reduce the"}],"source_content_type":"text/x-rst","patch_set":17,"id":"7faddb67_ff3535dc","line":37,"range":{"start_line":37,"start_character":20,"end_line":37,"end_character":25},"updated":"2019-07-26 00:18:57.000000000","message":". When","commit_id":"cd712041e2bf73467d941c8a5bbcf4a7f27bc45d"},{"author":{"_account_id":30200,"name":"qinhaizhong","email":"qinhaizhong01@inspur.com","username":"qinhaizhong01"},"change_message_id":"cfae261573f63d34f90f86a2f2e5c53db28f0e29","unresolved":false,"context_lines":[{"line_number":34,"context_line":"  When an ip allocation conflict fails to submit a database, a ``DB ERROR``"},{"line_number":35,"context_line":"  exception is thrown. ``Create_port`` will catch the above exception and rest"},{"line_number":36,"context_line":"  after ``retry_interval\u003d0.1`` and re-call ``create_port`` until it exceeds"},{"line_number":37,"context_line":"  ``max_retries\u003d10``.When it exceeds ``max_retries\u003d10`` times, \"Create_port\""},{"line_number":38,"context_line":"  will fail. When concurrency is large and conflict intensifies, repeated call"},{"line_number":39,"context_line":"  to create_port increases CPU\u0027s burden and reduces allocation efficiency."},{"line_number":40,"context_line":"  Adjusting ``retry_interval`` and ``max_retries`` can only reduce the"}],"source_content_type":"text/x-rst","patch_set":17,"id":"7faddb67_4ffc8171","line":37,"range":{"start_line":37,"start_character":20,"end_line":37,"end_character":25},"in_reply_to":"7faddb67_ff3535dc","updated":"2019-08-01 03:28:20.000000000","message":"Done","commit_id":"cd712041e2bf73467d941c8a5bbcf4a7f27bc45d"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"bc1f03a61030da92424446b0f78ce59e6cd9c0f5","unresolved":false,"context_lines":[{"line_number":46,"context_line":"to completely solve the problem of ip address allocation conflict leading"},{"line_number":47,"context_line":"to failure."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"Distributed locks we will use OpenStack tooz [2]_ , which supports many backend"},{"line_number":50,"context_line":"drivers, such as Zookeeper, Memcached, Redis, Mysql, etc., and it is an"},{"line_number":51,"context_line":"OpenStack native project. We will support the configuration of tooz backend"},{"line_number":52,"context_line":"drivers in neutron.conf, such as adding [tooz] configuration items."}],"source_content_type":"text/x-rst","patch_set":17,"id":"7faddb67_945f54e4","line":49,"range":{"start_line":49,"start_character":0,"end_line":49,"end_character":11},"updated":"2019-07-25 08:50:31.000000000","message":"nitty nit: I think You missed \"For\", so it would be \"For distributed...\"","commit_id":"cd712041e2bf73467d941c8a5bbcf4a7f27bc45d"},{"author":{"_account_id":30200,"name":"qinhaizhong","email":"qinhaizhong01@inspur.com","username":"qinhaizhong01"},"change_message_id":"cfae261573f63d34f90f86a2f2e5c53db28f0e29","unresolved":false,"context_lines":[{"line_number":46,"context_line":"to completely solve the problem of ip address allocation conflict leading"},{"line_number":47,"context_line":"to failure."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"Distributed locks we will use OpenStack tooz [2]_ , which supports many backend"},{"line_number":50,"context_line":"drivers, such as Zookeeper, Memcached, Redis, Mysql, etc., and it is an"},{"line_number":51,"context_line":"OpenStack native project. We will support the configuration of tooz backend"},{"line_number":52,"context_line":"drivers in neutron.conf, such as adding [tooz] configuration items."}],"source_content_type":"text/x-rst","patch_set":17,"id":"7faddb67_6f013d6a","line":49,"range":{"start_line":49,"start_character":0,"end_line":49,"end_character":11},"in_reply_to":"7faddb67_945f54e4","updated":"2019-08-01 03:28:20.000000000","message":"Done","commit_id":"cd712041e2bf73467d941c8a5bbcf4a7f27bc45d"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"8bb8e2dcf9de8aa223461cbba7c5e69fb22904ca","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Problem Description"},{"line_number":20,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":21,"context_line":"1. Current port creation has a probability of failure."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"  When the virtual machines are created in batches, nova will call the neutron"},{"line_number":24,"context_line":"  API to create the ports concurrently. Port creation will fail if there is an"},{"line_number":25,"context_line":"  ip allocation conflict, see [1]_."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"  And bulk create port has the similiar problem, when multiple \"create_port_bulk\""},{"line_number":28,"context_line":"  APIs are called simultaneously on the same subnet, although this scenario is"},{"line_number":29,"context_line":"  used less frequently."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"2. When creating ports concurrently, the utilization ratio of neutron"},{"line_number":32,"context_line":"   server CPU increases and the allocation efficiency decreases."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"  When an ip allocation conflict fails to submit a database, a ``DB ERROR``"},{"line_number":35,"context_line":"  exception is thrown. ``Create_port`` will catch the above exception and rest"},{"line_number":36,"context_line":"  after ``retry_interval\u003d0.1`` and re-call ``create_port`` until it exceeds"},{"line_number":37,"context_line":"  ``max_retries\u003d10``. When it exceeds ``max_retries\u003d10`` times, \"Create_port\""},{"line_number":38,"context_line":"  will fail. When concurrency is large and conflict intensifies, repeated call"},{"line_number":39,"context_line":"  to create_port increases CPU\u0027s burden and reduces allocation efficiency."},{"line_number":40,"context_line":"  Adjusting ``retry_interval`` and ``max_retries`` can only reduce the"},{"line_number":41,"context_line":"  probability of problems, but can not solve them thoroughly."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"Proposed Change"},{"line_number":44,"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":20,"id":"7faddb67_8bcd8331","line":41,"range":{"start_line":21,"start_character":0,"end_line":41,"end_character":61},"updated":"2019-08-01 16:06:36.000000000","message":"I\u0027m ok with this change. My only concern is that this part is still rendering strange. See https://logs.opendev.org/21/657221/20/check/openstack-tox-docs/77eedeb/html/specs/train/introduce-distributed-locks-to-ipam.html","commit_id":"0a409b1352db3dde517a3632028d05032867bf7d"},{"author":{"_account_id":30200,"name":"qinhaizhong","email":"qinhaizhong01@inspur.com","username":"qinhaizhong01"},"change_message_id":"ebc95277fba797ec1e67500f2402c8ff7fc988ce","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Problem Description"},{"line_number":20,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":21,"context_line":"1. Current port creation has a probability of failure."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"  When the virtual machines are created in batches, nova will call the neutron"},{"line_number":24,"context_line":"  API to create the ports concurrently. Port creation will fail if there is an"},{"line_number":25,"context_line":"  ip allocation conflict, see [1]_."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"  And bulk create port has the similiar problem, when multiple \"create_port_bulk\""},{"line_number":28,"context_line":"  APIs are called simultaneously on the same subnet, although this scenario is"},{"line_number":29,"context_line":"  used less frequently."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"2. When creating ports concurrently, the utilization ratio of neutron"},{"line_number":32,"context_line":"   server CPU increases and the allocation efficiency decreases."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"  When an ip allocation conflict fails to submit a database, a ``DB ERROR``"},{"line_number":35,"context_line":"  exception is thrown. ``Create_port`` will catch the above exception and rest"},{"line_number":36,"context_line":"  after ``retry_interval\u003d0.1`` and re-call ``create_port`` until it exceeds"},{"line_number":37,"context_line":"  ``max_retries\u003d10``. When it exceeds ``max_retries\u003d10`` times, \"Create_port\""},{"line_number":38,"context_line":"  will fail. When concurrency is large and conflict intensifies, repeated call"},{"line_number":39,"context_line":"  to create_port increases CPU\u0027s burden and reduces allocation efficiency."},{"line_number":40,"context_line":"  Adjusting ``retry_interval`` and ``max_retries`` can only reduce the"},{"line_number":41,"context_line":"  probability of problems, but can not solve them thoroughly."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"Proposed Change"},{"line_number":44,"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":20,"id":"7faddb67_e57c5bb7","line":41,"range":{"start_line":21,"start_character":0,"end_line":41,"end_character":61},"in_reply_to":"7faddb67_8bcd8331","updated":"2019-08-02 03:14:49.000000000","message":"Done","commit_id":"0a409b1352db3dde517a3632028d05032867bf7d"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"55003dc588607cd3207d89a96cf3b72e995696cb","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"Proposed Change"},{"line_number":44,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":45,"context_line":"This solution implements a new ipam driver by introducing a distributed lock"},{"line_number":46,"context_line":"to completely solve the problem of ip address allocation conflict leading"},{"line_number":47,"context_line":"to failure."},{"line_number":48,"context_line":""}],"source_content_type":"text/x-rst","patch_set":23,"id":"7faddb67_23f90bc7","line":45,"range":{"start_line":45,"start_character":27,"end_line":45,"end_character":42},"updated":"2019-08-02 06:08:47.000000000","message":"Here how about add an example config of this?","commit_id":"73a8b3e516246d59c514e46c0c769c3fff88ae76"},{"author":{"_account_id":30200,"name":"qinhaizhong","email":"qinhaizhong01@inspur.com","username":"qinhaizhong01"},"change_message_id":"8b7566a54b2a10b676c64714105d2d2c59669901","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"Proposed Change"},{"line_number":44,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":45,"context_line":"This solution implements a new ipam driver by introducing a distributed lock"},{"line_number":46,"context_line":"to completely solve the problem of ip address allocation conflict leading"},{"line_number":47,"context_line":"to failure."},{"line_number":48,"context_line":""}],"source_content_type":"text/x-rst","patch_set":23,"id":"7faddb67_b92d2e96","line":45,"range":{"start_line":45,"start_character":27,"end_line":45,"end_character":42},"in_reply_to":"7faddb67_23f90bc7","updated":"2019-08-02 08:30:24.000000000","message":"Done\nSee module \"Other end user impact\"","commit_id":"73a8b3e516246d59c514e46c0c769c3fff88ae76"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"55003dc588607cd3207d89a96cf3b72e995696cb","unresolved":false,"context_lines":[{"line_number":49,"context_line":"For distributed locks we will use OpenStack tooz [2]_ , which supports many"},{"line_number":50,"context_line":"backend drivers, such as Zookeeper, Memcached, Redis, Mysql, etc., and it is"},{"line_number":51,"context_line":"an OpenStack native project. We will support the configuration of tooz backend"},{"line_number":52,"context_line":"drivers in neutron.conf, such as adding [tooz] configuration items."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"The new IPAM allocate ip seqdiag."},{"line_number":55,"context_line":"   .. seqdiag::"}],"source_content_type":"text/x-rst","patch_set":23,"id":"7faddb67_03672fb9","line":52,"range":{"start_line":52,"start_character":33,"end_line":52,"end_character":67},"updated":"2019-08-02 06:08:47.000000000","message":"I\u0027d like to see the config doc of this as a reference.","commit_id":"73a8b3e516246d59c514e46c0c769c3fff88ae76"},{"author":{"_account_id":30200,"name":"qinhaizhong","email":"qinhaizhong01@inspur.com","username":"qinhaizhong01"},"change_message_id":"8b7566a54b2a10b676c64714105d2d2c59669901","unresolved":false,"context_lines":[{"line_number":49,"context_line":"For distributed locks we will use OpenStack tooz [2]_ , which supports many"},{"line_number":50,"context_line":"backend drivers, such as Zookeeper, Memcached, Redis, Mysql, etc., and it is"},{"line_number":51,"context_line":"an OpenStack native project. We will support the configuration of tooz backend"},{"line_number":52,"context_line":"drivers in neutron.conf, such as adding [tooz] configuration items."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"The new IPAM allocate ip seqdiag."},{"line_number":55,"context_line":"   .. seqdiag::"}],"source_content_type":"text/x-rst","patch_set":23,"id":"7faddb67_99287286","line":52,"range":{"start_line":52,"start_character":33,"end_line":52,"end_character":67},"in_reply_to":"7faddb67_03672fb9","updated":"2019-08-02 08:30:24.000000000","message":"Done\nSee module \"Other end user impact\"","commit_id":"73a8b3e516246d59c514e46c0c769c3fff88ae76"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"55003dc588607cd3207d89a96cf3b72e995696cb","unresolved":false,"context_lines":[{"line_number":92,"context_line":""},{"line_number":93,"context_line":"Other end user impact"},{"line_number":94,"context_line":"---------------------"},{"line_number":95,"context_line":"* Operator can configure the backend driver for tooz using the [tooz] configuration"},{"line_number":96,"context_line":"  block in neutron.conf."},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"* Operator can switch to our new ipam driver by setting \"ipam_driver\" in neutron.conf."}],"source_content_type":"text/x-rst","patch_set":23,"id":"7faddb67_03fc0fb3","line":95,"range":{"start_line":95,"start_character":63,"end_line":95,"end_character":83},"updated":"2019-08-02 06:08:47.000000000","message":"Maybe you can add the example blow.","commit_id":"73a8b3e516246d59c514e46c0c769c3fff88ae76"},{"author":{"_account_id":30200,"name":"qinhaizhong","email":"qinhaizhong01@inspur.com","username":"qinhaizhong01"},"change_message_id":"8b7566a54b2a10b676c64714105d2d2c59669901","unresolved":false,"context_lines":[{"line_number":92,"context_line":""},{"line_number":93,"context_line":"Other end user impact"},{"line_number":94,"context_line":"---------------------"},{"line_number":95,"context_line":"* Operator can configure the backend driver for tooz using the [tooz] configuration"},{"line_number":96,"context_line":"  block in neutron.conf."},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"* Operator can switch to our new ipam driver by setting \"ipam_driver\" in neutron.conf."}],"source_content_type":"text/x-rst","patch_set":23,"id":"7faddb67_b9044e16","line":95,"range":{"start_line":95,"start_character":63,"end_line":95,"end_character":83},"in_reply_to":"7faddb67_03fc0fb3","updated":"2019-08-02 08:30:24.000000000","message":"Done","commit_id":"73a8b3e516246d59c514e46c0c769c3fff88ae76"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"55003dc588607cd3207d89a96cf3b72e995696cb","unresolved":false,"context_lines":[{"line_number":95,"context_line":"* Operator can configure the backend driver for tooz using the [tooz] configuration"},{"line_number":96,"context_line":"  block in neutron.conf."},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"* Operator can switch to our new ipam driver by setting \"ipam_driver\" in neutron.conf."},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"Performance Impact"},{"line_number":101,"context_line":"------------------"}],"source_content_type":"text/x-rst","patch_set":23,"id":"7faddb67_6324e360","line":98,"range":{"start_line":98,"start_character":56,"end_line":98,"end_character":86},"updated":"2019-08-02 06:08:47.000000000","message":"ditto","commit_id":"73a8b3e516246d59c514e46c0c769c3fff88ae76"},{"author":{"_account_id":30200,"name":"qinhaizhong","email":"qinhaizhong01@inspur.com","username":"qinhaizhong01"},"change_message_id":"8b7566a54b2a10b676c64714105d2d2c59669901","unresolved":false,"context_lines":[{"line_number":95,"context_line":"* Operator can configure the backend driver for tooz using the [tooz] configuration"},{"line_number":96,"context_line":"  block in neutron.conf."},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"* Operator can switch to our new ipam driver by setting \"ipam_driver\" in neutron.conf."},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"Performance Impact"},{"line_number":101,"context_line":"------------------"}],"source_content_type":"text/x-rst","patch_set":23,"id":"7faddb67_39105e4e","line":98,"range":{"start_line":98,"start_character":56,"end_line":98,"end_character":86},"in_reply_to":"7faddb67_6324e360","updated":"2019-08-02 08:30:24.000000000","message":"Done","commit_id":"73a8b3e516246d59c514e46c0c769c3fff88ae76"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"7cbdd5f0ab70f312650b29593420b906d4b344bc","unresolved":false,"context_lines":[{"line_number":47,"context_line":"to failure."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"For distributed locks we will use OpenStack tooz [2]_ , which supports many"},{"line_number":50,"context_line":"backend drivers, such as Zookeeper, Memcached, Redis, Mysql, etc., and it is"},{"line_number":51,"context_line":"an OpenStack native project. We will support the configuration of tooz backend"},{"line_number":52,"context_line":"drivers in neutron.conf, such as adding [tooz] configuration items."},{"line_number":53,"context_line":""}],"source_content_type":"text/x-rst","patch_set":28,"id":"7faddb67_928b64be","line":50,"range":{"start_line":50,"start_character":25,"end_line":50,"end_character":64},"updated":"2019-08-02 15:22:21.000000000","message":"You add a reference link for this:\nhttps://docs.openstack.org/tooz/latest/user/drivers.html","commit_id":"448601f6bd37a3fcbbd271f251dc2c5e670a72bb"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"7cbdd5f0ab70f312650b29593420b906d4b344bc","unresolved":false,"context_lines":[{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    [tooz]"},{"line_number":101,"context_line":"    # Tooz backend connection string."},{"line_number":102,"context_line":"    backend_url \u003d file://$state_path"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    # Number of seconds between heartbeats for distributed coordination."},{"line_number":105,"context_line":"    heartbeat \u003d 1.0"}],"source_content_type":"text/x-rst","patch_set":28,"id":"7faddb67_d200fc36","line":102,"range":{"start_line":102,"start_character":18,"end_line":102,"end_character":22},"updated":"2019-08-02 15:22:21.000000000","message":"I don\u0027t think this is a good example, looks not so much distributed. This file store should be a shared FS? I see some words \"with huge limitations\" from the tooz doc:\n\n\"\"\"\nThe file driver is a simple driver based on files and directories. It implements a lock based on POSIX or Window file level locking mechanism and some basic group primitives (with huge limitations).\n\"\"\"","commit_id":"448601f6bd37a3fcbbd271f251dc2c5e670a72bb"}]}
