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 2018/09/25 17:45:56 UTC

[2/3] storm git commit: STORM-621: Added in full version info

STORM-621: Added in full version info


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

Branch: refs/heads/master
Commit: 1f1fb0a129a2bbf3a5065af08fc28e309612dea6
Parents: 70dd313
Author: Robert (Bobby) Evans <ev...@yahoo-inc.com>
Authored: Fri Sep 21 08:41:29 2018 -0500
Committer: Robert (Bobby) Evans <ev...@yahoo-inc.com>
Committed: Fri Sep 21 08:59:38 2018 -0500

----------------------------------------------------------------------
 .../org/apache/storm/utils/IVersionInfo.java    |  2 +-
 .../src/jvm/org/apache/storm/utils/Utils.java   | 48 ++++++++++++++++++--
 .../jvm/org/apache/storm/utils/VersionInfo.java | 21 ++++-----
 .../jvm/org/apache/storm/utils/UtilsTest.java   |  6 +--
 .../org/apache/storm/daemon/ui/UIHelpers.java   | 29 ++++++++++--
 .../apache/storm/daemon/ui/WEB-INF/index.html   |  7 +++
 .../WEB-INF/templates/index-page-template.html  | 21 ++++++++-
 7 files changed, 108 insertions(+), 26 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/storm/blob/1f1fb0a1/storm-client/src/jvm/org/apache/storm/utils/IVersionInfo.java
----------------------------------------------------------------------
diff --git a/storm-client/src/jvm/org/apache/storm/utils/IVersionInfo.java b/storm-client/src/jvm/org/apache/storm/utils/IVersionInfo.java
index 9750d37..b25547f 100644
--- a/storm-client/src/jvm/org/apache/storm/utils/IVersionInfo.java
+++ b/storm-client/src/jvm/org/apache/storm/utils/IVersionInfo.java
@@ -21,7 +21,7 @@ package org.apache.storm.utils;
 /**
  * Implementation of VersionInfo that uses a properties file to get the VersionInfo.
  */
-interface IVersionInfo {
+public interface IVersionInfo {
     /**
      * Get the version number of the build.
      * @return the version number of the build.

http://git-wip-us.apache.org/repos/asf/storm/blob/1f1fb0a1/storm-client/src/jvm/org/apache/storm/utils/Utils.java
----------------------------------------------------------------------
diff --git a/storm-client/src/jvm/org/apache/storm/utils/Utils.java b/storm-client/src/jvm/org/apache/storm/utils/Utils.java
index 1d0dad9..a0406e0 100644
--- a/storm-client/src/jvm/org/apache/storm/utils/Utils.java
+++ b/storm-client/src/jvm/org/apache/storm/utils/Utils.java
@@ -1462,17 +1462,57 @@ public class Utils {
      * @param conf what to read the configuration out of.
      * @return the map.
      */
-    public static NavigableMap<String, String> getAlternativeVersionsMap(Map<String, Object> conf) {
-        TreeMap<String, String> ret = new TreeMap<>();
+    public static NavigableMap<String, IVersionInfo> getAlternativeVersionsMap(Map<String, Object> conf) {
+        TreeMap<String, IVersionInfo> ret = new TreeMap<>();
         Map<String, String> fromConf =
             (Map<String, String>) conf.getOrDefault(Config.SUPERVISOR_WORKER_VERSION_CLASSPATH_MAP, Collections.emptyMap());
         for (Map.Entry<String, String> entry : fromConf.entrySet()) {
             IVersionInfo version = VersionInfo.getFromClasspath(entry.getValue());
             if (version != null) {
-                ret.put(entry.getKey(), version.getVersion());
+                ret.put(entry.getKey(), version);
             } else {
                 LOG.error("Could not find the real version of {} from CP {}", entry.getKey(), entry.getValue());
-                ret.put(entry.getKey(), "Unknown");
+                ret.put(entry.getKey(), new IVersionInfo() {
+                    @Override
+                    public String getVersion() {
+                        return "Unknown";
+                    }
+
+                    @Override
+                    public String getRevision() {
+                        return "Unknown";
+                    }
+
+                    @Override
+                    public String getBranch() {
+                        return "Unknown";
+                    }
+
+                    @Override
+                    public String getDate() {
+                        return "Unknown";
+                    }
+
+                    @Override
+                    public String getUser() {
+                        return "Unknown";
+                    }
+
+                    @Override
+                    public String getUrl() {
+                        return "Unknown";
+                    }
+
+                    @Override
+                    public String getSrcChecksum() {
+                        return "Unknown";
+                    }
+
+                    @Override
+                    public String getBuildVersion() {
+                        return "Unknown";
+                    }
+                });
             }
         }
         return ret;

http://git-wip-us.apache.org/repos/asf/storm/blob/1f1fb0a1/storm-client/src/jvm/org/apache/storm/utils/VersionInfo.java
----------------------------------------------------------------------
diff --git a/storm-client/src/jvm/org/apache/storm/utils/VersionInfo.java b/storm-client/src/jvm/org/apache/storm/utils/VersionInfo.java
index 2490d98..9805d8b 100644
--- a/storm-client/src/jvm/org/apache/storm/utils/VersionInfo.java
+++ b/storm-client/src/jvm/org/apache/storm/utils/VersionInfo.java
@@ -30,7 +30,6 @@ import java.util.Arrays;
 import java.util.Enumeration;
 import java.util.List;
 import java.util.Properties;
-import java.util.jar.JarEntry;
 import java.util.jar.JarFile;
 import java.util.zip.ZipEntry;
 import org.slf4j.Logger;
@@ -39,8 +38,8 @@ import org.slf4j.LoggerFactory;
 public final class VersionInfo {
     private static final Logger LOG = LoggerFactory.getLogger(VersionInfo.class);
     private static final String STORM_CORE_PROPERTIES_NAME = "storm-core-version-info.properties";
-    private static final VersionInfoImpl COMMON_VERSION_INFO = new VersionInfoImpl("storm-core");
-    public static final SimpleVersion OUR_VERSION = new SimpleVersion(COMMON_VERSION_INFO.getVersion());
+    public static final IVersionInfo OUR_FULL_VERSION = new VersionInfoImpl("storm-core");
+    public static final SimpleVersion OUR_VERSION = new SimpleVersion(OUR_FULL_VERSION.getVersion());
 
     private static class VersionInfoImpl implements IVersionInfo {
         private Properties info;
@@ -169,7 +168,7 @@ public final class VersionInfo {
      * @return the version number of the build.
      */
     public static String getVersion() {
-        return COMMON_VERSION_INFO.getVersion();
+        return OUR_FULL_VERSION.getVersion();
     }
 
     /**
@@ -177,7 +176,7 @@ public final class VersionInfo {
      * @return the SCM revision number of the build.
      */
     public static String getRevision() {
-        return COMMON_VERSION_INFO.getRevision();
+        return OUR_FULL_VERSION.getRevision();
     }
 
     /**
@@ -185,7 +184,7 @@ public final class VersionInfo {
      * @return the SCM branch of the build.
      */
     public static String getBranch() {
-        return COMMON_VERSION_INFO.getBranch();
+        return OUR_FULL_VERSION.getBranch();
     }
 
     /**
@@ -193,7 +192,7 @@ public final class VersionInfo {
      * @return the date/time of the build.
      */
     public static String getDate() {
-        return COMMON_VERSION_INFO.getDate();
+        return OUR_FULL_VERSION.getDate();
     }
 
     /**
@@ -201,7 +200,7 @@ public final class VersionInfo {
      * @return the name of the user that did the build.
      */
     public static String getUser() {
-        return COMMON_VERSION_INFO.getUser();
+        return OUR_FULL_VERSION.getUser();
     }
 
     /**
@@ -209,7 +208,7 @@ public final class VersionInfo {
      * @return the SCM URL of the build.
      */
     public static String getUrl() {
-        return COMMON_VERSION_INFO.getUrl();
+        return OUR_FULL_VERSION.getUrl();
     }
 
     /**
@@ -217,7 +216,7 @@ public final class VersionInfo {
      * @return the checksum of the source.
      */
     public static String getSrcChecksum() {
-        return COMMON_VERSION_INFO.getSrcChecksum();
+        return OUR_FULL_VERSION.getSrcChecksum();
     }
 
     /**
@@ -225,7 +224,7 @@ public final class VersionInfo {
      * @return a descriptive representation of the build.
      */
     public static String getBuildVersion() {
-        return COMMON_VERSION_INFO.getBuildVersion();
+        return OUR_FULL_VERSION.getBuildVersion();
     }
 
     public static void main(String[] args) {

http://git-wip-us.apache.org/repos/asf/storm/blob/1f1fb0a1/storm-client/test/jvm/org/apache/storm/utils/UtilsTest.java
----------------------------------------------------------------------
diff --git a/storm-client/test/jvm/org/apache/storm/utils/UtilsTest.java b/storm-client/test/jvm/org/apache/storm/utils/UtilsTest.java
index 185e797..d42a7b1 100644
--- a/storm-client/test/jvm/org/apache/storm/utils/UtilsTest.java
+++ b/storm-client/test/jvm/org/apache/storm/utils/UtilsTest.java
@@ -231,10 +231,10 @@ public class UtilsTest {
         versions.put(key, System.getProperty("java.class.path"));
         Map<String, Object> conf = new HashMap<>();
         conf.put(Config.SUPERVISOR_WORKER_VERSION_CLASSPATH_MAP, versions);
-        NavigableMap<String, String> alternativeVersions = Utils.getAlternativeVersionsMap(conf);
+        NavigableMap<String, IVersionInfo> alternativeVersions = Utils.getAlternativeVersionsMap(conf);
         assertEquals(1, alternativeVersions.size());
-        String found = alternativeVersions.get(key);
+        IVersionInfo found = alternativeVersions.get(key);
         assertNotNull(found);
-        assertEquals(key, found);
+        assertEquals(key, found.getVersion());
     }
 }

http://git-wip-us.apache.org/repos/asf/storm/blob/1f1fb0a1/storm-webapp/src/main/java/org/apache/storm/daemon/ui/UIHelpers.java
----------------------------------------------------------------------
diff --git a/storm-webapp/src/main/java/org/apache/storm/daemon/ui/UIHelpers.java b/storm-webapp/src/main/java/org/apache/storm/daemon/ui/UIHelpers.java
index 627f3e7..ab307e8 100644
--- a/storm-webapp/src/main/java/org/apache/storm/daemon/ui/UIHelpers.java
+++ b/storm-webapp/src/main/java/org/apache/storm/daemon/ui/UIHelpers.java
@@ -87,6 +87,7 @@ import org.apache.storm.generated.WorkerSummary;
 import org.apache.storm.logging.filters.AccessLoggingFilter;
 import org.apache.storm.stats.StatsUtil;
 import org.apache.storm.thrift.TException;
+import org.apache.storm.utils.IVersionInfo;
 import org.apache.storm.utils.ObjectReader;
 import org.apache.storm.utils.TopologySpoutLag;
 import org.apache.storm.utils.Utils;
@@ -520,7 +521,21 @@ public class UIHelpers {
         return responseBuilder.build();
     }
 
-    private static final AtomicReference<List<Map<String, String>>> MEMORIZED_VERSIONS = new AtomicReference<List<Map<String, String>>>();
+    private static final AtomicReference<List<Map<String, String>>> MEMORIZED_VERSIONS = new AtomicReference<>();
+    private static final AtomicReference<Map<String, String>> MEMORIZED_FULL_VERSION = new AtomicReference<>();
+
+
+    private static Map<String, String> toJsonStruct(IVersionInfo info) {
+        Map<String, String> ret = new HashMap<>();
+        ret.put("version", info.getVersion());
+        ret.put("revision", info.getRevision());
+        ret.put("branch", info.getBranch());
+        ret.put("date", info.getDate());
+        ret.put("user", info.getUser());
+        ret.put("url", info.getUrl());
+        ret.put("srcChecksum", info.getSrcChecksum());
+        return ret;
+    }
 
     /**
      * Converts thrift call result into map fit for UI/api.
@@ -565,12 +580,11 @@ public class UIHelpers {
 
         if (MEMORIZED_VERSIONS.get() == null) {
             //Races are okay this is just to avoid extra work for each page load.
-            NavigableMap<String, String> versionsMap = Utils.getAlternativeVersionsMap(conf);
+            NavigableMap<String, IVersionInfo> versionsMap = Utils.getAlternativeVersionsMap(conf);
             List<Map<String, String>> versionList = new ArrayList<>();
-            for (Map.Entry<String, String> entry : versionsMap.entrySet()) {
-                Map<String, String> single = new HashMap<>();
+            for (Map.Entry<String, IVersionInfo> entry : versionsMap.entrySet()) {
+                Map<String, String> single = new HashMap<>(toJsonStruct(entry.getValue()));
                 single.put("versionMatch", entry.getKey());
-                single.put("installedVersion", entry.getValue());
                 versionList.add(single);
             }
             MEMORIZED_VERSIONS.set(versionList);
@@ -580,8 +594,13 @@ public class UIHelpers {
             result.put("alternativeWorkerVersions", versions);
         }
 
+        if (MEMORIZED_FULL_VERSION.get() == null) {
+            MEMORIZED_FULL_VERSION.set(toJsonStruct(VersionInfo.OUR_FULL_VERSION));
+        }
+
         result.put("user", user);
         result.put("stormVersion", VersionInfo.getVersion());
+        result.put("stormVersionInfo", MEMORIZED_FULL_VERSION.get());
         result.put("supervisors", supervisorSummaries.size());
         result.put("topologies", clusterSummary.get_topologies_size());
         result.put("slotsUsed", usedSlots);

http://git-wip-us.apache.org/repos/asf/storm/blob/1f1fb0a1/storm-webapp/src/main/java/org/apache/storm/daemon/ui/WEB-INF/index.html
----------------------------------------------------------------------
diff --git a/storm-webapp/src/main/java/org/apache/storm/daemon/ui/WEB-INF/index.html b/storm-webapp/src/main/java/org/apache/storm/daemon/ui/WEB-INF/index.html
index 545c157..0ea07bc 100644
--- a/storm-webapp/src/main/java/org/apache/storm/daemon/ui/WEB-INF/index.html
+++ b/storm-webapp/src/main/java/org/apache/storm/daemon/ui/WEB-INF/index.html
@@ -148,6 +148,13 @@ $(document).ready(function() {
                 jsError(function() {
                     clusterSummary.append(Mustache.render($(indexTemplate).filter("#cluster-summary-template").html(),response));
                     $('#cluster-summary [data-toggle="tooltip"]').tooltip();
+                    $('#cluster-summary [data-toggle="toggle"]').each(function(index) {
+                        var details = $(this).find('[toggle="details"]')
+                        details.hide()
+                        $(this).find('[toggle="link"]').on("click", function() {
+                            details.toggle(500);
+                        });
+                    });
                 });
 
                 jsError(function() {

http://git-wip-us.apache.org/repos/asf/storm/blob/1f1fb0a1/storm-webapp/src/main/java/org/apache/storm/daemon/ui/WEB-INF/templates/index-page-template.html
----------------------------------------------------------------------
diff --git a/storm-webapp/src/main/java/org/apache/storm/daemon/ui/WEB-INF/templates/index-page-template.html b/storm-webapp/src/main/java/org/apache/storm/daemon/ui/WEB-INF/templates/index-page-template.html
index bec24d4..027333b 100644
--- a/storm-webapp/src/main/java/org/apache/storm/daemon/ui/WEB-INF/templates/index-page-template.html
+++ b/storm-webapp/src/main/java/org/apache/storm/daemon/ui/WEB-INF/templates/index-page-template.html
@@ -57,9 +57,26 @@
   </thead>
   <tbody>
     <tr>
-      <td>{{stormVersion}}
+      <td>
+          <div data-toggle="toggle">
+            {{#stormVersionInfo}}
+            <a toggle="link">{{version}}</a>
+            <div toggle="details">
+              URL: {{url}}
+              </br>Revision: {{revision}}
+              </br>Compiled from branch {{branch}} by {{user}} on {{date}}
+            </div>
+          </div>
+          {{/stormVersionInfo}}
           {{#alternativeWorkerVersions}}
-          </br>Topologies matching {{versionMatch}} will run under {{installedVersion}}.
+          <div data-toggle="toggle">
+              Topologies matching {{versionMatch}} will run under <a toggle="link">{{version}}</a>.
+              <div toggle="details">
+                  URL: {{url}}
+                  </br>Revision: {{revision}}
+                  </br>Compiled from branch {{branch}} by {{user}} on {{date}}
+              </div>
+          </div>
           {{/alternativeWorkerVersions}}
       </td>
       <td>{{supervisors}}</td>