Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

dynamic_forward_proxy: DNS Cache circuit breaker #11028

Merged
merged 64 commits into from
Jul 1, 2020
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
64 commits
Select commit Hold shift + click to select a range
6dc3f0e
init
Shikugawa Apr 30, 2020
855b379
impl
Shikugawa May 1, 2020
3eac0c4
impl stats
Shikugawa May 4, 2020
e898071
review
Shikugawa May 4, 2020
65d9b03
fix test
Shikugawa May 4, 2020
121ebd7
resource manager test
Shikugawa May 5, 2020
94ed978
add circuit breaking checker
Shikugawa May 5, 2020
d77a679
fix
Shikugawa May 7, 2020
a8d7f74
fix
Shikugawa May 13, 2020
4c0ae87
Merge branch 'master' of https://github.com/envoyproxy/envoy into dns…
Shikugawa May 19, 2020
202a1de
cleanup
Shikugawa May 19, 2020
294b2db
Merge branch 'master' of https://github.com/envoyproxy/envoy into dns…
Shikugawa May 19, 2020
0e2f691
fix
Shikugawa May 19, 2020
a8cda18
fix
Shikugawa May 27, 2020
5b8bd99
Merge branch 'master' of https://github.com/envoyproxy/envoy into dns…
Shikugawa May 27, 2020
d72d1f7
check
Shikugawa May 28, 2020
bf920fb
Merge branch 'master' of https://github.com/envoyproxy/envoy into dns…
Shikugawa May 28, 2020
5f265d6
format
Shikugawa May 28, 2020
0a26a58
docs
Shikugawa May 28, 2020
6b4d90e
fix test
Shikugawa May 28, 2020
ba9bbbf
fix
Shikugawa May 28, 2020
5093f2b
Kick CI
Shikugawa May 29, 2020
f5e4d8e
tidy
Shikugawa May 29, 2020
081e794
fix
Shikugawa Jun 2, 2020
ae613ce
Merge branch 'master' of https://github.com/envoyproxy/envoy into dns…
Shikugawa Jun 2, 2020
b3ac327
format
Shikugawa Jun 2, 2020
267929b
fix
Shikugawa Jun 2, 2020
873ec6d
tidy
Shikugawa Jun 2, 2020
83e5879
fix
Shikugawa Jun 3, 2020
298d368
fix error
Shikugawa Jun 3, 2020
208828b
fix
Shikugawa Jun 3, 2020
d16f29d
fix
Shikugawa Jun 4, 2020
5f9152b
fix
Shikugawa Jun 4, 2020
a1c679e
fix
Shikugawa Jun 5, 2020
d0e3a31
Kick CI
Shikugawa Jun 7, 2020
cb046ec
Merge branch 'master' of https://github.com/envoyproxy/envoy into dns…
Shikugawa Jun 10, 2020
be729a5
fix
Shikugawa Jun 11, 2020
63044cd
delete unused sections
Shikugawa Jun 12, 2020
9612a5f
fix
Shikugawa Jun 16, 2020
cbb4430
fix
Shikugawa Jun 16, 2020
9fde624
fix
Shikugawa Jun 17, 2020
abf34cc
fix
Shikugawa Jun 17, 2020
5b13116
fix
Shikugawa Jun 17, 2020
724d068
fix
Shikugawa Jun 17, 2020
959d2d8
fix
Shikugawa Jun 22, 2020
e386cd7
fix
Shikugawa Jun 22, 2020
04a6e8f
fix
Shikugawa Jun 23, 2020
3f26c24
Merge branch 'master' into dns-circuit-breaker
Shikugawa Jun 23, 2020
25dba94
fix
Shikugawa Jun 23, 2020
7d0462d
Merge branch 'dns-circuit-breaker' of github.com:Shikugawa/envoy into…
Shikugawa Jun 23, 2020
a77f70c
fix
Shikugawa Jun 23, 2020
d9f8ad0
Kick CI
Shikugawa Jun 23, 2020
0aecfe2
fix
Shikugawa Jun 25, 2020
0c1f771
fix
Shikugawa Jun 25, 2020
d065a10
fix
Shikugawa Jun 26, 2020
d884a5f
fix
Shikugawa Jun 26, 2020
bfd04c4
fix
Shikugawa Jun 29, 2020
f1fc7bb
fix
Shikugawa Jun 30, 2020
f9cc356
conflict
Shikugawa Jul 1, 2020
a5d361d
fix
Shikugawa Jul 1, 2020
587f3c1
Kick CI
Shikugawa Jul 1, 2020
4838e6a
Kick CI
Shikugawa Jul 1, 2020
0aec3e9
Merge branch 'master' of https://github.com/envoyproxy/envoy into dns…
Shikugawa Jul 1, 2020
05834c2
Kick CI
Shikugawa Jul 1, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 3 additions & 4 deletions source/extensions/common/dynamic_forward_proxy/dns_cache.h
Original file line number Diff line number Diff line change
Expand Up @@ -177,10 +177,9 @@ class DnsCache {
virtual absl::flat_hash_map<std::string, DnsHostInfoSharedPtr> hosts() PURE;

/**
* Handle dns request
* @param route_entry resolved route entry.
* @param cluster_info destination cluster info.
* @return Resource limit which describes about pending requests.
* Check if we can do DNS Request.
Shikugawa marked this conversation as resolved.
Show resolved Hide resolved
* @param pending_request pending request resource limit
Shikugawa marked this conversation as resolved.
Show resolved Hide resolved
* @return RAII Pointer for circuit breakers
Shikugawa marked this conversation as resolved.
Show resolved Hide resolved
*/
virtual Upstream::ResourceAutoIncDecPtr
canCreateDnsRequest(absl::optional<std::reference_wrapper<ResourceLimit>> pending_request) PURE;
Shikugawa marked this conversation as resolved.
Show resolved Hide resolved
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,12 +79,11 @@ DnsCacheImpl::loadDnsCacheEntry(absl::string_view host, uint16_t default_port,

Upstream::ResourceAutoIncDecPtr DnsCacheImpl::canCreateDnsRequest(
absl::optional<std::reference_wrapper<ResourceLimit>> pending_requests) {
auto use_cluster_cache_circuit_breaker = pending_requests.has_value();
auto& current_pending_requests = use_cluster_cache_circuit_breaker
? pending_requests->get()
: resource_manager_.pendingRequests();
const auto has_pending_requests = pending_requests.has_value();
auto& current_pending_requests =
has_pending_requests ? pending_requests->get() : resource_manager_.pendingRequests();
if (!current_pending_requests.canCreate()) {
if (!use_cluster_cache_circuit_breaker) {
if (!has_pending_requests) {
stats_.dns_rq_pending_overflow_.inc();
}
return nullptr;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,15 +58,13 @@ Http::FilterHeadersStatus ProxyFilter::decodeHeaders(Http::RequestHeaderMap& hea
const bool should_use_dns_cache_circuit_breakers =
Runtime::runtimeFeatureEnabled("envoy.reloadable_features.enable_dns_cache_circuit_breakers");

auto circuit_breaker_raii_ptr = config_->cache().canCreateDnsRequest(
circuit_breaker_ = config_->cache().canCreateDnsRequest(
!should_use_dns_cache_circuit_breakers
? absl::make_optional(std::reference_wrapper<ResourceLimit>(
cluster_info_->resourceManager(route_entry->priority()).pendingRequests()))
: absl::nullopt);

if (circuit_breaker_raii_ptr != nullptr) {
circuit_breaker_ = std::move(circuit_breaker_raii_ptr);
} else {
if (circuit_breaker_ == nullptr) {
if (!should_use_dns_cache_circuit_breakers) {
cluster_info_->stats().upstream_rq_pending_overflow_.inc();
}
Expand Down