Merge "Use an independent iptables lock per namespace"

This commit is contained in:
Jenkins 2014-02-06 00:43:21 +00:00 committed by Gerrit Code Review
commit 99542e94af
2 changed files with 15 additions and 2 deletions

View File

@ -26,6 +26,7 @@ import os
from neutron.agent.linux import utils as linux_utils from neutron.agent.linux import utils as linux_utils
from neutron.common import utils from neutron.common import utils
from neutron.openstack.common import lockutils
from neutron.openstack.common import log as logging from neutron.openstack.common import log as logging
LOG = logging.getLogger(__name__) LOG = logging.getLogger(__name__)
@ -351,8 +352,19 @@ class IptablesManager(object):
self._apply() self._apply()
@utils.synchronized('iptables', external=True)
def _apply(self): def _apply(self):
lock_name = 'iptables'
if self.namespace:
lock_name += '-' + self.namespace
try:
with lockutils.lock(lock_name, utils.SYNCHRONIZED_PREFIX, True):
LOG.debug(_('Got semaphore / lock "%s"'), lock_name)
return self._apply_synchronized()
finally:
LOG.debug(_('Semaphore / lock released "%s"'), lock_name)
def _apply_synchronized(self):
"""Apply the current in-memory set of iptables rules. """Apply the current in-memory set of iptables rules.
This will blow away any rules left over from previous runs of the This will blow away any rules left over from previous runs of the

View File

@ -36,8 +36,9 @@ from neutron.openstack.common import log as logging
TIME_FORMAT = "%Y-%m-%dT%H:%M:%SZ" TIME_FORMAT = "%Y-%m-%dT%H:%M:%SZ"
LOG = logging.getLogger(__name__) LOG = logging.getLogger(__name__)
SYNCHRONIZED_PREFIX = 'neutron-'
synchronized = lockutils.synchronized_with_prefix('neutron-') synchronized = lockutils.synchronized_with_prefix(SYNCHRONIZED_PREFIX)
def read_cached_file(filename, cache_info, reload_func=None): def read_cached_file(filename, cache_info, reload_func=None):