You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by el...@apache.org on 2023/06/14 05:30:10 UTC

[doris] branch 2pr-unused-rs created (now bda61ebab6)

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

eldenmoon pushed a change to branch 2pr-unused-rs
in repository https://gitbox.apache.org/repos/asf/doris.git


      at bda61ebab6 move delay logic to tablet

This branch includes the following new commits:

     new bda61ebab6 move delay logic to tablet

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



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


[doris] 01/01: move delay logic to tablet

Posted by el...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

eldenmoon pushed a commit to branch 2pr-unused-rs
in repository https://gitbox.apache.org/repos/asf/doris.git

commit bda61ebab674ac57c1fd5224088e7bf951aa005c
Author: eldenmoon <15...@163.com>
AuthorDate: Wed Jun 14 13:29:46 2023 +0800

    move delay logic to tablet
---
 be/src/olap/data_dir.cpp            |  4 +---
 be/src/olap/storage_engine.cpp      | 13 +++----------
 be/src/olap/storage_engine.h        |  2 --
 be/src/olap/tablet.cpp              | 19 +++++++++++--------
 be/src/service/internal_service.cpp |  9 ++-------
 5 files changed, 17 insertions(+), 30 deletions(-)

diff --git a/be/src/olap/data_dir.cpp b/be/src/olap/data_dir.cpp
index 464bc33483..b83ce43635 100644
--- a/be/src/olap/data_dir.cpp
+++ b/be/src/olap/data_dir.cpp
@@ -627,9 +627,7 @@ void DataDir::perform_path_gc_by_rowsetid() {
                 TabletSharedPtr tablet = _tablet_manager->get_tablet(tablet_id);
                 if (tablet != nullptr) {
                     if (!tablet->check_rowset_id(rowset_id) &&
-                        !StorageEngine::instance()
-                                 ->get_rowset_in_unused_rowsets(rowset_id)
-                                 .has_value()) {
+                        !StorageEngine::instance()->check_rowset_id_in_unused_rowsets(rowset_id)) {
                         _process_garbage_path(path);
                     }
                 }
diff --git a/be/src/olap/storage_engine.cpp b/be/src/olap/storage_engine.cpp
index 263df09455..1d65da4d59 100644
--- a/be/src/olap/storage_engine.cpp
+++ b/be/src/olap/storage_engine.cpp
@@ -1004,9 +1004,7 @@ void StorageEngine::start_delete_unused_rowset() {
     {
         std::lock_guard<std::mutex> lock(_gc_mutex);
         for (auto it = _unused_rowsets.begin(); it != _unused_rowsets.end();) {
-            uint64_t now = UnixSeconds();
-            if (it->second.use_count() == 1 && it->second->need_delete_file() &&
-                now > it->second->delayed_expired_timestamp()) {
+            if (it->second.use_count() == 1 && it->second->need_delete_file()) {
                 if (it->second->is_local()) {
                     unused_rowsets_copy[it->first] = it->second;
                 }
@@ -1157,15 +1155,10 @@ Status StorageEngine::execute_task(EngineTask* task) {
 }
 
 // check whether any unused rowsets's id equal to rowset_id
-std::optional<RowsetSharedPtr> StorageEngine::get_rowset_in_unused_rowsets(
-        const RowsetId& rowset_id) {
+bool StorageEngine::check_rowset_id_in_unused_rowsets(const RowsetId& rowset_id) {
     std::lock_guard<std::mutex> lock(_gc_mutex);
     auto search = _unused_rowsets.find(rowset_id.to_string());
-    if (search != _unused_rowsets.end()) {
-        return search->second;
-    }
-    // Not found
-    return {};
+    return search != _unused_rowsets.end();
 }
 
 void StorageEngine::create_cumulative_compaction(
diff --git a/be/src/olap/storage_engine.h b/be/src/olap/storage_engine.h
index 63c304393c..42e7bfdef7 100644
--- a/be/src/olap/storage_engine.h
+++ b/be/src/olap/storage_engine.h
@@ -215,8 +215,6 @@ public:
 
     Status process_index_change_task(const TAlterInvertedIndexReq& reqest);
 
-    std::optional<RowsetSharedPtr> get_rowset_in_unused_rowsets(const RowsetId& rowset_id);
-
 private:
     // Instance should be inited from `static open()`
     // MUST NOT be called in other circumstances.
diff --git a/be/src/olap/tablet.cpp b/be/src/olap/tablet.cpp
index 7c21b47707..f2e2424864 100644
--- a/be/src/olap/tablet.cpp
+++ b/be/src/olap/tablet.cpp
@@ -794,14 +794,17 @@ void Tablet::delete_expired_stale_rowset() {
         for (auto& timestampedVersion : to_delete_version) {
             auto it = _stale_rs_version_map.find(timestampedVersion->version());
             if (it != _stale_rs_version_map.end()) {
-                // delete rowset
-                StorageEngine::instance()->add_unused_rowset(it->second);
-                _stale_rs_version_map.erase(it);
-                VLOG_NOTICE << "delete stale rowset tablet=" << full_name() << " version["
-                            << timestampedVersion->version().first << ","
-                            << timestampedVersion->version().second
-                            << "] move to unused_rowset success " << std::fixed
-                            << expired_stale_sweep_endtime;
+                uint64_t now = UnixSeconds();
+                if (now > it->second->delayed_expired_timestamp()) {
+                    // delete rowset
+                    StorageEngine::instance()->add_unused_rowset(it->second);
+                    _stale_rs_version_map.erase(it);
+                    VLOG_NOTICE << "delete stale rowset tablet=" << full_name() << " version["
+                                << timestampedVersion->version().first << ","
+                                << timestampedVersion->version().second
+                                << "] move to unused_rowset success " << std::fixed
+                                << expired_stale_sweep_endtime;
+                }
             } else {
                 LOG(WARNING) << "delete stale rowset tablet=" << full_name() << " version["
                              << timestampedVersion->version().first << ","
diff --git a/be/src/service/internal_service.cpp b/be/src/service/internal_service.cpp
index 7f2e231df5..ef4cca22cc 100644
--- a/be/src/service/internal_service.cpp
+++ b/be/src/service/internal_service.cpp
@@ -1517,13 +1517,8 @@ Status PInternalServiceImpl::_multi_get(const PMultiGetRequest& request,
         // Get Rowset from either tablet or unused rowsets, since this rowset maybe expired and swept.
         // But we ensured it's rowset is not released when init Tablet reader param, rowset->update_delayed_expired_timestamp();
         if (!rowset) {
-            std::optional<RowsetSharedPtr> from_unused_rowset =
-                    StorageEngine::instance()->get_rowset_in_unused_rowsets(rowset_id);
-            if (!from_unused_rowset.has_value()) {
-                LOG(INFO) << "no such rowset " << rowset_id;
-                continue;
-            }
-            rowset = std::static_pointer_cast<BetaRowset>(from_unused_rowset.value());
+            LOG(INFO) << "no such rowset " << rowset_id;
+            continue;
         }
         size_t row_size = 0;
         Defer _defer([&]() {


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