diff options
author | gvit <[email protected]> | 2022-10-28 17:30:17 +0300 |
---|---|---|
committer | gvit <[email protected]> | 2022-10-28 17:30:17 +0300 |
commit | c1c8aaadc75c9104cc3f02bfb39d428053cbc7c1 (patch) | |
tree | 8040a116139cc4a4d36ec21257f947782c9169ec | |
parent | 510f5211365501b44fb49a19d4c1a2d193fba6cf (diff) |
remove tenant pool event usage
-rw-r--r-- | ydb/core/grpc_services/grpc_request_proxy.cpp | 88 |
1 files changed, 16 insertions, 72 deletions
diff --git a/ydb/core/grpc_services/grpc_request_proxy.cpp b/ydb/core/grpc_services/grpc_request_proxy.cpp index 3439825d5d3..689848a5bdf 100644 --- a/ydb/core/grpc_services/grpc_request_proxy.cpp +++ b/ydb/core/grpc_services/grpc_request_proxy.cpp @@ -4,9 +4,9 @@ #include "operation_helpers.h" #include <ydb/core/base/appdata.h> +#include <ydb/core/base/path.h> #include <ydb/core/cms/console/configs_dispatcher.h> #include <ydb/core/cms/console/console.h> -#include <ydb/core/mind/tenant_pool.h> #include <ydb/core/grpc_services/counters/proxy_counters.h> #include <ydb/core/tx/tx_proxy/proxy.h> #include <ydb/core/tx/scheme_board/scheme_board.h> @@ -32,33 +32,11 @@ TString DatabaseFromDomain(const TAppData* appdata = AppData()) { } struct TDatabaseInfo { - enum class TDatabaseType { - Root, - Tenant, - Serverless - }; - NKikimrTenantPool::EState State; - TDatabaseType DatabaseType; THolder<TSchemeBoardEvents::TEvNotifyUpdate> SchemeBoardResult; TIntrusivePtr<TSecurityObject> SecurityObject; bool IsDatabaseReady() const { - if (SchemeBoardResult == nullptr) { - return false; - } - if (DatabaseType == TDatabaseType::Tenant) { - switch (State) { - case NKikimrTenantPool::STATE_UNKNOWN: - case NKikimrTenantPool::TENANT_OK: - return true; - break; - case NKikimrTenantPool::TENANT_ASSIGNED: - case NKikimrTenantPool::TENANT_UNKNOWN: - return false; - break; - } - } - return true; + return SchemeBoardResult != nullptr; } }; @@ -90,7 +68,6 @@ public: } private: - void HandlePoolStatus(TEvTenantPool::TEvTenantPoolStatus::TPtr& ev, const TActorContext& ctx); void HandleRefreshToken(TRefreshTokenImpl::TPtr& ev, const TActorContext& ctx); void HandleConfig(NConsole::TEvConfigsDispatcher::TEvSetConfigSubscriptionResponse::TPtr& ev); void HandleConfig(NConsole::TEvConsole::TEvConfigNotificationRequest::TPtr& ev); @@ -305,7 +282,6 @@ private: }; void TGRpcRequestProxyImpl::Bootstrap(const TActorContext& ctx) { - ctx.Send(MakeTenantPoolRootID(), new TEvents::TEvSubscribe()); AllowYdbRequestsWithoutDatabase = AppData(ctx)->FeatureFlags.GetAllowYdbRequestsWithoutDatabase(); // Subscribe for TableService config changes @@ -329,12 +305,14 @@ void TGRpcRequestProxyImpl::Bootstrap(const TActorContext& ctx) { RootDatabase = DatabaseFromDomain(); Y_VERIFY(!RootDatabase.empty()); - - TDatabaseInfo& database = Databases[RootDatabase]; - database.DatabaseType = TDatabaseInfo::TDatabaseType::Root; - database.State = NKikimrTenantPool::EState::TENANT_OK; + Databases.try_emplace(RootDatabase); DoStartUpdate(RootDatabase); + if (RootDatabase != AppData()->TenantName && !AppData()->TenantName.empty()) { + Databases.try_emplace(AppData()->TenantName); + DoStartUpdate(AppData()->TenantName); + } + Become(&TThis::StateFunc); } @@ -354,41 +332,6 @@ void TGRpcRequestProxyImpl::ReplayEvents(const TString& databaseName, const TAct } } -void TGRpcRequestProxyImpl::HandlePoolStatus(TEvTenantPool::TEvTenantPoolStatus::TPtr& ev, const TActorContext& ctx) { - const auto &event = ev->Get()->Record; - LOG_INFO_S(ctx, NKikimrServices::GRPC_SERVER, "Received tenant pool status, serving tenants: " << event.ShortDebugString()); - - SubDomainKeys.clear(); - for (auto it = Databases.begin(); it != Databases.end();) { - if (it->second.DatabaseType != TDatabaseInfo::TDatabaseType::Root) { - it = Databases.erase(it); - } else { - ++it; - } - } - for (const auto& slot : event.GetSlots()) { - if (slot.GetAssignedTenant().empty()) { - continue; - } - const auto& subDomainKey = TSubDomainKey(slot.GetDomainKey()); - if (subDomainKey) { - SubDomainKeys.insert(subDomainKey); - } - TString databaseName = CanonizePath(slot.GetAssignedTenant()); - auto itDatabase = Databases.try_emplace(databaseName); - if (itDatabase.second) { - TDatabaseInfo& database = itDatabase.first->second; - database.State = slot.GetState(); - database.DatabaseType = TDatabaseInfo::TDatabaseType::Tenant; - DoStartUpdate(databaseName); - } - TDatabaseInfo& database = itDatabase.first->second; - if (database.IsDatabaseReady()) { - ReplayEvents(databaseName, ctx); - } - } -} - void TGRpcRequestProxyImpl::HandleRefreshToken(TRefreshTokenImpl::TPtr& ev, const TActorContext& ctx) { const auto record = ev->Get(); ctx.Send(record->GetFromId(), new TGRpcRequestProxy::TEvRefreshTokenResponse { @@ -445,19 +388,21 @@ bool TGRpcRequestProxyImpl::IsAuthStateOK(const IRequestProxyCtx& ctx) { void TGRpcRequestProxyImpl::HandleSchemeBoard(TSchemeBoardEvents::TEvNotifyUpdate::TPtr& ev, const TActorContext& ctx) { TString databaseName = ev->Get()->Path; LOG_DEBUG_S(*TlsActivationContext, NKikimrServices::GRPC_SERVER, "SchemeBoardUpdate " << databaseName); - - // non-serverless databases should be in the cache already auto itDatabase = Databases.try_emplace(CanonizePath(databaseName)); TDatabaseInfo& database = itDatabase.first->second; - if (itDatabase.second) { - database.State = NKikimrTenantPool::EState::TENANT_OK; - database.DatabaseType = TDatabaseInfo::TDatabaseType::Serverless; - } database.SchemeBoardResult = ev->Release(); const NKikimrScheme::TEvDescribeSchemeResult& describeScheme(database.SchemeBoardResult->DescribeSchemeResult); database.SecurityObject = new TSecurityObject(describeScheme.GetPathDescription().GetSelf().GetOwner(), describeScheme.GetPathDescription().GetSelf().GetEffectiveACL(), false); + if (databaseName == AppData()->TenantName + && describeScheme.GetPathDescription().HasDomainDescription() + && describeScheme.GetPathDescription().GetDomainDescription().HasDomainKey()) + { + auto& domainKey = describeScheme.GetPathDescription().GetDomainDescription().GetDomainKey(); + SubDomainKeys.insert(TSubDomainKey(domainKey)); + } + if (describeScheme.GetPathDescription().HasDomainDescription() && describeScheme.GetPathDescription().GetDomainDescription().HasSecurityState()) { LOG_DEBUG_S(*TlsActivationContext, NKikimrServices::GRPC_SERVER, "Updating SecurityState for " << databaseName); @@ -556,7 +501,6 @@ void TGRpcRequestProxyImpl::StateFunc(TAutoPtr<IEventHandle>& ev, const TActorCo bool handled = true; // handle internal events switch (ev->GetTypeRewrite()) { - HFunc(TEvTenantPool::TEvTenantPoolStatus, HandlePoolStatus); hFunc(TEvTxUserProxy::TEvGetProxyServicesResponse, HandleProxyService); hFunc(NConsole::TEvConfigsDispatcher::TEvSetConfigSubscriptionResponse, HandleConfig); hFunc(NConsole::TEvConsole::TEvConfigNotificationRequest, HandleConfig); |