Yield control to other greenthreads while processing trusted ports
process_trusted_ports() appeared to be greenthread unfriendly, so
if there are many trusted ports on a node, openvswitch agent may
"hang" for a significant time.
This patch adds explicit yield.
Change-Id: I7c00812f877e2fc966bbac3060e1187ce1b809ca
Closes-Bug: #1836023
(cherry picked from commit da539da378
)
This commit is contained in:
parent
2b2e62d612
commit
639f5788bf
|
@ -17,6 +17,7 @@ import collections
|
||||||
import contextlib
|
import contextlib
|
||||||
import copy
|
import copy
|
||||||
|
|
||||||
|
import eventlet
|
||||||
import netaddr
|
import netaddr
|
||||||
from neutron_lib.callbacks import events as callbacks_events
|
from neutron_lib.callbacks import events as callbacks_events
|
||||||
from neutron_lib.callbacks import registry as callbacks_registry
|
from neutron_lib.callbacks import registry as callbacks_registry
|
||||||
|
@ -658,6 +659,8 @@ class OVSFirewallDriver(firewall.FirewallDriver):
|
||||||
"""Pass packets from these ports directly to ingress pipeline."""
|
"""Pass packets from these ports directly to ingress pipeline."""
|
||||||
for port_id in port_ids:
|
for port_id in port_ids:
|
||||||
self._initialize_egress_no_port_security(port_id)
|
self._initialize_egress_no_port_security(port_id)
|
||||||
|
# yield to let other greenthreads proceed
|
||||||
|
eventlet.sleep(0)
|
||||||
|
|
||||||
def remove_trusted_ports(self, port_ids):
|
def remove_trusted_ports(self, port_ids):
|
||||||
for port_id in port_ids:
|
for port_id in port_ids:
|
||||||
|
|
Loading…
Reference in New Issue