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

(cherry picked from commit e793260573f30365572a1e7507cd98e9ed17b1b5)
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 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;
     }
 
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 @@
     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);
         }
     }