From 73b67d3eacf018f03917eb3d41a168a96a81a5bb Mon Sep 17 00:00:00 2001 From: Puneet Jaiswal Date: Mon, 12 Aug 2019 11:03:48 -0700 Subject: [PATCH] Version bump for next release Adding routing for UI path --- .gitignore | 2 ++ baseapp/pom.xml | 2 +- gateway/pom.xml | 2 +- .../config/RequestRouterConfiguration.java | 2 +- .../handler/QueryIdCachingProxyHandler.java | 29 ++++++++++--------- .../gateway/module/GatewayProviderModule.java | 2 +- .../router/impl/QueryHistoryManagerImpl.java | 3 +- .../main/resources/template/gateway-view.ftl | 2 +- pom.xml | 4 +-- proxyserver/pom.xml | 2 +- .../lyft/data/proxyserver/ProxyServer.java | 14 +++++---- .../proxyserver/ProxyServerConfiguration.java | 6 ++-- .../data/proxyserver/ProxyServletImpl.java | 2 +- 13 files changed, 40 insertions(+), 32 deletions(-) diff --git a/.gitignore b/.gitignore index 582819d0..1128f5f0 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ .idea **/target/* +.DS_Store +*.iml diff --git a/baseapp/pom.xml b/baseapp/pom.xml index a3192402..e7a2de80 100644 --- a/baseapp/pom.xml +++ b/baseapp/pom.xml @@ -7,7 +7,7 @@ com.lyft.data prestogateway-parent - 1.6.0 + 1.6.1 ../ diff --git a/gateway/pom.xml b/gateway/pom.xml index 0e0bbceb..183102fe 100644 --- a/gateway/pom.xml +++ b/gateway/pom.xml @@ -8,7 +8,7 @@ com.lyft.data prestogateway-parent - 1.6.0 + 1.6.1 ../ diff --git a/gateway/src/main/java/com/lyft/data/gateway/config/RequestRouterConfiguration.java b/gateway/src/main/java/com/lyft/data/gateway/config/RequestRouterConfiguration.java index 4e96b23c..ec3b5995 100644 --- a/gateway/src/main/java/com/lyft/data/gateway/config/RequestRouterConfiguration.java +++ b/gateway/src/main/java/com/lyft/data/gateway/config/RequestRouterConfiguration.java @@ -14,7 +14,7 @@ public class RequestRouterConfiguration { private String cacheDir; // Use SSL? - private String ssl; + private boolean ssl; private String keystorePath; private String keystorePass; diff --git a/gateway/src/main/java/com/lyft/data/gateway/handler/QueryIdCachingProxyHandler.java b/gateway/src/main/java/com/lyft/data/gateway/handler/QueryIdCachingProxyHandler.java index 0fe4e423..4a7fe0e9 100644 --- a/gateway/src/main/java/com/lyft/data/gateway/handler/QueryIdCachingProxyHandler.java +++ b/gateway/src/main/java/com/lyft/data/gateway/handler/QueryIdCachingProxyHandler.java @@ -39,11 +39,12 @@ public class QueryIdCachingProxyHandler extends ProxyHandler { public static final String V1_STATEMENT_PATH = "/v1/statement"; public static final String V1_QUERY_PATH = "/v1/query"; public static final String V1_INFO_PATH = "/v1/info"; - public static final String QUERY_HTML_PATH = "/ui/query.html"; + public static final String PRESTO_UI_PATH = "/ui"; public static final String USER_HEADER = "X-Presto-User"; public static final String SOURCE_HEADER = "X-Presto-Source"; public static final String ROUTING_GROUP_HEADER = "X-Presto-Routing-Group"; public static final String ADHOC_ROUTING_GROUP = "adhoc"; + static final int QUERY_TEXT_LENGTH_FOR_HISTORY = 200; private static final Pattern EXTRACT_BETWEEN_SINGLE_QUOTES = Pattern.compile("'([^\\s']+)'"); @@ -80,14 +81,12 @@ private int getApplicationPort(GatewayConfiguration configuration) { : Stream.of((SimpleServerFactory) configuration.getServerFactory()) .map(SimpleServerFactory::getConnector); - int port = - connectors - .filter(connector -> connector.getClass().isAssignableFrom(HttpConnectorFactory.class)) - .map(connector -> (HttpConnectorFactory) connector) - .mapToInt(HttpConnectorFactory::getPort) - .findFirst() - .orElseThrow(IllegalStateException::new); - return port; + return connectors + .filter(connector -> connector.getClass().isAssignableFrom(HttpConnectorFactory.class)) + .map(connector -> (HttpConnectorFactory) connector) + .mapToInt(HttpConnectorFactory::getPort) + .findFirst() + .orElseThrow(IllegalStateException::new); } @Override @@ -110,9 +109,9 @@ public void preConnectionHook(HttpServletRequest request, Request proxyRequest) private boolean isPathWhiteListed(String path) { return path.startsWith(V1_STATEMENT_PATH) - || path.startsWith(V1_QUERY_PATH) - || path.startsWith(QUERY_HTML_PATH) - || path.startsWith(V1_INFO_PATH); + || path.startsWith(V1_QUERY_PATH) + || path.startsWith(PRESTO_UI_PATH) + || path.startsWith(V1_INFO_PATH); } @Override @@ -192,7 +191,7 @@ protected String extractQueryIdIfPresent(HttpServletRequest request) { if (tokens.length >= 4) { queryId = tokens[3]; } - } else if (path.startsWith(QUERY_HTML_PATH)) { + } else if (path.startsWith(PRESTO_UI_PATH)) { queryId = queryParams; } log.debug("query id in url [{}]", queryId); @@ -272,7 +271,9 @@ private QueryHistoryManager.QueryDetail getQueryDetailsFromRequest(HttpServletRe queryDetail.setSource(request.getHeader(SOURCE_HEADER)); String queryText = CharStreams.toString(request.getReader()); queryDetail.setQueryText( - queryText.length() > 400 ? queryText.substring(0, 400) + "..." : queryText); + queryText.length() > QUERY_TEXT_LENGTH_FOR_HISTORY + ? queryText.substring(0, QUERY_TEXT_LENGTH_FOR_HISTORY) + "..." + : queryText); return queryDetail; } } diff --git a/gateway/src/main/java/com/lyft/data/gateway/module/GatewayProviderModule.java b/gateway/src/main/java/com/lyft/data/gateway/module/GatewayProviderModule.java index 269dc59e..e5889f92 100644 --- a/gateway/src/main/java/com/lyft/data/gateway/module/GatewayProviderModule.java +++ b/gateway/src/main/java/com/lyft/data/gateway/module/GatewayProviderModule.java @@ -77,7 +77,7 @@ public ProxyServer provideGateway() { routerProxyConfig.setLocalPort(routerConfiguration.getPort()); routerProxyConfig.setName(routerConfiguration.getName()); routerProxyConfig.setProxyTo(""); - routerProxyConfig.setSsl(routerConfiguration.getSsl()); + routerProxyConfig.setSsl(routerConfiguration.isSsl()); routerProxyConfig.setKeystorePath(routerConfiguration.getKeystorePath()); routerProxyConfig.setKeystorePass(routerConfiguration.getKeystorePass()); diff --git a/gateway/src/main/java/com/lyft/data/gateway/router/impl/QueryHistoryManagerImpl.java b/gateway/src/main/java/com/lyft/data/gateway/router/impl/QueryHistoryManagerImpl.java index 459cbcf0..0186c89f 100644 --- a/gateway/src/main/java/com/lyft/data/gateway/router/impl/QueryHistoryManagerImpl.java +++ b/gateway/src/main/java/com/lyft/data/gateway/router/impl/QueryHistoryManagerImpl.java @@ -20,7 +20,8 @@ public QueryHistoryManagerImpl(int size) { @Override public void submitQueryDetail(QueryDetail queryDetail) { - if (queryDetail.getQueryText().startsWith("EXPLAIN (TYPE VALIDATE) ")) { + String queryText = queryDetail.getQueryText(); + if (queryText.startsWith("EXPLAIN (TYPE VALIDATE) ")) { return; } int pos = (int) queryCounter.incrementAndGet() % size; diff --git a/gateway/src/main/resources/template/gateway-view.ftl b/gateway/src/main/resources/template/gateway-view.ftl index 1180b528..629cb397 100644 --- a/gateway/src/main/resources/template/gateway-view.ftl +++ b/gateway/src/main/resources/template/gateway-view.ftl @@ -82,7 +82,7 @@ <#list queryHistory as q> - ${q.queryId} ${q.user} diff --git a/pom.xml b/pom.xml index fb57ab26..aea2e9a0 100644 --- a/pom.xml +++ b/pom.xml @@ -9,7 +9,7 @@ prestogateway-parent prestogateway-parent pom - 1.6.0 + 1.6.1 1.8 @@ -96,7 +96,7 @@ google_checks.xml true true - false + true true ${checkstyle.violation.ignore} warning diff --git a/proxyserver/pom.xml b/proxyserver/pom.xml index ee5315f7..9b19a663 100644 --- a/proxyserver/pom.xml +++ b/proxyserver/pom.xml @@ -8,7 +8,7 @@ com.lyft.data prestogateway-parent - 1.6.0 + 1.6.1 ../ diff --git a/proxyserver/src/main/java/com/lyft/data/proxyserver/ProxyServer.java b/proxyserver/src/main/java/com/lyft/data/proxyserver/ProxyServer.java index 8a46a97e..7faadcaf 100644 --- a/proxyserver/src/main/java/com/lyft/data/proxyserver/ProxyServer.java +++ b/proxyserver/src/main/java/com/lyft/data/proxyserver/ProxyServer.java @@ -10,6 +10,8 @@ import lombok.extern.slf4j.Slf4j; +import org.apache.http.util.TextUtils; +import org.eclipse.jetty.http.HttpScheme; import org.eclipse.jetty.http.HttpVersion; import org.eclipse.jetty.proxy.ConnectHandler; import org.eclipse.jetty.server.HttpConfiguration; @@ -38,7 +40,7 @@ public ProxyServer(ProxyServerConfiguration config, ProxyHandler proxyHandler) { private void setupContext(ProxyServerConfiguration config) { ServerConnector connector = null; - if (config.getSsl()) { + if (config.isSsl()) { String keystorePath = config.getKeystorePath(); String keystorePass = config.getKeystorePass(); File keystoreFile = new File(keystorePath); @@ -48,22 +50,24 @@ private void setupContext(ProxyServerConfiguration config) { sslContextFactory.setStopTimeout(TimeUnit.SECONDS.toMillis(15)); sslContextFactory.setSslSessionTimeout((int) TimeUnit.SECONDS.toMillis(15)); - if (!(keystorePath == null || keystorePath.isEmpty())) { + if (!TextUtils.isBlank(keystorePath)) { sslContextFactory.setKeyStorePath(keystoreFile.getAbsolutePath()); sslContextFactory.setKeyStorePassword(keystorePass); sslContextFactory.setKeyManagerPassword(keystorePass); } HttpConfiguration httpsConfig = new HttpConfiguration(); - httpsConfig.setSecureScheme("https"); + httpsConfig.setSecureScheme(HttpScheme.HTTPS.asString()); httpsConfig.setSecurePort(config.getLocalPort()); httpsConfig.setOutputBufferSize(32768); SecureRequestCustomizer src = new SecureRequestCustomizer(); - src.setStsMaxAge(2000); + src.setStsMaxAge(TimeUnit.SECONDS.toSeconds(2000)); src.setStsIncludeSubDomains(true); httpsConfig.addCustomizer(src); - connector = new ServerConnector(server, + connector = + new ServerConnector( + server, new SslConnectionFactory(sslContextFactory, HttpVersion.HTTP_1_1.asString()), new HttpConnectionFactory(httpsConfig)); } else { diff --git a/proxyserver/src/main/java/com/lyft/data/proxyserver/ProxyServerConfiguration.java b/proxyserver/src/main/java/com/lyft/data/proxyserver/ProxyServerConfiguration.java index be7c9b18..7fba0a48 100644 --- a/proxyserver/src/main/java/com/lyft/data/proxyserver/ProxyServerConfiguration.java +++ b/proxyserver/src/main/java/com/lyft/data/proxyserver/ProxyServerConfiguration.java @@ -10,7 +10,7 @@ public class ProxyServerConfiguration { private String prefix = "/"; private String trustAll = "true"; private String preserveHost = "true"; - private String ssl = "false"; + private boolean ssl; private String keystorePath; private String keystorePass; @@ -26,7 +26,7 @@ protected String getPreserveHost() { return preserveHost; } - protected boolean getSsl() { - return Boolean.parseBoolean(ssl); + protected boolean isSsl() { + return ssl; } } diff --git a/proxyserver/src/main/java/com/lyft/data/proxyserver/ProxyServletImpl.java b/proxyserver/src/main/java/com/lyft/data/proxyserver/ProxyServletImpl.java index 9becec13..b7f26936 100644 --- a/proxyserver/src/main/java/com/lyft/data/proxyserver/ProxyServletImpl.java +++ b/proxyserver/src/main/java/com/lyft/data/proxyserver/ProxyServletImpl.java @@ -33,7 +33,7 @@ protected HttpClient newHttpClient() { sslFactory.setSslSessionTimeout((int) TimeUnit.SECONDS.toMillis(15)); HttpClient httpClient = new HttpClient(sslFactory); - httpClient.setMaxConnectionsPerDestination(2000); + httpClient.setMaxConnectionsPerDestination(10000); httpClient.setConnectTimeout(TimeUnit.SECONDS.toMillis(60)); return httpClient; }