You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@storm.apache.org by bo...@apache.org on 2017/07/24 17:10:09 UTC

[16/19] storm git commit: STORM-1280 port backtype.storm.daemon.logviewer to java

STORM-1280 port backtype.storm.daemon.logviewer to java

* fix a bug: parameter swapped
* move 'file' param for '/search' from path to query param
  * also applied to static html files
* select current file in file list dropdown in log page


Project: http://git-wip-us.apache.org/repos/asf/storm/repo
Commit: http://git-wip-us.apache.org/repos/asf/storm/commit/35ca265a
Tree: http://git-wip-us.apache.org/repos/asf/storm/tree/35ca265a
Diff: http://git-wip-us.apache.org/repos/asf/storm/diff/35ca265a

Branch: refs/heads/master
Commit: 35ca265af963dc21b356e1a305fea897c58a59fa
Parents: 37f9c59
Author: Jungtaek Lim <ka...@gmail.com>
Authored: Mon Jul 24 11:44:28 2017 +0900
Committer: Jungtaek Lim <ka...@gmail.com>
Committed: Mon Jul 24 11:44:28 2017 +0900

----------------------------------------------------------------------
 storm-core/src/ui/public/logviewer_search.html     |  2 +-
 storm-core/src/ui/public/search_result.html        |  2 +-
 .../org/apache/storm/utils/ServerConfigUtils.java  |  3 ++-
 .../logviewer/handler/LogviewerLogPageHandler.java | 17 ++++++++++-------
 .../handler/LogviewerLogSearchHandler.java         |  2 +-
 .../daemon/logviewer/webapp/LogviewerResource.java |  5 +++--
 6 files changed, 18 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/storm/blob/35ca265a/storm-core/src/ui/public/logviewer_search.html
