[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