← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1630920] Re: native/idl ovsdb driver loses some ovsdb transactions

 

Reviewed:  https://review.openstack.org/383540
Committed: https://git.openstack.org/cgit/openstack/neutron/commit/?id=3d500d36608e83d202c1a6c8438ea5961a7debe1
Submitter: Jenkins
Branch:    master

commit 3d500d36608e83d202c1a6c8438ea5961a7debe1
Author: Terry Wilson <twilson@xxxxxxxxxx>
Date:   Thu Oct 6 21:52:56 2016 -0500

    Only send string values to OVSDB other_config column
    
    The other_config columns in OVSDB are defined as maps with string
    keys and string values. The OVS agent was passing an integer
    segmentation id and could pass None as the physical_network.
    Unfortunately, the upstream Python OVS library does not pass the
    exceptions through to us.
    
    Change-Id: Iafa6be3749b1ee863f5fa71150c708fc46951510
    Closes-Bug: #1630920


** Changed in: neutron
       Status: In Progress => Fix Released

-- 
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 networking-bgpvpn:
  New
Status in neutron:
  Fix Released

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/bgpvpn/+bug/1630920/+subscriptions


References