[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