[elephant-devel] Upgrading problems
Ian Eslick
eslick at media.mit.edu
Sun Nov 8 16:48:56 UTC 2009
Did you do a migration/upgrade or just run the old DB under the new
code base? -Ian
On Nov 4, 2009, at 10:58 PM, Aslak Gronflaten wrote:
> Hi,
>
> I'm (still) having problems upgrading an existing berkeley 4.6
> database from
> elephant 0.9 to 1.0 trunk, running sbcl under 32 bit linux.
>
> The problem is that I can't access any persistent classes any more.
> I believe the data is still there , and I can access btrees for
> example, but
> a class defined like this f.ex:
>
> (DEFPCLASS USER NIL
> ((USERNAME :ACCESSOR USERNAME :INITARG :USERNAME :INITFORM
> NIL :INDEX T)
> (PASSWORD :ACCESSOR PASSWORD :INITARG :PASSWORD :INITFORM NIL)
> (FULLNAME :ACCESSOR FULLNAME :INITARG :FULLNAME :INITFORM NIL)
> (EMPLOYEE :ACCESSOR EMPLOYEE :INITARG :EMPLOYEE :INITFORM
> NIL :INDEX T)
> (E-MAIL :ACCESSOR E-MAIL :INITARG :E-MAIL :INITFORM NIL ))
> (:INDEX T))
>
> Pointing to the same db, (get-instances-by-class 'user) will give me
> a long list of users under 0.9, while I get an empty list under 1.0.
>
> If I do a describe on the class under 0.9, I get the following:
>
> #<ELEPHANT:PERSISTENT-METACLASS USER>
> [standard-object]
>
> Class precedence-list: USER, ELEPHANT:PERSISTENT-OBJECT,
> ELEPHANT:PERSISTENT, STANDARD-OBJECT,
> SB-PCL::SLOT-OBJECT, T
> Direct superclasses: ELEPHANT:PERSISTENT-OBJECT
> No subclasses.
> Direct slots:
> USERNAME
> Allocation: :DATABASE
> Initargs: :USERNAME
> Readers: USERNAME
> Writers: (SETF USERNAME)
> PASSWORD
> Allocation: :DATABASE
> Initargs: :PASSWORD
> Readers: PASSWORD
> Writers: (SETF PASSWORD)
> FULLNAME
> Allocation: :DATABASE
> Initargs: :FULLNAME
> Readers: FULLNAME
> Writers: (SETF FULLNAME)
> EMPLOYEE
> Allocation: :DATABASE
> Initargs: :EMPLOYEE
> Readers: EMPLOYEE
> Writers: (SETF EMPLOYEE)
> E-MAIL
> Allocation: :DATABASE
> Initargs: :E-MAIL
> Readers: E-MAIL
> Writers: (SETF E-MAIL)
>
> Slots with :INSTANCE allocation:
> %TYPE = (CLASS #<ELEPHANT:PERSISTENT-
> METACLASS USER>)
> SOURCE = #S(SB-C:DEFINITION-SOURCE-LOCATION..
> PLIST = NIL
> NAME = USER
> CLASS-EQ-SPECIALIZER = #<SB-PCL::CLASS-EQ-SPECIALIZER
> {B2F4531}>
> DIRECT-SUPERCLASSES = (#<ELEPHANT:PERSISTENT-METACLASS
> ELEPHANT:PERSISTENT-OBJECT>)
> DIRECT-SUBCLASSES = NIL
> DIRECT-METHODS = ((#<STANDARD-METHOD IS-IN-PM (USER)
> {14CB5FD9}>..
> %DOCUMENTATION = NIL
> SAFE-P = NIL
> FINALIZED-P = T
> %CLASS-PRECEDENCE-LIST = (#<ELEPHANT:PERSISTENT-METACLASS
> USER>..
> CPL-AVAILABLE-P = T
> CAN-PRECEDE-LIST = (#<BUILT-IN-CLASS T> #<SB-PCL::SLOT-
> CLASS SB-PCL::SLOT-OBJECT>..
> INCOMPATIBLE-SUPERCLASS-LIST = NIL
> WRAPPER = #<SB-PCL::WRAPPER
> #<ELEPHANT:PERSISTENT-METACLASS USER> {AB187A1}>
> PROTOTYPE = NIL
> DIRECT-SLOTS = (#<ELEPHANT::PERSISTENT-DIRECT-SLOT-
> DEFINITION USERNAME>..
> SLOTS = (#<ELEPHANT::TRANSIENT-EFFECTIVE-
> SLOT-DEFINITION ELEPHANT::%OID>..
> %PERSISTENT-SLOTS = ((USERNAME PASSWORD FULLNAME
> EMPLOYEE E-MAIL))
> %INDEXED-CLASS = NIL
> %INDEXING-STATE = (#INDEXING-RECORD<c: (T) islt: 2
> dslt: 0>)
> %INDEX-CACHE = #<unbound slot>
>
>
> While doing the same under 1.0 I get this description (top part is
> identical):
>
> Slots with :INSTANCE allocation:
> %TYPE = (CLASS #<ELEPHANT:PERSISTENT-
> METACLASS USER>)
> SOURCE = #S(SB-C:DEFINITION-SOURCE-LOCATION..
> PLIST = NIL
> NAME = USER
> CLASS-EQ-SPECIALIZER = #<SB-PCL::CLASS-EQ-SPECIALIZER
> {B163731}>
> DIRECT-SUPERCLASSES = (#<ELEPHANT:PERSISTENT-METACLASS
> ELEPHANT:PERSISTENT-OBJECT>)
> DIRECT-SUBCLASSES = NIL
> DIRECT-METHODS = ((#<STANDARD-METHOD IS-IN-PM (USER)
> {B7CA389}>..
> %DOCUMENTATION = NIL
> SAFE-P = NIL
> FINALIZED-P = T
> %CLASS-PRECEDENCE-LIST = (#<ELEPHANT:PERSISTENT-METACLASS
> USER>..
> CPL-AVAILABLE-P = T
> CAN-PRECEDE-LIST = (#<BUILT-IN-CLASS T> #<SB-PCL::SLOT-
> CLASS SB-PCL::SLOT-OBJECT>..
> INCOMPATIBLE-SUPERCLASS-LIST = NIL
> WRAPPER = #<SB-PCL::WRAPPER
> #<ELEPHANT:PERSISTENT-METACLASS USER> {AEB48C1}>
> PROTOTYPE = NIL
> DIRECT-SLOTS = (#<ELEPHANT::INDEXED-DIRECT-SLOT-
> DEFINITION USERNAME>..
> SLOTS = (#<ELEPHANT::TRANSIENT-EFFECTIVE-
> SLOT-DEFINITION ELEPHANT::OID>..
> %CLASS-SCHEMA = #<CLASS-SCHEMA USER>
> %STORE-SCHEMAS = (((:BDB "/www/intranet/db") . #<DB-
> SCHEMA 34913 USER (s: NIL p: NIL)>))
> %CLASS-INDEXING = T
> %CACHE-STYLE = :NONE
>
>
> I don't know the internals , so it's just my gut feeling that
> doesn't like the s: nil p: nil there. Any ideas on how to find
> what goes wrong?
> I desperately need to upgrade as I keep getting Berkeley DB error
> #-30975: DB_RUNRECOVERY: Fatal error, run database recovery in the
> running system, after about a days use.
> It started out being a monthly occurance, then weekly, and now the
> system is really unstable. I'm hoping that getting to 1.0 will help.
> Also it would allow upgrading to db4.7.
>
> Any pointers are most welcome....
>
> --
> Regards Aslak
> _______________________________________________
> 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