From f873c54d26390f74ea37f2ee389ee4c2bff290dc Mon Sep 17 00:00:00 2001 From: Kaijie Chen Date: Thu, 18 Jul 2024 11:37:36 +0800 Subject: [PATCH] [config](be) add be config migration_lock_timeout_ms (#38000) ## Proposed changes Add be config `migration_lock_timeout_ms` and increase default value from `30ms` to `1000ms`. --- be/src/common/config.cpp | 2 ++ be/src/common/config.h | 2 ++ be/src/olap/rowset_builder.cpp | 6 ++++-- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/be/src/common/config.cpp b/be/src/common/config.cpp index 76ce00097b08c1..7bd237baf4970c 100644 --- a/be/src/common/config.cpp +++ b/be/src/common/config.cpp @@ -472,6 +472,8 @@ DEFINE_mInt32(migration_remaining_size_threshold_mb, "10"); // If the task runs longer than this time, the task will be terminated, in seconds. // timeout = std::max(migration_task_timeout_secs, tablet size / 1MB/s) DEFINE_mInt32(migration_task_timeout_secs, "300"); +// timeout for try_lock migration lock +DEFINE_Int64(migration_lock_timeout_ms, "1000"); // Port to start debug webserver on DEFINE_Int32(webserver_port, "8040"); diff --git a/be/src/common/config.h b/be/src/common/config.h index 447473e4fddf08..2514b4f2fa86de 100644 --- a/be/src/common/config.h +++ b/be/src/common/config.h @@ -521,6 +521,8 @@ DECLARE_mInt32(migration_remaining_size_threshold_mb); // If the task runs longer than this time, the task will be terminated, in seconds. // timeout = std::max(migration_task_timeout_secs, tablet size / 1MB/s) DECLARE_mInt32(migration_task_timeout_secs); +// timeout for try_lock migration lock +DECLARE_Int64(migration_lock_timeout_ms); // Port to start debug webserver on DECLARE_Int32(webserver_port); diff --git a/be/src/olap/rowset_builder.cpp b/be/src/olap/rowset_builder.cpp index 32a6ba88ce784f..a1edc61e4784a1 100644 --- a/be/src/olap/rowset_builder.cpp +++ b/be/src/olap/rowset_builder.cpp @@ -165,8 +165,10 @@ Status RowsetBuilder::check_tablet_version_count() { Status RowsetBuilder::prepare_txn() { std::shared_lock base_migration_lock(tablet()->get_migration_lock(), std::defer_lock); - if (!base_migration_lock.try_lock_for(std::chrono::milliseconds(30))) { - return Status::Error("try migration lock failed"); + if (!base_migration_lock.try_lock_for( + std::chrono::milliseconds(config::migration_lock_timeout_ms))) { + return Status::Error("try_lock migration lock failed after {}ms", + config::migration_lock_timeout_ms); } std::lock_guard push_lock(tablet()->get_push_lock()); return _engine.txn_manager()->prepare_txn(_req.partition_id, *tablet(), _req.txn_id,