Hi,<div><br></div><div>I'm (still) having problems upgrading an existing berkeley 4.6 database from</div><div>elephant 0.9 to 1.0 trunk, running sbcl under 32 bit linux.</div><div><br></div><div>The problem is that I can't access any persistent classes any more.</div>
<div>I believe the data is still there , and I can access btrees for example, but</div><div>a class defined like this f.ex:</div><div><br></div><div><div>(DEFPCLASS USER NIL</div><div>  ((USERNAME :ACCESSOR USERNAME :INITARG :USERNAME :INITFORM NIL :INDEX T)</div>
<div>   (PASSWORD :ACCESSOR PASSWORD :INITARG :PASSWORD :INITFORM NIL)</div><div>   (FULLNAME :ACCESSOR FULLNAME :INITARG :FULLNAME :INITFORM NIL)</div><div>   (EMPLOYEE :ACCESSOR EMPLOYEE :INITARG :EMPLOYEE :INITFORM NIL :INDEX T)</div>
<div>   (E-MAIL :ACCESSOR E-MAIL :INITARG :E-MAIL :INITFORM NIL ))</div><div>  (:INDEX T))</div><div><br></div><div>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.</div>
</div><div><br></div><div>If I do a describe on the class under 0.9, I get the following:</div><div><br></div><div><div>#<ELEPHANT:PERSISTENT-METACLASS USER></div><div>  [standard-object]</div><div><br></div><div>Class precedence-list: USER, ELEPHANT:PERSISTENT-OBJECT,</div>
<div>                       ELEPHANT:PERSISTENT, STANDARD-OBJECT,</div><div>                       SB-PCL::SLOT-OBJECT, T</div><div>Direct superclasses: ELEPHANT:PERSISTENT-OBJECT</div><div>No subclasses.</div><div>Direct slots:</div>
<div>  USERNAME</div><div>    Allocation: :DATABASE</div><div>    Initargs: :USERNAME</div><div>    Readers: USERNAME</div><div>    Writers: (SETF USERNAME)</div><div>  PASSWORD</div><div>    Allocation: :DATABASE</div><div>
    Initargs: :PASSWORD</div><div>    Readers: PASSWORD</div><div>    Writers: (SETF PASSWORD)</div><div>  FULLNAME</div><div>    Allocation: :DATABASE</div><div>    Initargs: :FULLNAME</div><div>    Readers: FULLNAME</div>
