← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1394043] [NEW] KeyError: 'gw_port_host' seen for DVR router removal

 

Public bug reported:

In some multi-node setups, a qrouter namespace might be hosted on a node
where only a dhcp port is hosted (no VMs, no SNAT).

When the router is removed from the db, the host with only the qrouter
and dhcp namespace will have the qrouter namespace remain.  Other hosts
with the same qrouter will remove the namespace.  The following KeyError
is seen on the host with the remaining namespace -

2014-11-18 17:18:43.334 ERROR neutron.agent.l3_agent [-] 'gw_port_host'
2014-11-18 17:18:43.334 TRACE neutron.agent.l3_agent Traceback (most recent call last):
2014-11-18 17:18:43.334 TRACE neutron.agent.l3_agent   File "/opt/stack/neutron/neutron/common/utils.py", line 341, in call
2014-11-18 17:18:43.334 TRACE neutron.agent.l3_agent     return func(*args, **kwargs)
2014-11-18 17:18:43.334 TRACE neutron.agent.l3_agent   File "/opt/stack/neutron/neutron/agent/l3_agent.py", line 958, in process_router
2014-11-18 17:18:43.334 TRACE neutron.agent.l3_agent     self.external_gateway_removed(ri, ri.ex_gw_port, interface_name)
2014-11-18 17:18:43.334 TRACE neutron.agent.l3_agent   File "/opt/stack/neutron/neutron/agent/l3_agent.py", line 1429, in external_gateway_removed
2014-11-18 17:18:43.334 TRACE neutron.agent.l3_agent     ri.router['gw_port_host'] == self.host):
2014-11-18 17:18:43.334 TRACE neutron.agent.l3_agent KeyError: 'gw_port_host'
2014-11-18 17:18:43.334 TRACE neutron.agent.l3_agent 
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/eventlet/greenpool.py", line 82, in _spawn_n_impl
    func(*args, **kwargs)
  File "/opt/stack/neutron/neutron/agent/l3_agent.py", line 1842, in _process_router_update
    self._process_router_if_compatible(router)
  File "/opt/stack/neutron/neutron/agent/l3_agent.py", line 1817, in _process_router_if_compatible
    self.process_router(ri)
  File "/opt/stack/neutron/neutron/common/utils.py", line 344, in call
    self.logger(e)
  File "/opt/stack/neutron/neutron/openstack/common/excutils.py", line 82, in __exit__
    six.reraise(self.type_, self.value, self.tb)
  File "/opt/stack/neutron/neutron/common/utils.py", line 341, in call
    return func(*args, **kwargs)
  File "/opt/stack/neutron/neutron/agent/l3_agent.py", line 958, in process_router
    self.external_gateway_removed(ri, ri.ex_gw_port, interface_name)
  File "/opt/stack/neutron/neutron/agent/l3_agent.py", line 1429, in external_gateway_removed
    ri.router['gw_port_host'] == self.host):
KeyError: 'gw_port_host'

For the issue to be seen, the router in question needs to have the
router-gateway-set previously.

** Affects: neutron
     Importance: Undecided
     Assignee: Mike Smith (michael-smith6)
         Status: New


** Tags: l3-dvr-backlog

** Changed in: neutron
     Assignee: (unassigned) => Mike Smith (michael-smith6)

** Tags added: l3-dvr-backlog

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to neutron.
https://bugs.launchpad.net/bugs/1394043

Title:
  KeyError: 'gw_port_host' seen for DVR router removal

Status in OpenStack Neutron (virtual network service):
  New

Bug description:
  In some multi-node setups, a qrouter namespace might be hosted on a
  node where only a dhcp port is hosted (no VMs, no SNAT).

  When the router is removed from the db, the host with only the qrouter
  and dhcp namespace will have the qrouter namespace remain.  Other
  hosts with the same qrouter will remove the namespace.  The following
  KeyError is seen on the host with the remaining namespace -

  2014-11-18 17:18:43.334 ERROR neutron.agent.l3_agent [-] 'gw_port_host'
  2014-11-18 17:18:43.334 TRACE neutron.agent.l3_agent Traceback (most recent call last):
  2014-11-18 17:18:43.334 TRACE neutron.agent.l3_agent   File "/opt/stack/neutron/neutron/common/utils.py", line 341, in call
  2014-11-18 17:18:43.334 TRACE neutron.agent.l3_agent     return func(*args, **kwargs)
  2014-11-18 17:18:43.334 TRACE neutron.agent.l3_agent   File "/opt/stack/neutron/neutron/agent/l3_agent.py", line 958, in process_router
  2014-11-18 17:18:43.334 TRACE neutron.agent.l3_agent     self.external_gateway_removed(ri, ri.ex_gw_port, interface_name)
  2014-11-18 17:18:43.334 TRACE neutron.agent.l3_agent   File "/opt/stack/neutron/neutron/agent/l3_agent.py", line 1429, in external_gateway_removed
  2014-11-18 17:18:43.334 TRACE neutron.agent.l3_agent     ri.router['gw_port_host'] == self.host):
  2014-11-18 17:18:43.334 TRACE neutron.agent.l3_agent KeyError: 'gw_port_host'
  2014-11-18 17:18:43.334 TRACE neutron.agent.l3_agent 
  Traceback (most recent call last):
    File "/usr/local/lib/python2.7/dist-packages/eventlet/greenpool.py", line 82, in _spawn_n_impl
      func(*args, **kwargs)
    File "/opt/stack/neutron/neutron/agent/l3_agent.py", line 1842, in _process_router_update
      self._process_router_if_compatible(router)
    File "/opt/stack/neutron/neutron/agent/l3_agent.py", line 1817, in _process_router_if_compatible
      self.process_router(ri)
    File "/opt/stack/neutron/neutron/common/utils.py", line 344, in call
      self.logger(e)
    File "/opt/stack/neutron/neutron/openstack/common/excutils.py", line 82, in __exit__
      six.reraise(self.type_, self.value, self.tb)
    File "/opt/stack/neutron/neutron/common/utils.py", line 341, in call
      return func(*args, **kwargs)
    File "/opt/stack/neutron/neutron/agent/l3_agent.py", line 958, in process_router
      self.external_gateway_removed(ri, ri.ex_gw_port, interface_name)
    File "/opt/stack/neutron/neutron/agent/l3_agent.py", line 1429, in external_gateway_removed
      ri.router['gw_port_host'] == self.host):
  KeyError: 'gw_port_host'

  For the issue to be seen, the router in question needs to have the
  router-gateway-set previously.

To manage notifications about this bug go to:
https://bugs.launchpad.net/neutron/+bug/1394043/+subscriptions


Follow ups

References