diff options
author | Martin Polden <mpolden@mpolden.no> | 2019-10-04 15:10:11 +0200 |
---|---|---|
committer | Martin Polden <mpolden@mpolden.no> | 2019-10-07 13:59:40 +0200 |
commit | c92653dace5115cfa3d180342b3fd9400904a0d6 (patch) | |
tree | 21ddcd87aee00a35f5cde47028a65ac43fb9eedb | |
parent | e8b367d8ff559d3cabf9fe3dee6a52d200af4d96 (diff) |
Stop reading legacy configServerHostnames field
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 + } ] } ] |