[elephant-devel] Problem on the upgrade path
Leslie P. Polzer
leslie.polzer at gmx.net
Sun May 18 13:05:58 UTC 2008
Loading a BDB database created by stable with the new branch gives me:
debugger invoked on a UNBOUND-SLOT in thread #<THREAD "initial thread" {A725821}>:
The slot DB-BDB::INDICES is unbound in the object #<BDB-INDEXED-BTREE oid:-3>.
Type HELP for debugger help, or (SB-EXT:QUIT) to exit from SBCL.
restarts (invokable by number or by possibly-abbreviated name):
0: [USE-VALUE ] Return a value as the slot-value.
1: [STORE-VALUE] Store and return a value as the slot-value.
2: [ABORT ] Exit debugger, returning to top level.
((SB-PCL::FAST-METHOD SLOT-UNBOUND (T T T))
#<unavailable argument>
#<unavailable argument>
#<unavailable argument>
#<BDB-INDEXED-BTREE oid:-3>
DB-BDB::INDICES)
0] :ba
0: ((SB-PCL::FAST-METHOD SLOT-UNBOUND (T T T))
#<unavailable argument>
#<unavailable argument>
#<unavailable argument>
#<BDB-INDEXED-BTREE oid:-3>
DB-BDB::INDICES)
1: ((SB-PCL::FAST-METHOD ELEPHANT::PERSISTENT-SLOT-READER
(DB-BDB::BDB-STORE-CONTROLLER T T))
#<unavailable argument>
#<unavailable argument>
#<unavailable argument>
#<unavailable argument>
#<unavailable argument>)
2: (SLOT-VALUE #<BDB-INDEXED-BTREE oid:-3> DB-BDB::INDICES)
3: ((SB-PCL::FAST-METHOD SHARED-INITIALIZE :AFTER
(DB-BDB::BDB-INDEXED-BTREE T)) #<unavailable lambda list>)[:EXTERNAL]
4: ((LAMBDA
(SB-PCL::.PV. SB-PCL::.NEXT-METHOD-CALL. SB-PCL::.ARG0. SB-PCL::.ARG1.
SB-INT:&MORE SB-PCL::.DFUN-MORE-CONTEXT. SB-PCL::.DFUN-MORE-COUNT.))
#<unused argument>
#<unused argument>
#<BDB-INDEXED-BTREE oid:-3>
(ELEPHANT::OID ELEPHANT::SPEC ELEPHANT:CACHE-MODE DB-BDB::INDICES-CACHE)
-304096854
4)
5: ((SB-PCL::FAST-METHOD SHARED-INITIALIZE :AROUND
(ELEPHANT:PERSISTENT-OBJECT T))
#<unavailable argument>
#<unavailable argument>
#<unavailable argument>
#<unavailable argument>)[:EXTERNAL]
6: ((LAMBDA
(SB-PCL::.PV. SB-PCL::.NEXT-METHOD-CALL. SB-PCL::.ARG0. SB-INT:&MORE
SB-PCL::.DFUN-MORE-CONTEXT. SB-PCL::.DFUN-MORE-COUNT.))
#<unused argument>
#<unused argument>
#<BDB-INDEXED-BTREE oid:-3>
-304096814
4)
7: ((SB-PCL::FAST-METHOD MAKE-INSTANCE (CLASS))
#<unavailable argument>
#<unavailable argument>
#<ELEPHANT:PERSISTENT-METACLASS DB-BDB::BDB-INDEXED-BTREE>)[:EXTERNAL]
8: ((LAMBDA ()) #<unavailable lambda list>)
9: ((SB-PCL::FAST-METHOD ELEPHANT::EXECUTE-TRANSACTION
(DB-BDB::BDB-STORE-CONTROLLER T))
#<unavailable argument>
#<unavailable argument>
#<BDB-STORE-CONTROLLER /home/sky/projects/mystic/backup-world.bdb/>
#<CLOSURE (LAMBDA #) {B69A775}>)[:EXTERNAL]
10: ((SB-PCL::FAST-METHOD ELEPHANT::OPEN-CONTROLLER
(DB-BDB::BDB-STORE-CONTROLLER)) #<unavailable lambda list>)[:EXTERNAL]
11: ((LAMBDA
(SB-PCL::.PV. SB-PCL::.NEXT-METHOD-CALL. SB-PCL::.ARG0. SB-INT:&MORE
SB-PCL::.DFUN-MORE-CONTEXT. SB-PCL::.DFUN-MORE-COUNT.))
#<unused argument>
#<unused argument>
#<BDB-STORE-CONTROLLER /home/sky/projects/mystic/backup-world.bdb/>
-304096650
6)
12: (ELEPHANT:OPEN-STORE (:BDB "/home/sky/projects/mystic/backup-world.bdb/"))[:EXTERNAL]
13: (MYSTIC-ENGINE:START)[:EXTERNAL]
14: (SB-INT:SIMPLE-EVAL-IN-LEXENV (MYSTIC-ENGINE:START) #<NULL-LEXENV>)
15: (INTERACTIVE-EVAL (MYSTIC-ENGINE:START))
16: (SB-ACLREPL::REP-ONE)
17: (SB-ACLREPL::REPL)[:EXTERNAL]
18: ((LAMBDA (SB-ACLREPL::NOPRINT)) NIL)
19: ((LAMBDA ()))
20: ((LAMBDA ()))[:EXTERNAL]
21: (SB-IMPL::%WITH-REBOUND-IO-SYNTAX #<CLOSURE (LAMBDA #) {AB6E79D}>)
22: (SB-IMPL::TOPLEVEL-REPL NIL)
23: (SB-IMPL::TOPLEVEL-INIT)
24: ((LABELS SB-IMPL::RESTART-LISP))
Amending SHARED-INITIALIZE :AFTER in bdb-collections.lisp to read:
(defmethod shared-initialize :after ((instance bdb-indexed-btree) slot-names
&rest rest)
(declare (ignore slot-names rest))
(unless (slot-boundp instance 'indices)
(setf (indices instance) (make-hash-table)))
(setf (indices-cache instance) (indices instance)))
seems to do the job. How I hate uninitialized slots.
The next issue I encountered was the absence of ADD-CLASS-DERIVED-INDEX.
So this is really gone now? What's the replacement?
I'm going to answer your messages regarding caching later today, Ian.
Leslie
More information about the elephant-devel
mailing list