)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"fd6001b6053cc389b1ead4cdbe96a25fc3733082","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"cc1a1abb_47d14bc1","updated":"2022-11-23 18:39:42.000000000","message":"Anton: BTW, do you have a way to easily reproduce this issue?","commit_id":"318e7d6da5c8f9212b6bdfca1981a0c5cd27c397"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"e13f74ee1ae405649ecc919052dd94ee690d6c48","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"674c57e6_3849591b","updated":"2022-11-23 18:11:06.000000000","message":"Hey, Anton. Thanks for sending this, but I think this was an ovs bug that should be fixed. In any case, we can\u0027t do sleeps in this part of the code or it\u0027ll also block things like handling echo requests or reconnecting to ovsdb-server if there\u0027s a problem.\n\nCan I get you to verify that the version of OVS that you\u0027re seeing this on contains the linked fix? If it is, then we might still need to come up with some kind of solution, just not one that involves sleep().","commit_id":"318e7d6da5c8f9212b6bdfca1981a0c5cd27c397"},{"author":{"_account_id":33871,"name":"Anton Vazhnetsov","display_name":"Anton Vazhnetsov","email":"dragen15051@gmail.com","username":"0x5b"},"change_message_id":"c52639a012333d331efff0395fd1c2b7b15a4a15","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"3d097b8b_958c089b","in_reply_to":"5f52912d_a16842e6","updated":"2022-11-28 09:18:23.000000000","message":"Hi,\nMost likely you received a letter, but I will duplicate it here:\nhttps://mail.openvswitch.org/pipermail/ovs-dev/2022-November/399720.html","commit_id":"318e7d6da5c8f9212b6bdfca1981a0c5cd27c397"},{"author":{"_account_id":33871,"name":"Anton Vazhnetsov","display_name":"Anton Vazhnetsov","email":"dragen15051@gmail.com","username":"0x5b"},"change_message_id":"40c6a16e4c2db7d660637f30030facc3177b1cf9","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"8c866e86_0cc89b05","in_reply_to":"674c57e6_3849591b","updated":"2022-11-23 18:26:48.000000000","message":"Hi, Terry. Thanks for you comments.\nIf you mean python-ovs version, so it is 2.13.5, while ovsdb-server was running 2.17.3. As I see (https://github.com/openvswitch/ovs/commit/70f6efa41cf72288c53a9a1f2bfee4f661d8097e) in our version your fix is present.","commit_id":"318e7d6da5c8f9212b6bdfca1981a0c5cd27c397"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"cbb1a3fdb5012f659c2096ba9953edb231b4e055","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"e3ee9921_37cd943d","in_reply_to":"8c866e86_0cc89b05","updated":"2022-11-23 18:37:50.000000000","message":"Hmm, well that is unfortunate. Ultimately, if I understand correctly from previous conversations with ovs devs, OVS is supposed to always send the update messages to clients *before* it sends the transaction response indicating that the transaction succeeded. So if there is a case where on a single server we send a create and that row does not exist in our in-memory db when we have a txn status of SUCCESS, then there is a bug.\n\nIt\u0027s entirely possible that I\u0027m remembering that conversation incorrectly, so I\u0027ll try to verify that. But I\u0027m almost completely sure that this is something we need to fix at the ovs or python-ovs level.\n\nI\u0027ve never tried mixing python-ovs of an older version with a newer ovsdb-server either. Also python-ovs 2.17.1+ is nice because it supports update3/monitor_cond_since. Just sayin\u0027. ;)","commit_id":"318e7d6da5c8f9212b6bdfca1981a0c5cd27c397"},{"author":{"_account_id":33871,"name":"Anton Vazhnetsov","display_name":"Anton Vazhnetsov","email":"dragen15051@gmail.com","username":"0x5b"},"change_message_id":"afe244fb49b1d6a6c435755b904a5799a628dbde","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"5f52912d_a16842e6","in_reply_to":"cc1a1abb_47d14bc1","updated":"2022-11-23 19:15:58.000000000","message":"OK, we will try to prepare a script tomorrow with which you can reproduce this problem.","commit_id":"318e7d6da5c8f9212b6bdfca1981a0c5cd27c397"}],"ovsdbapp/backend/ovs_idl/command.py":[{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"a03c0ea3870b2b9b208cc68637bdde8c296bf63a","unresolved":true,"context_lines":[{"line_number":13,"context_line":"#    under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"import collections"},{"line_number":16,"context_line":"import time"},{"line_number":17,"context_line":"from collections import abc"},{"line_number":18,"context_line":"import logging"},{"line_number":19,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"4d36e4f4_7aa81d99","line":16,"updated":"2022-11-23 17:59:34.000000000","message":"I think the pep8 job will fail here, the imports should be ordered alphabetically","commit_id":"318e7d6da5c8f9212b6bdfca1981a0c5cd27c397"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"a03c0ea3870b2b9b208cc68637bdde8c296bf63a","unresolved":true,"context_lines":[{"line_number":109,"context_line":"                    if stop and time.time() \u003e stop:"},{"line_number":110,"context_line":"                        raise RuntimeError(msg) from e"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"                    time.sleep(1)"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"        self.result \u003d rowview.RowView(row)"},{"line_number":115,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"6311462d_64ac4755","line":112,"updated":"2022-11-23 17:59:34.000000000","message":"The code overall looks good to me. I\u0027m just wondering if we should implement the active waiting on lower levels, in general when transaction happens. So we\u0027d return the transaction only after the new state (create, update or delete) has been reflected.","commit_id":"318e7d6da5c8f9212b6bdfca1981a0c5cd27c397"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"e13f74ee1ae405649ecc919052dd94ee690d6c48","unresolved":true,"context_lines":[{"line_number":109,"context_line":"                    if stop and time.time() \u003e stop:"},{"line_number":110,"context_line":"                        raise RuntimeError(msg) from e"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"                    time.sleep(1)"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"        self.result \u003d rowview.RowView(row)"},{"line_number":115,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"8688dc81_ab0976e9","line":112,"updated":"2022-11-23 18:11:06.000000000","message":"We can\u0027t introduce a sleep in the transaction processing pipeline, it will block even things like handling echo requests from the ovsdb-server.\n\nNeutron ran into this issue here [1] and worked around it by just catching the KeyError. Ultimately, I believe the problem was in ovs and is fixed here [2].\n\n[1] https://review.opendev.org/c/openstack/neutron/+/806938/1/neutron/plugins/ml2/drivers/ovn/mech_driver/mech_driver.py\n[2] https://github.com/openvswitch/ovs/commit/34fbdc41084c16f855efa9c56086b03644408b7d","commit_id":"318e7d6da5c8f9212b6bdfca1981a0c5cd27c397"}]}
