This concerns indexed classes. Observe:
(asdf:oos 'asdf:load-op 'elephant) (defpackage #:ele-test (:use :cl :elephant)) (in-package :ele-test) (defvar *sc2* nil) (defvar item nil) (defpclass myclass () ((testslot :accessor testslot :initarg testslot :index t))) (open-store '(:BDB "/tmp/db1") :recover t) (setf *sc2* (open-store '(:BDB "/tmp/db2") :recover t)) (let ((*store-controller* *sc2*)) (setf item (make-instance 'myclass))) (setf (testslot item) 5) ; ==> Attempted to write object #<MYCLASS oid:100> with home store ; #<BDB-STORE-CONTROLLER /tmp/db2> into store #<BDB-STORE-CONTROLLER /tmp/db1> (close-store) (close-store *sc2*) Intuitively, the SLOT-VALUE writer should have figured out the correct store controller on its own, by simply looking up ITEM's home controller. Instead, one has to specify it explicitly: (let ((*store-controller* *sc2*)) (setf (testslot item) 5)) ; works Is there any sensible reason for this behaviour? Is my suspicion correct that multi-store operation is a point that isn't covered well by the unit tests and experience? Leslie _______________________________________________ elephant-devel site list elephant-devel@common-lisp.net http://common-lisp.net/mailman/listinfo/elephant-devel