----------------------------------------------------------------------
diff --git a/storm-core/src/ui/public/logviewer_search.html b/storm-core/src/ui/public/logviewer_search.html
index 89a7854..96ecd8c 100644
--- a/storm-core/src/ui/public/logviewer_search.html
+++ b/storm-core/src/ui/public/logviewer_search.html
@@ -55,7 +55,7 @@ $(document).ready(function() {
         $("#search-form").append(Mustache.render($(template).filter("#search-single-file").html(),{file: file, search: search, isDaemon: isDaemon}));
 
         var result = $("#result");
-        var url = "/api/v1/search/"+encodeURIComponent(file)+"?search-string="+search+"&start-byte-offset="+offset+"&is-daemon="+isDaemon;
+        var url = "/api/v1/search?file="+encodeURIComponent(file)+"&search-string="+search+"&start-byte-offset="+offset+"&is-daemon="+isDaemon;
         $.getJSON(url,function(response,status,jqXHR) {
            response.file = file;
            result.append(Mustache.render($(template).filter("#logviewer-search-result-template").html(),response));

http://git-wip-us.apache.org/repos/asf/storm/blob/35ca265a/storm-core/src/ui/public/search_result.html
----------------------------------------------------------------------
diff --git a/storm-core/src/ui/public/search_result.html b/storm-core/src/ui/public/search_result.html
index 216a700..d6ebb44 100644
--- a/storm-core/src/ui/public/search_result.html
+++ b/storm-core/src/ui/public/search_result.html
@@ -68,7 +68,7 @@ $(document).ready(function() {
              var port = response.hostPortList[index].port;
              var elemId = response.hostPortList[index].elemId;
              var file = id+"/"+port+"/worker.log";
-             var searchURL = "http://"+host+":"+logviewerPort+"/api/v1/search/"+encodeURIComponent(file)+"?search-string="+search+"&num-matches="+count;
+             var searchURL = "http://"+host+":"+logviewerPort+"/api/v1/search?file="+encodeURIComponent(file)+"&search-string="+search+"&num-matches="+count;
              if (searchArchived != "") {
                searchURL = "http://"+host+":"+logviewerPort+"/api/v1/deepSearch/"+id+"?search-string="+search+"&num-matches="+count+"&search-archived=true&port="+port;
              }

http://git-wip-us.apache.org/repos/asf/storm/blob/35ca265a/storm-server/src/main/java/org/apache/storm/utils/ServerConfigUtils.java
----------------------------------------------------------------------
diff --git a/storm-server/src/main/java/org/apache/storm/utils/ServerConfigUtils.java b/storm-server/src/main/java/org/apache/storm/utils/ServerConfigUtils.java
index cd63395..426e190 100644
--- a/storm-server/src/main/java/org/apache/storm/utils/ServerConfigUtils.java
+++ b/storm-server/src/main/java/org/apache/storm/utils/ServerConfigUtils.java
@@ -30,6 +30,7 @@ import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
+import java.util.regex.Pattern;
 
 public class ServerConfigUtils {
     public static final String FILE_SEPARATOR = File.separator;
@@ -161,7 +162,7 @@ public class ServerConfigUtils {
     }
 
     public static File getLogMetaDataFile(String fname) {
-        String[] subStrings = fname.split(FILE_SEPARATOR); // TODO: does this work well on windows?
+        String[] subStrings = fname.split(Pattern.quote(FILE_SEPARATOR)); // TODO: does this work well on windows?
         String id = subStrings[0];
         Integer port = Integer.parseInt(subStrings[1]);
         return getLogMetaDataFile(Utils.readStormConfig(), id, port);

http://git-wip-us.apache.org/repos/asf/storm/blob/35ca265a/storm-webapp/src/main/java/org/apache/storm/daemon/logviewer/handler/LogviewerLogPageHandler.java
----------------------------------------------------------------------
diff --git a/storm-webapp/src/main/java/org/apache/storm/daemon/logviewer/handler/LogviewerLogPageHandler.java b/storm-webapp/src/main/java/org/apache/storm/daemon/logviewer/handler/LogviewerLogPageHandler.java
index 47fa4b3..c6e9828 100644
--- a/storm-webapp/src/main/java/org/apache/storm/daemon/logviewer/handler/LogviewerLogPageHandler.java
+++ b/storm-webapp/src/main/java/org/apache/storm/daemon/logviewer/handler/LogviewerLogPageHandler.java
@@ -27,6 +27,7 @@ import static j2html.TagCreator.head;
 import static j2html.TagCreator.html;
 import static j2html.TagCreator.input;
 import static j2html.TagCreator.link;
+import static j2html.TagCreator.option;
 import static j2html.TagCreator.p;
 import static j2html.TagCreator.pre;
 import static j2html.TagCreator.select;
@@ -226,7 +227,7 @@ public class LogviewerLogPageHandler {
 
                     bodyContents.add(searchFileForm(fileName, "no"));
                     // list all files for this topology
-                    bodyContents.add(logFileSelectionForm(reorderedFilesStr, "log"));
+                    bodyContents.add(logFileSelectionForm(reorderedFilesStr, fileName, "log"));
                     if (pagerData != null) {
                         bodyContents.add(pagerData);
                     }
@@ -306,7 +307,7 @@ public class LogviewerLogPageHandler {
 
                 bodyContents.add(searchFileForm(fileName, "yes"));
                 // list all daemon logs
-                bodyContents.add(logFileSelectionForm(reorderedFilesStr, "daemonlog"));
+                bodyContents.add(logFileSelectionForm(reorderedFilesStr, fileName, "daemonlog"));
                 if (pagerData != null) {
                     bodyContents.add(pagerData);
                 }
@@ -360,16 +361,18 @@ public class LogviewerLogPageHandler {
         return a(content).withHref(url);
     }
 
-    private DomContent logFileSelectionForm(List<String> logFiles, String type) {
+    private DomContent logFileSelectionForm(List<String> logFiles, String selectedFile, String type) {
         return form(
-                dropDown("file", logFiles),
+                dropDown("file", logFiles, selectedFile),
                 input().withType("submit").withValue("Switch file")
         ).withAction(type).withId("list-of-files");
     }
 
-    private DomContent dropDown(String name, List<String> logFiles) {
-        List<DomContent> options = logFiles.stream().map(TagCreator::option).collect(toList());
-        return select(options.toArray(new DomContent[]{})).withName(name).withId(name);
+    private DomContent dropDown(String name, List<String> logFiles, String selectedFile) {
+        List<DomContent> options = logFiles.stream()
+                .map(file -> option(file).condAttr(file.equals(selectedFile), "selected", "selected"))
+                .collect(toList());
+        return select(options.toArray(new DomContent[]{})).withName(name).withId(name).withValue(selectedFile);
     }
 
     private DomContent searchFileForm(String fileName, String isDaemonValue) {

http://git-wip-us.apache.org/repos/asf/storm/blob/35ca265a/storm-webapp/src/main/java/org/apache/storm/daemon/logviewer/handler/LogviewerLogSearchHandler.java
----------------------------------------------------------------------
diff --git a/storm-webapp/src/main/java/org/apache/storm/daemon/logviewer/handler/LogviewerLogSearchHandler.java b/storm-webapp/src/main/java/org/apache/storm/daemon/logviewer/handler/LogviewerLogSearchHandler.java
index 76f1683..117cb86 100644
--- a/storm-webapp/src/main/java/org/apache/storm/daemon/logviewer/handler/LogviewerLogSearchHandler.java
+++ b/storm-webapp/src/main/java/org/apache/storm/daemon/logviewer/handler/LogviewerLogSearchHandler.java
@@ -119,7 +119,7 @@ public class LogviewerLogSearchHandler {
         File file = new File(rootDir, fileName).getCanonicalFile();
         Response response;
         if (file.exists()) {
-            if (isDaemon || resourceAuthorizer.isUserAllowedToAccessFile(user, fileName)) {
+            if (isDaemon || resourceAuthorizer.isUserAllowedToAccessFile(fileName, user)) {
                 Integer numMatchesInt = numMatchesStr != null ? tryParseIntParam("num-matches", numMatchesStr) : null;
                 Integer offsetInt = offsetStr != null ? tryParseIntParam("start-byte-offset", offsetStr) : null;
 

http://git-wip-us.apache.org/repos/asf/storm/blob/35ca265a/storm-webapp/src/main/java/org/apache/storm/daemon/logviewer/webapp/LogviewerResource.java
----------------------------------------------------------------------
diff --git a/storm-webapp/src/main/java/org/apache/storm/daemon/logviewer/webapp/LogviewerResource.java b/storm-webapp/src/main/java/org/apache/storm/daemon/logviewer/webapp/LogviewerResource.java
index 478001d..6478ca6 100644
--- a/storm-webapp/src/main/java/org/apache/storm/daemon/logviewer/webapp/LogviewerResource.java
+++ b/storm-webapp/src/main/java/org/apache/storm/daemon/logviewer/webapp/LogviewerResource.java
@@ -214,10 +214,11 @@ public class LogviewerResource {
      * Handles '/search' (searching from specific worker or daemon log file) request.
      */
     @GET
-    @Path("/search/{file}")
-    public Response search(@PathParam("file") String file, @Context HttpServletRequest request) throws IOException {
+    @Path("/search")
+    public Response search(@Context HttpServletRequest request) throws IOException {
         String user = httpCredsHandler.getUserName(request);
         boolean isDaemon = StringUtils.equals(request.getParameter("is-daemon"), "yes");
+        String file = request.getParameter("file");
         String decodedFileName = URLDecoder.decode(file);
         String searchString = request.getParameter("search-string");
         String numMatchesStr = request.getParameter("num-matches");