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>