diff --git a/ydb/core/tablet/tablet_metrics.cpp b/ydb/core/tablet/tablet_metrics.cpp index 182c7c566e4b..8e17fed1a716 100644 --- a/ydb/core/tablet/tablet_metrics.cpp +++ b/ydb/core/tablet/tablet_metrics.cpp @@ -107,9 +107,9 @@ namespace { if (value.IsValueReady()) { auto val = !value.IsValueObsolete(now) ? value.GetValue() : 0; ui32 levelVal = val / significantChange; - auto& lit = levels[groupId]; - if (lit != levelVal || force) { - lit = levelVal; + auto [lit, inserted] = levels.insert({groupId, 0}); + if (inserted || lit->second != levelVal || force) { + lit->second = levelVal; haveChanges = true; // N.B. keep going so all levels are properly updated } diff --git a/ydb/core/tablet/tablet_metrics.h b/ydb/core/tablet/tablet_metrics.h index b426284d33fb..313df95d68cf 100644 --- a/ydb/core/tablet/tablet_metrics.h +++ b/ydb/core/tablet/tablet_metrics.h @@ -69,11 +69,11 @@ class TResourceMetricsSendState { const ui64 TabletId; const ui32 FollowerId; const TActorId Launcher; - ui32 LevelCPU = 0; - ui32 LevelMemory = 0; - ui32 LevelNetwork = 0; - ui32 LevelStorage = 0; - ui32 LevelIops = 0; + std::optional LevelCPU; + std::optional LevelMemory; + std::optional LevelNetwork; + std::optional LevelStorage; + std::optional LevelIops; THashMap, ui32> LevelReadThroughput; THashMap, ui32> LevelWriteThroughput; THashMap, ui32> LevelReadIops;