jackrabbit-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Stefan Guggisberg <stefan.guggisb...@gmail.com>
Subject Re: corrupted root node state
Date Wed, 04 Jan 2006 15:24:55 GMT
On 1/4/06, Brian Moseley <bcm@osafoundation.org> wrote:
> On 1/4/06, Stefan Guggisberg <stefan.guggisberg@gmail.com> wrote:
> > i could reproduce the problem easily so i don't need your data anymore, thanks.
> > i'll keep you posted...
> question - do you have any feeling for what the problem might be?
> i've spent the last couple of days trying to pin it down and haven't
> had much luck. i've used ij to examine the node_data value for the
> root node inside derby, and it doesn't look malformed. i've stepped
> through with a debugger but been stymied when Serializer descends into
> DataInputReader (as i don't have the sun jdk sources, don't know if
> they're available, and couldn't get jswat to decompile rt.jar).
> my current working hypothesis is that there's a bug in the stream
> implementation that derby's handing to me via
> ResultSet.getBinaryStream(). i find those classes extremely confusing
> tho, so following what's going on inside them is extremely slow going.

your working hypothesis is absolutely correct. the problem is caused by a
bug in derby's stream implementation returned by ResultSet.getBinaryStream().
the problem occurs when you read across an internal 32k buffer boundary.
i suppose the bug is somewhere in derby's MemByteHolder class.
i also agree with you that this code is, erm..., quite confusing :(

the good news is that your repository data is not corrupt and that
there's an easy temporary workaround for the derby bug (see attachment).

> anyway, every day that i don't get this problem solved is a day our
> production service is down. so if anybody has ideas of what might be
> happening, please share - maybe it will be the jolt i need to find the
> problem and make a fix :)

i guess you owe me a beer :)


> (to summarize the problem - when i add a large number of nodes to the
> root node, save the session and close the repository, then try to
> re-open the repository, a premature EOF exception is thrown when
> deserializing the root node state loaded from the derby PM,
> specifically when reading the qname of the 1180th child node.)

View raw message