Skip to content

Commit

Permalink
Merge 9ba9abb into f002be0
Browse files Browse the repository at this point in the history
  • Loading branch information
SammyVimes authored May 30, 2024
2 parents f002be0 + 9ba9abb commit 2298413
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 11 deletions.
2 changes: 1 addition & 1 deletion ydb/core/blobstorage/pdisk/blobstorage_pdisk_actor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1019,7 +1019,7 @@ class TPDiskActor : public TActorBootstrapped<TPDiskActor> {
SecureWipeBuffer((ui8*)ev->Get()->MainKey.Keys.data(), sizeof(NPDisk::TKey) * ev->Get()->MainKey.Keys.size());

LOG_NOTICE_S(*TlsActivationContext, NKikimrServices::BS_PDISK, "PDiskId# " << PDisk->PDiskId
<< " Going to restart PDisk since recieved TEvAskWardenRestartPDiskResult");
<< " Going to restart PDisk since received TEvAskWardenRestartPDiskResult");

const TActorIdentity& thisActorId = SelfId();
ui32 nodeId = thisActorId.NodeId();
Expand Down
17 changes: 10 additions & 7 deletions ydb/core/blobstorage/pdisk/blobstorage_pdisk_ut.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -504,32 +504,36 @@ Y_UNIT_TEST_SUITE(TPDiskTest) {
vdisk.InitFull();
vdisk.SendEvLogSync();

testCtx.StartPDiskRestart();
testCtx.GracefulPDiskRestart();

vdisk.InitFull();
vdisk.SendEvLogSync();
}

Y_UNIT_TEST(PDiskRestartManyLogWrites) {
TActorTestContext testCtx({ false });
testCtx.TestCtx.SectorMap->ImitateIoErrorProbability = 1e-4;

const TVDiskID vDiskID(0, 1, 0, 0, 0);
const auto evInitRes = testCtx.TestResponse<NPDisk::TEvYardInitResult>(
new NPDisk::TEvYardInit(2, vDiskID, testCtx.TestCtx.PDiskGuid),
NKikimrProto::OK);

//ui32 errors = 0;
ui32 lsn = 2;
TRcBuf logData = TRcBuf(PrepareData(4096));

for (ui32 i = 0; i < 1000; ++i) {
testCtx.Send(new NPDisk::TEvLog(evInitRes->PDiskParams->Owner, evInitRes->PDiskParams->OwnerRound, 0,
logData, TLsnSeg(lsn, lsn), nullptr));
if (i == 100) {
testCtx.Send(new TEvBlobStorage::TEvAskWardenRestartPDiskResult(testCtx.GetPDisk()->PDiskId, testCtx.MainKey, true, nullptr));
testCtx.GracefulPDiskRestart(false);
}
if (i == 600) {
const auto evInitRes = testCtx.Recv<TEvBlobStorage::TEvNotifyWardenPDiskRestarted>();
UNIT_ASSERT_VALUES_EQUAL(NKikimrProto::EReplyStatus::OK, evInitRes->Status);
}
++lsn;
}

for (ui32 i = 0; i < 100;) {
const auto logRes = testCtx.Recv<NPDisk::TEvLogResult>();
i += logRes->Results.size();
Expand All @@ -539,7 +543,6 @@ Y_UNIT_TEST_SUITE(TPDiskTest) {
Ctest << "TEvLogResult status is error" << Endl;
}
}
testCtx.Recv<TEvBlobStorage::TEvNotifyWardenPDiskRestarted>();
}

Y_UNIT_TEST(CommitDeleteChunks) {
Expand Down Expand Up @@ -929,7 +932,7 @@ Y_UNIT_TEST_SUITE(TPDiskTest) {
while (writeLog() == NKikimrProto::OK) {}
UNIT_ASSERT_VALUES_EQUAL(writeLog(), NKikimrProto::OUT_OF_SPACE);

testCtx.StartPDiskRestart();
testCtx.GracefulPDiskRestart();

vdisk.InitFull();
vdisk.SendEvLogSync();
Expand All @@ -944,7 +947,7 @@ Y_UNIT_TEST_SUITE(PDiskCompatibilityInfo) {
THolder<NPDisk::TEvYardInitResult> RestartPDisk(TActorTestContext& testCtx, ui32 pdiskId, TVDiskMock& vdisk, TCurrent* newInfo) {
TCompatibilityInfoTest::Reset(newInfo);
Y_UNUSED(pdiskId);
testCtx.StartPDiskRestart();
testCtx.GracefulPDiskRestart();
testCtx.Send(new NPDisk::TEvYardInit(vdisk.OwnerRound.fetch_add(1), vdisk.VDiskID, testCtx.TestCtx.PDiskGuid));
return testCtx.Recv<NPDisk::TEvYardInitResult>();
}
Expand Down
10 changes: 7 additions & 3 deletions ydb/core/blobstorage/pdisk/blobstorage_pdisk_ut_env.h
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,8 @@ struct TActorTestContext {

private:
std::optional<TActorId> PDiskActor;
THolder<TTestActorRuntime> Runtime;
std::shared_ptr<NPDisk::IIoContextFactory> IoContext;
THolder<TTestActorRuntime> Runtime;
NPDisk::TPDisk *PDisk = nullptr;

public:
Expand Down Expand Up @@ -131,11 +131,15 @@ struct TActorTestContext {
return PDisk;
}

void StartPDiskRestart() {
void GracefulPDiskRestart(bool waitForRestart = true) {
ui32 pdiskId = GetPDisk()->PDiskId;

Send(new TEvBlobStorage::TEvAskWardenRestartPDiskResult(pdiskId, MainKey, true, nullptr));
const auto evInitRes = Recv<TEvBlobStorage::TEvNotifyWardenPDiskRestarted>();

if (waitForRestart) {
const auto evInitRes = Recv<TEvBlobStorage::TEvNotifyWardenPDiskRestarted>();
UNIT_ASSERT_VALUES_EQUAL(NKikimrProto::EReplyStatus::OK, evInitRes->Status);
}

if (!Settings.UsePDiskMock) {
TActorId wellKnownPDiskActorId = MakeBlobStoragePDiskID(PDiskActor->NodeId(), pdiskId);
Expand Down

0 comments on commit 2298413

Please sign in to comment.