]> review.fuel-infra Code Review - openstack-build/neutron-build.git/commitdiff
Synchronize QuantumManager.get_instance() method
authorEugene Nikanorov <enikanorov@mirantis.com>
Sat, 16 Mar 2013 13:53:39 +0000 (17:53 +0400)
committerEugene Nikanorov <enikanorov@mirantis.com>
Sun, 17 Mar 2013 09:57:22 +0000 (13:57 +0400)
fixes bug 1155667

Change-Id: Ib6316b332fbd08c5b39e9820e5dc45f1846817cd

quantum/manager.py

index 74057dc5f91c01669ee54c01c594d9edd302f73f..c7cc8a13e8a9f317c02e64599a25c77131ec1595 100644 (file)
@@ -20,6 +20,7 @@ from oslo.config import cfg
 
 from quantum.common.exceptions import ClassNotFound
 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 periodic_task
 from quantum.plugins.common import constants
@@ -131,9 +132,16 @@ class QuantumManager(object):
                        "desc": plugin_inst.get_plugin_description()})
 
     @classmethod
-    def get_instance(cls):
+    @lockutils.synchronized("qmlock", "qml-")
+    def _create_instance(cls):
         if cls._instance is None:
             cls._instance = cls()
+
+    @classmethod
+    def get_instance(cls):
+        # double checked locking
+        if cls._instance is None:
+            cls._create_instance()
         return cls._instance
 
     @classmethod