Skip to content

Commit f3bd021

Browse files
authored
extend DSProxy diagnostics (#20807)
1 parent ccc3576 commit f3bd021

File tree

3 files changed

+50
-15
lines changed

3 files changed

+50
-15
lines changed

ydb/core/blobstorage/dsproxy/dsproxy_blackboard.cpp

Lines changed: 48 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,15 @@ void TBlobState::AddResponseData(const TBlobStorageGroupInfo &info, const TLogoB
9696
const ui32 diskIdx = info.GetIdxInSubgroup(info.GetVDiskId(orderNumber), id.Hash());
9797
Y_ABORT_UNLESS(diskIdx != info.Type.BlobSubgroupSize());
9898
TDisk& disk = Disks[diskIdx];
99-
Y_ABORT_UNLESS(disk.OrderNumber == orderNumber);
99+
100+
Y_VERIFY_S(disk.OrderNumber == orderNumber, "AddResponseData, disk.OrderNumber != orderNumber"
101+
<< " blobId# " << id
102+
<< " shift# " << shift
103+
<< " size# " << data.size()
104+
<< " VDiskId# " << info.GetVDiskId(orderNumber)
105+
<< " diskIdx# " << diskIdx
106+
<< " disk# " << disk.ToString()
107+
<< " orderNumber# " << orderNumber);
100108

101109
// Mark part as present for the disk
102110
Y_ABORT_UNLESS(partIdx < disk.DiskParts.size());
@@ -116,7 +124,13 @@ void TBlobState::AddNoDataResponse(const TBlobStorageGroupInfo &info, const TLog
116124
const ui32 diskIdx = info.GetIdxInSubgroup(info.GetVDiskId(orderNumber), id.Hash());
117125
Y_ABORT_UNLESS(diskIdx != info.Type.BlobSubgroupSize());
118126
TDisk& disk = Disks[diskIdx];
119-
Y_ABORT_UNLESS(disk.OrderNumber == orderNumber);
127+
128+
Y_VERIFY_S(disk.OrderNumber == orderNumber, "AddNoDataResponse, disk.OrderNumber != orderNumber"
129+
<< " blobId# " << id
130+
<< " VDiskId# " << info.GetVDiskId(orderNumber)
131+
<< " diskIdx# " << diskIdx
132+
<< " disk# " << disk.ToString()
133+
<< " orderNumber# " << orderNumber);
120134

121135
Y_ABORT_UNLESS(partIdx < disk.DiskParts.size());
122136
TDiskPart &diskPart = disk.DiskParts[partIdx];
@@ -132,7 +146,13 @@ void TBlobState::AddPutOkResponse(const TBlobStorageGroupInfo &info, const TLogo
132146
const ui32 diskIdx = info.GetIdxInSubgroup(info.GetVDiskId(orderNumber), id.Hash());
133147
Y_ABORT_UNLESS(diskIdx != info.Type.BlobSubgroupSize());
134148
TDisk& disk = Disks[diskIdx];
135-
Y_ABORT_UNLESS(disk.OrderNumber == orderNumber);
149+
150+
Y_VERIFY_S(disk.OrderNumber == orderNumber, "AddPutOkResponse, disk.OrderNumber != orderNumber"
151+
<< " blobId# " << id
152+
<< " VDiskId# " << info.GetVDiskId(orderNumber)
153+
<< " diskIdx# " << diskIdx
154+
<< " disk# " << disk.ToString()
155+
<< " orderNumber# " << orderNumber);
136156

137157
Y_ABORT_UNLESS(partIdx < disk.DiskParts.size());
138158
TDiskPart& diskPart = disk.DiskParts[partIdx];
@@ -148,7 +168,14 @@ void TBlobState::AddErrorResponse(const TBlobStorageGroupInfo &info, const TLogo
148168
const ui32 diskIdx = info.GetIdxInSubgroup(info.GetVDiskId(orderNumber), id.Hash());
149169
Y_ABORT_UNLESS(diskIdx != info.Type.BlobSubgroupSize());
150170
TDisk& disk = Disks[diskIdx];
151-
Y_ABORT_UNLESS(disk.OrderNumber == orderNumber);
171+
172+
Y_VERIFY_S(disk.OrderNumber == orderNumber, "AddErrorResponse, disk.OrderNumber != orderNumber"
173+
<< " blobId# " << id
174+
<< " errorReason# " << errorReason
175+
<< " VDiskId# " << info.GetVDiskId(orderNumber)
176+
<< " diskIdx# " << diskIdx
177+
<< " disk# " << disk.ToString()
178+
<< " orderNumber# " << orderNumber);
152179

153180
Y_ABORT_UNLESS(partIdx < disk.DiskParts.size());
154181
TDiskPart &diskPart = disk.DiskParts[partIdx];
@@ -165,7 +192,13 @@ void TBlobState::AddNotYetResponse(const TBlobStorageGroupInfo &info, const TLog
165192
const ui32 diskIdx = info.GetIdxInSubgroup(info.GetVDiskId(orderNumber), id.Hash());
166193
Y_ABORT_UNLESS(diskIdx != info.Type.BlobSubgroupSize());
167194
TDisk& disk = Disks[diskIdx];
168-
Y_ABORT_UNLESS(disk.OrderNumber == orderNumber);
195+
196+
Y_VERIFY_S(disk.OrderNumber == orderNumber, "AddNotYetResponse, disk.OrderNumber != orderNumber"
197+
<< " blobId# " << id
198+
<< " VDiskId# " << info.GetVDiskId(orderNumber)
199+
<< " diskIdx# " << diskIdx
200+
<< " disk# " << disk.ToString()
201+
<< " orderNumber# " << orderNumber);
169202

170203
Y_ABORT_UNLESS(partIdx < disk.DiskParts.size());
171204
TDiskPart &diskPart = disk.DiskParts[partIdx];
@@ -400,35 +433,35 @@ void TBlackboard::AddPartToPut(const TLogoBlobID &id, ui32 partIdx, TRope&& part
400433
void TBlackboard::AddPutOkResponse(const TLogoBlobID &id, ui32 orderNumber) {
401434
Y_ABORT_UNLESS(bool(id));
402435
Y_ABORT_UNLESS(id.PartId() != 0);
403-
TBlobState &state = GetState(id);
436+
TBlobState &state = GetState(id, orderNumber, "AddPutOkResponse");
404437
state.AddPutOkResponse(*Info, id, orderNumber);
405438
}
406439

407440
void TBlackboard::AddResponseData(const TLogoBlobID &id, ui32 orderNumber, ui32 shift, TRope&& data) {
408441
Y_ABORT_UNLESS(bool(id));
409442
Y_ABORT_UNLESS(id.PartId() != 0);
410-
TBlobState &state = GetState(id);
443+
TBlobState &state = GetState(id, orderNumber, "AddResponseData");
411444
state.AddResponseData(*Info, id, orderNumber, shift, std::move(data));
412445
}
413446

414447
void TBlackboard::AddNoDataResponse(const TLogoBlobID &id, ui32 orderNumber) {
415448
Y_ABORT_UNLESS(bool(id));
416449
Y_ABORT_UNLESS(id.PartId() != 0);
417-
TBlobState &state = GetState(id);
450+
TBlobState &state = GetState(id, orderNumber, "AddNoDataResponse");
418451
state.AddNoDataResponse(*Info, id, orderNumber);
419452
}
420453

421454
void TBlackboard::AddNotYetResponse(const TLogoBlobID &id, ui32 orderNumber) {
422455
Y_ABORT_UNLESS(bool(id));
423456
Y_ABORT_UNLESS(id.PartId() != 0);
424-
TBlobState &state = GetState(id);
457+
TBlobState &state = GetState(id, orderNumber, "AddNotYetResponse");
425458
state.AddNotYetResponse(*Info, id, orderNumber);
426459
}
427460

428461
void TBlackboard::AddErrorResponse(const TLogoBlobID &id, ui32 orderNumber, const TString& errorReason) {
429462
Y_ABORT_UNLESS(bool(id));
430463
Y_ABORT_UNLESS(id.PartId() != 0);
431-
TBlobState &state = GetState(id);
464+
TBlobState &state = GetState(id, orderNumber, "AddErrorResponse");
432465
state.AddErrorResponse(*Info, id, orderNumber, errorReason);
433466
}
434467

@@ -493,22 +526,24 @@ EStrategyOutcome TBlackboard::RunStrategy(TLogContext &logCtx, const IStrategy&
493526
return RunStrategies(logCtx, {const_cast<IStrategy*>(&s)}, accelerationParams, finished, expired);
494527
}
495528

496-
TBlobState& TBlackboard::GetState(const TLogoBlobID &id) {
529+
TBlobState& TBlackboard::GetState(const TLogoBlobID &id, ui32 orderNumber, const char* origin) {
497530
Y_ABORT_UNLESS(bool(id));
498531
TLogoBlobID fullId = id.FullID();
499532
auto it = BlobStates.find(fullId);
500533
if (it == BlobStates.end()) {
501534
it = DoneBlobStates.find(fullId);
502535
Y_VERIFY_S(it != DoneBlobStates.end(), "The blob was not found in BlobStates and DoneBlobStates"
536+
<< " from " << origin
503537
<< " blobId# " << fullId
538+
<< " orderNumber# " << orderNumber
504539
<< " BlackBoard# " << ToString());
505540
}
506541
return it->second;
507542
}
508543

509544
ssize_t TBlackboard::AddPartMap(const TLogoBlobID &id, ui32 diskOrderNumber, ui32 requestIndex) {
510545
Y_ABORT_UNLESS(id);
511-
TBlobState &state = GetState(id);
546+
TBlobState &state = GetState(id, diskOrderNumber, "AddPartMap");
512547
ssize_t ret = state.PartMap.size();
513548
state.PartMap.emplace_back(TEvBlobStorage::TEvGetResult::TPartMapItem{
514549
diskOrderNumber,
@@ -523,7 +558,7 @@ ssize_t TBlackboard::AddPartMap(const TLogoBlobID &id, ui32 diskOrderNumber, ui3
523558
void TBlackboard::ReportPartMapStatus(const TLogoBlobID &id, ssize_t partMapIndex, ui32 responseIndex, NKikimrProto::EReplyStatus status) {
524559
Y_ABORT_UNLESS(id);
525560
Y_ABORT_UNLESS(partMapIndex >= 0);
526-
TBlobState &state = GetState(id);
561+
TBlobState &state = GetState(id, 0xff, "ReportPartMapStatus");
527562
Y_ABORT_UNLESS(static_cast<size_t>(partMapIndex) < state.PartMap.size());
528563
TEvBlobStorage::TEvGetResult::TPartMapItem &item = state.PartMap[partMapIndex];
529564
Y_ABORT_UNLESS(item.ResponseIndex == responseIndex || item.ResponseIndex == Max<ui32>());

ydb/core/blobstorage/dsproxy/dsproxy_blackboard.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,7 @@ struct TBlackboard {
211211
const TBlobStorageGroupInfo::TGroupVDisks *expired = nullptr);
212212
EStrategyOutcome RunStrategy(TLogContext &logCtx, const IStrategy& s, const TAccelerationParams& accelerationParams,
213213
TBatchedVec<TFinishedBlob> *finished = nullptr, const TBlobStorageGroupInfo::TGroupVDisks *expired = nullptr);
214-
TBlobState& GetState(const TLogoBlobID &id);
214+
TBlobState& GetState(const TLogoBlobID &id, ui32 orderNumber, const char* origin);
215215
ssize_t AddPartMap(const TLogoBlobID &id, ui32 diskOrderNumber, ui32 requestIndex);
216216
void ReportPartMapStatus(const TLogoBlobID &id, ssize_t partMapIndex, ui32 responseIndex, NKikimrProto::EReplyStatus status);
217217
void GetWorstPredictedDelaysNs(const TBlobStorageGroupInfo &info, TGroupQueues &groupQueues,

ydb/core/blobstorage/dsproxy/dsproxy_get_impl.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ void TGetImpl::PrepareReply(NKikimrProto::EReplyStatus status, TString errorReas
4141
const TEvBlobStorage::TEvGet::TQuery &query = Queries[i];
4242
TEvBlobStorage::TEvGetResult::TResponse &outResponse = outGetResult->Responses[i];
4343

44-
const TBlobState &blobState = Blackboard.GetState(query.Id);
44+
const TBlobState &blobState = Blackboard.GetState(query.Id, 0xff, "PrepareReply");
4545
outResponse.Id = query.Id;
4646
outResponse.PartMap = blobState.PartMap;
4747
outResponse.LooksLikePhantom = PhantomCheck

0 commit comments

Comments
 (0)