Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Make using IsDiskRegistryMediaKind easier #765

Merged
merged 3 commits into from
Mar 19, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions cloud/blockstore/libs/storage/volume/volume_actor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,8 @@ void TVolumeActor::ReportTabletState(const TActorContext& ctx)

void TVolumeActor::RegisterCounters(const TActorContext& ctx)
{
Y_DEBUG_ABORT_UNLESS(State);

Y_UNUSED(ctx);

if (!Counters) {
Expand All @@ -168,7 +170,7 @@ void TVolumeActor::RegisterCounters(const TActorContext& ctx)
}

if (!VolumeSelfCounters) {
VolumeSelfCounters = CreateVolumeSelfCounters(CountersPolicy);
VolumeSelfCounters = CreateVolumeSelfCounters(State->CountersPolicy());
}
}

Expand Down Expand Up @@ -238,7 +240,6 @@ void TVolumeActor::OnActivateExecutor(const TActorContext& ctx)
"[%lu] Activated executor",
TabletID());

RegisterCounters(ctx);
drbasic marked this conversation as resolved.
Show resolved Hide resolved
ScheduleRegularUpdates(ctx);

if (!Executor()->GetStats().IsFollower) {
Expand Down
1 change: 0 additions & 1 deletion cloud/blockstore/libs/storage/volume/volume_actor.h
Original file line number Diff line number Diff line change
Expand Up @@ -248,7 +248,6 @@ class TVolumeActor final

bool ShuttingDown = false;

EPublishingPolicy CountersPolicy = EPublishingPolicy::All;
TVolumeSelfCountersPtr VolumeSelfCounters;

struct TAcquireReleaseDiskRequest
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -219,8 +219,7 @@ void TVolumeActor::HandleAllocateDiskIfNeeded(
void TVolumeActor::ScheduleAllocateDiskIfNeeded(const TActorContext& ctx)
{
if (State && !DiskAllocationScheduled) {
const auto mediaKind = State->GetConfig().GetStorageMediaKind();
if (!IsDiskRegistryMediaKind(mediaKind)) {
if (!State->IsDiskRegistryMediaKind()) {
return;
}

Expand Down
4 changes: 2 additions & 2 deletions cloud/blockstore/libs/storage/volume/volume_actor_forward.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -315,7 +315,7 @@ template <typename TMethod>
NProto::TError TVolumeActor::ProcessAndValidateReadFromCheckpoint(
typename TMethod::TRequest::ProtoRecordType& record) const
{
if (!IsDiskRegistryMediaKind(State->GetConfig().GetStorageMediaKind())) {
if (!State->IsDiskRegistryMediaKind()) {
return {};
}

Expand Down Expand Up @@ -574,7 +574,7 @@ void TVolumeActor::ForwardRequest(
return;
}

if (IsDiskRegistryMediaKind(State->GetConfig().GetStorageMediaKind())) {
if (State->IsDiskRegistryMediaKind()) {
if (State->GetMeta().GetDevices().empty()) {
replyError(MakeError(E_REJECTED, TStringBuilder()
<< "Storage not allocated for volume: "
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,10 +33,10 @@ bool TVolumeActor::SendRequestToPartitionWithUsedBlockTracking(

const auto& volumeConfig = State->GetMeta().GetVolumeConfig();
const bool encryptedDiskRegistryBasedDisk =
IsDiskRegistryMediaKind(State->GetConfig().GetStorageMediaKind()) &&
State->IsDiskRegistryMediaKind() &&
volumeConfig.GetEncryptionDesc().GetMode() != NProto::NO_ENCRYPTION;
const bool overlayDiskRegistryBasedDisk =
IsDiskRegistryMediaKind(State->GetConfig().GetStorageMediaKind()) &&
State->IsDiskRegistryMediaKind() &&
!State->GetBaseDiskId().Empty();

if constexpr (IsWriteMethod<TMethod>) {
Expand Down Expand Up @@ -146,7 +146,7 @@ bool TVolumeActor::SendRequestToPartitionWithUsedBlockTracking<

// TODO: NBS-3228: remove checks for disk registry based disks after normal
// checkpoints for disk registry based disks are implemented completely.
if (!IsDiskRegistryMediaKind(State->GetConfig().GetStorageMediaKind())) {
if (!State->IsDiskRegistryMediaKind()) {
return false;
}

Expand Down
11 changes: 2 additions & 9 deletions cloud/blockstore/libs/storage/volume/volume_actor_loadstate.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -153,17 +153,10 @@ void TVolumeActor::CompleteLoadState(
"[%lu] State initialization finished",
TabletID());

RegisterCounters(ctx);
RegisterVolume(ctx);

const bool isDiskRegistryBased =
IsDiskRegistryMediaKind(State->GetConfig().GetStorageMediaKind());
if (isDiskRegistryBased) {
CountersPolicy = EPublishingPolicy::DiskRegistryBased;
} else {
CountersPolicy = EPublishingPolicy::Repl;
}

if (isDiskRegistryBased || PendingRequests.size()) {
if (State->IsDiskRegistryMediaKind() || PendingRequests.size()) {
StartPartitionsForUse(ctx);
} else if (State->GetShouldStartPartitionsForGc(ctx.Now())
&& !Config->GetDisableStartPartitionsForGc())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -672,8 +672,8 @@ void TVolumeActor::RenderCheckpoints(IOutputStream& out) const
}
};
DIV_CLASS("row") {
const bool isDiskRegistryMediaKind = IsDiskRegistryMediaKind(
State->GetConfig().GetStorageMediaKind());
const bool isDiskRegistryMediaKind =
State->IsDiskRegistryMediaKind();
TAG(TH3) { out << "CheckpointRequests"; }
TABLE_SORTABLE_CLASS("table table-bordered") {
TABLEHEAD() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -292,7 +292,7 @@ NActors::TActorId TVolumeActor::WrapNonreplActorIfNeeded(

void TVolumeActor::RestartDiskRegistryBasedPartition(const TActorContext& ctx)
{
if (!IsDiskRegistryMediaKind(State->GetConfig().GetStorageMediaKind())) {
if (!State->IsDiskRegistryMediaKind()) {
return;
}

Expand All @@ -314,7 +314,7 @@ void TVolumeActor::StartPartitionsImpl(const TActorContext& ctx)
SendBootExternalRequest(ctx, partition);
}

if (IsDiskRegistryMediaKind(State->GetConfig().GetStorageMediaKind())) {
if (State->IsDiskRegistryMediaKind()) {
SetupDiskRegistryBasedPartitions(ctx);

if (State->Ready()) {
Expand Down
17 changes: 8 additions & 9 deletions cloud/blockstore/libs/storage/volume/volume_actor_stats.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,8 @@ void TVolumeActor::HandleDiskRegistryBasedPartCounters(
const TEvVolume::TEvDiskRegistryBasedPartitionCounters::TPtr& ev,
const TActorContext& ctx)
{
Y_DEBUG_ABORT_UNLESS(State->IsDiskRegistryMediaKind());

auto* msg = ev->Get();

if (auto* resourceMetrics = GetResourceMetrics(); resourceMetrics) {
Expand Down Expand Up @@ -145,7 +147,7 @@ void TVolumeActor::HandleDiskRegistryBasedPartCounters(

auto& info = State->GetPartitionStatInfos().front();
if (!info.LastCounters) {
info.LastCounters = CreatePartitionDiskCounters(CountersPolicy);
info.LastCounters = CreatePartitionDiskCounters(State->CountersPolicy());
}

info.LastCounters->Add(*msg->DiskCounters);
Expand All @@ -156,9 +158,6 @@ void TVolumeActor::HandleDiskRegistryBasedPartCounters(
TVolumeDatabase::TPartStats partStats;
partStats.Stats = info.CachedCountersProto;

auto kind = State->GetConfig().GetStorageMediaKind();
Y_DEBUG_ABORT_UNLESS(IsDiskRegistryMediaKind(kind));

ExecuteTx<TSavePartStats>(
ctx,
std::move(requestInfo),
Expand All @@ -171,6 +170,8 @@ void TVolumeActor::HandlePartCounters(
const TEvStatsService::TEvVolumePartCounters::TPtr& ev,
const TActorContext& ctx)
{
Y_DEBUG_ABORT_UNLESS(!State->IsDiskRegistryMediaKind());

auto* msg = ev->Get();

auto requestInfo = CreateRequestInfo(
Expand All @@ -190,7 +191,7 @@ void TVolumeActor::HandlePartCounters(

auto& info = State->GetPartitionStatInfos()[index];
if (!info.LastCounters) {
info.LastCounters = CreatePartitionDiskCounters(CountersPolicy);
info.LastCounters = CreatePartitionDiskCounters(State->CountersPolicy());
info.LastMetrics = std::move(msg->BlobLoadMetrics);
}

Expand All @@ -204,8 +205,6 @@ void TVolumeActor::HandlePartCounters(

TVolumeDatabase::TPartStats partStats;

auto kind = State->GetConfig().GetStorageMediaKind();
Y_DEBUG_ABORT_UNLESS(!IsDiskRegistryMediaKind(kind));
partStats.Id = State->GetPartitions()[index].TabletId;
partStats.Stats = info.CachedCountersProto;

Expand Down Expand Up @@ -266,7 +265,7 @@ void TVolumeActor::CompleteSavePartStats(

void TVolumeActor::SendPartStatsToService(const TActorContext& ctx)
{
auto stats = CreatePartitionDiskCounters(CountersPolicy);
auto stats = CreatePartitionDiskCounters(State->CountersPolicy());
ui64 systemCpu = 0;
ui64 userCpu = 0;
// XXX - we need to "manually" calculate total channel history
Expand Down Expand Up @@ -384,7 +383,7 @@ void TVolumeActor::SendSelfStatsToService(const TActorContext& ctx)
State->GetMeta().GetMigrations().size() == 0);

SendVolumeSelfCounters(ctx);
VolumeSelfCounters = CreateVolumeSelfCounters(CountersPolicy);
VolumeSelfCounters = CreateVolumeSelfCounters(State->CountersPolicy());
}

void TVolumeActor::HandleGetVolumeLoadInfo(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -342,6 +342,7 @@ void TVolumeActor::CompleteUpdateConfig(
));

ResetThrottlingPolicy();
RegisterCounters(ctx);
RegisterVolume(ctx);
}

Expand Down
17 changes: 14 additions & 3 deletions cloud/blockstore/libs/storage/volume/volume_state.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -189,7 +189,7 @@ void TVolumeState::Reset()
UseRdmaForThisVolume = false;
AcceptInvalidDiskAllocationResponse = false;

if (IsDiskRegistryMediaKind(Config->GetStorageMediaKind())) {
if (IsDiskRegistryMediaKind()) {
if (Meta.GetDevices().size()) {
PartitionStatInfos.emplace_back(
EPublishingPolicy::DiskRegistryBased);
Expand Down Expand Up @@ -295,6 +295,11 @@ void TVolumeState::FillDeviceInfo(NProto::TVolume& volume) const
volume);
}

bool TVolumeState::IsDiskRegistryMediaKind() const
{
return NCloud::IsDiskRegistryMediaKind(Config->GetStorageMediaKind());
}

////////////////////////////////////////////////////////////////////////////////

TPartitionInfo* TVolumeState::GetPartition(ui64 tabletId)
Expand Down Expand Up @@ -327,7 +332,7 @@ void TVolumeState::SetPartitionsState(TPartitionInfo::EState state)

TPartitionInfo::EState TVolumeState::UpdatePartitionsState()
{
if (IsDiskRegistryMediaKind(Config->GetStorageMediaKind())) {
if (IsDiskRegistryMediaKind()) {
ui64 bytes = 0;
for (const auto& device: Meta.GetDevices()) {
bytes += device.GetBlocksCount() * device.GetBlockSize();
Expand Down Expand Up @@ -809,6 +814,12 @@ void TVolumeState::CleanupHistoryIfNeeded(TInstant oldest)

////////////////////////////////////////////////////////////////////////////////

EPublishingPolicy TVolumeState::CountersPolicy() const
{
return IsDiskRegistryMediaKind() ? EPublishingPolicy::DiskRegistryBased
: EPublishingPolicy::Repl;
}

bool TVolumeState::FindPartitionStatInfoByOwner(
const TActorId& actorId,
ui32& index) const
Expand All @@ -824,7 +835,7 @@ bool TVolumeState::FindPartitionStatInfoByOwner(

TPartitionStatInfo* TVolumeState::GetPartitionStatInfoById(ui64 id)
{
if (IsDiskRegistryMediaKind(Config->GetStorageMediaKind())) {
if (IsDiskRegistryMediaKind()) {
if (id >= PartitionStatInfos.size()) {
return nullptr;
}
Expand Down
8 changes: 8 additions & 0 deletions cloud/blockstore/libs/storage/volume/volume_state.h
Original file line number Diff line number Diff line change
Expand Up @@ -257,6 +257,8 @@ class TVolumeState

void FillDeviceInfo(NProto::TVolume& volume) const;

bool IsDiskRegistryMediaKind() const;

//
// Partitions
//
Expand Down Expand Up @@ -317,6 +319,12 @@ class TVolumeState
return NonreplicatedPartitionConfig;
}

//
// PartitionStat
//

EPublishingPolicy CountersPolicy() const;

bool FindPartitionStatInfoByOwner(const NActors::TActorId& actorId, ui32& index) const;

TPartitionStatInfo* GetPartitionStatInfoById(ui64 id);
Expand Down