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

dataroaring 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 dabc91bc92d [enhance](StorageVault) Print the vault id and vault 
message for invalid vault (#33149)
dabc91bc92d is described below

commit dabc91bc92d1aaf6cc0f0dd36989347b3f653c19
Author: AlexYue <yj976240...@gmail.com>
AuthorDate: Tue Apr 2 14:24:16 2024 +0800

    [enhance](StorageVault) Print the vault id and vault message for invalid 
vault (#33149)
---
 be/src/cloud/cloud_storage_engine.cpp | 25 ++++++++++++++++++++++---
 1 file changed, 22 insertions(+), 3 deletions(-)

diff --git a/be/src/cloud/cloud_storage_engine.cpp 
b/be/src/cloud/cloud_storage_engine.cpp
index 1826469112d..f66c85f7953 100644
--- a/be/src/cloud/cloud_storage_engine.cpp
+++ b/be/src/cloud/cloud_storage_engine.cpp
@@ -24,6 +24,8 @@
 #include <rapidjson/prettywriter.h>
 #include <rapidjson/stringbuffer.h>
 
+#include <variant>
+
 #include "cloud/cloud_base_compaction.h"
 #include "cloud/cloud_cumulative_compaction.h"
 #include "cloud/cloud_cumulative_compaction_policy.h"
@@ -72,6 +74,21 @@ CloudStorageEngine::CloudStorageEngine(const UniqueId& 
backend_uid)
 
 CloudStorageEngine::~CloudStorageEngine() = default;
 
+static Status vault_process_error(std::string_view id,
+                                  std::variant<S3Conf, cloud::HdfsVaultInfo>& 
vault, Status err) {
+    std::stringstream ss;
+    std::visit(
+            [&]<typename T>(T& val) {
+                if constexpr (std::is_same_v<T, S3Conf>) {
+                    ss << val.to_string();
+                } else if constexpr (std::is_same_v<T, cloud::HdfsVaultInfo>) {
+                    val.SerializeToOstream(&ss);
+                }
+            },
+            vault);
+    return Status::IOError("Invalid vault, id {}, err {}, detail conf {}", id, 
err, ss.str());
+}
+
 struct VaultCreateFSVisitor {
     VaultCreateFSVisitor(const std::string& id) : id(id) {}
     Status operator()(const S3Conf& s3_conf) const {
@@ -139,7 +156,9 @@ Status CloudStorageEngine::open() {
     } while (vault_infos.empty());
 
     for (auto& [id, vault_info] : vault_infos) {
-        RETURN_IF_ERROR(std::visit(VaultCreateFSVisitor {id}, vault_info));
+        if (auto st = std::visit(VaultCreateFSVisitor {id}, vault_info); 
!st.ok()) [[unlikely]] {
+            return vault_process_error(id, vault_info, std::move(st));
+        }
     }
     set_latest_fs(get_filesystem(std::get<0>(vault_infos.back())));
 
@@ -259,8 +278,8 @@ void 
CloudStorageEngine::_refresh_storage_vault_info_thread_callback() {
             auto st = (fs == nullptr)
                               ? std::visit(VaultCreateFSVisitor {id}, 
vault_info)
                               : std::visit(RefreshFSVaultVisitor {id, 
std::move(fs)}, vault_info);
-            if (!st.ok()) {
-                LOG(WARNING) << "failed to refresh storage vault. err=" << st;
+            if (!st.ok()) [[unlikely]] {
+                LOG(WARNING) << vault_process_error(id, vault_info, 
std::move(st));
             }
         }
 


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

Reply via email to