You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kudu.apache.org by zh...@apache.org on 2023/02/06 02:05:36 UTC

[kudu] branch master updated: [web] add maintenance op statistics information on web pages for data_retained_bytes

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

zhangyifan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/kudu.git


The following commit(s) were added to refs/heads/master by this push:
     new b2514b98c [web] add maintenance op statistics information on web pages for data_retained_bytes
b2514b98c is described below

commit b2514b98c7639c2a328a4dddd8fd9213428b0d4d
Author: shenxingwuying <sh...@gmail.com>
AuthorDate: Mon Jan 9 15:43:29 2023 +0800

    [web] add maintenance op statistics information on web pages for data_retained_bytes
    
    MaintenanceOpStats collects statistics about 'data_retained_bytes_',
    which means amount of disk capacity in data blocks that would be freed if
    current maintenence operation ran. But the protobuf file has no such
    information, so it is not shown on web pages.
    
    This patch adds a field in the protobuf file and updates the embedded web server
    to show the retained bytes for a maintenance operation. Sample screenshot of
    the maintenance manager page can be found here:
    https://github.com/shenxingwuying/kudu/blob/dev/flyline/screenshot/data_retained.png
    
    Change-Id: Iac8f0307705d57cea48901102b170c88d73d8c2e
    Reviewed-on: http://gerrit.cloudera.org:8080/19407
    Tested-by: Kudu Jenkins
    Reviewed-by: Yifan Zhang <ch...@163.com>
---
 src/kudu/integration-tests/webserver-stress-itest.cc | 15 +++++++++++++++
 src/kudu/tserver/tserver_path_handlers.cc            |  9 ++++++++-
 src/kudu/util/maintenance_manager.cc                 |  2 ++
 src/kudu/util/maintenance_manager.proto              |  1 +
 www/maintenance-manager.mustache                     |  2 ++
 5 files changed, 28 insertions(+), 1 deletion(-)

diff --git a/src/kudu/integration-tests/webserver-stress-itest.cc b/src/kudu/integration-tests/webserver-stress-itest.cc
index 8b51e92c1..bf588df67 100644
--- a/src/kudu/integration-tests/webserver-stress-itest.cc
+++ b/src/kudu/integration-tests/webserver-stress-itest.cc
@@ -22,9 +22,13 @@
 #include <glog/logging.h>
 #include <gtest/gtest.h>
 
+#include "kudu/gutil/strings/substitute.h"
 #include "kudu/integration-tests/test_workload.h"
 #include "kudu/mini-cluster/external_mini_cluster.h"
 #include "kudu/mini-cluster/webui_checker.h"
+#include "kudu/util/curl_util.h"
+#include "kudu/util/faststring.h"
+#include "kudu/util/net/net_util.h"
 #include "kudu/util/monotime.h"
 #include "kudu/util/test_macros.h"
 #include "kudu/util/test_util.h"
@@ -93,6 +97,17 @@ TEST_F(KuduTest, TestWebUIDoesNotCrashCluster) {
     SleepFor(MonoDelta::FromMilliseconds(10));
   }
   SleepFor(MonoDelta::FromSeconds(5));
+
+  {
+    EasyCurl curl;
+    string web_url =
+        strings::Substitute("http://$0//maintenance-manager",
+                            cluster.tablet_server(0)->bound_http_hostport().ToString());
+    faststring buf;
+    curl.FetchURL(web_url, &buf);
+    ASSERT_STR_CONTAINS(buf.ToString(), "data_retained");
+  }
+
   work.StopAndJoin();
 
   // Restart the cluster.
diff --git a/src/kudu/tserver/tserver_path_handlers.cc b/src/kudu/tserver/tserver_path_handlers.cc
index aa9294086..abfaef3f6 100644
--- a/src/kudu/tserver/tserver_path_handlers.cc
+++ b/src/kudu/tserver/tserver_path_handlers.cc
@@ -25,6 +25,7 @@
 #include <memory>
 #include <sstream>
 #include <string>
