[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