Skip to content

Commit

Permalink
issue-2725: correct issues
Browse files Browse the repository at this point in the history
  • Loading branch information
vladstepanyuk committed Jan 18, 2025
1 parent 71294f7 commit a42ac5d
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 25 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -45,10 +45,10 @@ class TAcquireReleaseDiskProxyActor final
: public TActorBootstrapped<TAcquireReleaseDiskProxyActor>
{
public:
enum EOperationType
enum class EOperationType
{
ACQUIRE_DISK,
RELEASE_DISK,
AcquireDisk,
ReleaseDisk,
};

private:
Expand Down Expand Up @@ -97,10 +97,16 @@ class TAcquireReleaseDiskProxyActor final
NCloud::Send(ctx, Owner, std::move(request));
}

void ReplyAndDie(const TActorContext& ctx, NProto::TError error);
template <typename TEventType>
TEventType* GetFinishedOperationResponce()
{
return OperationFinishedResponce.has_value()
? &std::get<TEventType>(OperationFinishedResponce.value())
: nullptr;
}

void ReplyAndDie(const TActorContext& ctx, NProto::TError error);
void ReplyAndDieAcquire(const TActorContext& ctx, NProto::TError error);

void ReplyAndDieRelease(const TActorContext& ctx, NProto::TError error);

