diff --git a/include/envoy/router/route_config_provider_manager.h b/include/envoy/router/route_config_provider_manager.h index f266407a36515..67a184f2ba8e6 100644 --- a/include/envoy/router/route_config_provider_manager.h +++ b/include/envoy/router/route_config_provider_manager.h @@ -1,5 +1,6 @@ #pragma once +#include #include #include "envoy/config/route/v3/route.pb.h" @@ -55,5 +56,8 @@ class RouteConfigProviderManager { ProtobufMessage::ValidationVisitor& validator) PURE; }; +using RouteConfigProviderManagerPtr = std::unique_ptr; +using RouteConfigProviderManagerSharedPtr = std::shared_ptr; + } // namespace Router } // namespace Envoy diff --git a/source/common/router/rds_impl.cc b/source/common/router/rds_impl.cc index 953da8a9cdc7d..414480e208b89 100644 --- a/source/common/router/rds_impl.cc +++ b/source/common/router/rds_impl.cc @@ -335,7 +335,7 @@ Router::RouteConfigProviderSharedPtr RouteConfigProviderManagerImpl::createRdsRo RdsRouteConfigSubscriptionSharedPtr subscription(new RdsRouteConfigSubscription( rds, manager_identifier, factory_context, stat_prefix, *this)); init_manager.add(subscription->parent_init_target_); - std::shared_ptr new_provider{ + RdsRouteConfigProviderImplSharedPtr new_provider{ new RdsRouteConfigProviderImpl(std::move(subscription), factory_context)}; dynamic_route_config_providers_.insert( {manager_identifier, std::weak_ptr(new_provider)}); diff --git a/source/common/router/rds_impl.h b/source/common/router/rds_impl.h index c547d1b5a8f70..5cf1a235c5541 100644 --- a/source/common/router/rds_impl.h +++ b/source/common/router/rds_impl.h @@ -2,6 +2,7 @@ #include #include +#include #include #include #include @@ -149,7 +150,7 @@ class RdsRouteConfigSubscription bool validateUpdateSize(int num_resources); - std::unique_ptr subscription_; + Envoy::Config::SubscriptionPtr subscription_; const std::string route_config_name_; Server::Configuration::ServerFactoryContext& factory_context_; @@ -227,6 +228,8 @@ class RdsRouteConfigProviderImpl : public RouteConfigProvider, friend class RouteConfigProviderManagerImpl; }; +using RdsRouteConfigProviderImplSharedPtr = std::shared_ptr; + class RouteConfigProviderManagerImpl : public RouteConfigProviderManager, public Singleton::Instance { public: @@ -258,5 +261,7 @@ class RouteConfigProviderManagerImpl : public RouteConfigProviderManager, friend class StaticRouteConfigProviderImpl; }; +using RouteConfigProviderManagerImplPtr = std::unique_ptr; + } // namespace Router } // namespace Envoy diff --git a/source/common/router/scoped_rds.cc b/source/common/router/scoped_rds.cc index 171176aab037b..e54ad6ae530aa 100644 --- a/source/common/router/scoped_rds.cc +++ b/source/common/router/scoped_rds.cc @@ -190,10 +190,10 @@ bool ScopedRdsConfigSubscription::addOrUpdateScopes( return any_applied; } -std::list> +std::list ScopedRdsConfigSubscription::removeScopes( const Protobuf::RepeatedPtrField& scope_names, const std::string& version_info) { - std::list> + std::list to_be_removed_rds_providers; for (const auto& scope_name : scope_names) { auto iter = scoped_route_map_.find(scope_name); @@ -266,7 +266,7 @@ void ScopedRdsConfigSubscription::onConfigUpdate( std::vector exception_msgs; // Do not delete RDS config providers just yet, in case the to be deleted RDS subscriptions could // be reused by some to be added scopes. - std::list> + std::list to_be_removed_rds_providers = removeScopes(removed_resources, version_info); bool any_applied = addOrUpdateScopes(added_resources, diff --git a/source/common/router/scoped_rds.h b/source/common/router/scoped_rds.h index 3a9fa29e47a88..390f524be1921 100644 --- a/source/common/router/scoped_rds.h +++ b/source/common/router/scoped_rds.h @@ -1,5 +1,6 @@ #pragma once +#include #include #include "envoy/common/callback.h" @@ -123,12 +124,14 @@ class ScopedRdsConfigSubscription ScopedRdsConfigSubscription& parent_; std::string scope_name_; - std::shared_ptr route_provider_; + RdsRouteConfigProviderImplSharedPtr route_provider_; // This handle_ is owned by the route config provider's RDS subscription, when the helper // destructs, the handle is deleted as well. Common::CallbackHandle* rds_update_callback_handle_; }; + using RdsRouteConfigProviderHelperPtr = std::unique_ptr; + // Adds or updates scopes, create a new RDS provider for each resource, if an exception is thrown // during updating, the exception message is collected via the exception messages vector. // Returns true if any scope updated, false otherwise. @@ -138,7 +141,7 @@ class ScopedRdsConfigSubscription // Removes given scopes from the managed set of scopes. // Returns a list of to be removed helpers which is temporally held in the onConfigUpdate method, // to make sure new scopes sharing the same RDS source configs could reuse the subscriptions. - std::list> + std::list removeScopes(const Protobuf::RepeatedPtrField& scope_names, const std::string& version_info); @@ -169,14 +172,13 @@ class ScopedRdsConfigSubscription ScopedRouteMap scoped_route_map_; // RdsRouteConfigProvider by scope name. - absl::flat_hash_map> - route_provider_by_scope_; + absl::flat_hash_map route_provider_by_scope_; // A map of (hash, scope-name), used to detect the key conflict between scopes. absl::flat_hash_map scope_name_by_hash_; // For creating RDS subscriptions. Server::Configuration::ServerFactoryContext& factory_context_; const std::string name_; - std::unique_ptr subscription_; + Envoy::Config::SubscriptionPtr subscription_; const envoy::extensions::filters::network::http_connection_manager::v3::ScopedRoutes:: ScopeKeyBuilder scope_key_builder_; Stats::ScopePtr scope_; @@ -240,6 +242,10 @@ class ScopedRoutesConfigProviderManager : public Envoy::Config::ConfigProviderMa RouteConfigProviderManager& route_config_provider_manager_; }; +using ScopedRoutesConfigProviderManagerPtr = std::unique_ptr; +using ScopedRoutesConfigProviderManagerSharedPtr = + std::shared_ptr; + // The optional argument passed to the ConfigProviderManager::create*() functions. class ScopedRoutesConfigProviderManagerOptArg : public Envoy::Config::ConfigProviderManager::OptionalArg { diff --git a/source/common/router/vhds.h b/source/common/router/vhds.h index 956db775c64a9..dc8bd87ded74a 100644 --- a/source/common/router/vhds.h +++ b/source/common/router/vhds.h @@ -72,7 +72,7 @@ class VhdsSubscription : Envoy::Config::SubscriptionBase subscription_; + Envoy::Config::SubscriptionPtr subscription_; Init::TargetImpl init_target_; std::unordered_set& route_config_providers_; }; diff --git a/source/common/secret/sds_api.h b/source/common/secret/sds_api.h index 04afae8f60ad1..e06467104a9d2 100644 --- a/source/common/secret/sds_api.h +++ b/source/common/secret/sds_api.h @@ -75,7 +75,7 @@ class SdsApi : public Envoy::Config::SubscriptionBase< Stats::Store& stats_; const envoy::config::core::v3::ConfigSource sds_config_; - std::unique_ptr subscription_; + Config::SubscriptionPtr subscription_; const std::string sds_config_name_; uint64_t secret_hash_; diff --git a/source/common/upstream/cds_api_impl.h b/source/common/upstream/cds_api_impl.h index 71eb8b351652e..970c12a4ba166 100644 --- a/source/common/upstream/cds_api_impl.h +++ b/source/common/upstream/cds_api_impl.h @@ -51,7 +51,7 @@ class CdsApiImpl : public CdsApi, void runInitializeCallbackIfAny(); ClusterManager& cm_; - std::unique_ptr subscription_; + Config::SubscriptionPtr subscription_; std::string system_version_info_; std::function initialize_callback_; Stats::ScopePtr scope_; diff --git a/source/common/upstream/eds.h b/source/common/upstream/eds.h index a18ee56966306..b1eab5a109725 100644 --- a/source/common/upstream/eds.h +++ b/source/common/upstream/eds.h @@ -1,5 +1,7 @@ #pragma once +#include + #include "envoy/config/cluster/v3/cluster.pb.h" #include "envoy/config/core/v3/base.pb.h" #include "envoy/config/core/v3/config_source.pb.h" @@ -74,7 +76,7 @@ class EdsClusterImpl const envoy::config::endpoint::v3::ClusterLoadAssignment& cluster_load_assignment_; }; - std::unique_ptr subscription_; + Config::SubscriptionPtr subscription_; const LocalInfo::LocalInfo& local_info_; const std::string cluster_name_; std::vector locality_weights_map_; @@ -83,6 +85,8 @@ class EdsClusterImpl InitializePhase initialize_phase_; }; +using EdsClusterImplSharedPtr = std::shared_ptr; + class EdsClusterFactory : public ClusterFactoryImplBase { public: EdsClusterFactory() : ClusterFactoryImplBase(Extensions::Clusters::ClusterTypes::get().Eds) {} diff --git a/source/extensions/filters/network/http_connection_manager/config.cc b/source/extensions/filters/network/http_connection_manager/config.cc index 190db7f475b49..5c830c1ecca44 100644 --- a/source/extensions/filters/network/http_connection_manager/config.cc +++ b/source/extensions/filters/network/http_connection_manager/config.cc @@ -89,13 +89,13 @@ Utility::Singletons Utility::createSingletons(Server::Configuration::FactoryCont context.threadLocal()); }); - std::shared_ptr route_config_provider_manager = + Router::RouteConfigProviderManagerSharedPtr route_config_provider_manager = context.singletonManager().getTyped( SINGLETON_MANAGER_REGISTERED_NAME(route_config_provider_manager), [&context] { return std::make_shared(context.admin()); }); - std::shared_ptr scoped_routes_config_provider_manager = + Router::ScopedRoutesConfigProviderManagerSharedPtr scoped_routes_config_provider_manager = context.singletonManager().getTyped( SINGLETON_MANAGER_REGISTERED_NAME(scoped_routes_config_provider_manager), [&context, route_config_provider_manager] { diff --git a/source/extensions/filters/network/http_connection_manager/config.h b/source/extensions/filters/network/http_connection_manager/config.h index b522fad49b669..d2fef63dedb1f 100644 --- a/source/extensions/filters/network/http_connection_manager/config.h +++ b/source/extensions/filters/network/http_connection_manager/config.h @@ -264,9 +264,8 @@ class Utility { public: struct Singletons { std::shared_ptr date_provider_; - std::shared_ptr route_config_provider_manager_; - std::shared_ptr - scoped_routes_config_provider_manager_; + Router::RouteConfigProviderManagerSharedPtr route_config_provider_manager_; + Router::ScopedRoutesConfigProviderManagerSharedPtr scoped_routes_config_provider_manager_; Tracing::HttpTracerManagerSharedPtr http_tracer_manager_; }; diff --git a/source/server/lds_api.h b/source/server/lds_api.h index 8f0954c93d5cf..0ace5e7b937c2 100644 --- a/source/server/lds_api.h +++ b/source/server/lds_api.h @@ -43,7 +43,7 @@ class LdsApiImpl : public LdsApi, void onConfigUpdateFailed(Envoy::Config::ConfigUpdateFailureReason reason, const EnvoyException* e) override; - std::unique_ptr subscription_; + Config::SubscriptionPtr subscription_; std::string system_version_info_; ListenerManager& listener_manager_; Stats::ScopePtr scope_; diff --git a/test/common/config/subscription_factory_impl_test.cc b/test/common/config/subscription_factory_impl_test.cc index 185f7bb4f13ad..5d975a0f1ba3b 100644 --- a/test/common/config/subscription_factory_impl_test.cc +++ b/test/common/config/subscription_factory_impl_test.cc @@ -41,7 +41,7 @@ class SubscriptionFactoryTest : public testing::Test { subscription_factory_(local_info_, dispatcher_, cm_, random_, validation_visitor_, *api_, runtime_) {} - std::unique_ptr + SubscriptionPtr subscriptionFromConfigSource(const envoy::config::core::v3::ConfigSource& config) { return subscription_factory_.subscriptionFromConfigSource( config, Config::TypeUrl::get().ClusterLoadAssignment, stats_store_, callbacks_, diff --git a/test/common/router/rds_impl_test.cc b/test/common/router/rds_impl_test.cc index 2116ae2a90b95..25a20e50935eb 100644 --- a/test/common/router/rds_impl_test.cc +++ b/test/common/router/rds_impl_test.cc @@ -120,7 +120,7 @@ stat_prefix: foo } NiceMock server_; - std::unique_ptr route_config_provider_manager_; + RouteConfigProviderManagerImplPtr route_config_provider_manager_; RouteConfigProviderSharedPtr rds_; }; @@ -290,7 +290,7 @@ class RdsRouteConfigSubscriptionTest : public RdsTestBase { server_factory_context_.thread_local_.shutdownThread(); } - std::unique_ptr route_config_provider_manager_; + RouteConfigProviderManagerImplPtr route_config_provider_manager_; }; // Verifies that maybeCreateInitManager() creates a noop init manager if the main init manager is in @@ -353,7 +353,7 @@ class RouteConfigProviderManagerImplTest : public RdsTestBase { } envoy::extensions::filters::network::http_connection_manager::v3::Rds rds_; - std::unique_ptr route_config_provider_manager_; + RouteConfigProviderManagerImplPtr route_config_provider_manager_; RouteConfigProviderSharedPtr provider_; }; diff --git a/test/common/router/scoped_rds_test.cc b/test/common/router/scoped_rds_test.cc index 456b95df3b4ad..b3383ec0ad9de 100644 --- a/test/common/router/scoped_rds_test.cc +++ b/test/common/router/scoped_rds_test.cc @@ -101,8 +101,8 @@ class ScopedRoutesTestBase : public testing::Test { NiceMock validation_context_; // server_factory_context_ is used by rds NiceMock server_factory_context_; - std::unique_ptr route_config_provider_manager_; - std::unique_ptr config_provider_manager_; + RouteConfigProviderManagerPtr route_config_provider_manager_; + ScopedRoutesConfigProviderManagerPtr config_provider_manager_; Event::SimulatedTimeSystem time_system_; }; diff --git a/test/common/upstream/eds_speed_test.cc b/test/common/upstream/eds_speed_test.cc index 6f82390c95148..4ed25db80da9c 100644 --- a/test/common/upstream/eds_speed_test.cc +++ b/test/common/upstream/eds_speed_test.cc @@ -148,7 +148,7 @@ class EdsSpeedTest { envoy::config::cluster::v3::Cluster eds_cluster_; NiceMock cm_; NiceMock dispatcher_; - std::shared_ptr cluster_; + EdsClusterImplSharedPtr cluster_; Config::SubscriptionCallbacks* eds_callbacks_{}; Config::OpaqueResourceDecoderImpl resource_decoder_{validation_visitor_, "cluster_name"}; diff --git a/test/common/upstream/eds_test.cc b/test/common/upstream/eds_test.cc index 1370b41b180dd..144d29ad78a0e 100644 --- a/test/common/upstream/eds_test.cc +++ b/test/common/upstream/eds_test.cc @@ -120,7 +120,7 @@ class EdsTest : public testing::Test { envoy::config::cluster::v3::Cluster eds_cluster_; NiceMock cm_; NiceMock dispatcher_; - std::shared_ptr cluster_; + EdsClusterImplSharedPtr cluster_; Config::SubscriptionCallbacks* eds_callbacks_{}; NiceMock random_; NiceMock runtime_;