@@ -3935,7 +3935,7 @@ void TPDisk::ProgressShredState() {
3935
3935
<< " sends compact request to VDisk# " << data.VDiskId
3936
3936
<< " ownerId# " << ownerId
3937
3937
<< " request# " << compactRequest->ToString ());
3938
- PCtx->ActorSystem ->Send (data.CutLogId , compactRequest.Release ());
3938
+ PCtx->ActorSystem ->Send (new IEventHandle ( data.CutLogId , PCtx-> PDiskActor , compactRequest.Release () ));
3939
3939
data.LastShredGeneration = ShredGeneration;
3940
3940
data.ShredState = TOwnerData::VDISK_SHRED_STATE_COMPACT_REQUESTED;
3941
3941
}
@@ -3984,7 +3984,7 @@ void TPDisk::ProgressShredState() {
3984
3984
<< " sends shred request to VDisk# " << data.VDiskId
3985
3985
<< " ownerId# " << ownerId
3986
3986
<< " request# " << shredRequest->ToString ());
3987
- PCtx->ActorSystem ->Send (data.CutLogId , shredRequest.Release ());
3987
+ PCtx->ActorSystem ->Send (new IEventHandle ( data.CutLogId , PCtx-> PDiskActor , shredRequest.Release () ));
3988
3988
data.ShredState = TOwnerData::VDISK_SHRED_STATE_SHRED_REQUESTED;
3989
3989
data.LastShredGeneration = ShredGeneration;
3990
3990
}
@@ -4011,8 +4011,9 @@ void TPDisk::ProgressShredState() {
4011
4011
LOG_NOTICE_S (*PCtx->ActorSystem , NKikimrServices::BS_PDISK_SHRED,
4012
4012
" Shred request is finished at PDisk# " << PCtx->PDiskId
4013
4013
<< " ShredGeneration# " << ShredGeneration);
4014
- for (TActorId &requester : ShredRequesters) {
4015
- PCtx->ActorSystem ->Send (requester, new TEvShredPDiskResult (NKikimrProto::OK, ShredGeneration, " " ));
4014
+ for (auto & [requester, cookie] : ShredRequesters) {
4015
+ PCtx->ActorSystem ->Send (new IEventHandle (requester, PCtx->PDiskActor , new TEvShredPDiskResult (
4016
+ NKikimrProto::OK, ShredGeneration, " " ), 0 , cookie));
4016
4017
}
4017
4018
ShredRequesters.clear ();
4018
4019
}
@@ -4029,27 +4030,28 @@ void TPDisk::ProcessShredPDisk(TShredPDisk& request) {
4029
4030
TGuard<TMutex> guard (StateMutex);
4030
4031
if (request.ShredGeneration < ShredGeneration) {
4031
4032
guard.Release ();
4032
- PCtx->ActorSystem ->Send (request.Sender ,
4033
- new TEvShredPDiskResult ( NKikimrProto::RACE, request.ShredGeneration ,
4034
- " A shred request with a higher generation is already in progress " ));
4033
+ PCtx->ActorSystem ->Send (new IEventHandle ( request.Sender , PCtx-> PDiskActor , new TEvShredPDiskResult (
4034
+ NKikimrProto::RACE, request.ShredGeneration , " A shred request with a higher generation is already in progress " ) ,
4035
+ 0 , request. Cookie ));
4035
4036
return ;
4036
4037
}
4037
4038
if (request.ShredGeneration == ShredGeneration) {
4038
4039
// Do nothing, since we already have a shred request with the same generation.
4039
4040
// Just add the sender to the list of requesters.
4040
- ShredRequesters.push_back (request.Sender );
4041
+ ShredRequesters.emplace_back (request.Sender , request. Cookie );
4041
4042
return ;
4042
4043
}
4043
4044
// ShredGeneration > request.ShredGeneration
4044
4045
if (ShredRequesters.size () > 0 ) {
4045
- for (TActorId &requester : ShredRequesters) {
4046
- PCtx->ActorSystem ->Send (requester, new TEvShredPDiskResult (NKikimrProto::RACE, request.ShredGeneration ,
4047
- " A shred request with a higher generation is received" ));
4046
+ for (auto & [requester, cookie] : ShredRequesters) {
4047
+ PCtx->ActorSystem ->Send (new IEventHandle (requester, PCtx->PDiskActor , new TEvShredPDiskResult (
4048
+ NKikimrProto::RACE, request.ShredGeneration , " A shred request with a higher generation is received" ), 0 ,
4049
+ cookie));
4048
4050
}
4049
4051
ShredRequesters.clear ();
4050
4052
}
4051
4053
ShredGeneration = request.ShredGeneration ;
4052
- ShredRequesters.push_back (request.Sender );
4054
+ ShredRequesters.emplace_back (request.Sender , request. Cookie );
4053
4055
ShredState = EShredStateSendPreShredCompactVDisk;
4054
4056
ProgressShredState ();
4055
4057
}
@@ -4094,7 +4096,7 @@ void TPDisk::ProcessPreShredCompactVDiskResult(TPreShredCompactVDiskResult& requ
4094
4096
}
4095
4097
if (request.Status != NKikimrProto::OK) {
4096
4098
ShredState = EShredStateFailed;
4097
- for (TActorId & requester : ShredRequesters) {
4099
+ for (auto & [ requester, cookie] : ShredRequesters) {
4098
4100
TStringStream str;
4099
4101
str << " Shred request failed at PDisk# " << PCtx->PDiskId
4100
4102
<< " for shredGeneration# " << request.ShredGeneration
@@ -4103,8 +4105,8 @@ void TPDisk::ProcessPreShredCompactVDiskResult(TPreShredCompactVDiskResult& requ
4103
4105
<< " replied with PreShredCompactVDiskResult status# " << request.Status
4104
4106
<< " and ErrorReason# " << request.ErrorReason ;
4105
4107
LOG_ERROR_S (*PCtx->ActorSystem , NKikimrServices::BS_PDISK_SHRED, str.Str ());
4106
- PCtx->ActorSystem ->Send (requester, new TEvShredPDiskResult (NKikimrProto::ERROR, request. ShredGeneration ,
4107
- str.Str ()));
4108
+ PCtx->ActorSystem ->Send (new IEventHandle ( requester, PCtx-> PDiskActor , new TEvShredPDiskResult (
4109
+ NKikimrProto::ERROR, request. ShredGeneration , str.Str ()), 0 , cookie ));
4108
4110
}
4109
4111
ShredRequesters.clear ();
4110
4112
return ;
@@ -4153,7 +4155,7 @@ void TPDisk::ProcessShredVDiskResult(TShredVDiskResult& request) {
4153
4155
}
4154
4156
if (request.Status != NKikimrProto::OK) {
4155
4157
ShredState = EShredStateFailed;
4156
- for (TActorId & requester : ShredRequesters) {
4158
+ for (auto & [ requester, cookie] : ShredRequesters) {
4157
4159
TStringStream str;
4158
4160
str << " Shred request failed at PDisk# " << PCtx->PDiskId
4159
4161
<< " for shredGeneration# " << request.ShredGeneration
@@ -4162,8 +4164,8 @@ void TPDisk::ProcessShredVDiskResult(TShredVDiskResult& request) {
4162
4164
<< " replied with status# " << request.Status
4163
4165
<< " and ErrorReason# " << request.ErrorReason ;
4164
4166
LOG_ERROR_S (*PCtx->ActorSystem , NKikimrServices::BS_PDISK_SHRED, str.Str ());
4165
- PCtx->ActorSystem ->Send (requester, new TEvShredPDiskResult (NKikimrProto::ERROR, request. ShredGeneration ,
4166
- str.Str ()));
4167
+ PCtx->ActorSystem ->Send (new IEventHandle ( requester, PCtx-> PDiskActor , new TEvShredPDiskResult (
4168
+ NKikimrProto::ERROR, request. ShredGeneration , str.Str ()), 0 , cookie ));
4167
4169
}
4168
4170
ShredRequesters.clear ();
4169
4171
return ;
0 commit comments