Comment 17 for bug 1964940

Revision history for this message
Rodolfo Alonso (rodolfo-alonso-hernandez) wrote :

Hello:

This issue could be related to how "ovsdbapp" attends to the OVN DB events. The events are catch by the Neutron server (as we can see in the Neutron logs). The events are processed in the ``RowEventHandler.notify``. If the specific event ``match_fn`` returns True, this event is added to the ``RowEventHandler.notifications`` queue.

The problem seems to be in the ``RowEventHandler.notify_loop``, that is a method executed in a separate thread that processes the events added to the ``RowEventHandler.notifications`` queue. When "ovsdbapp" is imported from the Neutron server, the "threading" library has been patched by "eventlet"; instead of using OS threads we are using user threads. If we sometimes don't process the stored event is because we fail yielding to this thread.

I've proposed a solution using the OS threads [1]. It is now running in the environment deployed by Yatin. So far has executed 400+ tests without any error.

Regards.

[1]https://review.opendev.org/c/openstack/ovsdbapp/+/841238