summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2019-10-04 15:10:11 +0200
committerMartin Polden <mpolden@mpolden.no>2019-10-07 13:59:40 +0200
commitc92653dace5115cfa3d180342b3fd9400904a0d6 (patch)
tree21ddcd87aee00a35f5cde47028a65ac43fb9eedb
parente8b367d8ff559d3cabf9fe3dee6a52d200af4d96 (diff)
Stop reading legacy configServerHostnames field
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/CuratorDb.java4
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/VersionStatusSerializer.java30
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/VersionStatusSerializerTest.java13
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/testdata/version-status-legacy-format.json20
4 files changed, 37 insertions, 30 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/CuratorDb.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/CuratorDb.java
index 357dbb37b27..b22b8845c24 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/CuratorDb.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/CuratorDb.java
@@ -6,7 +6,6 @@ import com.google.inject.Inject;
import com.yahoo.component.Version;
import com.yahoo.config.provision.ApplicationId;
import com.yahoo.config.provision.HostName;
-import com.yahoo.config.provision.InstanceName;
import com.yahoo.config.provision.TenantName;
import com.yahoo.config.provision.zone.ZoneId;
import com.yahoo.path.Path;
@@ -82,7 +81,8 @@ public class CuratorDb {
private static final Path applicationCertificateRoot = root.append("applicationCertificates");
private final StringSetSerializer stringSetSerializer = new StringSetSerializer();
- private final VersionStatusSerializer versionStatusSerializer = new VersionStatusSerializer();
+ private final NodeVersionSerializer nodeVersionSerializer = new NodeVersionSerializer();
+ private final VersionStatusSerializer versionStatusSerializer = new VersionStatusSerializer(nodeVersionSerializer);
private final ControllerVersionSerializer controllerVersionSerializer = new ControllerVersionSerializer();
private final ConfidenceOverrideSerializer confidenceOverrideSerializer = new ConfidenceOverrideSerializer();
private final TenantSerializer tenantSerializer = new TenantSerializer();
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/VersionStatusSerializer.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/VersionStatusSerializer.java
index 62fca7a419b..fd02546cf58 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/VersionStatusSerializer.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/VersionStatusSerializer.java
@@ -21,6 +21,7 @@ import java.util.Collection;
import java.util.Collections;
import java.util.LinkedHashSet;
import java.util.List;
+import java.util.Objects;
import java.util.Optional;
import java.util.Set;
@@ -60,7 +61,11 @@ public class VersionStatusSerializer {
private static final String productionField = "production";
private static final String deployingField = "deploying";
- private final NodeVersionSerializer nodeVersionSerializer = new NodeVersionSerializer();
+ private final NodeVersionSerializer nodeVersionSerializer;
+
+ public VersionStatusSerializer(NodeVersionSerializer nodeVersionSerializer) {
+ this.nodeVersionSerializer = Objects.requireNonNull(nodeVersionSerializer, "nodeVersionSerializer must be non-null");
+ }
public Slime toSlime(VersionStatus status) {
Slime slime = new Slime();
@@ -86,7 +91,6 @@ public class VersionStatusSerializer {
object.setBool(isReleasedField, version.isReleased());
deploymentStatisticsToSlime(version.statistics(), object.setObject(deploymentStatisticsField));
object.setString(confidenceField, version.confidence().name());
- configServersToSlime(version.nodeVersions().hostnames(), object.setArray(configServersField));
nodeVersionsToSlime(version.nodeVersions(), object.setArray(nodeVersionsField));
}
@@ -94,11 +98,6 @@ public class VersionStatusSerializer {
nodeVersionSerializer.nodeVersionsToSlime(nodeVersions.asMap().values(), array, false);
}
- // TODO(mpolden): Remove after October 2019
- private void configServersToSlime(Set<HostName> configServerHostnames, Cursor array) {
- configServerHostnames.stream().map(HostName::value).forEach(array::addString);
- }
-
private void deploymentStatisticsToSlime(DeploymentStatistics statistics, Cursor object) {
object.setString(versionField, statistics.version().toString());
applicationsToSlime(statistics.failing(), object.setArray(failingField));
@@ -124,24 +123,15 @@ public class VersionStatusSerializer {
object.field(isControllerVersionField).asBool(),
object.field(isSystemVersionField).asBool(),
object.field(isReleasedField).asBool(),
- nodeVersionsFromSlime(object, deploymentStatistics.version()),
+ nodeVersionsFromSlime(object.field(nodeVersionsField), deploymentStatistics.version()),
VespaVersion.Confidence.valueOf(object.field(confidenceField).asString())
);
}
- private NodeVersions nodeVersionsFromSlime(Inspector root, Version version) {
+ private NodeVersions nodeVersionsFromSlime(Inspector object, Version version) {
var nodeVersions = ImmutableMap.<HostName, NodeVersion>builder();
- var nodeVersionsRoot = root.field(nodeVersionsField);
- if (nodeVersionsRoot.valid()) {
- for (var nodeVersion : nodeVersionSerializer.nodeVersionsFromSlime(nodeVersionsRoot, Optional.of(version))) {
- nodeVersions.put(nodeVersion.hostname(), nodeVersion);
- }
- } else {
- // TODO(mpolden): Remove after October 2019
- var configServerHostnames = configServersFromSlime(root.field(configServersField));
- for (var hostname : configServerHostnames) {
- nodeVersions.put(hostname, NodeVersion.empty(hostname));
- }
+ for (var nodeVersion : nodeVersionSerializer.nodeVersionsFromSlime(object, Optional.of(version))) {
+ nodeVersions.put(nodeVersion.hostname(), nodeVersion);
}
return new NodeVersions(nodeVersions.build());
}
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/VersionStatusSerializerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/VersionStatusSerializerTest.java
index dd66f52561f..a80dcc118dc 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/VersionStatusSerializerTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/VersionStatusSerializerTest.java
@@ -46,7 +46,7 @@ public class VersionStatusSerializerTest {
false, nodeVersions(Version.fromString("5.0"), Version.fromString("5.1"),
Instant.ofEpochMilli(456), "cfg1", "cfg2", "cfg3"), VespaVersion.Confidence.normal));
VersionStatus status = new VersionStatus(vespaVersions);
- VersionStatusSerializer serializer = new VersionStatusSerializer();
+ VersionStatusSerializer serializer = new VersionStatusSerializer(new NodeVersionSerializer());
VersionStatus deserialized = serializer.fromSlime(serializer.toSlime(status));
assertEquals(status.versions().size(), deserialized.versions().size());
@@ -68,7 +68,7 @@ public class VersionStatusSerializerTest {
@Test
public void testLegacySerialization() throws Exception {
var data = Files.readAllBytes(Paths.get("src/test/java/com/yahoo/vespa/hosted/controller/persistence/testdata/version-status-legacy-format.json"));
- var serializer = new VersionStatusSerializer();
+ var serializer = new VersionStatusSerializer(new NodeVersionSerializer());
var deserializedStatus = serializer.fromSlime(SlimeUtils.jsonToSlime(data));
var statistics = new DeploymentStatistics(
@@ -77,11 +77,16 @@ public class VersionStatusSerializerTest {
List.of(),
List.of()
);
+ var nodeVersions = List.of(new NodeVersion(HostName.from("cfg1"), ZoneId.defaultId(), Version.fromString("7.0"),
+ Version.fromString("7.1"), Instant.ofEpochMilli(1111)),
+ new NodeVersion(HostName.from("cfg2"), ZoneId.defaultId(), Version.fromString("7.0"),
+ Version.fromString("7.1"), Instant.ofEpochMilli(2222)),
+ new NodeVersion(HostName.from("cfg3"), ZoneId.defaultId(), Version.fromString("7.0"),
+ Version.fromString("7.1"), Instant.ofEpochMilli(3333)));
var vespaVersion = new VespaVersion(statistics, "badc0ffee",
Instant.ofEpochMilli(123), true,
true, true,
- nodeVersions(Version.emptyVersion, Version.emptyVersion,
- Instant.EPOCH, "cfg1", "cfg2", "cfg3"),
+ NodeVersions.EMPTY.with(nodeVersions),
VespaVersion.Confidence.normal);
VespaVersion deserialized = deserializedStatus.versions().get(0);
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/testdata/version-status-legacy-format.json b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/testdata/version-status-legacy-format.json
index 96ca22e1c1a..08463ed7cb4 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/testdata/version-status-legacy-format.json
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/testdata/version-status-legacy-format.json
@@ -13,10 +13,22 @@
"deploying": []
},
"confidence": "normal",
- "configServerHostnames": [
- "cfg1",
- "cfg2",
- "cfg3"
+ "nodeVersions": [
+ {
+ "hostname": "cfg1",
+ "wantedVersion": "7.1",
+ "changedAt": 1111
+ },
+ {
+ "hostname": "cfg2",
+ "wantedVersion": "7.1",
+ "changedAt": 2222
+ },
+ {
+ "hostname": "cfg3",
+ "wantedVersion": "7.1",
+ "changedAt": 3333
+ }
]
}
]