diff options
6 files changed, 45 insertions, 24 deletions
diff --git a/clustercontroller-apputil/pom.xml b/clustercontroller-apputil/pom.xml index c8190c1a1ac..f0da97f5b94 100644 --- a/clustercontroller-apputil/pom.xml +++ b/clustercontroller-apputil/pom.xml @@ -35,11 +35,6 @@ <version>${project.version}</version> <scope>provided</scope> </dependency> - <dependency> - <groupId>commons-io</groupId> - <artifactId>commons-io</artifactId> - <version>2.4</version> - </dependency> </dependencies> <build> <plugins> diff --git a/clustercontroller-apputil/src/main/java/com/yahoo/vespa/clustercontroller/apputil/communication/http/JDiscHttpRequestHandler.java b/clustercontroller-apputil/src/main/java/com/yahoo/vespa/clustercontroller/apputil/communication/http/JDiscHttpRequestHandler.java index 1f3956ef875..f518fe23fe6 100644 --- a/clustercontroller-apputil/src/main/java/com/yahoo/vespa/clustercontroller/apputil/communication/http/JDiscHttpRequestHandler.java +++ b/clustercontroller-apputil/src/main/java/com/yahoo/vespa/clustercontroller/apputil/communication/http/JDiscHttpRequestHandler.java @@ -9,9 +9,9 @@ import com.yahoo.text.Utf8; import com.yahoo.vespa.clustercontroller.utils.communication.http.HttpRequest; import com.yahoo.vespa.clustercontroller.utils.communication.http.HttpRequestHandler; import com.yahoo.vespa.clustercontroller.utils.communication.http.HttpResult; -import org.apache.commons.io.IOUtils; import java.io.*; +import java.nio.charset.StandardCharsets; import java.time.Duration; import java.util.logging.Logger; @@ -95,7 +95,7 @@ public class JDiscHttpRequestHandler extends LoggingRequestHandler { private void copyPostData(com.yahoo.container.jdisc.HttpRequest request, HttpRequest legacyRequest) { try { - legacyRequest.setPostContent(IOUtils.toString(request.getData(), "UTF-8")); + legacyRequest.setPostContent(new String(request.getData().readAllBytes(), StandardCharsets.UTF_8)); } catch (IOException e) { throw new RuntimeException(e); } diff --git a/clustercontroller-core/pom.xml b/clustercontroller-core/pom.xml index 9ac7c93134c..a952016e3bf 100644 --- a/clustercontroller-core/pom.xml +++ b/clustercontroller-core/pom.xml @@ -14,8 +14,9 @@ <name>${project.artifactId}</name> <dependencies> <dependency> - <groupId>commons-lang</groupId> - <artifactId>commons-lang</artifactId> + <groupId>com.google.guava</groupId> + <artifactId>guava</artifactId> + <scope>provided</scope> </dependency> <dependency> <groupId>junit</groupId> diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/FleetController.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/FleetController.java index 4a619fa47f2..d1675f189c0 100644 --- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/FleetController.java +++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/FleetController.java @@ -12,20 +12,26 @@ import com.yahoo.vdslib.state.State; import com.yahoo.vespa.clustercontroller.core.database.DatabaseHandler; import com.yahoo.vespa.clustercontroller.core.database.ZooKeeperDatabaseFactory; import com.yahoo.vespa.clustercontroller.core.hostinfo.HostInfo; -import com.yahoo.vespa.clustercontroller.core.listeners.*; +import com.yahoo.vespa.clustercontroller.core.listeners.NodeAddedOrRemovedListener; +import com.yahoo.vespa.clustercontroller.core.listeners.NodeStateOrHostInfoChangeHandler; +import com.yahoo.vespa.clustercontroller.core.listeners.SystemStateListener; import com.yahoo.vespa.clustercontroller.core.rpc.RPCCommunicator; import com.yahoo.vespa.clustercontroller.core.rpc.RpcServer; import com.yahoo.vespa.clustercontroller.core.rpc.SlobrokClient; -import com.yahoo.vespa.clustercontroller.core.status.*; +import com.yahoo.vespa.clustercontroller.core.status.ClusterStateRequestHandler; +import com.yahoo.vespa.clustercontroller.core.status.LegacyIndexPageRequestHandler; +import com.yahoo.vespa.clustercontroller.core.status.LegacyNodePageRequestHandler; +import com.yahoo.vespa.clustercontroller.core.status.NodeHealthRequestHandler; +import com.yahoo.vespa.clustercontroller.core.status.RunDataExtractor; import com.yahoo.vespa.clustercontroller.core.status.statuspage.StatusPageResponse; import com.yahoo.vespa.clustercontroller.core.status.statuspage.StatusPageServer; import com.yahoo.vespa.clustercontroller.core.status.statuspage.StatusPageServerInterface; import com.yahoo.vespa.clustercontroller.utils.util.MetricReporter; import com.yahoo.vespa.clustercontroller.utils.util.NoMetricReporter; -import org.apache.commons.lang.exception.ExceptionUtils; import java.io.FileNotFoundException; - +import java.io.PrintWriter; +import java.io.StringWriter; import java.util.ArrayDeque; import java.util.ArrayList; import java.util.Collection; @@ -542,7 +548,10 @@ public class FleetController implements NodeStateOrHostInfoChangeHandler, NodeAd } catch (Exception e) { responseCode = StatusPageResponse.ResponseCode.INTERNAL_SERVER_ERROR; message = "Internal Server Error"; - hiddenMessage = ExceptionUtils.getStackTrace(e); + StringWriter sw = new StringWriter(); + PrintWriter pw = new PrintWriter(sw, true); + e.printStackTrace(pw); + hiddenMessage = sw.getBuffer().toString(); log.log(LogLevel.DEBUG, "Unknown exception thrown for request " + httpRequest.getRequest() + ": " + hiddenMessage); } diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/status/statuspage/StatusPageResponse.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/status/statuspage/StatusPageResponse.java index 84850eb344c..0b6ce9b645e 100644 --- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/status/statuspage/StatusPageResponse.java +++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/status/statuspage/StatusPageResponse.java @@ -1,9 +1,12 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.vespa.clustercontroller.core.status.statuspage; -import org.apache.commons.lang.StringEscapeUtils; +import com.google.common.html.HtmlEscapers; -import java.io.*; +import java.io.BufferedWriter; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.OutputStreamWriter; public class StatusPageResponse { @@ -67,7 +70,7 @@ public class StatusPageResponse { } public void writeHtmlHeader(StringBuilder content, String title) { - String escaped_title = StringEscapeUtils.escapeHtml(title); + String escaped_title = HtmlEscapers.htmlEscaper().escape(title); content.append("<html>\n") .append("<head><title>").append(escaped_title).append("</title></head>") .append("<body>\n") @@ -76,7 +79,7 @@ public class StatusPageResponse { public void writeHtmlFooter(StringBuilder content, String hiddenMessage) { if (hiddenMessage != null && !hiddenMessage.isEmpty()) { - content.append("\n<!-- " + StringEscapeUtils.escapeHtml(hiddenMessage) + " -->\n"); + content.append("\n<!-- " + HtmlEscapers.htmlEscaper().escape(hiddenMessage) + " -->\n"); } content.append("</body>\n") .append("</html>\n"); diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/status/statuspage/StatusPageServer.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/status/statuspage/StatusPageServer.java index 52cd0a27933..b736bae82c8 100644 --- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/status/statuspage/StatusPageServer.java +++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/status/statuspage/StatusPageServer.java @@ -2,19 +2,28 @@ package com.yahoo.vespa.clustercontroller.core.status.statuspage; import com.yahoo.log.LogLevel; -import org.apache.commons.lang.exception.ExceptionUtils; -import java.io.*; -import java.net.ServerSocket; +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.OutputStream; +import java.io.PrintWriter; +import java.io.StringWriter; import java.net.InetSocketAddress; +import java.net.ServerSocket; import java.net.Socket; import java.net.SocketTimeoutException; import java.text.DateFormat; import java.text.SimpleDateFormat; -import java.util.*; +import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.TimeZone; import java.util.logging.Logger; -import java.util.regex.Pattern; import java.util.regex.Matcher; +import java.util.regex.Pattern; /** * Shows status pages with debug information through a very simple HTTP interface. @@ -177,7 +186,11 @@ public class StatusPageServer implements Runnable, StatusPageServerInterface { response.setResponseCode(StatusPageResponse.ResponseCode.INTERNAL_SERVER_ERROR); StringBuilder content = new StringBuilder(); response.writeHtmlHeader(content, "Internal Server Error"); - response.writeHtmlFooter(content, ExceptionUtils.getStackTrace(e)); + try (StringWriter sw = new StringWriter(); + PrintWriter pw = new PrintWriter(sw, true)) { + e.printStackTrace(pw); + response.writeHtmlFooter(content, sw.getBuffer().toString()); + } response.writeContent(content.toString()); } if (response == null) { |