aboutsummaryrefslogtreecommitdiffstats
path: root/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/rpc/RPCUtil.java
diff options
context:
space:
mode:
authorTor Brede Vekterli <vekterli@oath.com>2018-02-23 15:41:26 +0100
committerTor Brede Vekterli <vekterli@oath.com>2018-02-27 16:05:50 +0100
commit9063ffeccfa036493390bb09741448c232151cdf (patch)
tree10460a25295206050f42fc97f01a8a14966c409f /clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/rpc/RPCUtil.java
parent86029a0a0eefacc98b5c86cd8921eed98f4882e6 (diff)
Add v3 RPC for sending cluster states to content nodes
Supports sending states for multiple bucket spaces at once, with possibilities for extending protocol later for sending distribution config etc. Payload is LZ4-compressed when possible. If a receiver node does not understand the v3 protocol, the protocol version is transparently downgraded to legacy v2 RPC.
Diffstat (limited to 'clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/rpc/RPCUtil.java')
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/rpc/RPCUtil.java21
1 files changed, 21 insertions, 0 deletions
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/rpc/RPCUtil.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/rpc/RPCUtil.java
new file mode 100644
index 00000000000..2fdf6b5c8a8
--- /dev/null
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/rpc/RPCUtil.java
@@ -0,0 +1,21 @@
+// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.vespa.clustercontroller.core.rpc;
+
+import com.yahoo.compress.CompressionType;
+import com.yahoo.compress.Compressor;
+import com.yahoo.jrt.Request;
+import com.yahoo.vespa.clustercontroller.core.ClusterStateBundle;
+
+public class RPCUtil {
+
+ public static ClusterStateBundle decodeStateBundleFromSetDistributionStatesRequest(Request req) {
+ final CompressionType type = CompressionType.valueOf(req.parameters().get(0).asInt8());
+ final int uncompressedSize = req.parameters().get(1).asInt32();
+ final byte[] compressedPayload = req.parameters().get(2).asData();
+
+ SlimeClusterStateBundleCodec codec = new SlimeClusterStateBundleCodec();
+ Compressor.Compression compression = new Compressor.Compression(type, uncompressedSize, compressedPayload);
+ return codec.decode(EncodedClusterStateBundle.fromCompressionBuffer(compression));
+ }
+
+}