diff options
author | gjoranv <gv@verizonmedia.com> | 2019-06-11 12:09:17 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-06-11 12:09:17 +0200 |
commit | b285157131ccf7a9a7e5b10e73d1ded8df1eacfc (patch) | |
tree | 47b1e297400251489f1d96cc477c99c1032e2741 | |
parent | 9162dfe36a859f659f4d76883b5604fd50caa99a (diff) | |
parent | 8a16228d0e5528833f454fb5e4afc6631e9a35ec (diff) |
Merge pull request #9732 from vespa-engine/gjoranv/ensure-same-host
Gjoranv/ensure same host
8 files changed, 16 insertions, 14 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/Admin.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/Admin.java index 44c10b0738b..03c8055dd12 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/admin/Admin.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/Admin.java @@ -221,7 +221,9 @@ public class Admin extends AbstractConfigProducer implements Serializable { metricsProxyCluster = new MetricsProxyContainerCluster(this, "metrics", deployState); int index = 0; for (var host : hosts) { - var container = new MetricsProxyContainer(metricsProxyCluster, index++, deployState.isHosted()); + // Send hostname to be used in configId (instead of index), as the sorting of hosts seems to be unstable + // between config changes, even when the set of hosts is unchanged. + var container = new MetricsProxyContainer(metricsProxyCluster, host.getHostname(), index, deployState.isHosted()); addAndInitializeService(deployState.getDeployLogger(), host, container); metricsProxyCluster.addContainer(container); } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainer.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainer.java index e683b70bbde..3bc38cad1d1 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainer.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainer.java @@ -45,8 +45,8 @@ public class MetricsProxyContainer extends Container implements private final boolean isHostedVespa; - public MetricsProxyContainer(AbstractConfigProducer parent, int index, boolean isHostedVespa) { - super(parent, "metricsproxy." + index, index); + public MetricsProxyContainer(AbstractConfigProducer parent, String hostname, int index, boolean isHostedVespa) { + super(parent, hostname, index); this.isHostedVespa = isHostedVespa; setProp("clustertype", "admin"); setProp("index", String.valueOf(index)); diff --git a/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerTest.java b/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerTest.java index a10a5dcf4cc..d2bf4b601a6 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerTest.java @@ -9,6 +9,7 @@ import com.yahoo.vespa.model.test.VespaModelTester; import org.junit.Test; import static com.yahoo.config.model.api.container.ContainerServiceType.METRICS_PROXY_CONTAINER; +import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyModelTester.CLUSTER_CONFIG_ID; import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyModelTester.CONTAINER_CONFIG_ID; import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyModelTester.MY_FLAVOR; import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyModelTester.getHostedModel; @@ -101,7 +102,9 @@ public class MetricsProxyContainerTest { public void hosted_application_propagates_node_dimensions() { String services = servicesWithContent(); VespaModel hostedModel = getHostedModel(services); - NodeDimensionsConfig config = getNodeDimensionsConfig(hostedModel); + assertEquals(1, hostedModel.getHosts().size()); + String configId = CLUSTER_CONFIG_ID + "/" + hostedModel.getHosts().iterator().next().getHostname(); + NodeDimensionsConfig config = getNodeDimensionsConfig(hostedModel, configId); assertEquals("content", config.dimensions(NodeDimensionNames.CLUSTER_TYPE)); assertEquals("my-content", config.dimensions(NodeDimensionNames.CLUSTER_ID)); diff --git a/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyModelTester.java b/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyModelTester.java index 81b06e54585..13589c763e2 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyModelTester.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyModelTester.java @@ -32,7 +32,7 @@ class MetricsProxyModelTester { static final String CLUSTER_CONFIG_ID = "admin/metrics"; // Used for all configs that are produced by the container, not the cluster. - static final String CONTAINER_CONFIG_ID = CLUSTER_CONFIG_ID + "/metricsproxy.0"; + static final String CONTAINER_CONFIG_ID = CLUSTER_CONFIG_ID + "/localhost"; static VespaModel getModel(String servicesXml) { var numberOfHosts = 1; @@ -87,8 +87,8 @@ class MetricsProxyModelTester { return new QrStartConfig((QrStartConfig.Builder) model.getConfig(new QrStartConfig.Builder(), CLUSTER_CONFIG_ID)); } - static NodeDimensionsConfig getNodeDimensionsConfig(VespaModel model) { - return new NodeDimensionsConfig((NodeDimensionsConfig.Builder) model.getConfig(new NodeDimensionsConfig.Builder(), CONTAINER_CONFIG_ID)); + static NodeDimensionsConfig getNodeDimensionsConfig(VespaModel model, String configId) { + return new NodeDimensionsConfig((NodeDimensionsConfig.Builder) model.getConfig(new NodeDimensionsConfig.Builder(), configId)); } static VespaServicesConfig getVespaServicesConfig(String servicesXml) { diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/ConfigValueChangeValidatorTest.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/ConfigValueChangeValidatorTest.java index 3fbfbf33fb3..6d9eabf326b 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/ConfigValueChangeValidatorTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/ConfigValueChangeValidatorTest.java @@ -61,7 +61,7 @@ public class ConfigValueChangeValidatorTest { assertEquals(3, changes.size()); assertComponentsEquals(changes, "default/container.0", 0); assertComponentsEquals(changes, "admin/cluster-controllers/0", 1); - assertComponentsEquals(changes, "admin/metrics/metricsproxy.0", 2); + assertComponentsEquals(changes, "admin/metrics/localhost", 2); } @Test diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/core/VespaMetrics.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/core/VespaMetrics.java index becfd9a54ce..054fa704ecb 100644 --- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/core/VespaMetrics.java +++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/core/VespaMetrics.java @@ -41,19 +41,16 @@ import static com.yahoo.log.LogLevel.DEBUG; public class VespaMetrics { private static final Logger log = Logger.getLogger(VespaMetrics.class.getPackage().getName()); - // MUST be the same as the constant defined in config-model public static final ConsumerId VESPA_CONSUMER_ID = toConsumerId("Vespa"); public static final DimensionId METRIC_TYPE_DIMENSION_ID = toDimensionId("metrictype"); public static final DimensionId INSTANCE_DIMENSION_ID = toDimensionId("instance"); - private static final Set<ConsumerId> DEFAULT_CONSUMERS = Collections.singleton(VESPA_CONSUMER_ID); - private final MetricsConsumers metricsConsumers; private static final MetricsFormatter formatter = new MetricsFormatter(false, false); - public VespaMetrics(MetricsConsumers metricsConsumers, VespaServices vespaServices) { + public VespaMetrics(MetricsConsumers metricsConsumers) { this.metricsConsumers = metricsConsumers; } diff --git a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/TestUtil.java b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/TestUtil.java index 6f86be3aa30..5e8322c4c01 100644 --- a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/TestUtil.java +++ b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/TestUtil.java @@ -31,7 +31,7 @@ public class TestUtil { MetricsConsumers consumers, ApplicationDimensions applicationDimensions, NodeDimensions nodeDimensions) { - VespaMetrics metrics = new VespaMetrics(consumers, vespaServices); + VespaMetrics metrics = new VespaMetrics(consumers); return new MetricsManager(vespaServices, metrics, new ExternalMetrics(consumers), applicationDimensions, nodeDimensions); } diff --git a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/rpc/IntegrationTester.java b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/rpc/IntegrationTester.java index 9507f01491e..df1ef9e5035 100644 --- a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/rpc/IntegrationTester.java +++ b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/rpc/IntegrationTester.java @@ -68,7 +68,7 @@ public class IntegrationTester implements AutoCloseable { vespaServices = new VespaServices(servicesConfig(), monitoringConfig(), null); MetricsConsumers consumers = new MetricsConsumers(consumersConfig()); - VespaMetrics vespaMetrics = new VespaMetrics(consumers, vespaServices); + VespaMetrics vespaMetrics = new VespaMetrics(consumers); ExternalMetrics externalMetrics = new ExternalMetrics(consumers); ApplicationDimensions appDimensions = new ApplicationDimensions(applicationDimensionsConfig()); NodeDimensions nodeDimensions = new NodeDimensions(nodeDimensionsConfig()); |