[elephant-devel] SBCL64 Tests

Ian Eslick eslick at csail.mit.edu
Wed Mar 21 02:11:13 UTC 2007


Henrik,

Thanks for the debugging!  I'll roll that into my upcoming checkin.   
Now on to OpenMCL...

Ian


On Mar 20, 2007, at 7:51 PM, Henrik Hjelte wrote:

> Hm, it seems to have something to do with multiple-value-prog1.
> I'm to tired to understand what, it seems to work as expected when  
> I do
> some testing from the repl. However if I slighly modify
> execute-transaction I can get all ele-bdb tests to run ok.
>
> What I've done is replace multiple-value-prog1 with multiple-value- 
> list
> and setf.
>
> /Henrik
>
>
> (defmethod execute-transaction ((sc bdb-store-controller) txn-fn
> 				&key
> 				transaction parent environment
> 				(retries 100)
> 				degree-2 dirty-read txn-nosync txn-nowait txn-sync)
>   (let ((env (if environment environment (controller-environment  
> sc))))
>     (loop
>      for count fixnum from 1 to retries
>      for success of-type boolean = nil
>      do
>      (let ((txn
>             (if transaction transaction
>                 (db-transaction-begin env
>                                       :parent (if parent parent
> +NULL-VOID+)
>                                       :degree-2 degree-2
>                                       :dirty-read dirty-read
>                                       :txn-nosync txn-nosync
>                                       :txn-nowait txn-nowait
>                                       :txn-sync txn-sync))))
>        (declare (type pointer-void txn))
>        (let (result)
>          (let ((*current-transaction* (make-transaction-record sc  
> txn))
>                (*store-controller* sc))
>            (declare (special *current-transaction* *store- 
> controller*))
>            (catch 'transaction
>              (unwind-protect
>                   (progn
>                     (setf result (multiple-value-list (funcall txn- 
> fn)))
>                     (db-transaction-commit txn
>                                            :txn-nosync txn-nosync
>                                            :txn-sync txn-sync)
>                     (setq success t))
>                (unless success
>                  (db-transaction-abort txn)))))
>          (unless (and (eq result txn) (not success))
>            (return (values-list result)))))
>      finally (error "Too many retries in transaction"))))
>
>
> _______________________________________________
> elephant-devel site list
> elephant-devel at common-lisp.net
> http://common-lisp.net/mailman/listinfo/elephant-devel




More information about the elephant-devel mailing list