[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