diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2019-10-17 16:17:26 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-10-17 16:17:26 +0200 |
commit | 3a69fa445420a96eb305b2a1a9e7372ff88acaa3 (patch) | |
tree | 7c930c2a09453eef8881148c4e23fa9ae7884884 | |
parent | f966b8ff891e835972866865453dc54d5c2a858a (diff) | |
parent | fc1dddf322951e8b7d832f4ad7c0cb8e0ab408da (diff) |
Merge pull request #11007 from vespa-engine/havardpe/auto-compact-empty-buffers
auto-compact empty buffers when requesting writable view
-rw-r--r-- | jrt/src/com/yahoo/jrt/Buffer.java | 4 | ||||
-rw-r--r-- | jrt/tests/com/yahoo/jrt/BufferTest.java | 15 |
2 files changed, 19 insertions, 0 deletions
diff --git a/jrt/src/com/yahoo/jrt/Buffer.java b/jrt/src/com/yahoo/jrt/Buffer.java index e57eda3473f..937666a28ae 100644 --- a/jrt/src/com/yahoo/jrt/Buffer.java +++ b/jrt/src/com/yahoo/jrt/Buffer.java @@ -32,6 +32,10 @@ class Buffer { } readPos = buf.position(); buf.limit(buf.capacity()); + if (readPos == writePos) { + readPos = 0; + writePos = 0; + } buf.position(writePos); readMode = false; } diff --git a/jrt/tests/com/yahoo/jrt/BufferTest.java b/jrt/tests/com/yahoo/jrt/BufferTest.java index f837b036957..7f3145365d9 100644 --- a/jrt/tests/com/yahoo/jrt/BufferTest.java +++ b/jrt/tests/com/yahoo/jrt/BufferTest.java @@ -11,6 +11,21 @@ import static org.junit.Assert.assertTrue; public class BufferTest { @org.junit.Test + public void testEmptyBufferAutoCompact() { + Buffer buf = new Buffer(1024); + ByteBuffer b = buf.getWritable(10); + for (int x = 0; x < 10; x++) { + b.put((byte)x); + } + b = buf.getReadable(); + while (b.remaining() > 0) { + b.get(); + } + b = buf.getWritable(10); + assertEquals(1024, b.remaining()); + } + + @org.junit.Test public void testBuffer() { int size = Buffer.MAX_IO + (Buffer.MAX_IO / 10); |