Skip to content

Commit c8da28b

Browse files
authored
KIKIMR-20042 Partially implemented PDisk tracing (#574)
* KIKIMR-20042 Partially implemented PDisk tracing * Grooming * Another grooming
1 parent ad45285 commit c8da28b

16 files changed

+223
-121
lines changed

ydb/core/blobstorage/pdisk/blobstorage_pdisk.h

+12-7
Original file line numberDiff line numberDiff line change
@@ -327,12 +327,9 @@ struct TEvLog : public TEventLocal<TEvLog, TEvBlobStorage::EvLog> {
327327
};
328328

329329
struct TEvMultiLog : public TEventLocal<TEvMultiLog, TEvBlobStorage::EvMultiLog> {
330-
TBatchedVec<THolder<TEvLog>> Logs;
331-
TLsnSeg LsnSeg;
332-
333-
void AddLog(THolder<TEvLog> &&ev) {
334-
Logs.emplace_back(std::move(ev));
335-
auto &log = *Logs.back();
330+
void AddLog(THolder<TEvLog> &&ev, NWilson::TTraceId traceId = {}) {
331+
Logs.emplace_back(std::move(ev), std::move(traceId));
332+
auto &log = *Logs.back().Event;
336333
if (Logs.size() == 1) {
337334
LsnSeg = TLsnSeg(log.LsnSegmentStart, log.Lsn);
338335
} else {
@@ -350,11 +347,19 @@ struct TEvMultiLog : public TEventLocal<TEvMultiLog, TEvBlobStorage::EvMultiLog>
350347
TStringBuilder str;
351348
str << '{';
352349
for (ui64 idx = 0; idx < record.Logs.size(); ++idx) {
353-
str << (idx ? ", " : "") << idx << "# " << record.Logs[idx]->ToString();
350+
str << (idx ? ", " : "") << idx << "# " << record.Logs[idx].Event->ToString();
354351
}
355352
str << '}';
356353
return str;
357354
}
355+
356+
struct TItem {
357+
THolder<TEvLog> Event;
358+
NWilson::TTraceId TraceId;
359+
};
360+
361+
TBatchedVec<TItem> Logs;
362+
TLsnSeg LsnSeg;
358363
};
359364

360365
struct TEvLogResult : public TEventLocal<TEvLogResult, TEvBlobStorage::EvLogResult> {

ydb/core/blobstorage/pdisk/blobstorage_pdisk_actor.cpp

+6-6
Original file line numberDiff line numberDiff line change
@@ -648,7 +648,7 @@ class TPDiskActor : public TActorBootstrapped<TPDiskActor> {
648648
}
649649
str << " StateErrorReason# " << StateErrorReason;
650650
THolder<NPDisk::TEvLogResult> result(new NPDisk::TEvLogResult(NKikimrProto::CORRUPTED, 0, str.Str()));
651-
for (auto &log : evMultiLog.Logs) {
651+
for (auto &[log, _] : evMultiLog.Logs) {
652652
result->Results.push_back(NPDisk::TEvLogResult::TRecord(log->Lsn, log->Cookie));
653653
}
654654
PDisk->Mon.WriteLog.CountRequest(0);
@@ -783,9 +783,9 @@ class TPDiskActor : public TActorBootstrapped<TPDiskActor> {
783783
}
784784

785785
void Handle(NPDisk::TEvMultiLog::TPtr &ev) {
786-
for (auto &log : ev->Get()->Logs) {
786+
for (auto &[log, traceId] : ev->Get()->Logs) {
787787
double burstMs;
788-
TLogWrite* request = PDisk->ReqCreator.CreateLogWrite(*log, ev->Sender, burstMs, std::move(ev->TraceId));
788+
TLogWrite* request = PDisk->ReqCreator.CreateLogWrite(*log, ev->Sender, burstMs, std::move(traceId));
789789
CheckBurst(request->IsSensitive, burstMs);
790790
request->Orbit = std::move(log->Orbit);
791791
PDisk->InputRequest(request);
@@ -796,7 +796,7 @@ class TPDiskActor : public TActorBootstrapped<TPDiskActor> {
796796
LOG_DEBUG(*TlsActivationContext, NKikimrServices::BS_PDISK, "PDiskId# %" PRIu32 " %s Marker# BSY01",
797797
(ui32)PDisk->PDiskId, ev->Get()->ToString().c_str());
798798
double burstMs;
799-
auto* request = PDisk->ReqCreator.CreateFromEv<TLogRead>(*ev->Get(), ev->Sender, &burstMs);
799+
auto* request = PDisk->ReqCreator.CreateFromEvPtr<TLogRead>(ev, &burstMs);
800800
CheckBurst(request->IsSensitive, burstMs);
801801
PDisk->InputRequest(request);
802802
}
@@ -874,7 +874,7 @@ class TPDiskActor : public TActorBootstrapped<TPDiskActor> {
874874
}
875875

876876
void Handle(NPDisk::TEvAskForCutLog::TPtr &ev) {
877-
auto* request = PDisk->ReqCreator.CreateFromEv<TAskForCutLog>(*ev->Get(), ev->Sender);
877+
auto* request = PDisk->ReqCreator.CreateFromEvPtr<TAskForCutLog>(ev);
878878
PDisk->InputRequest(request);
879879
}
880880

@@ -1135,7 +1135,7 @@ class TPDiskActor : public TActorBootstrapped<TPDiskActor> {
11351135
}
11361136

11371137
void Handle(NPDisk::TEvReadLogContinue::TPtr &ev) {
1138-
auto *request = PDisk->ReqCreator.CreateFromEv<TLogReadContinue>(*ev->Get(), SelfId());
1138+
auto *request = PDisk->ReqCreator.CreateFromEvPtr<TLogReadContinue>(ev);
11391139
PDisk->InputRequest(request);
11401140
}
11411141

ydb/core/blobstorage/pdisk/blobstorage_pdisk_completion_impl.cpp

+5-2
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@ namespace NPDisk {
1515
void TCompletionLogWrite::Exec(TActorSystem *actorSystem) {
1616
// bool isNewChunksCommited = false;
1717
if (CommitedLogChunks) {
18-
auto* req = PDisk->ReqCreator.CreateFromArgs<TCommitLogChunks>(std::move(CommitedLogChunks));
18+
NWilson::TSpan span(TWilson::PDisk, TraceId.Clone(), "PDisk.CommitLogChunks");
19+
auto* req = PDisk->ReqCreator.CreateFromArgs<TCommitLogChunks>(std::move(CommitedLogChunks), std::move(span));
1920
PDisk->InputRequest(req);
2021
//isNewChunksCommited = true;
2122
}
@@ -384,7 +385,9 @@ void TChunkTrimCompletion::Exec(TActorSystem *actorSystem) {
384385
<< ui64(responseTimeMs) << " sizeBytes# " << SizeBytes);
385386
LWPROBE(PDiskTrimResponseTime, PDisk->PDiskId, ReqId.Id, responseTimeMs, SizeBytes);
386387
PDisk->Mon.Trim.CountResponse();
387-
TTryTrimChunk *tryTrim = PDisk->ReqCreator.CreateFromArgs<TTryTrimChunk>(SizeBytes);
388+
NWilson::TSpan span(TWilson::PDisk, std::move(TraceId), "PDisk.TryTrimChunk", NWilson::EFlags::AUTO_END, actorSystem);
389+
span.Attribute("size", static_cast<i64>(SizeBytes));
390+
TTryTrimChunk *tryTrim = PDisk->ReqCreator.CreateFromArgs<TTryTrimChunk>(SizeBytes, std::move(span));
388391
PDisk->InputRequest(tryTrim);
389392
delete this;
390393
}

0 commit comments

Comments
 (0)