diff --git a/source/common/upstream/BUILD b/source/common/upstream/BUILD index 061909f4e1cbf..e56faddb855f6 100644 --- a/source/common/upstream/BUILD +++ b/source/common/upstream/BUILD @@ -295,6 +295,19 @@ envoy_cc_library( ], ) +envoy_cc_library( + name = "locality_pool_lib", + srcs = ["locality_pool.cc"], + hdrs = ["locality_pool.h"], + deps = [ + "//envoy/event:dispatcher_interface", + "//envoy/singleton:manager_interface", + "//envoy/upstream:locality_lib", + "//source/common/shared_pool:shared_pool_lib", + "@envoy_api//envoy/config/core/v3:pkg_cc_proto", + ], +) + envoy_cc_library( name = "prod_cluster_info_factory_lib", srcs = ["prod_cluster_info_factory.cc"], @@ -437,6 +450,7 @@ envoy_cc_library( ], deps = [ ":load_balancer_context_base_lib", + ":locality_pool_lib", ":resource_manager_lib", ":upstream_factory_context_lib", "//envoy/event:timer_interface", diff --git a/source/common/upstream/health_discovery_service.cc b/source/common/upstream/health_discovery_service.cc index e3c0d9e2dcf61..9354ca79e5df6 100644 --- a/source/common/upstream/health_discovery_service.cc +++ b/source/common/upstream/health_discovery_service.cc @@ -373,9 +373,12 @@ HdsCluster::HdsCluster(Server::Configuration::ServerFactoryContext& server_conte // Initialize an endpoint host object. auto address_or_error = Network::Address::resolveProtoAddress(host.endpoint().address()); THROW_IF_NOT_OK_REF(address_or_error.status()); + auto const_locality_shared_pool = LocalityPool::getConstLocalitySharedPool( + server_context_.singletonManager(), server_context_.mainThreadDispatcher()); HostSharedPtr endpoint = std::shared_ptr(THROW_OR_RETURN_VALUE( HostImpl::create(info_, "", std::move(address_or_error.value()), nullptr, nullptr, 1, - locality_endpoints.locality(), host.endpoint().health_check_config(), 0, + const_locality_shared_pool->getObject(locality_endpoints.locality()), + host.endpoint().health_check_config(), 0, envoy::config::core::v3::UNKNOWN), std::unique_ptr)); // Add this host/endpoint pointer to our flat list of endpoints for health checking. @@ -489,9 +492,12 @@ void HdsCluster::updateHosts( auto address_or_error = Network::Address::resolveProtoAddress(endpoint.endpoint().address()); THROW_IF_NOT_OK_REF(address_or_error.status()); + auto const_locality_shared_pool = LocalityPool::getConstLocalitySharedPool( + server_context_.singletonManager(), server_context_.mainThreadDispatcher()); host = std::shared_ptr(THROW_OR_RETURN_VALUE( HostImpl::create(info_, "", std::move(address_or_error.value()), nullptr, nullptr, 1, - endpoints.locality(), endpoint.endpoint().health_check_config(), 0, + const_locality_shared_pool->getObject(endpoints.locality()), + endpoint.endpoint().health_check_config(), 0, envoy::config::core::v3::UNKNOWN), std::unique_ptr)); diff --git a/source/common/upstream/locality_pool.cc b/source/common/upstream/locality_pool.cc new file mode 100644 index 0000000000000..29de897b406b5 --- /dev/null +++ b/source/common/upstream/locality_pool.cc @@ -0,0 +1,20 @@ +#include "source/common/upstream/locality_pool.h" + +#include "envoy/config/core/v3/base.pb.h" + +namespace Envoy { +namespace Upstream { + +SINGLETON_MANAGER_REGISTRATION(const_locality_shared_pool); + +ConstLocalitySharedPoolSharedPtr +LocalityPool::getConstLocalitySharedPool(Singleton::Manager& manager, + Event::Dispatcher& dispatcher) { + // Creating a pinned localities pool. + return manager.getTyped( + SINGLETON_MANAGER_REGISTERED_NAME(const_locality_shared_pool), + [&dispatcher] { return std::make_shared(dispatcher); }, true); +} + +} // namespace Upstream +} // namespace Envoy diff --git a/source/common/upstream/locality_pool.h b/source/common/upstream/locality_pool.h new file mode 100644 index 0000000000000..2940ee46052d4 --- /dev/null +++ b/source/common/upstream/locality_pool.h @@ -0,0 +1,33 @@ +#pragma once + +#include + +#include "envoy/config/core/v3/base.pb.h" +#include "envoy/event/dispatcher.h" +#include "envoy/singleton/manager.h" +#include "envoy/upstream/locality.h" + +#include "source/common/shared_pool/shared_pool.h" + +namespace Envoy { +namespace Upstream { + +using ConstLocalitySharedPool = + SharedPool::ObjectSharedPool; +using ConstLocalitySharedPoolSharedPtr = std::shared_ptr; + +class LocalityPool { +public: + /** + * Returns an ObjectSharedPool to store const Locality + * @param manager used to create singleton + * @param dispatcher the dispatcher object reference to the thread that created the + * ObjectSharedPool + */ + static ConstLocalitySharedPoolSharedPtr getConstLocalitySharedPool(Singleton::Manager& manager, + Event::Dispatcher& dispatcher); +}; + +} // namespace Upstream +} // namespace Envoy diff --git a/source/common/upstream/upstream_impl.cc b/source/common/upstream/upstream_impl.cc index 7502696cd3c3d..e1cc1ec4ac501 100644 --- a/source/common/upstream/upstream_impl.cc +++ b/source/common/upstream/upstream_impl.cc @@ -56,6 +56,7 @@ #include "source/common/stats/deferred_creation.h" #include "source/common/upstream/cluster_factory_impl.h" #include "source/common/upstream/health_checker_impl.h" +#include "source/common/upstream/locality_pool.h" #include "source/server/transport_socket_config_impl.h" #include "absl/container/node_hash_set.h" @@ -450,7 +451,8 @@ LoadMetricStats::StatMapPtr LoadMetricStatsImpl::latch() { absl::StatusOr> HostDescriptionImpl::create( ClusterInfoConstSharedPtr cluster, const std::string& hostname, Network::Address::InstanceConstSharedPtr dest_address, MetadataConstSharedPtr endpoint_metadata, - MetadataConstSharedPtr locality_metadata, const envoy::config::core::v3::Locality& locality, + MetadataConstSharedPtr locality_metadata, + std::shared_ptr locality, const envoy::config::endpoint::v3::Endpoint::HealthCheckConfig& health_check_config, uint32_t priority, const AddressVector& address_list) { absl::Status creation_status = absl::OkStatus(); @@ -464,7 +466,8 @@ absl::StatusOr> HostDescriptionImpl::create HostDescriptionImpl::HostDescriptionImpl( absl::Status& creation_status, ClusterInfoConstSharedPtr cluster, const std::string& hostname, Network::Address::InstanceConstSharedPtr dest_address, MetadataConstSharedPtr endpoint_metadata, - MetadataConstSharedPtr locality_metadata, const envoy::config::core::v3::Locality& locality, + MetadataConstSharedPtr locality_metadata, + std::shared_ptr locality, const envoy::config::endpoint::v3::Endpoint::HealthCheckConfig& health_check_config, uint32_t priority, const AddressVector& address_list) : HostDescriptionImplBase(cluster, hostname, dest_address, endpoint_metadata, locality_metadata, @@ -476,7 +479,8 @@ HostDescriptionImpl::HostDescriptionImpl( HostDescriptionImplBase::HostDescriptionImplBase( ClusterInfoConstSharedPtr cluster, const std::string& hostname, Network::Address::InstanceConstSharedPtr dest_address, MetadataConstSharedPtr endpoint_metadata, - MetadataConstSharedPtr locality_metadata, const envoy::config::core::v3::Locality& locality, + MetadataConstSharedPtr locality_metadata, + std::shared_ptr locality, const envoy::config::endpoint::v3::Endpoint::HealthCheckConfig& health_check_config, uint32_t priority, absl::Status& creation_status) : cluster_(cluster), hostname_(hostname), @@ -486,8 +490,8 @@ HostDescriptionImplBase::HostDescriptionImplBase( Config::MetadataEnvoyLbKeys::get().CANARY) .bool_value()), endpoint_metadata_(endpoint_metadata), locality_metadata_(locality_metadata), - locality_(locality), - locality_zone_stat_name_(locality.zone(), cluster->statsScope().symbolTable()), + locality_(std::move(locality)), + locality_zone_stat_name_(locality_->zone(), cluster->statsScope().symbolTable()), priority_(priority), socket_factory_(resolveTransportSocketFactory(dest_address, endpoint_metadata_.get())) { if (health_check_config.port_value() != 0 && dest_address->type() != Network::Address::Type::Ip) { @@ -677,7 +681,7 @@ absl::StatusOr> HostImpl::create( ClusterInfoConstSharedPtr cluster, const std::string& hostname, Network::Address::InstanceConstSharedPtr address, MetadataConstSharedPtr endpoint_metadata, MetadataConstSharedPtr locality_metadata, uint32_t initial_weight, - const envoy::config::core::v3::Locality& locality, + std::shared_ptr locality, const envoy::config::endpoint::v3::Endpoint::HealthCheckConfig& health_check_config, uint32_t priority, const envoy::config::core::v3::HealthStatus health_status, const AddressVector& address_list) { @@ -1540,6 +1544,9 @@ ClusterImplBase::ClusterImplBase(const envoy::config::cluster::v3::Cluster& clus cluster_context.serverFactoryContext().clusterManager().localClusterName().value_or("") == cluster.name()), const_metadata_shared_pool_(Config::Metadata::getConstMetadataSharedPool( + cluster_context.serverFactoryContext().singletonManager(), + cluster_context.serverFactoryContext().mainThreadDispatcher())), + const_locality_shared_pool_(LocalityPool::getConstLocalitySharedPool( cluster_context.serverFactoryContext().singletonManager(), cluster_context.serverFactoryContext().mainThreadDispatcher())) { auto& server_context = cluster_context.serverFactoryContext(); @@ -2139,10 +2146,12 @@ void PriorityStateManager::registerHostForPriority( ? parent_.constMetadataSharedPool()->getObject(locality_lb_endpoint.metadata()) : nullptr; const auto host = std::shared_ptr(THROW_OR_RETURN_VALUE( - HostImpl::create(parent_.info(), hostname, address, endpoint_metadata, locality_metadata, - lb_endpoint.load_balancing_weight().value(), locality_lb_endpoint.locality(), - lb_endpoint.endpoint().health_check_config(), - locality_lb_endpoint.priority(), lb_endpoint.health_status(), address_list), + HostImpl::create( + parent_.info(), hostname, address, endpoint_metadata, locality_metadata, + lb_endpoint.load_balancing_weight().value(), + parent_.constLocalitySharedPool()->getObject(locality_lb_endpoint.locality()), + lb_endpoint.endpoint().health_check_config(), locality_lb_endpoint.priority(), + lb_endpoint.health_status(), address_list), std::unique_ptr)); registerHostForPriority(host, locality_lb_endpoint); } diff --git a/source/common/upstream/upstream_impl.h b/source/common/upstream/upstream_impl.h index 3876752c3f601..2ea553ddda1aa 100644 --- a/source/common/upstream/upstream_impl.h +++ b/source/common/upstream/upstream_impl.h @@ -59,6 +59,7 @@ #include "source/common/shared_pool/shared_pool.h" #include "source/common/stats/isolated_store_impl.h" #include "source/common/upstream/load_balancer_context_base.h" +#include "source/common/upstream/locality_pool.h" #include "source/common/upstream/resource_manager_impl.h" #include "source/common/upstream/transport_socket_match_impl.h" #include "source/common/upstream/upstream_factory_context_impl.h" @@ -212,7 +213,7 @@ class HostDescriptionImplBase : virtual public HostDescription, LoadMetricStats& loadMetricStats() const override { return load_metric_stats_; } const std::string& hostnameForHealthChecks() const override { return health_checks_hostname_; } const std::string& hostname() const override { return hostname_; } - const envoy::config::core::v3::Locality& locality() const override { return locality_; } + const envoy::config::core::v3::Locality& locality() const override { return *locality_; } const MetadataConstSharedPtr localityMetadata() const override { return locality_metadata_; } Stats::StatName localityZoneStatName() const override { return locality_zone_stat_name_.statName(); @@ -248,7 +249,7 @@ class HostDescriptionImplBase : virtual public HostDescription, ClusterInfoConstSharedPtr cluster, const std::string& hostname, Network::Address::InstanceConstSharedPtr dest_address, MetadataConstSharedPtr endpoint_metadata, MetadataConstSharedPtr locality_metadata, - const envoy::config::core::v3::Locality& locality, + std::shared_ptr locality, const envoy::config::endpoint::v3::Endpoint::HealthCheckConfig& health_check_config, uint32_t priority, absl::Status& creation_status); @@ -267,7 +268,7 @@ class HostDescriptionImplBase : virtual public HostDescription, mutable absl::Mutex metadata_mutex_; MetadataConstSharedPtr endpoint_metadata_ ABSL_GUARDED_BY(metadata_mutex_); const MetadataConstSharedPtr locality_metadata_; - const envoy::config::core::v3::Locality locality_; + const std::shared_ptr locality_; Stats::StatNameDynamicStorage locality_zone_stat_name_; mutable HostStats stats_; mutable LoadMetricStatsImpl load_metric_stats_; @@ -294,7 +295,7 @@ class HostDescriptionImpl : public HostDescriptionImplBase { create(ClusterInfoConstSharedPtr cluster, const std::string& hostname, Network::Address::InstanceConstSharedPtr dest_address, MetadataConstSharedPtr endpoint_metadata, MetadataConstSharedPtr locality_metadata, - const envoy::config::core::v3::Locality& locality, + std::shared_ptr locality, const envoy::config::endpoint::v3::Endpoint::HealthCheckConfig& health_check_config, uint32_t priority, const AddressVector& address_list = {}); @@ -310,7 +311,7 @@ class HostDescriptionImpl : public HostDescriptionImplBase { absl::Status& creation_status, ClusterInfoConstSharedPtr cluster, const std::string& hostname, Network::Address::InstanceConstSharedPtr dest_address, MetadataConstSharedPtr endpoint_metadata, MetadataConstSharedPtr locality_metadata, - const envoy::config::core::v3::Locality& locality, + std::shared_ptr locality, const envoy::config::endpoint::v3::Endpoint::HealthCheckConfig& health_check_config, uint32_t priority, const AddressVector& address_list = {}); @@ -477,7 +478,7 @@ class HostImpl : public HostImplBase, public HostDescriptionImpl { create(ClusterInfoConstSharedPtr cluster, const std::string& hostname, Network::Address::InstanceConstSharedPtr address, MetadataConstSharedPtr endpoint_metadata, MetadataConstSharedPtr locality_metadata, uint32_t initial_weight, - const envoy::config::core::v3::Locality& locality, + std::shared_ptr locality, const envoy::config::endpoint::v3::Endpoint::HealthCheckConfig& health_check_config, uint32_t priority, const envoy::config::core::v3::HealthStatus health_status, const AddressVector& address_list = {}); @@ -486,7 +487,8 @@ class HostImpl : public HostImplBase, public HostDescriptionImpl { HostImpl(absl::Status& creation_status, ClusterInfoConstSharedPtr cluster, const std::string& hostname, Network::Address::InstanceConstSharedPtr address, MetadataConstSharedPtr endpoint_metadata, MetadataConstSharedPtr locality_metadata, - uint32_t initial_weight, const envoy::config::core::v3::Locality& locality, + uint32_t initial_weight, + std::shared_ptr locality, const envoy::config::endpoint::v3::Endpoint::HealthCheckConfig& health_check_config, uint32_t priority, const envoy::config::core::v3::HealthStatus health_status, const AddressVector& address_list = {}) @@ -1173,6 +1175,10 @@ class ClusterImplBase : public Cluster, protected Logger::Loggable(lb_endpoint.metadata()), std::make_shared( locality_lb_endpoint.metadata()), - locality_lb_endpoint.locality(), lb_endpoint.endpoint().health_check_config(), - locality_lb_endpoint.priority(), creation_status), + // TODO(adisuissa): Create through localities shared pool. + std::make_shared( + locality_lb_endpoint.locality()), + lb_endpoint.endpoint().health_check_config(), locality_lb_endpoint.priority(), + creation_status), override_transport_socket_options_(override_transport_socket_options), address_(address), address_list_or_null_(makeAddressListOrNull(address, address_list)) { health_check_address_ = diff --git a/source/extensions/clusters/dns/dns_cluster.cc b/source/extensions/clusters/dns/dns_cluster.cc index 9919fdb2cfd1e..222923c17e295 100644 --- a/source/extensions/clusters/dns/dns_cluster.cc +++ b/source/extensions/clusters/dns/dns_cluster.cc @@ -321,7 +321,8 @@ DnsClusterImpl::ResolveTarget::createStrictDnsHosts( std::make_shared(lb_endpoint_.metadata()), std::make_shared( locality_lb_endpoints_.metadata()), - lb_endpoint_.load_balancing_weight().value(), locality_lb_endpoints_.locality(), + lb_endpoint_.load_balancing_weight().value(), + parent_.constLocalitySharedPool()->getObject(locality_lb_endpoints_.locality()), lb_endpoint_.endpoint().health_check_config(), locality_lb_endpoints_.priority(), lb_endpoint_.health_status()); diff --git a/source/extensions/clusters/original_dst/original_dst_cluster.cc b/source/extensions/clusters/original_dst/original_dst_cluster.cc index 511f46abad279..2536292562c29 100644 --- a/source/extensions/clusters/original_dst/original_dst_cluster.cc +++ b/source/extensions/clusters/original_dst/original_dst_cluster.cc @@ -76,7 +76,7 @@ HostSelectionResponse OriginalDstCluster::LoadBalancer::chooseHost(LoadBalancerC HostSharedPtr host(std::shared_ptr(THROW_OR_RETURN_VALUE( HostImpl::create( info, info->name() + dst_addr.asString(), std::move(host_ip_port), nullptr, nullptr, - 1, envoy::config::core::v3::Locality().default_instance(), + 1, std::make_shared(), envoy::config::endpoint::v3::Endpoint::HealthCheckConfig().default_instance(), 0, envoy::config::core::v3::UNKNOWN), std::unique_ptr))); diff --git a/source/extensions/clusters/redis/redis_cluster.h b/source/extensions/clusters/redis/redis_cluster.h index 1b12f347ddf88..29d2470728b89 100644 --- a/source/extensions/clusters/redis/redis_cluster.h +++ b/source/extensions/clusters/redis/redis_cluster.h @@ -166,7 +166,9 @@ class RedisCluster : public Upstream::BaseDynamicClusterImpl { std::make_shared( parent.localityLbEndpoint().metadata()), parent.lbEndpoint().load_balancing_weight().value(), - parent.localityLbEndpoint().locality(), + // TODO(adisuissa): Convert to use a shared pool of localities. + std::make_shared( + parent.localityLbEndpoint().locality()), parent.lbEndpoint().endpoint().health_check_config(), parent.localityLbEndpoint().priority(), parent.lbEndpoint().health_status()), primary_(primary) {} diff --git a/source/extensions/clusters/reverse_connection/reverse_connection.cc b/source/extensions/clusters/reverse_connection/reverse_connection.cc index 6d1c7452f2f57..98723c02ef21f 100644 --- a/source/extensions/clusters/reverse_connection/reverse_connection.cc +++ b/source/extensions/clusters/reverse_connection/reverse_connection.cc @@ -103,7 +103,7 @@ Upstream::HostSelectionResponse RevConCluster::checkAndCreateHost(absl::string_v auto host_result = Upstream::HostImpl::create( info(), absl::StrCat(info()->name(), static_cast(node_id)), std::move(host_address), nullptr /* endpoint_metadata */, nullptr /* locality_metadata */, - 1 /* initial_weight */, envoy::config::core::v3::Locality().default_instance(), + 1 /* initial_weight */, std::make_shared(), envoy::config::endpoint::v3::Endpoint::HealthCheckConfig().default_instance(), 0 /* priority */, envoy::config::core::v3::UNKNOWN); diff --git a/source/extensions/clusters/strict_dns/strict_dns_cluster.cc b/source/extensions/clusters/strict_dns/strict_dns_cluster.cc index 49f281be43ddb..a32ebbd11206d 100644 --- a/source/extensions/clusters/strict_dns/strict_dns_cluster.cc +++ b/source/extensions/clusters/strict_dns/strict_dns_cluster.cc @@ -157,16 +157,17 @@ void StrictDnsClusterImpl::ResolveTarget::startResolve() { } new_hosts.emplace_back(THROW_OR_RETURN_VALUE( - HostImpl::create(parent_.info_, hostname_, address, - // TODO(zyfjeff): Created through metadata shared pool - std::make_shared( - lb_endpoint_.metadata()), - std::make_shared( - locality_lb_endpoints_.metadata()), - lb_endpoint_.load_balancing_weight().value(), - locality_lb_endpoints_.locality(), - lb_endpoint_.endpoint().health_check_config(), - locality_lb_endpoints_.priority(), lb_endpoint_.health_status()), + HostImpl::create( + parent_.info_, hostname_, address, + // TODO(zyfjeff): Created through metadata shared pool + std::make_shared( + lb_endpoint_.metadata()), + std::make_shared( + locality_lb_endpoints_.metadata()), + lb_endpoint_.load_balancing_weight().value(), + parent_.constLocalitySharedPool()->getObject(locality_lb_endpoints_.locality()), + lb_endpoint_.endpoint().health_check_config(), + locality_lb_endpoints_.priority(), lb_endpoint_.health_status()), std::unique_ptr)); all_new_hosts.emplace(address->asString()); ttl_refresh_rate = min(ttl_refresh_rate, addrinfo.ttl_); diff --git a/source/extensions/filters/network/redis_proxy/conn_pool_impl.cc b/source/extensions/filters/network/redis_proxy/conn_pool_impl.cc index 76eabcc5cf103..e5cdaac500590 100644 --- a/source/extensions/filters/network/redis_proxy/conn_pool_impl.cc +++ b/source/extensions/filters/network/redis_proxy/conn_pool_impl.cc @@ -421,7 +421,7 @@ Common::Redis::Client::PoolRequest* InstanceImpl::ThreadLocalPool::makeRequestTo Upstream::HostSharedPtr new_host{THROW_OR_RETURN_VALUE( Upstream::HostImpl::create( cluster_->info(), "", address_ptr, nullptr, nullptr, 1, - envoy::config::core::v3::Locality(), + std::make_shared(), envoy::config::endpoint::v3::Endpoint::HealthCheckConfig::default_instance(), 0, envoy::config::core::v3::UNKNOWN), std::unique_ptr)}; diff --git a/test/common/http/conn_pool_grid_test.cc b/test/common/http/conn_pool_grid_test.cc index ef7878b043d42..c8fe65ea5c63b 100644 --- a/test/common/http/conn_pool_grid_test.cc +++ b/test/common/http/conn_pool_grid_test.cc @@ -188,7 +188,7 @@ class ConnectivityGridTest : public Event::TestUsingSimulatedTime, public testin #endif host_ = std::shared_ptr(*Upstream::HostImpl::create( cluster_, host_impl_hostname_, *Network::Utility::resolveUrl("tcp://127.0.0.1:9000"), - nullptr, nullptr, 1, envoy::config::core::v3::Locality(), + nullptr, nullptr, 1, std::make_shared(), envoy::config::endpoint::v3::Endpoint::HealthCheckConfig::default_instance(), 0, envoy::config::core::v3::UNKNOWN, address_list_)); diff --git a/test/common/upstream/health_checker_impl_test.cc b/test/common/upstream/health_checker_impl_test.cc index 3cb2753c28cd6..73402e295b08a 100644 --- a/test/common/upstream/health_checker_impl_test.cc +++ b/test/common/upstream/health_checker_impl_test.cc @@ -1718,7 +1718,7 @@ TEST_F(HttpHealthCheckerImplTest, SuccessServiceCheckWithCustomHostValueOnTheHos health_check_config.set_hostname(host); auto test_host = std::shared_ptr( *HostImpl::create(cluster_->info_, "", *Network::Utility::resolveUrl("tcp://127.0.0.1:80"), - nullptr, nullptr, 1, envoy::config::core::v3::Locality(), + nullptr, nullptr, 1, std::make_shared(), health_check_config, 0, envoy::config::core::v3::UNKNOWN)); const std::string path = "/healthcheck"; setupServiceValidationHC(); @@ -1761,10 +1761,10 @@ TEST_F(HttpHealthCheckerImplTest, const std::string host = "www.envoyproxy.io"; envoy::config::endpoint::v3::Endpoint::HealthCheckConfig health_check_config; health_check_config.set_hostname(host); - auto test_host = std::shared_ptr( - *HostImpl::create(cluster_->info_, "", *Network::Utility::resolveUrl("tcp://127.0.0.1:80"), - nullptr, nullptr, 1, envoy::config::core::v3::Locality(), - health_check_config, 0, envoy::config::core::v3::UNKNOWN)); + auto test_host = std::shared_ptr(*HostImpl::create( + cluster_->info_, "", *Network::Utility::resolveUrl("tcp://127.0.0.1:80"), nullptr, nullptr, 1, + std::make_shared(), health_check_config, 0, + envoy::config::core::v3::UNKNOWN)); const std::string path = "/healthcheck"; // Setup health check config with a different host, to check that we still get the host configured // on the endpoint. @@ -2600,8 +2600,8 @@ TEST_F(HttpHealthCheckerImplTest, DynamicRemoveDisableHC) { health_check_config.set_disable_active_health_check(false); auto enable_host = std::shared_ptr(*HostImpl::create( cluster_->info_, "test_host", *Network::Utility::resolveUrl("tcp://127.0.0.1:80"), nullptr, - nullptr, 1, envoy::config::core::v3::Locality(), health_check_config, 0, - envoy::config::core::v3::UNKNOWN)); + nullptr, 1, std::make_shared(), health_check_config, + 0, envoy::config::core::v3::UNKNOWN)); cluster_->prioritySet().getMockHostSet(0)->hosts_ = {enable_host}; health_checker_->start(); EXPECT_CALL(*this, onHostStatus(_, HealthTransition::Unchanged)); @@ -2609,8 +2609,8 @@ TEST_F(HttpHealthCheckerImplTest, DynamicRemoveDisableHC) { health_check_config.set_disable_active_health_check(true); auto disable_host = std::shared_ptr(*HostImpl::create( cluster_->info_, "test_host", *Network::Utility::resolveUrl("tcp://127.0.0.1:80"), nullptr, - nullptr, 1, envoy::config::core::v3::Locality(), health_check_config, 0, - envoy::config::core::v3::UNKNOWN)); + nullptr, 1, std::make_shared(), health_check_config, + 0, envoy::config::core::v3::UNKNOWN)); cluster_->prioritySet().getMockHostSet(0)->hosts_ = {disable_host}; EXPECT_CALL(*test_sessions_[0]->client_connection_, close(Network::ConnectionCloseType::Abort)); cluster_->prioritySet().runUpdateCallbacks(0, {disable_host}, {enable_host}); @@ -2629,8 +2629,8 @@ TEST_F(HttpHealthCheckerImplTest, AddDisableHC) { health_check_config.set_disable_active_health_check(true); auto disable_host = std::shared_ptr(*HostImpl::create( cluster_->info_, "test_host", *Network::Utility::resolveUrl("tcp://127.0.0.1:80"), nullptr, - nullptr, 1, envoy::config::core::v3::Locality(), health_check_config, 0, - envoy::config::core::v3::UNKNOWN)); + nullptr, 1, std::make_shared(), health_check_config, + 0, envoy::config::core::v3::UNKNOWN)); cluster_->prioritySet().getMockHostSet(0)->hosts_ = {disable_host}; health_checker_->start(); EXPECT_CALL(*this, onHostStatus(_, HealthTransition::Unchanged)).Times(0); @@ -5264,10 +5264,10 @@ TEST_F(GrpcHealthCheckerImplTest, SuccessWithHostname) { envoy::config::endpoint::v3::Endpoint::HealthCheckConfig health_check_config; health_check_config.set_hostname(expected_host); - auto test_host = std::shared_ptr( - *HostImpl::create(cluster_->info_, "", *Network::Utility::resolveUrl("tcp://127.0.0.1:80"), - nullptr, nullptr, 1, envoy::config::core::v3::Locality(), - health_check_config, 0, envoy::config::core::v3::UNKNOWN)); + auto test_host = std::shared_ptr(*HostImpl::create( + cluster_->info_, "", *Network::Utility::resolveUrl("tcp://127.0.0.1:80"), nullptr, nullptr, 1, + std::make_shared(), health_check_config, 0, + envoy::config::core::v3::UNKNOWN)); cluster_->prioritySet().getMockHostSet(0)->hosts_ = {test_host}; runHealthCheck(expected_host); } @@ -5279,10 +5279,10 @@ TEST_F(GrpcHealthCheckerImplTest, SuccessWithHostnameOverridesConfig) { envoy::config::endpoint::v3::Endpoint::HealthCheckConfig health_check_config; health_check_config.set_hostname(expected_host); - auto test_host = std::shared_ptr( - *HostImpl::create(cluster_->info_, "", *Network::Utility::resolveUrl("tcp://127.0.0.1:80"), - nullptr, nullptr, 1, envoy::config::core::v3::Locality(), - health_check_config, 0, envoy::config::core::v3::UNKNOWN)); + auto test_host = std::shared_ptr(*HostImpl::create( + cluster_->info_, "", *Network::Utility::resolveUrl("tcp://127.0.0.1:80"), nullptr, nullptr, 1, + std::make_shared(), health_check_config, 0, + envoy::config::core::v3::UNKNOWN)); cluster_->prioritySet().getMockHostSet(0)->hosts_ = {test_host}; runHealthCheck(expected_host); } diff --git a/test/common/upstream/load_balancer_simulation_test.cc b/test/common/upstream/load_balancer_simulation_test.cc index 43d2104bd0090..67438512fa4fc 100644 --- a/test/common/upstream/load_balancer_simulation_test.cc +++ b/test/common/upstream/load_balancer_simulation_test.cc @@ -39,7 +39,8 @@ static HostSharedPtr newTestHost(Upstream::ClusterInfoConstSharedPtr cluster, envoy::config::core::v3::Locality locality; locality.set_zone(zone); return HostSharedPtr{*HostImpl::create( - cluster, "", *Network::Utility::resolveUrl(url), nullptr, nullptr, weight, locality, + cluster, "", *Network::Utility::resolveUrl(url), nullptr, nullptr, weight, + std::make_shared(locality), envoy::config::endpoint::v3::Endpoint::HealthCheckConfig::default_instance(), 0, envoy::config::core::v3::UNKNOWN)}; } diff --git a/test/common/upstream/upstream_impl_test.cc b/test/common/upstream/upstream_impl_test.cc index 49a954420c9a2..113ae0bd354cb 100644 --- a/test/common/upstream/upstream_impl_test.cc +++ b/test/common/upstream/upstream_impl_test.cc @@ -1897,7 +1897,8 @@ TEST_F(HostImplTest, HostnameCanaryAndLocality) { locality.set_sub_zone("world"); std::unique_ptr host = *HostImpl::create( cluster.info_, "lyft.com", *Network::Utility::resolveUrl("tcp://10.0.0.1:1234"), - std::make_shared(metadata), nullptr, 1, locality, + std::make_shared(metadata), nullptr, 1, + std::make_shared(locality), envoy::config::endpoint::v3::Endpoint::HealthCheckConfig::default_instance(), 1, envoy::config::core::v3::UNKNOWN); EXPECT_EQ(cluster.info_.get(), &host->cluster()); @@ -1923,7 +1924,8 @@ TEST_F(HostImplTest, CreateConnection) { *Network::Utility::resolveUrl("tcp://10.0.0.1:1234"); auto host = std::shared_ptr(*HostImpl::create( cluster.info_, "lyft.com", address, - std::make_shared(metadata), nullptr, 1, locality, + std::make_shared(metadata), nullptr, 1, + std::make_shared(locality), envoy::config::endpoint::v3::Endpoint::HealthCheckConfig::default_instance(), 1, envoy::config::core::v3::UNKNOWN)); @@ -1961,7 +1963,8 @@ TEST_F(HostImplTest, CreateConnectionHappyEyeballs) { }; auto host = std::shared_ptr(*HostImpl::create( cluster.info_, "lyft.com", address, - std::make_shared(metadata), nullptr, 1, locality, + std::make_shared(metadata), nullptr, 1, + std::make_shared(locality), envoy::config::endpoint::v3::Endpoint::HealthCheckConfig::default_instance(), 1, envoy::config::core::v3::UNKNOWN, address_list)); @@ -2008,7 +2011,8 @@ TEST_F(HostImplTest, ProxyOverridesHappyEyeballs) { }; auto host = std::shared_ptr(*HostImpl::create( cluster.info_, "lyft.com", address, - std::make_shared(metadata), nullptr, 1, locality, + std::make_shared(metadata), nullptr, 1, + std::make_shared(locality), envoy::config::endpoint::v3::Endpoint::HealthCheckConfig::default_instance(), 1, envoy::config::core::v3::UNKNOWN, address_list)); @@ -2064,7 +2068,8 @@ TEST_F(HostImplTest, CreateConnectionHappyEyeballsWithConfig) { }; auto host = std::shared_ptr(*HostImpl::create( cluster.info_, "lyft.com", address, - std::make_shared(metadata), nullptr, 1, locality, + std::make_shared(metadata), nullptr, 1, + std::make_shared(locality), envoy::config::endpoint::v3::Endpoint::HealthCheckConfig::default_instance(), 1, envoy::config::core::v3::UNKNOWN, address_list)); @@ -2115,7 +2120,8 @@ TEST_F(HostImplTest, CreateConnectionHappyEyeballsWithEmptyConfig) { }; auto host = std::shared_ptr(*HostImpl::create( cluster.info_, "lyft.com", address, - std::make_shared(metadata), nullptr, 1, locality, + std::make_shared(metadata), nullptr, 1, + std::make_shared(locality), envoy::config::endpoint::v3::Endpoint::HealthCheckConfig::default_instance(), 1, envoy::config::core::v3::UNKNOWN, address_list)); @@ -2261,7 +2267,7 @@ TEST_F(HostImplTest, HealthPipeAddress) { config.set_port_value(8000); EXPECT_EQ(HostDescriptionImpl::create( info, "", *Network::Utility::resolveUrl("unix://foo"), nullptr, nullptr, - envoy::config::core::v3::Locality().default_instance(), config, 1) + std::make_shared(), config, 1) .status() .message(), "Invalid host configuration: non-zero port for non-IP address"); @@ -2276,7 +2282,8 @@ TEST_F(HostImplTest, NetnsInvalid) { Network::Utility::parseInternetAddressAndPortNoThrow("1.2.3.4:9999", true, "/netns/filepath"); EXPECT_EQ( HostDescriptionImpl::create(info, "", dest_addr, nullptr, nullptr, - envoy::config::core::v3::Locality().default_instance(), config, 1) + std::make_shared(), + config, 1) .status() .message(), "Invalid host configuration: hosts cannot specify network namespaces with their address"); @@ -2296,7 +2303,7 @@ TEST_F(HostImplTest, HealthcheckHostname) { config.set_hostname("foo"); std::unique_ptr descr = *HostDescriptionImpl::create( info, "", *Network::Utility::resolveUrl("tcp://1.2.3.4:80"), nullptr, nullptr, - envoy::config::core::v3::Locality().default_instance(), config, 1); + std::make_shared(), config, 1); EXPECT_EQ("foo", descr->hostnameForHealthChecks()); } diff --git a/test/common/upstream/utility.h b/test/common/upstream/utility.h index a374f9734907e..0186f7e97b1fc 100644 --- a/test/common/upstream/utility.h +++ b/test/common/upstream/utility.h @@ -98,7 +98,7 @@ inline HostSharedPtr makeTestHost(ClusterInfoConstSharedPtr cluster, const std:: const std::string& url, uint32_t weight = 1) { return std::shared_ptr(*HostImpl::create( cluster, hostname, *Network::Utility::resolveUrl(url), nullptr, nullptr, weight, - envoy::config::core::v3::Locality(), + std::make_shared(), envoy::config::endpoint::v3::Endpoint::HealthCheckConfig::default_instance(), 0, envoy::config::core::v3::UNKNOWN)); } @@ -108,7 +108,7 @@ inline HostSharedPtr makeTestHost(ClusterInfoConstSharedPtr cluster, const std:: Host::HealthStatus status = Host::HealthStatus::UNKNOWN) { return std::shared_ptr(*HostImpl::create( cluster, "", *Network::Utility::resolveUrl(url), nullptr, nullptr, weight, - envoy::config::core::v3::Locality(), + std::make_shared(), envoy::config::endpoint::v3::Endpoint::HealthCheckConfig::default_instance(), priority, status)); } @@ -118,7 +118,8 @@ inline HostSharedPtr makeTestHost(ClusterInfoConstSharedPtr cluster, const std:: uint32_t priority = 0, Host::HealthStatus status = Host::HealthStatus::UNKNOWN) { return std::shared_ptr(*HostImpl::create( - cluster, "", *Network::Utility::resolveUrl(url), nullptr, nullptr, weight, locality, + cluster, "", *Network::Utility::resolveUrl(url), nullptr, nullptr, weight, + std::make_shared(locality), envoy::config::endpoint::v3::Endpoint::HealthCheckConfig::default_instance(), priority, status)); } @@ -129,7 +130,7 @@ inline HostSharedPtr makeTestHost(ClusterInfoConstSharedPtr cluster, const std:: return std::shared_ptr(*HostImpl::create( cluster, "", *Network::Utility::resolveUrl(url), std::make_shared(metadata), nullptr, weight, - envoy::config::core::v3::Locality(), + std::make_shared(), envoy::config::endpoint::v3::Endpoint::HealthCheckConfig::default_instance(), 0, envoy::config::core::v3::UNKNOWN)); } @@ -140,7 +141,8 @@ inline HostSharedPtr makeTestHost(ClusterInfoConstSharedPtr cluster, const std:: return std::shared_ptr(*HostImpl::create( cluster, "", *Network::Utility::resolveUrl(url), std::make_shared(metadata), nullptr, weight, - locality, envoy::config::endpoint::v3::Endpoint::HealthCheckConfig::default_instance(), 0, + std::make_shared(locality), + envoy::config::endpoint::v3::Endpoint::HealthCheckConfig::default_instance(), 0, envoy::config::core::v3::UNKNOWN)); } @@ -150,8 +152,8 @@ makeTestHost(ClusterInfoConstSharedPtr cluster, const std::string& url, uint32_t weight = 1) { return std::shared_ptr( *HostImpl::create(cluster, "", *Network::Utility::resolveUrl(url), nullptr, nullptr, weight, - envoy::config::core::v3::Locality(), health_check_config, 0, - envoy::config::core::v3::UNKNOWN)); + std::make_shared(), health_check_config, + 0, envoy::config::core::v3::UNKNOWN)); } inline HostSharedPtr makeTestHostWithHashKey(ClusterInfoConstSharedPtr cluster, @@ -164,7 +166,7 @@ inline HostSharedPtr makeTestHostWithHashKey(ClusterInfoConstSharedPtr cluster, return std::shared_ptr(*HostImpl::create( cluster, "", *Network::Utility::resolveUrl(url), std::make_shared(metadata), nullptr, weight, - envoy::config::core::v3::Locality(), + std::make_shared(), envoy::config::endpoint::v3::Endpoint::HealthCheckConfig::default_instance(), 0, envoy::config::core::v3::UNKNOWN)); } @@ -174,7 +176,7 @@ inline HostSharedPtr makeTestHostWithMetadata(ClusterInfoConstSharedPtr cluster, const std::string& url, uint32_t weight = 1) { return std::shared_ptr(*HostImpl::create( cluster, "", *Network::Utility::resolveUrl(url), metadata, nullptr, weight, - envoy::config::core::v3::Locality(), + std::make_shared(), envoy::config::endpoint::v3::Endpoint::HealthCheckConfig::default_instance(), 0, envoy::config::core::v3::UNKNOWN)); } @@ -183,7 +185,7 @@ inline HostDescriptionConstSharedPtr makeTestHostDescription(ClusterInfoConstSha const std::string& url) { return std::shared_ptr(*HostDescriptionImpl::create( cluster, "", *Network::Utility::resolveUrl(url), nullptr, nullptr, - envoy::config::core::v3::Locality().default_instance(), + std::make_shared(), envoy::config::endpoint::v3::Endpoint::HealthCheckConfig::default_instance(), 0)); } diff --git a/test/extensions/load_balancing_policies/random/random_lb_simulation_test.cc b/test/extensions/load_balancing_policies/random/random_lb_simulation_test.cc index bdb0ff6bb03f7..5313b82e00ead 100644 --- a/test/extensions/load_balancing_policies/random/random_lb_simulation_test.cc +++ b/test/extensions/load_balancing_policies/random/random_lb_simulation_test.cc @@ -24,7 +24,8 @@ static HostSharedPtr newTestHost(Upstream::ClusterInfoConstSharedPtr cluster, envoy::config::core::v3::Locality locality; locality.set_zone(zone); return HostSharedPtr{*HostImpl::create( - cluster, "", *Network::Utility::resolveUrl(url), nullptr, nullptr, weight, locality, + cluster, "", *Network::Utility::resolveUrl(url), nullptr, nullptr, weight, + std::make_shared(locality), envoy::config::endpoint::v3::Endpoint::HealthCheckConfig::default_instance(), 0, envoy::config::core::v3::UNKNOWN)}; } diff --git a/test/integration/clusters/custom_static_cluster.cc b/test/integration/clusters/custom_static_cluster.cc index eae071498b87a..0330c821bfb80 100644 --- a/test/integration/clusters/custom_static_cluster.cc +++ b/test/integration/clusters/custom_static_cluster.cc @@ -27,7 +27,7 @@ Upstream::HostSharedPtr CustomStaticCluster::makeHost() { return Upstream::HostSharedPtr{*Upstream::HostImpl::create( info(), "", address, std::make_shared(info()->metadata()), nullptr, 1, - envoy::config::core::v3::Locality::default_instance(), + std::make_shared(), envoy::config::endpoint::v3::Endpoint::HealthCheckConfig::default_instance(), priority_, envoy::config::core::v3::UNKNOWN)}; } diff --git a/test/integration/utility.cc b/test/integration/utility.cc index 14bfac91492ff..d75031cfb51c5 100644 --- a/test/integration/utility.cc +++ b/test/integration/utility.cc @@ -226,7 +226,7 @@ IntegrationUtil::makeSingleRequest(const Network::Address::InstanceConstSharedPt cluster, "", *Network::Utility::resolveUrl( fmt::format("{}://127.0.0.1:80", (type == Http::CodecType::HTTP3 ? "udp" : "tcp"))), - nullptr, nullptr, envoy::config::core::v3::Locality().default_instance(), + nullptr, nullptr, std::make_shared(), envoy::config::endpoint::v3::Endpoint::HealthCheckConfig::default_instance(), 0)); if (type <= Http::CodecType::HTTP2) {