You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by mo...@apache.org on 2020/11/28 01:50:59 UTC

[incubator-doris] branch master updated: Show fe commit hash on proc (#4943)

This is an automated email from the ASF dual-hosted git repository.

morningman pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-doris.git


The following commit(s) were added to refs/heads/master by this push:
     new 3b56b60  Show fe commit hash on proc (#4943)
3b56b60 is described below

commit 3b56b601fb45bfe672d59a49f0a78b4566e9f67b
Author: ccoffline <45...@users.noreply.github.com>
AuthorDate: Sat Nov 28 09:50:48 2020 +0800

    Show fe commit hash on proc (#4943)
    
    Show FE's commit has in SHOW PROC "/frontends" result.
---
 .../doris/common/proc/FrontendsProcNode.java       |  4 +++-
 .../doris/http/rest/BootstrapFinishAction.java     | 12 ++++++++++
 .../java/org/apache/doris/qe/GlobalVariable.java   |  3 ++-
 .../java/org/apache/doris/system/Frontend.java     |  6 +++++
 .../apache/doris/system/FrontendHbResponse.java    |  9 +++++++-
 .../java/org/apache/doris/system/HeartbeatMgr.java | 14 +++++++-----
 .../org/apache/doris/system/HeartbeatMgrTest.java  | 26 ++++++++++++++++------
 gensrc/script/gen_build_version.sh                 |  2 ++
 8 files changed, 61 insertions(+), 15 deletions(-)

diff --git a/fe/fe-core/src/main/java/org/apache/doris/common/proc/FrontendsProcNode.java b/fe/fe-core/src/main/java/org/apache/doris/common/proc/FrontendsProcNode.java
index 6d12be3..dd2277e 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/common/proc/FrontendsProcNode.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/common/proc/FrontendsProcNode.java
@@ -44,7 +44,7 @@ public class FrontendsProcNode implements ProcNodeInterface {
     public static final ImmutableList<String> TITLE_NAMES = new ImmutableList.Builder<String>()
             .add("Name").add("IP").add("HostName").add("EditLogPort").add("HttpPort").add("QueryPort").add("RpcPort")
             .add("Role").add("IsMaster").add("ClusterId").add("Join").add("Alive")
-            .add("ReplayedJournalId").add("LastHeartbeat").add("IsHelper").add("ErrMsg")
+            .add("ReplayedJournalId").add("LastHeartbeat").add("IsHelper").add("ErrMsg").add("Version")
             .build();
     
     public static final int HOSTNAME_INDEX = 2;
@@ -126,6 +126,8 @@ public class FrontendsProcNode implements ProcNodeInterface {
 
             info.add(fe.getHeartbeatErrMsg());
 
+            info.add(fe.getVersion());
+
             infos.add(info);
         }
     }
diff --git a/fe/fe-core/src/main/java/org/apache/doris/http/rest/BootstrapFinishAction.java b/fe/fe-core/src/main/java/org/apache/doris/http/rest/BootstrapFinishAction.java
index eee998c..7af1542 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/http/rest/BootstrapFinishAction.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/http/rest/BootstrapFinishAction.java
@@ -29,6 +29,7 @@ import com.google.common.base.Strings;
 import com.google.gson.Gson;
 
 import io.netty.handler.codec.http.HttpMethod;
+import org.apache.doris.common.Version;
 
 /*
  * fe_host:fe_http_port/api/bootstrap
@@ -43,6 +44,7 @@ public class BootstrapFinishAction extends RestBaseAction {
     public static final String REPLAYED_JOURNAL_ID = "replayedJournalId";
     public static final String QUERY_PORT = "queryPort";
     public static final String RPC_PORT = "rpcPort";
+    public static final String VERSION = "version";
 
     public BootstrapFinishAction(ActionController controller) {
         super(controller);
@@ -92,6 +94,7 @@ public class BootstrapFinishAction extends RestBaseAction {
                     result.setMaxReplayedJournal(replayedJournalId);
                     result.setQueryPort(Config.query_port);
                     result.setRpcPort(Config.rpc_port);
+                    result.setVersion(Version.DORIS_BUILD_VERSION + "-" + Version.DORIS_BUILD_SHORT_HASH);
                 }
             }
         } else {
@@ -108,6 +111,7 @@ public class BootstrapFinishAction extends RestBaseAction {
         private long replayedJournalId = 0;
         private int queryPort = 0;
         private int rpcPort = 0;
+        private String version = "";
 
         public BootstrapResult() {
             super();
@@ -141,6 +145,14 @@ public class BootstrapFinishAction extends RestBaseAction {
             return rpcPort;
         }
 
+        public String getVersion() {
+            return version;
+        }
+
+        public void setVersion(String version) {
+            this.version = version;
+        }
+
         @Override
         public String toJson() {
             Gson gson = new Gson();
diff --git a/fe/fe-core/src/main/java/org/apache/doris/qe/GlobalVariable.java b/fe/fe-core/src/main/java/org/apache/doris/qe/GlobalVariable.java
index 0739d98..a6767ea 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/qe/GlobalVariable.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/qe/GlobalVariable.java
@@ -43,7 +43,8 @@ public final class GlobalVariable {
     public static final String PERFORMANCE_SCHEMA = "performance_schema";
 
     @VariableMgr.VarAttr(name = VERSION_COMMENT, flag = VariableMgr.READ_ONLY)
-    public static String versionComment = "Doris version " + Version.DORIS_BUILD_VERSION;
+    public static String versionComment = "Doris version " +
+            Version.DORIS_BUILD_VERSION + "-" + Version.DORIS_BUILD_SHORT_HASH;
 
     @VariableMgr.VarAttr(name = VERSION, flag = VariableMgr.READ_ONLY)
     public static String version = "5.1.0";
diff --git a/fe/fe-core/src/main/java/org/apache/doris/system/Frontend.java b/fe/fe-core/src/main/java/org/apache/doris/system/Frontend.java
index 7ba7c10..f0172d6 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/system/Frontend.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/system/Frontend.java
@@ -33,6 +33,7 @@ public class Frontend implements Writable {
     private String nodeName;
     private String host;
     private int editLogPort;
+    private String version;
     
     private int queryPort;
     private int rpcPort;
@@ -60,6 +61,10 @@ public class Frontend implements Writable {
     public String getHost() {
         return this.host;
     }
+
+    public String getVersion() {
+        return version;
+    }
     
     public String getNodeName() {
         return nodeName;
@@ -103,6 +108,7 @@ public class Frontend implements Writable {
         boolean isChanged = false;
         if (hbResponse.getStatus() == HbStatus.OK) {
             isAlive = true;
+            version = hbResponse.getVersion();
             queryPort = hbResponse.getQueryPort();
             rpcPort = hbResponse.getRpcPort();
             replayedJournalId = hbResponse.getReplayedJournalId();
diff --git a/fe/fe-core/src/main/java/org/apache/doris/system/FrontendHbResponse.java b/fe/fe-core/src/main/java/org/apache/doris/system/FrontendHbResponse.java
index d22b4f9..f9b6dbd 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/system/FrontendHbResponse.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/system/FrontendHbResponse.java
@@ -34,12 +34,13 @@ public class FrontendHbResponse extends HeartbeatResponse implements Writable {
     private int queryPort;
     private int rpcPort;
     private long replayedJournalId;
+    private String version;
 
     public FrontendHbResponse() {
         super(HeartbeatResponse.Type.FRONTEND);
     }
 
-    public FrontendHbResponse(String name, int queryPort, int rpcPort, long replayedJournalId, long hbTime) {
+    public FrontendHbResponse(String name, int queryPort, int rpcPort, long replayedJournalId, long hbTime, String version) {
         super(HeartbeatResponse.Type.FRONTEND);
         this.status = HbStatus.OK;
         this.name = name;
@@ -47,6 +48,7 @@ public class FrontendHbResponse extends HeartbeatResponse implements Writable {
         this.rpcPort = rpcPort;
         this.replayedJournalId = replayedJournalId;
         this.hbTime = hbTime;
+        this.version = version;
     }
 
     public FrontendHbResponse(String name, String errMsg) {
@@ -72,6 +74,10 @@ public class FrontendHbResponse extends HeartbeatResponse implements Writable {
         return replayedJournalId;
     }
 
+    public String getVersion() {
+        return version;
+    }
+
     public static FrontendHbResponse read(DataInput in) throws IOException {
         FrontendHbResponse result = new FrontendHbResponse();
         result.readFields(in);
@@ -101,6 +107,7 @@ public class FrontendHbResponse extends HeartbeatResponse implements Writable {
         StringBuilder sb = new StringBuilder();
         sb.append(super.toString());
         sb.append(", name: ").append(name);
+        sb.append(", version: ").append(version);
         sb.append(", queryPort: ").append(queryPort);
         sb.append(", rpcPort: ").append(rpcPort);
         sb.append(", replayedJournalId: ").append(replayedJournalId);
diff --git a/fe/fe-core/src/main/java/org/apache/doris/system/HeartbeatMgr.java b/fe/fe-core/src/main/java/org/apache/doris/system/HeartbeatMgr.java
index cb63632..cd5da57 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/system/HeartbeatMgr.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/system/HeartbeatMgr.java
@@ -23,6 +23,7 @@ import org.apache.doris.common.ClientPool;
 import org.apache.doris.common.Config;
 import org.apache.doris.common.FeConstants;
 import org.apache.doris.common.ThreadPoolManager;
+import org.apache.doris.common.Version;
 import org.apache.doris.common.util.MasterDaemon;
 import org.apache.doris.common.util.Util;
 import org.apache.doris.http.rest.BootstrapFinishAction;
@@ -153,7 +154,7 @@ public class HeartbeatMgr extends MasterDaemon {
         // we also add a 'mocked' master Frontends heartbeat response to synchronize master info to other Frontends.
         hbPackage.addHbResponse(new FrontendHbResponse(masterFeNodeName,
                 Config.query_port, Config.rpc_port, Catalog.getCurrentCatalog().getEditLog().getMaxJournalId(),
-                System.currentTimeMillis()));
+                System.currentTimeMillis(), Version.DORIS_BUILD_VERSION + "-" + Version.DORIS_BUILD_SHORT_HASH));
 
         // write edit log
         Catalog.getCurrentCatalog().getEditLog().logHeartbeat(hbPackage);
@@ -190,7 +191,7 @@ public class HeartbeatMgr extends MasterDaemon {
                 FsBroker broker = Catalog.getCurrentCatalog().getBrokerMgr().getBroker(
                         hbResponse.getName(), hbResponse.getHost(), hbResponse.getPort());
                 if (broker != null) {
-                    boolean isChanged =  broker.handleHbResponse(hbResponse);
+                    boolean isChanged = broker.handleHbResponse(hbResponse);
                     if (hbResponse.getStatus() != HbStatus.OK) {
                         // invalid all connections cached in ClientPool
                         ClientPool.brokerPool.clearPool(new TNetworkAddress(broker.ip, broker.port));
@@ -281,7 +282,8 @@ public class HeartbeatMgr extends MasterDaemon {
                 // heartbeat to self
                 if (Catalog.getCurrentCatalog().isReady()) {
                     return new FrontendHbResponse(fe.getNodeName(), Config.query_port, Config.rpc_port,
-                            Catalog.getCurrentCatalog().getReplayedJournalId(), System.currentTimeMillis());
+                            Catalog.getCurrentCatalog().getReplayedJournalId(), System.currentTimeMillis(),
+                            Version.DORIS_BUILD_VERSION + "-" + Version.DORIS_BUILD_SHORT_HASH);
                 } else {
                     return new FrontendHbResponse(fe.getNodeName(), "not ready");
                 }
@@ -310,8 +312,9 @@ public class HeartbeatMgr extends MasterDaemon {
                         long replayedJournalId = root.getLong(BootstrapFinishAction.REPLAYED_JOURNAL_ID);
                         int queryPort = root.getInt(BootstrapFinishAction.QUERY_PORT);
                         int rpcPort = root.getInt(BootstrapFinishAction.RPC_PORT);
+                        String version = root.getString(BootstrapFinishAction.VERSION);
                         return new FrontendHbResponse(fe.getNodeName(), queryPort, rpcPort, replayedJournalId,
-                                System.currentTimeMillis());
+                                System.currentTimeMillis(), version == null ? "unknown" : version);
                     }
                 } else if (root.has("code")) {
                     // new return
@@ -323,8 +326,9 @@ public class HeartbeatMgr extends MasterDaemon {
                         long replayedJournalId = dataObj.getLong(BootstrapFinishAction.REPLAYED_JOURNAL_ID);
                         int queryPort = dataObj.getInt(BootstrapFinishAction.QUERY_PORT);
                         int rpcPort = dataObj.getInt(BootstrapFinishAction.RPC_PORT);
+                        // TODO(wb) support new return for version here
                         return new FrontendHbResponse(fe.getNodeName(), queryPort, rpcPort, replayedJournalId,
-                                System.currentTimeMillis());
+                                System.currentTimeMillis(), "unknown");
                     }
                 } else {
                     throw new Exception("invalid return value: " + result);
diff --git a/fe/fe-core/src/test/java/org/apache/doris/system/HeartbeatMgrTest.java b/fe/fe-core/src/test/java/org/apache/doris/system/HeartbeatMgrTest.java
index fc8a1de..bb2aaa0 100644
--- a/fe/fe-core/src/test/java/org/apache/doris/system/HeartbeatMgrTest.java
+++ b/fe/fe-core/src/test/java/org/apache/doris/system/HeartbeatMgrTest.java
@@ -70,12 +70,23 @@ public class HeartbeatMgrTest {
     public void testFrontendHbHandler() {
         new MockUp<Util>() {
             @Mock
-            public String getResultForUrl(String urlStr, String encodedAuthInfo, int connectTimeoutMs,
-                    int readTimeoutMs) {
+            public String getResultForUrl(String urlStr, String encodedAuthInfo,
+                                          int connectTimeoutMs, int readTimeoutMs) {
+
                 if (urlStr.contains("192.168.1.1")) {
-                    return "{\"replayedJournalId\":191224,\"queryPort\":9131,\"rpcPort\":9121,\"status\":\"OK\",\"msg\":\"Success\"}";
+                    return "{\"replayedJournalId\":191224," +
+                            "\"queryPort\":9131," +
+                            "\"rpcPort\":9121," +
+                            "\"status\":\"OK\"," +
+                            "\"msg\":\"Success\"," +
+                            "\"version\":\"test\"}";
                 } else {
-                    return "{\"replayedJournalId\":0,\"queryPort\":0,\"rpcPort\":0,\"status\":\"FAILED\",\"msg\":\"not ready\"}";
+                    return "{\"replayedJournalId\":0," +
+                            "\"queryPort\":0," +
+                            "\"rpcPort\":0," +
+                            "\"status\":\"FAILED\"," +
+                            "\"msg\":\"not ready\"," +
+                            "\"version\":\"unknown\"}";
                 }
             }
         };
@@ -83,13 +94,14 @@ public class HeartbeatMgrTest {
         Frontend fe = new Frontend(FrontendNodeType.FOLLOWER, "test", "192.168.1.1", 9010);
         FrontendHeartbeatHandler handler = new FrontendHeartbeatHandler(fe, 12345, "abcd");
         HeartbeatResponse response = handler.call();
-        
+
         Assert.assertTrue(response instanceof FrontendHbResponse);
         FrontendHbResponse hbResponse = (FrontendHbResponse) response;
         Assert.assertEquals(191224, hbResponse.getReplayedJournalId());
-        Assert.assertEquals(9121, hbResponse.getRpcPort());
         Assert.assertEquals(9131, hbResponse.getQueryPort());
+        Assert.assertEquals(9121, hbResponse.getRpcPort());
         Assert.assertEquals(HbStatus.OK, hbResponse.getStatus());
+        Assert.assertEquals("test", hbResponse.getVersion());
 
         Frontend fe2 = new Frontend(FrontendNodeType.FOLLOWER, "test2", "192.168.1.2", 9010);
         handler = new FrontendHeartbeatHandler(fe2, 12345, "abcd");
@@ -98,8 +110,8 @@ public class HeartbeatMgrTest {
         Assert.assertTrue(response instanceof FrontendHbResponse);
         hbResponse = (FrontendHbResponse) response;
         Assert.assertEquals(0, hbResponse.getReplayedJournalId());
-        Assert.assertEquals(0, hbResponse.getRpcPort());
         Assert.assertEquals(0, hbResponse.getQueryPort());
+        Assert.assertEquals(0, hbResponse.getRpcPort());
         Assert.assertEquals(HbStatus.BAD, hbResponse.getStatus());
 
     }
diff --git a/gensrc/script/gen_build_version.sh b/gensrc/script/gen_build_version.sh
index 1cf5420..0b39001 100755
--- a/gensrc/script/gen_build_version.sh
+++ b/gensrc/script/gen_build_version.sh
@@ -121,6 +121,7 @@ public class Version {
 
   public static final String DORIS_BUILD_VERSION = "${build_version}";
   public static final String DORIS_BUILD_HASH = "${build_hash}";
+  public static final String DORIS_BUILD_SHORT_HASH = "${build_short_hash}";
   public static final String DORIS_BUILD_TIME = "${build_time}";
   public static final String DORIS_BUILD_INFO = "${build_info}";
   public static final String DORIS_JAVA_COMPILE_VERSION = "${java_version_str}";
@@ -128,6 +129,7 @@ public class Version {
   public static void main(String[] args) {
     System.out.println("doris_build_version: " + DORIS_BUILD_VERSION);
     System.out.println("doris_build_hash: " + DORIS_BUILD_HASH);
+    System.out.println("doris_build_short_hash: " + DORIS_BUILD_SHORT_HASH);
     System.out.println("doris_build_time: " + DORIS_BUILD_TIME);
     System.out.println("doris_build_info: " + DORIS_BUILD_INFO);
     System.out.println("doris_java_compile_version: " + DORIS_JAVA_COMPILE_VERSION);


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org
For additional commands, e-mail: commits-help@doris.apache.org