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@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