summaryrefslogtreecommitdiffstats
path: root/config
diff options
context:
space:
mode:
authorHarald Musum <musum@yahooinc.com>2021-10-14 16:40:06 +0200
committerHarald Musum <musum@yahooinc.com>2021-10-14 16:40:06 +0200
commit239b2535a777dc034db4bf91daa3c34a2e39afcb (patch)
tree567f992a04706e0c5351522006f96f82fd6bb529 /config
parent3e52c48f560623c73bbdc3a02099657eea0cf958 (diff)
Cleanup of addOkResponse()
Throw exception if payload is null Extract some methods and simplify
Diffstat (limited to 'config')
-rw-r--r--config/src/main/java/com/yahoo/vespa/config/protocol/JRTServerConfigRequestV3.java50
1 files changed, 29 insertions, 21 deletions
diff --git a/config/src/main/java/com/yahoo/vespa/config/protocol/JRTServerConfigRequestV3.java b/config/src/main/java/com/yahoo/vespa/config/protocol/JRTServerConfigRequestV3.java
index e6c9bc2175b..e5a665f0973 100644
--- a/config/src/main/java/com/yahoo/vespa/config/protocol/JRTServerConfigRequestV3.java
+++ b/config/src/main/java/com/yahoo/vespa/config/protocol/JRTServerConfigRequestV3.java
@@ -70,26 +70,23 @@ public class JRTServerConfigRequestV3 implements JRTServerConfigRequest {
}
@Override
- public void addOkResponse(Payload payload, long generation, boolean applyOnRestart, PayloadChecksums payloadChecksums) {
+ public void addOkResponse(Payload payload, long generation, boolean applyOnRestart, PayloadChecksums checksums) {
this.applyOnRestart = applyOnRestart;
Payload responsePayload = payload.withCompression(getCompressionType());
- ByteArrayOutputStream byteArrayOutputStream = new NoCopyByteArrayOutputStream(4096);
+ if (responsePayload == null)
+ throw new RuntimeException("Payload is null for ' " + this + ", not able to create response");
+
+ ByteArrayOutputStream outputStream = new NoCopyByteArrayOutputStream(4096);
try {
- JsonGenerator jsonGenerator = createJsonGenerator(byteArrayOutputStream);
+ JsonGenerator jsonGenerator = createJsonGenerator(outputStream);
jsonGenerator.writeStartObject();
+
addCommonReturnValues(jsonGenerator);
- if (payloadChecksums.getForType(MD5) != null)
- setResponseField(jsonGenerator, SlimeResponseData.RESPONSE_CONFIG_MD5, payloadChecksums.getForType(MD5).asString());
- if (payloadChecksums.getForType(XXHASH64) != null)
- setResponseField(jsonGenerator, SlimeResponseData.RESPONSE_CONFIG_XXHASH64, payloadChecksums.getForType(XXHASH64).asString());
+ addPayloadCheckSums(jsonGenerator, checksums);
setResponseField(jsonGenerator, SlimeResponseData.RESPONSE_CONFIG_GENERATION, generation);
setResponseField(jsonGenerator, SlimeResponseData.RESPONSE_APPLY_ON_RESTART, applyOnRestart);
jsonGenerator.writeObjectFieldStart(SlimeResponseData.RESPONSE_COMPRESSION_INFO);
- if (responsePayload == null) {
- throw new RuntimeException("Payload is null for ' " + this + ", not able to create response");
- }
- CompressionInfo compressionInfo = responsePayload.getCompressionInfo();
- compressionInfo.serialize(jsonGenerator);
+ responsePayload.getCompressionInfo().serialize(jsonGenerator);
jsonGenerator.writeEndObject();
jsonGenerator.writeEndObject();
@@ -97,15 +94,7 @@ public class JRTServerConfigRequestV3 implements JRTServerConfigRequest {
} catch (IOException e) {
throw new IllegalArgumentException("Could not add OK response for " + this);
}
- request.returnValues().add(createResponseValue(byteArrayOutputStream));
- ByteBuffer buf = responsePayload.getData().wrap();
- if (buf.hasArray() && buf.remaining() == buf.array().length) {
- request.returnValues().add(new DataValue(buf.array()));
- } else {
- byte[] dst = new byte[buf.remaining()];
- buf.get(dst);
- request.returnValues().add(new DataValue(dst));
- }
+ addPayload(responsePayload, outputStream);
}
@Override
@@ -228,6 +217,25 @@ public class JRTServerConfigRequestV3 implements JRTServerConfigRequest {
jsonGenerator.writeRawValue(getRequestTrace().toString(true));
}
+ private void addPayloadCheckSums(JsonGenerator jsonGenerator, PayloadChecksums checksums) throws IOException {
+ if (checksums.getForType(MD5) != null)
+ setResponseField(jsonGenerator, SlimeResponseData.RESPONSE_CONFIG_MD5, checksums.getForType(MD5).asString());
+ if (checksums.getForType(XXHASH64) != null)
+ setResponseField(jsonGenerator, SlimeResponseData.RESPONSE_CONFIG_XXHASH64, checksums.getForType(XXHASH64).asString());
+ }
+
+ private void addPayload(Payload responsePayload, ByteArrayOutputStream byteArrayOutputStream) {
+ request.returnValues().add(createResponseValue(byteArrayOutputStream));
+ ByteBuffer buf = responsePayload.getData().wrap();
+ if (buf.hasArray() && buf.remaining() == buf.array().length) {
+ request.returnValues().add(new DataValue(buf.array()));
+ } else {
+ byte[] dst = new byte[buf.remaining()];
+ buf.get(dst);
+ request.returnValues().add(new DataValue(dst));
+ }
+ }
+
@Override
public long getRequestGeneration() {
return requestData.getRequestGeneration();