)]}'
{"id":"openstack%2Fovsdbapp~795789","triplet_id":"openstack%2Fovsdbapp~master~Ib4478ba091ed2c21f291a680d0f57322b7668536","project":"openstack/ovsdbapp","branch":"master","topic":"bug/1929446","hashtags":[],"change_id":"Ib4478ba091ed2c21f291a680d0f57322b7668536","subject":"always use real threads when polling ovs.","status":"ABANDONED","created":"2021-06-10 14:17:06.000000000","updated":"2021-11-18 15:17:08.000000000","total_comment_count":0,"unresolved_comment_count":0,"has_review_started":true,"meta_rev_id":"23b2cb088780185420c588fd5fb241531a3a78a0","_number":795789,"virtual_id_number":795789,"owner":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"actions":{},"labels":{"Verified":{"recommended":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},{"tag":"autogenerated:zuul:check","value":1,"date":"2021-06-10 17:53:31.000000000","permitted_voting_range":{"min":-2,"max":2},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-2":"Fails","-1":"Doesn\u0027t seem to work"," 0":"No score","+1":"Works for me","+2":"Verified"},"description":"","value":1,"default_value":0,"optional":true},"Code-Review":{"disliked":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"all":[{"value":-1,"date":"2021-06-11 05:30:23.000000000","permitted_voting_range":{"min":-2,"max":2},"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-2":"Do not merge","-1":"This patch needs further work before it can be merged"," 0":"No score","+1":"Looks good to me, but someone else must approve","+2":"Looks good to me (core reviewer)"},"description":"","value":-1,"default_value":0,"optional":true},"Workflow":{"all":[{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-1":"Work in progress"," 0":"Ready for reviews","+1":"Approved"},"description":"","default_value":0,"optional":true},"Review-Priority":{"all":[{"value":0,"permitted_voting_range":{"min":-1,"max":2},"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-1":"Branch Freeze"," 0":"No Priority","+1":"Important Change","+2":"Gate Blocker Fix / Urgent Change"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"REVIEWER":[{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"CC":[{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2021-06-10 14:46:14.000000000","updated_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"reviewer":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"state":"REVIEWER"},{"updated":"2021-06-10 15:39:44.000000000","updated_by":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"reviewer":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"state":"CC"},{"updated":"2021-06-10 15:44:07.000000000","updated_by":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"reviewer":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"state":"REVIEWER"}],"messages":[{"id":"fe4ce8b3d6900d152f6a70a90fbc4c2627feeab9","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"date":"2021-06-10 14:17:06.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"ce88954592c56546fa42d2fd66cd830d7e7ad786","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2021-06-10 14:46:14.000000000","message":"Patch Set 1: Verified-1\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttps://docs.opendev.org/opendev/infra-manual/latest/developers.html#automated-testing\n\n\n- openstack-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/ddd6ddba81584d70aba0580436b6c831 : SUCCESS in 5m 25s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/b8d380b399574976bfcfaed4d7827fc4 : SUCCESS in 5m 21s\n- openstack-tox-py36 https://zuul.opendev.org/t/openstack/build/35cccc2a10ab46c2bfca489f32bd103e : SUCCESS in 4m 24s\n- openstack-tox-py38 https://zuul.opendev.org/t/openstack/build/60422d5034e547148755b23c2899be6e : SUCCESS in 3m 47s\n- openstack-tox-py39 https://zuul.opendev.org/t/openstack/build/48e5b0da8c114ea39eed4af3f707c2cb : SUCCESS in 4m 18s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/6385479f22744d7dacc5c78bbb6409ac : SUCCESS in 6m 01s\n- openstack-tox-functional https://zuul.opendev.org/t/openstack/build/173beb54a0724d368d6a91eb95b97b40 : SUCCESS in 6m 59s\n- ovsdbapp-neutron-ovn-tempest-ovs-release https://zuul.opendev.org/t/openstack/build/1d60f3ccf1314fe3869101e65e83f7fa : FAILURE in 24m 55s","accounts_in_message":[],"_revision_number":1},{"id":"e9bf539dd817325090ad982b45054d7bf57d56ee","author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"date":"2021-06-10 15:39:44.000000000","message":"Patch Set 1:\n\nI don\u0027t know if this is going to be the fix for the connection problems in Nova, but at least in Neutron this is working: https://review.opendev.org/c/openstack/neutron/+/795820/","accounts_in_message":[],"_revision_number":1},{"id":"d85f1e998883a89e9b4966825c92da4fe5a54dce","author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"date":"2021-06-10 15:44:07.000000000","message":"Patch Set 1: Code-Review-1\n\nI don\u0027t think this is the fix. As dicsussed on _SelectSelect is used, and since it is monkeypatched should yield. The get_system_poll() call is the only thing that returns an actual unpatched poll() implementation, and it is used only when calling open()/connect() in python-ovs which would match up to when the issue is showing up in nova.","accounts_in_message":[],"_revision_number":1},{"id":"457fd921b3279b0e4c6f23ca310b928f00015214","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"date":"2021-06-10 16:47:10.000000000","message":"Uploaded patch set 2.","accounts_in_message":[],"_revision_number":2},{"id":"879ab6d70464fa551c5b5ec8b114afb36bd423d5","author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"date":"2021-06-10 16:49:33.000000000","message":"Patch Set 2:\n\n\u003e Patch Set 1: Code-Review-1\n\u003e \n\u003e I don\u0027t think this is the fix. As dicsussed on _SelectSelect is used, and since it is monkeypatched should yield. The get_system_poll() call is the only thing that returns an actual unpatched poll() implementation, and it is used only when calling open()/connect() in python-ovs which would match up to when the issue is showing up in nova.\n\nyes you are proably correct im going to try an monkey patch that form os-vif to have get_system_poll return _SelectSelect","accounts_in_message":[],"_revision_number":2},{"id":"2957459f9577b855f0cd483610fe2c510a0523db","author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"date":"2021-06-10 17:06:37.000000000","message":"Patch Set 2:\n\n\u003e Patch Set 2:\n\u003e \n\u003e \u003e Patch Set 1: Code-Review-1\n\u003e \u003e \n\u003e \u003e I don\u0027t think this is the fix. As dicsussed on _SelectSelect is used, and since it is monkeypatched should yield. The get_system_poll() call is the only thing that returns an actual unpatched poll() implementation, and it is used only when calling open()/connect() in python-ovs which would match up to when the issue is showing up in nova.\n\u003e \n\u003e yes you are proably correct im going to try an monkey patch that form os-vif to have get_system_poll return _SelectSelect\n\nI\u0027m wondering if that could help Neutron to avoid the recurrent hangs and timeouts we see in the OVS connection.","accounts_in_message":[],"_revision_number":2},{"id":"30e0b18bd989bcc340cc5430efc07abec94c159f","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2021-06-10 17:53:31.000000000","message":"Patch Set 2: Verified+1\n\nBuild succeeded (check pipeline).\n\n- openstack-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/fbedabc5a75c446ba025ae7feee03d17 : SUCCESS in 4m 29s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/dfae107e36cf4269ad97667384e67254 : SUCCESS in 4m 31s\n- openstack-tox-py36 https://zuul.opendev.org/t/openstack/build/3cc39a60973c403bbb92ca5fc93e3f16 : SUCCESS in 4m 19s\n- openstack-tox-py38 https://zuul.opendev.org/t/openstack/build/ac5779e5cd0b45068dc7eb8559059f11 : SUCCESS in 4m 25s\n- openstack-tox-py39 https://zuul.opendev.org/t/openstack/build/30e45d0d697f45f3b6a9347a96a5bb8d : SUCCESS in 4m 16s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/f78878131a7140a782b3c756d8bb47d5 : SUCCESS in 6m 12s\n- openstack-tox-functional https://zuul.opendev.org/t/openstack/build/38954867fe294ef692464590b28f26f6 : SUCCESS in 6m 41s\n- ovsdbapp-neutron-ovn-tempest-ovs-release https://zuul.opendev.org/t/openstack/build/ad36e1fa40cd4b1aa962c1e2a8389f25 : SUCCESS in 1h 01m 49s","accounts_in_message":[],"_revision_number":2},{"id":"e47d54412a49db3b2419ca456cd8f19b359b83be","author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"date":"2021-06-10 19:03:09.000000000","message":"Patch Set 2:\n\njust looking at the logs form the tempest run\nthe reconnect are not present in the n-cpu log with this applied","accounts_in_message":[],"_revision_number":2},{"id":"34fe8fcdac2b532ab80dec04a15c7317d05c95f2","author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"date":"2021-06-10 19:19:38.000000000","message":"Patch Set 2:\n\n\u003e Patch Set 1: Code-Review-1\n\u003e \n\u003e I don\u0027t think this is the fix. As dicsussed on _SelectSelect is used, and since it is monkeypatched should yield. The get_system_poll() call is the only thing that returns an actual unpatched poll() implementation, and it is used only when calling open()/connect() in python-ovs which would match up to when the issue is showing up in nova.\n\nby the way provided those  open()/connect() in python-ovs  only happne in the new pthread this patch creates that will not block nova or neutron.\n\nnova/osvif never calls start or stop and we only enque transacation to be executed by the other thread. so i think just using a real thread actully will fix it for client libs.","accounts_in_message":[],"_revision_number":2},{"id":"3645fc0545de9fd38ab80139534b0fa0f4477b94","author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"date":"2021-06-10 19:23:36.000000000","message":"Patch Set 2:\n\n\u003e Patch Set 2:\n\u003e \n\u003e \u003e Patch Set 1: Code-Review-1\n\u003e \u003e \n\u003e \u003e I don\u0027t think this is the fix. As dicsussed on _SelectSelect is used, and since it is monkeypatched should yield. The get_system_poll() call is the only thing that returns an actual unpatched poll() implementation, and it is used only when calling open()/connect() in python-ovs which would match up to when the issue is showing up in nova.\n\u003e \n\u003e by the way provided those  open()/connect() in python-ovs  only happne in the new pthread this patch creates that will not block nova or neutron.\n\u003e \n\u003e nova/osvif never calls start or stop and we only enque transacation to be executed by the other thread. so i think just using a real thread actully will fix it for client libs.\n\nYou call open/connect via calling a transaction that calls idl.run(), which steps through the reconnect.py state machine, which will reconnect as needed.","accounts_in_message":[],"_revision_number":2},{"id":"cead8b6913d32a13d0a7b298c711634ed0205bc7","author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"date":"2021-06-10 19:36:17.000000000","message":"Patch Set 2:\n\novsdbapp uses threading.Threads in multiple places, with (most likely eventlet-patched by neutron) queues communicating between them, and locks that are held while executing transactions, etc. I\u0027m just not at all comfortable with un-patching one of the threads.\n\nI\u0027m not saying it\u0027s not possible that I\u0027m worrying unnecessarily, but I am going to need a lot of convincing that it\u0027s the only way to handle this.","accounts_in_message":[],"_revision_number":2},{"id":"7d9a991a13b918e7cb54d49082885040c0e2d3a3","author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"date":"2021-06-10 19:46:51.000000000","message":"Patch Set 2:\n\n\u003e Patch Set 2:\n\u003e \n\u003e \u003e Patch Set 2:\n\u003e \u003e \n\u003e \u003e \u003e Patch Set 1: Code-Review-1\n\u003e \u003e \u003e \n\u003e \u003e \u003e I don\u0027t think this is the fix. As dicsussed on _SelectSelect is used, and since it is monkeypatched should yield. The get_system_poll() call is the only thing that returns an actual unpatched poll() implementation, and it is used only when calling open()/connect() in python-ovs which would match up to when the issue is showing up in nova.\n\u003e \u003e \n\u003e \u003e by the way provided those  open()/connect() in python-ovs  only happne in the new pthread this patch creates that will not block nova or neutron.\n\u003e \u003e \n\u003e \u003e nova/osvif never calls start or stop and we only enque transacation to be executed by the other thread. so i think just using a real thread actully will fix it for client libs.\n\u003e \n\u003e You call open/connect via calling a transaction that calls idl.run(), which steps through the reconnect.py state machine, which will reconnect as needed.\n\ni dont think we call idl.run directly \n\nwe crate transaction and add thing too them\nhttps://github.com/openstack/os-vif/blob/e93736711920afe64a850f564dddefbd704975cd/vif_plug_ovs/ovsdb/ovsdb_lib.py#L113\n\nthere are no invokation of idl.run in os-vif\nhttps://codesearch.opendev.org/?q\u003drun\u0026i\u003dnope\u0026files\u003d\u0026excludeFiles\u003d\u0026repos\u003dopenstack/os-vif\n\ni tought we enqued the transaction in the connection via\nqueue_txn https://opendev.org/openstack/ovsdbapp/src/branch/master/ovsdbapp/backend/ovs_idl/connection.py#L150\n\nand then the connect trhead rand it in run \nhttps://opendev.org/openstack/ovsdbapp/src/branch/master/ovsdbapp/backend/ovs_idl/connection.py#L108\n\nthat is how commiting a transaction works correct\n\nhttps://opendev.org/openstack/ovsdbapp/src/branch/master/ovsdbapp/backend/ovs_idl/transaction.py#L52-L66\n\nso we shoudl never need to call  idl.run() on the eventlet thread it will only execute on the ovadbapp thread so if it calls the real poll that is ok because it wont block the eventlet thread where neutron and nova are running unless im missign something?","accounts_in_message":[],"_revision_number":2},{"id":"f194bf26fc4df2695ec26b6138a838753385352d","author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"date":"2021-06-10 20:15:38.000000000","message":"Patch Set 2:\n\n\u003e Patch Set 2:\n\u003e \n\u003e \u003e Patch Set 2:\n\u003e \u003e \n\u003e \u003e \u003e Patch Set 2:\n\u003e \u003e \u003e \n\u003e \u003e \u003e \u003e Patch Set 1: Code-Review-1\n\u003e \u003e \u003e \u003e \n\u003e \u003e \u003e \u003e I don\u0027t think this is the fix. As dicsussed on _SelectSelect is used, and since it is monkeypatched should yield. The get_system_poll() call is the only thing that returns an actual unpatched poll() implementation, and it is used only when calling open()/connect() in python-ovs which would match up to when the issue is showing up in nova.\n\u003e \u003e \u003e \n\u003e \u003e \u003e by the way provided those  open()/connect() in python-ovs  only happne in the new pthread this patch creates that will not block nova or neutron.\n\u003e \u003e \u003e \n\u003e \u003e \u003e nova/osvif never calls start or stop and we only enque transacation to be executed by the other thread. so i think just using a real thread actully will fix it for client libs.\n\u003e \u003e \n\u003e \u003e You call open/connect via calling a transaction that calls idl.run(), which steps through the reconnect.py state machine, which will reconnect as needed.\n\u003e \n\u003e i dont think we call idl.run directly \n\u003e \n\u003e we crate transaction and add thing too them\n\u003e https://github.com/openstack/os-vif/blob/e93736711920afe64a850f564dddefbd704975cd/vif_plug_ovs/ovsdb/ovsdb_lib.py#L113\n\u003e \n\u003e there are no invokation of idl.run in os-vif\n\u003e https://codesearch.opendev.org/?q\u003drun\u0026i\u003dnope\u0026files\u003d\u0026excludeFiles\u003d\u0026repos\u003dopenstack/os-vif\n\u003e \n\u003e i tought we enqued the transaction in the connection via\n\u003e queue_txn https://opendev.org/openstack/ovsdbapp/src/branch/master/ovsdbapp/backend/ovs_idl/connection.py#L150\n\u003e \n\u003e and then the connect trhead rand it in run \n\u003e https://opendev.org/openstack/ovsdbapp/src/branch/master/ovsdbapp/backend/ovs_idl/connection.py#L108\n\u003e \n\u003e that is how commiting a transaction works correct\n\u003e \n\u003e https://opendev.org/openstack/ovsdbapp/src/branch/master/ovsdbapp/backend/ovs_idl/transaction.py#L52-L66\n\u003e \n\u003e so we shoudl never need to call  idl.run() on the eventlet thread it will only execute on the ovadbapp thread so if it calls the real poll that is ok because it wont block the eventlet thread where neutron and nova are running unless im missing something?\n\nThere is also the RowEventHandler thread, which will be a monkeypatched thread. When handling events in that thread, ml2/ovn calls sometimes calls back into the api code and will queue txns from that thread as well. Yes, idl.run() should always be called by the Connection thread.\n\nEverything I\u0027ve ever read on eventlet and threads warned against mixing native and greenthreads. Just one example: https://specs.openstack.org/openstack/openstack-specs/specs/eventlet-best-practices.html which specifically uses mixing greenthreads/native threads as undefined and a bad idea and using monkey patching with threading\u003dFalse as a bad idea.\n\nMaybe this is the exception where it\u0027s totally fine. But if the problem is that python-ovs is using _SelectSelect in some cases and un-monkeypatched select.poll() in others, it seems like that is the bug we should be fixing. un-monkeypatching one of the threads in use seems like doubling down on the python-ovs bug to me.","accounts_in_message":[],"_revision_number":2},{"id":"696a632a255adb14616f379db12f2dda8626ce2e","author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"date":"2021-06-11 05:30:23.000000000","message":"Patch Set 2: Code-Review-1\n\nOk. I did some (a lot of) research. The issue in ovs was introduced here: https://github.com/openvswitch/ovs/commit/c1aa16d191d267d76ce1d1459fe9ed6ab93e1f54\n\nRead the commit message for the full story, but essentially select() would set POLLOUT for a socket that failed a connect() where poll() would not. The solution merged was to use system poll() in check_connection_completion() because you couldn\u0027t determine that the socket was going to error out before writing to it when using select(). This of course blocks in the case of using eventlet.\n\nBut, you *can* determine whether the socket is in an error state after connect(). According to the connect(2) manpage:\n\n  It is possible to select(2) or poll(2) for completion by selecting the socket for writing.  After select(2) indicates  writability,  use  getsockopt(2)  to  read  the SO_ERROR option at level SOL_SOCKET to determine whether connect() completed successfully (SO_ERROR is zero) or unsuccessfully (SO_ERROR is one of the usual error codes listed here, explaining the reason for the failure).\n\nThis is a very simple patch to python-ovs which I will submit in 8 hours or so after I sleep.","accounts_in_message":[],"_revision_number":2},{"id":"3eca489243fd5cc0797675e24e8f2a088bd0c155","author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"date":"2021-06-11 13:59:39.000000000","message":"Patch Set 2:\n\nOVS patch submitted for review here: https://patchwork.ozlabs.org/project/openvswitch/patch/20210611135339.443741-1-twilson@redhat.com/\n\nIf we didn\u0027t want to rely on the OVS code, we could add the patched check_connection_completion() to our own Stream subclasses, similar to what is done here: https://review.opendev.org/c/openstack/neutron/+/794892/1/neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/impl_idl_ovn.py#75","accounts_in_message":[],"_revision_number":2},{"id":"595e28835e98fabdc0d849c517508bc4b9d3ca8f","author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"date":"2021-06-11 14:11:58.000000000","message":"Patch Set 2:\n\nmake that v2 of the patch :p https://patchwork.ozlabs.org/project/openvswitch/patch/20210611140902.458647-1-twilson@redhat.com/","accounts_in_message":[],"_revision_number":2},{"id":"4d8cd153ddf01c9491355848b4af444b5d3341c3","author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"date":"2021-06-11 14:35:05.000000000","message":"Patch Set 2:\n\n*sigh* v3 https://patchwork.ozlabs.org/project/openvswitch/patch/20210611142923.474384-1-twilson@redhat.com/\n\npartial reverts are tricky. :p Also gerrit \u003e mailing lists for review. that is all.","accounts_in_message":[],"_revision_number":2},{"id":"b7f359d28bd6c638d91b860b86a2de64d772c2b9","author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"date":"2021-09-08 07:50:31.000000000","message":"Patch Set 2:\n\nAre we going to go this way?","accounts_in_message":[],"_revision_number":2},{"id":"23b2cb088780185420c588fd5fb241531a3a78a0","tag":"autogenerated:gerrit:abandon","author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"date":"2021-11-18 15:17:08.000000000","message":"Abandoned\n\nThis should be fixed in upstream python-ovs by adding a cooperative_yield() method that can be overriden. ovsdbapp may go ahead and also add a default cooperative_yield() that is just time.sleep(0).","accounts_in_message":[],"_revision_number":2}],"current_revision_number":2,"current_revision":"755f17cdbc9be7075ffe5a17ee1869944e03aafe","revisions":{"627343eba86d67552011fa8413f30a3775876a16":{"kind":"REWORK","_number":1,"created":"2021-06-10 14:17:06.000000000","uploader":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"ref":"refs/changes/89/795789/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/ovsdbapp","ref":"refs/changes/89/795789/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/ovsdbapp refs/changes/89/795789/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/ovsdbapp refs/changes/89/795789/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/ovsdbapp refs/changes/89/795789/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/ovsdbapp refs/changes/89/795789/1"}}},"commit":{"parents":[{"commit":"5d24facd36ca06b1f5f793c834da2efa4fa3a508","subject":"Merge \"Actually close the connection in Connection.stop()\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ovsdbapp/commit/5d24facd36ca06b1f5f793c834da2efa4fa3a508"}]}],"author":{"name":"Sean Mooney","email":"work@seanmooney.info","date":"2021-06-10 14:14:37.000000000","tz":60},"committer":{"name":"Sean Mooney","email":"work@seanmooney.info","date":"2021-06-10 14:17:03.000000000","tz":60},"subject":"always use real threads when polling ovs.","message":"always use real threads when polling ovs.\n\nThis change ensure that if ovsdbapp is used from\nan application that use eventlets to monkeypatch the\nstandard lib treading, it will always use the unpatched\nmodule to interact with threading.\n\nCloses-Bug: #1929446\nChange-Id: Ib4478ba091ed2c21f291a680d0f57322b7668536\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ovsdbapp/commit/627343eba86d67552011fa8413f30a3775876a16"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ovsdbapp/commit/627343eba86d67552011fa8413f30a3775876a16"}]},"branch":"refs/heads/master"},"755f17cdbc9be7075ffe5a17ee1869944e03aafe":{"kind":"REWORK","_number":2,"created":"2021-06-10 16:47:10.000000000","uploader":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"ref":"refs/changes/89/795789/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/ovsdbapp","ref":"refs/changes/89/795789/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/ovsdbapp refs/changes/89/795789/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/ovsdbapp refs/changes/89/795789/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/ovsdbapp refs/changes/89/795789/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/ovsdbapp refs/changes/89/795789/2"}}},"commit":{"parents":[{"commit":"5d24facd36ca06b1f5f793c834da2efa4fa3a508","subject":"Merge \"Actually close the connection in Connection.stop()\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ovsdbapp/commit/5d24facd36ca06b1f5f793c834da2efa4fa3a508"}]}],"author":{"name":"Sean Mooney","email":"work@seanmooney.info","date":"2021-06-10 14:14:37.000000000","tz":60},"committer":{"name":"Sean Mooney","email":"work@seanmooney.info","date":"2021-06-10 16:46:52.000000000","tz":60},"subject":"always use real threads when polling ovs.","message":"always use real threads when polling ovs.\n\nThis change ensure that if ovsdbapp is used from\nan application that use eventlets to monkeypatch the\nstandard lib treading, it will always use the unpatched\nmodule to interact with threading.\n\nCloses-Bug: #1929446\nChange-Id: Ib4478ba091ed2c21f291a680d0f57322b7668536\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ovsdbapp/commit/755f17cdbc9be7075ffe5a17ee1869944e03aafe"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ovsdbapp/commit/755f17cdbc9be7075ffe5a17ee1869944e03aafe"}]},"branch":"refs/heads/master"}},"requirements":[],"submit_records":[],"submit_requirements":[]}
