Skip to content

Commit daf008b

Browse files
authored
Merge 81282a2 into cea9d83
2 parents cea9d83 + 81282a2 commit daf008b

33 files changed

+501
-108
lines changed

ydb/core/blobstorage/dsproxy/dsproxy.h

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ constexpr bool DefaultEnableVPatch = false;
5757

5858
constexpr float DefaultSlowDiskThreshold = 2;
5959
constexpr float DefaultPredictedDelayMultiplier = 1;
60+
constexpr TDuration DefaultLongRequestThreshold = TDuration::Seconds(50);
6061

6162
constexpr bool WithMovingPatchRequestToStaticNode = true;
6263

@@ -205,7 +206,7 @@ class TBlobStorageGroupRequestActor : public TActor<TBlobStorageGroupRequestActo
205206
TIntrusivePtr<TBlobStorageGroupProxyMon> Mon;
206207
TActorId Source = TActorId{};
207208
ui64 Cookie = 0;
208-
TInstant Now;
209+
TMonotonic Now;
209210
TIntrusivePtr<TStoragePoolCounters>& StoragePoolCounters;
210211
ui32 RestartCounter;
211212
NWilson::TTraceId TraceId = {};
@@ -234,10 +235,10 @@ class TBlobStorageGroupRequestActor : public TActor<TBlobStorageGroupRequestActo
234235
, ParentSpan(TWilson::BlobStorage, std::move(params.Common.TraceId), params.TypeSpecific.Name)
235236
, RestartCounter(params.Common.RestartCounter)
236237
, CostModel(GroupQueues->CostModel)
238+
, RequestStartTime(params.Common.Now)
237239
, Source(params.Common.Source)
238240
, Cookie(params.Common.Cookie)
239241
, LatencyQueueKind(params.Common.LatencyQueueKind)
240-
, RequestStartTime(params.Common.Now)
241242
, RacingDomains(&Info->GetTopology())
242243
, ExecutionRelay(std::move(params.Common.ExecutionRelay))
243244
{
@@ -323,6 +324,7 @@ class TBlobStorageGroupRequestActor : public TActor<TBlobStorageGroupRequestActo
323324
bool Dead = false;
324325
const ui32 RestartCounter = 0;
325326
std::shared_ptr<const TCostModel> CostModel;
327+
const TMonotonic RequestStartTime;
326328

327329
private:
328330
const TActorId Source;
@@ -331,7 +333,6 @@ class TBlobStorageGroupRequestActor : public TActor<TBlobStorageGroupRequestActo
331333
ui32 RequestsInFlight = 0;
332334
std::unique_ptr<IEventBase> Response;
333335
const TMaybe<TGroupStat::EKind> LatencyQueueKind;
334-
const TInstant RequestStartTime;
335336
THPTimer Timer;
336337
std::deque<std::unique_ptr<IEventHandle>> PostponedQ;
337338
TBlobStorageGroupInfo::TGroupFailDomains RacingDomains; // a set of domains we've received RACE from
@@ -354,8 +355,7 @@ struct TBlobStorageGroupRangeParameters {
354355
TBlobStorageGroupRequestActor::TTypeSpecificParameters TypeSpecific = {
355356
.LogComponent = NKikimrServices::BS_PROXY_RANGE,
356357
.Name = "DSProxy.Range",
357-
.Activity = NKikimrServices::TActivity::BS_GROUP_RANGE
358-
,
358+
.Activity = NKikimrServices::TActivity::BS_GROUP_RANGE,
359359
};
360360
};
361361
IActor* CreateBlobStorageGroupRangeRequest(TBlobStorageGroupRangeParameters params);
@@ -371,6 +371,7 @@ struct TBlobStorageGroupPutParameters {
371371
TDiskResponsivenessTracker::TPerDiskStatsPtr Stats;
372372
bool EnableRequestMod3x3ForMinLatency;
373373
TAccelerationParams AccelerationParams;
374+
TDuration LongRequestThreshold;
374375
};
375376
IActor* CreateBlobStorageGroupPutRequest(TBlobStorageGroupPutParameters params);
376377

@@ -389,6 +390,7 @@ struct TBlobStorageGroupMultiPutParameters {
389390
TEvBlobStorage::TEvPut::ETactic Tactic;
390391
bool EnableRequestMod3x3ForMinLatency;
391392
TAccelerationParams AccelerationParams;
393+
TDuration LongRequestThreshold;
392394

393395
static ui32 CalculateRestartCounter(TBatchedVec<TEvBlobStorage::TEvPut::TPtr>& events) {
394396
ui32 maxRestarts = 0;
@@ -409,6 +411,7 @@ struct TBlobStorageGroupGetParameters {
409411
};
410412
TNodeLayoutInfoPtr NodeLayout;
411413
TAccelerationParams AccelerationParams;
414+
TDuration LongRequestThreshold;
412415
};
413416
IActor* CreateBlobStorageGroupGetRequest(TBlobStorageGroupGetParameters params);
414417

@@ -516,6 +519,7 @@ struct TBlobStorageProxyParameters {
516519
const TControlWrapper& EnableVPatch;
517520
const TControlWrapper& SlowDiskThreshold;
518521
const TControlWrapper& PredictedDelayMultiplier;
522+
const TControlWrapper& LongRequestThresholdMs = TControlWrapper(DefaultLongRequestThreshold.MilliSeconds(), 1, 1'000'000);
519523
};
520524

521525
IActor* CreateBlobStorageGroupProxyConfigured(TIntrusivePtr<TBlobStorageGroupInfo>&& info,

ydb/core/blobstorage/dsproxy/dsproxy_blackboard.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
#include "defs.h"
33

44
#include "dsproxy.h"
5+
#include "request_history.h"
56

67
#include <ydb/core/blobstorage/base/batched_vec.h>
78
#include <ydb/core/blobstorage/groupinfo/blobstorage_groupinfo.h>

ydb/core/blobstorage/dsproxy/dsproxy_block.cpp

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ class TBlobStorageGroupBlockRequest : public TBlobStorageGroupRequestActor {
1616
const ui32 Generation;
1717
const TInstant Deadline;
1818
const ui64 IssuerGuid;
19-
TInstant StartTime;
2019
bool SeenAlready = false;
2120

2221
TGroupQuorumTracker QuorumTracker;
@@ -99,7 +98,7 @@ class TBlobStorageGroupBlockRequest : public TBlobStorageGroupRequestActor {
9998
std::unique_ptr<TEvBlobStorage::TEvBlockResult> result(new TEvBlobStorage::TEvBlockResult(status));
10099
result->ErrorReason = ErrorReason;
101100
DSP_LOG_LOG_S(PriorityForStatusResult(status), "DSPB04", "Result# " << result->Print(false));
102-
Mon->CountBlockResponseTime(TActivationContext::Now() - StartTime);
101+
Mon->CountBlockResponseTime(TActivationContext::Monotonic() - RequestStartTime);
103102
return SendResponseAndDie(std::move(result));
104103
}
105104

@@ -138,7 +137,6 @@ class TBlobStorageGroupBlockRequest : public TBlobStorageGroupRequestActor {
138137
, Generation(params.Common.Event->Generation)
139138
, Deadline(params.Common.Event->Deadline)
140139
, IssuerGuid(params.Common.Event->IssuerGuid)
141-
, StartTime(params.Common.Now)
142140
, QuorumTracker(Info.Get())
143141
{}
144142

ydb/core/blobstorage/dsproxy/dsproxy_collect.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ class TBlobStorageGroupCollectGarbageRequest : public TBlobStorageGroupRequestAc
2727
const bool Decommission;
2828

2929
TGroupQuorumTracker QuorumTracker;
30-
TInstant StartTime;
3130

3231
ui32 RequestsSent = 0;
3332
ui32 ResponsesReceived = 0;
@@ -155,7 +154,6 @@ class TBlobStorageGroupCollectGarbageRequest : public TBlobStorageGroupRequestAc
155154
, Collect(params.Common.Event->Collect)
156155
, Decommission(params.Common.Event->Decommission)
157156
, QuorumTracker(Info.Get())
158-
, StartTime(params.Common.Now)
159157
{}
160158

161159
void Bootstrap() override {

ydb/core/blobstorage/dsproxy/dsproxy_discover.cpp

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -272,7 +272,6 @@ class TBlobStorageGroupDiscoverRequest : public TBlobStorageGroupRequestActor {
272272
const bool ReadBody;
273273
const bool DiscoverBlockedGeneration;
274274
const TInstant Deadline;
275-
const TInstant StartTime;
276275

277276
TGroupResponseTracker GroupResponseTracker;
278277
std::unique_ptr<TEvBlobStorage::TEvDiscoverResult> PendingResult;
@@ -295,7 +294,7 @@ class TBlobStorageGroupDiscoverRequest : public TBlobStorageGroupRequestActor {
295294
template<typename TPtr>
296295
void SendResult(TPtr& result) {
297296
Y_ABORT_UNLESS(result);
298-
const TDuration duration = TActivationContext::Now() - StartTime;
297+
const TDuration duration = TActivationContext::Monotonic() - RequestStartTime;
299298
Mon->CountDiscoverResponseTime(duration);
300299
const bool success = result->Status == NKikimrProto::OK;
301300
LWPROBE(DSProxyRequestDuration, TEvBlobStorage::EvDiscover, 0, duration.SecondsFloat() * 1000.0,
@@ -876,7 +875,6 @@ class TBlobStorageGroupDiscoverRequest : public TBlobStorageGroupRequestActor {
876875
, ReadBody(params.Common.Event->ReadBody)
877876
, DiscoverBlockedGeneration(params.Common.Event->DiscoverBlockedGeneration)
878877
, Deadline(params.Common.Event->Deadline)
879-
, StartTime(params.Common.Now)
880878
, GroupResponseTracker(Info)
881879
, IsGetBlockDone(!DiscoverBlockedGeneration)
882880
, ForceBlockedGeneration(params.Common.Event->ForceBlockedGeneration)

ydb/core/blobstorage/dsproxy/dsproxy_discover_m3dc.cpp

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -424,7 +424,6 @@ class TDiscoverWorker {
424424
class TBlobStorageGroupMirror3dcDiscoverRequest : public TBlobStorageGroupRequestActor {
425425
const ui64 TabletId;
426426
const ui32 MinGeneration;
427-
const TInstant StartTime;
428427
const TInstant Deadline;
429428
const bool ReadBody;
430429
const bool DiscoverBlockedGeneration;
@@ -461,7 +460,6 @@ class TBlobStorageGroupMirror3dcDiscoverRequest : public TBlobStorageGroupReques
461460
: TBlobStorageGroupRequestActor(params)
462461
, TabletId(params.Common.Event->TabletId)
463462
, MinGeneration(params.Common.Event->MinGeneration)
464-
, StartTime(params.Common.Now)
465463
, Deadline(params.Common.Event->Deadline)
466464
, ReadBody(params.Common.Event->ReadBody)
467465
, DiscoverBlockedGeneration(params.Common.Event->DiscoverBlockedGeneration)
@@ -651,7 +649,7 @@ class TBlobStorageGroupMirror3dcDiscoverRequest : public TBlobStorageGroupReques
651649
DSP_LOG_DEBUG_S("DSPDM03", "Response# " << response->ToString());
652650

653651
Y_ABORT_UNLESS(!Responded);
654-
const TDuration duration = TActivationContext::Now() - StartTime;
652+
const TDuration duration = TActivationContext::Monotonic() - RequestStartTime;
655653
LWPROBE(DSProxyRequestDuration, TEvBlobStorage::EvDiscover, 0, duration.SecondsFloat() * 1000.0,
656654
TabletId, Info->GroupID.GetRawId(), TLogoBlobID::MaxChannel, "", true);
657655
SendResponseAndDie(std::move(response));
@@ -664,7 +662,7 @@ class TBlobStorageGroupMirror3dcDiscoverRequest : public TBlobStorageGroupReques
664662

665663
Y_ABORT_UNLESS(!Responded);
666664
Y_ABORT_UNLESS(status != NKikimrProto::OK);
667-
const TDuration duration = TActivationContext::Now() - StartTime;
665+
const TDuration duration = TActivationContext::Monotonic() - RequestStartTime;
668666
LWPROBE(DSProxyRequestDuration, TEvBlobStorage::EvDiscover, 0, duration.SecondsFloat() * 1000.0,
669667
TabletId, Info->GroupID.GetRawId(), TLogoBlobID::MaxChannel, "", false);
670668
std::unique_ptr<TEvBlobStorage::TEvDiscoverResult> response(new TEvBlobStorage::TEvDiscoverResult(

ydb/core/blobstorage/dsproxy/dsproxy_discover_m3of4.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ namespace NKikimr {
1111
class TBlobStorageGroupMirror3of4DiscoverRequest : public TBlobStorageGroupRequestActor {
1212
const ui64 TabletId;
1313
const ui32 MinGeneration;
14-
const TInstant StartTime;
1514
const TInstant Deadline;
1615
const bool ReadBody;
1716
const bool DiscoverBlockedGeneration;
@@ -31,7 +30,6 @@ class TBlobStorageGroupMirror3of4DiscoverRequest : public TBlobStorageGroupReque
3130
: TBlobStorageGroupRequestActor(params)
3231
, TabletId(params.Common.Event->TabletId)
3332
, MinGeneration(params.Common.Event->MinGeneration)
34-
, StartTime(params.Common.Now)
3533
, Deadline(params.Common.Event->Deadline)
3634
, ReadBody(params.Common.Event->ReadBody)
3735
, DiscoverBlockedGeneration(params.Common.Event->DiscoverBlockedGeneration)

ydb/core/blobstorage/dsproxy/dsproxy_get.cpp

Lines changed: 32 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
#include "dsproxy.h"
22
#include "dsproxy_mon.h"
33
#include "root_cause.h"
4+
#include <ydb/core/blobstorage/dsproxy/dsproxy_request_reporting.h>
45
#include <ydb/core/blobstorage/vdisk/common/vdisk_events.h>
56
#include <ydb/core/blobstorage/lwtrace_probes/blobstorage_probes.h>
7+
#include <ydb/core/util/stlog.h>
68
#include <library/cpp/containers/stack_vector/stack_vec.h>
79
#include <library/cpp/digest/crc32c/crc32c.h>
810
#include <util/generic/set.h>
@@ -36,8 +38,7 @@ class TBlobStorageGroupGetRequest : public TBlobStorageGroupRequestActor {
3638
TRootCause RootCauseTrack;
3739
NLWTrace::TOrbit Orbit;
3840
const TInstant Deadline;
39-
TInstant StartTime;
40-
TInstant StartTimePut;
41+
TMonotonic StartTimePut;
4142
ui32 RequestsSent = 0;
4243
ui32 ResponsesReceived = 0;
4344
ui32 GroupSize;
@@ -58,6 +59,7 @@ class TBlobStorageGroupGetRequest : public TBlobStorageGroupRequestActor {
5859
bool IsPutAccelerateScheduled = false;
5960

6061
TAccelerationParams AccelerationParams;
62+
TDuration LongRequestThreshold;
6163

6264
void Handle(TEvAccelerateGet::TPtr &ev) {
6365
IsGetAccelerateScheduled = false;
@@ -77,6 +79,7 @@ class TBlobStorageGroupGetRequest : public TBlobStorageGroupRequestActor {
7779
}
7880
GetsAccelerated++;
7981

82+
GetImpl.History.AddAcceleration(false);
8083
TDeque<std::unique_ptr<TEvBlobStorage::TEvVGet>> vGets;
8184
TDeque<std::unique_ptr<TEvBlobStorage::TEvVPut>> vPuts;
8285
GetImpl.AccelerateGet(LogCtx, GetUnresponsiveDisksMask(), vGets, vPuts);
@@ -92,6 +95,7 @@ class TBlobStorageGroupGetRequest : public TBlobStorageGroupRequestActor {
9295
}
9396
PutsAccelerated++;
9497

98+
GetImpl.History.AddAcceleration(true);
9599
TDeque<std::unique_ptr<TEvBlobStorage::TEvVGet>> vGets;
96100
TDeque<std::unique_ptr<TEvBlobStorage::TEvVPut>> vPuts;
97101
GetImpl.AcceleratePut(LogCtx, GetUnresponsiveDisksMask(), vGets, vPuts);
@@ -111,7 +115,7 @@ class TBlobStorageGroupGetRequest : public TBlobStorageGroupRequestActor {
111115
if (vPuts.size()) {
112116
if (!IsPutStarted) {
113117
IsPutStarted = true;
114-
StartTimePut = TActivationContext::Now();
118+
StartTimePut = TActivationContext::Monotonic();
115119
}
116120
}
117121
for (size_t i = 0; i < vGets.size(); ++i) {
@@ -148,6 +152,7 @@ class TBlobStorageGroupGetRequest : public TBlobStorageGroupRequestActor {
148152
const ui64 cookie = ev->Record.GetCookie();
149153
SendToQueue(std::move(ev), cookie);
150154
}
155+
GetImpl.History.AddAllWaiting();
151156
}
152157

153158
ui32 CountDisksWithActiveRequests() {
@@ -326,8 +331,8 @@ class TBlobStorageGroupGetRequest : public TBlobStorageGroupRequestActor {
326331
if (CountDisksWithActiveRequests() <= 2) {
327332
ui64 timeToAccelerateUs = GetImpl.GetTimeToAccelerateGetNs(LogCtx) / 1000;
328333
TDuration timeToAccelerate = TDuration::MicroSeconds(timeToAccelerateUs);
329-
TInstant now = TActivationContext::Now();
330-
TInstant nextAcceleration = StartTime + timeToAccelerate;
334+
TMonotonic now = TActivationContext::Monotonic();
335+
TMonotonic nextAcceleration = RequestStartTime + timeToAccelerate;
331336
if (nextAcceleration > now) {
332337
ui64 causeIdx = RootCauseTrack.RegisterAccelerate();
333338
Schedule(nextAcceleration - now, new TEvAccelerateGet(causeIdx));
@@ -345,8 +350,8 @@ class TBlobStorageGroupGetRequest : public TBlobStorageGroupRequestActor {
345350
if (CountDisksWithActiveRequests() <= 2) {
346351
ui64 timeToAccelerateUs = GetImpl.GetTimeToAcceleratePutNs(LogCtx) / 1000;
347352
TDuration timeToAccelerate = TDuration::MicroSeconds(timeToAccelerateUs);
348-
TInstant now = TActivationContext::Now();
349-
TInstant nextAcceleration = StartTime + timeToAccelerate;
353+
TMonotonic now = TActivationContext::Monotonic();
354+
TMonotonic nextAcceleration = RequestStartTime + timeToAccelerate;
350355
if (nextAcceleration > now) {
351356
ui64 causeIdx = RootCauseTrack.RegisterAccelerate();
352357
Schedule(nextAcceleration - now, new TEvAcceleratePut(causeIdx));
@@ -359,9 +364,10 @@ class TBlobStorageGroupGetRequest : public TBlobStorageGroupRequestActor {
359364
}
360365

361366
void SendReplyAndDie(TAutoPtr<TEvBlobStorage::TEvGetResult> &evResult) {
362-
const TInstant now = TActivationContext::Now();
363-
const TDuration duration = (now > StartTime) ? (now - StartTime) : TDuration::MilliSeconds(0);
364-
Mon->CountGetResponseTime(Info->GetDeviceType(), GetImpl.GetHandleClass(), evResult->PayloadSizeBytes(), duration);
367+
const TMonotonic now = TActivationContext::Monotonic();
368+
const TDuration duration = now - RequestStartTime;
369+
NKikimrBlobStorage::EGetHandleClass handleClass = GetImpl.GetHandleClass();
370+
Mon->CountGetResponseTime(Info->GetDeviceType(), handleClass, evResult->PayloadSizeBytes(), duration);
365371
*Mon->ActiveGetCapacity -= ReportedBytes;
366372
ReportedBytes = 0;
367373
bool success = evResult->Status == NKikimrProto::OK;
@@ -377,9 +383,22 @@ class TBlobStorageGroupGetRequest : public TBlobStorageGroupRequestActor {
377383
LWTRACK(DSProxyGetReply, Orbit);
378384
evResult->Orbit = std::move(Orbit);
379385
LWPROBE(DSProxyRequestDuration, TEvBlobStorage::EvGet, requestSize, duration.SecondsFloat() * 1000.0, tabletId,
380-
evResult->GroupId, channel, NKikimrBlobStorage::EGetHandleClass_Name(GetImpl.GetHandleClass()),
386+
evResult->GroupId, channel, NKikimrBlobStorage::EGetHandleClass_Name(handleClass),
381387
success);
382388
DSP_LOG_LOG_S(success ? NLog::PRI_INFO : NLog::PRI_NOTICE, "BPG68", "Result# " << evResult->Print(false));
389+
390+
if (TActivationContext::Monotonic() - RequestStartTime >= LongRequestThreshold) {
391+
if (AllowToReport(GetImpl.GetHandleClass())) {
392+
STLOG(PRI_WARN, BS_PROXY_GET, BPG71, "Long TEvGet request detected", \
393+
(LongRequestThreshold, LongRequestThreshold), \
394+
(GroupId, Info->GroupID), \
395+
(SubrequestsCount, evResult->ResponseSz), \
396+
(RequestTotalSize, requestSize), \
397+
(HandleClass, NKikimrBlobStorage::EGetHandleClass_Name(handleClass)), \
398+
(RestartCounter, RestartCounter), \
399+
(History, GetImpl.PrintHistory()));
400+
}
401+
}
383402
return SendResponseAndDie(std::unique_ptr<TEvBlobStorage::TEvGetResult>(evResult.Release()));
384403
}
385404

@@ -404,11 +423,11 @@ class TBlobStorageGroupGetRequest : public TBlobStorageGroupRequestActor {
404423
params.AccelerationParams, LogCtx.RequestPrefix)
405424
, Orbit(std::move(params.Common.Event->Orbit))
406425
, Deadline(params.Common.Event->Deadline)
407-
, StartTime(params.Common.Now)
408-
, StartTimePut(StartTime)
426+
, StartTimePut(RequestStartTime)
409427
, GroupSize(Info->Type.BlobSubgroupSize())
410428
, ReportedBytes(0)
411429
, AccelerationParams(params.AccelerationParams)
430+
, LongRequestThreshold(params.LongRequestThreshold)
412431
{
413432
ReportBytes(sizeof(*this));
414433
MaxSaneRequests = params.Common.Event->QuerySize * Info->Type.TotalPartCount() *

ydb/core/blobstorage/dsproxy/dsproxy_get_impl.cpp

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -276,9 +276,14 @@ void TGetImpl::PrepareRequests(TLogContext &logCtx, TDeque<std::unique_ptr<TEvBl
276276

277277
for (auto& vget : gets) {
278278
if (vget) {
279-
DSP_LOG_DEBUG_SX(logCtx, "BPG14", "Send get to orderNumber# "
280-
<< Info->GetTopology().GetOrderNumber(VDiskIDFromVDiskID(vget->Record.GetVDiskID()))
281-
<< " vget# " << vget->ToString());
279+
ui32 orderNumber = Info->GetTopology().GetOrderNumber(VDiskIDFromVDiskID(vget->Record.GetVDiskID()));
280+
DSP_LOG_DEBUG_SX(logCtx, "BPG14", "Send get to orderNumber# " << orderNumber << " vget# " << vget->ToString());
281+
if (vget->Record.ExtremeQueriesSize() > 0) {
282+
TLogoBlobID blobId = LogoBlobIDFromLogoBlobID(vget->Record.GetExtremeQueries(0).GetId());
283+
History.AddVGetToWaitingList(blobId.PartId(), vget->Record.ExtremeQueriesSize(), orderNumber);
284+
} else {
285+
History.AddVGetToWaitingList(THistory::InvalidPartId, 0, orderNumber);
286+
}
282287
outVGets.push_back(std::move(vget));
283288
++RequestIndex;
284289
}
@@ -295,6 +300,7 @@ void TGetImpl::PrepareVPuts(TLogContext &logCtx, TDeque<std::unique_ptr<TEvBlobS
295300
auto vput = std::make_unique<TEvBlobStorage::TEvVPut>(put.Id, put.Buffer, vdiskId, true, nullptr, Deadline,
296301
Blackboard.PutHandleClass);
297302
DSP_LOG_DEBUG_SX(logCtx, "BPG15", "Send put to orderNumber# " << put.OrderNumber << " vput# " << vput->ToString());
303+
History.AddVPutToWaitingList(put.Id.PartId(), 1, put.OrderNumber);
298304
outVPuts.push_back(std::move(vput));
299305
++VPutRequests;
300306
}
@@ -371,6 +377,7 @@ void TGetImpl::OnVPutResult(TLogContext &logCtx, TEvBlobStorage::TEvVPutResult &
371377
Y_ABORT("Unexpected status# %s", NKikimrProto::EReplyStatus_Name(status).data());
372378
}
373379
Step(logCtx, outVGets, outVPuts, outGetResult);
380+
History.AddVPutResult(orderNumber, status, record.GetErrorReason());
374381
}
375382

376383
}//NKikimr

0 commit comments

Comments
 (0)