diff options
3 files changed, 13 insertions, 6 deletions
diff --git a/ydb/core/blobstorage/pdisk/blobstorage_pdisk_requestimpl.cpp b/ydb/core/blobstorage/pdisk/blobstorage_pdisk_requestimpl.cpp index 47fa34fab81..d96b4f13e46 100644 --- a/ydb/core/blobstorage/pdisk/blobstorage_pdisk_requestimpl.cpp +++ b/ydb/core/blobstorage/pdisk/blobstorage_pdisk_requestimpl.cpp @@ -25,6 +25,15 @@ void TRequestBase::AbortDelete(TRequestBase* request, TActorSystem* actorSystem) request->Abort(actorSystem); break; } + case ERequestType::RequestLogWrite: + { + auto* log = static_cast<TLogWrite*>(request); + while (log) { + auto batch = log->PopFromBatch(); + log->Abort(actorSystem); + log = batch; + } + } default: request->Abort(actorSystem); delete request; diff --git a/ydb/core/blobstorage/pdisk/blobstorage_pdisk_requestimpl.h b/ydb/core/blobstorage/pdisk/blobstorage_pdisk_requestimpl.h index 2bd6ba7c89d..93c246f728b 100644 --- a/ydb/core/blobstorage/pdisk/blobstorage_pdisk_requestimpl.h +++ b/ydb/core/blobstorage/pdisk/blobstorage_pdisk_requestimpl.h @@ -344,7 +344,9 @@ public: } void Abort(TActorSystem* actorSystem) override { - actorSystem->Send(Sender, new NPDisk::TEvLogResult(NKikimrProto::CORRUPTED, 0, "TLogWrite is being aborted")); + auto *result = new NPDisk::TEvLogResult(NKikimrProto::CORRUPTED, 0, "TLogWrite is being aborted"); + result->Results.emplace_back(Lsn, Cookie); + actorSystem->Send(Sender, result); } TString ToString() const { diff --git a/ydb/core/blobstorage/pdisk/blobstorage_pdisk_ut.cpp b/ydb/core/blobstorage/pdisk/blobstorage_pdisk_ut.cpp index f78ab4435e3..e345fceb71d 100644 --- a/ydb/core/blobstorage/pdisk/blobstorage_pdisk_ut.cpp +++ b/ydb/core/blobstorage/pdisk/blobstorage_pdisk_ut.cpp @@ -1023,11 +1023,7 @@ Y_UNIT_TEST_SUITE(TPDiskTest) { for (ui32 i = 0; i < 100;) { auto result = testCtx.Recv<NPDisk::TEvLogResult>(); - if (result->Status == NKikimrProto::OK) { - i += result->Results.size(); - } else { - ++i; - } + i += result->Results.size(); } Cerr << "all log writes are received" << Endl; } |
