You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by ya...@apache.org on 2021/04/30 02:12:14 UTC

[incubator-doris] branch master updated: [Bugfix] Fix the incorrect compaction type of compaction API has no corresponding response (#5710)

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

yangzhg 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 8ff8740  [Bugfix] Fix the incorrect compaction type of compaction API has no corresponding response (#5710)
8ff8740 is described below

commit 8ff87409cb036db01fcf90de748f23432ea06c26
Author: Yingchun Lai <40...@qq.com>
AuthorDate: Fri Apr 30 10:12:04 2021 +0800

    [Bugfix] Fix the incorrect compaction type of compaction API has no corresponding response (#5710)
---
 be/src/http/action/compaction_action.cpp | 63 ++++++++++++++------------------
 1 file changed, 28 insertions(+), 35 deletions(-)

diff --git a/be/src/http/action/compaction_action.cpp b/be/src/http/action/compaction_action.cpp
index c8f280c..0ee0b4e 100644
--- a/be/src/http/action/compaction_action.cpp
+++ b/be/src/http/action/compaction_action.cpp
@@ -55,9 +55,8 @@ Status CompactionAction::_check_param(HttpRequest* req, uint64_t* tablet_id,
         *tablet_id = std::stoull(req_tablet_id);
         *schema_hash = std::stoul(req_schema_hash);
     } catch (const std::exception& e) {
-        LOG(WARNING) << "invalid argument.tablet_id:" << req_tablet_id
-                     << ", schema_hash:" << req_schema_hash;
-        return Status::InternalError(strings::Substitute("convert failed, $0", e.what()));
+        return Status::InternalError(
+            strings::Substitute("convert tablet_id and schema_hash failed, $0", e.what()));
     }
 
     return Status::OK();
@@ -67,14 +66,15 @@ Status CompactionAction::_check_param(HttpRequest* req, uint64_t* tablet_id,
 Status CompactionAction::_handle_show_compaction(HttpRequest* req, std::string* json_result) {
     uint64_t tablet_id = 0;
     uint32_t schema_hash = 0;
-
-    Status status = _check_param(req, &tablet_id, &schema_hash);
-    RETURN_IF_ERROR(status);
+    RETURN_NOT_OK_STATUS_WITH_WARN(_check_param(req, &tablet_id, &schema_hash),
+                                   "check param failed");
 
     TabletSharedPtr tablet =
             StorageEngine::instance()->tablet_manager()->get_tablet(tablet_id, schema_hash);
     if (tablet == nullptr) {
-        return Status::NotFound("Tablet not found");
+        return Status::NotFound(
+            strings::Substitute("Tablet not found. tablet_id=$0, schema_hash=$1",
+                                tablet_id, schema_hash));
     }
 
     tablet->get_compaction_status(json_result);
@@ -83,29 +83,27 @@ Status CompactionAction::_handle_show_compaction(HttpRequest* req, std::string*
 
 Status CompactionAction::_handle_run_compaction(HttpRequest* req, std::string* json_result) {
     // 1. param check
+    // check req_tablet_id and req_schema_hash is not empty
     uint64_t tablet_id = 0;
     uint32_t schema_hash = 0;
+    RETURN_NOT_OK_STATUS_WITH_WARN(_check_param(req, &tablet_id, &schema_hash),
+                                   "check param failed");
 
-    // check req_tablet_id and req_schema_hash is not empty
-    Status check_status = _check_param(req, &tablet_id, &schema_hash);
-    RETURN_IF_ERROR(check_status);
-
+    // check compaction_type equals 'base' or 'cumulative'
     std::string compaction_type = req->param(PARAM_COMPACTION_TYPE);
-    // check compaction_type is not empty and equals base or cumulative
-    if (compaction_type == "" && !(compaction_type == PARAM_COMPACTION_BASE ||
-                                   compaction_type == PARAM_COMPACTION_CUMULATIVE)) {
-        return Status::NotSupported("The compaction type is not supported");
+    if (compaction_type != PARAM_COMPACTION_BASE &&
+        compaction_type != PARAM_COMPACTION_CUMULATIVE) {
+        return Status::NotSupported(
+            strings::Substitute("The compaction type '$0' is not supported", compaction_type));
     }
 
     // 2. fetch the tablet by tablet_id and schema_hash
     TabletSharedPtr tablet =
             StorageEngine::instance()->tablet_manager()->get_tablet(tablet_id, schema_hash);
-
     if (tablet == nullptr) {
-        LOG(WARNING) << "invalid argument.tablet_id:" << tablet_id
-                     << ", schema_hash:" << schema_hash;
-        return Status::InternalError(
-                strings::Substitute("fail to get $0, $1", tablet_id, schema_hash));
+        return Status::NotFound(
+            strings::Substitute("Tablet not found. tablet_id=$0, schema_hash=$1",
+                                tablet_id, schema_hash));
     }
 
     // 3. execute compaction task
@@ -152,8 +150,8 @@ Status CompactionAction::_handle_run_status_compaction(HttpRequest* req, std::st
     uint32_t schema_hash = 0;
 
     // check req_tablet_id and req_schema_hash is not empty
-    Status check_status = _check_param(req, &tablet_id, &schema_hash);
-    RETURN_IF_ERROR(check_status);
+    RETURN_NOT_OK_STATUS_WITH_WARN(_check_param(req, &tablet_id, &schema_hash),
+                                   "check param failed");
 
     // fetch the tablet by tablet_id and schema_hash
     TabletSharedPtr tablet =
@@ -217,25 +215,20 @@ OLAPStatus CompactionAction::_execute_compaction_callback(TabletSharedPtr tablet
         std::string tracker_label = "CompactionAction:BaseCompaction:" + std::to_string(syscall(__NR_gettid));
         BaseCompaction base_compaction(tablet, tracker_label, _compaction_mem_tracker);
         OLAPStatus res = base_compaction.compact();
-        if (res != OLAP_SUCCESS) {
-            if (res != OLAP_ERR_BE_NO_SUITABLE_VERSION) {
-                DorisMetrics::instance()->base_compaction_request_failed->increment(1);
-                LOG(WARNING) << "failed to init base compaction. res=" << res
-                             << ", table=" << tablet->full_name();
-            }
+        if (res != OLAP_SUCCESS && res != OLAP_ERR_BE_NO_SUITABLE_VERSION) {
+            DorisMetrics::instance()->base_compaction_request_failed->increment(1);
+            LOG(WARNING) << "failed to init base compaction. res=" << res
+                         << ", table=" << tablet->full_name();
         }
         status = res;
     } else if (compaction_type == PARAM_COMPACTION_CUMULATIVE) {
         std::string tracker_label = "CompactionAction:CumulativeCompaction:" + std::to_string(syscall(__NR_gettid));
         CumulativeCompaction cumulative_compaction(tablet, tracker_label, _compaction_mem_tracker);
-
         OLAPStatus res = cumulative_compaction.compact();
-        if (res != OLAP_SUCCESS) {
-            if (res != OLAP_ERR_CUMULATIVE_NO_SUITABLE_VERSIONS) {
-                DorisMetrics::instance()->cumulative_compaction_request_failed->increment(1);
-                LOG(WARNING) << "failed to do cumulative compaction. res=" << res
-                             << ", table=" << tablet->full_name();
-            }
+        if (res != OLAP_SUCCESS && res != OLAP_ERR_CUMULATIVE_NO_SUITABLE_VERSIONS) {
+            DorisMetrics::instance()->cumulative_compaction_request_failed->increment(1);
+            LOG(WARNING) << "failed to do cumulative compaction. res=" << res
+                         << ", table=" << tablet->full_name();
         }
         status = res;
     }

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