Is it possible that <br>
<br>
 (rucksack:with-rucksack (rs "/tmp/db")<br>

           (rucksack:with-transaction ()<br>

             (make-instance 'user :no 1)))<br>
<br>
returns a user instance and when the lisp listener tries to print it
fails because it needs to read the slots but there aren't any
transactions anymore? That's why returning nil works fine.<br>
<br>
I don't know if that's desirable behavior or not. Beside, I'm just guessing.<br>
<br>
<br>
Cheers<br>
<br>
Mariano<br><br><div class="gmail_quote">On Wed, Jan 7, 2009 at 2:21 PM, Helmut G. Enders <span dir="ltr"><<a href="mailto:helmut@cybernetic-systems.de">helmut@cybernetic-systems.de</a>></span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Here is a complete test case with sbcl.<br>
<br>
; SLIME 2008-10-30<br>
CL-USER> (require :rucksack)<br>
("SERIALIZE")<br>
CL-USER> (rucksack:with-rucksack (rs "/tmp/db")<br>
           (rucksack:with-transaction ()<br>
              (defclass user ()<br>
                ((no :initarg :no :accessor :no :index :number-index :unique t))<br>
                (:index t)<br>
                (:metaclass rucksack:persistent-class))))<br>
#<RUCKSACK:PERSISTENT-CLASS USER><br>
T<br>
CL-USER> (rucksack:with-rucksack (rs "/tmp/db")<br>
           (rucksack:with-transaction ()<br>
             (make-instance 'user :no 1)))<br>
<br>
-->> ERROR:  Unable to display error condition<br>
              [Condition of type UNBOUND-SLOT]<br>
<br>
<br>
CL-USER> ;; Now the same call, but with a NIL after the make-instance:<br>
          ;; No Error.<br>
          (rucksack:with-rucksack (rs "/tmp/db")<br>
           (rucksack:with-transaction ()<br>
             (make-instance 'user :no 2) nil))<br>
NIL<br>
T<br>
CL-USER><br>
<br>
There is no meaningful backtrace.<br>
<br>
<br>
debugger invoked on a UNBOUND-SLOT in thread #<THREAD "initial thread" RUNNING {A8345B1}>:<br>
(A UNBOUND-SLOT was caught when trying to print *DEBUG-CONDITION* when entering<br>
the debugger. Printing was aborted and the UNBOUND-SLOT was stored in<br>
SB-DEBUG::*NESTED-DEBUG-CONDITION*.)<br>
(CELL-ERROR-NAME SB-DEBUG::*NESTED-DEBUG-CONDITION*) = RUCKSACK:TRANSACTION-ID<br>
<br>
Helmut<br>
<br>
<br>
_______________________________________________<br>
rucksack-devel mailing list<br>
<a href="mailto:rucksack-devel@common-lisp.net">rucksack-devel@common-lisp.net</a><br>
<a href="http://common-lisp.net/cgi-bin/mailman/listinfo/rucksack-devel" target="_blank">http://common-lisp.net/cgi-bin/mailman/listinfo/rucksack-devel</a><br>
</blockquote></div><br>