The issue might happen every time the instance starts.
AFAIU, there is no problem with the neutron OVS agent code. The issue is that the command executed by OVSBridge.get_vif_port_by_id() method [1] returns 2 rows. In all other cases (KVM, Xen PV, ...), this command returns only one row because there is only one port matching a given "external_ids:iface-id". The get_vif_port_by_id() method is called by the OVS agent on every added or updated port [2].
The issue might happen every time the instance starts.
AFAIU, there is no problem with the neutron OVS agent code. The issue is that the command executed by OVSBridge. get_vif_ port_by_ id() method [1] returns 2 rows. In all other cases (KVM, Xen PV, ...), this command returns only one row because there is only one port matching a given "external_ ids:iface- id". The get_vif_ port_by_ id() method is called by the OVS agent on every added or updated port [2].
[1] https:/ /github. com/openstack/ neutron/ blob/aa85a97ca2 dcb06996ed133d8 64705f1dca722b1 /neutron/ agent/linux/ ovs_lib. py#L379 /github. com/openstack/ neutron/ blob/aa85a97ca2 dcb06996ed133d8 64705f1dca722b1 /neutron/ plugins/ openvswitch/ agent/ovs_ neutron_ agent.py# L934
[2] https:/