@@ -74,6 +74,8 @@ class TBlobStorageGroupPutRequest : public TBlobStorageGroupRequestActor {
7474
7575 bool Done = false ;
7676
77+ NLWTrace::TOrbit Orbit;
78+
7779 struct TIncarnationRecord {
7880 ui64 IncarnationGuid = 0 ;
7981 TMonotonic ExpirationTimestamp = TMonotonic::Max();
@@ -134,6 +136,22 @@ class TBlobStorageGroupPutRequest : public TBlobStorageGroupRequestActor {
134136
135137 // Send to VDisks.
136138 for (auto & ev : events) {
139+ if (LWPROBE_ENABLED (DSProxyVPutSent) || Orbit.HasShuttles ()) {
140+ auto vDiskId = std::visit ([](const auto & item) { return VDiskIDFromVDiskID (item->Record .GetVDiskID ()); }, ev);
141+ auto itemsCount = std::visit (overloaded{
142+ [](const std::unique_ptr<TEvBlobStorage::TEvVPut>&) { return 1 ; },
143+ [](const std::unique_ptr<TEvBlobStorage::TEvVMultiPut>& item) { return item->Record .GetItems ().size (); }
144+ }, ev);
145+ LWTRACK (
146+ DSProxyVPutSent, Orbit,
147+ std::visit ([](const auto & item) { return item->Type (); }, ev),
148+ vDiskId.ToStringWOGeneration (),
149+ Info->GetFailDomainOrderNumber (vDiskId),
150+ itemsCount,
151+ std::visit ([](const auto & item) { return item->GetBufferBytes (); }, ev),
152+ accelerate
153+ );
154+ }
137155 std::visit ([&](auto & ev) { SendToQueue (std::move (ev), 0 , TimeStatsEnabled); }, ev);
138156 ++RequestsSent;
139157 if (AccelerateRequestsSent == 0 ) {
@@ -269,7 +287,7 @@ class TBlobStorageGroupPutRequest : public TBlobStorageGroupRequestActor {
269287 HandleIncarnation (TActivationContext::Monotonic (), Info->GetOrderNumber (shortId), record.GetIncarnationGuid ());
270288 }
271289
272- LWPROBE (DSProxyVDiskRequestDuration, TEvBlobStorage::EvVPut, blobId.BlobSize (), blobId.TabletID (),
290+ LWTRACK (DSProxyVDiskRequestDuration, Orbit , TEvBlobStorage::EvVPut, blobId.BlobSize (), blobId.TabletID (),
273291 Info->GroupID .GetRawId (), blobId.Channel (), Info->GetFailDomainOrderNumber (shortId),
274292 GetStartTime (record.GetTimestamps ()),
275293 GetTotalTimeMs (record.GetTimestamps ()),
@@ -343,11 +361,12 @@ class TBlobStorageGroupPutRequest : public TBlobStorageGroupRequestActor {
343361 WaitingVDiskResponseCount[vdisk]--;
344362
345363 // Trace put request duration
346- if (LWPROBE_ENABLED (DSProxyVDiskRequestDuration)) {
364+ if (LWPROBE_ENABLED (DSProxyVDiskRequestDuration) || Orbit. HasShuttles () ) {
347365 for (auto &item : record.GetItems ()) {
348366 TLogoBlobID blobId = LogoBlobIDFromLogoBlobID (item.GetBlobID ());
349367 NKikimrProto::EReplyStatus itemStatus = item.GetStatus ();
350- LWPROBE (DSProxyVDiskRequestDuration, TEvBlobStorage::EvVMultiPut, blobId.BlobSize (), blobId.TabletID (),
368+ LWTRACK (DSProxyVDiskRequestDuration, Orbit,
369+ TEvBlobStorage::EvVMultiPut, blobId.BlobSize (), blobId.TabletID (),
351370 Info->GroupID .GetRawId (), blobId.Channel (), Info->GetFailDomainOrderNumber (shortId),
352371 GetStartTime (record.GetTimestamps ()),
353372 GetTotalTimeMs (record.GetTimestamps ()),
@@ -402,6 +421,7 @@ class TBlobStorageGroupPutRequest : public TBlobStorageGroupRequestActor {
402421 TDuration timeToAccelerate = TDuration::MicroSeconds (timeToAccelerateUs);
403422 TMonotonic now = TActivationContext::Monotonic ();
404423 TMonotonic nextAcceleration = StartTime + timeToAccelerate;
424+ LWTRACK (DSProxyScheduleAccelerate, Orbit, nextAcceleration > now ? (nextAcceleration - now).MicroSeconds () / 1000.0 : 0.0 );
405425 if (nextAcceleration > now) {
406426 ui64 causeIdx = RootCauseTrack.RegisterAccelerate ();
407427 Schedule (nextAcceleration - now, new TEvAccelerate (causeIdx));
@@ -456,7 +476,10 @@ class TBlobStorageGroupPutRequest : public TBlobStorageGroupRequestActor {
456476 ResponsesSent++;
457477 Y_ABORT_UNLESS (ResponsesSent <= PutImpl.Blobs .size ());
458478 RootCauseTrack.RenderTrack (PutImpl.Blobs [blobIdx].Orbit );
459- LWTRACK (DSProxyPutReply, PutImpl.Blobs [blobIdx].Orbit );
479+ if (PutImpl.Blobs [blobIdx].Orbit .HasShuttles ()) {
480+ LWTRACK (DSProxyPutReply, PutImpl.Blobs [blobIdx].Orbit , blobId.ToString (), NKikimrProto::EReplyStatus_Name (status), putResult->ErrorReason );
481+ }
482+ LWTRACK (DSProxyPutReply, Orbit, blobId.ToString (), NKikimrProto::EReplyStatus_Name (status), putResult->ErrorReason );
460483 putResult->Orbit = std::move (PutImpl.Blobs [blobIdx].Orbit );
461484 putResult->WrittenBeyondBarrier = PutImpl.WrittenBeyondBarrier [blobIdx];
462485 putResult->ExecutionRelay = std::move (PutImpl.Blobs [blobIdx].ExecutionRelay );
@@ -600,6 +623,22 @@ class TBlobStorageGroupPutRequest : public TBlobStorageGroupRequestActor {
600623 LWTRACK (DSProxyPutBootstrapStart, PutImpl.Blobs [blobIdx].Orbit );
601624 }
602625
626+ auto getTotalSize = [&]() {
627+ ui64 totalSize = 0 ;
628+ for (auto & blob : PutImpl.Blobs ) {
629+ totalSize += blob.BufferSize ;
630+ }
631+ return totalSize;
632+ };
633+ LWTRACK (
634+ DSProxyPutRequest, Orbit,
635+ Info->GroupID .GetRawId (),
636+ NKikimrBlobStorage::EPutHandleClass_Name (HandleClass),
637+ TEvBlobStorage::TEvPut::TacticName (Tactic),
638+ PutImpl.Blobs .size (),
639+ getTotalSize ()
640+ );
641+
603642 Become (&TBlobStorageGroupPutRequest::StateWait, TDuration::MilliSeconds (DsPutWakeupMs), new TKikimrEvents::TEvWakeup);
604643
605644 PartSets.resize (PutImpl.Blobs .size ());
0 commit comments