11#include " blobstorage.h"
2+ #include < ydb/library/actors/wilson/wilson_span.h>
3+ #include < ydb/library/wilson_ids/wilson.h>
24
35namespace NKikimr {
46
@@ -44,13 +46,49 @@ bool operator<(const TPDiskCategory x, const TPDiskCategory y) {
4446 return std::make_tuple (x.Type (), x.Kind ()) < std::make_tuple (y.Type (), y.Kind ());
4547}
4648
49+ void TEvBlobStorage::TEvPut::ToSpan (NWilson::TSpan& span) const {
50+ span
51+ .Attribute (" Id" , Id.ToString ())
52+ .Attribute (" PutHandleClass" , NKikimrBlobStorage::EPutHandleClass_Name (HandleClass));
53+ }
54+
4755std::unique_ptr<TEvBlobStorage::TEvPutResult> TEvBlobStorage::TEvPut::MakeErrorResponse (
4856 NKikimrProto::EReplyStatus status, const TString& errorReason, TGroupId groupId) {
4957 auto res = std::make_unique<TEvPutResult>(status, Id, TStorageStatusFlags (), groupId, 0 .0f );
5058 res->ErrorReason = errorReason;
5159 return res;
5260}
5361
62+ void TEvBlobStorage::TEvGet::ToSpan (NWilson::TSpan& span) const {
63+ i64 totalSize = 0 ;
64+ for (ui32 i = 0 ; i < QuerySize; ++i) {
65+ const auto & q = Queries[i];
66+ if (q.Shift < q.Id .BlobSize ()) {
67+ totalSize += Min<size_t >(q.Id .BlobSize () - q.Shift , q.Size ? q.Size : Max<size_t >());
68+ }
69+ }
70+
71+ span
72+ .Attribute (" TotalSize" , totalSize)
73+ .Attribute (" GetHandleClass" , NKikimrBlobStorage::EGetHandleClass_Name (GetHandleClass))
74+ .Attribute (" MustRestoreFirst" , MustRestoreFirst)
75+ .Attribute (" IsIndexOnly" , IsIndexOnly);
76+
77+ if (span.GetTraceId ().GetVerbosity () >= TWilson::DsProxyInternals) {
78+ NWilson::TArrayValue queries;
79+ queries.reserve (QuerySize);
80+ for (ui32 i = 0 ; i < QuerySize; ++i) {
81+ const auto & q = Queries[i];
82+ queries.emplace_back (NWilson::TKeyValueList{{
83+ {" Id" , q.Id .ToString ()},
84+ {" Shift" , q.Shift },
85+ {" Size" , q.Size },
86+ }});
87+ }
88+ span.Attribute (" Queries" , std::move (queries));
89+ }
90+ }
91+
5492std::unique_ptr<TEvBlobStorage::TEvGetResult> TEvBlobStorage::TEvGet::MakeErrorResponse (
5593 NKikimrProto::EReplyStatus status, const TString& errorReason, TGroupId groupId) {
5694 auto res = std::make_unique<TEvGetResult>(status, QuerySize, groupId);
@@ -67,55 +105,128 @@ std::unique_ptr<TEvBlobStorage::TEvGetResult> TEvBlobStorage::TEvGet::MakeErrorR
67105 return res;
68106}
69107
108+ void TEvBlobStorage::TEvBlock::ToSpan (NWilson::TSpan& span) const {
109+ span
110+ .Attribute (" TabletId" , ::ToString (TabletId))
111+ .Attribute (" Generation" , Generation);
112+ }
113+
70114std::unique_ptr<TEvBlobStorage::TEvBlockResult> TEvBlobStorage::TEvBlock::MakeErrorResponse (
71115 NKikimrProto::EReplyStatus status, const TString& errorReason, TGroupId /* groupId*/ ) {
72116 auto res = std::make_unique<TEvBlockResult>(status);
73117 res->ErrorReason = errorReason;
74118 return res;
75119}
76120
121+ void TEvBlobStorage::TEvPatch::ToSpan (NWilson::TSpan& span) const {
122+ span
123+ .Attribute (" OriginalGroupId" , OriginalGroupId)
124+ .Attribute (" OriginalId" , OriginalId.ToString ())
125+ .Attribute (" PatchedId" , PatchedId.ToString ());
126+ }
127+
77128std::unique_ptr<TEvBlobStorage::TEvPatchResult> TEvBlobStorage::TEvPatch::MakeErrorResponse (
78129 NKikimrProto::EReplyStatus status, const TString& errorReason, TGroupId groupId) {
79130 auto res = std::make_unique<TEvPatchResult>(status, PatchedId, TStorageStatusFlags (), groupId, 0 .0f );
80131 res->ErrorReason = errorReason;
81132 return res;
82133}
83134
135+ void TEvBlobStorage::TEvInplacePatch::ToSpan (NWilson::TSpan& /* span*/ ) const {
136+ }
137+
84138std::unique_ptr<TEvBlobStorage::TEvInplacePatchResult> TEvBlobStorage::TEvInplacePatch::MakeErrorResponse (
85139 NKikimrProto::EReplyStatus status, const TString& errorReason) {
86140 auto res = std::make_unique<TEvInplacePatchResult>(status, PatchedId, TStorageStatusFlags (), 0 .0f );
87141 res->ErrorReason = errorReason;
88142 return res;
89143}
90144
145+ void TEvBlobStorage::TEvDiscover::ToSpan (NWilson::TSpan& span) const {
146+ span
147+ .Attribute (" TabletId" , ::ToString (TabletId))
148+ .Attribute (" ReadBody" , ReadBody);
149+ }
150+
91151std::unique_ptr<TEvBlobStorage::TEvDiscoverResult> TEvBlobStorage::TEvDiscover::MakeErrorResponse (
92152 NKikimrProto::EReplyStatus status, const TString& errorReason, TGroupId/* groupId*/ ) {
93153 auto res = std::make_unique<TEvDiscoverResult>(status, MinGeneration, 0 );
94154 res->ErrorReason = errorReason;
95155 return res;
96156}
97157
158+ void TEvBlobStorage::TEvRange::ToSpan (NWilson::TSpan& span) const {
159+ span
160+ .Attribute (" TabletId" , ::ToString (TabletId))
161+ .Attribute (" From" , From.ToString ())
162+ .Attribute (" To" , To.ToString ())
163+ .Attribute (" MustRestoreFirst" , MustRestoreFirst)
164+ .Attribute (" IsIndexOnly" , IsIndexOnly);
165+ }
166+
98167std::unique_ptr<TEvBlobStorage::TEvRangeResult> TEvBlobStorage::TEvRange::MakeErrorResponse (
99168 NKikimrProto::EReplyStatus status, const TString& errorReason, TGroupId groupId) {
100169 auto res = std::make_unique<TEvRangeResult>(status, From, To, groupId);
101170 res->ErrorReason = errorReason;
102171 return res;
103172}
104173
174+ void TEvBlobStorage::TEvCollectGarbage::ToSpan (NWilson::TSpan& span) const {
175+ span
176+ .Attribute (" TabletId" , ::ToString (TabletId))
177+ .Attribute (" RecordGeneration" , RecordGeneration)
178+ .Attribute (" PerGenerationCounter" , PerGenerationCounter)
179+ .Attribute (" Channel" , Channel);
180+
181+ if (Collect) {
182+ span
183+ .Attribute (" CollectGeneration" , CollectGeneration)
184+ .Attribute (" CollectStep" , CollectStep);
185+ }
186+
187+ if (span.GetTraceId ().GetVerbosity () >= TWilson::DsProxyInternals) {
188+ auto vector = [&](const auto & name, const auto & v) {
189+ if (v) {
190+ NWilson::TArrayValue items;
191+ items.reserve (v->size ());
192+ for (const TLogoBlobID& id : *v) {
193+ items.emplace_back (id.ToString ());
194+ }
195+ span.Attribute (name, std::move (items));
196+ }
197+ };
198+ vector (" Keep" , Keep);
199+ vector (" DoNotKeep" , DoNotKeep);
200+ } else {
201+ if (Keep) {
202+ span.Attribute (" NumKeep" , static_cast <i64 >(Keep->size ()));
203+ }
204+ if (DoNotKeep) {
205+ span.Attribute (" NumDoNotKeep" , static_cast <i64 >(DoNotKeep->size ()));
206+ }
207+ }
208+ }
209+
105210std::unique_ptr<TEvBlobStorage::TEvCollectGarbageResult> TEvBlobStorage::TEvCollectGarbage::MakeErrorResponse (
106211 NKikimrProto::EReplyStatus status, const TString& errorReason, TGroupId /* groupId*/ ) {
107212 auto res = std::make_unique<TEvCollectGarbageResult>(status, TabletId, RecordGeneration, PerGenerationCounter, Channel);
108213 res->ErrorReason = errorReason;
109214 return res;
110215}
111216
217+ void TEvBlobStorage::TEvStatus::ToSpan (NWilson::TSpan& /* span*/ ) const
218+ {}
219+
112220std::unique_ptr<TEvBlobStorage::TEvStatusResult> TEvBlobStorage::TEvStatus::MakeErrorResponse (
113221 NKikimrProto::EReplyStatus status, const TString& errorReason, TGroupId /* groupId*/ ) {
114222 auto res = std::make_unique<TEvStatusResult>(status, TStorageStatusFlags ());
115223 res->ErrorReason = errorReason;
116224 return res;
117225}
118226
227+ void TEvBlobStorage::TEvAssimilate::ToSpan (NWilson::TSpan& /* span*/ ) const
228+ {}
229+
119230std::unique_ptr<TEvBlobStorage::TEvAssimilateResult> TEvBlobStorage::TEvAssimilate::MakeErrorResponse (
120231 NKikimrProto::EReplyStatus status, const TString& errorReason, TGroupId/* groupId*/ ) {
121232 return std::make_unique<TEvBlobStorage::TEvAssimilateResult>(status, errorReason);
0 commit comments