Public bug reported: It seems the 'native' and the 'vsctl' ovsdb drivers behave differently. The native/idl driver seems to lose some ovsdb transactions, at least the transactions setting the 'other_config' ovs port attribute.
I have written about this in a comment of an earlier bug report (https://bugs.launchpad.net/neutron/+bug/1626010). But I opened this new bug report because the two problems seem to be independent and that other comment may have gone unnoticed. It is not completely clear to me what difference this causes in user- observable behavior. I think it at least leads to losing information about which conntrack zone to use in the openvswitch firewall driver. See here: https://github.com/openstack/neutron/blob/3ade301/neutron/agent/linux/openvswitch_firewall/firewall.py#L257 The details: If I use the vsctl ovsdb driver: ml2_conf.ini: [ovs] ovsdb_interface = vsctl then I see this: $ > /opt/stack/logs/q-agt.log $ sudo ovs-vsctl list Port | grep other_config | grep -c net_uuid 1 $ openstack server create --flavor cirros256 --image cirros-0.3.4-x86_64-uec --nic net-id=net0 --wait vm0 $ sudo ovs-vsctl list Port | grep other_config | grep -c net_uuid 2 $ openstack server delete vm0 $ sleep 3 $ sudo ovs-vsctl list Port | grep other_config | grep -c net_uuid 1 $ egrep -c 'Transaction caused no change' /opt/stack/logs/q-agt.log 0 But if I use the (default) native driver: ml2_conf.ini: [ovs] ovsdb_interface = native Then this happens: $ > /opt/stack/logs/q-agt.log $ sudo ovs-vsctl list Port | grep other_config | grep -c net_uuid 1 $ openstack server create --flavor cirros256 --image cirros-0.3.4-x86_64-uec --nic net-id=net0 --wait vm0 $ sudo ovs-vsctl list Port | grep other_config | grep -c net_uuid 1 $ openstack server delete vm0 $ sleep 3 $ sudo ovs-vsctl list Port | grep other_config | grep -c net_uuid 1 $ egrep -c 'Transaction caused no change' /opt/stack/logs/q-agt.log 22 A sample log message from q-agt.log: 2016-10-06 09:23:05.447 DEBUG neutron.agent.ovsdb.impl_idl [-] Running txn command(idx=0): DbSetCommand(table=Port, col_values=(('other_config', {'tag': 1}),), record=tap8e2a390d-63) from (pid=6068) do_commit /opt/stack/neutron/neutron/agent/ovsdb/impl_idl.py:99 2016-10-06 09:23:05.448 DEBUG neutron.agent.ovsdb.impl_idl [-] Transaction caused no change from (pid=6068) do_commit /opt/stack/neutron/neutron/agent/ovsdb/impl_idl.py:126 devstack version: 563d377 neutron version: 3ade301 ** Affects: neutron Importance: Undecided Status: New -- You received this bug notification because you are a member of Yahoo! Engineering Team, which is subscribed to neutron. https://bugs.launchpad.net/bugs/1630920 Title: native/idl ovsdb driver loses some ovsdb transactions Status in neutron: New Bug description: It seems the 'native' and the 'vsctl' ovsdb drivers behave differently. The native/idl driver seems to lose some ovsdb transactions, at least the transactions setting the 'other_config' ovs port attribute. I have written about this in a comment of an earlier bug report (https://bugs.launchpad.net/neutron/+bug/1626010). But I opened this new bug report because the two problems seem to be independent and that other comment may have gone unnoticed. It is not completely clear to me what difference this causes in user- observable behavior. I think it at least leads to losing information about which conntrack zone to use in the openvswitch firewall driver. See here: https://github.com/openstack/neutron/blob/3ade301/neutron/agent/linux/openvswitch_firewall/firewall.py#L257 The details: If I use the vsctl ovsdb driver: ml2_conf.ini: [ovs] ovsdb_interface = vsctl then I see this: $ > /opt/stack/logs/q-agt.log $ sudo ovs-vsctl list Port | grep other_config | grep -c net_uuid 1 $ openstack server create --flavor cirros256 --image cirros-0.3.4-x86_64-uec --nic net-id=net0 --wait vm0 $ sudo ovs-vsctl list Port | grep other_config | grep -c net_uuid 2 $ openstack server delete vm0 $ sleep 3 $ sudo ovs-vsctl list Port | grep other_config | grep -c net_uuid 1 $ egrep -c 'Transaction caused no change' /opt/stack/logs/q-agt.log 0 But if I use the (default) native driver: ml2_conf.ini: [ovs] ovsdb_interface = native Then this happens: $ > /opt/stack/logs/q-agt.log $ sudo ovs-vsctl list Port | grep other_config | grep -c net_uuid 1 $ openstack server create --flavor cirros256 --image cirros-0.3.4-x86_64-uec --nic net-id=net0 --wait vm0 $ sudo ovs-vsctl list Port | grep other_config | grep -c net_uuid 1 $ openstack server delete vm0 $ sleep 3 $ sudo ovs-vsctl list Port | grep other_config | grep -c net_uuid 1 $ egrep -c 'Transaction caused no change' /opt/stack/logs/q-agt.log 22 A sample log message from q-agt.log: 2016-10-06 09:23:05.447 DEBUG neutron.agent.ovsdb.impl_idl [-] Running txn command(idx=0): DbSetCommand(table=Port, col_values=(('other_config', {'tag': 1}),), record=tap8e2a390d-63) from (pid=6068) do_commit /opt/stack/neutron/neutron/agent/ovsdb/impl_idl.py:99 2016-10-06 09:23:05.448 DEBUG neutron.agent.ovsdb.impl_idl [-] Transaction caused no change from (pid=6068) do_commit /opt/stack/neutron/neutron/agent/ovsdb/impl_idl.py:126 devstack version: 563d377 neutron version: 3ade301 To manage notifications about this bug go to: https://bugs.launchpad.net/neutron/+bug/1630920/+subscriptions -- Mailing list: https://launchpad.net/~yahoo-eng-team Post to : [email protected] Unsubscribe : https://launchpad.net/~yahoo-eng-team More help : https://help.launchpad.net/ListHelp

