-
Type:
Bug
-
Status: Resolved
-
Priority:
Major
-
Resolution: Fixed
-
Affects Version/s: None
-
Fix Version/s: 0.5.0
-
Component/s: Ozone Client
-
Labels:
//BufferPool public void releaseBuffer(ByteBuffer byteBuffer) { // always remove from head of the list and append at last ByteBuffer buffer = bufferList.remove(0); // Ensure the buffer to be removed is always at the head of the list. Preconditions.checkArgument(buffer.equals(byteBuffer)); buffer.clear(); bufferList.add(buffer); Preconditions.checkArgument(currentBufferIndex >= 0); currentBufferIndex--; }
In the code above, it expects buffer and byteBuffer are the same object, i.e. buffer == byteBuffer. However the precondition is checking buffer.equals(byteBuffer). Unfortunately, both buffer and byteBuffer have remaining() == 0 so that equals(..) returns true and the precondition does not catch the bug.
- links to