This is an automated email from the ASF dual-hosted git repository. yiguolei pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push: new 6fba092741 [optimization](show-frontends) Add start time in Show frontends (#21844) 6fba092741 is described below commit 6fba092741fc51b0f663b5686cbc3ca2a7c58a75 Author: herry2038 <5303...@qq.com> AuthorDate: Mon Jul 17 05:09:43 2023 +0800 [optimization](show-frontends) Add start time in Show frontends (#21844) --------- Co-authored-by: yuxianbing <iloveqaz123> --- .../org/apache/doris/common/proc/FrontendsProcNode.java | 4 +++- .../main/java/org/apache/doris/service/ExecuteEnv.java | 6 ++++++ .../org/apache/doris/service/FrontendServiceImpl.java | 1 + .../src/main/java/org/apache/doris/system/Frontend.java | 6 ++++++ .../java/org/apache/doris/system/FrontendHbResponse.java | 9 ++++++++- .../main/java/org/apache/doris/system/HeartbeatMgr.java | 15 ++++++++++++--- gensrc/thrift/FrontendService.thrift | 1 + 7 files changed, 37 insertions(+), 5 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 a129bbd338..115356bc33 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 @@ -45,7 +45,8 @@ public class FrontendsProcNode implements ProcNodeInterface { public static final ImmutableList<String> TITLE_NAMES = new ImmutableList.Builder<String>() .add("Name").add("Host").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("Version") + .add("ReplayedJournalId").add("LastStartTime").add("LastHeartbeat") + .add("IsHelper").add("ErrMsg").add("Version") .add("CurrentConnected") .build(); @@ -124,6 +125,7 @@ public class FrontendsProcNode implements ProcNodeInterface { info.add(String.valueOf(fe.isAlive())); info.add(Long.toString(fe.getReplayedJournalId())); } + info.add(TimeUtils.longToTimeString(fe.getLastStartupTime())); info.add(TimeUtils.longToTimeString(fe.getLastUpdateTime())); info.add(String.valueOf(isHelperNode(helperNodes, fe))); info.add(fe.getHeartbeatErrMsg()); diff --git a/fe/fe-core/src/main/java/org/apache/doris/service/ExecuteEnv.java b/fe/fe-core/src/main/java/org/apache/doris/service/ExecuteEnv.java index a7ac522b5b..b13af519e9 100755 --- a/fe/fe-core/src/main/java/org/apache/doris/service/ExecuteEnv.java +++ b/fe/fe-core/src/main/java/org/apache/doris/service/ExecuteEnv.java @@ -26,10 +26,12 @@ public class ExecuteEnv { private static volatile ExecuteEnv INSTANCE; private MultiLoadMgr multiLoadMgr; private ConnectScheduler scheduler; + private long startupTime; private ExecuteEnv() { multiLoadMgr = new MultiLoadMgr(); scheduler = new ConnectScheduler(Config.qe_max_connection); + startupTime = System.currentTimeMillis(); } public static ExecuteEnv getInstance() { @@ -50,4 +52,8 @@ public class ExecuteEnv { public MultiLoadMgr getMultiLoadMgr() { return multiLoadMgr; } + + public long getStartupTime() { + return startupTime; + } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/service/FrontendServiceImpl.java b/fe/fe-core/src/main/java/org/apache/doris/service/FrontendServiceImpl.java index 206bd56d10..bb6fbe38b3 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/service/FrontendServiceImpl.java +++ b/fe/fe-core/src/main/java/org/apache/doris/service/FrontendServiceImpl.java @@ -1920,6 +1920,7 @@ public class FrontendServiceImpl implements FrontendService.Iface { result.setQueryPort(Config.query_port); result.setRpcPort(Config.rpc_port); result.setVersion(Version.DORIS_BUILD_VERSION + "-" + Version.DORIS_BUILD_SHORT_HASH); + result.setLastStartupTime(exeEnv.getStartupTime()); } } else { result.setStatus(TFrontendPingFrontendStatusCode.FAILED); 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 c0946a1580..e281c752da 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 @@ -51,6 +51,7 @@ public class Frontend implements Writable { private int rpcPort; private long replayedJournalId; + private long lastStartupTime; private long lastUpdateTime; private String heartbeatErrMsg = ""; @@ -114,6 +115,10 @@ public class Frontend implements Writable { return heartbeatErrMsg; } + public long getLastStartupTime() { + return lastStartupTime; + } + public long getLastUpdateTime() { return lastUpdateTime; } @@ -138,6 +143,7 @@ public class Frontend implements Writable { replayedJournalId = hbResponse.getReplayedJournalId(); lastUpdateTime = hbResponse.getHbTime(); heartbeatErrMsg = ""; + lastStartupTime = hbResponse.getFeStartTime(); isChanged = true; } else { if (isAlive) { 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 7ed5cec5fd..5504de4a9f 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 @@ -39,13 +39,14 @@ public class FrontendHbResponse extends HeartbeatResponse implements Writable { @SerializedName(value = "replayedJournalId") private long replayedJournalId; private String version; + private long feStartTime; public FrontendHbResponse() { super(HeartbeatResponse.Type.FRONTEND); } public FrontendHbResponse(String name, int queryPort, int rpcPort, - long replayedJournalId, long hbTime, String version) { + long replayedJournalId, long hbTime, String version, long feStartTime) { super(HeartbeatResponse.Type.FRONTEND); this.status = HbStatus.OK; this.name = name; @@ -54,6 +55,7 @@ public class FrontendHbResponse extends HeartbeatResponse implements Writable { this.replayedJournalId = replayedJournalId; this.hbTime = hbTime; this.version = version; + this.feStartTime = feStartTime; } public FrontendHbResponse(String name, String errMsg) { @@ -83,6 +85,10 @@ public class FrontendHbResponse extends HeartbeatResponse implements Writable { return version; } + public long getFeStartTime() { + return feStartTime; + } + @Override public void readFields(DataInput in) throws IOException { super.readFields(in); @@ -101,6 +107,7 @@ public class FrontendHbResponse extends HeartbeatResponse implements Writable { sb.append(", queryPort: ").append(queryPort); sb.append(", rpcPort: ").append(rpcPort); sb.append(", replayedJournalId: ").append(replayedJournalId); + sb.append(", festartTime: ").append(feStartTime); return sb.toString(); } 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 dc4c28217b..53427c682e 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 @@ -27,6 +27,7 @@ import org.apache.doris.common.Version; import org.apache.doris.common.util.MasterDaemon; import org.apache.doris.persist.HbPackage; import org.apache.doris.resource.Tag; +import org.apache.doris.service.ExecuteEnv; import org.apache.doris.service.FrontendOptions; import org.apache.doris.system.HeartbeatResponse.HbStatus; import org.apache.doris.system.SystemInfoService.HostInfo; @@ -112,7 +113,7 @@ public class HeartbeatMgr extends MasterDaemon { for (Frontend frontend : frontends) { FrontendHeartbeatHandler handler = new FrontendHeartbeatHandler(frontend, Env.getCurrentEnv().getClusterId(), - Env.getCurrentEnv().getToken()); + Env.getCurrentEnv().getToken(), ExecuteEnv.getInstance().getStartupTime()); hbResponses.add(executor.submit(handler)); } @@ -283,6 +284,7 @@ public class HeartbeatMgr extends MasterDaemon { private Frontend fe; private int clusterId; private String token; + private long callerFeStartTime; public FrontendHeartbeatHandler(Frontend fe, int clusterId, String token) { this.fe = fe; @@ -290,6 +292,13 @@ public class HeartbeatMgr extends MasterDaemon { this.token = token; } + public FrontendHeartbeatHandler(Frontend fe, int clusterId, String token, long callerFeStartTime) { + this.fe = fe; + this.clusterId = clusterId; + this.token = token; + this.callerFeStartTime = callerFeStartTime; + } + @Override public HeartbeatResponse call() { HostInfo selfNode = Env.getCurrentEnv().getSelfNode(); @@ -298,7 +307,7 @@ public class HeartbeatMgr extends MasterDaemon { if (Env.getCurrentEnv().isReady()) { return new FrontendHbResponse(fe.getNodeName(), Config.query_port, Config.rpc_port, Env.getCurrentEnv().getMaxJournalId(), System.currentTimeMillis(), - Version.DORIS_BUILD_VERSION + "-" + Version.DORIS_BUILD_SHORT_HASH); + Version.DORIS_BUILD_VERSION + "-" + Version.DORIS_BUILD_SHORT_HASH, callerFeStartTime); } else { return new FrontendHbResponse(fe.getNodeName(), "not ready"); } @@ -319,7 +328,7 @@ public class HeartbeatMgr extends MasterDaemon { if (result.getStatus() == TFrontendPingFrontendStatusCode.OK) { return new FrontendHbResponse(fe.getNodeName(), result.getQueryPort(), result.getRpcPort(), result.getReplayedJournalId(), - System.currentTimeMillis(), result.getVersion()); + System.currentTimeMillis(), result.getVersion(), result.getLastStartupTime()); } else { return new FrontendHbResponse(fe.getNodeName(), result.getMsg()); diff --git a/gensrc/thrift/FrontendService.thrift b/gensrc/thrift/FrontendService.thrift index 619337321f..95c2a75fbb 100644 --- a/gensrc/thrift/FrontendService.thrift +++ b/gensrc/thrift/FrontendService.thrift @@ -766,6 +766,7 @@ struct TFrontendPingFrontendResult { 4: required i32 rpcPort 5: required i64 replayedJournalId 6: required string version + 7: optional i64 lastStartupTime } struct TPropertyVal { --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org