← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1658060] Re: FirewallNotFound exceptions when deleting the firewall in FWaaS-DVR

 

Reviewed:  https://review.openstack.org/429923
Committed: https://git.openstack.org/cgit/openstack/neutron-fwaas/commit/?id=6bf84e7afbf07ab33907150d59d0b33d053240b6
Submitter: Jenkins
Branch:    master

commit 6bf84e7afbf07ab33907150d59d0b33d053240b6
Author: Cedric Brandily <zzelle@xxxxxxxxx>
Date:   Tue Feb 7 00:16:08 2017 +0100

    Do not complain in firewall_group_deleted if the FW is already deleted
    
    Currently firewall_group_deleted[1] crashs if the firewall is already
    deleted or deleted concurrently during firewall_deleted call. We should
    avoid such behavior as there is no reason to crash if someone already
    did the job for us (ie: delete the FW).
    
    Moreover such crash is costly because it triggers a service-sync on FWaaS
    l3-reference agent (at least). Typically on a L3-DVR deployment, all
    firewall_deleted calls except the first one will fail so quite every
    L3-DVR will perform a FWaaS service-sync.
    
    This change updates firewall_group_deleted in order to succeed if the
    firewall is already deleted or if the firewall is deleted concurrently.
    
    [1] neutron.services.firewall.fwaas_plugin_v2.FirewallCallbacks
    
    Change-Id: Ic0b228896c8129205224417506bb06471e432955
    Closes-Bug: #1658060


** 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/1658060

Title:
  FirewallNotFound exceptions when deleting the firewall in FWaaS-DVR

Status in neutron:
  Fix Released

