summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Musum <musum@verizonmedia.com>2019-08-22 11:13:41 +0200
committerHarald Musum <musum@verizonmedia.com>2019-08-22 11:13:41 +0200
commite6c6f0a917ecd367b74e15be9b05980e8946c84b (patch)
tree4141a595b49dca7e473210d9a3cdbc202c2d2dfd
parent3b9047f5113146ff578ac4eea19d1ec5796fcac8 (diff)
Do not use RestrictedServerCnxnFactory in self-hosted installations
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/Service.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerCluster.java7
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV2Builder.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/configserver/ConfigserverCluster.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/cluster/ContentCluster.java9
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/admin/ClusterControllerTestCase.java17
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/configserver/ConfigserverClusterTest.java19
-rw-r--r--configdefinitions/src/vespa/zookeeper-server.def5
-rw-r--r--zkfacade/src/main/java/com/yahoo/vespa/zookeeper/ZooKeeperServer.java3
9 files changed, 48 insertions, 18 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/Service.java b/config-model/src/main/java/com/yahoo/vespa/model/Service.java
index 7958718af11..25128c5ab14 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/Service.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/Service.java
@@ -7,7 +7,7 @@ import java.util.HashMap;
import java.util.Optional;
/**
- * Representation of a markProcessed which runs a service
+ * Representation of a process which runs a service
*
* @author gjoranv
*/
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 8ba85047057..84ca6416269 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
@@ -4,6 +4,7 @@ package com.yahoo.vespa.model.admin.clustercontroller;
import com.google.common.base.Joiner;
import com.yahoo.cloud.config.ZookeeperServerConfig;
import com.yahoo.cloud.config.ZookeepersConfig;
+import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.config.model.producer.AbstractConfigProducer;
import com.yahoo.vespa.model.Service;
import com.yahoo.vespa.model.admin.Configserver;
@@ -17,7 +18,6 @@ import java.util.Collection;
* to provide common configs to container components.
*
* @author Ulf Lilleengen
- * @since 5.6
*/
public class ClusterControllerCluster extends AbstractConfigProducer<ClusterControllerContainerCluster> implements
ZookeeperServerConfig.Producer,
@@ -25,9 +25,11 @@ public class ClusterControllerCluster extends AbstractConfigProducer<ClusterCont
private static final int ZK_CLIENT_PORT = 2181;
private ClusterControllerContainerCluster containerCluster = null;
+ private final DeployState deployState;
- public ClusterControllerCluster(AbstractConfigProducer parent, String subId) {
+ public ClusterControllerCluster(AbstractConfigProducer parent, String subId, DeployState deployState) {
super(parent, subId);
+ this.deployState = deployState;
}
@Override
@@ -39,6 +41,7 @@ public class ClusterControllerCluster extends AbstractConfigProducer<ClusterCont
serverBuilder.id(container.index());
builder.server(serverBuilder);
}
+ builder.useRestrictedServerCnxnFactory( ! deployState.isHosted());
}
@Override
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV2Builder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV2Builder.java
index 1b0e04b50a8..cd49e16dc56 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV2Builder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV2Builder.java
@@ -89,7 +89,7 @@ public class DomAdminV2Builder extends DomAdminBuilderBase {
boolean standaloneZooKeeper = "true".equals(controllersElements.getAttribute(ATTRIBUTE_CLUSTER_CONTROLLER_STANDALONE_ZK)) || multitenant;
if (standaloneZooKeeper) {
- parent = new ClusterControllerCluster(parent, "standalone");
+ parent = new ClusterControllerCluster(parent, "standalone", deployState);
}
var cluster = new ClusterControllerContainerCluster(parent,
"cluster-controllers",
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/configserver/ConfigserverCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/container/configserver/ConfigserverCluster.java
index 2eff081f42d..205489ca0fc 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/configserver/ConfigserverCluster.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/configserver/ConfigserverCluster.java
@@ -78,6 +78,8 @@ public class ConfigserverCluster extends AbstractConfigProducer
if (options.zookeeperClientPort().isPresent()) {
builder.clientPort(options.zookeeperClientPort().get());
}
+ boolean hosted = options.hostedVespa().orElse(false);
+ builder.useRestrictedServerCnxnFactory( ! hosted);
}
@Override
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/ContentCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/ContentCluster.java
index 48779657162..87eff87592e 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/ContentCluster.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/ContentCluster.java
@@ -311,7 +311,11 @@ public class ContentCluster extends AbstractConfigProducer implements
Collection<HostResource> hosts = nodesSpecification.isDedicated() ?
getControllerHosts(nodesSpecification, admin, clusterName, context) :
drawControllerHosts(nodesSpecification.count(), rootGroup, containers);
- clusterControllers = createClusterControllers(new ClusterControllerCluster(contentCluster, "standalone"), hosts, clusterName, true, context.getDeployState());
+ clusterControllers = createClusterControllers(new ClusterControllerCluster(contentCluster, "standalone", context.getDeployState()),
+ hosts,
+ clusterName,
+ true,
+ context.getDeployState());
contentCluster.clusterControllers = clusterControllers;
}
else {
@@ -447,7 +451,8 @@ public class ContentCluster extends AbstractConfigProducer implements
private ClusterControllerContainerCluster createClusterControllers(AbstractConfigProducer parent,
Collection<HostResource> hosts,
- String name, boolean multitenant,
+ String name,
+ boolean multitenant,
DeployState deployState) {
var clusterControllers = new ClusterControllerContainerCluster(parent, name, name, deployState);
List<ClusterControllerContainer> containers = new ArrayList<>();
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/admin/ClusterControllerTestCase.java b/config-model/src/test/java/com/yahoo/vespa/model/admin/ClusterControllerTestCase.java
index c88d91a3ede..35cbec015de 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/admin/ClusterControllerTestCase.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/admin/ClusterControllerTestCase.java
@@ -1,7 +1,6 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.admin;
-import com.google.common.base.Function;
import com.google.common.collect.Collections2;
import com.yahoo.cloud.config.ZookeeperServerConfig;
import com.yahoo.cloud.config.ZookeepersConfig;
@@ -27,7 +26,10 @@ import java.util.Collection;
import java.util.List;
import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertThat;
+import static org.junit.Assert.assertTrue;
/**
* Test for creating cluster controllers under the admin tag.
@@ -208,16 +210,11 @@ public class ClusterControllerTestCase extends DomBuilderTest {
ZookeeperServerConfig config = new ZookeeperServerConfig(builder);
assertThat(config.server().size(), is(3));
assertThat(config.myid(), is(id));
- Collection<Integer> serverIds = Collections2.transform(config.server(), new Function<ZookeeperServerConfig.Server, Integer>() {
- @Override
- public Integer apply(ZookeeperServerConfig.Server server) {
- return server.id();
- }
- });
+ Collection<Integer> serverIds = Collections2.transform(config.server(), ZookeeperServerConfig.Server::id);
assertTrue(serverIds.contains(id));
+ assertTrue(config.useRestrictedServerCnxnFactory());
}
-
@Test
public void testUnconfigured() throws Exception {
String xml = "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n" +
@@ -435,7 +432,7 @@ public class ClusterControllerTestCase extends DomBuilderTest {
.withServices(servicesXml)
.withSearchDefinitions(sds)
.build());
- SimpleApplicationValidator.checkServices(new StringReader(servicesXml), new Version(6));
+ SimpleApplicationValidator.checkServices(new StringReader(servicesXml), new Version(7));
return model;
}
}
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/configserver/ConfigserverClusterTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/configserver/ConfigserverClusterTest.java
index 2a41f972eb3..d82859e4df2 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/configserver/ConfigserverClusterTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/configserver/ConfigserverClusterTest.java
@@ -59,6 +59,18 @@ public class ConfigserverClusterTest {
assertZookeeperServerProperty(config.server(), ZookeeperServerConfig.Server::hostname, "cfg1", "localhost", "cfg3");
assertZookeeperServerProperty(config.server(), ZookeeperServerConfig.Server::id, 4, 2, 3);
assertEquals(2, config.myid());
+ assertFalse(config.useRestrictedServerCnxnFactory());
+ }
+
+ @Test
+ public void zookeeperConfig_self_hosted() {
+ final boolean hostedVespa = false;
+ TestOptions testOptions = createTestOptions(Arrays.asList("cfg1", "localhost", "cfg3"), Arrays.asList(4, 2, 3), hostedVespa);
+ ZookeeperServerConfig config = getConfig(ZookeeperServerConfig.class, testOptions);
+ assertZookeeperServerProperty(config.server(), ZookeeperServerConfig.Server::hostname, "cfg1", "localhost", "cfg3");
+ assertZookeeperServerProperty(config.server(), ZookeeperServerConfig.Server::id, 4, 2, 3);
+ assertEquals(2, config.myid());
+ assertTrue(config.useRestrictedServerCnxnFactory());
}
@Test(expected = IllegalArgumentException.class)
@@ -118,11 +130,16 @@ public class ConfigserverClusterTest {
assertEquals(expectedPropertyValues, actualPropertyValues);
}
+
private static TestOptions createTestOptions(List<String> configServerHostnames, List<Integer> configServerZkIds) {
+ return createTestOptions(configServerHostnames, configServerZkIds, true);
+
+ }
+ private static TestOptions createTestOptions(List<String> configServerHostnames, List<Integer> configServerZkIds, boolean hostedVespa) {
TestOptions testOptions = new TestOptions()
.rpcPort(12345)
.useVespaVersionInRequest(true)
- .hostedVespa(true)
+ .hostedVespa(hostedVespa)
.environment("test")
.region("bar")
.numParallelTenantLoaders(99);
diff --git a/configdefinitions/src/vespa/zookeeper-server.def b/configdefinitions/src/vespa/zookeeper-server.def
index bd868504eba..99a45f9ff66 100644
--- a/configdefinitions/src/vespa/zookeeper-server.def
+++ b/configdefinitions/src/vespa/zookeeper-server.def
@@ -4,6 +4,11 @@ namespace=cloud.config
# Vespa home is prepended if the file is relative
zooKeeperConfigFile string default="conf/zookeeper/zookeeper.cfg"
+# Use a connection factory that is controlled by vespa_zkfacade__restrict environment variable
+# See RestrictedServerCnxnFactory for details
+useRestrictedServerCnxnFactory bool default=true
+
+
# For more info about the values below, see ZooKeeper documentation
# tick time in milliseconds
diff --git a/zkfacade/src/main/java/com/yahoo/vespa/zookeeper/ZooKeeperServer.java b/zkfacade/src/main/java/com/yahoo/vespa/zookeeper/ZooKeeperServer.java
index 9c580b4f9ce..5b78bc48a2d 100644
--- a/zkfacade/src/main/java/com/yahoo/vespa/zookeeper/ZooKeeperServer.java
+++ b/zkfacade/src/main/java/com/yahoo/vespa/zookeeper/ZooKeeperServer.java
@@ -31,7 +31,8 @@ public class ZooKeeperServer extends AbstractComponent implements Runnable {
this.zookeeperServerConfig = zookeeperServerConfig;
System.setProperty("zookeeper.jmx.log4j.disable", "true");
System.setProperty(ZOOKEEPER_JUTE_MAX_BUFFER, "" + zookeeperServerConfig.juteMaxBuffer());
- System.setProperty("zookeeper.serverCnxnFactory", "com.yahoo.vespa.zookeeper.RestrictedServerCnxnFactory");
+ if (zookeeperServerConfig.useRestrictedServerCnxnFactory())
+ System.setProperty("zookeeper.serverCnxnFactory", "com.yahoo.vespa.zookeeper.RestrictedServerCnxnFactory");
writeConfigToDisk(zookeeperServerConfig);
zkServerThread = new Thread(this, "zookeeper server");