summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRobert Drynkin <[email protected]>2024-09-20 11:49:49 +0200
committerGitHub <[email protected]>2024-09-20 11:49:49 +0200
commit77a5f3a1d9bc1fd271af68a0efbccc2ad78b6ab4 (patch)
tree25ef8ad7f7440fa19f92414bcbd331e98335621e
parent1f5a4f3db39afa9161b535f73ca68e05fa3fa941 (diff)
Fix start balancing actor after timeout + fix release replication token (#9389)
-rw-r--r--ydb/core/blobstorage/vdisk/balance/balancing_actor.cpp13
-rw-r--r--ydb/core/blobstorage/vdisk/balance/sender.cpp10
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();