+#include <type_traits>
 #include <unordered_map>
 #include <utility>
 #include <vector>
@@ -54,7 +55,6 @@
 #include "kudu/server/webui_util.h"
 #include "kudu/tablet/metadata.pb.h"
 #include "kudu/tablet/ops/op.h"
-#include "kudu/tablet/tablet.h"
 #include "kudu/tablet/tablet.pb.h"
 #include "kudu/tablet/tablet_metadata.h"
 #include "kudu/tablet/tablet_replica.h"
@@ -70,6 +70,12 @@
 #include "kudu/util/url-coding.h"
 #include "kudu/util/web_callback_registry.h"
 
+namespace kudu {
+namespace tablet {
+class Tablet;
+}  // namespace tablet
+}  // namespace kudu
+
 using kudu::MaintenanceManagerStatusPB;
 using kudu::consensus::ConsensusStatePB;
 using kudu::consensus::GetConsensusRole;
@@ -646,6 +652,7 @@ void TabletServerPathHandlers::HandleMaintenanceManagerPage(const Webserver::Web
     registered_op["logs_retained"] = HumanReadableNumBytes::ToString(op_pb.logs_retained_bytes());
     registered_op["perf"] = op_pb.perf_improvement();
     registered_op["workload_score"] = op_pb.workload_score();
+    registered_op["data_retained"] = HumanReadableNumBytes::ToString(op_pb.data_retained_bytes());
   }
 }
 
diff --git a/src/kudu/util/maintenance_manager.cc b/src/kudu/util/maintenance_manager.cc
index deeaf2f0f..9529d1582 100644
--- a/src/kudu/util/maintenance_manager.cc
+++ b/src/kudu/util/maintenance_manager.cc
@@ -623,12 +623,14 @@ void MaintenanceManager::GetMaintenanceManagerStatusDump(
       op_pb->set_logs_retained_bytes(stats.logs_retained_bytes());
       op_pb->set_perf_improvement(stats.perf_improvement());
       op_pb->set_workload_score(stats.workload_score());
+      op_pb->set_data_retained_bytes(stats.data_retained_bytes());
     } else {
       op_pb->set_runnable(false);
       op_pb->set_ram_anchored_bytes(0);
       op_pb->set_logs_retained_bytes(0);
       op_pb->set_perf_improvement(0.0);
       op_pb->set_workload_score(0.0);
+      op_pb->set_data_retained_bytes(0);
     }
   }
 
diff --git a/src/kudu/util/maintenance_manager.proto b/src/kudu/util/maintenance_manager.proto
index 54f228058..c369d1aab 100644
--- a/src/kudu/util/maintenance_manager.proto
+++ b/src/kudu/util/maintenance_manager.proto
@@ -30,6 +30,7 @@ message MaintenanceManagerStatusPB {
     required int64 logs_retained_bytes = 5;
     required double perf_improvement = 6;
     required double workload_score = 7;
+    required int64 data_retained_bytes = 8;
   }
 
   message OpInstancePB {
diff --git a/www/maintenance-manager.mustache b/www/maintenance-manager.mustache
index 60151e2d7..586bac859 100644
--- a/www/maintenance-manager.mustache
+++ b/www/maintenance-manager.mustache
@@ -67,6 +67,7 @@ under the License.
       <th data-sorter="bytesSorter" data-sortable="true">Logs retained</th>
       <th data-sortable="true">Perf</th>
       <th data-sortable="true">Workload score</th>
+      <th data-sorter="bytesSorter" data-sortable="true">Data retained</th>
     </tr>
   </thead>
   <tbody>
@@ -78,6 +79,7 @@ under the License.
       <td>{{logs_retained}}</td>
       <td>{{perf}}</td>
       <td>{{workload_score}}</td>
+      <td>{{data_retained}}</td>
     </tr>
    {{/registered_operations}}
   </tbody>