Skip to content

Commit d67fc79

Browse files
committed
issue-2404: correct issues
1 parent e76f785 commit d67fc79

File tree

3 files changed

+31
-24
lines changed

3 files changed

+31
-24
lines changed

cloud/blockstore/libs/storage/disk_registry/disk_registry_state.cpp

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5031,18 +5031,18 @@ void TDiskRegistryState::ApplyAgentStateChange(
50315031
}
50325032

50335033
if (agent.GetState() == NProto::AGENT_STATE_WARNING) {
5034-
if (!NeedToStartMigration(disk, deviceId)) {
5035-
// migration already started or finished
5036-
continue;
5037-
}
5038-
50395034
if (Find(disk.Devices, deviceId) == disk.Devices.end()) {
50405035
ReportDiskRegistryWrongMigratedDeviceOwnership(
50415036
TStringBuilder() << "ApplyAgentStateChange: device "
50425037
<< deviceId << " not found");
50435038
continue;
50445039
}
50455040

5041+
if (!NeedToStartMigration(disk, deviceId)) {
5042+
// migration already started or finished
5043+
continue;
5044+
}
5045+
50465046
AddMigration(disk, diskId, deviceId);
50475047
} else {
50485048
if (agent.GetState() == NProto::AGENT_STATE_UNAVAILABLE
@@ -7574,12 +7574,21 @@ bool TDiskRegistryState::NeedToStartMigration(
75747574
const TDiskState& disk,
75757575
const TString& deviceUUID)
75767576
{
7577-
return !(
7578-
disk.MigrationSource2Target.contains(deviceUUID) ||
7579-
FindIfPtr(
7577+
if (disk.MigrationSource2Target.contains(deviceUUID)) {
7578+
// migration already started
7579+
return false;
7580+
}
7581+
7582+
if (FindIfPtr(
75807583
disk.FinishedMigrations,
7581-
[&](const auto& el)
7582-
{ return el.DeviceId == deviceUUID && !el.IsCanceled; }));
7584+
[&](const auto& m)
7585+
{ return m.DeviceId == deviceUUID && !m.IsCanceled; }))
7586+
{
7587+
// there is a finished migration for the device
7588+
return false;
7589+
}
7590+
7591+
return true;
75837592
}
75847593

75857594
} // namespace NCloud::NBlockStore::NStorage

cloud/blockstore/libs/storage/disk_registry/disk_registry_state_ut_cms.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ namespace NCloud::NBlockStore::NStorage {
2020
using namespace NDiskRegistryStateTest;
2121

2222
////////////////////////////////////////////////////////////////////////////////
23+
2324
Y_UNIT_TEST_SUITE(TDiskRegistryStateCMSTest)
2425
{
2526
Y_UNIT_TEST(ShouldAddNewDevice)
@@ -1124,6 +1125,7 @@ Y_UNIT_TEST_SUITE(TDiskRegistryStateCMSTest)
11241125
0,
11251126
agentConfig->GetUnknownDevices().size());
11261127
});
1128+
11271129
}
11281130

11291131
}

cloud/blockstore/libs/storage/disk_registry/disk_registry_state_ut_migration.cpp

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ TResultOrError<TDiskRegistryState::TAllocateDiskResult> AllocateDisk(
6161
return result;
6262
}
6363

64-
TVector<NProto::TAgentConfig> GetSeveralAgents()
64+
TVector<NProto::TAgentConfig> CreateSeveralAgents()
6565
{
6666
return {
6767
AgentConfig(
@@ -78,7 +78,7 @@ TVector<NProto::TAgentConfig> GetSeveralAgents()
7878
})};
7979
}
8080

