Skip to content

dynamic_modules: scaffolds config API & HTTP Filter#36448

Merged
mattklein123 merged 19 commits intoenvoyproxy:mainfrom
mathetake:dynamicmodulesfilters
Oct 24, 2024
Merged

dynamic_modules: scaffolds config API & HTTP Filter#36448
mattklein123 merged 19 commits intoenvoyproxy:mainfrom
mathetake:dynamicmodulesfilters

Conversation

@mathetake
Copy link
Copy Markdown
Member

@mathetake mathetake commented Oct 4, 2024

Commit Message: dynamic_modules: scaffolds config API & HTTP Filter
Additional Description:

This scaffolds the configuration API marked as work-in-progress, and
the skeleton HTTP filter implementation based on the configuration.

The real implementations will follow after this commit.

Risk Level: low
Testing: done
Docs Changes: n/a
Release Notes: n/a (not enabled yet)
Platform Specific Features:
[Optional Runtime guard:]
[Optional Fixes #Issue]
[Optional Fixes commit #PR or SHA]
[Optional Deprecated:]
[Optional API Considerations:]

Signed-off-by: Takeshi Yoneda <t.y.mathetake@gmail.com>
@repokitteh-read-only
Copy link
Copy Markdown

As a reminder, PRs marked as draft will not be automatically assigned reviewers,
or be handled by maintainer-oncall triage.

Please mark your PR as ready when you want it to be reviewed!

🐱

Caused by: #36448 was opened by mathetake.

see: more, trace.

@repokitteh-read-only
Copy link
Copy Markdown

CC @envoyproxy/api-shepherds: Your approval is needed for changes made to (api/envoy/|docs/root/api-docs/).
envoyproxy/api-shepherds assignee is @markdroth
CC @envoyproxy/api-watchers: FYI only for changes made to (api/envoy/|docs/root/api-docs/).

🐱

Caused by: #36448 was opened by mathetake.

see: more, trace.

Signed-off-by: Takeshi Yoneda <t.y.mathetake@gmail.com>
Signed-off-by: Takeshi Yoneda <t.y.mathetake@gmail.com>
Signed-off-by: Takeshi Yoneda <t.y.mathetake@gmail.com>
Signed-off-by: Takeshi Yoneda <t.y.mathetake@gmail.com>
@mathetake
Copy link
Copy Markdown
Member Author

/retest

@mathetake mathetake marked this pull request as ready for review October 5, 2024 16:48
@mathetake
Copy link
Copy Markdown
Member Author

cc @marc-barry

ps the flaky CI failure is nothing to do with this PR

ERROR: /source/test/extensions/load_balancing_policies/client_side_weighted_round_robin/BUILD:40:24: Compiling test/extensions/load_balancing_policies/client_side_weighted_round_robin/integration_test.cc failed: (Killed): clang-14 failed: error executing command (from target //test/extensions/load_balancing_policies/client_side_weighted_round_robin:integration_test)

// For example, if a module has two filter implementations, one for logging and one for header manipulation,
// filter_name is used to choose either logging or header manipulation. The filter_config can be used to
// configure the logging level or the header manipulation behavior.
string filter_config = 3;
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why is this a string instead of a google.protobuf.Any?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

good q and this choice of string is intentional - this config will go across the C ABI boundary as-is, hence we need a plain binary representation, otherwise this will end up forcing all dynamic modules to be able to understand protobuf which is unnecessary. For example, each module would need a copy of protobuf dependency.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is unfriendly for users who want to provided a strutured configuration. I will at least prefer to use google.protobuf.Value here and then we convert the value to json string internaly and propagate it to the dynamic modules?

Then at least at the control plane, we can use this field to provide typed configuration.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That would end up forcing the modules to be able to parse json by default - C language doesn't have any standard json serde and C++ either by default. The structured configuration can be at the end of the day a string right? Controlplanes should be able to serialize their structures into string on theirown, so I don't see any "inconvenience" for them vs forcing all modules to be able to understand json by default.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what will the string configuration like? All depends on the implementation of module and different modules may have complete different way to configure?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yes exactly, completely depends on the module implementations (hence the users code)

@mathetake mathetake requested a review from markdroth October 16, 2024 16:29
Signed-off-by: Takeshi Yoneda <t.y.mathetake@gmail.com>
Copy link
Copy Markdown
Contributor

@markdroth markdroth left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just one small comment about documentation; otherwise, the API looks good to me!

Signed-off-by: Takeshi Yoneda <t.y.mathetake@gmail.com>
// In Envoy, the search path can only be configured via the environment variable ``ENVOY_DYNAMIC_MODULES_SEARCH_PATH``.
// The actual search path is ``${ENVOY_DYNAMIC_MODULES_SEARCH_PATH}/lib${name}.so``. TODO: make the search path configurable via
// command line options.
string name = 1 [(validate.rules).string = {min_len: 1}];
Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Note(summary of the discussion): control plane should be local paths agnostic (DataSource doesn't make sense as shared libraries cannot be opened via in-memory bytes, but they must be a local file) -> Envoy should be able to search modules by name in a pre-configured locations -> Temporarily using an Env var for search location following the semantics of LD_LIBRARY_PATH env in linux. This "module search path" style is almost identical mechanism as NGINX FWIW.

@markdroth
Copy link
Copy Markdown
Contributor

/lgtm api

Copy link
Copy Markdown
Member

@mattklein123 mattklein123 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Few high level comments to get started, thanks.

/wait

Comment on lines +33 to +35
// At the start up of a filter chain, this name is passed to the module's HTTP filter initialization function.
// That way the module can decide which in-module filter implementation to use based on the name.
string filter_name = 2;
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Per the other comment this should be done at configuration load/validation time, not when the filter chain is created.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also I'm not sure filter_name is a good name here if we eventually support loadable modules for non filter extensions. Perhaps something like fully_qualified_extension_name or something. To that end, I wonder if this should actually go inside the shared DynamicModuleConfig ? Then that config could de-dup what to load based on the module name, but still have the "extension name" in that structure.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry my documentation was misleading and wrong. This is intended to be done at the load/validation time of HTTP filter configuration (when it creates a factory).

As for the naming and placement, from implementation perspective, the initialization function will differ among different extension points (envoy_dynamic_modules_http_filter_config_new, envoy_dynamic_modules_tcp_filter_config_new, envoy_dynamic_modules_access_logging_new, etc), so we would need a "typed" fully_qualified_extension_name which has a info about which extension point being used. I think then it would be simpler to put this field in an extension specific proto (this case http/dynamic_modules.proto) instead of putting this in a common proto.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Signed-off-by: Takeshi Yoneda <t.y.mathetake@gmail.com>
…ingl

Signed-off-by: Takeshi Yoneda <t.y.mathetake@gmail.com>
Signed-off-by: Takeshi Yoneda <t.y.mathetake@gmail.com>
@mathetake
Copy link
Copy Markdown
Member Author

no idea why suddenly gcc is getting killed ... (merged main again and hope all good)

@mathetake
Copy link
Copy Markdown
Member Author

mathetake commented Oct 22, 2024

hmm looks legit and failed to reproduce locally either..

found the exact same failure on main: https://github.com/envoyproxy/envoy/actions/runs/11463146676/job/31896388874

@mathetake
Copy link
Copy Markdown
Member Author

mathetake commented Oct 22, 2024

looks like pending RBE jobs are piling up and that's why it's getting killed - I will retry later

@mathetake
Copy link
Copy Markdown
Member Author

/retest

1 similar comment
@mathetake
Copy link
Copy Markdown
Member Author

/retest

@mathetake
Copy link
Copy Markdown
Member Author

@phlax i am getting flaky gcc: fatal error: Killed signal terminated program cc1plus (flaky in the sense that the killed build target varies each time) and I am seeing this on the main branch as well (https://github.com/envoyproxy/envoy/actions/runs/11463146676/job/31896388874). Retries so far failed to work. Do you have any idea what's going on?

@phlax
Copy link
Copy Markdown
Member

phlax commented Oct 23, 2024

hi anything that has killed in it implies OOM - this is due to our new RBE backend using smaller workers by default

to whatever build or test is failing add:

rbe_pool = "6gig"

@mathetake
Copy link
Copy Markdown
Member Author

hmm - the test target is really small and if they need the 6gig then almost entire test target in this repo needs one. (meanwhile I pushed the main merge again)

@mathetake
Copy link
Copy Markdown
Member Author

FYI https://github.com/envoyproxy/envoy/blob/551982e5f2d950b51ee718ab60b320dbb98fb733/test/extensions/dynamic_modules/http/factory_test.cc this is one of two cases killed during build - I would be really surprised if this one needs such setting

Signed-off-by: Takeshi Yoneda <t.y.mathetake@gmail.com>
auto-merge was automatically disabled October 23, 2024 15:26

Head branch was pushed to by a user without write access

@mathetake
Copy link
Copy Markdown
Member Author

I removed the unnecessary test build deps ae9756f - hope this resolves this

@mathetake
Copy link
Copy Markdown
Member Author

hmm still happening. @phlax this hasn't happened before I did a main merge yesterday. I am inclined to believe that build target dependency added recently into the test framework (//test/mock etc?) or whatever is causing this. The current failing target is

envoy_cc_test(
name = "factory_test",
srcs = ["factory_test.cc"],
data = [
"//test/extensions/dynamic_modules/test_data/rust:no_op",
],
deps = [
"//source/extensions/filters/http/dynamic_modules:factory_lib",
"//test/extensions/dynamic_modules:util",
"//test/mocks/server:factory_context_mocks",
],
)
and quite frankly it's insane if this one needs such option.

From the log, it's failing to link crazy amount of files for this really small build target.

 /usr/bin/gcc -U_FORTIFY_SOURCE -fstack-protector -Wall -Wunused-but-set-parameter -Wno-free-nonheap-object -fno-omit-frame-pointer '-std=c++0x' -MD -MF bazel-out/k8-fastbuild/bin/test/extensions/dynamic_modules/http/_objs/factory_test/factory_test.pic.d '-frandom-seed=bazel-out/k8-fastbuild/bin/test/extensions/dynamic_modules/http/_objs/factory_test/factory_test.pic.o' -fPIC -DENVOY_ADMIN_FUNCTIONALITY -DENVOY_ENABLE_QUIC -DENVOY_ENABLE_FULL_PROTOS -DENVOY_ENABLE_YAML -DENVOY_ENABLE_HTTP_DATAGRAMS -DENVOY_MOBILE_ENABLE_LISTENER -DENVOY_GOOGLE_GRPC -DFMT_HEADER_ONLY -DSPDLOG_FMT_EXTERNAL '-DGTEST_HAS_ABSL=1' -DNGHTTP2_STATICLIB '-DBAZEL_CURRENT_REPOSITORY=""' -iquote . -iquote bazel-out/k8-fastbuild/bin -iquote external/com_github_gabime_spdlog -iquote bazel-out/k8-fastbuild/bin/external/com_github_gabime_spdlog -iquote external/com_github_fmtlib_fmt -iquote bazel-out/k8-fastbuild/bin/external/com_github_fmtlib_fmt -iquote external/com_google_absl -iquote bazel-out/k8-fastbuild/bin/external/com_google_absl -iquote external/com_google_protobuf -iquote bazel-out/k8-fastbuild/bin/external/com_google_protobuf -iquote external/com_github_cyan4973_xxhash -iquote bazel-out/k8-fastbuild/bin/external/com_github_cyan4973_xxhash -iquote external/com_googlesource_code_re2 -iquote bazel-out/k8-fastbuild/bin/external/com_googlesource_code_re2 -iquote external/envoy_api -iquote bazel-out/k8-fastbuild/bin/external/envoy_api -iquote external/com_google_googleapis -iquote bazel-out/k8-fastbuild/bin/external/com_google_googleapis -iquote external/com_envoyproxy_protoc_gen_validate -iquote bazel-out/k8-fastbuild/bin/external/com_envoyproxy_protoc_gen_validate -iquote external/com_github_cncf_xds -iquote bazel-out/k8-fastbuild/bin/external/com_github_cncf_xds -iquote external/dev_cel -iquote bazel-out/k8-fastbuild/bin/external/dev_cel -iquote external/opencensus_proto -iquote bazel-out/k8-fastbuild/bin/external/opencensus_proto -iquote external/com_github_jbeder_yaml_cpp -iquote bazel-out/k8-fastbuild/bin/external/com_github_jbeder_yaml_cpp -iquote external/utf8_range -iquote bazel-out/k8-fastbuild/bin/external/utf8_range -iquote external/boringssl -iquote bazel-out/k8-fastbuild/bin/external/boringssl -iquote external/com_github_google_tcmalloc -iquote bazel-out/k8-fastbuild/bin/external/com_github_google_tcmalloc -iquote external/com_google_googletest -iquote bazel-out/k8-fastbuild/bin/external/com_google_googletest -iquote external/com_github_google_quiche -iquote bazel-out/k8-fastbuild/bin/external/com_github_google_quiche -iquote external/com_googlesource_googleurl -iquote bazel-out/k8-fastbuild/bin/external/com_googlesource_googleurl -iquote external/com_github_nlohmann_json -iquote bazel-out/k8-fastbuild/bin/external/com_github_nlohmann_json -iquote external/com_github_openhistogram_libcircllhist -iquote bazel-out/k8-fastbuild/bin/external/com_github_openhistogram_libcircllhist -iquote external/com_github_mirror_tclap -iquote bazel-out/k8-fastbuild/bin/external/com_github_mirror_tclap -iquote external/bazel_tools -iquote bazel-out/k8-fastbuild/bin/external/bazel_tools -iquote external/com_github_grpc_grpc -iquote bazel-out/k8-fastbuild/bin/external/com_github_grpc_grpc -Ibazel-out/k8-fastbuild/bin/external/com_google_protobuf/src/google/protobuf/_virtual_includes/protobuf -Ibazel-out/k8-fastbuild/bin/external/com_google_protobuf/src/google/protobuf/_virtual_includes/internal_visibility -Ibazel-out/k8-fastbuild/bin/external/com_google_protobuf/src/google/protobuf/_virtual_includes/port -Ibazel-out/k8-fastbuild/bin/external/com_google_protobuf/src/google/protobuf/_virtual_includes/protobuf_lite -Ibazel-out/k8-fastbuild/bin/external/com_google_protobuf/src/google/protobuf/_virtual_includes/arena -Ibazel-out/k8-fastbuild/bin/external/com_google_protobuf/src/google/protobuf/_virtual_includes/arena_align -Ibazel-out/k8-fastbuild/bin/external/com_google_protobuf/src/google/protobuf/stubs/_virtual_includes/lite -Ibazel-out/k8-fastbuild/bin/external/com_google_protobuf/src/google/protobuf/_virtual_includes/arena_allocation_policy -Ibazel-out/k8-fastbuild/bin/external/com_google_protobuf/src/google/protobuf/_virtual_includes/arena_cleanup -Ibazel-out/k8-fastbuild/bin/external/com_google_protobuf/src/google/protobuf/_virtual_includes/string_block -Ibazel-out/k8-fastbuild/bin/external/com_google_protobuf/src/google/protobuf/_virtual_includes/varint_shuffle -Ibazel-out/k8-fastbuild/bin/external/com_google_protobuf/src/google/protobuf/io/_virtual_includes/io -Ibazel-out/k8-fastbuild/bin/external/com_google_protobuf/src/google/protobuf/io/_virtual_includes/io_win32 -Ibazel-out/k8-fastbuild/bin/external/com_google_protobuf/third_party/utf8_range/_virtual_includes/utf8_validity -Ibazel-out/k8-fastbuild/bin/external/com_google_protobuf/third_party/utf8_range/_virtual_includes/utf8_range -Ibazel-out/k8-fastbuild/bin/external/com_google_protobuf/src/google/protobuf/io/_virtual_includes/gzip_stream -Ibazel-out/k8-fastbuild/bin/external/com_google_protobuf/src/google/protobuf/stubs/_virtual_includes/stubs -Ibazel-out/k8-fastbuild/bin/external/com_google_protobuf/src/google/protobuf/io/_virtual_includes/printer -Ibazel-out/k8-fastbuild/bin/external/com_google_protobuf/src/google/protobuf/io/_virtual_includes/zero_copy_sink -Ibazel-out/k8-fastbuild/bin/external/com_google_protobuf/src/google/protobuf/io/_virtual_includes/tokenizer -Ibazel-out/k8-fastbuild/bin/external/com_google_protobuf/src/google/protobuf/_virtual_includes/any_proto -Ibazel-out/k8-fastbuild/bin/external/com_google_protobuf/src/google/protobuf/_virtual_includes/descriptor_proto -Ibazel-out/k8-fastbuild/bin/external/com_google_protobuf/src/google/protobuf/_virtual_includes/empty_proto -Ibazel-out/k8-fastbuild/bin/external/com_google_protobuf/src/google/protobuf/_virtual_includes/struct_proto -Ibazel-out/k8-fastbuild/bin/external/com_google_protobuf/src/google/protobuf/_virtual_includes/wrappers_proto -Ibazel-out/k8-fastbuild/bin/external/com_google_protobuf/src/google/protobuf/_virtual_includes/protobuf_layering_check_legacy -Ibazel-out/k8-fastbuild/bin/external/com_google_protobuf/src/google/protobuf/_virtual_includes/api_proto -Ibazel-out/k8-fastbuild/bin/external/com_google_protobuf/src/google/protobuf/_virtual_includes/source_context_proto -Ibazel-out/k8-fastbuild/bin/external/com_google_protobuf/src/google/protobuf/_virtual_includes/type_proto -Ibazel-out/k8-fastbuild/bin/external/com_google_protobuf/src/google/protobuf/_virtual_includes/duration_proto -Ibazel-out/k8-fastbuild/bin/external/com_google_protobuf/src/google/protobuf/_virtual_includes/field_mask_proto -Ibazel-out/k8-fastbuild/bin/external/com_google_protobuf/src/google/protobuf/_virtual_includes/timestamp_proto -Ibazel-out/k8-fastbuild/bin/external/com_google_protobuf/src/google/protobuf/compiler/_virtual_includes/importer -Ibazel-out/k8-fastbuild/bin/external/com_google_protobuf/src/google/protobuf/util/_virtual_includes/delimited_message_util -Ibazel-out/k8-fastbuild/bin/external/com_google_protobuf/src/google/protobuf/util/_virtual_includes/differencer -Ibazel-out/k8-fastbuild/bin/external/com_google_protobuf/src/google/protobuf/util/_virtual_includes/field_mask_util -Ibazel-out/k8-fastbuild/bin/external/com_google_protobuf/src/google/protobuf/util/_virtual_includes/json_util -Ibazel-out/k8-fastbuild/bin/external/com_google_protobuf/src/google/protobuf/json/_virtual_includes/json -Ibazel-out/k8-fastbuild/bin/external/com_google_protobuf/src/google/protobuf/json/_virtual_includes/parser -Ibazel-out/k8-fastbuild/bin/external/com_google_protobuf/src/google/protobuf/json/_virtual_includes/descriptor_traits -Ibazel-out/k8-fastbuild/bin/external/com_google_protobuf/src/google/protobuf/json/_virtual_includes/lexer -Ibazel-out/k8-fastbuild/bin/external/com_google_protobuf/src/google/protobuf/json/_virtual_includes/message_path -Ibazel-out/k8-fastbuild/bin/external/com_google_protobuf/src/google/protobuf/json/_virtual_includes/zero_copy_buffered_stream -Ibazel-out/k8-fastbuild/bin/external/com_google_protobuf/src/google/protobuf/json/_virtual_includes/untyped_message -Ibazel-out/k8-fastbuild/bin/external/com_google_protobuf/src/google/protobuf/util/_virtual_includes/type_resolver -Ibazel-out/k8-fastbuild/bin/external/com_google_protobuf/src/google/protobuf/_virtual_includes/descriptor_legacy -Ibazel-out/k8-fastbuild/bin/external/com_google_protobuf/src/google/protobuf/json/_virtual_includes/unparser -Ibazel-out/k8-fastbuild/bin/external/com_google_protobuf/src/google/protobuf/json/_virtual_includes/writer -Ibazel-out/k8-fastbuild/bin/external/com_google_protobuf/src/google/protobuf/util/_virtual_includes/time_util -Ibazel-out/k8-fastbuild/bin/source/common/common/_virtual_includes/logger_impl_lib_standard -Ibazel-out/k8-fastbuild/bin/external/dev_cel/proto/cel/expr/_virtual_includes/checked_proto -Ibazel-out/k8-fastbuild/bin/external/dev_cel/proto/cel/expr/_virtual_includes/syntax_proto -Ibazel-out/k8-fastbuild/bin/source/common/common/_virtual_includes/thread_impl_lib_posix -Ibazel-out/k8-fastbuild/bin/source/common/filesystem/_virtual_includes/filesystem_impl_lib_posix -Ibazel-out/k8-fastbuild/bin/source/common/event/_virtual_includes/dispatcher_lib -Ibazel-out/k8-fastbuild/bin/source/common/event/_virtual_includes/signal_impl_lib_posix -Ibazel-out/k8-fastbuild/bin/source/common/filesystem/_virtual_includes/watcher_lib -Ibazel-out/k8-fastbuild/bin/source/common/api/_virtual_includes/os_sys_calls_lib -Ibazel-out/k8-fastbuild/bin/source/common/quic/platform/_virtual_includes/quiche_export_impl_lib -Ibazel-out/k8-fastbuild/bin/source/common/quic/platform/_virtual_includes/quiche_logging_impl_lib -Ibazel-out/k8-fastbuild/bin/external/com_github_google_quiche/_virtual_includes/quiche_common_platform_default_quiche_platform_impl_server_stats_impl_lib -Ibazel-out/k8-fastbuild/bin/source/common/quic/platform/_virtual_includes/quiche_stack_trace_impl_lib -Ibazel-out/k8-fastbuild/bin/source/common/quic/platform/_virtual_includes/quiche_platform_iovec_impl_lib -Ibazel-out/k8-fastbuild/bin/external/com_github_google_quiche/_virtual_includes/quiche_common_platform_default_quiche_platform_impl_prefetch_impl_lib -Ibazel-out/k8-fastbuild/bin/external/com_github_google_quiche/_virtual_includes/quiche_common_platform_default_quiche_platform_impl_command_line_flags_impl_lib -Ibazel-out/k8-fastbuild/bin/external/com_github_google_quiche/_virtual_includes/quiche_common_platform_default_quiche_platform_impl_flag_utils_impl_lib -Ibazel-out/k8-fastbuild/bin/external/com_github_google_quiche/_virtual_includes/quiche_common_platform_default_quiche_platform_impl_reference_counted_impl_lib -Ibazel-out/k8-fastbuild/bin/external/com_github_google_quiche/_virtual_includes/quiche_common_platform_default_quiche_platform_impl_testvalue_impl_lib -Ibazel-out/k8-fastbuild/bin/source/common/quic/platform/_virtual_includes/quic_base_impl_lib -Ibazel-out/k8-fastbuild/bin/source/common/quic/platform/_virtual_includes/quiche_flags_impl_lib -Ibazel-out/k8-fastbuild/bin/source/common/quic/platform/_virtual_includes/quiche_mem_slice_impl_lib -Ibazel-out/k8-fastbuild/bin/source/common/quic/platform/_virtual_includes/quiche_time_utils_impl_lib -Ibazel-out/k8-fastbuild/bin/external/com_github_google_quiche/_virtual_includes/quiche_common_platform_default_quiche_platform_impl_client_stats_impl_lib -Ibazel-out/k8-fastbuild/bin/source/common/filesystem/_virtual_includes/directory_iterator_impl_lib_posix -Ibazel-out/k8-fastbuild/bin/external/com_github_google_quiche/_virtual_includes/quiche_common_platform_default_quiche_platform_impl_googleurl_impl_lib -Ibazel-out/k8-fastbuild/bin/external/com_github_google_quiche/_virtual_includes/quiche_common_platform_default_quiche_platform_impl_mutex_impl_lib -Ibazel-out/k8-fastbuild/bin/external/com_github_google_quiche/_virtual_includes/quiche_common_platform_default_quiche_platform_impl_containers_impl_lib -Ibazel-out/k8-fastbuild/bin/source/common/quic/platform/_virtual_includes/quiche_lower_case_string_impl_lib -Ibazel-out/k8-fastbuild/bin/external/com_github_google_quiche/_virtual_includes/quiche_common_platform_default_quiche_platform_impl_header_policy_impl_lib -isystem external/com_github_gabime_spdlog/include -isystem bazel-out/k8-fastbuild/bin/external/com_github_gabime_spdlog/include -isystem external/com_github_fmtlib_fmt/include -isystem bazel-out/k8-fastbuild/bin/external/com_github_fmtlib_fmt/include -isystem bazel-out/k8-fastbuild/bin/bazel/foreign_cc/zlib/include -isystem external/com_github_jbeder_yaml_cpp/include -isystem bazel-out/k8-fastbuild/bin/external/com_github_jbeder_yaml_cpp/include -isystem external/boringssl/include -isystem bazel-out/k8-fastbuild/bin/external/boringssl/include -isystem external/com_google_googletest/googlemock -isystem bazel-out/k8-fastbuild/bin/external/com_google_googletest/googlemock -isystem external/com_google_googletest/googlemock/include -isystem bazel-out/k8-fastbuild/bin/external/com_google_googletest/googlemock/include -isystem external/com_google_googletest/googletest -isystem bazel-out/k8-fastbuild/bin/external/com_google_googletest/googletest -isystem external/com_google_googletest/googletest/include -isystem bazel-out/k8-fastbuild/bin/external/com_google_googletest/googletest/include -isystem bazel-out/k8-fastbuild/bin/bazel/foreign_cc/event/include -isystem bazel-out/k8-fastbuild/bin/bazel/foreign_cc/liburing/include -isystem bazel/external/http_parser -isystem bazel-out/k8-fastbuild/bin/bazel/external/http_parser -isystem bazel-out/k8-fastbuild/bin/external/envoy/bazel/foreign_cc/nghttp2/include -isystem external/com_github_nlohmann_json/include -isystem bazel-out/k8-fastbuild/bin/external/com_github_nlohmann_json/include -isystem external/com_github_openhistogram_libcircllhist/src -isystem bazel-out/k8-fastbuild/bin/external/com_github_openhistogram_libcircllhist/src -isystem external/com_github_mirror_tclap/include -isystem bazel-out/k8-fastbuild/bin/external/com_github_mirror_tclap/include '-DABSL_MIN_LOG_LEVEL=4' -fdebug-types-section -fPIC -Wno-deprecated-declarations '-std=c++20' -fsized-deallocation -Wall -Wextra -Werror -Wnon-virtual-dtor -Woverloaded-virtual -Wold-style-cast -Wformat -Wformat-security -Wvla -Wno-deprecated-declarations -Wreturn-type -Wno-maybe-uninitialized -DTCMALLOC -DENVOY_OBJECT_TRACE_ON_DUMP -DENVOY_HOT_RESTART -DENVOY_NGHTTP2 -DENVOY_ADMIN_HTML -DENVOY_STATIC_EXTENSION_REGISTRATION -DENVOY_GOOGLE_GRPC -DENVOY_HANDLE_SIGNALS -fno-canonical-system-headers -Wno-builtin-macro-redefined '-D__DATE__="redacted"' '-D__TIMESTAMP__="redacted"' '-D__TIME__="redacted"' -c test/extensions/dynamic_modules/http/factory_test.cc -o bazel-out/k8-fastbuild/bin/test/extensions/dynamic_modules/http/_objs/factory_test/factory_test.pic.o

@mathetake
Copy link
Copy Markdown
Member Author

ok now I see rbe_pool = "6gig", is indeed added to factory_context_mocks ....

Signed-off-by: Takeshi Yoneda <t.y.mathetake@gmail.com>
@phlax
Copy link
Copy Markdown
Member

phlax commented Oct 23, 2024

problem/solution is as i said above

ci was changed yesterday - altho tbf its been changing over the last few days/week - so not sure about previous runs

@mathetake
Copy link
Copy Markdown
Member Author

yeah anyways added the option - f46d3d7 thanks for the advice! (I think we need to audit the build dependency graph especially around the common build test targets)

@phlax
Copy link
Copy Markdown
Member

phlax commented Oct 23, 2024

to remove extraneous build/test deps? that would be amazing - did a bit of this previously - but thinning out the tree would make things much faster/use less resources

@mathetake
Copy link
Copy Markdown
Member Author

mathetake commented Oct 23, 2024

to remove extraneous build/test deps?

exactly. I think the problem i am having now is essentially because of that (judging by the fact that this has started happening after a certain main merge + happening at the linking phase where linker tried to put every dependencies in-memory regardless an object file is used or not)

@mattklein123 mattklein123 merged commit 0e6450a into envoyproxy:main Oct 24, 2024
wbpcode pushed a commit that referenced this pull request Mar 31, 2025
Commit Message: api: removes 'wip' from dynamic_modules
Additional Description:

The dynamic modules API was introduced 6 months ago in #36448 and at the
time we didn't have either an implementation or confidence on the
configuration API, so it has been marked WIP just in case.

Now that the initial implementation is done, and the documentation as
well as the example repository is hosted at
envoyproxy/dynamic-modules-examples, early adopters have already tried
it out and we haven't heard any concern about the configuration API, so
this commit removes the WIP marker towards the next release of Envoy
v1.34.

Note that the extension itself is still in alpha, it follows the same
caveat like any other alpha extensions.

Risk Level: low
Testing: existing tests.
Docs Changes: Already done in the past commits
Release Notes: Already done in the past commits
Platform Specific Features: n/a

---------

Signed-off-by: Takeshi Yoneda <t.y.mathetake@gmail.com>
jewertow pushed a commit to jewertow/envoy that referenced this pull request Apr 2, 2025
Commit Message: api: removes 'wip' from dynamic_modules
Additional Description:

The dynamic modules API was introduced 6 months ago in envoyproxy#36448 and at the
time we didn't have either an implementation or confidence on the
configuration API, so it has been marked WIP just in case.

Now that the initial implementation is done, and the documentation as
well as the example repository is hosted at
envoyproxy/dynamic-modules-examples, early adopters have already tried
it out and we haven't heard any concern about the configuration API, so
this commit removes the WIP marker towards the next release of Envoy
v1.34.

Note that the extension itself is still in alpha, it follows the same
caveat like any other alpha extensions.

Risk Level: low
Testing: existing tests.
Docs Changes: Already done in the past commits
Release Notes: Already done in the past commits
Platform Specific Features: n/a

---------

Signed-off-by: Takeshi Yoneda <t.y.mathetake@gmail.com>
agrawroh pushed a commit to agrawroh/envoy that referenced this pull request Apr 9, 2025
Commit Message: api: removes 'wip' from dynamic_modules
Additional Description:

The dynamic modules API was introduced 6 months ago in envoyproxy#36448 and at the
time we didn't have either an implementation or confidence on the
configuration API, so it has been marked WIP just in case.

Now that the initial implementation is done, and the documentation as
well as the example repository is hosted at
envoyproxy/dynamic-modules-examples, early adopters have already tried
it out and we haven't heard any concern about the configuration API, so
this commit removes the WIP marker towards the next release of Envoy
v1.34.

Note that the extension itself is still in alpha, it follows the same
caveat like any other alpha extensions.

Risk Level: low
Testing: existing tests.
Docs Changes: Already done in the past commits
Release Notes: Already done in the past commits
Platform Specific Features: n/a

---------

Signed-off-by: Takeshi Yoneda <t.y.mathetake@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants