summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ydb/core/blobstorage/pdisk/blobstorage_pdisk_requestimpl.cpp9
-rw-r--r--ydb/core/blobstorage/pdisk/blobstorage_pdisk_requestimpl.h4
-rw-r--r--ydb/core/blobstorage/pdisk/blobstorage_pdisk_ut.cpp6
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;
}