aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authortesseract <tesseract@yandex-team.com>2023-03-20 18:35:29 +0300
committertesseract <tesseract@yandex-team.com>2023-03-20 18:35:29 +0300
commit94951f4e047b87e1059c4ae3980f14acb2fb1b23 (patch)
tree2829b80dca89e077fe530e8c63c249f434ae4c0f
parentdf6df1e7035a4550e1f608fc5b5208a7b6ec2bea (diff)
downloadydb-94951f4e047b87e1059c4ae3980f14acb2fb1b23.tar.gz
Минимизировать вероятность срабатывания VERIFY
-rw-r--r--ydb/core/tx/schemeshard/schemeshard__init.cpp13
-rw-r--r--ydb/core/tx/schemeshard/schemeshard__pq_stats.cpp9
-rw-r--r--ydb/core/tx/schemeshard/schemeshard_info_types.h4
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 {