[elephant-devel] status update on db-postmodern
Alex Mizrahi
alex.mizrahi at gmail.com
Mon Sep 5 14:10:23 UTC 2011
I've fixed problem with db-postmodern, now it passes almost all tests on
SBCL 1.0.16 (except NIL-SLOT-CLASS).
The problem was that with-btree-cursor using WITHOUT-INTERRUPTS while
making cursor to prevent potential resource leak, but POSTMODERN depends
on interrupts for socket communications (select).
I've fixed this problem through use of ALLOW-WITH-INTERRUPTS in
ele:WITHOUT-INTERRUPTS -- it allows re-enabling interrupts -- and
WITH-INTERRUPTS around code which works with DB.
This is SBCL-specific solutions, but we don't support WITHOUT-INTERRUPTS
on other implementations anyway. (Well, we have it for AllegroCL but I
don't support it.)
Other possible solution is to remove WITHOUT-INTERRUPTS, I don't see
much value in preventing resource leaks when people cancel threads
through signals. Canceling threads sucks.
...
There is still a potential problem with select being called when
interrupts are disabled: schema-related functions which access DB might
be called while compiling/loading code, and SBCL has internal
WITHOUT-INTERRUPTS around code which calls our code. But, well, it
works anyway.Problem might happen only when you're loading/compiling
code, so if it already works it should be fine.
More information about the elephant-devel
mailing list