[rrd-developers] Bug#691765: Bindings don't seem to release the GIL when doing I/O

Jean-Michel Vourgère nirgal at debian.org
Thu Aug 27 22:18:16 CEST 2015


Control: tags -1 + patch

Hello Enrico.

On Mon, Oct 29, 2012 at 02:49:03PM +0100, Enrico Zini wrote:
> I was auditing the rrdtool binding code to check if they could be used
> in a python thread without locking the entire application via the GIL.
>
> Extensions are supposed to release the GIL lock around potentially
> blocking I/O operations like reading or writing a file, so that other
> Python threads can run in the meantime.
>
> I went through rrdtoolmodule.c and didn't see any use of
> Py_BEGIN_ALLOW_THREADS or thread-related functions, so it looks like
> python-rrdtool would keep all concurrent threads of the application
> blocked during I/O.
>
> http://docs.python.org/2/c-api/init.html#threads has more details.
>
> This isn't an urgent issue for me personally: we're using pyrrd
> through the 'external' backend, which uses Popen to invoke rrdtool, and
> Popen correctly releases the GIL during I/O. However, I felt like I
> should share what I found during my little code review.

How does this look?

https://github.com/nirgal/rrdtool-1.x/commit/8949308812a0205dd356cefbe2eb2888012ee742

Not asking for a full review, a "that's the idea" would be cool. ^^

-- 
Nirgal
<3 YKINMYKBYKIOK



More information about the rrd-developers mailing list