There appears to be more to it. With this patch applied Neutron will still fail to start with the OVN driver when OVS 2.17 is installed. With this instrumentation of db/idl.py: diff --git a/python/ovs/db/idl.py b/python/ovs/db/idl.py index 4ecdcaa19..d676a39b3 100644 --- a/python/ovs/db/idl.py +++ b/python/ovs/db/idl.py @@ -357,6 +357,7 @@ class Idl(object): """ ack_all = self.last_id == str(uuid.UUID(int=0)) for table in self.tables.values(): + logging.info('HELLO ovs.db {}'.format(table.condition)) if ack_all: table.condition.request() table.condition.ack() I see: 2022-04-04 16:32:29.270 103953 INFO neutron.service [req-07913206-4206-49fc-bbfc-710c0e8f992a - - - - -] Neutron service started, listening on 0.0.0.0:9676 2022-04-04 16:32:29.296 103961 INFO neutron.plugins.ml2.drivers.ovn.mech_driver.ovsdb.impl_idl_ovn [req-d6dc8c25-6296-43e4-9858-a93274def15d - - - - -] Getting OvsdbNbOvnIdl for WorkerService with retry 2022-04-04 16:32:29.297 103962 INFO neutron.plugins.ml2.drivers.ovn.mech_driver.ovsdb.impl_idl_ovn [req-9d84dcb7-7b4f-4fad-8f87-c6b5238f7630 - - - - -] Getting OvsdbNbOvnIdl for WorkerService with retry 2022-04-04 16:32:29.297 103963 INFO neutron.plugins.ml2.drivers.ovn.mech_driver.ovsdb.impl_idl_ovn [req-3fa2a398-db18-4319-9f3d-6067b55d1699 - - - - -] Getting OvsdbNbOvnIdl for WorkerService with retry 2022-04-04 16:32:29.299 103964 INFO neutron.plugins.ml2.drivers.ovn.mech_driver.ovsdb.impl_idl_ovn [req-2821d81a-304f-491e-a053-ba845f5925cf - - - - -] Getting OvsdbNbOvnIdl for WorkerService with retry 2022-04-04 16:32:29.306 103953 INFO root [req-07913206-4206-49fc-bbfc-710c0e8f992a - - - - -] HELLO ovs.db [['name', '==', 'neutron_pg_drop']] 2022-04-04 16:32:29.306 103953 ERROR neutron.plugins.ml2.drivers.ovn.mech_driver.ovsdb.impl_idl_ovn [req-07913206-4206-49fc-bbfc-710c0e8f992a - - - - -] OVS database connection to OVN_Northbound failed with error: ''list' object has no attribute 'request''. Verify that the OVS and OVN services are available and that the 'ovn_nb_connection' and 'ovn_sb_connection' configuration options are correct.: AttributeError: 'list' object has no attribute 'request' 2022-04-04 16:32:29.306 103953 ERROR neutron.plugins.ml2.drivers.ovn.mech_driver.ovsdb.impl_idl_ovn Traceback (most recent call last): 2022-04-04 16:32:29.306 103953 ERROR neutron.plugins.ml2.drivers.ovn.mech_driver.ovsdb.impl_idl_ovn File "/usr/lib/python3/dist-packages/neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/impl_idl_ovn.py", line 127, in start_connection 2022-04-04 16:32:29.306 103953 ERROR neutron.plugins.ml2.drivers.ovn.mech_driver.ovsdb.impl_idl_ovn self.ovsdb_connection.start() 2022-04-04 16:32:29.306 103953 ERROR neutron.plugins.ml2.drivers.ovn.mech_driver.ovsdb.impl_idl_ovn File "/usr/lib/python3/dist-packages/ovsdbapp/backend/ovs_idl/connection.py", line 83, in start 2022-04-04 16:32:29.306 103953 ERROR neutron.plugins.ml2.drivers.ovn.mech_driver.ovsdb.impl_idl_ovn idlutils.wait_for_change(self.idl, self.timeout) 2022-04-04 16:32:29.306 103953 ERROR neutron.plugins.ml2.drivers.ovn.mech_driver.ovsdb.impl_idl_ovn File "/usr/lib/python3/dist-packages/neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/impl_idl_ovn.py", line 53, in wait_for_change 2022-04-04 16:32:29.306 103953 ERROR neutron.plugins.ml2.drivers.ovn.mech_driver.ovsdb.impl_idl_ovn while idl_.change_seqno == seqno and not idl_.run(): 2022-04-04 16:32:29.306 103953 ERROR neutron.plugins.ml2.drivers.ovn.mech_driver.ovsdb.impl_idl_ovn File "/usr/lib/python3/dist-packages/ovs/db/idl.py", line 412, in run 2022-04-04 16:32:29.306 103953 ERROR neutron.plugins.ml2.drivers.ovn.mech_driver.ovsdb.impl_idl_ovn self.restart_fsm() 2022-04-04 16:32:29.306 103953 ERROR neutron.plugins.ml2.drivers.ovn.mech_driver.ovsdb.impl_idl_ovn File "/usr/lib/python3/dist-packages/ovs/db/idl.py", line 374, in restart_fsm 2022-04-04 16:32:29.306 103953 ERROR neutron.plugins.ml2.drivers.ovn.mech_driver.ovsdb.impl_idl_ovn self.sync_conditions() 2022-04-04 16:32:29.306 103953 ERROR neutron.plugins.ml2.drivers.ovn.mech_driver.ovsdb.impl_idl_ovn File "/usr/lib/python3/dist-packages/ovs/db/idl.py", line 363, in sync_conditions 2022-04-04 16:32:29.306 103953 ERROR neutron.plugins.ml2.drivers.ovn.mech_driver.ovsdb.impl_idl_ovn table.condition.request() 2022-04-04 16:32:29.306 103953 ERROR neutron.plugins.ml2.drivers.ovn.mech_driver.ovsdb.impl_idl_ovn AttributeError: 'list' object has no attribute 'request' 2022-04-04 16:32:29.306 103953 ERROR neutron.plugins.ml2.drivers.ovn.mech_driver.ovsdb.impl_idl_ovn 2022-04-04 16:32:29.308 103953 CRITICAL neutron [req-07913206-4206-49fc-bbfc-710c0e8f992a - - - - -] Unhandled error: neutron_lib.callbacks.exceptions.CallbackFailure: Callback neutron.plugins.ml2.drivers.ovn.mech_driver.mech_driver.OVNMechanismDriver.pre_fork_initialize-198156 failed with "OVS database connection to OVN_Northbound failed with error: ''list' object has no attribute 'request''. Verify that the OVS and OVN services are available and that the 'ovn_nb_connection' and 'ovn_sb_connection' configuration options are correct." 2022-04-04 16:32:29.308 103953 ERROR neutron Traceback (most recent call last): 2022-04-04 16:32:29.308 103953 ERROR neutron File "/usr/bin/neutron-server", line 10, in 2022-04-04 16:32:29.308 103953 ERROR neutron sys.exit(main()) 2022-04-04 16:32:29.308 103953 ERROR neutron File "/usr/lib/python3/dist-packages/neutron/cmd/eventlet/server/__init__.py", line 19, in main 2022-04-04 16:32:29.308 103953 ERROR neutron server.boot_server(wsgi_eventlet.eventlet_wsgi_server) 2022-04-04 16:32:29.308 103953 ERROR neutron File "/usr/lib/python3/dist-packages/neutron/server/__init__.py", line 68, in boot_server 2022-04-04 16:32:29.308 103953 ERROR neutron server_func() 2022-04-04 16:32:29.308 103953 ERROR neutron File "/usr/lib/python3/dist-packages/neutron/server/wsgi_eventlet.py", line 24, in eventlet_wsgi_server 2022-04-04 16:32:29.308 103953 ERROR neutron neutron_api = service.serve_wsgi(service.NeutronApiService) 2022-04-04 16:32:29.308 103953 ERROR neutron File "/usr/lib/python3/dist-packages/neutron/service.py", line 94, in serve_wsgi 2022-04-04 16:32:29.308 103953 ERROR neutron registry.publish(resources.PROCESS, events.BEFORE_SPAWN, service) 2022-04-04 16:32:29.308 103953 ERROR neutron File "/usr/lib/python3/dist-packages/neutron_lib/callbacks/registry.py", line 54, in publish 2022-04-04 16:32:29.308 103953 ERROR neutron _get_callback_manager().publish(resource, event, trigger, payload=payload) 2022-04-04 16:32:29.308 103953 ERROR neutron File "/usr/lib/python3/dist-packages/neutron_lib/db/utils.py", line 110, in _wrapped 2022-04-04 16:32:29.308 103953 ERROR neutron raise db_exc.RetryRequest(e) 2022-04-04 16:32:29.308 103953 ERROR neutron File "/usr/lib/python3/dist-packages/oslo_utils/excutils.py", line 227, in __exit__ 2022-04-04 16:32:29.308 103953 ERROR neutron self.force_reraise() 2022-04-04 16:32:29.308 103953 ERROR neutron File "/usr/lib/python3/dist-packages/oslo_utils/excutils.py", line 200, in force_reraise 2022-04-04 16:32:29.308 103953 ERROR neutron raise self.value 2022-04-04 16:32:29.308 103953 ERROR neutron File "/usr/lib/python3/dist-packages/neutron_lib/db/utils.py", line 105, in _wrapped 2022-04-04 16:32:29.308 103953 ERROR neutron return function(*args, **kwargs) 2022-04-04 16:32:29.308 103953 ERROR neutron File "/usr/lib/python3/dist-packages/neutron_lib/callbacks/manager.py", line 157, in publish 2022-04-04 16:32:29.308 103953 ERROR neutron raise exceptions.CallbackFailure(errors=errors) 2022-04-04 16:32:29.308 103953 ERROR neutron neutron_lib.callbacks.exceptions.CallbackFailure: Callback neutron.plugins.ml2.drivers.ovn.mech_driver.mech_driver.OVNMechanismDriver.pre_fork_initialize-198156 failed with "OVS database connection to OVN_Northbound failed with error: ''list' object has no attribute 'request''. Verify that the OVS and OVN services are available and that the 'ovn_nb_connection' and 'ovn_sb_connection' configuration options are correct." 2022-04-04 16:32:29.308 103953 ERROR neutron The condition appear appear to come from Neutron somehow: https://github.com/openstack/neutron/blob/3615cd85a4cc6aeecf7f066c4eb21c3cdca71d4c/neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/ovsdb_monitor.py#L660 So I guess the question then becomes; does the change to the OVS Python IDL need more guardrails, or does consumers need to be updated before they can be used with the OVS 2.17 Python IDL?