private:
Expand Down Expand Up @@ -149,13 +155,13 @@ void TAcquireReleaseDiskProxyActor::Bootstrap(const TActorContext& ctx)
WorkerId = [&]()
{
switch (OperationType) {
case ACQUIRE_DISK:
case EOperationType::AcquireDisk:
return NAcquireReleaseDevices::CreateAcquireDevicesActor(
ctx,
ctx.SelfID,
std::move(AcquireReleaseInfo),
TBlockStoreComponents::DISK_REGISTRY_WORKER);
case RELEASE_DISK:
case EOperationType::ReleaseDisk:
return NAcquireReleaseDevices::CreateReleaseDevicesActor(
ctx,
ctx.SelfID,
Expand All @@ -170,10 +176,10 @@ void TAcquireReleaseDiskProxyActor::ReplyAndDie(
NProto::TError error)
{
switch (OperationType) {
case ACQUIRE_DISK:
case EOperationType::AcquireDisk:
ReplyAndDieAcquire(ctx, std::move(error));
return;
case RELEASE_DISK:
case EOperationType::ReleaseDisk:
ReplyAndDieRelease(ctx, std::move(error));
return;
}
Expand All @@ -183,11 +189,8 @@ void TAcquireReleaseDiskProxyActor::ReplyAndDieAcquire(
const TActorContext& ctx,
NProto::TError error)
{
auto* msg =
OperationFinishedResponce.has_value()
? &std::get<NAcquireReleaseDevices::TDevicesAcquireFinished>(
OperationFinishedResponce.value())
: nullptr;
auto* msg = GetFinishedOperationResponce<
NAcquireReleaseDevices::TDevicesAcquireFinished>();

auto response = std::make_unique<TEvDiskRegistry::TEvAcquireDiskResponse>(
!HasError(error) && msg ? std::move(msg->Error) : std::move(error));
Expand All @@ -213,8 +216,11 @@ void TAcquireReleaseDiskProxyActor::ReplyAndDieRelease(
const TActorContext& ctx,
NProto::TError error)
{
auto* msg = GetFinishedOperationResponce<
NAcquireReleaseDevices::TDevicesReleaseFinished>();

auto response = std::make_unique<TEvDiskRegistry::TEvReleaseDiskResponse>(
std::move(error));
!HasError(error) && msg ? std::move(msg->Error) : std::move(error));
NCloud::Reply(ctx, *RequestInfo, std::move(response));

NCloud::Send(
Expand Down Expand Up @@ -271,7 +277,7 @@ void TAcquireReleaseDiskProxyActor::HandleDevicesAcquireFinished(
const NAcquireReleaseDevices::TEvDevicesAcquireFinished::TPtr& ev,
const TActorContext& ctx)
{
Y_ABORT_UNLESS(OperationType == ACQUIRE_DISK);
Y_ABORT_UNLESS(OperationType == EOperationType::AcquireDisk);
SendOperationFinishedToOwner<
TEvDiskRegistryPrivate::TEvFinishAcquireDiskRequest>(ctx, ev);
}
Expand All @@ -280,7 +286,7 @@ void TAcquireReleaseDiskProxyActor::HandleFinishAcquireDiskResponse(
const TEvDiskRegistryPrivate::TEvFinishAcquireDiskResponse::TPtr& ev,
const TActorContext& ctx)
{
Y_ABORT_UNLESS(OperationType == ACQUIRE_DISK);
Y_ABORT_UNLESS(OperationType == EOperationType::AcquireDisk);
Y_UNUSED(ev);

ReplyAndDie(ctx, {});
Expand All @@ -290,7 +296,7 @@ void TAcquireReleaseDiskProxyActor::HandleDevicesReleaseFinished(
const NAcquireReleaseDevices::TEvDevicesReleaseFinished::TPtr& ev,
const NActors::TActorContext& ctx)
{
Y_ABORT_UNLESS(OperationType == RELEASE_DISK);
Y_ABORT_UNLESS(OperationType == EOperationType::ReleaseDisk);
SendOperationFinishedToOwner<
TEvDiskRegistryPrivate::TEvRemoveDiskSessionRequest>(ctx, ev);
}
Expand All @@ -299,7 +305,7 @@ void TAcquireReleaseDiskProxyActor::HandleRemoveDiskSessionResponse(
const TEvDiskRegistryPrivate::TEvRemoveDiskSessionResponse::TPtr& ev,
const TActorContext& ctx)
{
Y_ABORT_UNLESS(OperationType == RELEASE_DISK);
Y_ABORT_UNLESS(OperationType == EOperationType::ReleaseDisk);
ReplyAndDie(ctx, ev->Get()->GetError());
}

Expand Down Expand Up @@ -361,7 +367,8 @@ void TDiskRegistryActor::HandleAcquireDisk(
"AcquireeDisk %s. Nothing to acquire",
diskId.c_str());

replyWithError(MakeError(S_ALREADY, {}));
State->FinishAcquireDisk(diskId);
replyWithError(MakeError(S_ALREADY, "Nothing to acquire"));
return;
}

Expand All @@ -381,7 +388,7 @@ void TDiskRegistryActor::HandleAcquireDisk(
},
diskInfo.LogicalBlockSize,
CreateRequestInfo(ev->Sender, ev->Cookie, msg->CallContext),
TAcquireReleaseDiskProxyActor::ACQUIRE_DISK);
TAcquireReleaseDiskProxyActor::EOperationType::AcquireDisk);
Actors.insert(actor);
}

Expand Down Expand Up @@ -464,7 +471,7 @@ void TDiskRegistryActor::HandleReleaseDisk(
"ReleaseDisk %s. Nothing to release",
diskId.c_str());

replyWithError(MakeError(S_ALREADY, {}));
replyWithError(MakeError(S_ALREADY, "Nothing to acquire"));
return;
}

Expand All @@ -483,7 +490,7 @@ void TDiskRegistryActor::HandleReleaseDisk(
},
diskInfo.LogicalBlockSize,
CreateRequestInfo(ev->Sender, ev->Cookie, msg->CallContext),
TAcquireReleaseDiskProxyActor::RELEASE_DISK);
TAcquireReleaseDiskProxyActor::EOperationType::ReleaseDisk);
Actors.insert(actor);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -618,7 +618,7 @@ Y_UNIT_TEST_SUITE(TDiskRegistryTest)
{
diskRegistry.SendAcquireDiskRequest("disk-1", "session-1");
auto response = diskRegistry.RecvAcquireDiskResponse();
UNIT_ASSERT_VALUES_EQUAL(S_OK, response->GetStatus());
UNIT_ASSERT_VALUES_EQUAL(S_ALREADY, response->GetStatus());

UNIT_ASSERT_VALUES_EQUAL(0, response->Record.DevicesSize());
}
Expand All @@ -631,7 +631,7 @@ Y_UNIT_TEST_SUITE(TDiskRegistryTest)
NProto::VOLUME_ACCESS_READ_ONLY);

auto response = diskRegistry.RecvAcquireDiskResponse();
UNIT_ASSERT_VALUES_EQUAL(S_OK, response->GetStatus());
UNIT_ASSERT_VALUES_EQUAL(S_ALREADY, response->GetStatus());

UNIT_ASSERT_VALUES_EQUAL(0, response->Record.DevicesSize());
}
Expand Down

0 comments on commit a42ac5d

Please sign in to comment.