Skip to content

Commit d7773b7

Browse files
authored
Revert "Rework FormatRead and SysLogRead, move their execution to PDisk to avoid race" (#10122)
1 parent 1895bee commit d7773b7

6 files changed

+15
-46
lines changed

ydb/core/blobstorage/pdisk/blobstorage_pdisk_actor.cpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -280,7 +280,7 @@ class TPDiskActor : public TActorBootstrapped<TPDiskActor> {
280280
str << " Config: " << Cfg->ToString();
281281
P_LOG(PRI_CRIT, BPD01, str.Str());
282282
} else {
283-
PDisk->InputRequest(PDisk->ReqCreator.CreateFromArgs<TReadFormat>(SelfId()));
283+
PDisk->InitiateReadSysLog(SelfId());
284284
StateErrorReason =
285285
"PDisk is in StateInit, wait for PDisk to read sys log. Did you ckeck EvYardInit result? Marker# BSY09";
286286
Become(&TThis::StateInit);
@@ -557,8 +557,8 @@ class TPDiskActor : public TActorBootstrapped<TPDiskActor> {
557557
// PDisk GUID is OK and format is complete
558558
*PDisk->Mon.PDiskState = NKikimrBlobStorage::TPDiskState::InitialSysLogRead;
559559
*PDisk->Mon.PDiskDetailedState = TPDiskMon::TPDisk::BootingSysLogRead;
560-
561-
PDisk->InputRequest(PDisk->ReqCreator.CreateFromArgs<TReadSysLog>(SelfId()));
560+
PDisk->Format.InitMagic();
561+
PDisk->ReadSysLog(SelfId());
562562
}
563563
}
564564
}
@@ -1083,7 +1083,7 @@ class TPDiskActor : public TActorBootstrapped<TPDiskActor> {
10831083
}
10841084

10851085
Send(ev->Sender, new TEvBlobStorage::TEvNotifyWardenPDiskRestarted(PCtx->PDiskId, NKikimrProto::EReplyStatus::NOTREADY));
1086-
1086+
10871087
return;
10881088
}
10891089

