diff options
author | Jon Bratseth <bratseth@gmail.com> | 2022-02-02 18:37:53 +0100 |
---|---|---|
committer | Jon Bratseth <bratseth@gmail.com> | 2022-02-02 18:37:53 +0100 |
commit | b8438c19dd4bfd19ab5db7abd5af053cc1d7cc4b (patch) | |
tree | 8de1524e0394c3698a5a1afc8cfe750a5108538b /config-model | |
parent | f095e16d4fa4b919fb1bf1a7f509322638d0fa6b (diff) |
Produce LinkedHashSets to get deterministic order
Diffstat (limited to 'config-model')
6 files changed, 25 insertions, 20 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/VespaModel.java b/config-model/src/main/java/com/yahoo/vespa/model/VespaModel.java index 91dbb56d20d..30416122214 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/VespaModel.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/VespaModel.java @@ -89,7 +89,6 @@ import static com.yahoo.text.StringUtilities.quote; import static java.util.stream.Collectors.toMap; import static java.util.stream.Collectors.toSet; import static java.util.stream.Collectors.toUnmodifiableMap; -import static java.util.stream.Collectors.toUnmodifiableSet; /** * <p> @@ -241,7 +240,8 @@ public final class VespaModel extends AbstractConfigProducerRoot implements Seri .map(database -> database.getInputDocType()) .collect(toSet()); - return typesWithIndexMode.stream().filter(typesWithIndexedFields::contains).collect(toUnmodifiableSet()); + return typesWithIndexMode.stream().filter(typesWithIndexedFields::contains) + .collect(Collectors.toCollection(() -> new LinkedHashSet<>())); } private void propagateRestartOnDeploy() { diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerCluster.java index 0b99496a9b4..bf3ba084091 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerCluster.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerCluster.java @@ -9,19 +9,18 @@ import com.yahoo.config.model.deploy.DeployState; import com.yahoo.config.model.producer.AbstractConfigProducer; import com.yahoo.config.provision.AllocatedHosts; import com.yahoo.config.provision.HostSpec; -import com.yahoo.net.HostName; import com.yahoo.vespa.model.Service; import com.yahoo.vespa.model.admin.Configserver; import com.yahoo.vespa.model.container.Container; import java.util.ArrayList; import java.util.Collection; +import java.util.Collections; +import java.util.LinkedHashSet; import java.util.Objects; import java.util.Set; import java.util.stream.Collectors; -import static java.util.stream.Collectors.toUnmodifiableSet; - /** * Used if clustercontroller is run standalone (not as part of the config server ZooKeeper cluster) * to provide common configs to container components. @@ -38,12 +37,12 @@ public class ClusterControllerCluster extends AbstractConfigProducer<ClusterCont public ClusterControllerCluster(AbstractConfigProducer<?> parent, String subId, DeployState deployState) { super(parent, subId); - this.previousHosts = deployState.getPreviousModel().stream() - .map(Model::allocatedHosts) - .map(AllocatedHosts::getHosts) - .flatMap(Collection::stream) - .map(HostSpec::hostname) - .collect(toUnmodifiableSet()); + this.previousHosts = Collections.unmodifiableSet(deployState.getPreviousModel().stream() + .map(Model::allocatedHosts) + .map(AllocatedHosts::getHosts) + .flatMap(Collection::stream) + .map(HostSpec::hostname) + .collect(Collectors.toCollection(() -> new LinkedHashSet<>()))); } @Override diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/QuotaValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/QuotaValidator.java index 841dbb204fd..e4a64e8d476 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/QuotaValidator.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/QuotaValidator.java @@ -10,6 +10,7 @@ import com.yahoo.config.provision.SystemName; import com.yahoo.vespa.model.VespaModel; import java.math.BigDecimal; +import java.util.LinkedHashSet; import java.util.Locale; import java.util.Map; import java.util.Set; @@ -61,7 +62,7 @@ public class QuotaValidator extends Validator { .map(hostSpec -> hostSpec.membership().orElseThrow().cluster()) .filter(cluster -> cluster.type() == ClusterSpec.Type.admin) .map(ClusterSpec::id) - .collect(Collectors.toUnmodifiableSet()); + .collect(Collectors.toCollection(() -> new LinkedHashSet<>())); } /** Check that all clusters in the application do not exceed the quota max cluster size. */ diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/ApplicationContainerCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/container/ApplicationContainerCluster.java index 5bf7ea0b290..6982f10f658 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/ApplicationContainerCluster.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/ApplicationContainerCluster.java @@ -40,6 +40,7 @@ import com.yahoo.vespa.model.utils.FileSender; import java.util.ArrayList; import java.util.Collection; +import java.util.Collections; import java.util.LinkedHashSet; import java.util.List; import java.util.Optional; @@ -96,12 +97,12 @@ public final class ApplicationContainerCluster extends ContainerCluster<Applicat public ApplicationContainerCluster(AbstractConfigProducer<?> parent, String configSubId, String clusterId, DeployState deployState) { super(parent, configSubId, clusterId, deployState, true, 10); this.tlsClientAuthority = deployState.tlsClientAuthority(); - previousHosts = deployState.getPreviousModel().stream() - .map(Model::allocatedHosts) - .map(AllocatedHosts::getHosts) - .flatMap(Collection::stream) - .map(HostSpec::hostname) - .collect(Collectors.toUnmodifiableSet()); + previousHosts = Collections.unmodifiableSet(deployState.getPreviousModel().stream() + .map(Model::allocatedHosts) + .map(AllocatedHosts::getHosts) + .flatMap(Collection::stream) + .map(HostSpec::hostname) + .collect(Collectors.toCollection(() -> new LinkedHashSet<>()))); addSimpleComponent("com.yahoo.language.provider.DefaultLinguisticsProvider"); addSimpleComponent("com.yahoo.language.provider.DefaultEmbedderProvider"); diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java index 4ef0ed12456..b89c48931b2 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java @@ -96,6 +96,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.Collections; +import java.util.LinkedHashSet; import java.util.List; import java.util.Map; import java.util.Optional; @@ -348,7 +349,7 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> { // Only consider global endpoints. .filter(endpoint -> endpoint.scope() == ApplicationClusterEndpoint.Scope.global) .flatMap(endpoint -> endpoint.names().stream()) - .collect(Collectors.toUnmodifiableSet()); + .collect(Collectors.toCollection(() -> new LinkedHashSet<>())); // Build the comma delimited list of endpoints this container should be known as. // Confusingly called 'rotations' for legacy reasons. diff --git a/config-model/src/main/java/com/yahoo/vespa/model/filedistribution/FileReferencesRepository.java b/config-model/src/main/java/com/yahoo/vespa/model/filedistribution/FileReferencesRepository.java index ac5c456a7b1..3962aa3d612 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/filedistribution/FileReferencesRepository.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/filedistribution/FileReferencesRepository.java @@ -22,7 +22,10 @@ public class FileReferencesRepository { } public Set<FileReference> allFileReferences() { - return fileRegistry.export().stream().map(e -> e.reference).collect(Collectors.toUnmodifiableSet()); + return fileRegistry.export() + .stream() + .map(e -> e.reference) + .collect(Collectors.toCollection(() -> new LinkedHashSet<>())); } } |