diff options
author | tesseract <tesseract@yandex-team.com> | 2023-03-20 18:35:29 +0300 |
---|---|---|
committer | tesseract <tesseract@yandex-team.com> | 2023-03-20 18:35:29 +0300 |
commit | 94951f4e047b87e1059c4ae3980f14acb2fb1b23 (patch) | |
tree | 2829b80dca89e077fe530e8c63c249f434ae4c0f | |
parent | df6df1e7035a4550e1f608fc5b5208a7b6ec2bea (diff) | |
download | ydb-94951f4e047b87e1059c4ae3980f14acb2fb1b23.tar.gz |
Минимизировать вероятность срабатывания VERIFY
-rw-r--r-- | ydb/core/tx/schemeshard/schemeshard__init.cpp | 13 | ||||
-rw-r--r-- | ydb/core/tx/schemeshard/schemeshard__pq_stats.cpp | 9 | ||||
-rw-r--r-- | ydb/core/tx/schemeshard/schemeshard_info_types.h | 4 |
3 files changed, 18 insertions, 8 deletions
diff --git a/ydb/core/tx/schemeshard/schemeshard__init.cpp b/ydb/core/tx/schemeshard/schemeshard__init.cpp index 8ec2cf2a76..7442dadfa2 100644 --- a/ydb/core/tx/schemeshard/schemeshard__init.cpp +++ b/ydb/core/tx/schemeshard/schemeshard__init.cpp @@ -2498,11 +2498,16 @@ struct TSchemeShard::TTxInit : public TTransactionBase<TSchemeShard> { auto it = Self->Topics.find(pathId); if (it != Self->Topics.end()) { auto& topic = it->second; - topic->Stats.SeqNo = TMessageSeqNo(rowset.GetValue<Schema::PersQueueGroupStats::SeqNoGeneration>(), rowset.GetValue<Schema::PersQueueGroupStats::SeqNoRound>()); - topic->Stats.DataSize = rowset.GetValue<Schema::PersQueueGroupStats::DataSize>(); - topic->Stats.UsedReserveSize = rowset.GetValue<Schema::PersQueueGroupStats::UsedReserveSize>(); - Self->ResolveDomainInfo(pathId)->AggrDiskSpaceUsage(topic->Stats, {}); + auto dataSize = rowset.GetValue<Schema::PersQueueGroupStats::DataSize>(); + auto usedReserveSize = rowset.GetValue<Schema::PersQueueGroupStats::UsedReserveSize>(); + if (dataSize >= usedReserveSize) { + topic->Stats.SeqNo = TMessageSeqNo(rowset.GetValue<Schema::PersQueueGroupStats::SeqNoGeneration>(), rowset.GetValue<Schema::PersQueueGroupStats::SeqNoRound>()); + topic->Stats.DataSize = dataSize; + topic->Stats.UsedReserveSize = usedReserveSize; + + Self->ResolveDomainInfo(pathId)->AggrDiskSpaceUsage(topic->Stats, {}); + } } if (!rowset.Next()) { diff --git a/ydb/core/tx/schemeshard/schemeshard__pq_stats.cpp b/ydb/core/tx/schemeshard/schemeshard__pq_stats.cpp index 60157677b6..90ada5af23 100644 --- a/ydb/core/tx/schemeshard/schemeshard__pq_stats.cpp +++ b/ydb/core/tx/schemeshard/schemeshard__pq_stats.cpp @@ -34,6 +34,15 @@ bool TTxStoreTopicStats::PersistSingleStats(const TPathId& pathId, const TStatsQ newStats.DataSize = rec.GetDataSize(); newStats.UsedReserveSize = rec.GetUsedReserveSize(); + if (newStats.DataSize < newStats.UsedReserveSize) { + LOG_WARN_S(ctx, NKikimrServices::FLAT_TX_SCHEMESHARD, + "Got wrong periodic topic stats at partition " << pathId + << ". DataSize must be greater than or equal to UsedReserveSize but " + << " DataSize " << rec.GetDataSize() + << " UsedReserveSize " << rec.GetUsedReserveSize()); + return true; + } + const auto it = Self->Topics.find(pathId); if (it == Self->Topics.end()) { return true; diff --git a/ydb/core/tx/schemeshard/schemeshard_info_types.h b/ydb/core/tx/schemeshard/schemeshard_info_types.h index 37e0349578..2aa3bd2a02 100644 --- a/ydb/core/tx/schemeshard/schemeshard_info_types.h +++ b/ydb/core/tx/schemeshard/schemeshard_info_types.h @@ -1881,10 +1881,6 @@ struct TSubDomainInfo: TSimpleRefCount<TSubDomainInfo> { auto& topics = DiskSpaceUsage.Topics; topics.DataSize += (newAggr.DataSize - oldAggr.DataSize); topics.UsedReserveSize += (newAggr.UsedReserveSize - oldAggr.UsedReserveSize); - - Y_VERIFY_S(topics.DataSize >= 0, "TDiskSpaceUsage.Topic.AccountSize: DataSize: " << topics.DataSize); - Y_VERIFY_S(topics.UsedReserveSize >= 0, "TDiskSpaceUsage.Topic.AccountSize: UsedReserveSize: " << topics.UsedReserveSize); - Y_VERIFY_S(topics.DataSize >= topics.UsedReserveSize, "TDiskSpaceUsage.Topic.AccountSize: DataSize: " << topics.DataSize << ", UsedReserveSize: " << topics.UsedReserveSize); } const TDiskSpaceUsage& GetDiskSpaceUsage() const { |