From b81f58bb5223c680d39e5c49281412a7c00852f7 Mon Sep 17 00:00:00 2001 From: Alexey Efimov Date: Thu, 29 Aug 2024 11:01:36 +0200 Subject: [PATCH] change a little how feature flags are returned (#8434) --- ydb/core/viewer/json_handlers_viewer.cpp | 2 +- ydb/core/viewer/protos/viewer.proto | 4 ++-- ydb/core/viewer/viewer_feature_flags.h | 12 ++++++++---- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/ydb/core/viewer/json_handlers_viewer.cpp b/ydb/core/viewer/json_handlers_viewer.cpp index a1818b1b4d9b..6b6cf6645c63 100644 --- a/ydb/core/viewer/json_handlers_viewer.cpp +++ b/ydb/core/viewer/json_handlers_viewer.cpp @@ -267,7 +267,7 @@ void InitViewerCheckAccessJsonHandler(TJsonHandlers& jsonHandlers) { } void InitViewerFeatureFlagsJsonHandler(TJsonHandlers& handlers) { - handlers.AddHandler("/viewer/feature_flags", new TJsonHandler(TJsonFeatureFlags::GetSwagger())); + handlers.AddHandler("/viewer/feature_flags", new TJsonHandler(TJsonFeatureFlags::GetSwagger()), 2); } void InitViewerJsonHandlers(TJsonHandlers& jsonHandlers) { diff --git a/ydb/core/viewer/protos/viewer.proto b/ydb/core/viewer/protos/viewer.proto index 0b217623ecba..62afcdb81eb4 100644 --- a/ydb/core/viewer/protos/viewer.proto +++ b/ydb/core/viewer/protos/viewer.proto @@ -748,8 +748,8 @@ message TPDiskInfo { message TFeatureFlagsConfig { message TFeatureFlag { string Name = 1; - bool Enabled = 2; - bool IsDefault = 3; + bool Current = 2; + bool Default = 3; } message TDatabase { diff --git a/ydb/core/viewer/viewer_feature_flags.h b/ydb/core/viewer/viewer_feature_flags.h index 66e0410febf8..eb021c53f2bb 100644 --- a/ydb/core/viewer/viewer_feature_flags.h +++ b/ydb/core/viewer/viewer_feature_flags.h @@ -46,7 +46,7 @@ class TJsonFeatureFlags : public TViewerPipeClient { auto* domain = domains->GetDomain(); DomainPath = "/" + domain->Name; - Direct |= Event->Get()->Request.GetUri().StartsWith("/node/"); // we're already forwarding + Direct |= !TBase::Event->Get()->Request.GetHeader("X-Forwarded-From-Node").empty(); // we're already forwarding Direct |= (FilterDatabase == AppData()->TenantName); // we're already on the right node if (FilterDatabase && !Direct) { RequestStateStorageEndpointsLookup(FilterDatabase); // to find some dynamic node and redirect there @@ -100,8 +100,12 @@ class TJsonFeatureFlags : public TViewerPipeClient { if (field->cpp_type() == google::protobuf::FieldDescriptor::CPPTYPE_BOOL) { auto& feat = features[field->name()]; feat.SetName(field->name()); - feat.SetEnabled(reflection->GetBool(featureFlags, field)); - feat.SetIsDefault(field->default_value_bool()); + if (reflection->HasField(featureFlags, field)) { + feat.SetCurrent(reflection->GetBool(featureFlags, field)); + } + if (field->has_default_value()) { + feat.SetDefault(field->default_value_bool()); + } } } return features; @@ -121,7 +125,7 @@ class TJsonFeatureFlags : public TViewerPipeClient { // prepare response NKikimrViewer::TFeatureFlagsConfig Result; - Result.SetVersion(1); + Result.SetVersion(Viewer->GetCapabilityVersion("/viewer/feature_flags")); for (const auto& [database, features] : FeatureFlagsByDatabase) { auto databaseProto = Result.AddDatabases(); databaseProto->SetName(database);