Skip to content

Commit 752095e

Browse files
fix snapshot control in case sys view requests (#7824)
1 parent 27dc824 commit 752095e

File tree

2 files changed

+31
-30
lines changed

2 files changed

+31
-30
lines changed

ydb/core/tx/columnshard/inflight_request_tracker.cpp

Lines changed: 30 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1-
#include "inflight_request_tracker.h"
21
#include "columnshard_impl.h"
32
#include "columnshard_schema.h"
3+
#include "inflight_request_tracker.h"
4+
45
#include "data_sharing/common/transactions/tx_extension.h"
56
#include "engines/column_engine.h"
67
#include "engines/reader/plain_reader/constructor/read_metadata.h"
@@ -9,27 +10,26 @@
910
namespace NKikimr::NColumnShard {
1011

1112
void TInFlightReadsTracker::RemoveInFlightRequest(ui64 cookie, const NOlap::TVersionedIndex* /*index*/, const TInstant now) {
12-
Y_ABORT_UNLESS(RequestsMeta.contains(cookie), "Unknown request cookie %" PRIu64, cookie);
13-
const auto& readMetaList = RequestsMeta[cookie];
13+
auto it = RequestsMeta.find(cookie);
14+
AFL_VERIFY(it != RequestsMeta.end())("cookie", cookie);
15+
const auto& readMetaList = it->second;
1416

1517
for (const auto& readMetaBase : readMetaList) {
16-
NOlap::NReader::NPlain::TReadMetadata::TConstPtr readMeta = std::dynamic_pointer_cast<const NOlap::NReader::NPlain::TReadMetadata>(readMetaBase);
17-
18-
if (!readMeta) {
19-
continue;
20-
}
2118
{
22-
auto it = SnapshotsLive.find(readMeta->GetRequestSnapshot());
19+
auto it = SnapshotsLive.find(readMetaBase->GetRequestSnapshot());
2320
AFL_VERIFY(it != SnapshotsLive.end());
2421
if (it->second.DelRequest(cookie, now)) {
2522
SnapshotsLive.erase(it);
2623
}
2724
}
2825

29-
auto insertStorage = StoragesManager->GetInsertOperator();
30-
auto tracker = insertStorage->GetBlobsTracker();
31-
for (const auto& committedBlob : readMeta->CommittedBlobs) {
32-
tracker->FreeBlob(committedBlob.GetBlobRange().GetBlobId());
26+
if (NOlap::NReader::NPlain::TReadMetadata::TConstPtr readMeta =
27+
std::dynamic_pointer_cast<const NOlap::NReader::NPlain::TReadMetadata>(readMetaBase)) {
28+
auto insertStorage = StoragesManager->GetInsertOperator();
29+
auto tracker = insertStorage->GetBlobsTracker();
30+
for (const auto& committedBlob : readMeta->CommittedBlobs) {
31+
tracker->FreeBlob(committedBlob.GetBlobRange().GetBlobId());
32+
}
3333
}
3434
}
3535
Counters->OnSnapshotsInfo(SnapshotsLive.size(), GetSnapshotToClean());
@@ -85,8 +85,7 @@ class TTransactionSavePersistentSnapshots: public NOlap::NDataSharing::TExtended
8585
NColumnShard::TColumnShard* self, std::set<NOlap::TSnapshot>&& saveSnapshots, std::set<NOlap::TSnapshot>&& removeSnapshots)
8686
: TBase(self)
8787
, SaveSnapshots(std::move(saveSnapshots))
88-
, RemoveSnapshots(std::move(removeSnapshots))
89-
{
88+
, RemoveSnapshots(std::move(removeSnapshots)) {
9089
AFL_VERIFY(SaveSnapshots.size() || RemoveSnapshots.size());
9190
}
9291
};
@@ -139,4 +138,20 @@ bool TInFlightReadsTracker::LoadFromDatabase(NTable::TDatabase& tableDB) {
139138
return true;
140139
}
141140

141+
NKikimr::TConclusion<ui64> TInFlightReadsTracker::AddInFlightRequest(
142+
NOlap::NReader::TReadMetadataBase::TConstPtr readMeta, const NOlap::TVersionedIndex* index) {
143+
const ui64 cookie = NextCookie++;
144+
auto it = SnapshotsLive.find(readMeta->GetRequestSnapshot());
145+
if (it == SnapshotsLive.end()) {
146+
it = SnapshotsLive.emplace(readMeta->GetRequestSnapshot(), TSnapshotLiveInfo::BuildFromRequest(readMeta->GetRequestSnapshot())).first;
147+
Counters->OnSnapshotsInfo(SnapshotsLive.size(), GetSnapshotToClean());
148+
}
149+
it->second.AddRequest(cookie);
150+
auto status = AddToInFlightRequest(cookie, readMeta, index);
151+
if (!status) {
152+
return status;
153+
}
154+
return cookie;
142155
}
156+
157+
} // namespace NKikimr::NColumnShard

ydb/core/tx/columnshard/inflight_request_tracker.h

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -92,21 +92,7 @@ class TInFlightReadsTracker {
9292

9393
// Returns a unique cookie associated with this request
9494
[[nodiscard]] TConclusion<ui64> AddInFlightRequest(
95-
NOlap::NReader::TReadMetadataBase::TConstPtr readMeta, const NOlap::TVersionedIndex* index) {
96-
const ui64 cookie = NextCookie++;
97-
auto it = SnapshotsLive.find(readMeta->GetRequestSnapshot());
98-
if (it == SnapshotsLive.end()) {
99-
it =
100-
SnapshotsLive.emplace(readMeta->GetRequestSnapshot(), TSnapshotLiveInfo::BuildFromRequest(readMeta->GetRequestSnapshot())).first;
101-
Counters->OnSnapshotsInfo(SnapshotsLive.size(), GetSnapshotToClean());
102-
}
103-
it->second.AddRequest(cookie);
104-
auto status = AddToInFlightRequest(cookie, readMeta, index);
105-
if (!status) {
106-
return status;
107-
}
108-
return cookie;
109-
}
95+
NOlap::NReader::TReadMetadataBase::TConstPtr readMeta, const NOlap::TVersionedIndex* index);
11096

11197
void RemoveInFlightRequest(ui64 cookie, const NOlap::TVersionedIndex* index, const TInstant now);
11298

0 commit comments

Comments
 (0)