Skip to content

Commit cfcffd0

Browse files
authored
Revert "dynamic_modules: add support for disabling HTTP per-route filter (envoyproxy#42766)" (envoyproxy#42771)
Commit Message: Revert "dynamic_modules: add support for disabling HTTP per-route filter (envoyproxy#42766)" Additional Description: We have provided common disabled flag in the route configuration and this API may be unnecessary (and new api shepherd reviewed it. We need to revisit it before put int into our main. Risk Level: low. Testing: n/a. Docs Changes: n/a. Release Notes: n/a. Platform Specific Features: n/a.
1 parent 678dce0 commit cfcffd0

10 files changed

Lines changed: 24 additions & 355 deletions

File tree

api/envoy/extensions/filters/http/dynamic_modules/v3/dynamic_modules.proto

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -120,11 +120,4 @@ message DynamicModuleFilterPerRoute {
120120
// value: aGVsbG8= # echo -n "hello" | base64
121121
//
122122
google.protobuf.Any filter_config = 3;
123-
124-
// Disable the filter for this particular vhost or route.
125-
// If this field is specified in multiple per-filter-configs, the most specific
126-
// one will be used.
127-
//
128-
// If this field is not specified, the filter would remain enabled.
129-
bool disabled = 4;
130123
}

changelogs/current.yaml

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -281,11 +281,6 @@ new_features:
281281
change: |
282282
Added support for loading dynamic modules globally by setting :ref:`load_globally
283283
<envoy_v3_api_field_extensions.dynamic_modules.v3.DynamicModuleConfig.load_globally>` to ``true``.
284-
- area: dynamic modules
285-
change: |
286-
Added :ref:`disabled <envoy_v3_api_field_extensions.filters.http.dynamic_modules.v3.DynamicModuleFilterPerRoute.disabled>`
287-
field to per-route configuration for the dynamic modules HTTP filter, enabling dynamic modules to be disabled on a
288-
per-route basis.
289284
- area: dynamic modules
290285
change: |
291286
Added :ref:`network filter <envoy_v3_api_msg_extensions.filters.network.dynamic_modules.v3.DynamicModuleNetworkFilter>`

source/extensions/filters/http/dynamic_modules/BUILD

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ envoy_cc_library(
2525
hdrs = ["filter.h"],
2626
deps = [
2727
":filter_config_lib",
28-
"//source/common/http:utility_lib",
2928
"//source/extensions/filters/http/common:pass_through_filter_lib",
3029
],
3130
)

source/extensions/filters/http/dynamic_modules/factory.cc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ absl::StatusOr<Http::FilterFactoryCb> DynamicModuleConfigFactory::createFilterFa
4444
auto filter =
4545
std::make_shared<Envoy::Extensions::DynamicModules::HttpFilters::DynamicModuleHttpFilter>(
4646
config, config->stats_scope_->symbolTable());
47+
filter->initializeInModuleFilter();
4748
callbacks.addStreamFilter(filter);
4849
};
4950
}
@@ -72,8 +73,7 @@ DynamicModuleConfigFactory::createRouteSpecificFilterConfigTyped(
7273
DynamicModuleHttpPerRouteFilterConfigConstSharedPtr>
7374
filter_config =
7475
Envoy::Extensions::DynamicModules::HttpFilters::newDynamicModuleHttpPerRouteConfig(
75-
proto_config.per_route_config_name(), config, std::move(dynamic_module.value()),
76-
proto_config.disabled());
76+
proto_config.per_route_config_name(), config, std::move(dynamic_module.value()));
7777

