Skip to content

Commit 77a5f3a

Browse files
authored
Fix start balancing actor after timeout + fix release replication token (#9389)
1 parent 1f5a4f3 commit 77a5f3a

File tree

2 files changed

+15
-8
lines changed

2 files changed

+15
-8
lines changed

ydb/core/blobstorage/vdisk/balance/balancing_actor.cpp

+7-6
Original file line numberDiff line numberDiff line change
@@ -89,14 +89,13 @@ namespace NBalancing {
8989
void ContinueBalancing() {
9090
if (SendOnMainParts.Empty() && TryDeleteParts.Empty()) {
9191
// no more parts to send or delete
92-
STLOG(PRI_DEBUG, BS_VDISK_BALANCING, BSVB03, VDISKP(Ctx->VCtx, "Balancing completed"));
93-
Send(Ctx->SkeletonId, new TEvStartBalancing());
92+
STLOG(PRI_INFO, BS_VDISK_BALANCING, BSVB03, VDISKP(Ctx->VCtx, "Balancing completed"));
9493
PassAway();
9594
return;
9695
}
9796

9897
// ask for repl token to continue balancing
99-
STLOG(PRI_DEBUG, BS_VDISK_BALANCING, BSVB01, VDISKP(Ctx->VCtx, "Ask repl token to continue balancing"));
98+
STLOG(PRI_INFO, BS_VDISK_BALANCING, BSVB01, VDISKP(Ctx->VCtx, "Ask repl token to continue balancing"), (SelfId, SelfId()), (PDiskId, Ctx->VDiskCfg->BaseInfo.PDiskId));
10099
Send(MakeBlobStorageReplBrokerID(), new TEvQueryReplToken(Ctx->VDiskCfg->BaseInfo.PDiskId), NActors::IEventHandle::FlagTrackDelivery);
101100
}
102101

@@ -122,7 +121,6 @@ namespace NBalancing {
122121
// not all vdisks are connected
123122
STLOG(PRI_INFO, BS_VDISK_BALANCING, BSVB11, VDISKP(Ctx->VCtx, "Not all vdisks are connected, balancing should work only for full groups"),
124123
(ConnectedVDisks, ConnectedVDisks.size()), (TotalVDisksInGroup, GInfo->GetTotalVDisksNum()));
125-
Send(Ctx->SkeletonId, new TEvStartBalancing());
126124
PassAway();
127125
return;
128126
}
@@ -191,11 +189,13 @@ namespace NBalancing {
191189
}
192190

193191
void Handle(NActors::TEvents::TEvCompleted::TPtr ev) {
192+
STLOG(PRI_INFO, BS_VDISK_BALANCING, BSVB04, VDISKP(Ctx->VCtx, "TEvCompleted"), (Type, ev->Type));
194193
BatchManager.Handle(ev);
195194

196195
if (StartTime + EPOCH_TIMEOUT < TlsActivationContext->Now()) {
197196
Ctx->MonGroup.EpochTimeouts()++;
198-
STLOG(PRI_DEBUG, BS_VDISK_BALANCING, BSVB04, VDISKP(Ctx->VCtx, "Epoch timeout"));
197+
Send(MakeBlobStorageReplBrokerID(), new TEvReleaseReplToken);
198+
STLOG(PRI_INFO, BS_VDISK_BALANCING, BSVB04, VDISKP(Ctx->VCtx, "Epoch timeout"));
199199
PassAway();
200200
}
201201

@@ -242,7 +242,7 @@ namespace NBalancing {
242242

243243
void Handle(NActors::TEvents::TEvUndelivered::TPtr ev) {
244244
if (ev.Get()->Type == TEvReplToken::EventType) {
245-
STLOG(PRI_WARN, BS_VDISK_BALANCING, BSVB06, VDISKP(Ctx->VCtx, "Ask repl token msg not delivered"));
245+
STLOG(PRI_WARN, BS_VDISK_BALANCING, BSVB06, VDISKP(Ctx->VCtx, "Ask repl token msg not delivered"), (SelfId, SelfId()), (PDiskId, Ctx->VDiskCfg->BaseInfo.PDiskId));
246246
ScheduleJobQuant();
247247
}
248248
}
@@ -276,6 +276,7 @@ namespace NBalancing {
276276
for (const auto& kv : *QueueActorMapPtr) {
277277
Send(kv.second, new TEvents::TEvPoison);
278278
}
279+
Send(Ctx->SkeletonId, new TEvStartBalancing());
279280
TActorBootstrapped::PassAway();
280281
}
281282

ydb/core/blobstorage/vdisk/balance/sender.cpp

+8-2
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,7 @@ namespace {
186186
void Handle(TEvBlobStorage::TEvVPutResult::TPtr ev) {
187187
++Responses;
188188
if (ev->Get()->Record.GetStatus() != NKikimrProto::OK) {
189-
STLOG(PRI_DEBUG, BS_VDISK_BALANCING, BSVB13, VDISKP(Ctx->VCtx, "Put failed"), (Msg, ev->Get()->ToString()));
189+
STLOG(PRI_WARN, BS_VDISK_BALANCING, BSVB13, VDISKP(Ctx->VCtx, "Put failed"), (Msg, ev->Get()->ToString()));
190190
} else {
191191
++Ctx->MonGroup.SentOnMain();
192192
Ctx->MonGroup.SentOnMainWithResponseBytes() += GInfo->GetTopology().GType.PartSize(LogoBlobIDFromLogoBlobID(ev->Get()->Record.GetBlobID()));
@@ -196,10 +196,16 @@ namespace {
196196

197197
void Handle(TEvBlobStorage::TEvVMultiPutResult::TPtr ev) {
198198
++Responses;
199+
auto rec = ev->Get()->Record;
200+
if (rec.GetStatus() != NKikimrProto::OK) {
201+
STLOG(PRI_WARN, BS_VDISK_BALANCING, BSVB33, VDISKP(Ctx->VCtx, "MultiPut failed"), (Msg, ev->Get()->ToString()));
202+
return;
203+
}
204+
199205
const auto& items = ev->Get()->Record.GetItems();
200206
for (const auto& item: items) {
201207
if (item.GetStatus() != NKikimrProto::OK) {
202-
STLOG(PRI_DEBUG, BS_VDISK_BALANCING, BSVB15, VDISKP(Ctx->VCtx, "MultiPut failed"), (Key, LogoBlobIDFromLogoBlobID(item.GetBlobID()).ToString()));
208+
STLOG(PRI_WARN, BS_VDISK_BALANCING, BSVB15, VDISKP(Ctx->VCtx, "MultiPut item failed"), (Key, LogoBlobIDFromLogoBlobID(item.GetBlobID()).ToString()), (Status, NKikimrProto::EReplyStatus_Name(item.GetStatus())), (Error, item.GetErrorReason()));
203209
continue;
204210
}
205211
++Ctx->MonGroup.SentOnMain();

0 commit comments

Comments
 (0)