From c4d06d8803ab9209229e4be51cf578e59f7b7d95 Mon Sep 17 00:00:00 2001 From: Yongqiang YANG Date: Wed, 30 Aug 2023 13:46:14 +0800 Subject: [PATCH] [fix](tablet) protect max_version by meta lock refer to 21948 --- be/src/olap/snapshot_manager.cpp | 2 +- be/src/olap/tablet.h | 1 + be/src/olap/task/engine_publish_version_task.cpp | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/be/src/olap/snapshot_manager.cpp b/be/src/olap/snapshot_manager.cpp index e79fc4f4bc6222..ea1dc1c995f844 100644 --- a/be/src/olap/snapshot_manager.cpp +++ b/be/src/olap/snapshot_manager.cpp @@ -459,7 +459,7 @@ Status SnapshotManager::_create_snapshot_files(const TabletSharedPtr& ref_tablet } *allow_incremental_clone = false; } else { - version = ref_tablet->max_version().second; + version = ref_tablet->max_version_unlocked().second; *allow_incremental_clone = true; } diff --git a/be/src/olap/tablet.h b/be/src/olap/tablet.h index 15e17223c38819..e81f1212e778cd 100644 --- a/be/src/olap/tablet.h +++ b/be/src/olap/tablet.h @@ -586,6 +586,7 @@ inline int Tablet::version_count() const { } inline Version Tablet::max_version() const { + std::shared_lock rdlock(_meta_lock); return _tablet_meta->max_version(); } diff --git a/be/src/olap/task/engine_publish_version_task.cpp b/be/src/olap/task/engine_publish_version_task.cpp index bdea449d351c8a..eff14dfdb09ea1 100644 --- a/be/src/olap/task/engine_publish_version_task.cpp +++ b/be/src/olap/task/engine_publish_version_task.cpp @@ -124,7 +124,7 @@ Status EnginePublishVersionTask::finish() { TabletState tablet_state; { std::shared_lock rdlock(tablet->get_header_lock()); - max_version = tablet->max_version(); + max_version = tablet->max_version_unlocked(); tablet_state = tablet->tablet_state(); } if (tablet_state == TabletState::TABLET_RUNNING &&