You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-dev@jackrabbit.apache.org by Michael Dürig <md...@apache.org> on 2014/03/20 09:20:07 UTC

BufferUnderflowException with SegmentMK

Hi,

Just seen this when running LargeOperationIT#manySiblings against 
revision 1579234.

Michael

java.nio.BufferUnderflowException
	at java.nio.DirectByteBuffer.get(DirectByteBuffer.java:235)
	at java.nio.ByteBuffer.get(ByteBuffer.java:675)
	at 
org.apache.jackrabbit.oak.plugins.segment.Segment.loadString(Segment.java:294)
	at 
org.apache.jackrabbit.oak.plugins.segment.Segment.readString(Segment.java:275)
	at 
org.apache.jackrabbit.oak.plugins.segment.Segment.readString(Segment.java:269)
	at 
org.apache.jackrabbit.oak.plugins.segment.MapRecord.getEntries(MapRecord.java:353)
	at 
org.apache.jackrabbit.oak.plugins.segment.MapRecord.getEntries(MapRecord.java:335)
	at 
org.apache.jackrabbit.oak.plugins.segment.MapRecord.getEntries(MapRecord.java:335)
	at 
org.apache.jackrabbit.oak.plugins.segment.MapRecord.getEntries(MapRecord.java:335)
	at 
org.apache.jackrabbit.oak.plugins.segment.MapRecord.getEntries(MapRecord.java:335)
	at 
org.apache.jackrabbit.oak.plugins.segment.MapRecord.getEntries(MapRecord.java:309)
	at 
org.apache.jackrabbit.oak.plugins.segment.SegmentNodeState.getChildNodeEntries(SegmentNodeState.java:366)
	at 
org.apache.jackrabbit.oak.plugins.memory.EmptyNodeState.compareAgainstEmptyState(EmptyNodeState.java:159)
	at 
org.apache.jackrabbit.oak.plugins.segment.SegmentNodeState.compareAgainstBaseState(SegmentNodeState.java:385)
	at 
org.apache.jackrabbit.oak.plugins.version.VersionablePathHook$Diff.childNodeChanged(VersionablePathHook.java:107)
	at 
org.apache.jackrabbit.oak.plugins.version.VersionablePathHook$Diff.childNodeAdded(VersionablePathHook.java:100)
	at 
org.apache.jackrabbit.oak.plugins.segment.MapRecord.compare(MapRecord.java:440)
	at 
org.apache.jackrabbit.oak.plugins.segment.SegmentNodeState.compareAgainstBaseState(SegmentNodeState.java:530)
	at 
org.apache.jackrabbit.oak.plugins.version.VersionablePathHook$Diff.childNodeChanged(VersionablePathHook.java:107)
	at 
org.apache.jackrabbit.oak.plugins.segment.MapRecord.compare(MapRecord.java:393)
	at 
org.apache.jackrabbit.oak.plugins.segment.SegmentNodeState.compareAgainstBaseState(SegmentNodeState.java:530)
	at 
org.apache.jackrabbit.oak.plugins.version.VersionablePathHook$Diff.childNodeChanged(VersionablePathHook.java:107)
	at 
org.apache.jackrabbit.oak.plugins.segment.MapRecord.compare(MapRecord.java:393)
	at 
org.apache.jackrabbit.oak.plugins.segment.SegmentNodeState.compareAgainstBaseState(SegmentNodeState.java:530)
	at 
org.apache.jackrabbit.oak.plugins.version.VersionablePathHook$Diff.childNodeChanged(VersionablePathHook.java:107)
	at 
org.apache.jackrabbit.oak.plugins.segment.SegmentNodeState.compareAgainstBaseState(SegmentNodeState.java:478)
	at 
org.apache.jackrabbit.oak.plugins.version.VersionablePathHook$Diff.childNodeChanged(VersionablePathHook.java:107)
	at 
org.apache.jackrabbit.oak.plugins.segment.MapRecord.compare(MapRecord.java:393)
	at 
org.apache.jackrabbit.oak.plugins.segment.SegmentNodeState.compareAgainstBaseState(SegmentNodeState.java:530)
	at 
org.apache.jackrabbit.oak.plugins.version.VersionablePathHook$Diff.childNodeChanged(VersionablePathHook.java:107)
	at 
org.apache.jackrabbit.oak.plugins.segment.MapRecord.compare(MapRecord.java:430)
	at 
org.apache.jackrabbit.oak.plugins.segment.SegmentNodeState.compareAgainstBaseState(SegmentNodeState.java:530)
	at 
org.apache.jackrabbit.oak.plugins.version.VersionablePathHook.processCommit(VersionablePathHook.java:66)
	at 
org.apache.jackrabbit.oak.spi.commit.CompositeHook.processCommit(CompositeHook.java:60)
	at 
org.apache.jackrabbit.oak.plugins.segment.SegmentNodeStore$Commit.prepare(SegmentNodeStore.java:266)
	at 
org.apache.jackrabbit.oak.plugins.segment.SegmentNodeStore$Commit.optimisticMerge(SegmentNodeStore.java:297)
	at 
org.apache.jackrabbit.oak.plugins.segment.SegmentNodeStore$Commit.execute(SegmentNodeStore.java:353)
	at 
org.apache.jackrabbit.oak.plugins.segment.SegmentNodeStore.merge(SegmentNodeStore.java:130)
	at org.apache.jackrabbit.oak.core.MutableRoot.commit(MutableRoot.java:242)
	at 
org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.commit(SessionDelegate.java:357)
	at 
org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.save(SessionDelegate.java:500)
	at 
org.apache.jackrabbit.oak.jcr.session.SessionImpl$8.perform(SessionImpl.java:414)
	at 
org.apache.jackrabbit.oak.jcr.session.SessionImpl$8.perform(SessionImpl.java:411)
	at 
org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:263)
	at 
org.apache.jackrabbit.oak.jcr.session.SessionImpl.perform(SessionImpl.java:124)
	at 
org.apache.jackrabbit.oak.jcr.session.SessionImpl.save(SessionImpl.java:411)
	at 
org.apache.jackrabbit.oak.jcr.LargeOperationIT$4.run(LargeOperationIT.java:346)
	at 
org.apache.jackrabbit.oak.jcr.LargeOperationIT$ScalabilityTest.run(LargeOperationIT.java:493)
	at 
org.apache.jackrabbit.oak.jcr.LargeOperationIT.manySiblings(LargeOperationIT.java:349)



Re: BufferUnderflowException with SegmentMK

Posted by Jukka Zitting <ju...@gmail.com>.
Hi,

On Thu, Mar 20, 2014 at 4:20 AM, Michael Dürig <md...@apache.org> wrote:
> java.nio.BufferUnderflowException
>         at java.nio.DirectByteBuffer.get(DirectByteBuffer.java:235)
>         at java.nio.ByteBuffer.get(ByteBuffer.java:675)
>         at
> org.apache.jackrabbit.oak.plugins.segment.Segment.loadString(Segment.java:294)

Sounds related to OAK-1566. My recent GC work seems to have introduced
some subtle bug in the way segments are written, which on some
occasions triggers errors like these.

BR,

Jukka Zitting