diff options
author | Robert Drynkin <[email protected]> | 2024-09-20 11:49:49 +0200 |
---|---|---|
committer | GitHub <[email protected]> | 2024-09-20 11:49:49 +0200 |
commit | 77a5f3a1d9bc1fd271af68a0efbccc2ad78b6ab4 (patch) | |
tree | 25ef8ad7f7440fa19f92414bcbd331e98335621e | |
parent | 1f5a4f3db39afa9161b535f73ca68e05fa3fa941 (diff) |
Fix start balancing actor after timeout + fix release replication token (#9389)
-rw-r--r-- | ydb/core/blobstorage/vdisk/balance/balancing_actor.cpp | 13 | ||||
-rw-r--r-- | ydb/core/blobstorage/vdisk/balance/sender.cpp | 10 |
2 files changed, 15 insertions, 8 deletions
diff --git a/ydb/core/blobstorage/vdisk/balance/balancing_actor.cpp b/ydb/core/blobstorage/vdisk/balance/balancing_actor.cpp index 80152edc22f..6307366cc6b 100644 --- a/ydb/core/blobstorage/vdisk/balance/balancing_actor.cpp +++ b/ydb/core/blobstorage/vdisk/balance/balancing_actor.cpp @@ -89,14 +89,13 @@ namespace NBalancing { void ContinueBalancing() { if (SendOnMainParts.Empty() && TryDeleteParts.Empty()) { // no more parts to send or delete - STLOG(PRI_DEBUG, BS_VDISK_BALANCING, BSVB03, VDISKP(Ctx->VCtx, "Balancing completed")); - Send(Ctx->SkeletonId, new TEvStartBalancing()); + STLOG(PRI_INFO, BS_VDISK_BALANCING, BSVB03, VDISKP(Ctx->VCtx, "Balancing completed")); PassAway(); return; } // ask for repl token to continue balancing - STLOG(PRI_DEBUG, BS_VDISK_BALANCING, BSVB01, VDISKP(Ctx->VCtx, "Ask repl token to continue balancing")); + STLOG(PRI_INFO, BS_VDISK_BALANCING, BSVB01, VDISKP(Ctx->VCtx, "Ask repl token to continue balancing"), (SelfId, SelfId()), (PDiskId, Ctx->VDiskCfg->BaseInfo.PDiskId)); Send(MakeBlobStorageReplBrokerID(), new TEvQueryReplToken(Ctx->VDiskCfg->BaseInfo.PDiskId), NActors::IEventHandle::FlagTrackDelivery); } @@ -122,7 +121,6 @@ namespace NBalancing { // not all vdisks are connected STLOG(PRI_INFO, BS_VDISK_BALANCING, BSVB11, VDISKP(Ctx->VCtx, "Not all vdisks are connected, balancing should work only for full groups"), (ConnectedVDisks, ConnectedVDisks.size()), (TotalVDisksInGroup, GInfo->GetTotalVDisksNum())); - Send(Ctx->SkeletonId, new TEvStartBalancing()); PassAway(); return; } @@ -191,11 +189,13 @@ namespace NBalancing { } void Handle(NActors::TEvents::TEvCompleted::TPtr ev) { + STLOG(PRI_INFO, BS_VDISK_BALANCING, BSVB04, VDISKP(Ctx->VCtx, "TEvCompleted"), (Type, ev->Type)); BatchManager.Handle(ev); if (StartTime + EPOCH_TIMEOUT < TlsActivationContext->Now()) { Ctx->MonGroup.EpochTimeouts()++; - STLOG(PRI_DEBUG, BS_VDISK_BALANCING, BSVB04, VDISKP(Ctx->VCtx, "Epoch timeout")); + Send(MakeBlobStorageReplBrokerID(), new TEvReleaseReplToken); + STLOG(PRI_INFO, BS_VDISK_BALANCING, BSVB04, VDISKP(Ctx->VCtx, "Epoch timeout")); PassAway(); } @@ -242,7 +242,7 @@ namespace NBalancing { void Handle(NActors::TEvents::TEvUndelivered::TPtr ev) { if (ev.Get()->Type == TEvReplToken::EventType) { - STLOG(PRI_WARN, BS_VDISK_BALANCING, BSVB06, VDISKP(Ctx->VCtx, "Ask repl token msg not delivered")); + STLOG(PRI_WARN, BS_VDISK_BALANCING, BSVB06, VDISKP(Ctx->VCtx, "Ask repl token msg not delivered"), (SelfId, SelfId()), (PDiskId, Ctx->VDiskCfg->BaseInfo.PDiskId)); ScheduleJobQuant(); } } @@ -276,6 +276,7 @@ namespace NBalancing { for (const auto& kv : *QueueActorMapPtr) { Send(kv.second, new TEvents::TEvPoison); } + Send(Ctx->SkeletonId, new TEvStartBalancing()); TActorBootstrapped::PassAway(); } diff --git a/ydb/core/blobstorage/vdisk/balance/sender.cpp b/ydb/core/blobstorage/vdisk/balance/sender.cpp index befe283a966..5bdd965fe03 100644 --- a/ydb/core/blobstorage/vdisk/balance/sender.cpp +++ b/ydb/core/blobstorage/vdisk/balance/sender.cpp @@ -186,7 +186,7 @@ namespace { void Handle(TEvBlobStorage::TEvVPutResult::TPtr ev) { ++Responses; if (ev->Get()->Record.GetStatus() != NKikimrProto::OK) { - STLOG(PRI_DEBUG, BS_VDISK_BALANCING, BSVB13, VDISKP(Ctx->VCtx, "Put failed"), (Msg, ev->Get()->ToString())); + STLOG(PRI_WARN, BS_VDISK_BALANCING, BSVB13, VDISKP(Ctx->VCtx, "Put failed"), (Msg, ev->Get()->ToString())); } else { ++Ctx->MonGroup.SentOnMain(); Ctx->MonGroup.SentOnMainWithResponseBytes() += GInfo->GetTopology().GType.PartSize(LogoBlobIDFromLogoBlobID(ev->Get()->Record.GetBlobID())); @@ -196,10 +196,16 @@ namespace { void Handle(TEvBlobStorage::TEvVMultiPutResult::TPtr ev) { ++Responses; + auto rec = ev->Get()->Record; + if (rec.GetStatus() != NKikimrProto::OK) { + STLOG(PRI_WARN, BS_VDISK_BALANCING, BSVB33, VDISKP(Ctx->VCtx, "MultiPut failed"), (Msg, ev->Get()->ToString())); + return; + } + const auto& items = ev->Get()->Record.GetItems(); for (const auto& item: items) { if (item.GetStatus() != NKikimrProto::OK) { - STLOG(PRI_DEBUG, BS_VDISK_BALANCING, BSVB15, VDISKP(Ctx->VCtx, "MultiPut failed"), (Key, LogoBlobIDFromLogoBlobID(item.GetBlobID()).ToString())); + 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())); continue; } ++Ctx->MonGroup.SentOnMain(); |