diff --git a/dbms/src/Interpreters/AsynchronousMetrics.cpp b/dbms/src/Interpreters/AsynchronousMetrics.cpp index c9783a6b489..2e7129249ca 100644 --- a/dbms/src/Interpreters/AsynchronousMetrics.cpp +++ b/dbms/src/Interpreters/AsynchronousMetrics.cpp @@ -28,6 +28,7 @@ #include #include #include +#include #include #include #include @@ -236,18 +237,59 @@ void AsynchronousMetrics::update() if (auto store = dt_storage->getStoreIfInited(); store) { auto stat = store->getStoreStats(); - calculateMax(max_dt_stable_oldest_snapshot_lifetime, stat.storage_stable_oldest_snapshot_lifetime); - calculateMax(max_dt_delta_oldest_snapshot_lifetime, stat.storage_delta_oldest_snapshot_lifetime); - calculateMax(max_dt_meta_oldest_snapshot_lifetime, stat.storage_meta_oldest_snapshot_lifetime); + if (context.getPageStorageRunMode() == PageStorageRunMode::ONLY_V2) + { + calculateMax( + max_dt_stable_oldest_snapshot_lifetime, + stat.storage_stable_oldest_snapshot_lifetime); + calculateMax( + max_dt_delta_oldest_snapshot_lifetime, + stat.storage_delta_oldest_snapshot_lifetime); + calculateMax( + max_dt_meta_oldest_snapshot_lifetime, + stat.storage_meta_oldest_snapshot_lifetime); + } calculateMax(max_dt_background_tasks_length, stat.background_tasks_length); } } } } - set("MaxDTStableOldestSnapshotLifetime", max_dt_stable_oldest_snapshot_lifetime); - set("MaxDTDeltaOldestSnapshotLifetime", max_dt_delta_oldest_snapshot_lifetime); - set("MaxDTMetaOldestSnapshotLifetime", max_dt_meta_oldest_snapshot_lifetime); + switch (context.getPageStorageRunMode()) + { + case PageStorageRunMode::ONLY_V2: + { + set("MaxDTStableOldestSnapshotLifetime", max_dt_stable_oldest_snapshot_lifetime); + set("MaxDTDeltaOldestSnapshotLifetime", max_dt_delta_oldest_snapshot_lifetime); + set("MaxDTMetaOldestSnapshotLifetime", max_dt_meta_oldest_snapshot_lifetime); + break; + } + case PageStorageRunMode::ONLY_V3: + case PageStorageRunMode::MIX_MODE: + { + if (auto global_storage_pool = context.getGlobalStoragePool(); global_storage_pool) + { + const auto log_snap_stat = global_storage_pool->log_storage->getSnapshotsStat(); + const auto meta_snap_stat = global_storage_pool->meta_storage->getSnapshotsStat(); + const auto data_snap_stat = global_storage_pool->data_storage->getSnapshotsStat(); + set("MaxDTDeltaOldestSnapshotLifetime", log_snap_stat.longest_living_seconds); + set("MaxDTMetaOldestSnapshotLifetime", meta_snap_stat.longest_living_seconds); + set("MaxDTStableOldestSnapshotLifetime", data_snap_stat.longest_living_seconds); + } + break; + } + case PageStorageRunMode::UNI_PS: + { + if (auto uni_ps = context.tryGetWriteNodePageStorage(); uni_ps != nullptr) + { + // Only set delta snapshot lifetime when UniPS is enabled + const auto snap_stat = uni_ps->getSnapshotsStat(); + set("MaxDTDeltaOldestSnapshotLifetime", snap_stat.longest_living_seconds); + } + break; + } + } + set("MaxDTBackgroundTasksLength", max_dt_background_tasks_length); } diff --git a/dbms/src/Storages/Transaction/TMTContext.cpp b/dbms/src/Storages/Transaction/TMTContext.cpp index 08fbf33df51..3910c73406c 100644 --- a/dbms/src/Storages/Transaction/TMTContext.cpp +++ b/dbms/src/Storages/Transaction/TMTContext.cpp @@ -72,7 +72,10 @@ static SchemaSyncerPtr createSchemaSyncer(bool exist_pd_addr, bool for_unit_test std::make_shared>(cluster)); } -TMTContext::TMTContext(Context & context_, const TiFlashRaftConfig & raft_config, const pingcap::ClusterConfig & cluster_config) +TMTContext::TMTContext( + Context & context_, + const TiFlashRaftConfig & raft_config, + const pingcap::ClusterConfig & cluster_config) : context(context_) , kvstore(context_.getSharedContextDisagg()->isDisaggregatedComputeMode() && context_.getSharedContextDisagg()->use_autoscaler ? nullptr : std::make_shared(context)) , region_table(context)