We saw the AttributeErrors "has no attribute 'sb_idl'" too and as pointed out already, wait_for_change doesn't finish.
It calls ovs's idl.run which is supposed to return True if there was a change, but there are cases where it doesn't.
See [1]: in the run() function messages are read in a loop. If there are 2 messages to be read and the first one is a change, but the 2nd one isn't, the final return value will be False, because self.change_seqno is reset to initial_change_seqno (seqno from before the 1st message).
If run() only reads one message per call, it's fine. But if the loop reads multiple, it may not.
We saw the AttributeErrors "has no attribute 'sb_idl'" too and as pointed out already, wait_for_change doesn't finish. change_ seqno (seqno from before the 1st message).
It calls ovs's idl.run which is supposed to return True if there was a change, but there are cases where it doesn't.
See [1]: in the run() function messages are read in a loop. If there are 2 messages to be read and the first one is a change, but the 2nd one isn't, the final return value will be False, because self.change_seqno is reset to initial_
If run() only reads one message per call, it's fine. But if the loop reads multiple, it may not.
[1] https:/ /github. com/openvswitch /ovs/blob/ cca40141a825056 2156ae8628f5c73 de3621303e/ python/ ovs/db/ idl.py# L277