Synchronize QuantumManager.get_instance() method

fixes bug 1155667

Change-Id: Ib6316b332fbd08c5b39e9820e5dc45f1846817cd
This commit is contained in:
Eugene Nikanorov 2013-03-16 17:53:39 +04:00
parent 276fa58092
commit d41a6b1d35
1 changed files with 9 additions and 1 deletions

View File

@ -20,6 +20,7 @@ from oslo.config import cfg
from quantum.common.exceptions import ClassNotFound from quantum.common.exceptions import ClassNotFound
from quantum.openstack.common import importutils from quantum.openstack.common import importutils
from quantum.openstack.common import lockutils
from quantum.openstack.common import log as logging from quantum.openstack.common import log as logging
from quantum.openstack.common import periodic_task from quantum.openstack.common import periodic_task
from quantum.plugins.common import constants from quantum.plugins.common import constants
@ -131,9 +132,16 @@ class QuantumManager(object):
"desc": plugin_inst.get_plugin_description()}) "desc": plugin_inst.get_plugin_description()})
@classmethod @classmethod
def get_instance(cls): @lockutils.synchronized("qmlock", "qml-")
def _create_instance(cls):
if cls._instance is None: if cls._instance is None:
cls._instance = cls() cls._instance = cls()
@classmethod
def get_instance(cls):
# double checked locking
if cls._instance is None:
cls._create_instance()
return cls._instance return cls._instance
@classmethod @classmethod