[Python-Dev] Dealing with import lock deadlock in Import Hooks

Arnaud Fontaine arnaud.fontaine at nexedi.com
Tue Aug 13 04:06:51 CEST 2013


Hi,

Armin Rigo <arigo at tunes.org> writes:
> On Mon, Aug 12, 2013 at 9:39 AM, Arnaud Fontaine <arnaud.fontaine at nexedi.com> wrote:
>>   Thread 1 is trying to import a module 'foo.bar' (where 'foo' is a
>>   package containing dynamic modules) handled by Import Hooks I
>>   implemented, so import lock is acquired before even running the hooks
>>   (Python/import.c:PyImport_ImportModuleLevel()). Then, these import
>>   hooks try to load objects from ZODB and a request is sent and handled
>>   by another thread (Thread 2) which itself tries to import another
>>   module.
>
> A quick hack might be to call imp.release_lock() and
> imp.acquire_lock() explicitly, from your import hook code, around
> calls to ZODB.

I suggested the same in my initial email, but I was wondering if there
could be any issue by releasing the lock in find_module()/load_module()
until the module is actually added to sys.modules.

Cheers,
-- 
Arnaud Fontaine


More information about the Python-Dev mailing list