summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXavier Morel <xmo@openerp.com>2011-09-30 17:00:26 +0200
committerXavier Morel <xmo@openerp.com>2011-09-30 17:00:26 +0200
commit6d70751dd7379dbabbfe2272b6ec4e7c32ca47ba (patch)
tree618b1d170446d7c952dc1de0d41710c9f3663f93
parentd4d2b1b5b8cc651887964859e7c42345bef9d999 (diff)
[FIX] deadlock between crons scheduling and new registry initialization creation
bzr revid: xmo@openerp.com-20110930150026-m0h99fqk6qgne8i1
-rw-r--r--openerp/modules/registry.py20
1 files changed, 9 insertions, 11 deletions
diff --git a/openerp/modules/registry.py b/openerp/modules/registry.py
index 72cd4498cfa..20500f981c3 100644
--- a/openerp/modules/registry.py
+++ b/openerp/modules/registry.py
@@ -131,13 +131,11 @@ class RegistryManager(object):
def get(cls, db_name, force_demo=False, status=None, update_module=False,
pooljobs=True):
""" Return a registry for a given database name."""
- with cls.registries_lock:
- if db_name in cls.registries:
- registry = cls.registries[db_name]
- else:
- registry = cls.new(db_name, force_demo, status,
- update_module, pooljobs)
- return registry
+ try:
+ return cls.registries[db_name]
+ except KeyError:
+ return cls.new(db_name, force_demo, status,
+ update_module, pooljobs)
@classmethod
def new(cls, db_name, force_demo=False, status=None,
@@ -172,10 +170,10 @@ class RegistryManager(object):
finally:
cr.close()
- if pooljobs:
- registry.schedule_cron_jobs()
+ if pooljobs:
+ registry.schedule_cron_jobs()
- return registry
+ return registry
@classmethod
def delete(cls, db_name):
@@ -218,4 +216,4 @@ class RegistryManager(object):
cls.registries[db_name].clear_caches()
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: