gre_tunnel: exception due to race condition
This depends on thread scheduling. When event handler is invoked, there may not corresponding network_id in network module. In fact, Network.remove_network() fires EventNetworkPort(add_del=False) before EventNetworkDel event so that it is unnecessary to call _vm_port_mac_handler(). > 127.0.0.1 - - [19/Jun/2013 11:24:25] "DELETE > /v1.0/networks/8179bb70-a63f-4c74-a82e-a21f3c275c9a HTTP/1.1" 200 115 0.000488 > hub: uncaught exception: Traceback (most recent call last): > File "/opt/stack/ryu/ryu/lib/hub.py", line 50, in _launch > func(*args, **kwargs) > File "/opt/stack/ryu/ryu/base/app_manager.py", line 104, in _event_loop > handler(ev) > File "/opt/stack/ryu/ryu/app/gre_tunnel.py", line 210, in network_del_handler > for (dpid, port_no) in self.nw.list_ports(network_id): > File "/opt/stack/ryu/ryu/controller/network.py", line 319, in list_ports > return self.networks.list_ports(network_id) > File "/opt/stack/ryu/ryu/controller/network.py", line 97, in list_ports > raise NetworkNotFound(network_id=network_id) > NetworkNotFound: no such network id 8179bb70-a63f-4c74-a82e-a21f3c275c9a Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp> Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
This commit is contained in:
parent
1fd877f7c1
commit
3ac48b77e1
@ -207,8 +207,6 @@ class PortSet(app_manager.RyuApp):
|
||||
tunnel_key = self.tunnels.get_key(network_id)
|
||||
except tunnels.TunnelKeyNotFound:
|
||||
return
|
||||
for (dpid, port_no) in self.nw.list_ports(network_id):
|
||||
self._vm_port_mac_handler(dpid, port_no, network_id, False)
|
||||
self._tunnel_key_del(tunnel_key)
|
||||
|
||||
@handler.set_ev_cls(network.EventNetworkPort)
|
||||
|
Loading…
Reference in New Issue
Block a user