[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