<div>    Writers: (SETF FULLNAME)</div><div>  EMPLOYEE</div><div>    Allocation: :DATABASE</div><div>    Initargs: :EMPLOYEE</div><div>    Readers: EMPLOYEE</div><div>    Writers: (SETF EMPLOYEE)</div><div>  E-MAIL</div><div>
    Allocation: :DATABASE</div><div>    Initargs: :E-MAIL</div><div>    Readers: E-MAIL</div><div>    Writers: (SETF E-MAIL)</div><div><br></div><div>Slots with :INSTANCE allocation:</div><div>  %TYPE                        = (CLASS #<ELEPHANT:PERSISTENT-METACLASS USER>)</div>
<div>  SOURCE                       = #S(SB-C:DEFINITION-SOURCE-LOCATION..</div><div>  PLIST                        = NIL</div><div>  NAME                         = USER</div><div>  CLASS-EQ-SPECIALIZER         = #<SB-PCL::CLASS-EQ-SPECIALIZER {B2F4531}></div>
<div>  DIRECT-SUPERCLASSES          = (#<ELEPHANT:PERSISTENT-METACLASS ELEPHANT:PERSISTENT-OBJECT>)</div><div><div>  DIRECT-SUBCLASSES            = NIL</div><div>  DIRECT-METHODS               = ((#<STANDARD-METHOD IS-IN-PM (USER) {14CB5FD9}>..</div>
<div>  %DOCUMENTATION               = NIL</div><div>  SAFE-P                       = NIL</div><div>  FINALIZED-P                  = T</div><div>  %CLASS-PRECEDENCE-LIST       = (#<ELEPHANT:PERSISTENT-METACLASS USER>..</div>
<div>  CPL-AVAILABLE-P              = T</div><div>  CAN-PRECEDE-LIST             = (#<BUILT-IN-CLASS T> #<SB-PCL::SLOT-CLASS SB-PCL::SLOT-OBJECT>..</div><div>  INCOMPATIBLE-SUPERCLASS-LIST  = NIL</div><div>  WRAPPER                      = #<SB-PCL::WRAPPER #<ELEPHANT:PERSISTENT-METACLASS USER> {AB187A1}></div>
<div>  PROTOTYPE                    = NIL</div><div>  DIRECT-SLOTS                 = (#<ELEPHANT::PERSISTENT-DIRECT-SLOT-DEFINITION USERNAME>..</div><div>  SLOTS                        = (#<ELEPHANT::TRANSIENT-EFFECTIVE-SLOT-DEFINITION ELEPHANT::%OID>..</div>
<div>  %PERSISTENT-SLOTS            = ((USERNAME PASSWORD FULLNAME EMPLOYEE E-MAIL))</div><div>  %INDEXED-CLASS               = NIL</div><div>  %INDEXING-STATE              = (#INDEXING-RECORD<c: (T) islt: 2 dslt: 0>)</div>
<div>  %INDEX-CACHE                 = #<unbound slot></div><div><br></div></div></div><div><br clear="all">While doing the same under 1.0 I get this description (top part is identical):</div><div><br></div><div><div>
Slots with :INSTANCE allocation:</div><div>  %TYPE                        = (CLASS #<ELEPHANT:PERSISTENT-METACLASS USER>)</div><div>  SOURCE                       = #S(SB-C:DEFINITION-SOURCE-LOCATION..</div><div>  PLIST                        = NIL</div>
<div>  NAME                         = USER</div><div>  CLASS-EQ-SPECIALIZER         = #<SB-PCL::CLASS-EQ-SPECIALIZER {B163731}></div><div>  DIRECT-SUPERCLASSES          = (#<ELEPHANT:PERSISTENT-METACLASS ELEPHANT:PERSISTENT-OBJECT>)</div>
<div>  DIRECT-SUBCLASSES            = NIL</div><div>  DIRECT-METHODS               = ((#<STANDARD-METHOD IS-IN-PM (USER) {B7CA389}>..</div><div>  %DOCUMENTATION               = NIL</div><div>  SAFE-P                       = NIL</div>
<div>  FINALIZED-P                  = T</div><div>  %CLASS-PRECEDENCE-LIST       = (#<ELEPHANT:PERSISTENT-METACLASS USER>..</div><div>  CPL-AVAILABLE-P              = T</div><div>  CAN-PRECEDE-LIST             = (#<BUILT-IN-CLASS T> #<SB-PCL::SLOT-CLASS SB-PCL::SLOT-OBJECT>..</div>
<div>  INCOMPATIBLE-SUPERCLASS-LIST  = NIL</div><div>  WRAPPER                      = #<SB-PCL::WRAPPER #<ELEPHANT:PERSISTENT-METACLASS USER> {AEB48C1}></div><div>  PROTOTYPE                    = NIL</div><div>
  DIRECT-SLOTS                 = (#<ELEPHANT::INDEXED-DIRECT-SLOT-DEFINITION USERNAME>..</div><div>  SLOTS                        = (#<ELEPHANT::TRANSIENT-EFFECTIVE-SLOT-DEFINITION ELEPHANT::OID>..</div><div>  %CLASS-SCHEMA                = #<CLASS-SCHEMA USER></div>
<div>  %STORE-SCHEMAS               = (((:BDB "/www/intranet/db") . #<DB-SCHEMA 34913 USER (s: NIL p: NIL)>))</div><div>  %CLASS-INDEXING              = T</div><div>  %CACHE-STYLE                 = :NONE</div>
<div><br></div><div><br></div><div>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?</div><div>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.</div>
<div>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. </div><div><br></div><div>Any pointers are most welcome....</div>
<div><br></div>-- <br>Regards Aslak<br>
</div>