From 452678ef3262f788d58f2de596ca569dee1b8680 Mon Sep 17 00:00:00 2001 From: gjoranv Date: Wed, 5 Sep 2018 15:09:18 +0200 Subject: Remove legacy config container.jdisc.config.http-server --- .../model/container/http/ConnectorFactory.java | 120 +++++---------------- .../com/yahoo/vespa/model/container/http/Http.java | 18 +--- .../container/http/xml/JettyConnectorBuilder.java | 13 +-- .../model/container/http/FilterBindingsTest.java | 4 +- .../xml/JettyContainerModelBuilderTest.java | 80 ++------------ .../src/test/schema-test-files/services.xml | 6 +- container-disc/CMakeLists.txt | 1 - .../container.jdisc.config.http-server.def | 47 -------- 8 files changed, 34 insertions(+), 255 deletions(-) delete mode 100644 container-disc/src/main/resources/configdefinitions/container.jdisc.config.http-server.def diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/http/ConnectorFactory.java b/config-model/src/main/java/com/yahoo/vespa/model/container/http/ConnectorFactory.java index a9d3ec0e5a2..66d779d6fff 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/http/ConnectorFactory.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/http/ConnectorFactory.java @@ -5,13 +5,11 @@ import com.yahoo.component.ComponentId; import com.yahoo.container.bundle.BundleInstantiationSpecification; import com.yahoo.jdisc.http.ConnectorConfig; import com.yahoo.osgi.provider.model.ComponentModel; -import com.yahoo.text.XML; import com.yahoo.vespa.model.container.component.SimpleComponent; import com.yahoo.vespa.model.container.http.ssl.LegacySslProvider; import org.w3c.dom.Element; import static com.yahoo.component.ComponentSpecification.fromString; -import static com.yahoo.jdisc.http.ConnectorConfig.Ssl.KeyStoreType; /** * @author Einar M R Rosenvinge @@ -22,16 +20,14 @@ public class ConnectorFactory extends SimpleComponent implements ConnectorConfig private final String name; private final int listenPort; - private final Element legacyConfig; private final SimpleComponent sslProviderComponent; public ConnectorFactory(String name, int listenPort) { - this(name, listenPort, null, new LegacySslProvider(name)); + this(name, listenPort, new LegacySslProvider(name)); } public ConnectorFactory(String name, int listenPort, - Element legacyConfig, SimpleComponent sslProviderComponent) { super(new ComponentModel( new BundleInstantiationSpecification(new ComponentId(name), @@ -39,7 +35,6 @@ public class ConnectorFactory extends SimpleComponent implements ConnectorConfig fromString("jdisc_http_service")))); this.name = name; this.listenPort = listenPort; - this.legacyConfig = legacyConfig; this.sslProviderComponent = sslProviderComponent; addChild(sslProviderComponent); inject(sslProviderComponent); @@ -47,7 +42,6 @@ public class ConnectorFactory extends SimpleComponent implements ConnectorConfig @Override public void getConfig(ConnectorConfig.Builder connectorBuilder) { - configureWithLegacyHttpConfig(legacyConfig, connectorBuilder); connectorBuilder.listenPort(listenPort); connectorBuilder.name(name); ((ConnectorConfig.Producer)sslProviderComponent).getConfig(connectorBuilder); @@ -61,97 +55,31 @@ public class ConnectorFactory extends SimpleComponent implements ConnectorConfig return listenPort; } - // TODO Remove support for legacy config in Vespa 7 - @Deprecated - private static void configureWithLegacyHttpConfig(Element legacyConfig, ConnectorConfig.Builder connectorBuilder) { - if (legacyConfig != null) { - { - Element tcpKeepAliveEnabled = XML.getChild(legacyConfig, "tcpKeepAliveEnabled"); - if (tcpKeepAliveEnabled != null) { - connectorBuilder.tcpKeepAliveEnabled(Boolean.valueOf(XML.getValue(tcpKeepAliveEnabled).trim())); - } - } - { - Element tcpNoDelayEnabled = XML.getChild(legacyConfig, "tcpNoDelayEnabled"); - if (tcpNoDelayEnabled != null) { - connectorBuilder.tcpNoDelay(Boolean.valueOf(XML.getValue(tcpNoDelayEnabled).trim())); - } - } - { - Element tcpListenBacklogLength = XML.getChild(legacyConfig, "tcpListenBacklogLength"); - if (tcpListenBacklogLength != null) { - connectorBuilder.acceptQueueSize(Integer.parseInt(XML.getValue(tcpListenBacklogLength).trim())); - } - } - { - Element idleConnectionTimeout = XML.getChild(legacyConfig, "idleConnectionTimeout"); - if (idleConnectionTimeout != null) { - connectorBuilder.idleTimeout(Double.parseDouble(XML.getValue(idleConnectionTimeout).trim())); - } - } - { - Element soLinger = XML.getChild(legacyConfig, "soLinger"); - if (soLinger != null) { +< + private void addSslKeyStoreConfigurator(String name, Element sslKeystoreConfigurator) { + addSslConfigurator("ssl-keystore-configurator@" + name, + DefaultSslKeyStoreConfigurator.class, + sslKeystoreConfigurator); + } - connectorBuilder.soLingerTime(Double.parseDouble(XML.getValue(soLinger).trim())); - } - } - { - Element sendBufferSize = XML.getChild(legacyConfig, "sendBufferSize"); - if (sendBufferSize != null) { - connectorBuilder.outputBufferSize(Integer.parseInt(XML.getValue(sendBufferSize).trim())); - } - } - { - Element maxHeaderSize = XML.getChild(legacyConfig, "maxHeaderSize"); - if (maxHeaderSize != null) { - connectorBuilder.headerCacheSize(Integer.parseInt(XML.getValue(maxHeaderSize).trim())); - } - } + private void addSslTrustStoreConfigurator(String name, Element sslKeystoreConfigurator) { + addSslConfigurator("ssl-truststore-configurator@" + name, + DefaultSslTrustStoreConfigurator.class, + sslKeystoreConfigurator); + } - Element ssl = XML.getChild(legacyConfig, "ssl"); - Element sslEnabled = XML.getChild(ssl, "enabled"); - if (ssl != null && sslEnabled != null && Boolean.parseBoolean(XML.getValue(sslEnabled).trim())) { - ConnectorConfig.Ssl.Builder sslBuilder = new ConnectorConfig.Ssl.Builder(); - sslBuilder.enabled(true); - { - Element keyStoreType = XML.getChild(ssl, "keyStoreType"); - if (keyStoreType != null) { - sslBuilder.keyStoreType(KeyStoreType.Enum.valueOf(XML.getValue(keyStoreType).trim())); - } - } - { - Element keyStorePath = XML.getChild(ssl, "keyStorePath"); - if (keyStorePath != null) { - sslBuilder.keyStorePath(XML.getValue(keyStorePath).trim()); - } - } - { - Element trustStorePath = XML.getChild(ssl, "trustStorePath"); - if (trustStorePath != null) { - sslBuilder.trustStorePath(XML.getValue(trustStorePath).trim()); - } - } - { - Element keyDBKey = XML.getChild(ssl, "keyDBKey"); - if (keyDBKey != null) { - sslBuilder.keyDbKey(XML.getValue(keyDBKey).trim()); - } - } - { - Element algorithm = XML.getChild(ssl, "algorithm"); - if (algorithm != null) { - sslBuilder.sslKeyManagerFactoryAlgorithm(XML.getValue(algorithm).trim()); - } - } - { - Element protocol = XML.getChild(ssl, "protocol"); - if (protocol != null) { - sslBuilder.protocol(XML.getValue(protocol).trim()); - } - } - connectorBuilder.ssl(sslBuilder); - } + private void addSslConfigurator(String idSpec, Class defaultImplementation, Element configuratorElement) { + SimpleComponent configuratorComponent; + if (configuratorElement != null) { + String className = configuratorElement.getAttribute("class"); + String bundleName = configuratorElement.getAttribute("bundle"); + configuratorComponent = new SimpleComponent(new ComponentModel(idSpec, className, bundleName)); + } else { + configuratorComponent = + new SimpleComponent(new ComponentModel(idSpec, defaultImplementation.getName(), "jdisc_http_service")); } + addChild(configuratorComponent); + inject(configuratorComponent); } + } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/http/Http.java b/config-model/src/main/java/com/yahoo/vespa/model/container/http/Http.java index 4eed3628bfd..9e85a889075 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/http/Http.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/http/Http.java @@ -4,7 +4,6 @@ package com.yahoo.vespa.model.container.http; import com.yahoo.component.ComponentSpecification; import com.yahoo.component.provider.ComponentRegistry; import com.yahoo.config.model.producer.AbstractConfigProducer; -import com.yahoo.container.jdisc.config.HttpServerConfig; import com.yahoo.jdisc.http.ServerConfig; import com.yahoo.vespa.model.container.component.chain.Chain; import com.yahoo.vespa.model.container.component.chain.ChainedComponent; @@ -19,8 +18,7 @@ import java.util.Optional; * * @author Tony Vaagenes */ -public class Http extends AbstractConfigProducer> - implements HttpServerConfig.Producer, ServerConfig.Producer { +public class Http extends AbstractConfigProducer> implements ServerConfig.Producer { public static class Binding { public final ComponentSpecification filterId; @@ -88,12 +86,6 @@ public class Http extends AbstractConfigProducer> return accessControl; } - @Override - public void getConfig(HttpServerConfig.Builder builder) { - for (Binding binding: bindings) - builder.filter(filterBindings(binding)); - } - @Override public void getConfig(ServerConfig.Builder builder) { for (final Binding binding : bindings) { @@ -104,14 +96,6 @@ public class Http extends AbstractConfigProducer> } } - static HttpServerConfig.Filter.Builder filterBindings(Binding binding) { - HttpServerConfig.Filter.Builder builder = new HttpServerConfig.Filter.Builder(); - builder.id(binding.filterId.stringValue()). - binding(binding.binding); - return builder; - } - - @Override public void validate() throws Exception { validate(bindings); diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/JettyConnectorBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/JettyConnectorBuilder.java index 02840ff380b..a33b49f8749 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/JettyConnectorBuilder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/JettyConnectorBuilder.java @@ -22,25 +22,14 @@ import java.util.logging.Logger; * @author mortent */ public class JettyConnectorBuilder extends VespaDomBuilder.DomConfigProducerBuilder { - private static final Logger log = Logger.getLogger(JettyConnectorBuilder.class.getName()); @Override protected ConnectorFactory doBuild(DeployState deployState, AbstractConfigProducer ancestor, Element serverSpec) { String name = XmlHelper.getIdString(serverSpec); int port = HttpBuilder.readPort(serverSpec, deployState.isHosted(), deployState.getDeployLogger()); - Element legacyServerConfig = XML.getChild(serverSpec, "config"); - if (legacyServerConfig != null) { - String configName = legacyServerConfig.getAttribute("name"); - if (configName.equals("container.jdisc.config.http-server")) { - deployState.getDeployLogger().log(Level.WARNING, "The config 'container.jdisc.config.http-server' is deprecated and will be removed in a later version of Vespa." - + " Please use 'jdisc.http.connector' instead, see http://docs.vespa.ai/documentation/jdisc/http-server-and-filters.html#configuring-jetty-server"); - } else { - legacyServerConfig = null; - } - } SimpleComponent sslProviderComponent = getSslConfigComponents(name, serverSpec); - return new ConnectorFactory(name, port, legacyServerConfig, sslProviderComponent); + return new ConnectorFactory(name, port, sslProviderComponent); } SimpleComponent getSslConfigComponents(String serverName, Element serverSpec) { diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/http/FilterBindingsTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/http/FilterBindingsTest.java index 643e65ffc61..4d04a1be614 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/container/http/FilterBindingsTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/container/http/FilterBindingsTest.java @@ -3,7 +3,6 @@ package com.yahoo.vespa.model.container.http; import com.yahoo.config.model.deploy.DeployState; import com.yahoo.config.model.builder.xml.test.DomBuilderTest; -import com.yahoo.container.jdisc.config.HttpServerConfig; import com.yahoo.jdisc.http.ServerConfig; import com.yahoo.vespa.model.container.ContainerModel; import com.yahoo.vespa.model.container.component.chain.Chain; @@ -23,7 +22,6 @@ import static org.junit.Assert.assertNotNull; /** * @author gjoranv - * @since 5.1.25 */ public class FilterBindingsTest extends DomBuilderTest { @@ -85,7 +83,7 @@ public class FilterBindingsTest extends DomBuilderTest { @Test public void bindings_are_added_to_config_for_all_http_servers_with_jetty() throws Exception { final Element xml = parse( - "", + "", " ", " ", " ", diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/JettyContainerModelBuilderTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/JettyContainerModelBuilderTest.java index ceff9f3d4bb..5525b75373d 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/JettyContainerModelBuilderTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/JettyContainerModelBuilderTest.java @@ -16,7 +16,6 @@ import org.w3c.dom.Element; import java.util.List; import java.util.Optional; -import static com.yahoo.jdisc.http.ConnectorConfig.Ssl.KeyStoreType; import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.CoreMatchers.not; @@ -33,7 +32,7 @@ public class JettyContainerModelBuilderTest extends ContainerModelBuilderTestBas @Test public void verify_that_overriding_connector_options_works() throws Exception { Element clusterElem = DomBuilderTest.parse( - "\n" + + "\n" + " \n" + " \n" + " \n" + @@ -46,7 +45,6 @@ public class JettyContainerModelBuilderTest extends ContainerModelBuilderTestBas "\n" ); createModel(root, clusterElem); - ConnectorConfig.Builder connectorConfigBuilder = new ConnectorConfig.Builder(); ConnectorConfig cfg = root.getConfig(ConnectorConfig.class, "default/http/jdisc-jetty/bananarama"); assertThat(cfg.requestHeaderSize(), is(300000)); assertThat(cfg.headerCacheSize(), is(300000)); @@ -55,7 +53,7 @@ public class JettyContainerModelBuilderTest extends ContainerModelBuilderTestBas @Test public void verify_that_enabling_jetty_works() throws Exception { Element clusterElem = DomBuilderTest.parse( - "" + + "" + nodesXml + "" ); @@ -66,7 +64,7 @@ public class JettyContainerModelBuilderTest extends ContainerModelBuilderTestBas @Test public void verify_that_enabling_jetty_works_for_custom_http_servers() throws Exception { Element clusterElem = DomBuilderTest.parse( - "", + "", " ", " ", " ", @@ -79,7 +77,7 @@ public class JettyContainerModelBuilderTest extends ContainerModelBuilderTestBas @Test public void verifyThatJettyHttpServerHasFilterBindingsProvider() throws Exception { final Element clusterElem = DomBuilderTest.parse( - "", + "", nodesXml, "" ); createModel(root, clusterElem); @@ -100,7 +98,7 @@ public class JettyContainerModelBuilderTest extends ContainerModelBuilderTestBas @Test public void verifyThatJettyHttpServerHasFilterBindingsProviderForCustomHttpServers() throws Exception { final Element clusterElem = DomBuilderTest.parse( - "", + "", " ", " ", " ", @@ -122,73 +120,7 @@ public class JettyContainerModelBuilderTest extends ContainerModelBuilderTestBas } @Test - public void verify_that_old_http_config_override_inside_server_tag_works() throws Exception { - Element clusterElem = DomBuilderTest.parse( - "", - " ", - " ", - " ", - " true", - " false", - " 2", - " 34.1", - " 42.2", - " 1234", - " 4321", - " ", - " true", - " JKS", - " apple", - " grape", - " tomato", - " onion", - " carrot", - " ", - " ", - " ", - " ", - nodesXml, - "" ); - createModel(root, clusterElem); - ContainerCluster cluster = (ContainerCluster) root.getChildren().get("default"); - List jettyServers = cluster.getChildrenByTypeRecursive(JettyHttpServer.class); - - assertThat(jettyServers.size(), is(1)); - - JettyHttpServer server = jettyServers.get(0); - assertThat(server.model.bundleInstantiationSpec.classId.toString(), - is(com.yahoo.jdisc.http.server.jetty.JettyHttpServer.class.getName())); - assertThat(server.model.bundleInstantiationSpec.bundle.toString(), is("jdisc_http_service")); - assertThat(server.getConnectorFactories().size(), is(1)); - - ConnectorConfig.Builder connectorConfigBuilder = new ConnectorConfig.Builder(); - server.getConnectorFactories().get(0).getConfig(connectorConfigBuilder); - ConnectorConfig connector = new ConnectorConfig(connectorConfigBuilder); - assertThat(connector.name(), equalTo("foo")); - assertThat(connector.tcpKeepAliveEnabled(), equalTo(true)); - assertThat(connector.tcpNoDelay(), equalTo(false)); - assertThat(connector.acceptQueueSize(), equalTo(2)); - assertThat(connector.idleTimeout(), equalTo(34.1)); - assertThat(connector.soLingerTime(), equalTo(42.2)); - assertThat(connector.outputBufferSize(), equalTo(1234)); - assertThat(connector.headerCacheSize(), equalTo(4321)); - assertThat(connector.ssl().enabled(), equalTo(true)); - assertThat(connector.ssl().keyStoreType(), equalTo(KeyStoreType.Enum.JKS)); - assertThat(connector.ssl().keyStorePath(), equalTo("apple")); - assertThat(connector.ssl().trustStorePath(), equalTo("grape")); - assertThat(connector.ssl().keyDbKey(), equalTo("tomato")); - assertThat(connector.ssl().sslKeyManagerFactoryAlgorithm(), equalTo("onion")); - assertThat(connector.ssl().protocol(), equalTo("carrot")); - - assertThat( - extractComponentByClassName( - clusterComponentsConfig(), - com.yahoo.jdisc.http.server.jetty.JettyHttpServer.class.getName()), - is(not(nullValue()))); - } - - @Test - public void verify_that_ssl_element_generates_connector_config_and_inject_provider_component() { + public void ssl_element_generates_connector_config_and_injects_provider_component() { Element clusterElem = DomBuilderTest.parse( "", " ", diff --git a/config-model/src/test/schema-test-files/services.xml b/config-model/src/test/schema-test-files/services.xml index 43a8d31e2ee..880d49fa460 100644 --- a/config-model/src/test/schema-test-files/services.xml +++ b/config-model/src/test/schema-test-files/services.xml @@ -113,11 +113,7 @@ - - - 9999 - - + /foo/key diff --git a/container-disc/CMakeLists.txt b/container-disc/CMakeLists.txt index 92f5b303d41..edb9dc1ef1b 100644 --- a/container-disc/CMakeLists.txt +++ b/container-disc/CMakeLists.txt @@ -3,7 +3,6 @@ install_fat_java_artifact(container-disc) vespa_install_script(src/main/sh/vespa-start-container-daemon.sh vespa-start-container-daemon bin) -install_config_definition(src/main/resources/configdefinitions/container.jdisc.config.http-server.def) install_config_definition(src/main/resources/configdefinitions/jdisc-bindings.def container.jdisc.jdisc-bindings.def) install_config_definition(src/main/resources/configdefinitions/jersey-connection.def container.config.jersey.jersey-connection.def) install_config_definition(src/main/resources/configdefinitions/jersey-web-app-pool.def container.config.jersey.jersey-web-app-pool.def) diff --git a/container-disc/src/main/resources/configdefinitions/container.jdisc.config.http-server.def b/container-disc/src/main/resources/configdefinitions/container.jdisc.config.http-server.def deleted file mode 100644 index 9275136c585..00000000000 --- a/container-disc/src/main/resources/configdefinitions/container.jdisc.config.http-server.def +++ /dev/null @@ -1,47 +0,0 @@ -# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -namespace=container.jdisc.config - -# TODO Vespa 7: Remove this config and its adapter in config-model (ConnectorFactory) - -serverName string default="default" -tcpKeepAliveEnabled bool default=false -httpKeepAliveEnabled bool default=true -optimizedForPipeline bool default=false -removeRawPostBodyForWwwUrlEncodedPost bool default=false -responseChunkingEnabled bool default=true -tcpNoDelayEnabled bool default=true -listenPort int -maxChunkSize int default=65536 -maxHeaderSize int default=65536 -maxInitialLineLength int default=65536 -maxUnchunkedResponseSize int default=10362880 -numWorkerThreads int default=16 -receiveBufferSize int default=-1 -responseCompressionLevel int default=6 -sendBufferSize int default=-1 -tcpListenBacklogLength int default=0 -connectTimeout double default=10 -idleConnectionTimeout double default=180 -soLinger double default=-1 -perRequestMetricsEnabled bool default=false -metricUpdateInterval double default=1 -ssl.enabled bool default=false -ssl.keyStoreType string default="JKS" -ssl.keyStorePath string default="default" -ssl.trustStorePath string default="default" -ssl.keyDBKey string default="" -ssl.algorithm string default="SunX509" -ssl.protocol string default="TLS" - -filter[].id string -filter[].binding string - -#copy pasted from new http-server.def(namespace=jdisc.http.server) -accessLog.bufferSize int default = 10240 -accessLog.flushTimeout double default = 5 # seconds -accessLog.fileName string default = "" -accessLog.rotatable bool default = false -accessLog.directory string default = "logs/jdisc_core" -accessLog.prefix string default = "access_log." -accessLog.suffix string default = "" -accessLog.fileDateFormat string default = "yyyy-MM-dd" -- cgit v1.2.3