From 8e26c690aa2ba2bbe6f93a0b997f60cdd1d097b3 Mon Sep 17 00:00:00 2001 From: Calvin Neo Date: Fri, 24 Apr 2026 16:13:11 +0800 Subject: [PATCH 1/2] a Signed-off-by: Calvin Neo --- dbms/src/Storages/KVStore/KVStore.h | 7 ++-- .../KVStore/MultiRaft/Persistence.cpp | 35 +++++++++++-------- 2 files changed, 25 insertions(+), 17 deletions(-) diff --git a/dbms/src/Storages/KVStore/KVStore.h b/dbms/src/Storages/KVStore/KVStore.h index 05501f2fed4..3a42e10bc33 100644 --- a/dbms/src/Storages/KVStore/KVStore.h +++ b/dbms/src/Storages/KVStore/KVStore.h @@ -14,6 +14,8 @@ #pragma once +#include + #include #include #include @@ -372,13 +374,14 @@ class KVStore final : private boost::noncopyable TMTContext & tmt, const RegionTaskLock & region_task_lock, UInt64 index, - UInt64 term) const; + UInt64 term, + std::string_view persist_extra_msg) const; void persistRegion( const Region & region, const RegionTaskLock & region_task_lock, PersistRegionReason reason, - const char * extra_msg) const; + std::string_view extra_msg) const; bool tryRegisterEagerRaftLogGCTask(const RegionPtr & region, RegionTaskLock &); diff --git a/dbms/src/Storages/KVStore/MultiRaft/Persistence.cpp b/dbms/src/Storages/KVStore/MultiRaft/Persistence.cpp index 0103b460e5e..9827f725891 100644 --- a/dbms/src/Storages/KVStore/MultiRaft/Persistence.cpp +++ b/dbms/src/Storages/KVStore/MultiRaft/Persistence.cpp @@ -28,7 +28,7 @@ void KVStore::persistRegion( const Region & region, const RegionTaskLock & region_task_lock, PersistRegionReason reason, - const char * extra_msg) const + std::string_view extra_msg) const { RUNTIME_CHECK_MSG( region_persister, @@ -36,7 +36,9 @@ void KVStore::persistRegion( StackTrace().toString()); auto reason_id = magic_enum::enum_underlying(reason); - std::string caller = fmt::format("{} {}", PersistRegionReasonMap[reason_id], extra_msg); + std::string caller = fmt::format("{}", PersistRegionReasonMap[reason_id]); + if (!extra_msg.empty()) + caller = fmt::format("{} {}", caller, extra_msg); LOG_INFO( log, "Start to persist {}, cache size: {} bytes for `{}`", @@ -130,13 +132,13 @@ bool KVStore::tryFlushRegionData( // force persist auto & curr_region = *curr_region_ptr; + const auto force_persist_msg = fmt::format("by force, term={} index={}", term, index); LOG_DEBUG( log, - "flush region due to tryFlushRegionData by force, region_id={} term={} index={}", - curr_region.id(), - term, - index); - if (!forceFlushRegionDataImpl(curr_region, try_until_succeed, tmt, region_task_lock, index, term)) + "{} flush region due to tryFlushRegionData {}", + curr_region.toString(false), + force_persist_msg); + if (!forceFlushRegionDataImpl(curr_region, try_until_succeed, tmt, region_task_lock, index, term, force_persist_msg)) { throw Exception(ErrorCodes::LOGICAL_ERROR, "Force flush region failed, region_id={}", region_id); } @@ -215,11 +217,8 @@ bool KVStore::canFlushRegionDataImpl( if (can_flush && flush_if_possible) { // This rarely happens when there are too may raft logs, which don't trigger a proactive flush. - LOG_INFO( - log, - "{} flush region due to tryFlushRegionData, index {} term {} truncated_index {} truncated_term {}" - " gap {}/{} table_in_mem_size={} table_id={} keyspace={}", - curr_region.toString(false), + const auto flush_msg = fmt::format( + "index {} term {} truncated_index {} truncated_term {} gap {}/{} table_in_mem_size={} table_id={} keyspace={}", index, term, truncated_index, @@ -229,8 +228,13 @@ bool KVStore::canFlushRegionDataImpl( curr_region_ptr->getRegionTableSize(), curr_region_ptr->getMappedTableID(), curr_region_ptr->getKeyspaceID()); + LOG_DEBUG( + log, + "{} flush region due to tryFlushRegionData, {}", + curr_region.toString(false), + flush_msg); GET_METRIC(tiflash_raft_region_flush_bytes, type_flushed).Observe(size_bytes); - return forceFlushRegionDataImpl(curr_region, try_until_succeed, tmt, region_task_lock, index, term); + return forceFlushRegionDataImpl(curr_region, try_until_succeed, tmt, region_task_lock, index, term, flush_msg); } else { @@ -246,7 +250,8 @@ bool KVStore::forceFlushRegionDataImpl( TMTContext & tmt, const RegionTaskLock & region_task_lock, UInt64 index, - UInt64 term) const + UInt64 term, + std::string_view persist_extra_msg) const { Stopwatch watch; if (index) @@ -261,7 +266,7 @@ bool KVStore::forceFlushRegionDataImpl( } // flush cache in storage level is done, persist the region info - persistRegion(curr_region, region_task_lock, PersistRegionReason::Flush, ""); + persistRegion(curr_region, region_task_lock, PersistRegionReason::Flush, persist_extra_msg); // CompactLog will be done in proxy soon, we advance the eager truncate index in TiFlash curr_region.updateRaftLogEagerIndex(index); curr_region.cleanApproxMemCacheInfo(); From 41c3060423ffca08b64eff8d7da013fc731058ad Mon Sep 17 00:00:00 2001 From: Calvin Neo Date: Fri, 24 Apr 2026 16:32:44 +0800 Subject: [PATCH 2/2] reformat Signed-off-by: Calvin Neo --- dbms/src/Storages/KVStore/KVStore.h | 3 +-- .../KVStore/MultiRaft/Persistence.cpp | 24 +++++++++---------- 2 files changed, 13 insertions(+), 14 deletions(-) diff --git a/dbms/src/Storages/KVStore/KVStore.h b/dbms/src/Storages/KVStore/KVStore.h index 3a42e10bc33..26ce923a0d6 100644 --- a/dbms/src/Storages/KVStore/KVStore.h +++ b/dbms/src/Storages/KVStore/KVStore.h @@ -14,8 +14,6 @@ #pragma once -#include - #include #include #include @@ -31,6 +29,7 @@ #include #include +#include namespace TiDB { diff --git a/dbms/src/Storages/KVStore/MultiRaft/Persistence.cpp b/dbms/src/Storages/KVStore/MultiRaft/Persistence.cpp index 9827f725891..93b329a0d2a 100644 --- a/dbms/src/Storages/KVStore/MultiRaft/Persistence.cpp +++ b/dbms/src/Storages/KVStore/MultiRaft/Persistence.cpp @@ -133,12 +133,15 @@ bool KVStore::tryFlushRegionData( // force persist auto & curr_region = *curr_region_ptr; const auto force_persist_msg = fmt::format("by force, term={} index={}", term, index); - LOG_DEBUG( - log, - "{} flush region due to tryFlushRegionData {}", - curr_region.toString(false), - force_persist_msg); - if (!forceFlushRegionDataImpl(curr_region, try_until_succeed, tmt, region_task_lock, index, term, force_persist_msg)) + LOG_DEBUG(log, "{} flush region due to tryFlushRegionData {}", curr_region.toString(false), force_persist_msg); + if (!forceFlushRegionDataImpl( + curr_region, + try_until_succeed, + tmt, + region_task_lock, + index, + term, + force_persist_msg)) { throw Exception(ErrorCodes::LOGICAL_ERROR, "Force flush region failed, region_id={}", region_id); } @@ -218,7 +221,8 @@ bool KVStore::canFlushRegionDataImpl( { // This rarely happens when there are too may raft logs, which don't trigger a proactive flush. const auto flush_msg = fmt::format( - "index {} term {} truncated_index {} truncated_term {} gap {}/{} table_in_mem_size={} table_id={} keyspace={}", + "index {} term {} truncated_index {} truncated_term {} gap {}/{} table_in_mem_size={} table_id={} " + "keyspace={}", index, term, truncated_index, @@ -228,11 +232,7 @@ bool KVStore::canFlushRegionDataImpl( curr_region_ptr->getRegionTableSize(), curr_region_ptr->getMappedTableID(), curr_region_ptr->getKeyspaceID()); - LOG_DEBUG( - log, - "{} flush region due to tryFlushRegionData, {}", - curr_region.toString(false), - flush_msg); + LOG_DEBUG(log, "{} flush region due to tryFlushRegionData, {}", curr_region.toString(false), flush_msg); GET_METRIC(tiflash_raft_region_flush_bytes, type_flushed).Observe(size_bytes); return forceFlushRegionDataImpl(curr_region, try_until_succeed, tmt, region_task_lock, index, term, flush_msg); }