diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2019-04-25 18:31:34 +0200 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2019-04-25 18:31:34 +0200 |
commit | e4ee020164e6cb98f8706bae6b7f284ccee03ae3 (patch) | |
tree | 47b9c98ac225f676ddb6f9c43590293c61558ecd /vespa_feed_perf | |
parent | 77f8522cf3a0a8a62fd3971455042815380b7fc7 (diff) |
Verify hash
Diffstat (limited to 'vespa_feed_perf')
-rw-r--r-- | vespa_feed_perf/src/main/java/com/yahoo/vespa/feed/perf/SimpleFeeder.java | 11 |
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)); |