@@ -1096,7 +1096,7 @@ class TPDiskActor : public TActorBootstrapped<TPDiskActor> {
10961096
NPDisk::TMainKey newMainKey = ev->Get()->MainKey;
10971097

10981098
SecureWipeBuffer((ui8*)ev->Get()->MainKey.Keys.data(), sizeof(NPDisk::TKey) * ev->Get()->MainKey.Keys.size());
1099-
1099+
11001100
P_LOG(PRI_NOTICE, BSP01, "Going to restart PDisk since received TEvAskWardenRestartPDiskResult");
11011101

11021102
const TActorIdentity& thisActorId = SelfId();
@@ -1109,7 +1109,7 @@ class TPDiskActor : public TActorBootstrapped<TPDiskActor> {
11091109
TIntrusivePtr<TPDiskConfig> actorCfg = std::move(Cfg);
11101110

11111111
auto& newCfg = ev->Get()->Config;
1112-
1112+
11131113
if (newCfg) {
11141114
Y_VERIFY_S(newCfg->PDiskId == pdiskId,
11151115
"New config's PDiskId# " << newCfg->PDiskId << " is not equal to real PDiskId# " << pdiskId);
@@ -1124,7 +1124,7 @@ class TPDiskActor : public TActorBootstrapped<TPDiskActor> {
11241124
TGenericExecutorThread& executorThread = actorCtx.ExecutorThread;
11251125

11261126
PassAway();
1127-
1127+
11281128
CreatePDiskActor(executorThread, counters, actorCfg, newMainKey, pdiskId, poolId, nodeId);
11291129

11301130
Send(ev->Sender, new TEvBlobStorage::TEvNotifyWardenPDiskRestarted(pdiskId));

ydb/core/blobstorage/pdisk/blobstorage_pdisk_impl.cpp

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2487,11 +2487,6 @@ void TPDisk::ProcessFastOperationsQueue() {
24872487
break;
24882488
case ERequestType::RequestContinueReadMetadata:
24892489
static_cast<TContinueReadMetadata&>(*req).Execute(PCtx->ActorSystem);
2490-
case ERequestType::RequestReadFormat:
2491-
InitiateReadFormat();
2492-
break;
2493-
case ERequestType::RequestReadSysLog:
2494-
InitiateReadSysLog();
24952490
break;
24962491
default:
24972492
Y_FAIL_S("Unexpected request type# " << (ui64)req->GetType());
@@ -3087,8 +3082,6 @@ bool TPDisk::PreprocessRequest(TRequestBase *request) {
30873082
case ERequestType::RequestReadMetadata:
30883083
case ERequestType::RequestWriteMetadata:
30893084
case ERequestType::RequestContinueReadMetadata:
3090-
case ERequestType::RequestReadFormat:
3091-
case ERequestType::RequestReadSysLog:
30923085
break;
30933086
case ERequestType::RequestStopDevice:
30943087
BlockDevice->Stop();

ydb/core/blobstorage/pdisk/blobstorage_pdisk_impl.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,7 @@ class TPDisk : public IPDisk {
211211
bool IsFormatMagicValid(ui8 *magicData, ui32 magicDataSize, const TMainKey& mainKey); // Called by actor
212212
bool CheckGuid(TString *outReason); // Called by actor
213213
bool CheckFormatComplete(); // Called by actor
214-
void InitiateReadSysLog();
214+
void ReadSysLog(const TActorId &pDiskActor); // Called by actor
215215
bool ProcessChunk0(const TEvReadLogResult &readLogResult, TString& errorReason);
216216
void PrintChunksDebugInfo();
217217
TRcBuf ProcessReadSysLogResult(ui64 &outWritePosition, ui64 &outLsn, const TEvReadLogResult &readLogResult);
@@ -394,8 +394,9 @@ class TPDisk : public IPDisk {
394394
// Internal interface
395395

396396
// Schedules EvReadLogResult event for the system log
397+
void ResetInit();
397398
bool Initialize(); // Called by actor
398-
void InitiateReadFormat();
399+
void InitiateReadSysLog(const TActorId &pDiskActor); // Called by actor
399400
void ProcessReadLogResult(const TEvReadLogResult &evReadLogResult, const TActorId &pDiskActor);
400401

401402
NKikimrProto::EReplyStatus ValidateRequest(TLogWrite *logWrite, TStringStream& outErrorReason);
@@ -431,3 +432,4 @@ bool ParseSectorOffset(const TDiskFormat& format, TActorSystem *actorSystem, ui3
431432

432433
} // NPDisk
433434
} // NKikimr
435+

ydb/core/blobstorage/pdisk/blobstorage_pdisk_impl_log.cpp

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -205,10 +205,8 @@ void TPDisk::GetStartingPoints(NPDisk::TOwner owner, TMap<TLogSignature, NPDisk:
205205
}
206206
}
207207

208-
void TPDisk::InitiateReadSysLog() {
209-
Format.InitMagic();
210-
211-
TIntrusivePtr<TSysLogReader> sysLogReader(new TSysLogReader(this, PCtx->ActorSystem, PCtx->PDiskActor,
208+
void TPDisk::ReadSysLog(const TActorId &pDiskActor) {
209+
TIntrusivePtr<TSysLogReader> sysLogReader(new TSysLogReader(this, PCtx->ActorSystem, pDiskActor,
212210
TReqId(TReqId::ReadSysLog, 0)));
213211
sysLogReader->Start();
214212
return;
@@ -1312,15 +1310,15 @@ void TPDisk::MarkChunksAsReleased(TReleaseChunks& req) {
13121310
}
13131311

13141312
// Schedules EvReadLogResult event for the system log
1315-
void TPDisk::InitiateReadFormat() {
1313+
void TPDisk::InitiateReadSysLog(const TActorId &pDiskActor) {
13161314
Y_VERIFY_S(PDiskThread.Running(), "expect PDiskThread to be running");
13171315
Y_VERIFY_S(InitPhase == EInitPhase::Uninitialized, "expect InitPhase to be Uninitialized, but InitPhase# "
13181316
<< InitPhase);
13191317
ui32 formatSectorsSize = FormatSectorSize * ReplicationFactor;
13201318
THolder<TEvReadFormatResult> evReadFormatResult(new TEvReadFormatResult(formatSectorsSize, UseHugePages));
13211319
ui8 *formatSectors = evReadFormatResult->FormatSectors.Get();
13221320
BlockDevice->PreadAsync(formatSectors, formatSectorsSize, 0,
1323-
new TCompletionEventSender(this, PCtx->PDiskActor, evReadFormatResult.Release()), TReqId(TReqId::InitialFormatRead, 0), {});
1321+
new TCompletionEventSender(this, pDiskActor, evReadFormatResult.Release()), TReqId(TReqId::InitialFormatRead, 0), {});
13241322
*Mon.PDiskState = NKikimrBlobStorage::TPDiskState::InitialFormatRead;
13251323
*Mon.PDiskDetailedState = TPDiskMon::TPDisk::BootingFormatRead;
13261324
InitPhase = EInitPhase::ReadingSysLog;

ydb/core/blobstorage/pdisk/blobstorage_pdisk_request_id.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -153,8 +153,6 @@ enum class ERequestType {
153153
RequestWriteMetadataResult,
154154
RequestPushUnformattedMetadataSector,
155155
RequestContinueReadMetadata,
156-
RequestReadFormat,
157-
RequestReadSysLog,
158156
};
159157

160158
inline IOutputStream& operator <<(IOutputStream& out, const TReqId& reqId) {

ydb/core/blobstorage/pdisk/blobstorage_pdisk_requestimpl.h

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -119,28 +119,6 @@ class TRequestBase : public TThrRefBase {
119119
static void AbortDelete(TRequestBase* request, TActorSystem* actorSystem);
120120
};
121121

122-
class TReadFormat : public TRequestBase {
123-
public:
124-
TReadFormat(TActorId pdiskActor, TAtomicBase reqIdx)
125-
: TRequestBase(pdiskActor, TReqId(TReqId::ReadFormatInfo, reqIdx), 0, 0, NPriInternal::Other)
126-
{}
127-
128-
ERequestType GetType() const override {
129-
return ERequestType::RequestReadFormat;
130-
}
131-
};
132-
133-
class TReadSysLog : public TRequestBase {
134-
public:
135-
TReadSysLog(TActorId pdiskActor, TAtomicBase reqIdx)
136-
: TRequestBase(pdiskActor, TReqId(TReqId::ReadSysLog, reqIdx), 0, 0, NPriInternal::Other)
137-
{}
138-
139-
ERequestType GetType() const override {
140-
return ERequestType::RequestReadSysLog;
141-
}
142-
};
143-
144122
//
145123
// TYardInit
146124
//

0 commit comments

Comments
 (0)