Bug description:
  We have four nodes, and we deploy both the FWaaS and DVR services.
  When deleting the firewall, we always get three FirewallNotFound
  exceptions. At present, we believe that, in DVR environment, evey node
  would run a L3-agent service. This causes a plugin corresponding to
  multiple agents. And each agent will call back the plugin's
  firewall_deleted() (neutron_fwaas/services/firewall/fwaas_plugin.py)
  to delete the instance in DB, but only the first agent will succeed.

  How to reproduce:
  - first create a firewall applied to a DVR router
  - then delete it

  $ neutron router-show test-fwaas
  +-----------------------+--------------------------------------+
  | Field                 | Value                                |
  +-----------------------+--------------------------------------+
  | admin_state_up        | True                                 |
  | distributed           | True                                 |
  | external_gateway_info |                                      |
  | ha                    | False                                |
  | id                    | cfa3e65e-d101-4cc7-80e5-39daf72c6572 |
  | name                  | test-fwaas                           |
  | routes                |                                      |
  | status                | ACTIVE                               |
  | tenant_id             | fc170b1b8a9a467b9e1a63d85ced5a86     |
  +-----------------------+--------------------------------------+
  $ neutron firewall-create --name fw --router test-fwaas policy
  Created a new firewall:
  +--------------------+--------------------------------------+
  | Field              | Value                                |
  +--------------------+--------------------------------------+
  | admin_state_up     | True                                 |
  | description        |                                      |
  | firewall_policy_id | 1eb3fff7-240f-4f9d-adf6-766e2cad7f59 |
  | id                 | afd38a9e-cf0a-4667-94e0-853a888fd981 |
  | name               | fw                                   |
  | router_ids         | cfa3e65e-d101-4cc7-80e5-39daf72c6572 |
  | status             | CREATED                              |
  | tenant_id          | fc170b1b8a9a467b9e1a63d85ced5a86     |
  +--------------------+--------------------------------------+
  $ neutron firewall-show fw
  +--------------------+--------------------------------------+
  | Field              | Value                                |
  +--------------------+--------------------------------------+
  | admin_state_up     | True                                 |
  | description        |                                      |
  | firewall_policy_id | 1eb3fff7-240f-4f9d-adf6-766e2cad7f59 |
  | id                 | afd38a9e-cf0a-4667-94e0-853a888fd981 |
  | name               | fw                                   |
  | router_ids         | cfa3e65e-d101-4cc7-80e5-39daf72c6572 |
  | status             | ACTIVE                               |
  | tenant_id          | fc170b1b8a9a467b9e1a63d85ced5a86     |
  +--------------------+--------------------------------------+
  $ neutron firewall-delete fw

  $ less neutron-service_error.log
  2017-01-20 19:46:11.593 19338 ERROR oslo_messaging.rpc.dispatcher [req-c4af8425-b05a-4c4e-98e0-4dabe0057df7 ] Exception during message handling: Firewall afd38a9e-cf0a-4667-94e0-853a888fd981 could not be found.
  2017-01-20 19:46:11.593 19338 TRACE oslo_messaging.rpc.dispatcher Traceback (most recent call last):
  2017-01-20 19:46:11.593 19338 TRACE oslo_messaging.rpc.dispatcher   File "/opt/openstack/.venv/local/lib/python2.7/site-packages/oslo_messaging/rpc/dispatcher.py", line 142, in _dispatch_and_reply
  2017-01-20 19:46:11.593 19338 TRACE oslo_messaging.rpc.dispatcher     executor_callback))
  2017-01-20 19:46:11.593 19338 TRACE oslo_messaging.rpc.dispatcher   File "/opt/openstack/.venv/local/lib/python2.7/site-packages/oslo_messaging/rpc/dispatcher.py", line 186, in _dispatch
  2017-01-20 19:46:11.593 19338 TRACE oslo_messaging.rpc.dispatcher     executor_callback)
  2017-01-20 19:46:11.593 19338 TRACE oslo_messaging.rpc.dispatcher   File "/opt/openstack/.venv/local/lib/python2.7/site-packages/oslo_messaging/rpc/dispatcher.py", line 130, in _do_dispatch
  2017-01-20 19:46:11.593 19338 TRACE oslo_messaging.rpc.dispatcher     result = func(ctxt, **new_args)
  2017-01-20 19:46:11.593 19338 TRACE oslo_messaging.rpc.dispatcher   File "/opt/openstack/neutron-fwaas/neutron_fwaas/services/firewall/fwaas_plugin.py", line 67, in firewall_deleted
  2017-01-20 19:46:11.593 19338 TRACE oslo_messaging.rpc.dispatcher     fw_db = self.plugin._get_firewall(context, firewall_id)
  2017-01-20 19:46:11.593 19338 TRACE oslo_messaging.rpc.dispatcher   File "/opt/openstack/neutron-fwaas/neutron_fwaas/db/firewall/firewall_db.py", line 101, in _get_firewall
  2017-01-20 19:46:11.593 19338 TRACE oslo_messaging.rpc.dispatcher     raise fw_ext.FirewallNotFound(firewall_id=id)
  2017-01-20 19:46:11.593 19338 TRACE oslo_messaging.rpc.dispatcher FirewallNotFound: Firewall afd38a9e-cf0a-4667-94e0-853a888fd981 could not be found.
  2017-01-20 19:46:11.593 19338 TRACE oslo_messaging.rpc.dispatcher
  2017-01-20 19:46:11.594 19338 ERROR oslo_messaging._drivers.common [req-c4af8425-b05a-4c4e-98e0-4dabe0057df7 ] Returning exception Firewall afd38a9e-cf0a-4667-94e0-853a888fd981 could not be found. to caller
  2017-01-20 19:46:11.594 19338 ERROR oslo_messaging._drivers.common [req-c4af8425-b05a-4c4e-98e0-4dabe0057df7 ] ['Traceback (most recent call last):\n', '  File "/opt/openstack/.venv/local/lib/python2.7/site-packages/oslo_messaging/rpc/dispatcher.py", line 142, in _dispatc
  h_and_reply\n    executor_callback))\n', '  File "/opt/openstack/.venv/local/lib/python2.7/site-packages/oslo_messaging/rpc/dispatcher.py", line 186, in _dispatch\n    executor_callback)\n', '  File "/opt/openstack/.venv/local/lib/python2.7/site-packages/oslo_messaging/rp
  c/dispatcher.py", line 130, in _do_dispatch\n    result = func(ctxt, **new_args)\n', '  File "/opt/openstack/neutron-fwaas/neutron_fwaas/services/firewall/fwaas_plugin.py", line 67, in firewall_deleted\n    fw_db = self.plugin._get_firewall(context, firewall_id)\n', '  Fi
  le "/opt/openstack/neutron-fwaas/neutron_fwaas/db/firewall/firewall_db.py", line 101, in _get_firewall\n    raise fw_ext.FirewallNotFound(firewall_id=id)\n', 'FirewallNotFound: Firewall afd38a9e-cf0a-4667-94e0-853a888fd981 could not be found.\n']
  2017-01-20 19:46:11.595 19338 ERROR oslo_messaging.rpc.dispatcher [req-c4af8425-b05a-4c4e-98e0-4dabe0057df7 ] Exception during message handling: Firewall afd38a9e-cf0a-4667-94e0-853a888fd981 could not be found.
  2017-01-20 19:46:11.595 19338 TRACE oslo_messaging.rpc.dispatcher Traceback (most recent call last):
  2017-01-20 19:46:11.595 19338 TRACE oslo_messaging.rpc.dispatcher   File "/opt/openstack/.venv/local/lib/python2.7/site-packages/oslo_messaging/rpc/dispatcher.py", line 142, in _dispatch_and_reply
  2017-01-20 19:46:11.595 19338 TRACE oslo_messaging.rpc.dispatcher     executor_callback))
  2017-01-20 19:46:11.595 19338 TRACE oslo_messaging.rpc.dispatcher   File "/opt/openstack/.venv/local/lib/python2.7/site-packages/oslo_messaging/rpc/dispatcher.py", line 186, in _dispatch
  2017-01-20 19:46:11.595 19338 TRACE oslo_messaging.rpc.dispatcher     executor_callback)
  2017-01-20 19:46:11.595 19338 TRACE oslo_messaging.rpc.dispatcher   File "/opt/openstack/.venv/local/lib/python2.7/site-packages/oslo_messaging/rpc/dispatcher.py", line 130, in _do_dispatch
  2017-01-20 19:46:11.595 19338 TRACE oslo_messaging.rpc.dispatcher     result = func(ctxt, **new_args)
  2017-01-20 19:46:11.595 19338 TRACE oslo_messaging.rpc.dispatcher   File "/opt/openstack/neutron-fwaas/neutron_fwaas/services/firewall/fwaas_plugin.py", line 67, in firewall_deleted
  2017-01-20 19:46:11.595 19338 TRACE oslo_messaging.rpc.dispatcher     fw_db = self.plugin._get_firewall(context, firewall_id)
  2017-01-20 19:46:11.595 19338 TRACE oslo_messaging.rpc.dispatcher   File "/opt/openstack/neutron-fwaas/neutron_fwaas/db/firewall/firewall_db.py", line 101, in _get_firewall
  2017-01-20 19:46:11.595 19338 TRACE oslo_messaging.rpc.dispatcher     raise fw_ext.FirewallNotFound(firewall_id=id)
  2017-01-20 19:46:11.595 19338 TRACE oslo_messaging.rpc.dispatcher FirewallNotFound: Firewall afd38a9e-cf0a-4667-94e0-853a888fd981 could not be found.
  2017-01-20 19:46:11.595 19338 TRACE oslo_messaging.rpc.dispatcher
  2017-01-20 19:46:11.596 19338 ERROR oslo_messaging._drivers.common [req-c4af8425-b05a-4c4e-98e0-4dabe0057df7 ] Returning exception Firewall afd38a9e-cf0a-4667-94e0-853a888fd981 could not be found. to caller
  2017-01-20 19:46:11.596 19338 ERROR oslo_messaging._drivers.common [req-c4af8425-b05a-4c4e-98e0-4dabe0057df7 ] ['Traceback (most recent call last):\n', '  File "/opt/openstack/.venv/local/lib/python2.7/site-packages/oslo_messaging/rpc/dispatcher.py", line 142, in _dispatc
  h_and_reply\n    executor_callback))\n', '  File "/opt/openstack/.venv/local/lib/python2.7/site-packages/oslo_messaging/rpc/dispatcher.py", line 186, in _dispatch\n    executor_callback)\n', '  File "/opt/openstack/.venv/local/lib/python2.7/site-packages/oslo_messaging/rp
  c/dispatcher.py", line 130, in _do_dispatch\n    result = func(ctxt, **new_args)\n', '  File "/opt/openstack/neutron-fwaas/neutron_fwaas/services/firewall/fwaas_plugin.py", line 67, in firewall_deleted\n    fw_db = self.plugin._get_firewall(context, firewall_id)\n', '  Fi
  le "/opt/openstack/neutron-fwaas/neutron_fwaas/db/firewall/firewall_db.py", line 101, in _get_firewall\n    raise fw_ext.FirewallNotFound(firewall_id=id)\n', 'FirewallNotFound: Firewall afd38a9e-cf0a-4667-94e0-853a888fd981 could not be found.\n']
  2017-01-20 19:46:11.599 19338 ERROR oslo_messaging.rpc.dispatcher [req-c4af8425-b05a-4c4e-98e0-4dabe0057df7 ] Exception during message handling: Firewall afd38a9e-cf0a-4667-94e0-853a888fd981 could not be found.
  2017-01-20 19:46:11.599 19338 TRACE oslo_messaging.rpc.dispatcher Traceback (most recent call last):
  2017-01-20 19:46:11.599 19338 TRACE oslo_messaging.rpc.dispatcher   File "/opt/openstack/.venv/local/lib/python2.7/site-packages/oslo_messaging/rpc/dispatcher.py", line 142, in _dispatch_and_reply
  2017-01-20 19:46:11.599 19338 TRACE oslo_messaging.rpc.dispatcher     executor_callback))
  2017-01-20 19:46:11.599 19338 TRACE oslo_messaging.rpc.dispatcher   File "/opt/openstack/.venv/local/lib/python2.7/site-packages/oslo_messaging/rpc/dispatcher.py", line 186, in _dispatch
  2017-01-20 19:46:11.599 19338 TRACE oslo_messaging.rpc.dispatcher     executor_callback)
  2017-01-20 19:46:11.599 19338 TRACE oslo_messaging.rpc.dispatcher   File "/opt/openstack/.venv/local/lib/python2.7/site-packages/oslo_messaging/rpc/dispatcher.py", line 130, in _do_dispatch
  2017-01-20 19:46:11.599 19338 TRACE oslo_messaging.rpc.dispatcher     result = func(ctxt, **new_args)
  2017-01-20 19:46:11.599 19338 TRACE oslo_messaging.rpc.dispatcher   File "/opt/openstack/neutron-fwaas/neutron_fwaas/services/firewall/fwaas_plugin.py", line 67, in firewall_deleted
  2017-01-20 19:46:11.599 19338 TRACE oslo_messaging.rpc.dispatcher     fw_db = self.plugin._get_firewall(context, firewall_id)
  2017-01-20 19:46:11.599 19338 TRACE oslo_messaging.rpc.dispatcher   File "/opt/openstack/neutron-fwaas/neutron_fwaas/db/firewall/firewall_db.py", line 101, in _get_firewall
  2017-01-20 19:46:11.599 19338 TRACE oslo_messaging.rpc.dispatcher     raise fw_ext.FirewallNotFound(firewall_id=id)
  2017-01-20 19:46:11.599 19338 TRACE oslo_messaging.rpc.dispatcher FirewallNotFound: Firewall afd38a9e-cf0a-4667-94e0-853a888fd981 could not be found.
  2017-01-20 19:46:11.599 19338 TRACE oslo_messaging.rpc.dispatcher
  2017-01-20 19:46:11.600 19338 ERROR oslo_messaging._drivers.common [req-c4af8425-b05a-4c4e-98e0-4dabe0057df7 ] Returning exception Firewall afd38a9e-cf0a-4667-94e0-853a888fd981 could not be found. to caller
  2017-01-20 19:46:11.600 19338 ERROR oslo_messaging._drivers.common [req-c4af8425-b05a-4c4e-98e0-4dabe0057df7 ] ['Traceback (most recent call last):\n', '  File "/opt/openstack/.venv/local/lib/python2.7/site-packages/oslo_messaging/rpc/dispatcher.py", line 142, in _dispatch_and_reply\n    executor_callback))\n', '  File "/opt/openstack/.venv/local/lib/python2.7/site-packages/oslo_messaging/rpc/dispatcher.py", line 186, in _dispatch\n    executor_callback)\n', '  File "/opt/openstack/.venv/local/lib/python2.7/site-packages/oslo_messaging/rpc/dispatcher.py", line 130, in _do_dispatch\n    result = func(ctxt, **new_args)\n', '  File "/opt/openstack/neutron-fwaas/neutron_fwaas/services/firewall/fwaas_plugin.py", line 67, in firewall_deleted\n    fw_db = self.plugin._get_firewall(context, firewall_id)\n', '  File "/opt/openstack/neutron-fwaas/neutron_fwaas/db/firewall/firewall_db.py", line 101, in _get_firewall\n    raise fw_ext.FirewallNotFound(firewall_id=id)\n', 'FirewallNotFound: Firewall afd38a9e-cf0a-4667-94e0-853a888fd981 could not be found.\n']

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


References