[FIX] problem with controllers reload
authorniv-openerp <nicolas.vanhoren@openerp.com>
Mon, 30 Sep 2013 14:44:28 +0000 (16:44 +0200)
committerniv-openerp <nicolas.vanhoren@openerp.com>
Mon, 30 Sep 2013 14:44:28 +0000 (16:44 +0200)
lp bug: https://launchpad.net/bugs/1233065 fixed

bzr revid: nicolas.vanhoren@openerp.com-20130930144428-biwun9nh9y190fft

addons/web/http.py

index c8fabaf..d344179 100644 (file)
@@ -865,8 +865,7 @@ class Root(object):
         self.addons = {}
         self.statics = {}
 
-        self.db_routers = {}
-        self.db_routers_lock = threading.Lock()
+        self.no_db_router = None
 
         self.load_addons()
 
@@ -915,10 +914,7 @@ class Root(object):
             db = request.db
 
             if db:
-                updated = openerp.modules.registry.RegistryManager.check_registry_signaling(db)
-                if updated:
-                    with self.db_routers_lock:
-                        del self.db_routers[db]
+                openerp.modules.registry.RegistryManager.check_registry_signaling(db)
 
             with set_request(request):
                 self.find_handler()
@@ -1030,12 +1026,16 @@ class Root(object):
         return routing_map
 
     def get_db_router(self, db):
-        with self.db_routers_lock:
-            router = self.db_routers.get(db)
+        if db is None:
+            router = self.no_db_router
+        else:
+            router = getattr(openerp.modules.registry.RegistryManager.get(db), "werkzeug_http_router", None)
         if not router:
             router = self._build_router(db)
-            with self.db_routers_lock:
-                self.db_routers[db] = router
+            if db is None:
+                self.no_db_router = router
+            else:
+                openerp.modules.registry.RegistryManager.get(db).werkzeug_http_router = router
         return router
 
     def find_handler(self):