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

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


The following commit(s) were added to refs/heads/branch-0.12 by this push:
     new 81aa1c5  [Heartbeat] Add version to fe heartbeat and system page 
(#4521)
81aa1c5 is described below

commit 81aa1c599def3c3f0d9cd80469fd06393ea764e7
Author: ccoffline <[email protected]>
AuthorDate: Tue Sep 8 09:24:48 2020 +0800

    [Heartbeat] Add version to fe heartbeat and system page (#4521)
    
    This commit adds git commit message of fe to the system page, just like be.
    To achieve this, fe heartbeat message has now been carrying git commit 
message.
---
 .../doris/common/proc/FrontendsProcNode.java       | 24 ++++++++++++----------
 .../doris/http/rest/BootstrapFinishAction.java     | 12 +++++++++++
 .../java/org/apache/doris/system/Frontend.java     | 16 ++++++++++-----
 .../apache/doris/system/FrontendHbResponse.java    |  9 +++++++-
 .../java/org/apache/doris/system/HeartbeatMgr.java | 13 +++++++-----
 gensrc/script/gen_build_version.sh                 |  2 ++
 6 files changed, 54 insertions(+), 22 deletions(-)

diff --git 
a/fe/src/main/java/org/apache/doris/common/proc/FrontendsProcNode.java 
b/fe/src/main/java/org/apache/doris/common/proc/FrontendsProcNode.java
index 6d12be3..ec520b2 100644
--- a/fe/src/main/java/org/apache/doris/common/proc/FrontendsProcNode.java
+++ b/fe/src/main/java/org/apache/doris/common/proc/FrontendsProcNode.java
@@ -44,22 +44,22 @@ 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;
 
     private Catalog catalog;
-    
+
     public FrontendsProcNode(Catalog catalog) {
         this.catalog = catalog;
     }
-    
+
     @Override
     public ProcResult fetchResult() {
         BaseProcResult result = new BaseProcResult();
         result.setNames(TITLE_NAMES);
-        
+
         List<List<String>> infos = Lists.newArrayList();
 
         getFrontendsInfo(catalog, infos);
@@ -82,13 +82,13 @@ public class FrontendsProcNode implements ProcNodeInterface 
{
             // this may happen when majority of FOLLOWERS are down and no 
MASTER right now.
             LOG.warn("failed to get leader: {}", e.getMessage());
         }
-        
+
         // get all node which are joined in bdb group
         List<InetSocketAddress> allFe = 
catalog.getHaProtocol().getElectableNodes(true /* include leader */);
         allFe.addAll(catalog.getHaProtocol().getObserverNodes());
         List<Pair<String, Integer>> allFeHosts = convertToHostPortPair(allFe);
         List<Pair<String, Integer>> helperNodes = catalog.getHelperNodes();
-        
+
         for (Frontend fe : catalog.getFrontends(null /* all */)) {
 
             List<String> info = new ArrayList<String>();
@@ -112,7 +112,7 @@ public class FrontendsProcNode implements ProcNodeInterface 
{
 
             info.add(Integer.toString(catalog.getClusterId()));
             info.add(String.valueOf(isJoin(allFeHosts, fe)));
-            
+
             if (fe.getHost().equals(catalog.getSelfNode().first)) {
                 info.add("true");
                 
info.add(Long.toString(catalog.getEditLog().getMaxJournalId()));
@@ -121,15 +121,17 @@ public class FrontendsProcNode implements 
ProcNodeInterface {
                 info.add(Long.toString(fe.getReplayedJournalId()));
             }
             info.add(TimeUtils.longToTimeString(fe.getLastUpdateTime()));
-            
+
             info.add(String.valueOf(isHelperNode(helperNodes, fe)));
 
             info.add(fe.getHeartbeatErrMsg());
 
+            info.add(fe.getVersion());
+
             infos.add(info);
         }
     }
-    
+
     private static boolean isHelperNode(List<Pair<String, Integer>> 
helperNodes, Frontend fe) {
         return helperNodes.stream().anyMatch(p -> p.first.equals(fe.getHost()) 
&& p.second == fe.getEditLogPort());
     }
@@ -142,7 +144,7 @@ public class FrontendsProcNode implements ProcNodeInterface 
{
         }
         return false;
     }
-    
+
     private static List<Pair<String, Integer>> 
convertToHostPortPair(List<InetSocketAddress> addrs) {
         List<Pair<String, Integer>> hostPortPair = Lists.newArrayList();
         for (InetSocketAddress addr : addrs) {
diff --git 
a/fe/src/main/java/org/apache/doris/http/rest/BootstrapFinishAction.java 
b/fe/src/main/java/org/apache/doris/http/rest/BootstrapFinishAction.java
index 1ebfa61..8e99e7a 100644
--- a/fe/src/main/java/org/apache/doris/http/rest/BootstrapFinishAction.java
+++ b/fe/src/main/java/org/apache/doris/http/rest/BootstrapFinishAction.java
@@ -20,6 +20,7 @@ package org.apache.doris.http.rest;
 import org.apache.doris.catalog.Catalog;
 import org.apache.doris.common.Config;
 import org.apache.doris.common.DdlException;
+import org.apache.doris.common.Version;
 import org.apache.doris.http.ActionController;
 import org.apache.doris.http.BaseRequest;
 import org.apache.doris.http.BaseResponse;
@@ -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/src/main/java/org/apache/doris/system/Frontend.java 
b/fe/src/main/java/org/apache/doris/system/Frontend.java
index feb123c..daae304 100644
--- a/fe/src/main/java/org/apache/doris/system/Frontend.java
+++ b/fe/src/main/java/org/apache/doris/system/Frontend.java
@@ -33,7 +33,8 @@ public class Frontend implements Writable {
     private String nodeName;
     private String host;
     private int editLogPort;
-    
+    private String version;
+
     private int queryPort;
     private int rpcPort;
 
@@ -45,7 +46,7 @@ public class Frontend implements Writable {
 
     public Frontend() {
     }
-    
+
     public Frontend(FrontendNodeType role, String nodeName, String host, int 
editLogPort) {
         this.role = role;
         this.nodeName = nodeName;
@@ -56,11 +57,15 @@ public class Frontend implements Writable {
     public FrontendNodeType getRole() {
         return this.role;
     }
-    
+
     public String getHost() {
         return this.host;
     }
-    
+
+    public String getVersion() {
+        return version;
+    }
+
     public String getNodeName() {
         return nodeName;
     }
@@ -76,7 +81,7 @@ public class Frontend implements Writable {
     public boolean isAlive() {
         return isAlive;
     }
-    
+
     public int getEditLogPort() {
         return this.editLogPort;
     }
@@ -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/src/main/java/org/apache/doris/system/FrontendHbResponse.java 
b/fe/src/main/java/org/apache/doris/system/FrontendHbResponse.java
index 2b4cf5f..3774b6c 100644
--- a/fe/src/main/java/org/apache/doris/system/FrontendHbResponse.java
+++ b/fe/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);
@@ -100,6 +106,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/src/main/java/org/apache/doris/system/HeartbeatMgr.java 
b/fe/src/main/java/org/apache/doris/system/HeartbeatMgr.java
index ad16535..d74613e 100644
--- a/fe/src/main/java/org/apache/doris/system/HeartbeatMgr.java
+++ b/fe/src/main/java/org/apache/doris/system/HeartbeatMgr.java
@@ -22,6 +22,7 @@ import org.apache.doris.catalog.FsBroker;
 import org.apache.doris.common.ClientPool;
 import org.apache.doris.common.Config;
 import org.apache.doris.common.FeConstants;
+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;
@@ -95,7 +96,7 @@ public class HeartbeatMgr extends MasterDaemon {
     @Override
     protected void runAfterCatalogReady() {
         List<Future<HeartbeatResponse>> hbResponses = Lists.newArrayList();
-        
+
         // send backend heartbeat
         for (Backend backend : nodeMgr.getIdToBackend().values()) {
             BackendHeartbeatHandler handler = new 
BackendHeartbeatHandler(backend);
@@ -152,7 +153,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);
@@ -186,7 +187,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));
@@ -276,7 +277,8 @@ public class HeartbeatMgr extends MasterDaemon {
                 // heartbeat to self
                 if (Catalog.getInstance().isReady()) {
                     return new FrontendHbResponse(fe.getNodeName(), 
Config.query_port, Config.rpc_port,
-                            Catalog.getInstance().getReplayedJournalId(), 
System.currentTimeMillis());
+                            Catalog.getInstance().getReplayedJournalId(), 
System.currentTimeMillis(),
+                            Version.DORIS_BUILD_VERSION + "-" + 
Version.DORIS_BUILD_SHORT_HASH);
                 } else {
                     return new FrontendHbResponse(fe.getNodeName(), "not 
ready");
                 }
@@ -299,8 +301,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);
                 }
             } catch (Exception e) {
                 return new FrontendHbResponse(fe.getNodeName(),
diff --git a/gensrc/script/gen_build_version.sh 
b/gensrc/script/gen_build_version.sh
index 0b3550b..8075d87 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: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to