You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by st...@apache.org on 2016/06/21 06:41:18 UTC
[3/6] cassandra git commit: RandomAccessReader: call isEOF() only
when rebuffering, not for every read operation
RandomAccessReader: call isEOF() only when rebuffering, not for every read operation
patch by Dikang Gu; reviewed by Stefania Alborghetti for CASSANDRA-12013
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/68398ada
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/68398ada
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/68398ada
Branch: refs/heads/trunk
Commit: 68398ada7e35cccc5f3818bb47b741ee25243e08
Parents: 142f358
Author: Dikang Gu <di...@gmail.com>
Authored: Mon Jun 20 11:49:57 2016 +0200
Committer: Stefania Alborghetti <st...@datastax.com>
Committed: Tue Jun 21 08:36:00 2016 +0200
----------------------------------------------------------------------
CHANGES.txt | 1 +
.../cassandra/io/util/RandomAccessReader.java | 23 +++++++++++++-------
2 files changed, 16 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/68398ada/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 76e601c..ef993fe 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
2.2.7
+ * RandomAccessReader: call isEOF() only when rebuffering, not for every read operation (CASSANDRA-12013)
* Don't send erroneous NEW_NODE notifications on restart (CASSANDRA-11038)
* StorageService shutdown hook should use a volatile variable (CASSANDRA-11984)
* Persist local metadata earlier in startup sequence (CASSANDRA-11742)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/68398ada/src/java/org/apache/cassandra/io/util/RandomAccessReader.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/io/util/RandomAccessReader.java b/src/java/org/apache/cassandra/io/util/RandomAccessReader.java
index 751269b..0265be5 100644
--- a/src/java/org/apache/cassandra/io/util/RandomAccessReader.java
+++ b/src/java/org/apache/cassandra/io/util/RandomAccessReader.java
@@ -295,11 +295,13 @@ public class RandomAccessReader extends AbstractDataInput implements FileDataInp
if (buffer == null)
throw new AssertionError("Attempted to read from closed RAR");
- if (isEOF())
- return -1; // required by RandomAccessFile
-
if (!buffer.hasRemaining())
+ {
+ if (isEOF())
+ return -1; // required by RandomAccessFile
+
reBuffer();
+ }
return (int)buffer.get() & 0xff;
}
@@ -321,11 +323,13 @@ public class RandomAccessReader extends AbstractDataInput implements FileDataInp
if (length == 0)
return 0;
- if (isEOF())
- return -1;
-
if (!buffer.hasRemaining())
+ {
+ if (isEOF())
+ return -1;
+
reBuffer();
+ }
int toCopy = Math.min(length, buffer.remaining());
buffer.get(buff, offset, toCopy);
@@ -340,10 +344,13 @@ public class RandomAccessReader extends AbstractDataInput implements FileDataInp
ByteBuffer result = ByteBuffer.allocate(length);
while (result.hasRemaining())
{
- if (isEOF())
- throw new EOFException();
if (!buffer.hasRemaining())
+ {
+ if (isEOF())
+ throw new EOFException();
+
reBuffer();
+ }
ByteBufferUtil.put(buffer, result);
}
result.flip();