This is an automated email from the ASF dual-hosted git repository.
eldenmoon pushed a commit to branch branch-2.0-var
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-2.0-var by this push:
new e8cc313f8e7 [Bug](cooldown) Fix problem that followers may never
completely cooldown (#28561) (#28761)
e8cc313f8e7 is described below
commit e8cc313f8e79670a7117665be222ef7429ba8dd9
Author: lihangyu <[email protected]>
AuthorDate: Thu Dec 21 12:16:27 2023 +0800
[Bug](cooldown) Fix problem that followers may never completely cooldown
(#28561) (#28761)
Co-authored-by: plat1ko <[email protected]>
---
be/src/olap/tablet.cpp | 15 ++++-----------
1 file changed, 4 insertions(+), 11 deletions(-)
diff --git a/be/src/olap/tablet.cpp b/be/src/olap/tablet.cpp
index 67995c2f54a..9ccf754a971 100644
--- a/be/src/olap/tablet.cpp
+++ b/be/src/olap/tablet.cpp
@@ -2130,16 +2130,7 @@ Status Tablet::_cooldown_data() {
LOG(INFO) << "cannot pick cooldown rowset in tablet " << tablet_id();
return Status::OK();
}
- if (old_rowset->num_segments() < 1) {
- // Empty rowset, just reset rowset's resource_id
- std::lock_guard meta_wlock(_meta_lock);
- SCOPED_SIMPLE_TRACE_IF_TIMEOUT(TRACE_TABLET_LOCK_THRESHOLD);
- old_rowset->rowset_meta()->set_fs(dest_fs);
- LOG(INFO) << "cooldown empty rowset " << old_rowset->version() << " "
- << old_rowset->rowset_id().to_string() << " to " <<
dest_fs->root_path().native()
- << ", tablet_id=" << tablet_id();
- return Status::OK();
- }
+
RowsetId new_rowset_id = StorageEngine::instance()->next_rowset_id();
add_pending_remote_rowset(new_rowset_id.to_string());
Status st;
@@ -2186,7 +2177,9 @@ Status Tablet::_cooldown_data() {
SCOPED_SIMPLE_TRACE_IF_TIMEOUT(TRACE_TABLET_LOCK_THRESHOLD);
save_meta();
}
- // upload cooldowned rowset meta to remote fs
+ // Upload cooldowned rowset meta to remote fs
+ // ATTN: Even if it is an empty rowset, in order for the followers to
synchronize, the coolown meta must be
+ // uploaded, otherwise followers may never completely cooldown.
if (auto t =
StorageEngine::instance()->tablet_manager()->get_tablet(tablet_id());
t != nullptr) { // `t` can be nullptr if it has been dropped
async_write_cooldown_meta(std::move(t));
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]