[elephant-devel] postmodern btree problem

Alex Mizrahi killerstorm at newmail.ru
Sat Jan 3 22:18:38 UTC 2009


 HD> Which of stable/unstable do you recommend using?

i think we'll eventually switch to "unstable", so if you're planning
for the future, this would be a better option. also the more people
use it, faster we will find all bugs in a new version. OTOH in a short
term perspective "stable" is more tested.

 HD> instrumenting it shows that when the problem occurs, the crippled
 HD> pm-btree  is being recreated (not in cache).

aha, thanks for finding this out -- it appears that recreation code
in unstable is severely broken.

i do not understand the idea behind these changes, i hope Ian can clarify 
this
so we'll find a way to fix this.

in old version recreate-instance-using class for standard-class objects was 
just called make-instance,
so it went through the normal initialization procedure.

in a new version it just calls allocate-instance, so pm-btree has absolutely 
no chance to
initialize itself -- neither initialize-instance is called to fill slots 
with iniforms, nor shared-initialize is called,
and we end up with a blank object.

here's a piece of documentation:

(defmethod recreate-instance-using-class ((class standard-class) &rest 
initargs &key &allow-other-keys)
  (declare (ignore initargs))
  "Simply allocate store, the state of the slots will be filled by the data 
from the
   database.  We do not want to call initialize-instance and re-evaluate the 
initforms;
   we are just fetching the object & values from the store"
  (allocate-instance class))

but i fail to understand the point -- how exactly are we "feching the object 
& values from the store" for standard-class
classes? is that some new object serialization mechanism or just an error?








More information about the elephant-devel mailing list