summaryrefslogtreecommitdiffstats
path: root/vespa_feed_perf
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2019-04-25 18:31:34 +0200
committerHenning Baldersheim <balder@yahoo-inc.com>2019-04-25 18:31:34 +0200
commite4ee020164e6cb98f8706bae6b7f284ccee03ae3 (patch)
tree47b9c98ac225f676ddb6f9c43590293c61558ecd /vespa_feed_perf
parent77f8522cf3a0a8a62fd3971455042815380b7fc7 (diff)
Verify hash
Diffstat (limited to 'vespa_feed_perf')
-rw-r--r--vespa_feed_perf/src/main/java/com/yahoo/vespa/feed/perf/SimpleFeeder.java11
1 files changed, 9 insertions, 2 deletions
diff --git a/vespa_feed_perf/src/main/java/com/yahoo/vespa/feed/perf/SimpleFeeder.java b/vespa_feed_perf/src/main/java/com/yahoo/vespa/feed/perf/SimpleFeeder.java
index fd91809ea4f..1fdbd2db9c0 100644
--- a/vespa_feed_perf/src/main/java/com/yahoo/vespa/feed/perf/SimpleFeeder.java
+++ b/vespa_feed_perf/src/main/java/com/yahoo/vespa/feed/perf/SimpleFeeder.java
@@ -187,7 +187,7 @@ public class SimpleFeeder implements ReplyHandler {
type = REMOVE;
}
int sz = buffer.position();
- long hash = XXHashFactory.fastestJavaInstance().hash64().hash(buffer.array(), 0, sz, 0);
+ long hash = hash(buffer.array(), 0, sz);
try {
header.putInt(sz);
@@ -205,9 +205,12 @@ public class SimpleFeeder implements ReplyHandler {
public void close() throws Exception {
outputStream.close();
}
+ static long hash(byte [] buf, int offset, int length) {
+ return XXHashFactory.fastestJavaInstance().hash64().hash(buf, offset, length, 0);
+ }
}
- class VespaV1FeedReader implements FeedReader {
+ static class VespaV1FeedReader implements FeedReader {
private final InputStream in;
private final DocumentTypeManager mgr;
private final byte[] prefix = new byte[16];
@@ -236,6 +239,10 @@ public class SimpleFeeder implements ReplyHandler {
if (read != blob.length) {
throw new IllegalArgumentException("Underflow, failed reading " + blob.length + "bytes. Got " + read);
}
+ long computedHash = VespaV1Destination.hash(blob, 0, blob.length);
+ if (computedHash != hash) {
+ throw new IllegalArgumentException("Hash mismatch, expected " + hash + ", got " + computedHash);
+ }
DocumentDeserializer deser = DocumentDeserializerFactory.createHead(mgr, GrowableByteBuffer.wrap(blob));
if (type == DOCUMENT) {
operation.setDocument(new Document(deser));