diff options
| author | Xavier Morel <xmo@openerp.com> | 2011-09-30 17:00:26 +0200 |
|---|---|---|
| committer | Xavier Morel <xmo@openerp.com> | 2011-09-30 17:00:26 +0200 |
| commit | 6d70751dd7379dbabbfe2272b6ec4e7c32ca47ba (patch) | |
| tree | 618b1d170446d7c952dc1de0d41710c9f3663f93 | |
| parent | d4d2b1b5b8cc651887964859e7c42345bef9d999 (diff) | |
[FIX] deadlock between crons scheduling and new registry initialization creation
bzr revid: xmo@openerp.com-20110930150026-m0h99fqk6qgne8i1
| -rw-r--r-- | openerp/modules/registry.py | 20 |
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: |