81-
TDiskRegistryState GetTestState(const TVector<NProto::TAgentConfig>& agents)
81+
TDiskRegistryState CreateTestState(const TVector<NProto::TAgentConfig>& agents)
8282
{
8383
return TDiskRegistryStateBuilder()
8484
.WithKnownAgents(agents)
@@ -1170,9 +1170,9 @@ Y_UNIT_TEST_SUITE(TDiskRegistryStateMigrationTest)
11701170
TTestExecutor executor;
11711171
executor.WriteTx([&](TDiskRegistryDatabase db) { db.InitSchema(); });
11721172

1173-
const TVector agents = GetSeveralAgents();
1173+
const TVector agents = CreateSeveralAgents();
11741174

1175-
TDiskRegistryState state = GetTestState(agents);
1175+
TDiskRegistryState state = CreateTestState(agents);
11761176

11771177
UNIT_ASSERT_VALUES_EQUAL(0, state.BuildMigrationList().size());
11781178
UNIT_ASSERT(state.IsMigrationListEmpty());
@@ -1225,7 +1225,6 @@ Y_UNIT_TEST_SUITE(TDiskRegistryStateMigrationTest)
12251225
[&](TDiskRegistryDatabase db)
12261226
{
12271227
auto [result, error] = AllocateDisk(db, state, "disk-1");
1228-
;
12291228
UNIT_ASSERT_SUCCESS(error);
12301229

12311230
UNIT_ASSERT_VALUES_EQUAL(2, result.Devices.size());
@@ -1299,9 +1298,9 @@ Y_UNIT_TEST_SUITE(TDiskRegistryStateMigrationTest)
12991298
TTestExecutor executor;
13001299
executor.WriteTx([&](TDiskRegistryDatabase db) { db.InitSchema(); });
13011300

1302-
const TVector agents = GetSeveralAgents();
1301+
const TVector agents = CreateSeveralAgents();
13031302

1304-
TDiskRegistryState state = GetTestState(agents);
1303+
TDiskRegistryState state = CreateTestState(agents);
13051304

13061305
UNIT_ASSERT_VALUES_EQUAL(0, state.BuildMigrationList().size());
13071306
UNIT_ASSERT(state.IsMigrationListEmpty());
@@ -1348,7 +1347,6 @@ Y_UNIT_TEST_SUITE(TDiskRegistryStateMigrationTest)
13481347
[&](TDiskRegistryDatabase db)
13491348
{
13501349
auto [result, error] = AllocateDisk(db, state, "disk-1");
1351-
;
13521350
UNIT_ASSERT_SUCCESS(error);
13531351

13541352
UNIT_ASSERT_VALUES_EQUAL(2, result.Devices.size());
@@ -1420,9 +1418,9 @@ Y_UNIT_TEST_SUITE(TDiskRegistryStateMigrationTest)
14201418
TTestExecutor executor;
14211419
executor.WriteTx([&](TDiskRegistryDatabase db) { db.InitSchema(); });
14221420

1423-
const TVector agents = GetSeveralAgents();
1421+
const TVector agents = CreateSeveralAgents();
14241422

1425-
TDiskRegistryState state = GetTestState(agents);
1423+
TDiskRegistryState state = CreateTestState(agents);
14261424

14271425
UNIT_ASSERT_VALUES_EQUAL(0, state.BuildMigrationList().size());
14281426
UNIT_ASSERT(state.IsMigrationListEmpty());
@@ -1475,7 +1473,6 @@ Y_UNIT_TEST_SUITE(TDiskRegistryStateMigrationTest)
14751473
[&](TDiskRegistryDatabase db)
14761474
{
14771475
auto [result, error] = AllocateDisk(db, state, "disk-1");
1478-
;
14791476
UNIT_ASSERT_SUCCESS(error);
14801477

14811478
UNIT_ASSERT_VALUES_EQUAL(2, result.Devices.size());
@@ -1544,9 +1541,9 @@ Y_UNIT_TEST_SUITE(TDiskRegistryStateMigrationTest)
15441541
TTestExecutor executor;
15451542
executor.WriteTx([&](TDiskRegistryDatabase db) { db.InitSchema(); });
15461543

1547-
const TVector agents = GetSeveralAgents();
1544+
const TVector agents = CreateSeveralAgents();
15481545

1549-
TDiskRegistryState state = GetTestState(agents);
1546+
TDiskRegistryState state = CreateTestState(agents);
15501547

15511548
UNIT_ASSERT_VALUES_EQUAL(0, state.BuildMigrationList().size());
15521549
UNIT_ASSERT(state.IsMigrationListEmpty());
@@ -1599,7 +1596,6 @@ Y_UNIT_TEST_SUITE(TDiskRegistryStateMigrationTest)
15991596
[&](TDiskRegistryDatabase db)
16001597
{
16011598
auto [result, error] = AllocateDisk(db, state, "disk-1");
1602-
;
16031599
UNIT_ASSERT_SUCCESS(error);
16041600

16051601
UNIT_ASSERT_VALUES_EQUAL(2, result.Devices.size());

0 commit comments

Comments
 (0)