You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by gt...@apache.org on 2017/10/10 23:21:10 UTC

activemq git commit: [AMQ-6831, AMQ-6771] trigger eofexception on read -1 - AMQ6522Test

Repository: activemq
Updated Branches:
  refs/heads/master ada50f74f -> e79326057


[AMQ-6831, AMQ-6771] trigger eofexception on read -1 - AMQ6522Test


Project: http://git-wip-us.apache.org/repos/asf/activemq/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq/commit/e7932605
Tree: http://git-wip-us.apache.org/repos/asf/activemq/tree/e7932605
Diff: http://git-wip-us.apache.org/repos/asf/activemq/diff/e7932605

Branch: refs/heads/master
Commit: e793260573f30365572a1e7507cd98e9ed17b1b5
Parents: ada50f7
Author: gtully <ga...@gmail.com>
Authored: Wed Oct 11 00:20:26 2017 +0100
Committer: gtully <ga...@gmail.com>
Committed: Wed Oct 11 00:20:44 2017 +0100

----------------------------------------------------------------------
 .../src/main/java/org/apache/activemq/util/ByteSequence.java | 6 +++++-
 .../apache/activemq/store/kahadb/disk/journal/Journal.java   | 8 +++++++-
 2 files changed, 12 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/activemq/blob/e7932605/activemq-client/src/main/java/org/apache/activemq/util/ByteSequence.java
----------------------------------------------------------------------
diff --git a/activemq-client/src/main/java/org/apache/activemq/util/ByteSequence.java b/activemq-client/src/main/java/org/apache/activemq/util/ByteSequence.java
index ac1e01a..5a19f43 100644
--- a/activemq-client/src/main/java/org/apache/activemq/util/ByteSequence.java
+++ b/activemq-client/src/main/java/org/apache/activemq/util/ByteSequence.java
@@ -75,7 +75,11 @@ public class ByteSequence {
 
     public void reset() {
         length = remaining();
-        System.arraycopy(data, offset, data, 0, length);
+        if (length > 0) {
+            System.arraycopy(data, offset, data, 0, length);
+        } else {
+            length = 0;
+        }
         offset = 0;
     }
 

http://git-wip-us.apache.org/repos/asf/activemq/blob/e7932605/activemq-kahadb-store/src/main/java/org/apache/activemq/store/kahadb/disk/journal/Journal.java
----------------------------------------------------------------------
diff --git a/activemq-kahadb-store/src/main/java/org/apache/activemq/store/kahadb/disk/journal/Journal.java b/activemq-kahadb-store/src/main/java/org/apache/activemq/store/kahadb/disk/journal/Journal.java
index 8e04414..67d4c86 100644
--- a/activemq-kahadb-store/src/main/java/org/apache/activemq/store/kahadb/disk/journal/Journal.java
+++ b/activemq-kahadb-store/src/main/java/org/apache/activemq/store/kahadb/disk/journal/Journal.java
@@ -627,7 +627,13 @@ public class Journal {
     private void ensureAvailable(ByteSequence bs, RandomAccessFile reader, int required) throws IOException {
         if (bs.remaining() < required) {
             bs.reset();
-            bs.setLength(bs.length + reader.read(bs.data, bs.length, bs.data.length - bs.length));
+            int read = reader.read(bs.data, bs.length, bs.data.length - bs.length);
+            if (read < 0) {
+                if (bs.remaining() == 0) {
+                    throw new EOFException("request for " + required + " bytes reached EOF");
+                }
+            }
+            bs.setLength(bs.length + read);
         }
     }