You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by kx...@apache.org on 2023/10/13 17:25:34 UTC
[doris] 13/14: [enhancement](compaction) record base compaction schedule time and status (#25283)
This is an automated email from the ASF dual-hosted git repository.
kxiao pushed a commit to branch branch-2.0
in repository https://gitbox.apache.org/repos/asf/doris.git
commit 38c51a46bc50146026348cb4d6ef5bfd5a5ec0c3
Author: huanghaibin <28...@qq.com>
AuthorDate: Fri Oct 13 19:51:55 2023 +0800
[enhancement](compaction) record base compaction schedule time and status (#25283)
---
be/src/olap/olap_server.cpp | 3 +++
be/src/olap/tablet.cpp | 11 +++++++++++
be/src/olap/tablet.h | 14 ++++++++++++++
3 files changed, 28 insertions(+)
diff --git a/be/src/olap/olap_server.cpp b/be/src/olap/olap_server.cpp
index 4697bbc7939..369b0c48d87 100644
--- a/be/src/olap/olap_server.cpp
+++ b/be/src/olap/olap_server.cpp
@@ -631,6 +631,9 @@ void StorageEngine::_compaction_tasks_producer_callback() {
/// If it is not cleaned up, the reference count of the tablet will always be greater than 1,
/// thus cannot be collected by the garbage collector. (TabletManager::start_trash_sweep)
for (const auto& tablet : tablets_compaction) {
+ if (compaction_type == CompactionType::BASE_COMPACTION) {
+ tablet->set_last_base_compaction_schedule_time(UnixMillis());
+ }
Status st = _submit_compaction_task(tablet, compaction_type, false);
if (!st.ok()) {
LOG(WARNING) << "failed to submit compaction task for tablet: "
diff --git a/be/src/olap/tablet.cpp b/be/src/olap/tablet.cpp
index f245e121fd9..1ce46547679 100644
--- a/be/src/olap/tablet.cpp
+++ b/be/src/olap/tablet.cpp
@@ -1447,6 +1447,15 @@ void Tablet::get_compaction_status(std::string* json_result) {
format_str = ToStringFromUnixMillis(_last_full_compaction_success_millis.load());
full_success_value.SetString(format_str.c_str(), format_str.length(), root.GetAllocator());
root.AddMember("last full success time", full_success_value, root.GetAllocator());
+ rapidjson::Value base_schedule_value;
+ format_str = ToStringFromUnixMillis(_last_base_compaction_schedule_millis.load());
+ base_schedule_value.SetString(format_str.c_str(), format_str.length(), root.GetAllocator());
+ root.AddMember("last base schedule time", base_schedule_value, root.GetAllocator());
+ rapidjson::Value base_compaction_status_value;
+ base_compaction_status_value.SetString(_last_base_compaction_status.c_str(),
+ _last_base_compaction_status.length(),
+ root.GetAllocator());
+ root.AddMember("last base status", base_compaction_status_value, root.GetAllocator());
// print all rowsets' version as an array
rapidjson::Document versions_arr;
@@ -1762,6 +1771,7 @@ Status Tablet::prepare_compaction_and_calculate_permits(CompactionType compactio
StorageEngine::instance()->create_base_compaction(tablet, _base_compaction);
DorisMetrics::instance()->base_compaction_request_total->increment(1);
Status res = _base_compaction->prepare_compact();
+ set_last_base_compaction_status(res.to_string());
if (!res.ok()) {
set_last_base_compaction_failure_time(UnixMillis());
*permits = 0;
@@ -1899,6 +1909,7 @@ void Tablet::execute_compaction(CompactionType compaction_type) {
});
Status res = _base_compaction->execute_compact();
+ set_last_base_compaction_status(res.to_string());
if (!res.ok()) {
set_last_base_compaction_failure_time(UnixMillis());
DorisMetrics::instance()->base_compaction_request_failed->increment(1);
diff --git a/be/src/olap/tablet.h b/be/src/olap/tablet.h
index ba2b1ab587e..bbdeb411f44 100644
--- a/be/src/olap/tablet.h
+++ b/be/src/olap/tablet.h
@@ -258,6 +258,11 @@ public:
_last_full_compaction_success_millis = millis;
}
+ int64_t last_base_compaction_schedule_time() { return _last_base_compaction_schedule_millis; }
+ void set_last_base_compaction_schedule_time(int64_t millis) {
+ _last_base_compaction_schedule_millis = millis;
+ }
+
void delete_all_files();
void check_tablet_path_exists();
@@ -327,6 +332,12 @@ public:
return _cumulative_compaction_policy;
}
+ void set_last_base_compaction_status(std::string status) {
+ _last_base_compaction_status = status;
+ }
+
+ std::string get_last_base_compaction_status() { return _last_base_compaction_status; }
+
inline bool all_beta() const {
std::shared_lock rdlock(_meta_lock);
return _tablet_meta->all_beta();
@@ -657,10 +668,13 @@ private:
std::atomic<int64_t> _last_base_compaction_success_millis;
// timestamp of last full compaction success
std::atomic<int64_t> _last_full_compaction_success_millis;
+ // timestamp of last base compaction schedule time
+ std::atomic<int64_t> _last_base_compaction_schedule_millis;
std::atomic<int64_t> _cumulative_point;
std::atomic<int64_t> _cumulative_promotion_size;
std::atomic<int32_t> _newly_created_rowset_num;
std::atomic<int64_t> _last_checkpoint_time;
+ std::string _last_base_compaction_status;
// cumulative compaction policy
std::shared_ptr<CumulativeCompactionPolicy> _cumulative_compaction_policy;
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org
For additional commands, e-mail: commits-help@doris.apache.org