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 2022/06/01 15:30:15 UTC

[incubator-doris] branch master updated: [feature] Support show proc BackendLoadStatistic (#9618)

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 2fc2113b05 [feature] Support show proc BackendLoadStatistic (#9618)
2fc2113b05 is described below

commit 2fc2113b0597c08cd486fbefd10676fd99c58021
Author: ccoffline <45...@users.noreply.github.com>
AuthorDate: Wed Jun 1 23:30:10 2022 +0800

    [feature] Support show proc BackendLoadStatistic (#9618)
    
    The proc info method already exists in `ClusterLoadStatistic.getBackendStatistic`, I'll add a proc node to show it.
---
 .../apache/doris/clone/ClusterLoadStatistic.java   |  3 ++
 .../common/proc/BackendLoadStatisticProcNode.java  | 50 ++++++++++++++++++++++
 .../common/proc/ClusterLoadStatisticProcDir.java   |  8 ++--
 3 files changed, 57 insertions(+), 4 deletions(-)

diff --git a/fe/fe-core/src/main/java/org/apache/doris/clone/ClusterLoadStatistic.java b/fe/fe-core/src/main/java/org/apache/doris/clone/ClusterLoadStatistic.java
index 8d9c6ecd2e..a6fc86d54c 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/clone/ClusterLoadStatistic.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/clone/ClusterLoadStatistic.java
@@ -280,10 +280,13 @@ public class ClusterLoadStatistic {
                 List<String> pathStat = Lists.newArrayList();
                 pathStat.add(pathStatistic.getPath());
                 pathStat.add(String.valueOf(pathStatistic.getPathHash()));
+                pathStat.add(pathStatistic.getStorageMedium().name());
                 pathStat.add(String.valueOf(pathStatistic.getUsedCapacityB()));
                 pathStat.add(String.valueOf(pathStatistic.getCapacityB()));
                 pathStat.add(String.valueOf(DebugUtil.DECIMAL_FORMAT_SCALE_3.format(pathStatistic.getUsedCapacityB() * 100
                         / (double) pathStatistic.getCapacityB())));
+                pathStat.add(pathStatistic.getClazz().name());
+                pathStat.add(pathStatistic.getDiskState().name());
                 statistics.add(pathStat);
             }
             break;
diff --git a/fe/fe-core/src/main/java/org/apache/doris/common/proc/BackendLoadStatisticProcNode.java b/fe/fe-core/src/main/java/org/apache/doris/common/proc/BackendLoadStatisticProcNode.java
new file mode 100644
index 0000000000..cd6a4691ab
--- /dev/null
+++ b/fe/fe-core/src/main/java/org/apache/doris/common/proc/BackendLoadStatisticProcNode.java
@@ -0,0 +1,50 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//   http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+package org.apache.doris.common.proc;
+
+import org.apache.doris.clone.ClusterLoadStatistic;
+import org.apache.doris.common.AnalysisException;
+
+import com.google.common.collect.ImmutableList;
+
+
+public class BackendLoadStatisticProcNode implements ProcNodeInterface {
+    public static final ImmutableList<String> TITLE_NAMES = new ImmutableList.Builder<String>()
+        .add("RootPath").add("PathHash").add("StorageMedium")
+        .add("DataUsedCapacity").add("TotalCapacity").add("TotalUsedPct")
+        .add("Class").add("State")
+        .build();
+
+    private final ClusterLoadStatistic statistic;
+    private final long beId;
+
+    public BackendLoadStatisticProcNode(ClusterLoadStatistic statistic, long beId) {
+        this.statistic = statistic;
+        this.beId = beId;
+    }
+
+    @Override
+    public ProcResult fetchResult() throws AnalysisException {
+        BaseProcResult result = new BaseProcResult();
+        result.setNames(TITLE_NAMES);
+        if (statistic != null) {
+            result.setRows(statistic.getBackendStatistic(beId));
+        }
+        return result;
+    }
+}
diff --git a/fe/fe-core/src/main/java/org/apache/doris/common/proc/ClusterLoadStatisticProcDir.java b/fe/fe-core/src/main/java/org/apache/doris/common/proc/ClusterLoadStatisticProcDir.java
index 3e40e92b51..2d2842bdb0 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/common/proc/ClusterLoadStatisticProcDir.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/common/proc/ClusterLoadStatisticProcDir.java
@@ -38,7 +38,6 @@ public class ClusterLoadStatisticProcDir implements ProcDirInterface {
             .add("Class")
             .build();
 
-    private Table<String, Tag, ClusterLoadStatistic> statMap;
     private Tag tag;
     private TStorageMedium medium;
 
@@ -52,8 +51,7 @@ public class ClusterLoadStatisticProcDir implements ProcDirInterface {
         BaseProcResult result = new BaseProcResult();
         result.setNames(TITLE_NAMES);
 
-        statMap = Catalog.getCurrentCatalog().getTabletScheduler().getStatisticMap();
-        Map<String, ClusterLoadStatistic> map = statMap.column(tag);
+        Map<String, ClusterLoadStatistic> map = Catalog.getCurrentCatalog().getTabletScheduler().getStatisticMap().column(tag);
 
         map.values().forEach(t -> {
             List<List<String>> statistics = t.getClusterStatistic(medium);
@@ -81,7 +79,9 @@ public class ClusterLoadStatisticProcDir implements ProcDirInterface {
         if (be == null) {
             throw new AnalysisException("backend " + beId + " does not exist");
         }
-        return new BackendProcNode(be);
+
+        Map<String, ClusterLoadStatistic> map = Catalog.getCurrentCatalog().getTabletScheduler().getStatisticMap().column(tag);
+        return new BackendLoadStatisticProcNode(map.get(be.getOwnerClusterName()), beId);
     }
 
 }


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