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.


_______________________________________________
elephant-devel site list
elephant-devel@common-lisp.net
http://common-lisp.net/mailman/listinfo/elephant-devel

Reply via email to