7878
if (!filter_config.ok()) {
7979
return absl::InvalidArgumentError("Failed to create pre-route filter config: " +

source/extensions/filters/http/dynamic_modules/filter.cc

Lines changed: 2 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@
33
#include <cstdint>
44
#include <memory>
55

6-
#include "source/common/http/utility.h"
7-
86
#include "absl/container/inlined_vector.h"
97

108
namespace Envoy {
@@ -15,16 +13,10 @@ namespace HttpFilters {
1513
DynamicModuleHttpFilter::~DynamicModuleHttpFilter() { destroy(); }
1614

1715
void DynamicModuleHttpFilter::initializeInModuleFilter() {
18-
if (in_module_filter_ != nullptr) {
19-
return;
20-
}
2116
in_module_filter_ = config_->on_http_filter_new_(config_->in_module_config_, thisAsVoidPtr());
2217
}
2318

2419
void DynamicModuleHttpFilter::onStreamComplete() {
25-
if (in_module_filter_ == nullptr) {
26-
return;
27-
}
2820
config_->on_http_filter_stream_complete_(thisAsVoidPtr(), in_module_filter_);
2921
}
3022

@@ -82,35 +74,13 @@ void DynamicModuleHttpFilter::destroy() {
8274
}
8375

8476
FilterHeadersStatus DynamicModuleHttpFilter::decodeHeaders(RequestHeaderMap&, bool end_of_stream) {
85-
if (decoder_callbacks_->route()) {
86-
const auto* per_route_config =
87-
Http::Utility::resolveMostSpecificPerFilterConfig<DynamicModuleHttpPerRouteFilterConfig>(
88-
decoder_callbacks_);
89-
if (per_route_config && per_route_config->disabled_) {
90-
is_disabled_ = true;
91-
in_continue_ = true;
92-
return FilterHeadersStatus::Continue;
93-
}
94-
}
95-
96-
if (in_module_filter_ == nullptr) {
97-
initializeInModuleFilter();
98-
}
99-
10077
const envoy_dynamic_module_type_on_http_filter_request_headers_status status =
10178
config_->on_http_filter_request_headers_(thisAsVoidPtr(), in_module_filter_, end_of_stream);
10279
in_continue_ = status == envoy_dynamic_module_type_on_http_filter_request_headers_status_Continue;
10380
return static_cast<FilterHeadersStatus>(status);
10481
};
10582

10683
FilterDataStatus DynamicModuleHttpFilter::decodeData(Buffer::Instance& chunk, bool end_of_stream) {
107-
if (is_disabled_) {
108-
if (end_of_stream && decoder_callbacks_->decodingBuffer()) {
109-
decoder_callbacks_->addDecodedData(chunk, false);
110-
}
111-
in_continue_ = true;
112-
return FilterDataStatus::Continue;
113-
}
11484
if (end_of_stream && decoder_callbacks_->decodingBuffer()) {
11585
// To make the very last chunk of the body available to the filter when buffering is enabled,
11686
// we need to call addDecodedData. See the code comment there for more details.
@@ -125,10 +95,6 @@ FilterDataStatus DynamicModuleHttpFilter::decodeData(Buffer::Instance& chunk, bo
12595
};
12696

12797
FilterTrailersStatus DynamicModuleHttpFilter::decodeTrailers(RequestTrailerMap&) {
128-
if (is_disabled_) {
129-
in_continue_ = true;
130-
return FilterTrailersStatus::Continue;
131-
}
13298
const envoy_dynamic_module_type_on_http_filter_request_trailers_status status =
13399
config_->on_http_filter_request_trailers_(thisAsVoidPtr(), in_module_filter_);
134100
in_continue_ =
@@ -150,30 +116,8 @@ Filter1xxHeadersStatus DynamicModuleHttpFilter::encode1xxHeaders(ResponseHeaderM
150116

151117
FilterHeadersStatus DynamicModuleHttpFilter::encodeHeaders(ResponseHeaderMap&, bool end_of_stream) {
152118
if (sent_local_reply_) { // See the comment on the flag.
153-
in_continue_ = true;
154119
return FilterHeadersStatus::Continue;
155120
}
156-
157-
// Check per-route config for disabled flag if not already checked in decodeHeaders.
158-
if (in_module_filter_ == nullptr) {
159-
if (encoder_callbacks_->route()) {
160-
const auto* per_route_config =
161-
Http::Utility::resolveMostSpecificPerFilterConfig<DynamicModuleHttpPerRouteFilterConfig>(
162-
encoder_callbacks_);
163-
if (per_route_config && per_route_config->disabled_) {
164-
is_disabled_ = true;
165-
in_continue_ = true;
166-
return FilterHeadersStatus::Continue;
167-
}
168-
}
169-
initializeInModuleFilter();
170-
}
171-
172-
if (is_disabled_) {
173-
in_continue_ = true;
174-
return FilterHeadersStatus::Continue;
175-
}
176-
177121
const envoy_dynamic_module_type_on_http_filter_response_headers_status status =
178122
config_->on_http_filter_response_headers_(thisAsVoidPtr(), in_module_filter_, end_of_stream);
179123
in_continue_ =
@@ -182,11 +126,7 @@ FilterHeadersStatus DynamicModuleHttpFilter::encodeHeaders(ResponseHeaderMap&, b
182126
};
183127

184128
FilterDataStatus DynamicModuleHttpFilter::encodeData(Buffer::Instance& chunk, bool end_of_stream) {
185-
if (sent_local_reply_ || is_disabled_) { // See the comment on the flag.
186-
if (end_of_stream && encoder_callbacks_->encodingBuffer()) {
187-
encoder_callbacks_->addEncodedData(chunk, false);
188-
}
189-
in_continue_ = true;
129+
if (sent_local_reply_) { // See the comment on the flag.
190130
return FilterDataStatus::Continue;
191131
}
192132
if (end_of_stream && encoder_callbacks_->encodingBuffer()) {
@@ -203,8 +143,7 @@ FilterDataStatus DynamicModuleHttpFilter::encodeData(Buffer::Instance& chunk, bo
203143
};
204144

205145
FilterTrailersStatus DynamicModuleHttpFilter::encodeTrailers(ResponseTrailerMap&) {
206-
if (sent_local_reply_ || is_disabled_) { // See the comment on the flag.
207-
in_continue_ = true;
146+
if (sent_local_reply_) { // See the comment on the flag.
208147
return FilterTrailersStatus::Continue;
209148
}
210149
const envoy_dynamic_module_type_on_http_filter_response_trailers_status status =

source/extensions/filters/http/dynamic_modules/filter.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -230,8 +230,6 @@ class DynamicModuleHttpFilter : public Http::StreamFilter,
230230
// multiple mutable borrows of the same object. In practice, a module shouldn't need encodeHeaders
231231
// and encodeData to be called for local reply contents, so we just skip them with this flag.
232232
bool sent_local_reply_ = false;
233-
// This is set to true when the filter is disabled by the per-route configuration.
234-
bool is_disabled_ = false;
235233

236234
const DynamicModuleHttpFilterConfigSharedPtr config_ = nullptr;
237235
envoy_dynamic_module_type_http_filter_module_ptr in_module_filter_ = nullptr;

source/extensions/filters/http/dynamic_modules/filter_config.cc

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -23,21 +23,13 @@ DynamicModuleHttpFilterConfig::~DynamicModuleHttpFilterConfig() {
2323
}
2424

2525
DynamicModuleHttpPerRouteFilterConfig::~DynamicModuleHttpPerRouteFilterConfig() {
26-
if (destroy_) {
27-
(*destroy_)(config_);
28-
}
26+
(*destroy_)(config_);
2927
}
3028

3129
absl::StatusOr<DynamicModuleHttpPerRouteFilterConfigConstSharedPtr>
3230
newDynamicModuleHttpPerRouteConfig(const absl::string_view per_route_config_name,
3331
const absl::string_view filter_config,
34-
Extensions::DynamicModules::DynamicModulePtr dynamic_module,
35-
bool disabled) {
36-
if (disabled) {
37-
return std::make_shared<const DynamicModuleHttpPerRouteFilterConfig>(
38-
nullptr, nullptr, std::move(dynamic_module), disabled);
39-
}
40-
32+
Extensions::DynamicModules::DynamicModulePtr dynamic_module) {
4133
auto constructor =
4234
dynamic_module
4335
->getFunctionPointer<decltype(&envoy_dynamic_module_on_http_filter_per_route_config_new)>(
@@ -56,7 +48,7 @@ newDynamicModuleHttpPerRouteConfig(const absl::string_view per_route_config_name
5648
}
5749

5850
return std::make_shared<const DynamicModuleHttpPerRouteFilterConfig>(
59-
filter_config_envoy_ptr, destroy.value(), std::move(dynamic_module), disabled);
51+
filter_config_envoy_ptr, destroy.value(), std::move(dynamic_module));
6052
}
6153

6254
absl::StatusOr<DynamicModuleHttpFilterConfigSharedPtr> newDynamicModuleHttpFilterConfig(

source/extensions/filters/http/dynamic_modules/filter_config.h

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -309,13 +309,11 @@ class DynamicModuleHttpPerRouteFilterConfig : public Router::RouteSpecificFilter
309309
DynamicModuleHttpPerRouteFilterConfig(
310310
envoy_dynamic_module_type_http_filter_config_module_ptr config,
311311
OnHttpPerRouteConfigDestroyType destroy,
312-
Extensions::DynamicModules::DynamicModulePtr dynamic_module, bool disabled)
313-
: config_(config), disabled_(disabled), destroy_(destroy),
314-
dynamic_module_(std::move(dynamic_module)) {}
312+
Extensions::DynamicModules::DynamicModulePtr dynamic_module)
313+
: config_(config), destroy_(destroy), dynamic_module_(std::move(dynamic_module)) {}
315314
~DynamicModuleHttpPerRouteFilterConfig() override;
316315

317316
envoy_dynamic_module_type_http_filter_config_module_ptr config_;
318-
const bool disabled_;
319317

320318
private:
321319
OnHttpPerRouteConfigDestroyType destroy_;
@@ -329,8 +327,7 @@ using DynamicModuleHttpPerRouteFilterConfigConstSharedPtr =
329327
absl::StatusOr<DynamicModuleHttpPerRouteFilterConfigConstSharedPtr>
330328
newDynamicModuleHttpPerRouteConfig(const absl::string_view per_route_config_name,
331329
const absl::string_view filter_config,
332-
Extensions::DynamicModules::DynamicModulePtr dynamic_module,
333-
bool disabled);
330+
Extensions::DynamicModules::DynamicModulePtr dynamic_module);
334331

335332
/**
336333
* Creates a new DynamicModuleHttpFilterConfig for given configuration.

0 commit comments

Comments
 (0)