- Notifications
You must be signed in to change notification settings - Fork124
Closed
Description
Netty 4.1.30 and above (plus earlier versions intermittently) fail the following test:
[INFO]Runningorg.lmdbjava.CursorParamTest[ERROR]Testsrun:5,Failures:0,Errors:1,Skipped:0,Timeelapsed:0.78s <<<FAILURE! -inorg.lmdbjava.CursorParamTest[ERROR]execute[4:bufferadapter:org.lmdbjava.CursorParamTest$NettyBufferRunner@68b7bdcb](org.lmdbjava.CursorParamTest)Timeelapsed:0.015s <<<ERROR!java.lang.IndexOutOfBoundsException:readerIndex:0,writerIndex:8 (expected:0 <=readerIndex <=writerIndex <=capacity(4))atio.netty.buffer.AbstractByteBuf.checkIndexBounds(AbstractByteBuf.java:112)atio.netty.buffer.AbstractByteBuf.readerIndex(AbstractByteBuf.java:121)atorg.lmdbjava.ByteBufProxy.out(ByteBufProxy.java:144)atorg.lmdbjava.ByteBufProxy.out(ByteBufProxy.java:39)atorg.lmdbjava.KeyVal.valOut(KeyVal.java:133)atorg.lmdbjava.Cursor.get(Cursor.java:153)atorg.lmdbjava.CursorParamTest$AbstractBufferRunner.execute(CursorParamTest.java:127)atorg.lmdbjava.CursorParamTest.execute(CursorParamTest.java:90)
Two issues were identified inButeBufProxy
:
- The unsafe setting of the
LENGTH_OFFSET
was setting the value as along
, whereas the actual field in the JavaPooledByteBuf
type is anint
. - The order of updating the
readerIndex
before thewriterIndex
was causing the bounds check on thereaderIndex
call to fail as thewriterIndex
had not yet been corrected.
Correction of the above causes tests to pass consistently with Netty 4.1.32 (currently the latest version).
Metadata
Metadata
Assignees
Labels
No labels