Skip to content

Commit adb5d68

Browse files
authored
Balancing: fix fresh blobs ingress merging (#9035)
1 parent 71c4756 commit adb5d68

File tree

3 files changed

+13
-23
lines changed

3 files changed

+13
-23
lines changed

ydb/core/blobstorage/ut_blobstorage/balancing.cpp

Lines changed: 2 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -231,19 +231,12 @@ struct TStopOneNodeTest {
231231
Env.StartNode(nodeIdWithBlob);
232232
Env->Sim(TDuration::Seconds(30));
233233

234-
Cerr << "Start compaction 1" << Endl;
234+
Cerr << "Start compaction" << Endl;
235235
for (ui32 pos = 0; pos < Env->Settings.NodeCount; ++pos) {
236236
Env->CompactVDisk(Env.GroupInfo->GetActorId(pos));
237237
}
238238
Env->Sim(TDuration::Seconds(30));
239-
Cerr << "Finish compaction 1" << Endl;
240-
241-
Cerr << "Start compaction 2" << Endl;
242-
for (ui32 pos = 0; pos < Env->Settings.NodeCount; ++pos) {
243-
Env->CompactVDisk(Env.GroupInfo->GetActorId(pos));
244-
}
245-
Env->Sim(TDuration::Seconds(30));
246-
Cerr << "Finish compaction 2" << Endl;
239+
Cerr << "Finish compaction" << Endl;
247240

248241
Env.CheckPartsLocations(MakeLogoBlobId(step, data.size()));
249242
UNIT_ASSERT_VALUES_EQUAL(Env.SendGet(step, data.size())->Get()->Responses[0].Buffer.ConvertToString(), data);
@@ -327,12 +320,6 @@ struct TRandomTest {
327320
}
328321
Env->Sim(TDuration::Seconds(60));
329322

330-
Cerr << "Start compaction 2" << Endl;
331-
for (ui32 pos = 0; pos < Env->Settings.NodeCount; ++pos) {
332-
Env->CompactVDisk(Env.GroupInfo->GetActorId(pos));
333-
}
334-
Env->Sim(TDuration::Seconds(60));
335-
336323
Cerr << "Start checking" << Endl;
337324
for (ui32 step: successfulSteps) {
338325
Env.CheckPartsLocations(MakeLogoBlobId(step, data[step].size()));
@@ -408,13 +395,6 @@ struct TTwoPartsOnOneNodeTest {
408395
Env->Sim(TDuration::Seconds(30));
409396
Cerr << "Finish compaction 1" << Endl;
410397

411-
Cerr << "Start compaction 2" << Endl;
412-
for (ui32 pos = 0; pos < Env->Settings.NodeCount; ++pos) {
413-
Env->CompactVDisk(Env.GroupInfo->GetActorId(pos));
414-
}
415-
Env->Sim(TDuration::Seconds(30));
416-
Cerr << "Finish compaction 2" << Endl;
417-
418398
Env.CheckPartsLocations(MakeLogoBlobId(step, data.size()));
419399
UNIT_ASSERT_VALUES_EQUAL(Env.SendGet(step, data.size())->Get()->Responses[0].Buffer.ConvertToString(), data);
420400
}

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

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,15 @@ namespace NBalancing {
111111
}
112112

113113
void CollectKeys() {
114+
if (ConnectedVDisks.size() + 1 != GInfo->GetTotalVDisksNum()) {
115+
// not all vdisks are connected
116+
STLOG(PRI_INFO, BS_VDISK_BALANCING, BSVB11, VDISKP(Ctx->VCtx, "Not all vdisks are connected, balancing should work only for full groups"),
117+
(ConnectedVDisks, ConnectedVDisks.size()), (TotalVDisksInGroup, GInfo->GetTotalVDisksNum()));
118+
Send(Ctx->SkeletonId, new TEvStartBalancing());
119+
PassAway();
120+
return;
121+
}
122+
114123
THPTimer timer;
115124

116125
for (ui32 cnt = 0; It.Valid(); It.Next(), ++cnt) {

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,10 +53,11 @@ namespace NBalancing {
5353
}
5454

5555
void TPartsCollectorMerger::AddFromFresh(const TMemRecLogoBlob& memRec, const TRope* data, const TKeyLogoBlob& key, ui64 /*lsn*/) {
56+
Ingress.Merge(memRec.GetIngress());
57+
5658
if (!memRec.HasData()) {
5759
return;
5860
}
59-
Ingress.Merge(memRec.GetIngress());
6061

6162
const NMatrix::TVectorType local = memRec.GetLocalParts(GType);
6263

0 commit comments

Comments
 (0)