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 7c133689455 [Enhancement](group commit) Optimize WAL insufficient 
space error messages (#30614)
7c133689455 is described below

commit 7c1336894553a762c83cf41c4085e86fda2ddd54
Author: abmdocrt <yukang.lian2...@gmail.com>
AuthorDate: Thu Feb 1 13:39:06 2024 +0800

    [Enhancement](group commit) Optimize WAL insufficient space error messages 
(#30614)
---
 be/src/http/action/http_stream.cpp | 17 +++++------------
 be/src/http/action/stream_load.cpp | 17 +++++------------
 be/src/olap/wal/wal_dirs_info.cpp  | 16 ++++++++++++++++
 be/src/olap/wal/wal_dirs_info.h    |  2 ++
 be/src/olap/wal/wal_manager.cpp    |  4 ++++
 be/src/olap/wal/wal_manager.h      |  1 +
 6 files changed, 33 insertions(+), 24 deletions(-)

diff --git a/be/src/http/action/http_stream.cpp 
b/be/src/http/action/http_stream.cpp
index efa5c10df45..090519ef577 100644
--- a/be/src/http/action/http_stream.cpp
+++ b/be/src/http/action/http_stream.cpp
@@ -398,18 +398,11 @@ Status 
HttpStreamAction::_handle_group_commit(HttpRequest* req,
         if (iequal(group_commit_mode, "async_mode")) {
             group_commit_mode = load_size_smaller_than_wal_limit(req) ? 
"async_mode" : "sync_mode";
             if (iequal(group_commit_mode, "sync_mode")) {
-                size_t max_available_size =
-                        
ExecEnv::GetInstance()->wal_mgr()->get_max_available_size();
-                LOG(INFO) << "When enable group commit, the data size can't be 
too large or "
-                             "unknown. The data size for this stream load("
-                          << (req->header(HttpHeaders::CONTENT_LENGTH).empty()
-                                      ? 0
-                                      : 
req->header(HttpHeaders::CONTENT_LENGTH))
-                          << " Bytes) exceeds the WAL (Write-Ahead Log) limit 
("
-                          << max_available_size
-                          << " Bytes). So we set this load to \"group 
commit\"=sync_mode\" "
-                             "automatically.";
-                return Status::Error<EXCEEDED_LIMIT>("Http load size too 
large.");
+                std::stringstream ss;
+                ss << "There is no space for group commit http load async WAL. 
WAL dir info: "
+                   << 
ExecEnv::GetInstance()->wal_mgr()->get_wal_dirs_info_string();
+                LOG(WARNING) << ss.str();
+                return Status::Error<EXCEEDED_LIMIT>(ss.str());
             }
         }
     }
diff --git a/be/src/http/action/stream_load.cpp 
b/be/src/http/action/stream_load.cpp
index 2aa230530ae..7b5b6b10419 100644
--- a/be/src/http/action/stream_load.cpp
+++ b/be/src/http/action/stream_load.cpp
@@ -718,18 +718,11 @@ Status 
StreamLoadAction::_handle_group_commit(HttpRequest* req,
         if (iequal(group_commit_mode, "async_mode")) {
             group_commit_mode = load_size_smaller_than_wal_limit(req) ? 
"async_mode" : "sync_mode";
             if (iequal(group_commit_mode, "sync_mode")) {
-                size_t max_available_size =
-                        
ExecEnv::GetInstance()->wal_mgr()->get_max_available_size();
-                LOG(INFO) << "When enable group commit, the data size can't be 
too large or "
-                             "unknown. The data size for this stream load("
-                          << (req->header(HttpHeaders::CONTENT_LENGTH).empty()
-                                      ? 0
-                                      : 
req->header(HttpHeaders::CONTENT_LENGTH))
-                          << " Bytes) exceeds the WAL (Write-Ahead Log) limit 
("
-                          << max_available_size
-                          << " Bytes). So we set this load to \"group 
commit\"=sync_mode\" "
-                             "automatically.";
-                return Status::Error<EXCEEDED_LIMIT>("Stream load size too 
large.");
+                std::stringstream ss;
+                ss << "There is no space for group commit stream load async 
WAL. WAL dir info: "
+                   << 
ExecEnv::GetInstance()->wal_mgr()->get_wal_dirs_info_string();
+                LOG(WARNING) << ss.str();
+                return Status::Error<EXCEEDED_LIMIT>(ss.str());
             }
         }
     }
diff --git a/be/src/olap/wal/wal_dirs_info.cpp 
b/be/src/olap/wal/wal_dirs_info.cpp
index e451146106c..4e54a543980 100644
--- a/be/src/olap/wal/wal_dirs_info.cpp
+++ b/be/src/olap/wal/wal_dirs_info.cpp
@@ -17,6 +17,8 @@
 
 #include "olap/wal/wal_dirs_info.h"
 
+#include <string>
+
 #include "common/config.h"
 #include "common/status.h"
 #include "io/fs/local_file_system.h"
@@ -105,6 +107,12 @@ void WalDirInfo::update_wal_dir_pre_allocated(size_t 
increase_pre_allocated,
     set_pre_allocated(increase_pre_allocated, decrease_pre_allocated);
 }
 
+std::string WalDirInfo::get_wal_dir_info_string() {
+    return "[" + _wal_dir + ": limit " + std::to_string(_limit) + " Bytes, 
used " +
+           std::to_string(_used) + " Bytes, pre allocated " + 
std::to_string(_pre_allocated) +
+           " Bytes, available " + std::to_string(available()) + "Bytes.]";
+}
+
 Status WalDirsInfo::add(const std::string& wal_dir, size_t limit, size_t used,
                         size_t pre_allocated) {
     for (const auto& it : _wal_dirs_info_vec) {
@@ -155,6 +163,14 @@ size_t WalDirsInfo::get_max_available_size() {
                              ->available();
 }
 
+std::string WalDirsInfo::get_wal_dirs_info_string() {
+    std::string wal_dirs_info_string;
+    for (const auto& wal_dir_info : _wal_dirs_info_vec) {
+        wal_dirs_info_string += wal_dir_info->get_wal_dir_info_string() + "\n";
+    }
+    return wal_dirs_info_string;
+}
+
 Status WalDirsInfo::update_wal_dir_limit(const std::string& wal_dir, size_t 
limit) {
     for (const auto& wal_dir_info : _wal_dirs_info_vec) {
         LOG(INFO) << "wal_dir_info:" << wal_dir_info->get_wal_dir();
diff --git a/be/src/olap/wal/wal_dirs_info.h b/be/src/olap/wal/wal_dirs_info.h
index 6eeb75cdb86..cfd34733007 100644
--- a/be/src/olap/wal/wal_dirs_info.h
+++ b/be/src/olap/wal/wal_dirs_info.h
@@ -49,6 +49,7 @@ public:
     Status update_wal_dir_limit(size_t limit = -1);
     Status update_wal_dir_used(size_t used = -1);
     void update_wal_dir_pre_allocated(size_t increase_pre_allocated, size_t 
decrease_pre_allocated);
+    std::string get_wal_dir_info_string();
 
 private:
     std::string _wal_dir;
@@ -75,6 +76,7 @@ public:
                                         size_t decrease_pre_allocated);
     Status get_wal_dir_available_size(const std::string& wal_dir, size_t* 
available_bytes);
     Status get_wal_dir_info(const std::string& wal_dir, 
std::shared_ptr<WalDirInfo>& wal_dir_info);
+    std::string get_wal_dirs_info_string();
 
 private:
     std::vector<std::shared_ptr<WalDirInfo>> _wal_dirs_info_vec;
diff --git a/be/src/olap/wal/wal_manager.cpp b/be/src/olap/wal/wal_manager.cpp
index 45a9b58ff2d..6d59c6df686 100644
--- a/be/src/olap/wal/wal_manager.cpp
+++ b/be/src/olap/wal/wal_manager.cpp
@@ -381,6 +381,10 @@ size_t WalManager::get_max_available_size() {
     return _wal_dirs_info->get_max_available_size();
 }
 
+std::string WalManager::get_wal_dirs_info_string() {
+    return _wal_dirs_info->get_wal_dirs_info_string();
+}
+
 Status WalManager::update_wal_dir_limit(const std::string& wal_dir, size_t 
limit) {
     return _wal_dirs_info->update_wal_dir_limit(wal_dir, limit);
 }
diff --git a/be/src/olap/wal/wal_manager.h b/be/src/olap/wal/wal_manager.h
index 44fdef2e6c0..dfa2859cbe3 100644
--- a/be/src/olap/wal/wal_manager.h
+++ b/be/src/olap/wal/wal_manager.h
@@ -61,6 +61,7 @@ public:
                                         size_t decrease_pre_allocated);
     Status get_wal_dir_available_size(const std::string& wal_dir, size_t* 
available_bytes);
     size_t get_max_available_size();
+    std::string get_wal_dirs_info_string();
 
     // replay wal
     Status create_wal_path(int64_t db_id, int64_t table_id, int64_t wal_id,


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

Reply via email to