I just looked at the code and it appears to call 'get-con' in all the
right places. The code certainly is structured to do what you suggest
(get controller from the instance slot). I'll chase this down
tonight. Perhaps some recent change created a corner case that the
tests don't catch, although this seems like a pretty significant hole.
FYI - Most of the multi-store ops are in the migration tests and I
don't think people run those separate tests religiously. Perhaps we
should make the standard tests default to running migration between
two stores of the same type. The migration tests are a little slow so
maybe there's a keyword option to turn them off.
Ian
On Feb 20, 2008, at 10:49 AM, Leslie P. Polzer wrote:
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
_______________________________________________
elephant-devel site list
elephant-devel@common-lisp.net
http://common-lisp.net/mailman/listinfo/elephant-devel