diff options
author | Tor Brede Vekterli <vekterli@oath.com> | 2018-02-23 15:41:26 +0100 |
---|---|---|
committer | Tor Brede Vekterli <vekterli@oath.com> | 2018-02-27 16:05:50 +0100 |
commit | 9063ffeccfa036493390bb09741448c232151cdf (patch) | |
tree | 10460a25295206050f42fc97f01a8a14966c409f /clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/rpc/RPCUtil.java | |
parent | 86029a0a0eefacc98b5c86cd8921eed98f4882e6 (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.java | 21 |
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)); + } + +} |