Skip to content

Commit 22683a0

Browse files
authored
server: remove RandomGenerator from everywhere except Api (envoyproxy#13360)
Signed-off-by: Alex Konradi <[email protected]>
1 parent 9dd666d commit 22683a0

File tree

69 files changed

+309
-338
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

69 files changed

+309
-338
lines changed

include/envoy/server/factory_context.h

-5
Original file line numberDiff line numberDiff line change
@@ -64,11 +64,6 @@ class CommonFactoryContext {
6464
*/
6565
virtual ProtobufMessage::ValidationContext& messageValidationContext() PURE;
6666

67-
/**
68-
* @return RandomGenerator& the random generator for the server.
69-
*/
70-
virtual Envoy::Random::RandomGenerator& random() PURE;
71-
7267
/**
7368
* @return Runtime::Loader& the singleton runtime loader for the server.
7469
*/

include/envoy/server/instance.h

-5
Original file line numberDiff line numberDiff line change
@@ -135,11 +135,6 @@ class Instance {
135135
*/
136136
virtual const Options& options() PURE;
137137

138-
/**
139-
* @return RandomGenerator& the random generator for the server.
140-
*/
141-
virtual Random::RandomGenerator& random() PURE;
142-
143138
/**
144139
* @return Runtime::Loader& the singleton runtime loader for the server.
145140
*/

include/envoy/server/transport_socket_config.h

-5
Original file line numberDiff line numberDiff line change
@@ -64,11 +64,6 @@ class TransportSocketFactoryContext {
6464
*/
6565
virtual Event::Dispatcher& dispatcher() PURE;
6666

67-
/**
68-
* @return RandomGenerator& the random generator for the server.
69-
*/
70-
virtual Envoy::Random::RandomGenerator& random() PURE;
71-
7267
/**
7368
* @return the server-wide stats store.
7469
*/

include/envoy/upstream/cluster_factory.h

-5
Original file line numberDiff line numberDiff line change
@@ -79,11 +79,6 @@ class ClusterFactoryContext {
7979
*/
8080
virtual AccessLog::AccessLogManager& logManager() PURE;
8181

82-
/**
83-
* @return RandomGenerator& the random generator for the server.
84-
*/
85-
virtual Random::RandomGenerator& random() PURE;
86-
8782
/**
8883
* @return Runtime::Loader& the singleton runtime loader for the server.
8984
*/

source/common/access_log/access_log_impl.cc

+2-1
Original file line numberDiff line numberDiff line change
@@ -300,7 +300,8 @@ InstanceSharedPtr AccessLogFactory::fromProto(const envoy::config::accesslog::v3
300300
Server::Configuration::FactoryContext& context) {
301301
FilterPtr filter;
302302
if (config.has_filter()) {
303-
filter = FilterFactory::fromProto(config.filter(), context.runtime(), context.random(),
303+
filter = FilterFactory::fromProto(config.filter(), context.runtime(),
304+
context.api().randomGenerator(),
304305
context.messageValidationVisitor());
305306
}
306307

source/common/config/subscription_factory_impl.cc

+7-7
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,9 @@ namespace Config {
1818

1919
SubscriptionFactoryImpl::SubscriptionFactoryImpl(
2020
const LocalInfo::LocalInfo& local_info, Event::Dispatcher& dispatcher,
21-
Upstream::ClusterManager& cm, Random::RandomGenerator& random,
22-
ProtobufMessage::ValidationVisitor& validation_visitor, Api::Api& api, Runtime::Loader& runtime)
23-
: local_info_(local_info), dispatcher_(dispatcher), cm_(cm), random_(random),
21+
Upstream::ClusterManager& cm, ProtobufMessage::ValidationVisitor& validation_visitor,
22+
Api::Api& api, Runtime::Loader& runtime)
23+
: local_info_(local_info), dispatcher_(dispatcher), cm_(cm),
2424
validation_visitor_(validation_visitor), api_(api), runtime_(runtime) {}
2525

2626
SubscriptionPtr SubscriptionFactoryImpl::subscriptionFromConfigSource(
@@ -60,8 +60,8 @@ SubscriptionPtr SubscriptionFactoryImpl::subscriptionFromConfigSource(
6060
config.DebugString());
6161
case envoy::config::core::v3::ApiConfigSource::REST:
6262
return std::make_unique<HttpSubscriptionImpl>(
63-
local_info_, cm_, api_config_source.cluster_names()[0], dispatcher_, random_,
64-
Utility::apiConfigSourceRefreshDelay(api_config_source),
63+
local_info_, cm_, api_config_source.cluster_names()[0], dispatcher_,
64+
api_.randomGenerator(), Utility::apiConfigSourceRefreshDelay(api_config_source),
6565
Utility::apiConfigSourceRequestTimeout(api_config_source),
6666
restMethod(type_url, api_config_source.transport_api_version()), type_url,
6767
api_config_source.transport_api_version(), callbacks, resource_decoder, stats,
@@ -74,7 +74,7 @@ SubscriptionPtr SubscriptionFactoryImpl::subscriptionFromConfigSource(
7474
api_config_source, scope, true)
7575
->create(),
7676
dispatcher_, sotwGrpcMethod(type_url, api_config_source.transport_api_version()),
77-
api_config_source.transport_api_version(), random_, scope,
77+
api_config_source.transport_api_version(), api_.randomGenerator(), scope,
7878
Utility::parseRateLimitSettings(api_config_source),
7979
api_config_source.set_node_on_first_message_only()),
8080
callbacks, resource_decoder, stats, type_url, dispatcher_,
@@ -87,7 +87,7 @@ SubscriptionPtr SubscriptionFactoryImpl::subscriptionFromConfigSource(
8787
api_config_source, scope, true)
8888
->create(),
8989
dispatcher_, deltaGrpcMethod(type_url, api_config_source.transport_api_version()),
90-
api_config_source.transport_api_version(), random_, scope,
90+
api_config_source.transport_api_version(), api_.randomGenerator(), scope,
9191
Utility::parseRateLimitSettings(api_config_source), local_info_),
9292
callbacks, resource_decoder, stats, type_url, dispatcher_,
9393
Utility::configSourceInitialFetchTimeout(config), false);

source/common/config/subscription_factory_impl.h

+1-2
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ namespace Config {
1616
class SubscriptionFactoryImpl : public SubscriptionFactory, Logger::Loggable<Logger::Id::config> {
1717
public:
1818
SubscriptionFactoryImpl(const LocalInfo::LocalInfo& local_info, Event::Dispatcher& dispatcher,
19-
Upstream::ClusterManager& cm, Random::RandomGenerator& random,
19+
Upstream::ClusterManager& cm,
2020
ProtobufMessage::ValidationVisitor& validation_visitor, Api::Api& api,
2121
Runtime::Loader& runtime);
2222

@@ -36,7 +36,6 @@ class SubscriptionFactoryImpl : public SubscriptionFactory, Logger::Loggable<Log
3636
const LocalInfo::LocalInfo& local_info_;
3737
Event::Dispatcher& dispatcher_;
3838
Upstream::ClusterManager& cm_;
39-
Random::RandomGenerator& random_;
4039
ProtobufMessage::ValidationVisitor& validation_visitor_;
4140
Api::Api& api_;
4241
Runtime::Loader& runtime_;

source/common/local_reply/local_reply.cc

+1-1
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ class ResponseMapper {
5555
config,
5656
Server::Configuration::FactoryContext& context)
5757
: filter_(AccessLog::FilterFactory::fromProto(config.filter(), context.runtime(),
58-
context.random(),
58+
context.api().randomGenerator(),
5959
context.messageValidationVisitor())) {
6060
if (config.has_status_code()) {
6161
status_code_ = static_cast<Http::Code>(config.status_code().value());

source/common/router/router.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,7 @@ class FilterConfig {
207207
ShadowWriterPtr&& shadow_writer,
208208
const envoy::extensions::filters::http::router::v3::Router& config)
209209
: FilterConfig(stat_prefix, context.localInfo(), context.scope(), context.clusterManager(),
210-
context.runtime(), context.random(), std::move(shadow_writer),
210+
context.runtime(), context.api().randomGenerator(), std::move(shadow_writer),
211211
PROTOBUF_GET_WRAPPED_OR_DEFAULT(config, dynamic_stats, true),
212212
config.start_child_span(), config.suppress_envoy_headers(),
213213
config.respect_expected_rq_timeout(), config.strict_check_headers(),

source/common/tcp_proxy/tcp_proxy.cc

+1-1
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ Config::Config(const envoy::extensions::filters::network::tcp_proxy::v3::TcpProx
122122
: max_connect_attempts_(PROTOBUF_GET_WRAPPED_OR_DEFAULT(config, max_connect_attempts, 1)),
123123
upstream_drain_manager_slot_(context.threadLocal().allocateSlot()),
124124
shared_config_(std::make_shared<SharedConfig>(config, context)),
125-
random_generator_(context.random()) {
125+
random_generator_(context.api().randomGenerator()) {
126126

127127
upstream_drain_manager_slot_->set([](Event::Dispatcher&) {
128128
ThreadLocal::ThreadLocalObjectSharedPtr drain_manager =

source/common/upstream/cluster_factory_impl.cc

+3-3
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ Stats::ScopePtr generateStatsScope(const envoy::config::cluster::v3::Cluster& co
2626
std::pair<ClusterSharedPtr, ThreadAwareLoadBalancerPtr> ClusterFactoryImplBase::create(
2727
const envoy::config::cluster::v3::Cluster& cluster, ClusterManager& cluster_manager,
2828
Stats::Store& stats, ThreadLocal::Instance& tls, Network::DnsResolverSharedPtr dns_resolver,
29-
Ssl::ContextManager& ssl_context_manager, Runtime::Loader& runtime, Random::RandomGenerator&,
29+
Ssl::ContextManager& ssl_context_manager, Runtime::Loader& runtime,
3030
Event::Dispatcher& dispatcher, AccessLog::AccessLogManager& log_manager,
3131
const LocalInfo::LocalInfo& local_info, Server::Admin& admin,
3232
Singleton::Manager& singleton_manager, Outlier::EventLoggerSharedPtr outlier_event_logger,
@@ -107,8 +107,8 @@ ClusterFactoryImplBase::create(const envoy::config::cluster::v3::Cluster& cluste
107107
auto stats_scope = generateStatsScope(cluster, context.stats());
108108
Server::Configuration::TransportSocketFactoryContextImpl factory_context(
109109
context.admin(), context.sslContextManager(), *stats_scope, context.clusterManager(),
110-
context.localInfo(), context.dispatcher(), context.random(), context.stats(),
111-
context.singletonManager(), context.tls(), context.messageValidationVisitor(), context.api());
110+
context.localInfo(), context.dispatcher(), context.stats(), context.singletonManager(),
111+
context.tls(), context.messageValidationVisitor(), context.api());
112112

113113
std::pair<ClusterImplBaseSharedPtr, ThreadAwareLoadBalancerPtr> new_cluster_pair =
114114
createClusterImpl(cluster, context, factory_context, std::move(stats_scope));

source/common/upstream/cluster_factory_impl.h

+1-2
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,6 @@ class ClusterFactoryContextImpl : public ClusterFactoryContext {
7373
Network::DnsResolverSharedPtr dnsResolver() override { return dns_resolver_; }
7474
Ssl::ContextManager& sslContextManager() override { return ssl_context_manager_; }
7575
Runtime::Loader& runtime() override { return runtime_; }
76-
Random::RandomGenerator& random() override { return api_.randomGenerator(); }
7776
Event::Dispatcher& dispatcher() override { return dispatcher_; }
7877
AccessLog::AccessLogManager& logManager() override { return log_manager_; }
7978
const LocalInfo::LocalInfo& localInfo() override { return local_info_; }
@@ -118,7 +117,7 @@ class ClusterFactoryImplBase : public ClusterFactory {
118117
create(const envoy::config::cluster::v3::Cluster& cluster, ClusterManager& cluster_manager,
119118
Stats::Store& stats, ThreadLocal::Instance& tls,
120119
Network::DnsResolverSharedPtr dns_resolver, Ssl::ContextManager& ssl_context_manager,
121-
Runtime::Loader& runtime, Random::RandomGenerator& random, Event::Dispatcher& dispatcher,
120+
Runtime::Loader& runtime, Event::Dispatcher& dispatcher,
122121
AccessLog::AccessLogManager& log_manager, const LocalInfo::LocalInfo& local_info,
123122
Server::Admin& admin, Singleton::Manager& singleton_manager,
124123
Outlier::EventLoggerSharedPtr outlier_event_logger, bool added_via_api,

source/common/upstream/cluster_manager_impl.cc

+14-13
Original file line numberDiff line numberDiff line change
@@ -234,19 +234,20 @@ void ClusterManagerInitHelper::setPrimaryClustersInitializedCb(
234234
ClusterManagerImpl::ClusterManagerImpl(
235235
const envoy::config::bootstrap::v3::Bootstrap& bootstrap, ClusterManagerFactory& factory,
236236
Stats::Store& stats, ThreadLocal::Instance& tls, Runtime::Loader& runtime,
237-
Random::RandomGenerator& random, const LocalInfo::LocalInfo& local_info,
238-
AccessLog::AccessLogManager& log_manager, Event::Dispatcher& main_thread_dispatcher,
239-
Server::Admin& admin, ProtobufMessage::ValidationContext& validation_context, Api::Api& api,
237+
const LocalInfo::LocalInfo& local_info, AccessLog::AccessLogManager& log_manager,
238+
Event::Dispatcher& main_thread_dispatcher, Server::Admin& admin,
239+
ProtobufMessage::ValidationContext& validation_context, Api::Api& api,
240240
Http::Context& http_context, Grpc::Context& grpc_context)
241241
: factory_(factory), runtime_(runtime), stats_(stats), tls_(tls.allocateSlot()),
242-
random_(random), bind_config_(bootstrap.cluster_manager().upstream_bind_config()),
243-
local_info_(local_info), cm_stats_(generateStats(stats)),
242+
random_(api.randomGenerator()),
243+
bind_config_(bootstrap.cluster_manager().upstream_bind_config()), local_info_(local_info),
244+
cm_stats_(generateStats(stats)),
244245
init_helper_(*this, [this](Cluster& cluster) { onClusterInit(cluster); }),
245246
config_tracker_entry_(
246247
admin.getConfigTracker().add("clusters", [this] { return dumpClusterConfigs(); })),
247248
time_source_(main_thread_dispatcher.timeSource()), dispatcher_(main_thread_dispatcher),
248249
http_context_(http_context),
249-
subscription_factory_(local_info, main_thread_dispatcher, *this, random,
250+
subscription_factory_(local_info, main_thread_dispatcher, *this,
250251
validation_context.dynamicValidationVisitor(), api, runtime_) {
251252
async_client_manager_ = std::make_unique<Grpc::AsyncClientManagerImpl>(
252253
*this, tls, time_source_, api, grpc_context.statNames());
@@ -1456,8 +1457,8 @@ ClusterManagerImpl::ThreadLocalClusterManagerImpl::ClusterEntry::tcpConnPool(
14561457
ClusterManagerPtr ProdClusterManagerFactory::clusterManagerFromProto(
14571458
const envoy::config::bootstrap::v3::Bootstrap& bootstrap) {
14581459
return ClusterManagerPtr{new ClusterManagerImpl(
1459-
bootstrap, *this, stats_, tls_, runtime_, random_, local_info_, log_manager_,
1460-
main_thread_dispatcher_, admin_, validation_context_, api_, http_context_, grpc_context_)};
1460+
bootstrap, *this, stats_, tls_, runtime_, local_info_, log_manager_, main_thread_dispatcher_,
1461+
admin_, validation_context_, api_, http_context_, grpc_context_)};
14611462
}
14621463

14631464
Http::ConnectionPool::InstancePtr ProdClusterManagerFactory::allocateConnPool(
@@ -1466,14 +1467,14 @@ Http::ConnectionPool::InstancePtr ProdClusterManagerFactory::allocateConnPool(
14661467
const Network::TransportSocketOptionsSharedPtr& transport_socket_options) {
14671468
if (protocol == Http::Protocol::Http2 &&
14681469
runtime_.snapshot().featureEnabled("upstream.use_http2", 100)) {
1469-
return Http::Http2::allocateConnPool(dispatcher, random_, host, priority, options,
1470-
transport_socket_options);
1470+
return Http::Http2::allocateConnPool(dispatcher, api_.randomGenerator(), host, priority,
1471+
options, transport_socket_options);
14711472
} else if (protocol == Http::Protocol::Http3) {
14721473
// Quic connection pool is not implemented.
14731474
NOT_IMPLEMENTED_GCOVR_EXCL_LINE;
14741475
} else {
1475-
return Http::Http1::allocateConnPool(dispatcher, random_, host, priority, options,
1476-
transport_socket_options);
1476+
return Http::Http1::allocateConnPool(dispatcher, api_.randomGenerator(), host, priority,
1477+
options, transport_socket_options);
14771478
}
14781479
}
14791480

@@ -1494,7 +1495,7 @@ std::pair<ClusterSharedPtr, ThreadAwareLoadBalancerPtr> ProdClusterManagerFactor
14941495
const envoy::config::cluster::v3::Cluster& cluster, ClusterManager& cm,
14951496
Outlier::EventLoggerSharedPtr outlier_event_logger, bool added_via_api) {
14961497
return ClusterFactoryImplBase::create(
1497-
cluster, cm, stats_, tls_, dns_resolver_, ssl_context_manager_, runtime_, random_,
1498+
cluster, cm, stats_, tls_, dns_resolver_, ssl_context_manager_, runtime_,
14981499
main_thread_dispatcher_, log_manager_, local_info_, admin_, singleton_manager_,
14991500
outlier_event_logger, added_via_api,
15001501
added_via_api ? validation_context_.dynamicValidationVisitor()

source/common/upstream/cluster_manager_impl.h

+12-11
Original file line numberDiff line numberDiff line change
@@ -40,17 +40,19 @@ namespace Upstream {
4040
*/
4141
class ProdClusterManagerFactory : public ClusterManagerFactory {
4242
public:
43-
ProdClusterManagerFactory(
44-
Server::Admin& admin, Runtime::Loader& runtime, Stats::Store& stats,
45-
ThreadLocal::Instance& tls, Random::RandomGenerator& random,
46-
Network::DnsResolverSharedPtr dns_resolver, Ssl::ContextManager& ssl_context_manager,
47-
Event::Dispatcher& main_thread_dispatcher, const LocalInfo::LocalInfo& local_info,
48-
Secret::SecretManager& secret_manager, ProtobufMessage::ValidationContext& validation_context,
49-
Api::Api& api, Http::Context& http_context, Grpc::Context& grpc_context,
50-
AccessLog::AccessLogManager& log_manager, Singleton::Manager& singleton_manager)
43+
ProdClusterManagerFactory(Server::Admin& admin, Runtime::Loader& runtime, Stats::Store& stats,
44+
ThreadLocal::Instance& tls, Network::DnsResolverSharedPtr dns_resolver,
45+
Ssl::ContextManager& ssl_context_manager,
46+
Event::Dispatcher& main_thread_dispatcher,
47+
const LocalInfo::LocalInfo& local_info,
48+
Secret::SecretManager& secret_manager,
49+
ProtobufMessage::ValidationContext& validation_context, Api::Api& api,
50+
Http::Context& http_context, Grpc::Context& grpc_context,
51+
AccessLog::AccessLogManager& log_manager,
52+
Singleton::Manager& singleton_manager)
5153
: main_thread_dispatcher_(main_thread_dispatcher), validation_context_(validation_context),
5254
api_(api), http_context_(http_context), grpc_context_(grpc_context), admin_(admin),
53-
runtime_(runtime), stats_(stats), tls_(tls), random_(random), dns_resolver_(dns_resolver),
55+
runtime_(runtime), stats_(stats), tls_(tls), dns_resolver_(dns_resolver),
5456
ssl_context_manager_(ssl_context_manager), local_info_(local_info),
5557
secret_manager_(secret_manager), log_manager_(log_manager),
5658
singleton_manager_(singleton_manager) {}
@@ -84,7 +86,6 @@ class ProdClusterManagerFactory : public ClusterManagerFactory {
8486
Runtime::Loader& runtime_;
8587
Stats::Store& stats_;
8688
ThreadLocal::Instance& tls_;
87-
Random::RandomGenerator& random_;
8889
Network::DnsResolverSharedPtr dns_resolver_;
8990
Ssl::ContextManager& ssl_context_manager_;
9091
const LocalInfo::LocalInfo& local_info_;
@@ -193,7 +194,7 @@ class ClusterManagerImpl : public ClusterManager, Logger::Loggable<Logger::Id::u
193194
ClusterManagerImpl(const envoy::config::bootstrap::v3::Bootstrap& bootstrap,
194195
ClusterManagerFactory& factory, Stats::Store& stats,
195196
ThreadLocal::Instance& tls, Runtime::Loader& runtime,
196-
Random::RandomGenerator& random, const LocalInfo::LocalInfo& local_info,
197+
const LocalInfo::LocalInfo& local_info,
197198
AccessLog::AccessLogManager& log_manager,
198199
Event::Dispatcher& main_thread_dispatcher, Server::Admin& admin,
199200
ProtobufMessage::ValidationContext& validation_context, Api::Api& api,

source/common/upstream/health_discovery_service.cc

+2-2
Original file line numberDiff line numberDiff line change
@@ -323,8 +323,8 @@ ProdClusterInfoFactory::createClusterInfo(const CreateClusterInfoParams& params)
323323

324324
Envoy::Server::Configuration::TransportSocketFactoryContextImpl factory_context(
325325
params.admin_, params.ssl_context_manager_, *scope, params.cm_, params.local_info_,
326-
params.dispatcher_, params.api_.randomGenerator(), params.stats_, params.singleton_manager_,
327-
params.tls_, params.validation_visitor_, params.api_);
326+
params.dispatcher_, params.stats_, params.singleton_manager_, params.tls_,
327+
params.validation_visitor_, params.api_);
328328

329329
// TODO(JimmyCYJ): Support SDS for HDS cluster.
330330
Network::TransportSocketFactoryPtr socket_factory =

source/common/upstream/logical_dns_cluster.cc

+1-1
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ LogicalDnsCluster::LogicalDnsCluster(
6262
: Config::Utility::translateClusterHosts(cluster.hidden_envoy_deprecated_hosts())) {
6363
failure_backoff_strategy_ =
6464
Config::Utility::prepareDnsRefreshStrategy<envoy::config::cluster::v3::Cluster>(
65-
cluster, dns_refresh_rate_ms_.count(), factory_context.random());
65+
cluster, dns_refresh_rate_ms_.count(), factory_context.api().randomGenerator());
6666

6767
const auto& locality_lb_endpoints = load_assignment_.endpoints();
6868
if (locality_lb_endpoints.size() != 1 || locality_lb_endpoints[0].lb_endpoints().size() != 1) {

source/common/upstream/strict_dns_cluster.cc

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ StrictDnsClusterImpl::StrictDnsClusterImpl(
2121
respect_dns_ttl_(cluster.respect_dns_ttl()) {
2222
failure_backoff_strategy_ =
2323
Config::Utility::prepareDnsRefreshStrategy<envoy::config::cluster::v3::Cluster>(
24-
cluster, dns_refresh_rate_ms_.count(), factory_context.random());
24+
cluster, dns_refresh_rate_ms_.count(), factory_context.api().randomGenerator());
2525

2626
std::list<ResolveTargetPtr> resolve_targets;
2727
const envoy::config::endpoint::v3::ClusterLoadAssignment load_assignment(

0 commit comments

Comments
 (0)