The C based gRPC (C++, Python, Ruby, Objective-C, PHP, C#) https://grpc.io/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

8082 lines
183 KiB

# Copyright 2022 gRPC authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
load(
"//bazel:grpc_build_system.bzl",
"grpc_cc_library",
"grpc_generate_one_off_internal_targets",
"grpc_upb_proto_library",
"grpc_upb_proto_reflection_library",
)
licenses(["reciprocal"])
package(
default_visibility = ["//:__subpackages__"],
features = [
"layering_check",
],
)
# This is needed as a transitionary mechanism to build the src/core targets in
# the top-level BUILD file that have not yet been moved here. Should go away
# once the transition is complete.
exports_files(
glob(
["**"],
exclude = ["ext/transport/binder/java/**"],
),
visibility = ["//:__subpackages__"],
)
grpc_cc_library(
name = "channel_fwd",
hdrs = [
"lib/channel/channel_fwd.h",
],
language = "c++",
)
grpc_cc_library(
name = "slice_cast",
hdrs = [
"//:include/grpc/event_engine/internal/slice_cast.h",
],
)
grpc_cc_library(
name = "event_engine_extensions",
hdrs = [
"lib/event_engine/extensions/can_track_errors.h",
"lib/event_engine/extensions/chaotic_good_extension.h",
"lib/event_engine/extensions/supports_fd.h",
],
external_deps = [
"absl/status:statusor",
"absl/functional:any_invocable",
"absl/strings",
],
deps = [
":memory_quota",
"//:event_engine_base_hdrs",
"//:gpr_platform",
],
)
grpc_cc_library(
name = "event_engine_common",
srcs = [
"lib/event_engine/event_engine.cc",
"lib/event_engine/resolved_address.cc",
"lib/event_engine/slice.cc",
"lib/event_engine/slice_buffer.cc",
],
hdrs = [
"lib/event_engine/extensions/can_track_errors.h",
"lib/event_engine/handle_containers.h",
[EventEngine] Modify iomgr to allow creation of event engine clients and client side endpoints (#31661) * [WIP] EventEngine iomgr endpoint shims * [WIP] EventEngine::Endpoint iomgr shims for the PosixEventEngine * Util functions to help with posix engine listener implementation * sanity * update comments in posix_engine_listener_utils.h * review comments * iwyu * revert prev commit * iwyu * update build * update * regenerate projects * regenerate projects * minor fixes * update BUILD * sanity * update build * regenerate projects * fix unused parameter * sanity * update * sanity * regenerate_projects * remove unused variable * start * update * regenerate_projects * sanity * update * fixes * update * regenerate_projects * update * fix sanity and msan failure * more fixes * build failure * update * fix * sanity * fixes * update * regenerate projects * fix sanity * review comments * An EventEngine subclass to be implemented by all posix based event engines * sanity * comments * update * review comments * re-word * fix * update * review comments * regenerate projects * syntax fix * add lock free event benchmark * releasable mutex lock * fix build isue * update * start * regenerate projects * update * fix * windows build * update * windows portability issue * update * update * update * update * format * update * update * update * update * update * fix sanity * regenerate projects * update * iwyu * Fix resolved address length related bugs in tcp_socket_utils and listener_utils * iwyu * cleanup src/core/lib/event_engine/tcp_socket_utils.cc * iwyu * fix * regenerate projects * fix sanity * re-write endpoint shim * more re-write * cleanup * update * review comments * build issue * more build issue fixes plus adding event_engine_trace * even more build issue fixes * iwyu * add static_cast * update * remove redundant code * update * deduplicate * iwyu * Fix review comments and regenerate_projects * sanity * review comments * fix include guards Co-authored-by: AJ Heller <hork@google.com>
2 years ago
"lib/event_engine/resolved_address_internal.h",
"//:include/grpc/event_engine/slice.h",
"//:include/grpc/event_engine/slice_buffer.h",
],
external_deps = [
"absl/container:flat_hash_set",
"absl/hash",
"absl/log:check",
"absl/strings",
"absl/utility",
],
deps = [
[EventEngine] Modify iomgr to allow creation of event engine clients and client side endpoints (#31661) * [WIP] EventEngine iomgr endpoint shims * [WIP] EventEngine::Endpoint iomgr shims for the PosixEventEngine * Util functions to help with posix engine listener implementation * sanity * update comments in posix_engine_listener_utils.h * review comments * iwyu * revert prev commit * iwyu * update build * update * regenerate projects * regenerate projects * minor fixes * update BUILD * sanity * update build * regenerate projects * fix unused parameter * sanity * update * sanity * regenerate_projects * remove unused variable * start * update * regenerate_projects * sanity * update * fixes * update * regenerate_projects * update * fix sanity and msan failure * more fixes * build failure * update * fix * sanity * fixes * update * regenerate projects * fix sanity * review comments * An EventEngine subclass to be implemented by all posix based event engines * sanity * comments * update * review comments * re-word * fix * update * review comments * regenerate projects * syntax fix * add lock free event benchmark * releasable mutex lock * fix build isue * update * start * regenerate projects * update * fix * windows build * update * windows portability issue * update * update * update * update * format * update * update * update * update * update * fix sanity * regenerate projects * update * iwyu * Fix resolved address length related bugs in tcp_socket_utils and listener_utils * iwyu * cleanup src/core/lib/event_engine/tcp_socket_utils.cc * iwyu * fix * regenerate projects * fix sanity * re-write endpoint shim * more re-write * cleanup * update * review comments * build issue * more build issue fixes plus adding event_engine_trace * even more build issue fixes * iwyu * add static_cast * update * remove redundant code * update * deduplicate * iwyu * Fix review comments and regenerate_projects * sanity * review comments * fix include guards Co-authored-by: AJ Heller <hork@google.com>
2 years ago
"resolved_address",
"slice",
"slice_buffer",
"slice_cast",
"slice_refcount",
"//:event_engine_base_hdrs",
"//:gpr",
"//:gpr_platform",
],
)
grpc_cc_library(
name = "transport_fwd",
hdrs = [
"lib/transport/transport_fwd.h",
],
language = "c++",
)
grpc_cc_library(
name = "server_call_tracer_filter",
srcs = [
"server/server_call_tracer_filter.cc",
],
hdrs = [
"server/server_call_tracer_filter.h",
],
external_deps = [
"absl/status",
"absl/status:statusor",
],
language = "c++",
visibility = ["@grpc:alt_grpc_base_legacy"],
deps = [
"arena_promise",
"call_finalization",
"cancel_callback",
"channel_args",
"channel_fwd",
"channel_stack_type",
"context",
"map",
"pipe",
"//:call_tracer",
"//:config",
"//:gpr_platform",
"//:grpc_base",
"//:legacy_context",
],
)
grpc_cc_library(
name = "atomic_utils",
language = "c++",
public_hdrs = ["lib/gprpp/atomic_utils.h"],
deps = ["//:gpr"],
)
grpc_cc_library(
name = "metadata_compression_traits",
hdrs = [
"lib/transport/metadata_compression_traits.h",
],
deps = ["//:gpr_platform"],
)
grpc_cc_library(
name = "metadata_info",
srcs = ["lib/transport/metadata_info.cc"],
hdrs = ["lib/transport/metadata_info.h"],
deps = [
"channel_args",
"hpack_constants",
"metadata_batch",
"slice",
"//:call_tracer",
"//:gpr_platform",
"//:grpc_base",
],
)
grpc_cc_library(
name = "experiments",
srcs = [
"lib/experiments/config.cc",
"lib/experiments/experiments.cc",
],
hdrs = [
"lib/experiments/config.h",
"lib/experiments/experiments.h",
],
defines = select(
{
"//:grpc_experiments_are_final": ["GRPC_EXPERIMENTS_ARE_FINAL"],
"//conditions:default": [],
},
),
external_deps = [
"absl/functional:any_invocable",
"absl/log:check",
"absl/strings",
],
language = "c++",
tags = ["nofixdeps"],
visibility = ["@grpc:grpc_experiments"],
deps = [
"no_destruct",
"//:config_vars",
"//:gpr",
],
)
grpc_cc_library(
name = "init_internally",
srcs = ["lib/surface/init_internally.cc"],
hdrs = ["lib/surface/init_internally.h"],
deps = ["//:gpr_platform"],
)
grpc_cc_library(
name = "useful",
hdrs = ["lib/gpr/useful.h"],
external_deps = [
"absl/strings",
"absl/types:variant",
],
language = "c++",
visibility = ["@grpc:useful"],
deps = ["//:gpr_platform"],
)
grpc_cc_library(
name = "examine_stack",
srcs = [
"lib/gprpp/examine_stack.cc",
],
hdrs = [
"lib/gprpp/examine_stack.h",
],
external_deps = ["absl/types:optional"],
deps = ["//:gpr_platform"],
)
grpc_cc_library(
name = "gpr_atm",
srcs = [
"lib/gpr/atm.cc",
],
language = "c++",
public_hdrs = [
"//:include/grpc/support/atm.h",
"//:include/grpc/support/atm_gcc_atomic.h",
"//:include/grpc/support/atm_gcc_sync.h",
"//:include/grpc/support/atm_windows.h",
"//:include/grpc/impl/codegen/atm.h",
"//:include/grpc/impl/codegen/atm_gcc_atomic.h",
"//:include/grpc/impl/codegen/atm_gcc_sync.h",
"//:include/grpc/impl/codegen/atm_windows.h",
],
deps = [
"useful",
"//:gpr_platform",
],
)
grpc_cc_library(
name = "gpr_manual_constructor",
srcs = [],
hdrs = [
"lib/gprpp/manual_constructor.h",
],
language = "c++",
deps = [
"construct_destruct",
"//:gpr_platform",
],
)
grpc_cc_library(
name = "gpr_spinlock",
srcs = [],
hdrs = [
"lib/gpr/spinlock.h",
],
language = "c++",
deps = [
"gpr_atm",
"//:gpr_platform",
],
)
grpc_cc_library(
name = "env",
srcs = [
"lib/gprpp/linux/env.cc",
"lib/gprpp/posix/env.cc",
"lib/gprpp/windows/env.cc",
],
hdrs = [
"lib/gprpp/env.h",
],
external_deps = ["absl/types:optional"],
deps = [
"tchar",
"//:gpr_platform",
],
)
grpc_cc_library(
name = "directory_reader",
srcs = [
"lib/gprpp/posix/directory_reader.cc",
"lib/gprpp/windows/directory_reader.cc",
],
hdrs = [
"lib/gprpp/directory_reader.h",
],
external_deps = [
"absl/functional:function_ref",
"absl/status",
"absl/status:statusor",
"absl/strings",
],
deps = [
"//:gpr",
"//:gpr_platform",
],
)
grpc_cc_library(
name = "chunked_vector",
hdrs = ["lib/gprpp/chunked_vector.h"],
external_deps = [
"absl/log:check",
],
deps = [
"arena",
"gpr_manual_constructor",
"//:gpr",
],
)
grpc_cc_library(
name = "construct_destruct",
language = "c++",
public_hdrs = ["lib/gprpp/construct_destruct.h"],
deps = ["//:gpr_platform"],
)
grpc_cc_library(
name = "status_helper",
srcs = [
"lib/gprpp/status_helper.cc",
],
hdrs = [
"lib/gprpp/status_helper.h",
],
external_deps = [
"absl/log:check",
"absl/status",
"absl/strings",
"absl/strings:cord",
"absl/time",
"absl/types:optional",
"@com_google_protobuf//upb:base",
"@com_google_protobuf//upb:mem",
],
language = "c++",
deps = [
"percent_encoding",
"slice",
"//:debug_location",
"//:google_rpc_status_upb",
"//:gpr",
"//:protobuf_any_upb",
],
)
grpc_cc_library(
name = "unique_type_name",
hdrs = ["lib/gprpp/unique_type_name.h"],
external_deps = ["absl/strings"],
language = "c++",
deps = [
"useful",
"//:gpr_platform",
],
)
grpc_cc_library(
name = "validation_errors",
srcs = [
"lib/gprpp/validation_errors.cc",
],
hdrs = [
"lib/gprpp/validation_errors.h",
],
external_deps = [
"absl/status",
"absl/strings",
],
language = "c++",
deps = ["//:gpr_platform"],
)
grpc_cc_library(
name = "overload",
language = "c++",
public_hdrs = ["lib/gprpp/overload.h"],
deps = ["//:gpr_platform"],
)
grpc_cc_library(
name = "match",
external_deps = ["absl/types:variant"],
language = "c++",
public_hdrs = ["lib/gprpp/match.h"],
deps = [
"overload",
"//:gpr_platform",
],
)
grpc_cc_library(
name = "table",
external_deps = [
"absl/meta:type_traits",
"absl/utility",
],
language = "c++",
public_hdrs = ["lib/gprpp/table.h"],
deps = [
"bitset",
"//:gpr_platform",
],
)
grpc_cc_library(
name = "packed_table",
hdrs = ["lib/gprpp/packed_table.h"],
language = "c++",
deps = [
"sorted_pack",
"table",
"//:gpr_platform",
],
)
grpc_cc_library(
name = "bitset",
language = "c++",
public_hdrs = ["lib/gprpp/bitset.h"],
deps = [
"useful",
"//:gpr_platform",
],
)
grpc_cc_library(
name = "no_destruct",
language = "c++",
public_hdrs = ["lib/gprpp/no_destruct.h"],
deps = [
"construct_destruct",
"//:gpr_platform",
],
)
grpc_cc_library(
name = "tchar",
srcs = [
"lib/gprpp/tchar.cc",
],
hdrs = [
"lib/gprpp/tchar.h",
],
deps = ["//:gpr_platform"],
)
grpc_cc_library(
name = "poll",
external_deps = ["absl/log:check"],
language = "c++",
public_hdrs = [
"lib/promise/poll.h",
],
deps = [
"construct_destruct",
"//:gpr",
"//:gpr_platform",
],
)
grpc_cc_library(
name = "status_flag",
external_deps = [
"absl/log:check",
"absl/status",
"absl/status:statusor",
"absl/types:optional",
],
language = "c++",
public_hdrs = [
"lib/promise/status_flag.h",
],
deps = [
"promise_status",
"//:gpr",
"//:gpr_platform",
],
)
grpc_cc_library(
name = "map_pipe",
external_deps = ["absl/status"],
language = "c++",
public_hdrs = [
"lib/promise/map_pipe.h",
],
deps = [
"for_each",
"map",
"pipe",
"poll",
"promise_factory",
"promise_trace",
"try_seq",
"//:gpr",
"//:gpr_platform",
],
)
grpc_cc_library(
name = "1999",
srcs = [
"lib/promise/party.cc",
],
hdrs = [
"lib/promise/party.h",
],
external_deps = [
"absl/base:core_headers",
"absl/log:check",
"absl/strings",
"absl/strings:str_format",
],
language = "c++",
deps = [
"activity",
"arena",
"construct_destruct",
"context",
"poll",
"promise_factory",
"promise_trace",
"ref_counted",
"//:event_engine_base_hdrs",
"//:exec_ctx",
"//:gpr",
"//:ref_counted_ptr",
],
)
grpc_cc_library(
name = "context",
external_deps = [
"absl/log:check",
"absl/meta:type_traits",
],
language = "c++",
public_hdrs = [
"lib/promise/context.h",
],
deps = [
"down_cast",
"//:gpr",
],
)
grpc_cc_library(
name = "map",
language = "c++",
public_hdrs = ["lib/promise/map.h"],
deps = [
"poll",
"promise_like",
"//:gpr_platform",
],
)
grpc_cc_library(
name = "sleep",
srcs = [
"lib/promise/sleep.cc",
],
hdrs = [
"lib/promise/sleep.h",
],
external_deps = ["absl/status"],
deps = [
"activity",
"context",
"event_engine_context",
"poll",
"time",
"//:event_engine_base_hdrs",
"//:exec_ctx",
"//:gpr",
],
)
grpc_cc_library(
name = "wait_for_callback",
hdrs = [
"lib/promise/wait_for_callback.h",
],
external_deps = ["absl/base:core_headers"],
deps = [
"activity",
"poll",
"//:gpr",
],
)
grpc_cc_library(
name = "arena_promise",
external_deps = ["absl/meta:type_traits"],
language = "c++",
public_hdrs = [
"lib/promise/arena_promise.h",
],
deps = [
"arena",
"construct_destruct",
"context",
"poll",
"//:gpr_platform",
],
)
grpc_cc_library(
name = "promise_like",
external_deps = ["absl/meta:type_traits"],
language = "c++",
public_hdrs = [
"lib/promise/detail/promise_like.h",
],
deps = [
"poll",
"//:gpr_platform",
],
)
grpc_cc_library(
name = "cancel_callback",
language = "c++",
public_hdrs = [
"lib/promise/cancel_callback.h",
],
deps = [
"promise_like",
"//:gpr_platform",
],
)
grpc_cc_library(
name = "promise_factory",
external_deps = ["absl/meta:type_traits"],
language = "c++",
public_hdrs = [
"lib/promise/detail/promise_factory.h",
],
deps = [
"promise_like",
"//:gpr_platform",
],
)
grpc_cc_library(
name = "if",
external_deps = [
"absl/status:statusor",
"absl/types:variant",
],
language = "c++",
public_hdrs = ["lib/promise/if.h"],
deps = [
"construct_destruct",
"poll",
"promise_factory",
"promise_like",
"//:gpr_platform",
],
)
grpc_cc_library(
name = "switch",
language = "c++",
public_hdrs = ["lib/promise/switch.h"],
deps = [
"if",
"promise_factory",
"//:gpr_platform",
],
)
grpc_cc_library(
name = "promise_status",
external_deps = [
"absl/log:check",
"absl/status",
"absl/status:statusor",
],
language = "c++",
public_hdrs = [
"lib/promise/detail/status.h",
],
deps = ["//:gpr_platform"],
)
grpc_cc_library(
name = "race",
language = "c++",
public_hdrs = ["lib/promise/race.h"],
deps = ["//:gpr_platform"],
)
grpc_cc_library(
name = "prioritized_race",
language = "c++",
public_hdrs = ["lib/promise/prioritized_race.h"],
deps = ["//:gpr_platform"],
)
grpc_cc_library(
name = "loop",
external_deps = [
"absl/status",
"absl/status:statusor",
"absl/types:variant",
],
language = "c++",
public_hdrs = [
"lib/promise/loop.h",
],
deps = [
"construct_destruct",
"poll",
"promise_factory",
"//:gpr_platform",
],
)
grpc_cc_library(
name = "join_state",
external_deps = [
"absl/log:check",
],
language = "c++",
public_hdrs = [
"lib/promise/detail/join_state.h",
],
deps = [
"bitset",
"construct_destruct",
"poll",
"promise_like",
"promise_trace",
"//:gpr",
"//:gpr_platform",
],
)
grpc_cc_library(
name = "join",
external_deps = ["absl/meta:type_traits"],
language = "c++",
public_hdrs = [
"lib/promise/join.h",
],
deps = [
"join_state",
"map",
"//:gpr_platform",
],
)
grpc_cc_library(
name = "try_join",
external_deps = [
"absl/log:check",
"absl/meta:type_traits",
"absl/status",
"absl/status:statusor",
],
language = "c++",
public_hdrs = [
"lib/promise/try_join.h",
],
deps = [
"join_state",
"map",
"poll",
"status_flag",
"//:gpr_platform",
],
)
grpc_cc_library(
name = "all_ok",
external_deps = [
"absl/meta:type_traits",
"absl/status",
"absl/status:statusor",
],
language = "c++",
public_hdrs = [
"lib/promise/all_ok.h",
],
deps = [
"join_state",
"map",
"poll",
"status_flag",
"//:gpr_platform",
],
)
grpc_cc_library(
name = "basic_seq",
language = "c++",
public_hdrs = [
"lib/promise/detail/basic_seq.h",
],
deps = [
"construct_destruct",
"poll",
"//:gpr_platform",
],
)
grpc_cc_library(
name = "seq_state",
external_deps = [
"absl/base:core_headers",
"absl/log:check",
"absl/strings",
],
language = "c++",
public_hdrs = [
"lib/promise/detail/seq_state.h",
],
deps = [
"construct_destruct",
"poll",
"promise_factory",
"promise_like",
"promise_trace",
"//:debug_location",
"//:gpr",
],
)
grpc_cc_library(
name = "seq",
language = "c++",
public_hdrs = [
"lib/promise/seq.h",
],
deps = [
"basic_seq",
"poll",
"promise_like",
"seq_state",
"//:debug_location",
"//:gpr_platform",
],
)
grpc_cc_library(
name = "try_seq",
external_deps = [
"absl/log:check",
"absl/meta:type_traits",
"absl/status",
"absl/status:statusor",
],
language = "c++",
public_hdrs = [
"lib/promise/try_seq.h",
],
deps = [
"basic_seq",
"poll",
"promise_like",
"promise_status",
"seq_state",
"status_flag",
"//:debug_location",
"//:gpr_platform",
],
)
grpc_cc_library(
name = "activity",
srcs = [
"lib/promise/activity.cc",
],
external_deps = [
"absl/base:core_headers",
"absl/log:check",
"absl/status",
"absl/strings",
"absl/strings:str_format",
"absl/types:optional",
],
language = "c++",
public_hdrs = [
"lib/promise/activity.h",
],
deps = [
"atomic_utils",
"construct_destruct",
"context",
"event_engine_context",
"no_destruct",
"poll",
"promise_factory",
"promise_status",
"//:gpr",
"//:orphanable",
],
)
grpc_cc_library(
name = "exec_ctx_wakeup_scheduler",
hdrs = [
"lib/promise/exec_ctx_wakeup_scheduler.h",
],
external_deps = ["absl/status"],
language = "c++",
deps = [
"closure",
"error",
"//:debug_location",
"//:exec_ctx",
"//:gpr_platform",
],
)
grpc_cc_library(
name = "event_engine_wakeup_scheduler",
hdrs = [
"lib/promise/event_engine_wakeup_scheduler.h",
],
external_deps = ["absl/log:check"],
language = "c++",
deps = [
"//:event_engine_base_hdrs",
"//:exec_ctx",
"//:gpr_platform",
],
)
grpc_cc_library(
name = "wait_set",
external_deps = [
"absl/container:flat_hash_set",
"absl/hash",
],
language = "c++",
public_hdrs = [
"lib/promise/wait_set.h",
],
deps = [
"activity",
"poll",
"//:gpr_platform",
],
)
grpc_cc_library(
name = "latch",
external_deps = [
"absl/log:check",
"absl/strings",
],
language = "c++",
public_hdrs = [
"lib/promise/latch.h",
],
deps = [
"activity",
"poll",
"promise_trace",
"//:gpr",
],
)
grpc_cc_library(
name = "inter_activity_latch",
external_deps = [
"absl/base:core_headers",
"absl/strings",
],
language = "c++",
public_hdrs = [
"lib/promise/inter_activity_latch.h",
],
deps = [
"activity",
"poll",
"promise_trace",
"wait_set",
"//:gpr",
],
)
[promises] Server call (#31448) * add experiment * allow instantiation * scratchings * scratchings * sniffly * Automated change: Fix sanity tests * fix * fix * fix * Automated change: Fix sanity tests * progress * change pipe labels to enable server code to be written * better api * Automated change: Fix sanity tests * progress * [promises] Implementation of deadline for server-based-calls * compression filter compiles again * Automated change: Fix sanity tests * fix * server tracing fixes * get client initial metadata * progress * progress * server call surface progress * Automated change: Fix sanity tests * move payload * server-progress * recv-message-server-connchan * logging * fix context-gate * recv fix@top * Automated change: Fix sanity tests * recv close on server * top termination start * [promises] Move Empty to be first class * fixes * fix * flow control fix * got to orphan! * orphan * call orphan * spam cleanup * fix * new cancelation semantics * progress * large metadata fixes * fix * fix * log * better logs * fix-chanz * logging, necessaryness * fix typo * fixes * fix * fix * fix-pipe * cleanup logging * fix * build-fix * fix * Automated change: Fix sanity tests * logging * Automated change: Fix sanity tests * Automated change: Fix sanity tests * better primitive * Revert "better primitive" This reverts commit 119b5ee244763a88d2318bc5145065f4940a2295. * fix * fix * trrracing * Automated change: Fix sanity tests * get-trailing-metadata * cancellation * Automated change: Fix sanity tests * add transform pipeline to pipe * add transform pipeline to pipe * interceptor lists * new server initial md api into filters * convert connected_channel * convert call * initial promise based filter conversion * convert promise based filter * build fixes * compile fix * fixes * fix ordering * fixes * check-metadata * revert later: debug code * better debug * fix metadata ordering with messages in promise based filter * fix ordering problem between batch completion and promise completion * properly handle failure on receive message path on client * more debug, fix a repoll bug in pbf * Automated change: Fix sanity tests * fixes * Automated change: Fix sanity tests * cleanup logging * fixes * missing file * fixes * logging * Automated change: Fix sanity tests * fixes * convert logging filter * fix * Automated change: Fix sanity tests * fix bad server response test * Revert "Disable logging test (#32049)" This reverts commit 5fc92eaeae6f668ba7c2df1024f18ef8c798a319. * fix * Automated change: Fix sanity tests * fix memory leaks, logging * Automated change: Fix sanity tests * slice refcount debugging * asan-canaries * leak-fix * leak-fix * Automated change: Fix sanity tests * fix * fix * fix * fix * fix * Automated change: Fix sanity tests * fix * remove mistaken line * add-comment * fix refcounting bug * Automated change: Fix sanity tests * rename variable * renames * bleh * carry pipe close status from bottom of pipe to top to appease recv-close-on-server * backport cancellation * Revert "carry pipe close status from bottom of pipe to top to appease" This reverts commit fa33301dcddd01aff52d3bee77b16ffef9466de5. * fix * Automated change: Fix sanity tests * review-feedback * comment-ordering * monostate * renames * undo-review-feedback * fix * review-feedback * review-feedback * fix * review-feedback * drop debugloc constructor * interceptor-list-rev-feedback * interceptor-list-rev-feedback * pipe test * review-feedback * undo-mistaken-change * Automated change: Fix sanity tests * pipe error state * detect send/recv failures and report * iwyu, build * fix submodules * fix * warning * cleanup * Automated change: Fix sanity tests * fix * fix for windows * fix * null pointer fix * iwyu * gen projex --------- Co-authored-by: ctiller <ctiller@users.noreply.github.com>
2 years ago
grpc_cc_library(
name = "interceptor_list",
hdrs = [
"lib/promise/interceptor_list.h",
],
external_deps = [
"absl/log:check",
"absl/strings",
"absl/strings:str_format",
"absl/types:optional",
],
deps = [
"arena",
"construct_destruct",
"context",
"poll",
"promise_factory",
"promise_trace",
"//:debug_location",
"//:gpr",
],
)
grpc_cc_library(
name = "pipe",
hdrs = [
"lib/promise/pipe.h",
],
external_deps = [
"absl/log:check",
"absl/strings",
"absl/types:optional",
"absl/types:variant",
],
language = "c++",
deps = [
"activity",
"arena",
"context",
"if",
"interceptor_list",
"map",
"poll",
"promise_trace",
"seq",
"//:debug_location",
"//:gpr",
"//:ref_counted_ptr",
],
)
grpc_cc_library(
name = "promise_mutex",
hdrs = [
"lib/promise/promise_mutex.h",
],
external_deps = ["absl/log:check"],
language = "c++",
deps = [
"activity",
"poll",
"//:gpr",
],
)
grpc_cc_library(
name = "inter_activity_pipe",
hdrs = [
"lib/promise/inter_activity_pipe.h",
],
external_deps = [
"absl/base:core_headers",
"absl/types:optional",
],
language = "c++",
deps = [
"activity",
"poll",
"ref_counted",
"//:gpr",
"//:ref_counted_ptr",
],
)
grpc_cc_library(
name = "promise_trace",
srcs = [
"lib/promise/trace.cc",
],
hdrs = [
"lib/promise/trace.h",
],
language = "c++",
deps = [
"//:gpr_platform",
"//:grpc_trace",
],
)
grpc_cc_library(
name = "mpsc",
hdrs = [
"lib/promise/mpsc.h",
],
external_deps = [
"absl/base:core_headers",
"absl/log:check",
],
language = "c++",
deps = [
"activity",
"poll",
"ref_counted",
"wait_set",
"//:gpr",
"//:ref_counted_ptr",
],
)
grpc_cc_library(
name = "observable",
hdrs = [
"lib/promise/observable.h",
],
external_deps = [
"absl/container:flat_hash_set",
"absl/functional:any_invocable",
"absl/log:check",
],
language = "c++",
deps = [
"activity",
"poll",
"//:gpr",
],
)
grpc_cc_library(
name = "for_each",
external_deps = [
"absl/log:check",
"absl/status",
"absl/strings",
],
language = "c++",
public_hdrs = ["lib/promise/for_each.h"],
deps = [
"activity",
"construct_destruct",
"poll",
"promise_factory",
"promise_status",
"promise_trace",
"status_flag",
"//:gpr",
"//:gpr_platform",
],
)
grpc_cc_library(
name = "ref_counted",
external_deps = [
"absl/log:check",
],
language = "c++",
public_hdrs = ["lib/gprpp/ref_counted.h"],
deps = [
"atomic_utils",
"down_cast",
"//:debug_location",
"//:gpr",
"//:ref_counted_ptr",
],
)
grpc_cc_library(
name = "dual_ref_counted",
external_deps = [
"absl/log:check",
],
language = "c++",
public_hdrs = ["lib/gprpp/dual_ref_counted.h"],
deps = [
"down_cast",
"//:debug_location",
"//:gpr",
"//:orphanable",
"//:ref_counted_ptr",
],
)
grpc_cc_library(
name = "ref_counted_string",
srcs = [
"lib/gprpp/ref_counted_string.cc",
],
hdrs = [
"lib/gprpp/ref_counted_string.h",
],
external_deps = ["absl/strings"],
language = "c++",
deps = [
"ref_counted",
"//:gpr",
"//:ref_counted_ptr",
],
)
grpc_cc_library(
name = "uuid_v4",
srcs = ["lib/gprpp/uuid_v4.cc"],
external_deps = ["absl/strings:str_format"],
language = "c++",
public_hdrs = ["lib/gprpp/uuid_v4.h"],
deps = ["//:gpr"],
)
grpc_cc_library(
name = "handshaker_factory",
language = "c++",
public_hdrs = [
"handshaker/handshaker_factory.h",
],
visibility = ["@grpc:alt_grpc_base_legacy"],
deps = [
"channel_args",
"iomgr_fwd",
"//:gpr_platform",
],
)
grpc_cc_library(
name = "handshaker_registry",
srcs = [
"handshaker/handshaker_registry.cc",
],
language = "c++",
public_hdrs = [
"handshaker/handshaker_registry.h",
],
visibility = ["@grpc:alt_grpc_base_legacy"],
deps = [
"channel_args",
"handshaker_factory",
"iomgr_fwd",
"//:gpr_platform",
],
)
grpc_cc_library(
name = "tcp_connect_handshaker",
srcs = [
"handshaker/tcp_connect/tcp_connect_handshaker.cc",
],
external_deps = [
"absl/base:core_headers",
"absl/log:check",
"absl/status",
"absl/status:statusor",
"absl/types:optional",
],
language = "c++",
public_hdrs = [
"handshaker/tcp_connect/tcp_connect_handshaker.h",
],
deps = [
"channel_args",
"channel_args_endpoint_config",
"closure",
"error",
"handshaker_factory",
"handshaker_registry",
"iomgr_fwd",
"pollset_set",
"resolved_address",
"slice",
"//:config",
"//:debug_location",
"//:exec_ctx",
"//:gpr",
"//:grpc_base",
"//:handshaker",
"//:iomgr",
[EventEngine] Modify iomgr to allow creation of event engine clients and client side endpoints (#31661) * [WIP] EventEngine iomgr endpoint shims * [WIP] EventEngine::Endpoint iomgr shims for the PosixEventEngine * Util functions to help with posix engine listener implementation * sanity * update comments in posix_engine_listener_utils.h * review comments * iwyu * revert prev commit * iwyu * update build * update * regenerate projects * regenerate projects * minor fixes * update BUILD * sanity * update build * regenerate projects * fix unused parameter * sanity * update * sanity * regenerate_projects * remove unused variable * start * update * regenerate_projects * sanity * update * fixes * update * regenerate_projects * update * fix sanity and msan failure * more fixes * build failure * update * fix * sanity * fixes * update * regenerate projects * fix sanity * review comments * An EventEngine subclass to be implemented by all posix based event engines * sanity * comments * update * review comments * re-word * fix * update * review comments * regenerate projects * syntax fix * add lock free event benchmark * releasable mutex lock * fix build isue * update * start * regenerate projects * update * fix * windows build * update * windows portability issue * update * update * update * update * format * update * update * update * update * update * fix sanity * regenerate projects * update * iwyu * Fix resolved address length related bugs in tcp_socket_utils and listener_utils * iwyu * cleanup src/core/lib/event_engine/tcp_socket_utils.cc * iwyu * fix * regenerate projects * fix sanity * re-write endpoint shim * more re-write * cleanup * update * review comments * build issue * more build issue fixes plus adding event_engine_trace * even more build issue fixes * iwyu * add static_cast * update * remove redundant code * update * deduplicate * iwyu * Fix review comments and regenerate_projects * sanity * review comments * fix include guards Co-authored-by: AJ Heller <hork@google.com>
2 years ago
"//:parse_address",
"//:ref_counted_ptr",
"//:uri_parser",
],
)
grpc_cc_library(
name = "endpoint_info_handshaker",
srcs = [
"handshaker/endpoint_info/endpoint_info_handshaker.cc",
],
hdrs = [
"handshaker/endpoint_info/endpoint_info_handshaker.h",
],
external_deps = [
"absl/status",
],
language = "c++",
deps = [
"channel_args",
"closure",
"handshaker_factory",
"handshaker_registry",
"//:config",
"//:debug_location",
"//:exec_ctx",
"//:gpr",
"//:handshaker",
"//:iomgr",
"//:ref_counted_ptr",
],
)
grpc_cc_library(
name = "channel_creds_registry",
hdrs = [
"lib/security/credentials/channel_creds_registry.h",
],
external_deps = ["absl/strings"],
language = "c++",
deps = [
"json",
"json_args",
"ref_counted",
"validation_errors",
"//:gpr_platform",
"//:ref_counted_ptr",
],
)
grpc_cc_library(
name = "event_engine_memory_allocator",
hdrs = [
"//:include/grpc/event_engine/internal/memory_allocator_impl.h",
"//:include/grpc/event_engine/memory_allocator.h",
"//:include/grpc/event_engine/memory_request.h",
],
external_deps = ["absl/strings"],
language = "c++",
deps = [
"slice",
"//:gpr_platform",
],
)
grpc_cc_library(
name = "event_engine_memory_allocator_factory",
hdrs = [
"lib/event_engine/memory_allocator_factory.h",
],
external_deps = ["absl/strings"],
language = "c++",
deps = [
"event_engine_memory_allocator",
"memory_quota",
"//:gpr_platform",
],
)
grpc_cc_library(
name = "memory_quota",
srcs = [
"lib/resource_quota/memory_quota.cc",
],
hdrs = [
"lib/resource_quota/memory_quota.h",
],
external_deps = [
"absl/base:core_headers",
"absl/container:flat_hash_set",
"absl/log:check",
"absl/status",
"absl/strings",
"absl/types:optional",
],
deps = [
"activity",
"event_engine_memory_allocator",
"exec_ctx_wakeup_scheduler",
"experiments",
"loop",
"map",
"periodic_update",
"poll",
"race",
"resource_quota_trace",
"seq",
"slice_refcount",
"time",
"useful",
"//:gpr",
"//:grpc_trace",
"//:orphanable",
"//:ref_counted_ptr",
],
)
grpc_cc_library(
name = "periodic_update",
srcs = [
"lib/resource_quota/periodic_update.cc",
],
hdrs = [
"lib/resource_quota/periodic_update.h",
],
external_deps = ["absl/functional:function_ref"],
deps = [
"time",
"useful",
"//:gpr_platform",
],
)
grpc_cc_library(
name = "arena",
srcs = [
"lib/resource_quota/arena.cc",
],
hdrs = [
"lib/resource_quota/arena.h",
],
visibility = [
"@grpc:alt_grpc_base_legacy",
],
deps = [
"construct_destruct",
"context",
"event_engine_memory_allocator",
"memory_quota",
"//:gpr",
],
)
grpc_cc_library(
name = "thread_quota",
srcs = [
"lib/resource_quota/thread_quota.cc",
],
hdrs = [
"lib/resource_quota/thread_quota.h",
],
external_deps = [
"absl/base:core_headers",
"absl/log:check",
],
deps = [
"ref_counted",
"//:gpr",
"//:ref_counted_ptr",
],
)
grpc_cc_library(
name = "connection_quota",
srcs = [
"lib/resource_quota/connection_quota.cc",
],
hdrs = [
"lib/resource_quota/connection_quota.h",
],
external_deps = [
"absl/base:core_headers",
"absl/log:check",
],
deps = [
"memory_quota",
"ref_counted",
"//:gpr",
"//:ref_counted_ptr",
],
)
grpc_cc_library(
name = "resource_quota_trace",
srcs = [
"lib/resource_quota/trace.cc",
],
hdrs = [
"lib/resource_quota/trace.h",
],
deps = [
"//:gpr_platform",
"//:grpc_trace",
],
)
grpc_cc_library(
name = "resource_quota",
srcs = [
"lib/resource_quota/resource_quota.cc",
],
hdrs = [
"lib/resource_quota/resource_quota.h",
],
external_deps = ["absl/strings"],
visibility = [
"@grpc:alt_grpc_base_legacy",
],
deps = [
"connection_quota",
"memory_quota",
"ref_counted",
"thread_quota",
"useful",
"//:channel_arg_names",
"//:cpp_impl_of",
"//:event_engine_base_hdrs",
"//:gpr_platform",
"//:ref_counted_ptr",
],
)
grpc_cc_library(
name = "slice_refcount",
srcs = [
"lib/slice/slice_refcount.cc",
],
hdrs = [
"lib/slice/slice_refcount.h",
],
public_hdrs = [
"//:include/grpc/slice.h",
],
deps = [
"//:debug_location",
"//:event_engine_base_hdrs",
"//:gpr",
"//:grpc_trace",
],
)
grpc_cc_library(
name = "slice",
srcs = [
"lib/slice/slice.cc",
"lib/slice/slice_string_helpers.cc",
],
hdrs = [
"lib/slice/slice.h",
"lib/slice/slice_internal.h",
"lib/slice/slice_string_helpers.h",
"//:include/grpc/slice.h",
],
external_deps = [
"absl/hash",
"absl/log:check",
"absl/strings",
],
visibility = ["@grpc:alt_grpc_base_legacy"],
deps = [
"slice_cast",
"slice_refcount",
"//:debug_location",
"//:event_engine_base_hdrs",
"//:gpr",
],
)
grpc_cc_library(
name = "slice_buffer",
srcs = [
"lib/slice/slice_buffer.cc",
],
hdrs = [
"lib/slice/slice_buffer.h",
"//:include/grpc/slice_buffer.h",
],
external_deps = [
"absl/log:check",
],
deps = [
"slice",
"slice_refcount",
"//:gpr",
],
)
grpc_cc_library(
name = "error",
srcs = [
"lib/iomgr/error.cc",
],
hdrs = [
"lib/iomgr/error.h",
],
external_deps = [
"absl/log:check",
"absl/status",
"absl/strings:str_format",
],
visibility = ["@grpc:alt_grpc_base_legacy"],
deps = [
"gpr_spinlock",
"slice",
"slice_refcount",
"status_helper",
"strerror",
"useful",
"//:gpr",
"//:grpc_public_hdrs",
"//:grpc_trace",
],
)
grpc_cc_library(
name = "closure",
srcs = [
"lib/iomgr/closure.cc",
],
hdrs = [
"lib/iomgr/closure.h",
],
external_deps = [
"absl/log:check",
"absl/strings:str_format",
],
visibility = ["@grpc:alt_grpc_base_legacy"],
deps = [
"error",
"gpr_manual_constructor",
"//:debug_location",
"//:gpr",
],
)
grpc_cc_library(
name = "time",
srcs = [
"lib/gprpp/time.cc",
],
hdrs = [
"lib/gprpp/time.h",
],
external_deps = [
"absl/log:check",
"absl/strings:str_format",
"absl/types:optional",
],
deps = [
"no_destruct",
"useful",
"//:event_engine_base_hdrs",
"//:gpr",
],
)
grpc_cc_library(
name = "iomgr_port",
hdrs = [
"lib/iomgr/port.h",
],
deps = ["//:gpr_platform"],
)
grpc_cc_library(
name = "iomgr_fwd",
hdrs = [
"lib/iomgr/iomgr_fwd.h",
],
visibility = ["@grpc:alt_grpc_base_legacy"],
deps = ["//:gpr_platform"],
)
grpc_cc_library(
name = "grpc_sockaddr",
srcs = [
"lib/iomgr/sockaddr_utils_posix.cc",
"lib/iomgr/socket_utils_windows.cc",
],
hdrs = [
"lib/iomgr/sockaddr.h",
"lib/iomgr/sockaddr_posix.h",
"lib/iomgr/sockaddr_windows.h",
"lib/iomgr/socket_utils.h",
],
external_deps = [
"absl/log:check",
],
deps = [
"iomgr_port",
"//:gpr",
],
)
grpc_cc_library(
name = "avl",
hdrs = [
"lib/avl/avl.h",
],
deps = [
"ref_counted",
"useful",
"//:gpr_platform",
"//:ref_counted_ptr",
],
)
grpc_cc_library(
name = "time_averaged_stats",
srcs = ["lib/gprpp/time_averaged_stats.cc"],
hdrs = [
"lib/gprpp/time_averaged_stats.h",
],
deps = ["//:gpr"],
)
grpc_cc_library(
name = "forkable",
srcs = [
"lib/event_engine/forkable.cc",
],
hdrs = [
"lib/event_engine/forkable.h",
],
external_deps = [
"absl/log:check",
],
deps = [
"//:config_vars",
"//:gpr",
"//:gpr_platform",
"//:grpc_trace",
],
)
grpc_cc_library(
name = "event_engine_poller",
hdrs = [
"lib/event_engine/poller.h",
],
external_deps = ["absl/functional:function_ref"],
deps = [
"//:event_engine_base_hdrs",
"//:gpr_platform",
],
)
grpc_cc_library(
name = "event_engine_time_util",
srcs = ["lib/event_engine/time_util.cc"],
hdrs = ["lib/event_engine/time_util.h"],
deps = [
"//:event_engine_base_hdrs",
"//:gpr_platform",
],
)
grpc_cc_library(
name = "event_engine_query_extensions",
hdrs = [
"lib/event_engine/query_extensions.h",
],
external_deps = ["absl/strings"],
deps = [
"//:event_engine_base_hdrs",
"//:gpr_platform",
],
)
grpc_cc_library(
name = "event_engine_work_queue",
hdrs = [
"lib/event_engine/work_queue/work_queue.h",
],
external_deps = ["absl/functional:any_invocable"],
deps = [
"//:event_engine_base_hdrs",
"//:gpr",
],
)
grpc_cc_library(
name = "event_engine_basic_work_queue",
srcs = [
"lib/event_engine/work_queue/basic_work_queue.cc",
],
hdrs = [
"lib/event_engine/work_queue/basic_work_queue.h",
],
external_deps = [
"absl/base:core_headers",
"absl/functional:any_invocable",
],
deps = [
"common_event_engine_closures",
"event_engine_work_queue",
"//:event_engine_base_hdrs",
"//:gpr",
],
)
grpc_cc_library(
name = "common_event_engine_closures",
hdrs = ["lib/event_engine/common_closures.h"],
external_deps = ["absl/functional:any_invocable"],
deps = [
"//:event_engine_base_hdrs",
"//:gpr_platform",
],
)
grpc_cc_library(
name = "posix_event_engine_timer",
srcs = [
"lib/event_engine/posix_engine/timer.cc",
"lib/event_engine/posix_engine/timer_heap.cc",
],
hdrs = [
"lib/event_engine/posix_engine/timer.h",
"lib/event_engine/posix_engine/timer_heap.h",
],
external_deps = [
"absl/base:core_headers",
"absl/types:optional",
],
deps = [
"time",
"time_averaged_stats",
"useful",
"//:event_engine_base_hdrs",
"//:gpr",
],
)
grpc_cc_library(
name = "event_engine_thread_local",
srcs = ["lib/event_engine/thread_local.cc"],
hdrs = ["lib/event_engine/thread_local.h"],
deps = ["//:gpr_platform"],
)
grpc_cc_library(
name = "event_engine_thread_count",
srcs = [
"lib/event_engine/thread_pool/thread_count.cc",
],
hdrs = ["lib/event_engine/thread_pool/thread_count.h"],
external_deps = [
"absl/base:core_headers",
"absl/time",
"absl/status",
"absl/strings:str_format",
],
deps = [
"time",
"useful",
"//:gpr",
],
)
grpc_cc_library(
name = "event_engine_thread_pool",
srcs = [
"lib/event_engine/thread_pool/thread_pool_factory.cc",
"lib/event_engine/thread_pool/work_stealing_thread_pool.cc",
],
hdrs = [
"lib/event_engine/thread_pool/thread_pool.h",
"lib/event_engine/thread_pool/work_stealing_thread_pool.h",
],
external_deps = [
"absl/base:core_headers",
"absl/container:flat_hash_set",
"absl/functional:any_invocable",
"absl/log:check",
"absl/time",
"absl/types:optional",
],
deps = [
"common_event_engine_closures",
"env",
"event_engine_basic_work_queue",
"event_engine_thread_count",
"event_engine_thread_local",
"event_engine_trace",
"event_engine_work_queue",
"examine_stack",
"forkable",
"no_destruct",
"notification",
"time",
"//:backoff",
"//:event_engine_base_hdrs",
"//:gpr",
],
)
grpc_cc_library(
name = "posix_event_engine_base_hdrs",
srcs = [],
hdrs = [
"lib/event_engine/posix.h",
],
external_deps = [
"absl/functional:any_invocable",
"absl/status",
"absl/status:statusor",
],
deps = [
"event_engine_extensions",
"event_engine_query_extensions",
"//:event_engine_base_hdrs",
"//:gpr",
],
)
grpc_cc_library(
name = "posix_event_engine_timer_manager",
srcs = ["lib/event_engine/posix_engine/timer_manager.cc"],
hdrs = [
"lib/event_engine/posix_engine/timer_manager.h",
],
external_deps = [
"absl/base:core_headers",
"absl/log:check",
"absl/time",
"absl/types:optional",
],
deps = [
"event_engine_thread_pool",
"forkable",
"notification",
"posix_event_engine_timer",
"time",
"//:event_engine_base_hdrs",
"//:gpr",
"//:grpc_trace",
],
)
grpc_cc_library(
name = "posix_event_engine_event_poller",
srcs = [],
hdrs = [
"lib/event_engine/posix_engine/event_poller.h",
],
external_deps = [
"absl/functional:any_invocable",
"absl/status",
"absl/strings",
],
deps = [
"event_engine_poller",
"forkable",
"posix_event_engine_closure",
"//:event_engine_base_hdrs",
"//:gpr_platform",
],
)
grpc_cc_library(
name = "posix_event_engine_closure",
srcs = [],
hdrs = [
"lib/event_engine/posix_engine/posix_engine_closure.h",
],
external_deps = [
"absl/functional:any_invocable",
"absl/status",
],
deps = [
"//:event_engine_base_hdrs",
"//:gpr_platform",
],
)
grpc_cc_library(
name = "posix_event_engine_lockfree_event",
srcs = [
"lib/event_engine/posix_engine/lockfree_event.cc",
],
hdrs = [
"lib/event_engine/posix_engine/lockfree_event.h",
],
external_deps = [
"absl/log:check",
"absl/status",
],
deps = [
"gpr_atm",
"posix_event_engine_closure",
"posix_event_engine_event_poller",
"status_helper",
"//:gpr",
],
)
grpc_cc_library(
name = "posix_event_engine_wakeup_fd_posix",
hdrs = [
"lib/event_engine/posix_engine/wakeup_fd_posix.h",
],
external_deps = ["absl/status"],
deps = ["//:gpr_platform"],
)
grpc_cc_library(
name = "posix_event_engine_wakeup_fd_posix_pipe",
srcs = [
"lib/event_engine/posix_engine/wakeup_fd_pipe.cc",
],
hdrs = [
"lib/event_engine/posix_engine/wakeup_fd_pipe.h",
],
external_deps = [
"absl/status",
"absl/status:statusor",
"absl/strings",
],
deps = [
"iomgr_port",
"posix_event_engine_wakeup_fd_posix",
"strerror",
"//:gpr",
],
)
grpc_cc_library(
name = "posix_event_engine_wakeup_fd_posix_eventfd",
srcs = [
"lib/event_engine/posix_engine/wakeup_fd_eventfd.cc",
],
hdrs = [
"lib/event_engine/posix_engine/wakeup_fd_eventfd.h",
],
external_deps = [
"absl/status",
"absl/status:statusor",
"absl/strings",
],
deps = [
"iomgr_port",
"posix_event_engine_wakeup_fd_posix",
"strerror",
"//:gpr",
],
)
grpc_cc_library(
name = "posix_event_engine_wakeup_fd_posix_default",
srcs = [
"lib/event_engine/posix_engine/wakeup_fd_posix_default.cc",
],
hdrs = [
"lib/event_engine/posix_engine/wakeup_fd_posix_default.h",
],
external_deps = [
"absl/status",
"absl/status:statusor",
],
deps = [
"iomgr_port",
"posix_event_engine_wakeup_fd_posix",
"posix_event_engine_wakeup_fd_posix_eventfd",
"posix_event_engine_wakeup_fd_posix_pipe",
"//:gpr_platform",
],
)
grpc_cc_library(
name = "posix_event_engine_poller_posix_epoll1",
srcs = [
"lib/event_engine/posix_engine/ev_epoll1_linux.cc",
],
hdrs = [
"lib/event_engine/posix_engine/ev_epoll1_linux.h",
],
external_deps = [
"absl/base:core_headers",
"absl/container:inlined_vector",
"absl/functional:function_ref",
"absl/log:check",
"absl/status",
"absl/status:statusor",
"absl/strings",
"absl/strings:str_format",
],
deps = [
"event_engine_poller",
"event_engine_time_util",
"iomgr_port",
"posix_event_engine_closure",
"posix_event_engine_event_poller",
"posix_event_engine_internal_errqueue",
"posix_event_engine_lockfree_event",
"posix_event_engine_wakeup_fd_posix",
"posix_event_engine_wakeup_fd_posix_default",
"status_helper",
"strerror",
"//:event_engine_base_hdrs",
"//:gpr",
"//:grpc_public_hdrs",
],
)
grpc_cc_library(
name = "posix_event_engine_poller_posix_poll",
srcs = [
"lib/event_engine/posix_engine/ev_poll_posix.cc",
],
hdrs = [
"lib/event_engine/posix_engine/ev_poll_posix.h",
],
external_deps = [
"absl/base:core_headers",
"absl/container:inlined_vector",
"absl/functional:any_invocable",
"absl/functional:function_ref",
"absl/log:check",
"absl/status",
"absl/status:statusor",
"absl/strings",
"absl/strings:str_format",
],
deps = [
"common_event_engine_closures",
"event_engine_poller",
"event_engine_time_util",
"iomgr_port",
"posix_event_engine_closure",
"posix_event_engine_event_poller",
"posix_event_engine_wakeup_fd_posix",
"posix_event_engine_wakeup_fd_posix_default",
"status_helper",
"strerror",
"time",
"//:event_engine_base_hdrs",
"//:gpr",
"//:grpc_public_hdrs",
],
)
grpc_cc_library(
name = "posix_event_engine_poller_posix_default",
srcs = [
"lib/event_engine/posix_engine/event_poller_posix_default.cc",
],
hdrs = [
"lib/event_engine/posix_engine/event_poller_posix_default.h",
],
external_deps = ["absl/strings"],
deps = [
"forkable",
"iomgr_port",
"no_destruct",
"posix_event_engine_event_poller",
"posix_event_engine_poller_posix_epoll1",
"posix_event_engine_poller_posix_poll",
"//:config_vars",
"//:gpr",
],
)
grpc_cc_library(
name = "posix_event_engine_internal_errqueue",
srcs = [
"lib/event_engine/posix_engine/internal_errqueue.cc",
],
hdrs = [
"lib/event_engine/posix_engine/internal_errqueue.h",
],
deps = [
"iomgr_port",
"strerror",
"//:gpr",
],
)
grpc_cc_library(
name = "posix_event_engine_traced_buffer_list",
srcs = [
"lib/event_engine/posix_engine/traced_buffer_list.cc",
],
hdrs = [
"lib/event_engine/posix_engine/traced_buffer_list.h",
],
external_deps = [
"absl/functional:any_invocable",
"absl/status",
"absl/types:optional",
],
deps = [
"iomgr_port",
"posix_event_engine_internal_errqueue",
"//:gpr",
],
)
grpc_cc_library(
name = "posix_event_engine_endpoint",
srcs = [
"lib/event_engine/posix_engine/posix_endpoint.cc",
],
hdrs = [
"lib/event_engine/posix_engine/posix_endpoint.h",
],
external_deps = [
"absl/base:core_headers",
"absl/container:flat_hash_map",
"absl/functional:any_invocable",
"absl/hash",
"absl/log:check",
"absl/status",
"absl/status:statusor",
"absl/strings",
"absl/types:optional",
],
deps = [
"event_engine_common",
"event_engine_extensions",
"event_engine_tcp_socket_utils",
"event_engine_trace",
"experiments",
"iomgr_port",
"load_file",
"memory_quota",
"posix_event_engine_base_hdrs",
"posix_event_engine_closure",
"posix_event_engine_event_poller",
"posix_event_engine_internal_errqueue",
"posix_event_engine_tcp_socket_utils",
"posix_event_engine_traced_buffer_list",
"ref_counted",
"resource_quota",
"slice",
"status_helper",
"strerror",
"time",
[EventEngine] Modify iomgr to allow creation of posix event engine listeners and server side endpoints (#31928) * [WIP] EventEngine iomgr endpoint shims * [WIP] EventEngine::Endpoint iomgr shims for the PosixEventEngine * Util functions to help with posix engine listener implementation * sanity * update comments in posix_engine_listener_utils.h * review comments * iwyu * revert prev commit * iwyu * update build * update * regenerate projects * regenerate projects * minor fixes * update BUILD * sanity * update build * regenerate projects * fix unused parameter * sanity * update * sanity * regenerate_projects * remove unused variable * start * update * regenerate_projects * sanity * update * fixes * update * regenerate_projects * update * fix sanity and msan failure * more fixes * build failure * update * fix * sanity * fixes * update * regenerate projects * fix sanity * review comments * An EventEngine subclass to be implemented by all posix based event engines * sanity * comments * update * review comments * re-word * fix * update * review comments * regenerate projects * syntax fix * add lock free event benchmark * releasable mutex lock * fix build isue * update * start * regenerate projects * update * fix * windows build * update * windows portability issue * update * update * update * update * format * update * update * start * Update tcp server interface to move on_accept_cb to create method * update * start * update * update * update * update * update * update * update * update * sanity * update * update * update * windows build * fix msan * fix sanity * regenerate projects * update * iwyu * Fix resolved address length related bugs in tcp_socket_utils and listener_utils * iwyu * cleanup * cleanup src/core/lib/event_engine/tcp_socket_utils.cc * iwyu * fix * regenerate projects * fix sanity * re-write endpoint shim * more re-write * cleanup * update * regenerate projects * review comments * build issue * more build issue fixes plus adding event_engine_trace * even more build issue fixes * iwyu * add static_cast * fix sanity * update * update * sanity * fix * Fix * Review comments * fix * iwyu * fix build issue Co-authored-by: AJ Heller <hork@google.com>
2 years ago
"//:debug_location",
"//:event_engine_base_hdrs",
"//:exec_ctx",
"//:gpr",
"//:grpc_public_hdrs",
"//:ref_counted_ptr",
],
)
grpc_cc_library(
name = "event_engine_utils",
srcs = ["lib/event_engine/utils.cc"],
hdrs = ["lib/event_engine/utils.h"],
external_deps = [
"absl/log:check",
"absl/strings",
],
deps = [
"time",
"//:event_engine_base_hdrs",
"//:gpr_platform",
],
)
grpc_cc_library(
name = "posix_event_engine_tcp_socket_utils",
srcs = [
"lib/event_engine/posix_engine/tcp_socket_utils.cc",
],
hdrs = [
"lib/event_engine/posix_engine/tcp_socket_utils.h",
],
external_deps = [
"absl/cleanup",
"absl/log:check",
"absl/status",
"absl/status:statusor",
"absl/strings",
"absl/types:optional",
],
deps = [
"event_engine_tcp_socket_utils",
"iomgr_port",
"resource_quota",
"socket_mutator",
"status_helper",
"strerror",
"time",
"useful",
"//:channel_arg_names",
"//:event_engine_base_hdrs",
"//:gpr",
"//:ref_counted_ptr",
],
)
grpc_cc_library(
name = "posix_event_engine_listener_utils",
srcs = [
"lib/event_engine/posix_engine/posix_engine_listener_utils.cc",
],
hdrs = [
"lib/event_engine/posix_engine/posix_engine_listener_utils.h",
],
external_deps = [
"absl/cleanup",
"absl/log:check",
"absl/status",
"absl/status:statusor",
"absl/strings",
],
deps = [
"event_engine_tcp_socket_utils",
"iomgr_port",
"posix_event_engine_tcp_socket_utils",
"socket_mutator",
"status_helper",
"//:event_engine_base_hdrs",
"//:gpr",
],
)
grpc_cc_library(
name = "posix_event_engine_listener",
srcs = [
"lib/event_engine/posix_engine/posix_engine_listener.cc",
],
hdrs = [
"lib/event_engine/posix_engine/posix_engine_listener.h",
],
external_deps = [
"absl/base:core_headers",
"absl/functional:any_invocable",
"absl/log:check",
"absl/status",
"absl/status:statusor",
"absl/strings",
"absl/types:optional",
],
deps = [
"event_engine_tcp_socket_utils",
"event_engine_trace",
"iomgr_port",
"posix_event_engine_base_hdrs",
"posix_event_engine_closure",
"posix_event_engine_endpoint",
"posix_event_engine_event_poller",
"posix_event_engine_listener_utils",
"posix_event_engine_tcp_socket_utils",
"socket_mutator",
"status_helper",
[server] Keep server running after failed UDS `getpeername` (#35823) Closes #35076. See discussion there for context. Previously, if `getpeername` failed on a recently-accepted Unix domain socket, the server would shut down. It's unclear if there's any valid reason `getpeername` would fail here, we could be looking at system issues / data corruption, but it may be implementation-dependent. I did not find a man page that specified this behavior: getpeername on a server errors with `EBADF` when a client closes its end of a UDS connection; the server's fd should still be valid. I was not able to reproduce the failure on recent Linux/Mac systems where clients close their connection after a listener accepted (basic, non-gRPC test: listener accepts a connection and sleeps, client closes their end, then listener wakes up and calls getpeername). If there are no valid reasons `getpeername` would fail in these spots, gRPC behavior is essentially undefined - we cannot defensively code around system failures in every place they may occur. If this _is_ a valid situation on some platforms, then this fix keeps the server alive as one would hope. There are arguments to be made for shutting down servers if the system is unstable, but I can't find an objectively correct behavior here. For those reasons, I think it may be best to keep the server running, which is what this PR does. Closes #35823 COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/35823 from drfloob:abort-listen-on-failed-getpeername 29e723c5bb2ac40c6f1d8927417cadcb8c3a98e9 PiperOrigin-RevId: 604694057
1 year ago
"strerror",
"time",
"//:event_engine_base_hdrs",
"//:exec_ctx",
"//:gpr",
],
)
grpc_cc_library(
name = "posix_event_engine",
srcs = ["lib/event_engine/posix_engine/posix_engine.cc"],
hdrs = ["lib/event_engine/posix_engine/posix_engine.h"],
external_deps = [
"absl/base:core_headers",
"absl/cleanup",
"absl/container:flat_hash_map",
"absl/functional:any_invocable",
"absl/hash",
"absl/log:check",
"absl/status",
"absl/status:statusor",
"absl/strings",
],
deps = [
[EventEngine] PosixEventEngine DNS Resolver (#32701) This PR implements a c-ares based DNS resolver for EventEngine with the reference from the original [grpc_ares_wrapper.h](../blob/master/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h). The PosixEventEngine DNSResolver is implemented on top of that. Tests which use the client channel resolver API ([resolver.h](../blob/master/src/core/lib/resolver/resolver.h#L54)) are ported, namely the [resolver_component_test.cc](../blob/master/test/cpp/naming/resolver_component_test.cc) and the [cancel_ares_query_test.cc](../blob/master/test/cpp/naming/cancel_ares_query_test.cc). The WindowsEventEngine DNSResolver will use the same EventEngine's grpc_ares_wrapper and will be worked on next. The [resolve_address_test.cc](https://github.com/grpc/grpc/blob/master/test/core/iomgr/resolve_address_test.cc) which uses the iomgr [DNSResolver](../blob/master/src/core/lib/iomgr/resolve_address.h#L44) API has been ported to EventEngine's dns_test.cc. That leaves only 2 tests which use iomgr's API, notably the [dns_resolver_cooldown_test.cc](../blob/master/test/core/client_channel/resolvers/dns_resolver_cooldown_test.cc) and the [goaway_server_test.cc](../blob/master/test/core/end2end/goaway_server_test.cc) which probably need to be restructured to use EventEngine DNSResolver (for one thing they override the original grpc_ares_wrapper's free functions). I will try to tackle these in the next step. <!-- If you know who should review your pull request, please assign it to that person, otherwise the pull request would get assigned randomly. If your pull request is for a specific language, please add the appropriate lang label. -->
2 years ago
"ares_resolver",
"event_engine_common",
"event_engine_poller",
"event_engine_tcp_socket_utils",
"event_engine_thread_pool",
"event_engine_trace",
"event_engine_utils",
"forkable",
"init_internally",
"iomgr_port",
"native_posix_dns_resolver",
"no_destruct",
"posix_event_engine_base_hdrs",
"posix_event_engine_closure",
"posix_event_engine_endpoint",
"posix_event_engine_event_poller",
"posix_event_engine_listener",
"posix_event_engine_poller_posix_default",
"posix_event_engine_tcp_socket_utils",
"posix_event_engine_timer",
"posix_event_engine_timer_manager",
"ref_counted_dns_resolver_interface",
"useful",
"//:config_vars",
"//:event_engine_base_hdrs",
"//:gpr",
"//:grpc_trace",
[EventEngine] PosixEventEngine DNS Resolver (#32701) This PR implements a c-ares based DNS resolver for EventEngine with the reference from the original [grpc_ares_wrapper.h](../blob/master/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h). The PosixEventEngine DNSResolver is implemented on top of that. Tests which use the client channel resolver API ([resolver.h](../blob/master/src/core/lib/resolver/resolver.h#L54)) are ported, namely the [resolver_component_test.cc](../blob/master/test/cpp/naming/resolver_component_test.cc) and the [cancel_ares_query_test.cc](../blob/master/test/cpp/naming/cancel_ares_query_test.cc). The WindowsEventEngine DNSResolver will use the same EventEngine's grpc_ares_wrapper and will be worked on next. The [resolve_address_test.cc](https://github.com/grpc/grpc/blob/master/test/core/iomgr/resolve_address_test.cc) which uses the iomgr [DNSResolver](../blob/master/src/core/lib/iomgr/resolve_address.h#L44) API has been ported to EventEngine's dns_test.cc. That leaves only 2 tests which use iomgr's API, notably the [dns_resolver_cooldown_test.cc](../blob/master/test/core/client_channel/resolvers/dns_resolver_cooldown_test.cc) and the [goaway_server_test.cc](../blob/master/test/core/end2end/goaway_server_test.cc) which probably need to be restructured to use EventEngine DNSResolver (for one thing they override the original grpc_ares_wrapper's free functions). I will try to tackle these in the next step. <!-- If you know who should review your pull request, please assign it to that person, otherwise the pull request would get assigned randomly. If your pull request is for a specific language, please add the appropriate lang label. -->
2 years ago
"//:orphanable",
],
)
grpc_cc_library(
name = "windows_event_engine",
srcs = ["lib/event_engine/windows/windows_engine.cc"],
hdrs = ["lib/event_engine/windows/windows_engine.h"],
external_deps = [
"absl/log:check",
"absl/status",
"absl/status:statusor",
"absl/strings",
],
deps = [
[EventEngine] WindowsDNSResolver Implementation (#34400) Design is documented at [go/windows-dns-resolver-issue](http://go/windows-dns-resolver-issue) (note that the design doc is slightly outdated regarding the shared ownership model of the virtual socket that was implemented in https://github.com/grpc/grpc/pull/34400/commits/13bd2b404eee1770c73f70d5ef49638f7b0e0dd2). Passed `//test/cpp/naming:resolver_component_tests_runner_invoker` and `//test/cpp/naming:cancel_ares_query_test`: ``` C:\Users\yijiem\projects\grpc>bazel --output_base=C:\bazel6 test --dynamic_mode=off --verbose_failures --test_env=GRPC_EXPERIMENTS=event_engine_dns --test_env=GRPC_VERBOSITY=debug --test_env=GRPC_TRACE=cares_resolver --enable_runfiles=yes --nocache_test_results //test/cpp/naming:resolver_component_tests_runner_invoker INFO: Analyzed target //test/cpp/naming:resolver_component_tests_runner_invoker (1 packages loaded, 8 targets configured). INFO: Found 1 test target... INFO: From Compiling src/core/lib/event_engine/windows/windows_engine.cc: C:\bazel6\execroot\com_github_grpc_grpc\src/core/lib/channel/channel_args.h(287): warning C4312: 'reinterpret_cast': conversion from 'int' to 'void *' of greater size Target //test/cpp/naming:resolver_component_tests_runner_invoker up-to-date: bazel-bin/test/cpp/naming/resolver_component_tests_runner_invoker.exe INFO: Elapsed time: 230.374s, Critical Path: 228.54s INFO: 9 processes: 2 internal, 7 local. INFO: Build completed successfully, 9 total actions //test/cpp/naming:resolver_component_tests_runner_invoker PASSED in 221.2s Executed 1 out of 1 test: 1 test passes. ``` ``` C:\Users\yijiem\projects\grpc>bazel --output_base=C:\bazel6 test --dynamic_mode=off --verbose_failures --test_env=GRPC_EXPERIMENTS=event_engine_dns --test_env=GRPC_VERBOSITY=debug --test_env=GRPC_TRACE=cares_resolver --enable_runfiles=yes --nocache_test_results //test/cpp/naming:cancel_ares_query_test INFO: Analyzed target //test/cpp/naming:cancel_ares_query_test (0 packages loaded, 0 targets configured). INFO: Found 1 test target... Target //test/cpp/naming:cancel_ares_query_test up-to-date: bazel-bin/test/cpp/naming/cancel_ares_query_test.exe INFO: Elapsed time: 49.656s, Critical Path: 48.00s INFO: 6 processes: 2 internal, 4 local. INFO: Build completed successfully, 6 total actions //test/cpp/naming:cancel_ares_query_test PASSED in 43.0s Executed 1 out of 1 test: 1 test passes. ``` <!-- If you know who should review your pull request, please assign it to that person, otherwise the pull request would get assigned randomly. If your pull request is for a specific language, please add the appropriate lang label. -->
1 year ago
"ares_resolver",
"channel_args_endpoint_config",
"common_event_engine_closures",
"error",
"event_engine_common",
"event_engine_tcp_socket_utils",
"event_engine_thread_pool",
"event_engine_trace",
"event_engine_utils",
"init_internally",
[EventEngine] WindowsDNSResolver Implementation (#34400) Design is documented at [go/windows-dns-resolver-issue](http://go/windows-dns-resolver-issue) (note that the design doc is slightly outdated regarding the shared ownership model of the virtual socket that was implemented in https://github.com/grpc/grpc/pull/34400/commits/13bd2b404eee1770c73f70d5ef49638f7b0e0dd2). Passed `//test/cpp/naming:resolver_component_tests_runner_invoker` and `//test/cpp/naming:cancel_ares_query_test`: ``` C:\Users\yijiem\projects\grpc>bazel --output_base=C:\bazel6 test --dynamic_mode=off --verbose_failures --test_env=GRPC_EXPERIMENTS=event_engine_dns --test_env=GRPC_VERBOSITY=debug --test_env=GRPC_TRACE=cares_resolver --enable_runfiles=yes --nocache_test_results //test/cpp/naming:resolver_component_tests_runner_invoker INFO: Analyzed target //test/cpp/naming:resolver_component_tests_runner_invoker (1 packages loaded, 8 targets configured). INFO: Found 1 test target... INFO: From Compiling src/core/lib/event_engine/windows/windows_engine.cc: C:\bazel6\execroot\com_github_grpc_grpc\src/core/lib/channel/channel_args.h(287): warning C4312: 'reinterpret_cast': conversion from 'int' to 'void *' of greater size Target //test/cpp/naming:resolver_component_tests_runner_invoker up-to-date: bazel-bin/test/cpp/naming/resolver_component_tests_runner_invoker.exe INFO: Elapsed time: 230.374s, Critical Path: 228.54s INFO: 9 processes: 2 internal, 7 local. INFO: Build completed successfully, 9 total actions //test/cpp/naming:resolver_component_tests_runner_invoker PASSED in 221.2s Executed 1 out of 1 test: 1 test passes. ``` ``` C:\Users\yijiem\projects\grpc>bazel --output_base=C:\bazel6 test --dynamic_mode=off --verbose_failures --test_env=GRPC_EXPERIMENTS=event_engine_dns --test_env=GRPC_VERBOSITY=debug --test_env=GRPC_TRACE=cares_resolver --enable_runfiles=yes --nocache_test_results //test/cpp/naming:cancel_ares_query_test INFO: Analyzed target //test/cpp/naming:cancel_ares_query_test (0 packages loaded, 0 targets configured). INFO: Found 1 test target... Target //test/cpp/naming:cancel_ares_query_test up-to-date: bazel-bin/test/cpp/naming/cancel_ares_query_test.exe INFO: Elapsed time: 49.656s, Critical Path: 48.00s INFO: 6 processes: 2 internal, 4 local. INFO: Build completed successfully, 6 total actions //test/cpp/naming:cancel_ares_query_test PASSED in 43.0s Executed 1 out of 1 test: 1 test passes. ``` <!-- If you know who should review your pull request, please assign it to that person, otherwise the pull request would get assigned randomly. If your pull request is for a specific language, please add the appropriate lang label. -->
1 year ago
"iomgr_port",
"posix_event_engine_timer_manager",
"time",
"windows_endpoint",
"windows_event_engine_listener",
"windows_iocp",
"windows_native_resolver",
"//:event_engine_base_hdrs",
"//:gpr",
],
)
grpc_cc_library(
name = "windows_native_resolver",
srcs = ["lib/event_engine/windows/native_windows_dns_resolver.cc"],
hdrs = ["lib/event_engine/windows/native_windows_dns_resolver.h"],
external_deps = ["absl/strings:str_format"],
deps = [
"error",
"status_helper",
"//:event_engine_base_hdrs",
"//:gpr",
],
)
grpc_cc_library(
name = "windows_iocp",
srcs = [
"lib/event_engine/windows/iocp.cc",
"lib/event_engine/windows/win_socket.cc",
],
hdrs = [
"lib/event_engine/windows/iocp.h",
"lib/event_engine/windows/win_socket.h",
],
external_deps = [
"absl/base:core_headers",
"absl/functional:any_invocable",
"absl/log:check",
"absl/status",
"absl/strings:str_format",
],
deps = [
"error",
"event_engine_poller",
"event_engine_tcp_socket_utils",
"event_engine_thread_pool",
"event_engine_time_util",
"event_engine_trace",
"//:debug_location",
"//:event_engine_base_hdrs",
"//:gpr",
"//:gpr_platform",
],
)
grpc_cc_library(
name = "windows_endpoint",
srcs = [
"lib/event_engine/windows/windows_endpoint.cc",
],
hdrs = [
"lib/event_engine/windows/windows_endpoint.h",
],
external_deps = [
"absl/cleanup",
"absl/functional:any_invocable",
"absl/log:check",
"absl/status",
"absl/strings:str_format",
],
deps = [
"error",
"event_engine_tcp_socket_utils",
"event_engine_thread_pool",
"event_engine_trace",
"status_helper",
"windows_iocp",
"//:debug_location",
"//:event_engine_base_hdrs",
"//:gpr",
"//:gpr_platform",
],
)
grpc_cc_library(
name = "windows_event_engine_listener",
srcs = [
"lib/event_engine/windows/windows_listener.cc",
],
hdrs = [
"lib/event_engine/windows/windows_listener.h",
],
external_deps = [
"absl/base:core_headers",
"absl/log:check",
"absl/status",
"absl/status:statusor",
"absl/strings:str_format",
],
deps = [
"common_event_engine_closures",
"error",
"event_engine_tcp_socket_utils",
"event_engine_thread_pool",
"event_engine_trace",
"windows_endpoint",
"windows_iocp",
"//:event_engine_base_hdrs",
"//:gpr",
"//:gpr_platform",
],
)
grpc_cc_library(
name = "cf_event_engine",
srcs = [
"lib/event_engine/cf_engine/cf_engine.cc",
"lib/event_engine/cf_engine/cfstream_endpoint.cc",
"lib/event_engine/cf_engine/dns_service_resolver.cc",
],
hdrs = [
"lib/event_engine/cf_engine/cf_engine.h",
"lib/event_engine/cf_engine/cfstream_endpoint.h",
"lib/event_engine/cf_engine/cftype_unique_ref.h",
"lib/event_engine/cf_engine/dns_service_resolver.h",
],
external_deps = [
"absl/container:flat_hash_map",
"absl/log:check",
"absl/strings",
"absl/strings:str_format",
],
deps = [
"event_engine_common",
"event_engine_tcp_socket_utils",
"event_engine_thread_pool",
"event_engine_trace",
"event_engine_utils",
"init_internally",
"posix_event_engine_closure",
"posix_event_engine_event_poller",
"posix_event_engine_lockfree_event",
"posix_event_engine_timer_manager",
"ref_counted",
"strerror",
"//:event_engine_base_hdrs",
"//:gpr",
"//:parse_address",
"//:ref_counted_ptr",
"//:sockaddr_utils",
],
)
grpc_cc_library(
name = "event_engine_tcp_socket_utils",
srcs = [
"lib/event_engine/tcp_socket_utils.cc",
],
hdrs = [
"lib/event_engine/tcp_socket_utils.h",
],
external_deps = [
"absl/log:check",
"absl/status",
"absl/status:statusor",
"absl/strings",
"absl/strings:str_format",
"absl/types:optional",
],
deps = [
"iomgr_port",
[EventEngine] Modify iomgr to allow creation of event engine clients and client side endpoints (#31661) * [WIP] EventEngine iomgr endpoint shims * [WIP] EventEngine::Endpoint iomgr shims for the PosixEventEngine * Util functions to help with posix engine listener implementation * sanity * update comments in posix_engine_listener_utils.h * review comments * iwyu * revert prev commit * iwyu * update build * update * regenerate projects * regenerate projects * minor fixes * update BUILD * sanity * update build * regenerate projects * fix unused parameter * sanity * update * sanity * regenerate_projects * remove unused variable * start * update * regenerate_projects * sanity * update * fixes * update * regenerate_projects * update * fix sanity and msan failure * more fixes * build failure * update * fix * sanity * fixes * update * regenerate projects * fix sanity * review comments * An EventEngine subclass to be implemented by all posix based event engines * sanity * comments * update * review comments * re-word * fix * update * review comments * regenerate projects * syntax fix * add lock free event benchmark * releasable mutex lock * fix build isue * update * start * regenerate projects * update * fix * windows build * update * windows portability issue * update * update * update * update * format * update * update * update * update * update * fix sanity * regenerate projects * update * iwyu * Fix resolved address length related bugs in tcp_socket_utils and listener_utils * iwyu * cleanup src/core/lib/event_engine/tcp_socket_utils.cc * iwyu * fix * regenerate projects * fix sanity * re-write endpoint shim * more re-write * cleanup * update * review comments * build issue * more build issue fixes plus adding event_engine_trace * even more build issue fixes * iwyu * add static_cast * update * remove redundant code * update * deduplicate * iwyu * Fix review comments and regenerate_projects * sanity * review comments * fix include guards Co-authored-by: AJ Heller <hork@google.com>
2 years ago
"resolved_address",
"status_helper",
"//:event_engine_base_hdrs",
"//:gpr",
"//:gpr_platform",
[EventEngine] Modify iomgr to allow creation of event engine clients and client side endpoints (#31661) * [WIP] EventEngine iomgr endpoint shims * [WIP] EventEngine::Endpoint iomgr shims for the PosixEventEngine * Util functions to help with posix engine listener implementation * sanity * update comments in posix_engine_listener_utils.h * review comments * iwyu * revert prev commit * iwyu * update build * update * regenerate projects * regenerate projects * minor fixes * update BUILD * sanity * update build * regenerate projects * fix unused parameter * sanity * update * sanity * regenerate_projects * remove unused variable * start * update * regenerate_projects * sanity * update * fixes * update * regenerate_projects * update * fix sanity and msan failure * more fixes * build failure * update * fix * sanity * fixes * update * regenerate projects * fix sanity * review comments * An EventEngine subclass to be implemented by all posix based event engines * sanity * comments * update * review comments * re-word * fix * update * review comments * regenerate projects * syntax fix * add lock free event benchmark * releasable mutex lock * fix build isue * update * start * regenerate projects * update * fix * windows build * update * windows portability issue * update * update * update * update * format * update * update * update * update * update * fix sanity * regenerate projects * update * iwyu * Fix resolved address length related bugs in tcp_socket_utils and listener_utils * iwyu * cleanup src/core/lib/event_engine/tcp_socket_utils.cc * iwyu * fix * regenerate projects * fix sanity * re-write endpoint shim * more re-write * cleanup * update * review comments * build issue * more build issue fixes plus adding event_engine_trace * even more build issue fixes * iwyu * add static_cast * update * remove redundant code * update * deduplicate * iwyu * Fix review comments and regenerate_projects * sanity * review comments * fix include guards Co-authored-by: AJ Heller <hork@google.com>
2 years ago
"//:parse_address",
"//:uri_parser",
],
)
grpc_cc_library(
name = "event_engine_trace",
srcs = [
"lib/event_engine/trace.cc",
],
hdrs = [
"lib/event_engine/trace.h",
],
deps = [
"//:gpr",
"//:gpr_platform",
"//:grpc_trace",
],
)
[EventEngine] Modify iomgr to allow creation of event engine clients and client side endpoints (#31661) * [WIP] EventEngine iomgr endpoint shims * [WIP] EventEngine::Endpoint iomgr shims for the PosixEventEngine * Util functions to help with posix engine listener implementation * sanity * update comments in posix_engine_listener_utils.h * review comments * iwyu * revert prev commit * iwyu * update build * update * regenerate projects * regenerate projects * minor fixes * update BUILD * sanity * update build * regenerate projects * fix unused parameter * sanity * update * sanity * regenerate_projects * remove unused variable * start * update * regenerate_projects * sanity * update * fixes * update * regenerate_projects * update * fix sanity and msan failure * more fixes * build failure * update * fix * sanity * fixes * update * regenerate projects * fix sanity * review comments * An EventEngine subclass to be implemented by all posix based event engines * sanity * comments * update * review comments * re-word * fix * update * review comments * regenerate projects * syntax fix * add lock free event benchmark * releasable mutex lock * fix build isue * update * start * regenerate projects * update * fix * windows build * update * windows portability issue * update * update * update * update * format * update * update * update * update * update * fix sanity * regenerate projects * update * iwyu * Fix resolved address length related bugs in tcp_socket_utils and listener_utils * iwyu * cleanup src/core/lib/event_engine/tcp_socket_utils.cc * iwyu * fix * regenerate projects * fix sanity * re-write endpoint shim * more re-write * cleanup * update * review comments * build issue * more build issue fixes plus adding event_engine_trace * even more build issue fixes * iwyu * add static_cast * update * remove redundant code * update * deduplicate * iwyu * Fix review comments and regenerate_projects * sanity * review comments * fix include guards Co-authored-by: AJ Heller <hork@google.com>
2 years ago
grpc_cc_library(
name = "event_engine_shim",
srcs = [
"lib/event_engine/shim.cc",
],
hdrs = [
"lib/event_engine/shim.h",
],
deps = [
"experiments",
"iomgr_port",
"//:gpr_platform",
],
)
# NOTE: this target gets replaced inside Google's build system to be one that
# integrates with other internal systems better. Please do not rename or fold
# this into other targets.
grpc_cc_library(
name = "default_event_engine_factory",
srcs = ["lib/event_engine/default_event_engine_factory.cc"],
hdrs = ["lib/event_engine/default_event_engine_factory.h"],
external_deps = ["absl/memory"],
select_deps = [
{
"//:windows": ["windows_event_engine"],
"//:windows_msvc": ["windows_event_engine"],
"//:windows_other": ["windows_event_engine"],
"//:mac": [
"posix_event_engine",
"cf_event_engine",
],
"//:mac_x86_64": [
"posix_event_engine",
"cf_event_engine",
],
"//:mac_arm64": [
"posix_event_engine",
"cf_event_engine",
],
"//:ios": ["cf_event_engine"],
"//:tvos": ["cf_event_engine"],
"//:visionos": ["cf_event_engine"],
"//:watchos": ["cf_event_engine"],
"//conditions:default": ["posix_event_engine"],
},
],
deps = [
"//:event_engine_base_hdrs",
"//:gpr_platform",
],
)
grpc_cc_library(
name = "channel_args_endpoint_config",
srcs = [
"lib/event_engine/channel_args_endpoint_config.cc",
],
hdrs = [
"lib/event_engine/channel_args_endpoint_config.h",
],
external_deps = [
"absl/strings",
"absl/types:optional",
],
visibility = ["@grpc:alt_grpc_base_legacy"],
deps = [
"channel_args",
"//:event_engine_base_hdrs",
"//:gpr_platform",
],
)
grpc_cc_library(
name = "thready_event_engine",
srcs = ["lib/event_engine/thready_event_engine/thready_event_engine.cc"],
hdrs = ["lib/event_engine/thready_event_engine/thready_event_engine.h"],
external_deps = [
"absl/functional:any_invocable",
"absl/status",
"absl/status:statusor",
"absl/strings",
],
deps = [
"//:event_engine_base_hdrs",
"//:gpr",
],
)
grpc_cc_library(
name = "event_engine_context",
hdrs = [
"lib/event_engine/event_engine_context.h",
],
visibility = [
"@grpc:alt_grpc_base_legacy",
],
deps = [
"context",
"//:event_engine_base_hdrs",
"//:gpr",
],
)
grpc_cc_library(
name = "default_event_engine",
srcs = [
"lib/event_engine/default_event_engine.cc",
],
hdrs = [
"lib/event_engine/default_event_engine.h",
],
external_deps = ["absl/functional:any_invocable"],
visibility = [
"@grpc:alt_grpc_base_legacy",
],
deps = [
"channel_args",
"default_event_engine_factory",
"event_engine_trace",
"no_destruct",
"thready_event_engine",
"//:config",
"//:debug_location",
"//:event_engine_base_hdrs",
"//:gpr",
"//:grpc_trace",
],
)
grpc_cc_library(
name = "ref_counted_dns_resolver_interface",
hdrs = ["lib/event_engine/ref_counted_dns_resolver_interface.h"],
external_deps = ["absl/strings"],
deps = [
"//:event_engine_base_hdrs",
"//:gpr_platform",
"//:orphanable",
],
)
grpc_cc_library(
name = "native_posix_dns_resolver",
srcs = [
"lib/event_engine/posix_engine/native_posix_dns_resolver.cc",
],
hdrs = [
"lib/event_engine/posix_engine/native_posix_dns_resolver.h",
],
external_deps = [
"absl/functional:any_invocable",
"absl/status",
"absl/status:statusor",
"absl/strings",
"absl/strings:str_format",
],
deps = [
"iomgr_port",
"useful",
"//:event_engine_base_hdrs",
"//:gpr",
],
)
[EventEngine] PosixEventEngine DNS Resolver (#32701) This PR implements a c-ares based DNS resolver for EventEngine with the reference from the original [grpc_ares_wrapper.h](../blob/master/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h). The PosixEventEngine DNSResolver is implemented on top of that. Tests which use the client channel resolver API ([resolver.h](../blob/master/src/core/lib/resolver/resolver.h#L54)) are ported, namely the [resolver_component_test.cc](../blob/master/test/cpp/naming/resolver_component_test.cc) and the [cancel_ares_query_test.cc](../blob/master/test/cpp/naming/cancel_ares_query_test.cc). The WindowsEventEngine DNSResolver will use the same EventEngine's grpc_ares_wrapper and will be worked on next. The [resolve_address_test.cc](https://github.com/grpc/grpc/blob/master/test/core/iomgr/resolve_address_test.cc) which uses the iomgr [DNSResolver](../blob/master/src/core/lib/iomgr/resolve_address.h#L44) API has been ported to EventEngine's dns_test.cc. That leaves only 2 tests which use iomgr's API, notably the [dns_resolver_cooldown_test.cc](../blob/master/test/core/client_channel/resolvers/dns_resolver_cooldown_test.cc) and the [goaway_server_test.cc](../blob/master/test/core/end2end/goaway_server_test.cc) which probably need to be restructured to use EventEngine DNSResolver (for one thing they override the original grpc_ares_wrapper's free functions). I will try to tackle these in the next step. <!-- If you know who should review your pull request, please assign it to that person, otherwise the pull request would get assigned randomly. If your pull request is for a specific language, please add the appropriate lang label. -->
2 years ago
grpc_cc_library(
name = "ares_resolver",
srcs = [
"lib/event_engine/ares_resolver.cc",
[EventEngine] WindowsDNSResolver Implementation (#34400) Design is documented at [go/windows-dns-resolver-issue](http://go/windows-dns-resolver-issue) (note that the design doc is slightly outdated regarding the shared ownership model of the virtual socket that was implemented in https://github.com/grpc/grpc/pull/34400/commits/13bd2b404eee1770c73f70d5ef49638f7b0e0dd2). Passed `//test/cpp/naming:resolver_component_tests_runner_invoker` and `//test/cpp/naming:cancel_ares_query_test`: ``` C:\Users\yijiem\projects\grpc>bazel --output_base=C:\bazel6 test --dynamic_mode=off --verbose_failures --test_env=GRPC_EXPERIMENTS=event_engine_dns --test_env=GRPC_VERBOSITY=debug --test_env=GRPC_TRACE=cares_resolver --enable_runfiles=yes --nocache_test_results //test/cpp/naming:resolver_component_tests_runner_invoker INFO: Analyzed target //test/cpp/naming:resolver_component_tests_runner_invoker (1 packages loaded, 8 targets configured). INFO: Found 1 test target... INFO: From Compiling src/core/lib/event_engine/windows/windows_engine.cc: C:\bazel6\execroot\com_github_grpc_grpc\src/core/lib/channel/channel_args.h(287): warning C4312: 'reinterpret_cast': conversion from 'int' to 'void *' of greater size Target //test/cpp/naming:resolver_component_tests_runner_invoker up-to-date: bazel-bin/test/cpp/naming/resolver_component_tests_runner_invoker.exe INFO: Elapsed time: 230.374s, Critical Path: 228.54s INFO: 9 processes: 2 internal, 7 local. INFO: Build completed successfully, 9 total actions //test/cpp/naming:resolver_component_tests_runner_invoker PASSED in 221.2s Executed 1 out of 1 test: 1 test passes. ``` ``` C:\Users\yijiem\projects\grpc>bazel --output_base=C:\bazel6 test --dynamic_mode=off --verbose_failures --test_env=GRPC_EXPERIMENTS=event_engine_dns --test_env=GRPC_VERBOSITY=debug --test_env=GRPC_TRACE=cares_resolver --enable_runfiles=yes --nocache_test_results //test/cpp/naming:cancel_ares_query_test INFO: Analyzed target //test/cpp/naming:cancel_ares_query_test (0 packages loaded, 0 targets configured). INFO: Found 1 test target... Target //test/cpp/naming:cancel_ares_query_test up-to-date: bazel-bin/test/cpp/naming/cancel_ares_query_test.exe INFO: Elapsed time: 49.656s, Critical Path: 48.00s INFO: 6 processes: 2 internal, 4 local. INFO: Build completed successfully, 6 total actions //test/cpp/naming:cancel_ares_query_test PASSED in 43.0s Executed 1 out of 1 test: 1 test passes. ``` <!-- If you know who should review your pull request, please assign it to that person, otherwise the pull request would get assigned randomly. If your pull request is for a specific language, please add the appropriate lang label. -->
1 year ago
"lib/event_engine/windows/grpc_polled_fd_windows.cc",
[EventEngine] PosixEventEngine DNS Resolver (#32701) This PR implements a c-ares based DNS resolver for EventEngine with the reference from the original [grpc_ares_wrapper.h](../blob/master/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h). The PosixEventEngine DNSResolver is implemented on top of that. Tests which use the client channel resolver API ([resolver.h](../blob/master/src/core/lib/resolver/resolver.h#L54)) are ported, namely the [resolver_component_test.cc](../blob/master/test/cpp/naming/resolver_component_test.cc) and the [cancel_ares_query_test.cc](../blob/master/test/cpp/naming/cancel_ares_query_test.cc). The WindowsEventEngine DNSResolver will use the same EventEngine's grpc_ares_wrapper and will be worked on next. The [resolve_address_test.cc](https://github.com/grpc/grpc/blob/master/test/core/iomgr/resolve_address_test.cc) which uses the iomgr [DNSResolver](../blob/master/src/core/lib/iomgr/resolve_address.h#L44) API has been ported to EventEngine's dns_test.cc. That leaves only 2 tests which use iomgr's API, notably the [dns_resolver_cooldown_test.cc](../blob/master/test/core/client_channel/resolvers/dns_resolver_cooldown_test.cc) and the [goaway_server_test.cc](../blob/master/test/core/end2end/goaway_server_test.cc) which probably need to be restructured to use EventEngine DNSResolver (for one thing they override the original grpc_ares_wrapper's free functions). I will try to tackle these in the next step. <!-- If you know who should review your pull request, please assign it to that person, otherwise the pull request would get assigned randomly. If your pull request is for a specific language, please add the appropriate lang label. -->
2 years ago
],
hdrs = [
"lib/event_engine/ares_resolver.h",
"lib/event_engine/grpc_polled_fd.h",
"lib/event_engine/nameser.h",
[EventEngine] PosixEventEngine DNS Resolver (#32701) This PR implements a c-ares based DNS resolver for EventEngine with the reference from the original [grpc_ares_wrapper.h](../blob/master/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h). The PosixEventEngine DNSResolver is implemented on top of that. Tests which use the client channel resolver API ([resolver.h](../blob/master/src/core/lib/resolver/resolver.h#L54)) are ported, namely the [resolver_component_test.cc](../blob/master/test/cpp/naming/resolver_component_test.cc) and the [cancel_ares_query_test.cc](../blob/master/test/cpp/naming/cancel_ares_query_test.cc). The WindowsEventEngine DNSResolver will use the same EventEngine's grpc_ares_wrapper and will be worked on next. The [resolve_address_test.cc](https://github.com/grpc/grpc/blob/master/test/core/iomgr/resolve_address_test.cc) which uses the iomgr [DNSResolver](../blob/master/src/core/lib/iomgr/resolve_address.h#L44) API has been ported to EventEngine's dns_test.cc. That leaves only 2 tests which use iomgr's API, notably the [dns_resolver_cooldown_test.cc](../blob/master/test/core/client_channel/resolvers/dns_resolver_cooldown_test.cc) and the [goaway_server_test.cc](../blob/master/test/core/end2end/goaway_server_test.cc) which probably need to be restructured to use EventEngine DNSResolver (for one thing they override the original grpc_ares_wrapper's free functions). I will try to tackle these in the next step. <!-- If you know who should review your pull request, please assign it to that person, otherwise the pull request would get assigned randomly. If your pull request is for a specific language, please add the appropriate lang label. -->
2 years ago
"lib/event_engine/posix_engine/grpc_polled_fd_posix.h",
[EventEngine] WindowsDNSResolver Implementation (#34400) Design is documented at [go/windows-dns-resolver-issue](http://go/windows-dns-resolver-issue) (note that the design doc is slightly outdated regarding the shared ownership model of the virtual socket that was implemented in https://github.com/grpc/grpc/pull/34400/commits/13bd2b404eee1770c73f70d5ef49638f7b0e0dd2). Passed `//test/cpp/naming:resolver_component_tests_runner_invoker` and `//test/cpp/naming:cancel_ares_query_test`: ``` C:\Users\yijiem\projects\grpc>bazel --output_base=C:\bazel6 test --dynamic_mode=off --verbose_failures --test_env=GRPC_EXPERIMENTS=event_engine_dns --test_env=GRPC_VERBOSITY=debug --test_env=GRPC_TRACE=cares_resolver --enable_runfiles=yes --nocache_test_results //test/cpp/naming:resolver_component_tests_runner_invoker INFO: Analyzed target //test/cpp/naming:resolver_component_tests_runner_invoker (1 packages loaded, 8 targets configured). INFO: Found 1 test target... INFO: From Compiling src/core/lib/event_engine/windows/windows_engine.cc: C:\bazel6\execroot\com_github_grpc_grpc\src/core/lib/channel/channel_args.h(287): warning C4312: 'reinterpret_cast': conversion from 'int' to 'void *' of greater size Target //test/cpp/naming:resolver_component_tests_runner_invoker up-to-date: bazel-bin/test/cpp/naming/resolver_component_tests_runner_invoker.exe INFO: Elapsed time: 230.374s, Critical Path: 228.54s INFO: 9 processes: 2 internal, 7 local. INFO: Build completed successfully, 9 total actions //test/cpp/naming:resolver_component_tests_runner_invoker PASSED in 221.2s Executed 1 out of 1 test: 1 test passes. ``` ``` C:\Users\yijiem\projects\grpc>bazel --output_base=C:\bazel6 test --dynamic_mode=off --verbose_failures --test_env=GRPC_EXPERIMENTS=event_engine_dns --test_env=GRPC_VERBOSITY=debug --test_env=GRPC_TRACE=cares_resolver --enable_runfiles=yes --nocache_test_results //test/cpp/naming:cancel_ares_query_test INFO: Analyzed target //test/cpp/naming:cancel_ares_query_test (0 packages loaded, 0 targets configured). INFO: Found 1 test target... Target //test/cpp/naming:cancel_ares_query_test up-to-date: bazel-bin/test/cpp/naming/cancel_ares_query_test.exe INFO: Elapsed time: 49.656s, Critical Path: 48.00s INFO: 6 processes: 2 internal, 4 local. INFO: Build completed successfully, 6 total actions //test/cpp/naming:cancel_ares_query_test PASSED in 43.0s Executed 1 out of 1 test: 1 test passes. ``` <!-- If you know who should review your pull request, please assign it to that person, otherwise the pull request would get assigned randomly. If your pull request is for a specific language, please add the appropriate lang label. -->
1 year ago
"lib/event_engine/windows/grpc_polled_fd_windows.h",
[EventEngine] PosixEventEngine DNS Resolver (#32701) This PR implements a c-ares based DNS resolver for EventEngine with the reference from the original [grpc_ares_wrapper.h](../blob/master/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h). The PosixEventEngine DNSResolver is implemented on top of that. Tests which use the client channel resolver API ([resolver.h](../blob/master/src/core/lib/resolver/resolver.h#L54)) are ported, namely the [resolver_component_test.cc](../blob/master/test/cpp/naming/resolver_component_test.cc) and the [cancel_ares_query_test.cc](../blob/master/test/cpp/naming/cancel_ares_query_test.cc). The WindowsEventEngine DNSResolver will use the same EventEngine's grpc_ares_wrapper and will be worked on next. The [resolve_address_test.cc](https://github.com/grpc/grpc/blob/master/test/core/iomgr/resolve_address_test.cc) which uses the iomgr [DNSResolver](../blob/master/src/core/lib/iomgr/resolve_address.h#L44) API has been ported to EventEngine's dns_test.cc. That leaves only 2 tests which use iomgr's API, notably the [dns_resolver_cooldown_test.cc](../blob/master/test/core/client_channel/resolvers/dns_resolver_cooldown_test.cc) and the [goaway_server_test.cc](../blob/master/test/core/end2end/goaway_server_test.cc) which probably need to be restructured to use EventEngine DNSResolver (for one thing they override the original grpc_ares_wrapper's free functions). I will try to tackle these in the next step. <!-- If you know who should review your pull request, please assign it to that person, otherwise the pull request would get assigned randomly. If your pull request is for a specific language, please add the appropriate lang label. -->
2 years ago
],
external_deps = [
"absl/base:core_headers",
"absl/container:flat_hash_map",
"absl/functional:any_invocable",
"absl/hash",
"absl/log:check",
[EventEngine] PosixEventEngine DNS Resolver (#32701) This PR implements a c-ares based DNS resolver for EventEngine with the reference from the original [grpc_ares_wrapper.h](../blob/master/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h). The PosixEventEngine DNSResolver is implemented on top of that. Tests which use the client channel resolver API ([resolver.h](../blob/master/src/core/lib/resolver/resolver.h#L54)) are ported, namely the [resolver_component_test.cc](../blob/master/test/cpp/naming/resolver_component_test.cc) and the [cancel_ares_query_test.cc](../blob/master/test/cpp/naming/cancel_ares_query_test.cc). The WindowsEventEngine DNSResolver will use the same EventEngine's grpc_ares_wrapper and will be worked on next. The [resolve_address_test.cc](https://github.com/grpc/grpc/blob/master/test/core/iomgr/resolve_address_test.cc) which uses the iomgr [DNSResolver](../blob/master/src/core/lib/iomgr/resolve_address.h#L44) API has been ported to EventEngine's dns_test.cc. That leaves only 2 tests which use iomgr's API, notably the [dns_resolver_cooldown_test.cc](../blob/master/test/core/client_channel/resolvers/dns_resolver_cooldown_test.cc) and the [goaway_server_test.cc](../blob/master/test/core/end2end/goaway_server_test.cc) which probably need to be restructured to use EventEngine DNSResolver (for one thing they override the original grpc_ares_wrapper's free functions). I will try to tackle these in the next step. <!-- If you know who should review your pull request, please assign it to that person, otherwise the pull request would get assigned randomly. If your pull request is for a specific language, please add the appropriate lang label. -->
2 years ago
"absl/status",
"absl/status:statusor",
"absl/strings",
"absl/strings:str_format",
"absl/types:optional",
"absl/types:variant",
"address_sorting",
[EventEngine] PosixEventEngine DNS Resolver (#32701) This PR implements a c-ares based DNS resolver for EventEngine with the reference from the original [grpc_ares_wrapper.h](../blob/master/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h). The PosixEventEngine DNSResolver is implemented on top of that. Tests which use the client channel resolver API ([resolver.h](../blob/master/src/core/lib/resolver/resolver.h#L54)) are ported, namely the [resolver_component_test.cc](../blob/master/test/cpp/naming/resolver_component_test.cc) and the [cancel_ares_query_test.cc](../blob/master/test/cpp/naming/cancel_ares_query_test.cc). The WindowsEventEngine DNSResolver will use the same EventEngine's grpc_ares_wrapper and will be worked on next. The [resolve_address_test.cc](https://github.com/grpc/grpc/blob/master/test/core/iomgr/resolve_address_test.cc) which uses the iomgr [DNSResolver](../blob/master/src/core/lib/iomgr/resolve_address.h#L44) API has been ported to EventEngine's dns_test.cc. That leaves only 2 tests which use iomgr's API, notably the [dns_resolver_cooldown_test.cc](../blob/master/test/core/client_channel/resolvers/dns_resolver_cooldown_test.cc) and the [goaway_server_test.cc](../blob/master/test/core/end2end/goaway_server_test.cc) which probably need to be restructured to use EventEngine DNSResolver (for one thing they override the original grpc_ares_wrapper's free functions). I will try to tackle these in the next step. <!-- If you know who should review your pull request, please assign it to that person, otherwise the pull request would get assigned randomly. If your pull request is for a specific language, please add the appropriate lang label. -->
2 years ago
"cares",
],
deps = [
[EventEngine] WindowsDNSResolver Implementation (#34400) Design is documented at [go/windows-dns-resolver-issue](http://go/windows-dns-resolver-issue) (note that the design doc is slightly outdated regarding the shared ownership model of the virtual socket that was implemented in https://github.com/grpc/grpc/pull/34400/commits/13bd2b404eee1770c73f70d5ef49638f7b0e0dd2). Passed `//test/cpp/naming:resolver_component_tests_runner_invoker` and `//test/cpp/naming:cancel_ares_query_test`: ``` C:\Users\yijiem\projects\grpc>bazel --output_base=C:\bazel6 test --dynamic_mode=off --verbose_failures --test_env=GRPC_EXPERIMENTS=event_engine_dns --test_env=GRPC_VERBOSITY=debug --test_env=GRPC_TRACE=cares_resolver --enable_runfiles=yes --nocache_test_results //test/cpp/naming:resolver_component_tests_runner_invoker INFO: Analyzed target //test/cpp/naming:resolver_component_tests_runner_invoker (1 packages loaded, 8 targets configured). INFO: Found 1 test target... INFO: From Compiling src/core/lib/event_engine/windows/windows_engine.cc: C:\bazel6\execroot\com_github_grpc_grpc\src/core/lib/channel/channel_args.h(287): warning C4312: 'reinterpret_cast': conversion from 'int' to 'void *' of greater size Target //test/cpp/naming:resolver_component_tests_runner_invoker up-to-date: bazel-bin/test/cpp/naming/resolver_component_tests_runner_invoker.exe INFO: Elapsed time: 230.374s, Critical Path: 228.54s INFO: 9 processes: 2 internal, 7 local. INFO: Build completed successfully, 9 total actions //test/cpp/naming:resolver_component_tests_runner_invoker PASSED in 221.2s Executed 1 out of 1 test: 1 test passes. ``` ``` C:\Users\yijiem\projects\grpc>bazel --output_base=C:\bazel6 test --dynamic_mode=off --verbose_failures --test_env=GRPC_EXPERIMENTS=event_engine_dns --test_env=GRPC_VERBOSITY=debug --test_env=GRPC_TRACE=cares_resolver --enable_runfiles=yes --nocache_test_results //test/cpp/naming:cancel_ares_query_test INFO: Analyzed target //test/cpp/naming:cancel_ares_query_test (0 packages loaded, 0 targets configured). INFO: Found 1 test target... Target //test/cpp/naming:cancel_ares_query_test up-to-date: bazel-bin/test/cpp/naming/cancel_ares_query_test.exe INFO: Elapsed time: 49.656s, Critical Path: 48.00s INFO: 6 processes: 2 internal, 4 local. INFO: Build completed successfully, 6 total actions //test/cpp/naming:cancel_ares_query_test PASSED in 43.0s Executed 1 out of 1 test: 1 test passes. ``` <!-- If you know who should review your pull request, please assign it to that person, otherwise the pull request would get assigned randomly. If your pull request is for a specific language, please add the appropriate lang label. -->
1 year ago
"common_event_engine_closures",
[EventEngine] PosixEventEngine DNS Resolver (#32701) This PR implements a c-ares based DNS resolver for EventEngine with the reference from the original [grpc_ares_wrapper.h](../blob/master/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h). The PosixEventEngine DNSResolver is implemented on top of that. Tests which use the client channel resolver API ([resolver.h](../blob/master/src/core/lib/resolver/resolver.h#L54)) are ported, namely the [resolver_component_test.cc](../blob/master/test/cpp/naming/resolver_component_test.cc) and the [cancel_ares_query_test.cc](../blob/master/test/cpp/naming/cancel_ares_query_test.cc). The WindowsEventEngine DNSResolver will use the same EventEngine's grpc_ares_wrapper and will be worked on next. The [resolve_address_test.cc](https://github.com/grpc/grpc/blob/master/test/core/iomgr/resolve_address_test.cc) which uses the iomgr [DNSResolver](../blob/master/src/core/lib/iomgr/resolve_address.h#L44) API has been ported to EventEngine's dns_test.cc. That leaves only 2 tests which use iomgr's API, notably the [dns_resolver_cooldown_test.cc](../blob/master/test/core/client_channel/resolvers/dns_resolver_cooldown_test.cc) and the [goaway_server_test.cc](../blob/master/test/core/end2end/goaway_server_test.cc) which probably need to be restructured to use EventEngine DNSResolver (for one thing they override the original grpc_ares_wrapper's free functions). I will try to tackle these in the next step. <!-- If you know who should review your pull request, please assign it to that person, otherwise the pull request would get assigned randomly. If your pull request is for a specific language, please add the appropriate lang label. -->
2 years ago
"error",
"event_engine_time_util",
"grpc_sockaddr",
"iomgr_port",
"posix_event_engine_closure",
"posix_event_engine_event_poller",
"posix_event_engine_tcp_socket_utils",
"ref_counted_dns_resolver_interface",
[EventEngine] PosixEventEngine DNS Resolver (#32701) This PR implements a c-ares based DNS resolver for EventEngine with the reference from the original [grpc_ares_wrapper.h](../blob/master/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h). The PosixEventEngine DNSResolver is implemented on top of that. Tests which use the client channel resolver API ([resolver.h](../blob/master/src/core/lib/resolver/resolver.h#L54)) are ported, namely the [resolver_component_test.cc](../blob/master/test/cpp/naming/resolver_component_test.cc) and the [cancel_ares_query_test.cc](../blob/master/test/cpp/naming/cancel_ares_query_test.cc). The WindowsEventEngine DNSResolver will use the same EventEngine's grpc_ares_wrapper and will be worked on next. The [resolve_address_test.cc](https://github.com/grpc/grpc/blob/master/test/core/iomgr/resolve_address_test.cc) which uses the iomgr [DNSResolver](../blob/master/src/core/lib/iomgr/resolve_address.h#L44) API has been ported to EventEngine's dns_test.cc. That leaves only 2 tests which use iomgr's API, notably the [dns_resolver_cooldown_test.cc](../blob/master/test/core/client_channel/resolvers/dns_resolver_cooldown_test.cc) and the [goaway_server_test.cc](../blob/master/test/core/end2end/goaway_server_test.cc) which probably need to be restructured to use EventEngine DNSResolver (for one thing they override the original grpc_ares_wrapper's free functions). I will try to tackle these in the next step. <!-- If you know who should review your pull request, please assign it to that person, otherwise the pull request would get assigned randomly. If your pull request is for a specific language, please add the appropriate lang label. -->
2 years ago
"resolved_address",
[EventEngine] WindowsDNSResolver Implementation (#34400) Design is documented at [go/windows-dns-resolver-issue](http://go/windows-dns-resolver-issue) (note that the design doc is slightly outdated regarding the shared ownership model of the virtual socket that was implemented in https://github.com/grpc/grpc/pull/34400/commits/13bd2b404eee1770c73f70d5ef49638f7b0e0dd2). Passed `//test/cpp/naming:resolver_component_tests_runner_invoker` and `//test/cpp/naming:cancel_ares_query_test`: ``` C:\Users\yijiem\projects\grpc>bazel --output_base=C:\bazel6 test --dynamic_mode=off --verbose_failures --test_env=GRPC_EXPERIMENTS=event_engine_dns --test_env=GRPC_VERBOSITY=debug --test_env=GRPC_TRACE=cares_resolver --enable_runfiles=yes --nocache_test_results //test/cpp/naming:resolver_component_tests_runner_invoker INFO: Analyzed target //test/cpp/naming:resolver_component_tests_runner_invoker (1 packages loaded, 8 targets configured). INFO: Found 1 test target... INFO: From Compiling src/core/lib/event_engine/windows/windows_engine.cc: C:\bazel6\execroot\com_github_grpc_grpc\src/core/lib/channel/channel_args.h(287): warning C4312: 'reinterpret_cast': conversion from 'int' to 'void *' of greater size Target //test/cpp/naming:resolver_component_tests_runner_invoker up-to-date: bazel-bin/test/cpp/naming/resolver_component_tests_runner_invoker.exe INFO: Elapsed time: 230.374s, Critical Path: 228.54s INFO: 9 processes: 2 internal, 7 local. INFO: Build completed successfully, 9 total actions //test/cpp/naming:resolver_component_tests_runner_invoker PASSED in 221.2s Executed 1 out of 1 test: 1 test passes. ``` ``` C:\Users\yijiem\projects\grpc>bazel --output_base=C:\bazel6 test --dynamic_mode=off --verbose_failures --test_env=GRPC_EXPERIMENTS=event_engine_dns --test_env=GRPC_VERBOSITY=debug --test_env=GRPC_TRACE=cares_resolver --enable_runfiles=yes --nocache_test_results //test/cpp/naming:cancel_ares_query_test INFO: Analyzed target //test/cpp/naming:cancel_ares_query_test (0 packages loaded, 0 targets configured). INFO: Found 1 test target... Target //test/cpp/naming:cancel_ares_query_test up-to-date: bazel-bin/test/cpp/naming/cancel_ares_query_test.exe INFO: Elapsed time: 49.656s, Critical Path: 48.00s INFO: 6 processes: 2 internal, 4 local. INFO: Build completed successfully, 6 total actions //test/cpp/naming:cancel_ares_query_test PASSED in 43.0s Executed 1 out of 1 test: 1 test passes. ``` <!-- If you know who should review your pull request, please assign it to that person, otherwise the pull request would get assigned randomly. If your pull request is for a specific language, please add the appropriate lang label. -->
1 year ago
"slice",
"windows_iocp",
[EventEngine] PosixEventEngine DNS Resolver (#32701) This PR implements a c-ares based DNS resolver for EventEngine with the reference from the original [grpc_ares_wrapper.h](../blob/master/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h). The PosixEventEngine DNSResolver is implemented on top of that. Tests which use the client channel resolver API ([resolver.h](../blob/master/src/core/lib/resolver/resolver.h#L54)) are ported, namely the [resolver_component_test.cc](../blob/master/test/cpp/naming/resolver_component_test.cc) and the [cancel_ares_query_test.cc](../blob/master/test/cpp/naming/cancel_ares_query_test.cc). The WindowsEventEngine DNSResolver will use the same EventEngine's grpc_ares_wrapper and will be worked on next. The [resolve_address_test.cc](https://github.com/grpc/grpc/blob/master/test/core/iomgr/resolve_address_test.cc) which uses the iomgr [DNSResolver](../blob/master/src/core/lib/iomgr/resolve_address.h#L44) API has been ported to EventEngine's dns_test.cc. That leaves only 2 tests which use iomgr's API, notably the [dns_resolver_cooldown_test.cc](../blob/master/test/core/client_channel/resolvers/dns_resolver_cooldown_test.cc) and the [goaway_server_test.cc](../blob/master/test/core/end2end/goaway_server_test.cc) which probably need to be restructured to use EventEngine DNSResolver (for one thing they override the original grpc_ares_wrapper's free functions). I will try to tackle these in the next step. <!-- If you know who should review your pull request, please assign it to that person, otherwise the pull request would get assigned randomly. If your pull request is for a specific language, please add the appropriate lang label. -->
2 years ago
"//:debug_location",
"//:event_engine_base_hdrs",
"//:gpr",
"//:grpc_trace",
"//:orphanable",
"//:parse_address",
"//:ref_counted_ptr",
"//:sockaddr_utils",
],
)
grpc_cc_library(
name = "channel_args_preconditioning",
srcs = [
"lib/channel/channel_args_preconditioning.cc",
],
hdrs = [
"lib/channel/channel_args_preconditioning.h",
],
deps = [
"channel_args",
"//:event_engine_base_hdrs",
"//:gpr_platform",
],
)
grpc_cc_library(
name = "bdp_estimator",
srcs = [
"lib/transport/bdp_estimator.cc",
],
hdrs = ["lib/transport/bdp_estimator.h"],
external_deps = [
"absl/log:check",
"absl/strings",
],
deps = [
"time",
"//:gpr",
"//:grpc_trace",
],
)
grpc_cc_library(
name = "percent_encoding",
srcs = [
"lib/slice/percent_encoding.cc",
],
hdrs = [
"lib/slice/percent_encoding.h",
],
external_deps = [
"absl/log:check",
],
deps = [
"bitset",
"slice",
"//:gpr",
],
)
grpc_cc_library(
name = "socket_mutator",
srcs = [
"lib/iomgr/socket_mutator.cc",
],
hdrs = [
"lib/iomgr/socket_mutator.h",
],
visibility = ["@grpc:alt_grpc_base_legacy"],
deps = [
"channel_args",
"useful",
"//:event_engine_base_hdrs",
"//:gpr",
],
)
grpc_cc_library(
name = "pollset_set",
srcs = [
"lib/iomgr/pollset_set.cc",
],
hdrs = [
"lib/iomgr/pollset_set.h",
],
deps = [
"iomgr_fwd",
"//:gpr",
],
)
grpc_cc_library(
name = "histogram_view",
srcs = [
"lib/debug/histogram_view.cc",
],
hdrs = [
"lib/debug/histogram_view.h",
],
deps = ["//:gpr"],
)
grpc_cc_library(
name = "stats_data",
srcs = [
"lib/debug/stats_data.cc",
],
hdrs = [
"lib/debug/stats_data.h",
],
external_deps = ["absl/strings"],
deps = [
"histogram_view",
"per_cpu",
"//:gpr_platform",
],
)
grpc_cc_library(
name = "per_cpu",
srcs = [
"lib/gprpp/per_cpu.cc",
],
hdrs = [
"lib/gprpp/per_cpu.h",
],
deps = [
"useful",
"//:gpr",
],
)
grpc_cc_library(
name = "event_log",
srcs = [
"lib/debug/event_log.cc",
],
hdrs = [
"lib/debug/event_log.h",
],
external_deps = [
"absl/base:core_headers",
"absl/log:check",
"absl/strings",
"absl/types:span",
],
deps = [
"per_cpu",
"//:gpr",
],
)
grpc_cc_library(
name = "load_file",
srcs = [
"lib/gprpp/load_file.cc",
],
hdrs = [
"lib/gprpp/load_file.h",
],
external_deps = [
"absl/cleanup",
"absl/status",
"absl/status:statusor",
"absl/strings",
],
language = "c++",
deps = [
"slice",
"//:gpr",
],
)
grpc_cc_library(
name = "http2_errors",
hdrs = [
"lib/transport/http2_errors.h",
],
)
grpc_cc_library(
name = "channel_stack_type",
srcs = [
"lib/surface/channel_stack_type.cc",
],
hdrs = [
"lib/surface/channel_stack_type.h",
],
language = "c++",
deps = ["//:gpr_platform"],
)
grpc_cc_library(
name = "channel_stack_trace",
srcs = [
"lib/channel/channel_stack_trace.cc",
],
hdrs = [
"lib/channel/channel_stack_trace.h",
],
language = "c++",
deps = [
"//:gpr_platform",
"//:grpc_trace",
],
)
grpc_cc_library(
name = "channel_init",
srcs = [
"lib/surface/channel_init.cc",
],
hdrs = [
"lib/surface/channel_init.h",
],
external_deps = [
"absl/functional:any_invocable",
"absl/log:check",
"absl/strings",
"absl/types:optional",
],
language = "c++",
deps = [
"call_filters",
"channel_args",
"channel_fwd",
"channel_stack_trace",
"channel_stack_type",
11 months ago
"interception_chain",
"//:channel_stack_builder",
"//:debug_location",
"//:gpr",
"//:gpr_platform",
"//:grpc_trace",
],
)
grpc_cc_library(
name = "server_interface",
hdrs = [
"server/server_interface.h",
],
language = "c++",
deps = [
"channel_args",
"//:channelz",
"//:gpr_platform",
],
)
grpc_cc_library(
name = "single_set_ptr",
hdrs = [
"lib/gprpp/single_set_ptr.h",
],
external_deps = [
"absl/log:check",
],
language = "c++",
deps = ["//:gpr"],
)
grpc_cc_library(
name = "grpc_service_config",
hdrs = [
"service_config/service_config.h",
"service_config/service_config_call_data.h",
],
external_deps = [
"absl/log:check",
"absl/strings",
],
language = "c++",
deps = [
"arena",
"chunked_vector",
"ref_counted",
"service_config_parser",
"slice_refcount",
"unique_type_name",
"useful",
"//:gpr_platform",
"//:legacy_context",
"//:ref_counted_ptr",
],
)
grpc_cc_library(
name = "service_config_parser",
srcs = [
"service_config/service_config_parser.cc",
],
hdrs = [
"service_config/service_config_parser.h",
],
external_deps = ["absl/strings"],
language = "c++",
deps = [
"channel_args",
"json",
"validation_errors",
"//:gpr",
],
)
grpc_cc_library(
name = "notification",
hdrs = [
"lib/gprpp/notification.h",
],
external_deps = ["absl/time"],
deps = ["//:gpr"],
)
grpc_cc_library(
name = "channel_args",
srcs = [
"lib/channel/channel_args.cc",
],
hdrs = [
"lib/channel/channel_args.h",
],
external_deps = [
"absl/log:check",
"absl/meta:type_traits",
"absl/strings",
"absl/strings:str_format",
"absl/types:optional",
],
language = "c++",
visibility = [
"@grpc:alt_grpc_base_legacy",
],
deps = [
"avl",
"channel_stack_type",
"dual_ref_counted",
"ref_counted",
"ref_counted_string",
"time",
"useful",
"//:channel_arg_names",
"//:debug_location",
"//:event_engine_base_hdrs",
"//:gpr",
"//:ref_counted_ptr",
],
)
grpc_cc_library(
name = "resolved_address",
hdrs = ["lib/iomgr/resolved_address.h"],
language = "c++",
deps = [
"iomgr_port",
"//:gpr_platform",
],
)
grpc_cc_library(
name = "client_channel_internal_header",
hdrs = [
"client_channel/client_channel_internal.h",
],
external_deps = [
"absl/functional:any_invocable",
"absl/log:check",
],
language = "c++",
deps = [
"arena",
"grpc_service_config",
"lb_policy",
"unique_type_name",
"//:call_tracer",
"//:gpr_public_hdrs",
"//:grpc_base",
"//:legacy_context",
],
)
grpc_cc_library(
name = "subchannel_connector",
hdrs = [
"client_channel/connector.h",
],
language = "c++",
deps = [
"channel_args",
"closure",
"error",
"iomgr_fwd",
"resolved_address",
"time",
"//:channelz",
"//:gpr_platform",
"//:grpc_base",
"//:iomgr",
"//:orphanable",
"//:ref_counted_ptr",
],
)
grpc_cc_library(
name = "subchannel_pool_interface",
srcs = [
"client_channel/subchannel_pool_interface.cc",
],
hdrs = [
"client_channel/subchannel_pool_interface.h",
],
external_deps = [
"absl/status",
"absl/status:statusor",
"absl/strings",
],
language = "c++",
deps = [
"channel_args",
"ref_counted",
"resolved_address",
"useful",
"//:gpr_platform",
"//:grpc_trace",
"//:ref_counted_ptr",
"//:sockaddr_utils",
],
)
grpc_cc_library(
name = "config_selector",
srcs = [
"client_channel/config_selector.cc",
],
hdrs = [
"client_channel/config_selector.h",
],
external_deps = [
"absl/log:check",
"absl/status",
"absl/strings",
],
language = "c++",
deps = [
"arena",
"channel_args",
"channel_fwd",
"client_channel_internal_header",
"grpc_service_config",
"metadata_batch",
"ref_counted",
"slice",
"useful",
"//:gpr_public_hdrs",
"//:grpc_public_hdrs",
"//:ref_counted_ptr",
],
)
grpc_cc_library(
name = "client_channel_service_config",
srcs = [
"client_channel/client_channel_service_config.cc",
],
hdrs = [
"client_channel/client_channel_service_config.h",
],
external_deps = [
"absl/status",
"absl/status:statusor",
"absl/strings",
"absl/types:optional",
],
language = "c++",
deps = [
"channel_args",
"json",
"json_args",
"json_object_loader",
"lb_policy",
"lb_policy_registry",
"service_config_parser",
"time",
"validation_errors",
"//:config",
"//:gpr_platform",
"//:ref_counted_ptr",
],
)
grpc_cc_library(
name = "retry_service_config",
srcs = [
"client_channel/retry_service_config.cc",
],
hdrs = [
"client_channel/retry_service_config.h",
],
external_deps = [
"absl/strings",
"absl/types:optional",
],
language = "c++",
deps = [
"channel_args",
"json",
"json_args",
"json_channel_args",
"json_object_loader",
"service_config_parser",
"time",
"validation_errors",
"//:channel_arg_names",
"//:config",
"//:gpr_public_hdrs",
"//:grpc_base",
"//:grpc_public_hdrs",
],
)
grpc_cc_library(
name = "retry_throttle",
srcs = [
"client_channel/retry_throttle.cc",
],
hdrs = [
"client_channel/retry_throttle.h",
],
external_deps = [
"absl/base:core_headers",
],
language = "c++",
deps = [
"gpr_atm",
"ref_counted",
"//:gpr",
"//:ref_counted_ptr",
],
)
grpc_cc_library(
name = "client_channel_backup_poller",
srcs = [
"client_channel/backup_poller.cc",
],
hdrs = [
"client_channel/backup_poller.h",
],
external_deps = [
"absl/status",
],
language = "c++",
deps = [
"closure",
"error",
"iomgr_fwd",
"pollset_set",
"time",
"//:config_vars",
"//:gpr",
"//:gpr_platform",
"//:iomgr",
"//:iomgr_timer",
],
)
grpc_cc_library(
name = "service_config_channel_arg_filter",
srcs = [
"service_config/service_config_channel_arg_filter.cc",
],
external_deps = [
"absl/status",
"absl/status:statusor",
"absl/types:optional",
],
language = "c++",
deps = [
"arena",
"arena_promise",
"channel_args",
"channel_fwd",
"channel_stack_type",
"context",
"grpc_message_size_filter",
"grpc_service_config",
"metadata_batch",
"service_config_parser",
"//:channel_arg_names",
"//:config",
"//:gpr_platform",
"//:gpr_public_hdrs",
"//:grpc_base",
"//:grpc_service_config_impl",
"//:legacy_context",
"//:ref_counted_ptr",
],
)
grpc_cc_library(
name = "lb_policy",
srcs = ["load_balancing/lb_policy.cc"],
hdrs = ["load_balancing/lb_policy.h"],
external_deps = [
Second attempt: client channel: don't hold mutexes while calling the ConfigSelector or the LB picker (#32326) Original attempt was #31973, reverted in #32324 due to test flakiness. There were two problems causing test flakiness here. The first problem was that, upon resolver error, we were dispatching an async callback to re-process each of the queued picks *before* we updated the channel's connectivity state, which meant that the queued picks might be re-processed in another thread before the new connectivity state was set, so tests that expected the state to be TRANSIENT_FAILURE once RPCs failed might not see the expected state. The second problem affected the xDS ring hash tests, and it's a bit more involved to explain. We have an e2e test that simulates an aggregate cluster failover from a primary cluster using ring_hash at startup. The primary cluster has two addresses, both of which are unreachable when the client starts up, so the client should immediately fail over to the secondary cluster, which does have reachable endpoints. The test requires that no RPCs are failed while this failover occurs. The original PR made this test flaky. The problem here was caused by a combination of two factors: 1. Prior to the original PR, when the picker was updated (which happens inside the WorkSerializer), we re-processed previously queued picks synchronously, so it was not possible for another subchannel connectivity state update (which also happens in the WorkSerializer) to be processed between the time that we updated the picker and the time that we re-processed the previously queued picks. The original PR changed this such that the queued picks are re-processed asynchronously (outside of the WorkSerializer), so it is now possible for a subchannel connectivity state update to be processed between when the picker is updated and when we re-process the previously queued picks. 2. Unlike most LB policies, where the picker does not see updated subchannel connectivity states until a new picker is created, the ring_hash picker gets the subchannel connectivity states from the LB policy via a lock, so it can wind up seeing the new states before it gets updated. This means that when a subchannel connectivity state update is processed by the ring_hash policy in the WorkSerializer, it will immediately be seen by the existing picker, even without a picker update. With those two points in mind, the sequence of events in the failing test were as follows: 1. The pick is attempted in the ring_hash picker for the primary cluster. This causes the first subchannel to attempt to connect. 2. The subchannel transitions from IDLE to CONNECTING. A new picker is returned due to the subchannel connectivity state change, and the channel retries the queued pick. The retried pick is done asynchronously, but in this case it does not matter: the call will be re-queued. 3. The connection attempt fails, and the subchannel reports TRANSIENT_FAILURE. A new picker is again returned, and the channel retries the queued pick. The retried pick is done asynchronously, but in this case it does not matter: this causes the picker to trigger a connection attempt for the second subchannel. 4. The second subchannel transitions from IDLE to CONNECTING. A new picker is again returned, and the channel retries the queued pick. The retried pick is done asynchronously, and in this case it *does* matter. 5. The second subchannel now transitions to TRANSIENT_FAILURE. The ring_hash policy will now report TRANSIENT_FAILURE, but before it can finish that... 6. ...In another thread, the channel now tries to re-process the queued pick using the CONNECTING picker from step 4. However, because the ring_hash policy has already seen the TRANSIENT_FAILURE report from the second subchannel, that picker will now fail the pick instead of queuing it. After discussion with @ejona86 and @dfawley (since this bug actually exists in Java and Go as well), we agreed that the right solution is to change the ring_hash picker to contain its own copy of the subchannel connectivity state information, rather than sharing that information with the LB policy using synchronization.
2 years ago
"absl/base:core_headers",
"absl/status",
"absl/status:statusor",
"absl/strings",
"absl/types:optional",
"absl/types:variant",
],
deps = [
"channel_args",
"closure",
WRR: implement WRR LB policy (#31904) * WRR: port StaticStrideScheduler to OSS * WIP * Automated change: Fix sanity tests * fix build * remove unused aliases * fix another type mismatch * remove unnecessary include * move benchmarks to their own file, and don't run it on windows * Automated change: Fix sanity tests * add OOB reporting * generate_projects * clang-format * add config parser test * clang-tidy and minimize lock contention * add config defaults * add oob_reporting_period config field and add basic test * Automated change: Fix sanity tests * fix test * change test to use basic RR * WIP: started exposing peer address to LB policy API * first WRR test passing! * small cleanup * port RR fix to WRR * test helper refactoring * more test helper refactoring * WIP: trying to fix test to have the right weights * more WIP -- need to make pickers DualRefCounted * fix timer ref handling and get tests working * clang-format * iwyu and generate_projects * fix build * add test for OOB reporting * keep only READY subchannels in the picker * add file missed in a previous commit * fix sanity * iwyu * add weight expiration period * add tests for weight update period and OOB reporting period * Automated change: Fix sanity tests * lower bound for timer interval * consistently apply grpc_test_slowdown_factor() * cache time in test * add blackout_period tests * avoid some unnecessary copies * clang-format * add field to config test * simplify orca watcher tracking * attempt to fix build * iwyu * generate_projects * add "_experimental" suffix to policy name * WRR: update tests to cover qps plumbing * WIP * more WIP * basic WRR e2e test working * add OOB test * fix sanity * ignore duplicate addresses * Automated change: Fix sanity tests * add new tracer to doc/environment_variables.md * retain scheduler state across pickers * Automated change: Fix sanity tests * use separate mutexes for scheduler and timer * sort addresses to avoid index churn * remove fetch_sub for wrap around in RR case Co-authored-by: markdroth <markdroth@users.noreply.github.com>
2 years ago
"dual_ref_counted",
"error",
"grpc_backend_metric_data",
"iomgr_fwd",
"metrics",
"pollset_set",
"ref_counted",
"resolved_address",
"subchannel_interface",
"//:debug_location",
"//:endpoint_addresses",
"//:event_engine_base_hdrs",
"//:exec_ctx",
Second attempt: client channel: don't hold mutexes while calling the ConfigSelector or the LB picker (#32326) Original attempt was #31973, reverted in #32324 due to test flakiness. There were two problems causing test flakiness here. The first problem was that, upon resolver error, we were dispatching an async callback to re-process each of the queued picks *before* we updated the channel's connectivity state, which meant that the queued picks might be re-processed in another thread before the new connectivity state was set, so tests that expected the state to be TRANSIENT_FAILURE once RPCs failed might not see the expected state. The second problem affected the xDS ring hash tests, and it's a bit more involved to explain. We have an e2e test that simulates an aggregate cluster failover from a primary cluster using ring_hash at startup. The primary cluster has two addresses, both of which are unreachable when the client starts up, so the client should immediately fail over to the secondary cluster, which does have reachable endpoints. The test requires that no RPCs are failed while this failover occurs. The original PR made this test flaky. The problem here was caused by a combination of two factors: 1. Prior to the original PR, when the picker was updated (which happens inside the WorkSerializer), we re-processed previously queued picks synchronously, so it was not possible for another subchannel connectivity state update (which also happens in the WorkSerializer) to be processed between the time that we updated the picker and the time that we re-processed the previously queued picks. The original PR changed this such that the queued picks are re-processed asynchronously (outside of the WorkSerializer), so it is now possible for a subchannel connectivity state update to be processed between when the picker is updated and when we re-process the previously queued picks. 2. Unlike most LB policies, where the picker does not see updated subchannel connectivity states until a new picker is created, the ring_hash picker gets the subchannel connectivity states from the LB policy via a lock, so it can wind up seeing the new states before it gets updated. This means that when a subchannel connectivity state update is processed by the ring_hash policy in the WorkSerializer, it will immediately be seen by the existing picker, even without a picker update. With those two points in mind, the sequence of events in the failing test were as follows: 1. The pick is attempted in the ring_hash picker for the primary cluster. This causes the first subchannel to attempt to connect. 2. The subchannel transitions from IDLE to CONNECTING. A new picker is returned due to the subchannel connectivity state change, and the channel retries the queued pick. The retried pick is done asynchronously, but in this case it does not matter: the call will be re-queued. 3. The connection attempt fails, and the subchannel reports TRANSIENT_FAILURE. A new picker is again returned, and the channel retries the queued pick. The retried pick is done asynchronously, but in this case it does not matter: this causes the picker to trigger a connection attempt for the second subchannel. 4. The second subchannel transitions from IDLE to CONNECTING. A new picker is again returned, and the channel retries the queued pick. The retried pick is done asynchronously, and in this case it *does* matter. 5. The second subchannel now transitions to TRANSIENT_FAILURE. The ring_hash policy will now report TRANSIENT_FAILURE, but before it can finish that... 6. ...In another thread, the channel now tries to re-process the queued pick using the CONNECTING picker from step 4. However, because the ring_hash policy has already seen the TRANSIENT_FAILURE report from the second subchannel, that picker will now fail the pick instead of queuing it. After discussion with @ejona86 and @dfawley (since this bug actually exists in Java and Go as well), we agreed that the right solution is to change the ring_hash picker to contain its own copy of the subchannel connectivity state information, rather than sharing that information with the LB policy using synchronization.
2 years ago
"//:gpr",
"//:gpr_platform",
"//:grpc_trace",
"//:orphanable",
"//:ref_counted_ptr",
"//:work_serializer",
],
)
grpc_cc_library(
name = "lb_policy_factory",
hdrs = ["load_balancing/lb_policy_factory.h"],
external_deps = [
"absl/status:statusor",
"absl/strings",
],
deps = [
"json",
"lb_policy",
"//:gpr_platform",
"//:orphanable",
"//:ref_counted_ptr",
],
)
grpc_cc_library(
name = "lb_policy_registry",
srcs = ["load_balancing/lb_policy_registry.cc"],
hdrs = ["load_balancing/lb_policy_registry.h"],
external_deps = [
"absl/log:check",
"absl/status",
"absl/status:statusor",
"absl/strings",
"absl/strings:str_format",
],
deps = [
"json",
"lb_policy",
"lb_policy_factory",
"//:gpr",
"//:orphanable",
"//:ref_counted_ptr",
],
)
grpc_cc_library(
name = "subchannel_interface",
hdrs = ["load_balancing/subchannel_interface.h"],
external_deps = ["absl/status"],
deps = [
"dual_ref_counted",
"iomgr_fwd",
"//:event_engine_base_hdrs",
"//:gpr_platform",
"//:ref_counted_ptr",
],
)
grpc_cc_library(
name = "delegating_helper",
hdrs = ["load_balancing/delegating_helper.h"],
external_deps = [
"absl/status",
"absl/strings",
],
deps = [
"channel_args",
"lb_policy",
"resolved_address",
"subchannel_interface",
"//:debug_location",
"//:event_engine_base_hdrs",
"//:gpr_platform",
"//:grpc_security_base",
"//:ref_counted_ptr",
],
)
grpc_cc_library(
name = "backend_metric_parser",
srcs = [
"load_balancing/backend_metric_parser.cc",
],
hdrs = [
"load_balancing/backend_metric_parser.h",
],
external_deps = [
"absl/strings",
"@com_google_protobuf//upb:base",
"@com_google_protobuf//upb:mem",
"@com_google_protobuf//upb:message",
],
language = "c++",
deps = [
"grpc_backend_metric_data",
"xds_orca_upb",
"//:gpr_platform",
],
)
grpc_cc_library(
name = "proxy_mapper",
hdrs = ["handshaker/proxy_mapper.h"],
external_deps = [
"absl/strings",
"absl/types:optional",
],
deps = [
"channel_args",
"resolved_address",
"//:gpr_platform",
],
)
grpc_cc_library(
name = "proxy_mapper_registry",
srcs = ["handshaker/proxy_mapper_registry.cc"],
hdrs = ["handshaker/proxy_mapper_registry.h"],
external_deps = [
"absl/strings",
"absl/types:optional",
],
deps = [
"channel_args",
"proxy_mapper",
"resolved_address",
"//:gpr_platform",
],
)
grpc_cc_library(
name = "http_proxy_mapper",
srcs = [
"handshaker/http_connect/http_proxy_mapper.cc",
],
hdrs = [
"handshaker/http_connect/http_proxy_mapper.h",
],
external_deps = [
"absl/log:check",
"absl/status",
"absl/status:statusor",
"absl/strings",
"absl/types:optional",
],
language = "c++",
deps = [
"channel_args",
"env",
"experiments",
"proxy_mapper",
"resolved_address",
"//:channel_arg_names",
"//:config",
"//:gpr",
"//:grpc_base",
"//:http_connect_handshaker",
"//:iomgr",
"//:parse_address",
"//:sockaddr_utils",
"//:uri_parser",
],
)
grpc_cc_library(
name = "grpc_server_config_selector",
hdrs = [
"server/server_config_selector.h",
],
external_deps = [
"absl/status:statusor",
"absl/strings",
],
language = "c++",
deps = [
"dual_ref_counted",
"grpc_service_config",
"metadata_batch",
"ref_counted",
"service_config_parser",
"useful",
"//:gpr_platform",
"//:grpc_base",
"//:ref_counted_ptr",
],
)
grpc_cc_library(
name = "grpc_server_config_selector_filter",
srcs = [
"server/server_config_selector_filter.cc",
],
hdrs = [
"server/server_config_selector_filter.h",
],
external_deps = [
"absl/base:core_headers",
"absl/log:check",
"absl/status",
"absl/status:statusor",
"absl/types:optional",
],
language = "c++",
deps = [
"arena",
"arena_promise",
"channel_args",
"channel_fwd",
"context",
"event_engine_context",
"grpc_server_config_selector",
"grpc_service_config",
"metadata_batch",
"status_helper",
"//:gpr",
"//:grpc_base",
"//:legacy_context",
"//:promise",
"//:ref_counted_ptr",
],
)
grpc_cc_library(
name = "sorted_pack",
hdrs = [
"lib/gprpp/sorted_pack.h",
],
language = "c++",
deps = [
"type_list",
"//:gpr_platform",
],
)
grpc_cc_library(
name = "type_list",
hdrs = [
"lib/gprpp/type_list.h",
],
language = "c++",
)
grpc_cc_library(
name = "if_list",
hdrs = [
"lib/gprpp/if_list.h",
],
language = "c++",
deps = ["//:gpr_platform"],
)
grpc_cc_library(
name = "certificate_provider_factory",
hdrs = [
"lib/security/certificate_provider/certificate_provider_factory.h",
],
external_deps = ["absl/strings"],
deps = [
"json",
"json_args",
"ref_counted",
"validation_errors",
"//:alts_util",
"//:gpr",
"//:grpc_core_credentials_header",
"//:ref_counted_ptr",
],
)
grpc_cc_library(
name = "certificate_provider_registry",
srcs = [
"lib/security/certificate_provider/certificate_provider_registry.cc",
],
hdrs = [
"lib/security/certificate_provider/certificate_provider_registry.h",
],
external_deps = [
"absl/log:check",
"absl/strings",
],
deps = [
"certificate_provider_factory",
"//:gpr",
],
)
grpc_cc_library(
name = "grpc_audit_logging",
srcs = [
"lib/security/authorization/audit_logging.cc",
"lib/security/authorization/stdout_logger.cc",
],
hdrs = [
"lib/security/authorization/audit_logging.h",
"lib/security/authorization/stdout_logger.h",
],
external_deps = [
"absl/base:core_headers",
"absl/log:check",
"absl/status",
"absl/status:statusor",
"absl/strings",
"absl/strings:str_format",
"absl/time",
],
deps = [
"//:gpr",
"//:grpc_base",
],
)
grpc_cc_library(
name = "grpc_authorization_base",
srcs = [
"lib/security/authorization/authorization_policy_provider_vtable.cc",
"lib/security/authorization/evaluate_args.cc",
"lib/security/authorization/grpc_server_authz_filter.cc",
],
hdrs = [
"lib/security/authorization/authorization_engine.h",
"lib/security/authorization/authorization_policy_provider.h",
"lib/security/authorization/evaluate_args.h",
"lib/security/authorization/grpc_server_authz_filter.h",
],
external_deps = [
"absl/status",
"absl/status:statusor",
"absl/strings",
"absl/types:optional",
],
language = "c++",
deps = [
"arena_promise",
"channel_args",
"channel_fwd",
"dual_ref_counted",
"endpoint_info_handshaker",
"load_file",
"metadata_batch",
"ref_counted",
"resolved_address",
"slice",
"useful",
"//:channel_arg_names",
"//:gpr",
"//:grpc_base",
"//:grpc_credentials_util",
"//:grpc_security_base",
"//:grpc_trace",
[EventEngine] Modify iomgr to allow creation of event engine clients and client side endpoints (#31661) * [WIP] EventEngine iomgr endpoint shims * [WIP] EventEngine::Endpoint iomgr shims for the PosixEventEngine * Util functions to help with posix engine listener implementation * sanity * update comments in posix_engine_listener_utils.h * review comments * iwyu * revert prev commit * iwyu * update build * update * regenerate projects * regenerate projects * minor fixes * update BUILD * sanity * update build * regenerate projects * fix unused parameter * sanity * update * sanity * regenerate_projects * remove unused variable * start * update * regenerate_projects * sanity * update * fixes * update * regenerate_projects * update * fix sanity and msan failure * more fixes * build failure * update * fix * sanity * fixes * update * regenerate projects * fix sanity * review comments * An EventEngine subclass to be implemented by all posix based event engines * sanity * comments * update * review comments * re-word * fix * update * review comments * regenerate projects * syntax fix * add lock free event benchmark * releasable mutex lock * fix build isue * update * start * regenerate projects * update * fix * windows build * update * windows portability issue * update * update * update * update * format * update * update * update * update * update * fix sanity * regenerate projects * update * iwyu * Fix resolved address length related bugs in tcp_socket_utils and listener_utils * iwyu * cleanup src/core/lib/event_engine/tcp_socket_utils.cc * iwyu * fix * regenerate projects * fix sanity * re-write endpoint shim * more re-write * cleanup * update * review comments * build issue * more build issue fixes plus adding event_engine_trace * even more build issue fixes * iwyu * add static_cast * update * remove redundant code * update * deduplicate * iwyu * Fix review comments and regenerate_projects * sanity * review comments * fix include guards Co-authored-by: AJ Heller <hork@google.com>
2 years ago
"//:parse_address",
"//:promise",
"//:ref_counted_ptr",
"//:uri_parser",
],
)
grpc_cc_library(
name = "grpc_crl_provider",
srcs = [
"lib/security/credentials/tls/grpc_tls_crl_provider.cc",
],
hdrs = [
"lib/security/credentials/tls/grpc_tls_crl_provider.h",
],
external_deps = [
"absl/base:core_headers",
"absl/container:flat_hash_map",
"absl/status",
"absl/status:statusor",
"absl/strings",
"absl/types:optional",
"absl/types:span",
"libcrypto",
"libssl",
],
deps = [
"default_event_engine",
"directory_reader",
"load_file",
"slice",
"time",
"//:exec_ctx",
"//:gpr",
"//:grpc_base",
],
)
grpc_cc_library(
name = "grpc_fake_credentials",
srcs = [
"lib/security/credentials/fake/fake_credentials.cc",
"lib/security/security_connector/fake/fake_security_connector.cc",
],
hdrs = [
"lib/security/credentials/fake/fake_credentials.h",
"lib/security/security_connector/fake/fake_security_connector.h",
"load_balancing/grpclb/grpclb.h",
],
external_deps = [
"absl/log:check",
"absl/status",
"absl/status:statusor",
"absl/strings",
"absl/strings:str_format",
"absl/types:optional",
],
language = "c++",
deps = [
"arena_promise",
"channel_args",
"closure",
"error",
"iomgr_fwd",
"metadata_batch",
"slice",
"unique_type_name",
"useful",
"//:channel_arg_names",
"//:debug_location",
"//:exec_ctx",
"//:gpr",
"//:grpc_base",
"//:grpc_core_credentials_header",
"//:grpc_security_base",
"//:handshaker",
"//:iomgr",
"//:promise",
"//:ref_counted_ptr",
"//:resource_quota_api",
"//:tsi_base",
"//:tsi_fake_credentials",
],
)
grpc_cc_library(
name = "grpc_insecure_credentials",
srcs = [
"lib/security/credentials/insecure/insecure_credentials.cc",
"lib/security/security_connector/insecure/insecure_security_connector.cc",
],
hdrs = [
"lib/security/credentials/insecure/insecure_credentials.h",
"lib/security/security_connector/insecure/insecure_security_connector.h",
],
external_deps = [
"absl/log:check",
"absl/status",
"absl/strings",
],
language = "c++",
deps = [
"arena_promise",
"channel_args",
"closure",
"error",
"iomgr_fwd",
"tsi_local_credentials",
"unique_type_name",
"//:debug_location",
"//:exec_ctx",
"//:gpr",
"//:grpc_base",
"//:grpc_core_credentials_header",
"//:grpc_security_base",
"//:handshaker",
"//:iomgr",
"//:promise",
"//:ref_counted_ptr",
"//:tsi_base",
],
)
grpc_cc_library(
name = "tsi_local_credentials",
srcs = [
"tsi/local_transport_security.cc",
],
hdrs = [
"tsi/local_transport_security.h",
],
language = "c++",
deps = [
"//:event_engine_base_hdrs",
"//:exec_ctx",
"//:gpr",
"//:tsi_base",
],
)
grpc_cc_library(
name = "grpc_local_credentials",
srcs = [
"lib/security/credentials/local/local_credentials.cc",
"lib/security/security_connector/local/local_security_connector.cc",
],
hdrs = [
"lib/security/credentials/local/local_credentials.h",
"lib/security/security_connector/local/local_security_connector.h",
],
external_deps = [
"absl/log:check",
"absl/status",
"absl/status:statusor",
"absl/strings",
"absl/types:optional",
],
language = "c++",
deps = [
"arena_promise",
"channel_args",
"closure",
"error",
"grpc_sockaddr",
"iomgr_fwd",
"resolved_address",
"tsi_local_credentials",
"unique_type_name",
"useful",
"//:debug_location",
"//:exec_ctx",
"//:gpr",
"//:grpc_base",
"//:grpc_client_channel",
"//:grpc_core_credentials_header",
"//:grpc_security_base",
"//:handshaker",
"//:iomgr",
[EventEngine] Modify iomgr to allow creation of event engine clients and client side endpoints (#31661) * [WIP] EventEngine iomgr endpoint shims * [WIP] EventEngine::Endpoint iomgr shims for the PosixEventEngine * Util functions to help with posix engine listener implementation * sanity * update comments in posix_engine_listener_utils.h * review comments * iwyu * revert prev commit * iwyu * update build * update * regenerate projects * regenerate projects * minor fixes * update BUILD * sanity * update build * regenerate projects * fix unused parameter * sanity * update * sanity * regenerate_projects * remove unused variable * start * update * regenerate_projects * sanity * update * fixes * update * regenerate_projects * update * fix sanity and msan failure * more fixes * build failure * update * fix * sanity * fixes * update * regenerate projects * fix sanity * review comments * An EventEngine subclass to be implemented by all posix based event engines * sanity * comments * update * review comments * re-word * fix * update * review comments * regenerate projects * syntax fix * add lock free event benchmark * releasable mutex lock * fix build isue * update * start * regenerate projects * update * fix * windows build * update * windows portability issue * update * update * update * update * format * update * update * update * update * update * fix sanity * regenerate projects * update * iwyu * Fix resolved address length related bugs in tcp_socket_utils and listener_utils * iwyu * cleanup src/core/lib/event_engine/tcp_socket_utils.cc * iwyu * fix * regenerate projects * fix sanity * re-write endpoint shim * more re-write * cleanup * update * review comments * build issue * more build issue fixes plus adding event_engine_trace * even more build issue fixes * iwyu * add static_cast * update * remove redundant code * update * deduplicate * iwyu * Fix review comments and regenerate_projects * sanity * review comments * fix include guards Co-authored-by: AJ Heller <hork@google.com>
2 years ago
"//:parse_address",
"//:promise",
"//:ref_counted_ptr",
"//:sockaddr_utils",
"//:tsi_base",
"//:uri_parser",
],
)
grpc_cc_library(
name = "grpc_ssl_credentials",
srcs = [
"lib/security/credentials/ssl/ssl_credentials.cc",
"lib/security/security_connector/ssl/ssl_security_connector.cc",
],
hdrs = [
"lib/security/credentials/ssl/ssl_credentials.h",
"lib/security/security_connector/ssl/ssl_security_connector.h",
],
external_deps = [
"absl/log:check",
"absl/status",
"absl/strings",
"absl/strings:str_format",
"absl/types:optional",
],
language = "c++",
deps = [
"arena_promise",
"channel_args",
"closure",
"error",
"iomgr_fwd",
"unique_type_name",
"useful",
"//:api_trace",
"//:channel_arg_names",
"//:debug_location",
"//:exec_ctx",
"//:gpr",
"//:grpc_base",
"//:grpc_core_credentials_header",
"//:grpc_security_base",
"//:grpc_trace",
"//:handshaker",
"//:iomgr",
"//:promise",
"//:ref_counted_ptr",
"//:tsi_base",
"//:tsi_ssl_credentials",
"//:tsi_ssl_session_cache",
],
)
grpc_cc_library(
name = "grpc_google_default_credentials",
srcs = [
"lib/security/credentials/google_default/credentials_generic.cc",
"lib/security/credentials/google_default/google_default_credentials.cc",
],
hdrs = [
"lib/security/credentials/google_default/google_default_credentials.h",
"load_balancing/grpclb/grpclb.h",
],
external_deps = [
"absl/log:check",
"absl/status:statusor",
"absl/strings",
"absl/types:optional",
],
language = "c++",
tags = ["nofixdeps"],
deps = [
"channel_args",
"closure",
"env",
"error",
"error_utils",
"grpc_external_account_credentials",
"grpc_lb_xds_channel_args",
"grpc_oauth2_credentials",
"grpc_ssl_credentials",
"iomgr_fwd",
"json",
"json_reader",
"load_file",
"slice",
"slice_refcount",
"status_helper",
"time",
"unique_type_name",
"useful",
"//:alts_util",
"//:api_trace",
"//:channel_arg_names",
"//:exec_ctx",
"//:gpr",
"//:grpc_alts_credentials",
"//:grpc_base",
"//:grpc_core_credentials_header",
"//:grpc_jwt_credentials",
"//:grpc_public_hdrs",
"//:grpc_security_base",
"//:grpc_trace",
"//:httpcli",
"//:iomgr",
"//:orphanable",
"//:ref_counted_ptr",
"//:uri_parser",
],
)
grpc_cc_library(
name = "strerror",
srcs = [
"lib/gprpp/strerror.cc",
],
hdrs = [
"lib/gprpp/strerror.h",
],
external_deps = ["absl/strings:str_format"],
deps = ["//:gpr_platform"],
)
grpc_cc_library(
name = "grpc_tls_credentials",
srcs = [
"lib/security/credentials/tls/grpc_tls_certificate_distributor.cc",
"lib/security/credentials/tls/grpc_tls_certificate_match.cc",
"lib/security/credentials/tls/grpc_tls_certificate_provider.cc",
"lib/security/credentials/tls/grpc_tls_certificate_verifier.cc",
"lib/security/credentials/tls/grpc_tls_credentials_options.cc",
"lib/security/credentials/tls/tls_credentials.cc",
"lib/security/security_connector/tls/tls_security_connector.cc",
],
hdrs = [
"lib/security/credentials/tls/grpc_tls_certificate_distributor.h",
"lib/security/credentials/tls/grpc_tls_certificate_provider.h",
"lib/security/credentials/tls/grpc_tls_certificate_verifier.h",
"lib/security/credentials/tls/grpc_tls_credentials_options.h",
"lib/security/credentials/tls/tls_credentials.h",
"lib/security/security_connector/tls/tls_security_connector.h",
],
external_deps = [
"absl/base:core_headers",
"absl/container:inlined_vector",
"absl/functional:bind_front",
"absl/log:check",
"absl/status",
"absl/status:statusor",
"absl/strings",
"absl/types:optional",
"libcrypto",
"libssl",
],
language = "c++",
deps = [
"arena_promise",
"channel_args",
"closure",
"error",
"iomgr_fwd",
"load_file",
"ref_counted",
"slice",
"slice_refcount",
"status_helper",
"unique_type_name",
"useful",
"//:api_trace",
"//:channel_arg_names",
"//:debug_location",
"//:exec_ctx",
"//:gpr",
"//:grpc_base",
"//:grpc_core_credentials_header",
"//:grpc_credentials_util",
"//:grpc_public_hdrs",
"//:grpc_security_base",
"//:grpc_trace",
"//:handshaker",
"//:iomgr",
"//:promise",
"//:ref_counted_ptr",
"//:tsi_base",
"//:tsi_ssl_credentials",
"//:tsi_ssl_session_cache",
],
)
grpc_cc_library(
name = "grpc_iam_credentials",
srcs = [
"lib/security/credentials/iam/iam_credentials.cc",
],
hdrs = [
"lib/security/credentials/iam/iam_credentials.h",
],
external_deps = [
"absl/log:check",
"absl/status:statusor",
"absl/strings",
"absl/strings:str_format",
"absl/types:optional",
],
language = "c++",
deps = [
"arena_promise",
"metadata_batch",
"slice",
"unique_type_name",
"useful",
"//:api_trace",
"//:exec_ctx",
"//:gpr",
"//:grpc_base",
"//:grpc_core_credentials_header",
"//:grpc_security_base",
"//:grpc_trace",
"//:promise",
"//:ref_counted_ptr",
],
)
grpc_cc_library(
name = "grpc_oauth2_credentials",
srcs = [
"lib/security/credentials/oauth2/oauth2_credentials.cc",
],
hdrs = [
"lib/security/credentials/oauth2/oauth2_credentials.h",
],
external_deps = [
"absl/log:check",
"absl/status",
"absl/status:statusor",
"absl/strings",
"absl/strings:str_format",
"absl/types:optional",
],
language = "c++",
deps = [
"activity",
"arena_promise",
"closure",
"context",
"error",
"error_utils",
"httpcli_ssl_credentials",
"json",
"json_reader",
"load_file",
"metadata_batch",
"poll",
"pollset_set",
"ref_counted",
"slice",
"slice_refcount",
"status_helper",
"time",
"unique_type_name",
"useful",
"//:api_trace",
"//:gpr",
"//:grpc_base",
"//:grpc_core_credentials_header",
"//:grpc_credentials_util",
"//:grpc_security_base",
"//:grpc_trace",
"//:httpcli",
"//:iomgr",
"//:orphanable",
"//:promise",
"//:ref_counted_ptr",
"//:uri_parser",
],
)
grpc_cc_library(
name = "grpc_external_account_credentials",
srcs = [
"lib/security/credentials/external/aws_external_account_credentials.cc",
"lib/security/credentials/external/aws_request_signer.cc",
"lib/security/credentials/external/external_account_credentials.cc",
"lib/security/credentials/external/file_external_account_credentials.cc",
"lib/security/credentials/external/url_external_account_credentials.cc",
],
hdrs = [
"lib/security/credentials/external/aws_external_account_credentials.h",
"lib/security/credentials/external/aws_request_signer.h",
"lib/security/credentials/external/external_account_credentials.h",
"lib/security/credentials/external/file_external_account_credentials.h",
"lib/security/credentials/external/url_external_account_credentials.h",
],
external_deps = [
"absl/log:check",
"absl/status",
"absl/status:statusor",
"absl/strings",
"absl/strings:str_format",
"absl/time",
"absl/types:optional",
"libcrypto",
],
language = "c++",
deps = [
"closure",
"env",
"error",
"error_utils",
"grpc_oauth2_credentials",
"httpcli_ssl_credentials",
"json",
"json_reader",
"json_writer",
"load_file",
"slice",
"slice_refcount",
"status_helper",
"time",
"//:gpr",
"//:grpc_base",
"//:grpc_core_credentials_header",
"//:grpc_credentials_util",
"//:grpc_security_base",
"//:httpcli",
"//:iomgr",
"//:orphanable",
"//:ref_counted_ptr",
"//:uri_parser",
],
)
grpc_cc_library(
name = "httpcli_ssl_credentials",
srcs = [
"lib/http/httpcli_security_connector.cc",
],
hdrs = [
"lib/http/httpcli_ssl_credentials.h",
],
external_deps = [
"absl/status",
"absl/strings",
"absl/types:optional",
],
language = "c++",
deps = [
"arena_promise",
"channel_args",
"closure",
"error",
"iomgr_fwd",
"unique_type_name",
"//:channel_arg_names",
"//:debug_location",
"//:exec_ctx",
"//:gpr",
"//:grpc_base",
"//:grpc_core_credentials_header",
"//:grpc_security_base",
"//:handshaker",
"//:iomgr",
"//:promise",
"//:ref_counted_ptr",
"//:tsi_base",
"//:tsi_ssl_credentials",
],
)
grpc_cc_library(
name = "tsi_ssl_types",
hdrs = [
"tsi/ssl_types.h",
],
external_deps = ["libssl"],
language = "c++",
deps = ["//:gpr_platform"],
)
# This target depends on RE2 and should not be linked into grpc by default for binary-size reasons.
grpc_cc_library(
name = "grpc_matchers",
srcs = [
"lib/matchers/matchers.cc",
],
hdrs = [
"lib/matchers/matchers.h",
],
external_deps = [
"absl/status",
"absl/status:statusor",
"absl/strings",
"absl/strings:str_format",
"absl/types:optional",
"re2",
],
language = "c++",
deps = ["//:gpr"],
)
# This target pulls in a dependency on RE2 and should not be linked into grpc by default for binary-size reasons.
grpc_cc_library(
name = "grpc_rbac_engine",
srcs = [
"lib/security/authorization/grpc_authorization_engine.cc",
"lib/security/authorization/matchers.cc",
"lib/security/authorization/rbac_policy.cc",
],
hdrs = [
"lib/security/authorization/grpc_authorization_engine.h",
"lib/security/authorization/matchers.h",
"lib/security/authorization/rbac_policy.h",
],
external_deps = [
"absl/log:check",
"absl/status",
"absl/status:statusor",
"absl/strings",
"absl/strings:str_format",
"absl/types:optional",
],
language = "c++",
deps = [
"grpc_audit_logging",
"grpc_authorization_base",
"grpc_matchers",
"resolved_address",
"//:gpr",
"//:grpc_base",
[EventEngine] Modify iomgr to allow creation of event engine clients and client side endpoints (#31661) * [WIP] EventEngine iomgr endpoint shims * [WIP] EventEngine::Endpoint iomgr shims for the PosixEventEngine * Util functions to help with posix engine listener implementation * sanity * update comments in posix_engine_listener_utils.h * review comments * iwyu * revert prev commit * iwyu * update build * update * regenerate projects * regenerate projects * minor fixes * update BUILD * sanity * update build * regenerate projects * fix unused parameter * sanity * update * sanity * regenerate_projects * remove unused variable * start * update * regenerate_projects * sanity * update * fixes * update * regenerate_projects * update * fix sanity and msan failure * more fixes * build failure * update * fix * sanity * fixes * update * regenerate projects * fix sanity * review comments * An EventEngine subclass to be implemented by all posix based event engines * sanity * comments * update * review comments * re-word * fix * update * review comments * regenerate projects * syntax fix * add lock free event benchmark * releasable mutex lock * fix build isue * update * start * regenerate projects * update * fix * windows build * update * windows portability issue * update * update * update * update * format * update * update * update * update * update * fix sanity * regenerate projects * update * iwyu * Fix resolved address length related bugs in tcp_socket_utils and listener_utils * iwyu * cleanup src/core/lib/event_engine/tcp_socket_utils.cc * iwyu * fix * regenerate projects * fix sanity * re-write endpoint shim * more re-write * cleanup * update * review comments * build issue * more build issue fixes plus adding event_engine_trace * even more build issue fixes * iwyu * add static_cast * update * remove redundant code * update * deduplicate * iwyu * Fix review comments and regenerate_projects * sanity * review comments * fix include guards Co-authored-by: AJ Heller <hork@google.com>
2 years ago
"//:parse_address",
"//:sockaddr_utils",
],
)
grpc_cc_library(
name = "json",
hdrs = [
"lib/json/json.h",
],
deps = ["//:gpr"],
)
grpc_cc_library(
name = "json_reader",
srcs = [
"lib/json/json_reader.cc",
],
hdrs = [
"lib/json/json_reader.h",
],
external_deps = [
"absl/base:core_headers",
"absl/log:check",
"absl/status",
"absl/status:statusor",
"absl/strings",
"absl/strings:str_format",
"absl/types:variant",
],
visibility = ["@grpc:json_reader_legacy"],
deps = [
"json",
"match",
"//:gpr",
],
)
grpc_cc_library(
name = "json_writer",
srcs = [
"lib/json/json_writer.cc",
],
hdrs = [
"lib/json/json_writer.h",
],
external_deps = ["absl/strings"],
deps = [
"json",
"//:gpr",
],
)
grpc_cc_library(
name = "json_util",
srcs = ["lib/json/json_util.cc"],
hdrs = ["lib/json/json_util.h"],
external_deps = ["absl/strings"],
deps = [
"error",
"json",
"json_args",
"json_object_loader",
"no_destruct",
"time",
"validation_errors",
"//:gpr",
],
)
grpc_cc_library(
name = "json_args",
hdrs = ["lib/json/json_args.h"],
external_deps = ["absl/strings"],
deps = ["//:gpr"],
)
grpc_cc_library(
name = "json_object_loader",
srcs = ["lib/json/json_object_loader.cc"],
hdrs = ["lib/json/json_object_loader.h"],
external_deps = [
"absl/meta:type_traits",
"absl/status",
"absl/status:statusor",
"absl/strings",
"absl/types:optional",
],
deps = [
"json",
"json_args",
"no_destruct",
"time",
"validation_errors",
"//:gpr",
"//:ref_counted_ptr",
],
)
grpc_cc_library(
name = "json_channel_args",
hdrs = ["lib/json/json_channel_args.h"],
external_deps = [
"absl/strings",
"absl/types:optional",
],
deps = [
"channel_args",
"json_args",
"//:gpr",
],
)
grpc_cc_library(
name = "idle_filter_state",
srcs = [
"ext/filters/channel_idle/idle_filter_state.cc",
],
hdrs = [
"ext/filters/channel_idle/idle_filter_state.h",
],
language = "c++",
deps = ["//:gpr_platform"],
)
grpc_cc_library(
name = "grpc_channel_idle_filter",
srcs = [
"ext/filters/channel_idle/legacy_channel_idle_filter.cc",
],
hdrs = [
"ext/filters/channel_idle/legacy_channel_idle_filter.h",
],
external_deps = [
"absl/base:core_headers",
"absl/log:check",
"absl/meta:type_traits",
"absl/random",
"absl/status",
"absl/status:statusor",
"absl/types:optional",
],
deps = [
"activity",
"arena_promise",
"channel_args",
"channel_fwd",
"channel_stack_type",
"closure",
"connectivity_state",
"error",
"exec_ctx_wakeup_scheduler",
"experiments",
"http2_errors",
"idle_filter_state",
"loop",
"metadata_batch",
"no_destruct",
"per_cpu",
"poll",
"single_set_ptr",
"sleep",
"status_helper",
"time",
"try_seq",
"//:channel_arg_names",
"//:config",
"//:debug_location",
"//:exec_ctx",
"//:gpr",
"//:grpc_base",
"//:grpc_trace",
"//:orphanable",
"//:promise",
"//:ref_counted_ptr",
],
)
grpc_cc_library(
name = "grpc_client_authority_filter",
srcs = [
"ext/filters/http/client_authority_filter.cc",
],
hdrs = [
"ext/filters/http/client_authority_filter.h",
],
external_deps = [
"absl/status",
"absl/status:statusor",
"absl/strings",
"absl/types:optional",
],
language = "c++",
deps = [
"arena_promise",
"channel_args",
"channel_fwd",
"channel_stack_type",
"metadata_batch",
"slice",
"//:channel_arg_names",
"//:config",
"//:gpr_platform",
"//:grpc_base",
"//:grpc_security_base",
],
)
grpc_cc_library(
name = "grpc_message_size_filter",
srcs = [
"ext/filters/message_size/message_size_filter.cc",
],
hdrs = [
"ext/filters/message_size/message_size_filter.h",
],
external_deps = [
"absl/status:statusor",
"absl/strings",
"absl/strings:str_format",
"absl/types:optional",
],
language = "c++",
deps = [
"activity",
"arena",
"arena_promise",
"channel_args",
"channel_fwd",
"channel_stack_type",
"context",
"grpc_service_config",
"json",
"json_args",
"json_object_loader",
"latch",
"metadata_batch",
"race",
"service_config_parser",
"slice",
"slice_buffer",
"validation_errors",
"//:call_trace",
"//:channel_arg_names",
"//:config",
"//:gpr",
"//:grpc_base",
"//:grpc_public_hdrs",
"//:grpc_trace",
"//:legacy_context",
],
)
grpc_cc_library(
name = "grpc_fault_injection_filter",
srcs = [
"ext/filters/fault_injection/fault_injection_filter.cc",
"ext/filters/fault_injection/fault_injection_service_config_parser.cc",
],
hdrs = [
"ext/filters/fault_injection/fault_injection_filter.h",
"ext/filters/fault_injection/fault_injection_service_config_parser.h",
],
external_deps = [
"absl/base:core_headers",
"absl/meta:type_traits",
"absl/random",
"absl/status",
"absl/status:statusor",
"absl/strings",
"absl/types:optional",
],
language = "c++",
deps = [
"arena_promise",
"channel_args",
"channel_fwd",
"context",
"grpc_service_config",
"json",
"json_args",
"json_object_loader",
"metadata_batch",
"service_config_parser",
"sleep",
"time",
"try_seq",
"validation_errors",
"//:config",
"//:gpr",
"//:grpc_base",
"//:grpc_public_hdrs",
"//:grpc_trace",
"//:legacy_context",
],
)
grpc_cc_library(
name = "grpc_rbac_filter",
srcs = [
"ext/filters/rbac/rbac_filter.cc",
"ext/filters/rbac/rbac_service_config_parser.cc",
],
hdrs = [
"ext/filters/rbac/rbac_filter.h",
"ext/filters/rbac/rbac_service_config_parser.h",
],
external_deps = [
"absl/status",
"absl/status:statusor",
"absl/strings",
"absl/types:optional",
],
language = "c++",
deps = [
"arena_promise",
"channel_args",
"channel_fwd",
"context",
"error",
"grpc_audit_logging",
"grpc_authorization_base",
"grpc_matchers",
"grpc_rbac_engine",
"grpc_service_config",
"json",
"json_args",
"json_object_loader",
"metadata_batch",
"service_config_parser",
"validation_errors",
"//:config",
"//:gpr",
"//:grpc_base",
"//:grpc_security_base",
"//:legacy_context",
"//:promise",
],
)
grpc_cc_library(
name = "grpc_stateful_session_filter",
srcs = [
"ext/filters/stateful_session/stateful_session_filter.cc",
"ext/filters/stateful_session/stateful_session_service_config_parser.cc",
],
hdrs = [
"ext/filters/stateful_session/stateful_session_filter.h",
"ext/filters/stateful_session/stateful_session_service_config_parser.h",
],
external_deps = [
"absl/log:check",
"absl/status:statusor",
"absl/strings",
"absl/types:optional",
],
language = "c++",
deps = [
"arena",
"arena_promise",
"channel_args",
"channel_fwd",
"context",
"grpc_resolver_xds_attributes",
"grpc_service_config",
"json",
"json_args",
"json_object_loader",
"map",
"metadata_batch",
"pipe",
"ref_counted_string",
"service_config_parser",
"slice",
"time",
"unique_type_name",
"validation_errors",
"//:config",
"//:gpr",
"//:grpc_base",
"//:grpc_trace",
"//:legacy_context",
],
)
grpc_cc_library(
name = "grpc_lb_policy_grpclb",
srcs = [
"load_balancing/grpclb/client_load_reporting_filter.cc",
"load_balancing/grpclb/grpclb.cc",
"load_balancing/grpclb/grpclb_client_stats.cc",
"load_balancing/grpclb/load_balancer_api.cc",
],
hdrs = [
"load_balancing/grpclb/client_load_reporting_filter.h",
"load_balancing/grpclb/grpclb.h",
"load_balancing/grpclb/grpclb_client_stats.h",
"load_balancing/grpclb/load_balancer_api.h",
],
external_deps = [
"absl/base:core_headers",
"absl/container:inlined_vector",
"absl/functional:function_ref",
"absl/log:check",
"absl/status",
"absl/status:statusor",
"absl/strings",
"absl/strings:str_format",
"absl/types:optional",
"absl/types:variant",
"@com_google_protobuf//upb:base",
"@com_google_protobuf//upb:mem",
],
language = "c++",
deps = [
"arena",
"arena_promise",
"channel_args",
"channel_fwd",
"channel_stack_type",
"closure",
"connectivity_state",
"context",
"delegating_helper",
"error",
"experiments",
"gpr_atm",
"grpc_sockaddr",
"json",
"json_args",
"json_object_loader",
"lb_policy",
"lb_policy_factory",
"lb_policy_registry",
"map",
"metadata_batch",
"pipe",
"pollset_set",
"ref_counted",
"resolved_address",
"slice",
"slice_refcount",
"status_helper",
"subchannel_interface",
"time",
"useful",
"validation_errors",
"//:backoff",
"//:channel",
"//:channel_arg_names",
"//:channel_create",
"//:channelz",
"//:config",
"//:debug_location",
"//:endpoint_addresses",
"//:exec_ctx",
"//:gpr",
"//:grpc_base",
"//:grpc_client_channel",
"//:grpc_grpclb_balancer_addresses",
"//:grpc_lb_upb",
"//:grpc_public_hdrs",
"//:grpc_resolver",
"//:grpc_resolver_fake",
"//:grpc_security_base",
"//:grpc_trace",
"//:lb_child_policy_handler",
"//:orphanable",
"//:protobuf_duration_upb",
"//:protobuf_timestamp_upb",
"//:ref_counted_ptr",
"//:sockaddr_utils",
"//:work_serializer",
],
)
grpc_cc_library(
name = "random_early_detection",
srcs = [
"lib/backoff/random_early_detection.cc",
],
hdrs = [
"lib/backoff/random_early_detection.h",
],
external_deps = [
"absl/random:bit_gen_ref",
"absl/random:distributions",
],
deps = ["//:gpr_platform"],
)
grpc_cc_library(
name = "grpc_backend_metric_data",
hdrs = [
"load_balancing/backend_metric_data.h",
],
external_deps = ["absl/strings"],
language = "c++",
deps = ["//:gpr_platform"],
)
grpc_cc_library(
name = "grpc_backend_metric_provider",
hdrs = [
"ext/filters/backend_metrics/backend_metric_provider.h",
],
language = "c++",
)
grpc_cc_library(
name = "grpc_lb_policy_rls",
srcs = [
"load_balancing/rls/rls.cc",
],
hdrs = [
"load_balancing/rls/rls.h",
],
external_deps = [
"absl/base:core_headers",
"absl/hash",
"absl/log:check",
"absl/random",
"absl/status",
"absl/status:statusor",
"absl/strings",
"absl/strings:str_format",
"absl/types:optional",
"@com_google_protobuf//upb:base",
"@com_google_protobuf//upb:mem",
],
language = "c++",
deps = [
"channel_args",
"closure",
"connectivity_state",
"delegating_helper",
"dual_ref_counted",
"error",
"error_utils",
"grpc_fake_credentials",
"json",
"json_args",
"json_object_loader",
"json_writer",
"lb_policy",
"lb_policy_factory",
"lb_policy_registry",
"match",
"metrics",
"pollset_set",
"slice",
"slice_refcount",
"status_helper",
"time",
"uuid_v4",
"validation_errors",
"//:backoff",
"//:channel",
"//:channel_arg_names",
"//:channel_create",
"//:channelz",
"//:config",
"//:debug_location",
"//:endpoint_addresses",
"//:exec_ctx",
"//:gpr",
"//:grpc_base",
"//:grpc_client_channel",
"//:grpc_public_hdrs",
"//:grpc_resolver",
"//:grpc_security_base",
"//:grpc_service_config_impl",
"//:grpc_trace",
"//:lb_child_policy_handler",
"//:orphanable",
"//:ref_counted_ptr",
"//:rls_upb",
"//:work_serializer",
],
)
grpc_cc_library(
name = "upb_utils",
hdrs = [
"ext/xds/upb_utils.h",
],
external_deps = [
"absl/strings",
"@com_google_protobuf//upb:base",
],
language = "c++",
deps = ["//:gpr_platform"],
)
grpc_cc_library(
name = "xds_enabled_server",
hdrs = [
"ext/xds/xds_enabled_server.h",
],
language = "c++",
)
grpc_cc_library(
name = "grpc_xds_client",
srcs = [
"ext/xds/certificate_provider_store.cc",
"ext/xds/file_watcher_certificate_provider_factory.cc",
"ext/xds/xds_audit_logger_registry.cc",
"ext/xds/xds_bootstrap_grpc.cc",
"ext/xds/xds_certificate_provider.cc",
"ext/xds/xds_client_grpc.cc",
"ext/xds/xds_cluster.cc",
"ext/xds/xds_cluster_specifier_plugin.cc",
"ext/xds/xds_common_types.cc",
"ext/xds/xds_endpoint.cc",
"ext/xds/xds_health_status.cc",
"ext/xds/xds_http_fault_filter.cc",
"ext/xds/xds_http_filters.cc",
"ext/xds/xds_http_rbac_filter.cc",
"ext/xds/xds_http_stateful_session_filter.cc",
"ext/xds/xds_lb_policy_registry.cc",
"ext/xds/xds_listener.cc",
"ext/xds/xds_route_config.cc",
"ext/xds/xds_routing.cc",
"ext/xds/xds_transport_grpc.cc",
"lib/security/credentials/xds/xds_credentials.cc",
],
hdrs = [
"ext/xds/certificate_provider_store.h",
"ext/xds/file_watcher_certificate_provider_factory.h",
"ext/xds/xds_audit_logger_registry.h",
"ext/xds/xds_bootstrap_grpc.h",
"ext/xds/xds_certificate_provider.h",
"ext/xds/xds_client_grpc.h",
"ext/xds/xds_cluster.h",
"ext/xds/xds_cluster_specifier_plugin.h",
"ext/xds/xds_common_types.h",
"ext/xds/xds_endpoint.h",
"ext/xds/xds_health_status.h",
"ext/xds/xds_http_fault_filter.h",
"ext/xds/xds_http_filters.h",
"ext/xds/xds_http_rbac_filter.h",
"ext/xds/xds_http_stateful_session_filter.h",
"ext/xds/xds_lb_policy_registry.h",
"ext/xds/xds_listener.h",
"ext/xds/xds_route_config.h",
"ext/xds/xds_routing.h",
"ext/xds/xds_transport_grpc.h",
"lib/security/credentials/xds/xds_credentials.h",
],
external_deps = [
"absl/base:core_headers",
"absl/cleanup",
"absl/functional:bind_front",
"absl/log:check",
"absl/memory",
Second attempt: client channel: don't hold mutexes while calling the ConfigSelector or the LB picker (#32326) Original attempt was #31973, reverted in #32324 due to test flakiness. There were two problems causing test flakiness here. The first problem was that, upon resolver error, we were dispatching an async callback to re-process each of the queued picks *before* we updated the channel's connectivity state, which meant that the queued picks might be re-processed in another thread before the new connectivity state was set, so tests that expected the state to be TRANSIENT_FAILURE once RPCs failed might not see the expected state. The second problem affected the xDS ring hash tests, and it's a bit more involved to explain. We have an e2e test that simulates an aggregate cluster failover from a primary cluster using ring_hash at startup. The primary cluster has two addresses, both of which are unreachable when the client starts up, so the client should immediately fail over to the secondary cluster, which does have reachable endpoints. The test requires that no RPCs are failed while this failover occurs. The original PR made this test flaky. The problem here was caused by a combination of two factors: 1. Prior to the original PR, when the picker was updated (which happens inside the WorkSerializer), we re-processed previously queued picks synchronously, so it was not possible for another subchannel connectivity state update (which also happens in the WorkSerializer) to be processed between the time that we updated the picker and the time that we re-processed the previously queued picks. The original PR changed this such that the queued picks are re-processed asynchronously (outside of the WorkSerializer), so it is now possible for a subchannel connectivity state update to be processed between when the picker is updated and when we re-process the previously queued picks. 2. Unlike most LB policies, where the picker does not see updated subchannel connectivity states until a new picker is created, the ring_hash picker gets the subchannel connectivity states from the LB policy via a lock, so it can wind up seeing the new states before it gets updated. This means that when a subchannel connectivity state update is processed by the ring_hash policy in the WorkSerializer, it will immediately be seen by the existing picker, even without a picker update. With those two points in mind, the sequence of events in the failing test were as follows: 1. The pick is attempted in the ring_hash picker for the primary cluster. This causes the first subchannel to attempt to connect. 2. The subchannel transitions from IDLE to CONNECTING. A new picker is returned due to the subchannel connectivity state change, and the channel retries the queued pick. The retried pick is done asynchronously, but in this case it does not matter: the call will be re-queued. 3. The connection attempt fails, and the subchannel reports TRANSIENT_FAILURE. A new picker is again returned, and the channel retries the queued pick. The retried pick is done asynchronously, but in this case it does not matter: this causes the picker to trigger a connection attempt for the second subchannel. 4. The second subchannel transitions from IDLE to CONNECTING. A new picker is again returned, and the channel retries the queued pick. The retried pick is done asynchronously, and in this case it *does* matter. 5. The second subchannel now transitions to TRANSIENT_FAILURE. The ring_hash policy will now report TRANSIENT_FAILURE, but before it can finish that... 6. ...In another thread, the channel now tries to re-process the queued pick using the CONNECTING picker from step 4. However, because the ring_hash policy has already seen the TRANSIENT_FAILURE report from the second subchannel, that picker will now fail the pick instead of queuing it. After discussion with @ejona86 and @dfawley (since this bug actually exists in Java and Go as well), we agreed that the right solution is to change the ring_hash picker to contain its own copy of the subchannel connectivity state information, rather than sharing that information with the LB policy using synchronization.
2 years ago
"absl/random",
"absl/status",
"absl/status:statusor",
"absl/strings",
"absl/strings:str_format",
"absl/synchronization",
"absl/types:optional",
"absl/types:span",
"absl/types:variant",
"@com_google_protobuf//upb:base",
"@com_google_protobuf//upb:mem",
"@com_google_protobuf//upb:text",
"@com_google_protobuf//upb:json",
"re2",
"@com_google_protobuf//upb:reflection",
"@com_google_protobuf//upb:message",
],
language = "c++",
tags = ["nofixdeps"],
deps = [
"certificate_provider_factory",
"certificate_provider_registry",
"channel_args",
"channel_creds_registry",
"channel_fwd",
"closure",
"connectivity_state",
"default_event_engine",
"env",
"envoy_admin_upb",
"envoy_config_cluster_upb",
"envoy_config_cluster_upbdefs",
"envoy_config_core_upb",
"envoy_config_endpoint_upb",
"envoy_config_endpoint_upbdefs",
"envoy_config_listener_upb",
"envoy_config_listener_upbdefs",
"envoy_config_rbac_upb",
"envoy_config_route_upb",
"envoy_config_route_upbdefs",
"envoy_extensions_clusters_aggregate_upb",
"envoy_extensions_clusters_aggregate_upbdefs",
"envoy_extensions_filters_common_fault_upb",
"envoy_extensions_filters_http_fault_upb",
"envoy_extensions_filters_http_fault_upbdefs",
"envoy_extensions_filters_http_rbac_upb",
"envoy_extensions_filters_http_rbac_upbdefs",
"envoy_extensions_filters_http_router_upb",
"envoy_extensions_filters_http_router_upbdefs",
"envoy_extensions_filters_http_stateful_session_upb",
"envoy_extensions_filters_http_stateful_session_upbdefs",
"envoy_extensions_filters_network_http_connection_manager_upb",
"envoy_extensions_filters_network_http_connection_manager_upbdefs",
"envoy_extensions_http_stateful_session_cookie_upb",
"envoy_extensions_http_stateful_session_cookie_upbdefs",
"envoy_extensions_load_balancing_policies_client_side_weighted_round_robin_upb",
"envoy_extensions_load_balancing_policies_pick_first_upb",
"envoy_extensions_load_balancing_policies_ring_hash_upb",
"envoy_extensions_load_balancing_policies_wrr_locality_upb",
"envoy_extensions_transport_sockets_tls_upb",
"envoy_extensions_transport_sockets_tls_upbdefs",
"envoy_extensions_upstreams_http_upb",
"envoy_extensions_upstreams_http_upbdefs",
"envoy_service_discovery_upb",
"envoy_service_discovery_upbdefs",
"envoy_service_load_stats_upb",
"envoy_service_load_stats_upbdefs",
"envoy_service_status_upb",
"envoy_service_status_upbdefs",
"envoy_type_http_upb",
"envoy_type_matcher_upb",
"envoy_type_upb",
"error",
"error_utils",
"google_rpc_status_upb",
"grpc_audit_logging",
"grpc_fake_credentials",
"grpc_fault_injection_filter",
"grpc_lb_policy_pick_first",
"grpc_lb_xds_channel_args",
"grpc_matchers",
"grpc_outlier_detection_header",
"grpc_rbac_filter",
"grpc_sockaddr",
"grpc_stateful_session_filter",
"grpc_tls_credentials",
"grpc_transport_chttp2_client_connector",
"init_internally",
"iomgr_fwd",
"json",
"json_args",
"json_object_loader",
"json_reader",
"json_util",
"json_writer",
"lb_policy_registry",
"load_file",
"match",
"metadata_batch",
"metrics",
"pollset_set",
"protobuf_any_upb",
"protobuf_duration_upb",
"protobuf_struct_upb",
"protobuf_struct_upbdefs",
"protobuf_timestamp_upb",
"protobuf_wrappers_upb",
"ref_counted",
"resolved_address",
"rls_config_upb",
"rls_config_upbdefs",
"slice",
"slice_refcount",
"status_conversion",
"status_helper",
"time",
"unique_type_name",
"upb_utils",
"useful",
"validation_errors",
"xds_type_upb",
"xds_type_upbdefs",
"//:channel",
"//:channel_arg_names",
"//:channel_create",
"//:config",
"//:debug_location",
"//:endpoint_addresses",
"//:exec_ctx",
"//:gpr",
"//:grpc_base",
"//:grpc_client_channel",
"//:grpc_core_credentials_header",
"//:grpc_credentials_util",
"//:grpc_public_hdrs",
"//:grpc_security_base",
"//:grpc_trace",
"//:iomgr",
"//:iomgr_timer",
"//:orphanable",
[EventEngine] Modify iomgr to allow creation of event engine clients and client side endpoints (#31661) * [WIP] EventEngine iomgr endpoint shims * [WIP] EventEngine::Endpoint iomgr shims for the PosixEventEngine * Util functions to help with posix engine listener implementation * sanity * update comments in posix_engine_listener_utils.h * review comments * iwyu * revert prev commit * iwyu * update build * update * regenerate projects * regenerate projects * minor fixes * update BUILD * sanity * update build * regenerate projects * fix unused parameter * sanity * update * sanity * regenerate_projects * remove unused variable * start * update * regenerate_projects * sanity * update * fixes * update * regenerate_projects * update * fix sanity and msan failure * more fixes * build failure * update * fix * sanity * fixes * update * regenerate projects * fix sanity * review comments * An EventEngine subclass to be implemented by all posix based event engines * sanity * comments * update * review comments * re-word * fix * update * review comments * regenerate projects * syntax fix * add lock free event benchmark * releasable mutex lock * fix build isue * update * start * regenerate projects * update * fix * windows build * update * windows portability issue * update * update * update * update * format * update * update * update * update * update * fix sanity * regenerate projects * update * iwyu * Fix resolved address length related bugs in tcp_socket_utils and listener_utils * iwyu * cleanup src/core/lib/event_engine/tcp_socket_utils.cc * iwyu * fix * regenerate projects * fix sanity * re-write endpoint shim * more re-write * cleanup * update * review comments * build issue * more build issue fixes plus adding event_engine_trace * even more build issue fixes * iwyu * add static_cast * update * remove redundant code * update * deduplicate * iwyu * Fix review comments and regenerate_projects * sanity * review comments * fix include guards Co-authored-by: AJ Heller <hork@google.com>
2 years ago
"//:parse_address",
"//:ref_counted_ptr",
"//:sockaddr_utils",
"//:tsi_ssl_credentials",
"//:uri_parser",
"//:work_serializer",
"//:xds_client",
],
)
grpc_cc_library(
name = "grpc_xds_channel_stack_modifier",
srcs = [
"server/xds_channel_stack_modifier.cc",
],
hdrs = [
"server/xds_channel_stack_modifier.h",
],
external_deps = ["absl/strings"],
language = "c++",
deps = [
"channel_args",
"channel_fwd",
"channel_init",
"channel_stack_type",
"ref_counted",
"useful",
"//:channel_stack_builder",
"//:config",
"//:gpr_platform",
"//:grpc_base",
"//:ref_counted_ptr",
],
)
grpc_cc_library(
name = "grpc_xds_server_config_fetcher",
srcs = [
"server/xds_server_config_fetcher.cc",
],
external_deps = [
"absl/base:core_headers",
"absl/log:check",
"absl/status",
"absl/status:statusor",
"absl/strings",
"absl/types:optional",
"absl/types:variant",
],
language = "c++",
deps = [
"channel_args",
"channel_args_preconditioning",
"channel_fwd",
"grpc_server_config_selector",
"grpc_server_config_selector_filter",
"grpc_service_config",
"grpc_sockaddr",
"grpc_tls_credentials",
"grpc_xds_channel_stack_modifier",
"grpc_xds_client",
"iomgr_fwd",
"match",
"metadata_batch",
"resolved_address",
"slice_refcount",
"unique_type_name",
"//:api_trace",
"//:config",
"//:debug_location",
"//:exec_ctx",
"//:gpr",
"//:grpc_base",
"//:grpc_core_credentials_header",
"//:grpc_public_hdrs",
"//:grpc_security_base",
"//:grpc_service_config_impl",
"//:grpc_trace",
"//:iomgr",
[EventEngine] Modify iomgr to allow creation of event engine clients and client side endpoints (#31661) * [WIP] EventEngine iomgr endpoint shims * [WIP] EventEngine::Endpoint iomgr shims for the PosixEventEngine * Util functions to help with posix engine listener implementation * sanity * update comments in posix_engine_listener_utils.h * review comments * iwyu * revert prev commit * iwyu * update build * update * regenerate projects * regenerate projects * minor fixes * update BUILD * sanity * update build * regenerate projects * fix unused parameter * sanity * update * sanity * regenerate_projects * remove unused variable * start * update * regenerate_projects * sanity * update * fixes * update * regenerate_projects * update * fix sanity and msan failure * more fixes * build failure * update * fix * sanity * fixes * update * regenerate projects * fix sanity * review comments * An EventEngine subclass to be implemented by all posix based event engines * sanity * comments * update * review comments * re-word * fix * update * review comments * regenerate projects * syntax fix * add lock free event benchmark * releasable mutex lock * fix build isue * update * start * regenerate projects * update * fix * windows build * update * windows portability issue * update * update * update * update * format * update * update * update * update * update * fix sanity * regenerate projects * update * iwyu * Fix resolved address length related bugs in tcp_socket_utils and listener_utils * iwyu * cleanup src/core/lib/event_engine/tcp_socket_utils.cc * iwyu * fix * regenerate projects * fix sanity * re-write endpoint shim * more re-write * cleanup * update * review comments * build issue * more build issue fixes plus adding event_engine_trace * even more build issue fixes * iwyu * add static_cast * update * remove redundant code * update * deduplicate * iwyu * Fix review comments and regenerate_projects * sanity * review comments * fix include guards Co-authored-by: AJ Heller <hork@google.com>
2 years ago
"//:parse_address",
"//:ref_counted_ptr",
"//:server",
"//:sockaddr_utils",
"//:uri_parser",
"//:xds_client",
],
)
grpc_cc_library(
name = "channel_creds_registry_init",
srcs = [
"lib/security/credentials/channel_creds_registry_init.cc",
],
external_deps = ["absl/strings"],
language = "c++",
deps = [
"channel_creds_registry",
"grpc_fake_credentials",
"grpc_google_default_credentials",
"grpc_tls_credentials",
"json",
"json_args",
"json_object_loader",
"time",
"validation_errors",
"//:config",
"//:gpr",
"//:gpr_platform",
"//:grpc_core_credentials_header",
"//:grpc_security_base",
"//:ref_counted_ptr",
],
)
grpc_cc_library(
name = "grpc_lb_policy_cds",
srcs = [
"load_balancing/xds/cds.cc",
],
external_deps = [
"absl/log:check",
"absl/status",
"absl/status:statusor",
"absl/strings",
"absl/types:optional",
"absl/types:variant",
],
language = "c++",
deps = [
"channel_args",
"delegating_helper",
"env",
"grpc_lb_address_filtering",
"grpc_lb_xds_channel_args",
"grpc_outlier_detection_header",
"grpc_xds_client",
"json",
"json_args",
"json_object_loader",
"json_writer",
"lb_policy",
"lb_policy_factory",
"lb_policy_registry",
"match",
"pollset_set",
"time",
"unique_type_name",
"xds_dependency_manager",
"//:config",
"//:debug_location",
"//:gpr",
"//:grpc_base",
"//:grpc_security_base",
"//:grpc_trace",
"//:orphanable",
"//:ref_counted_ptr",
"//:work_serializer",
"//:xds_client",
],
)
grpc_cc_library(
name = "grpc_lb_xds_channel_args",
hdrs = [
"load_balancing/xds/xds_channel_args.h",
],
language = "c++",
deps = [
"//:endpoint_addresses",
"//:gpr_platform",
],
)
grpc_cc_library(
name = "grpc_lb_policy_xds_cluster_impl",
srcs = [
"load_balancing/xds/xds_cluster_impl.cc",
],
external_deps = [
"absl/base:core_headers",
"absl/log:check",
"absl/status",
"absl/status:statusor",
"absl/strings",
"absl/types:optional",
"absl/types:variant",
],
language = "c++",
deps = [
"channel_args",
"client_channel_internal_header",
"connectivity_state",
"delegating_helper",
"grpc_backend_metric_data",
"grpc_lb_xds_channel_args",
"grpc_xds_client",
"json",
"json_args",
"json_object_loader",
"lb_policy",
"lb_policy_factory",
"lb_policy_registry",
"match",
"pollset_set",
"ref_counted",
"ref_counted_string",
"resolved_address",
"subchannel_interface",
"validation_errors",
"xds_dependency_manager",
"//:call_tracer",
"//:config",
"//:debug_location",
"//:endpoint_addresses",
"//:gpr",
"//:grpc_base",
"//:grpc_client_channel",
"//:grpc_trace",
"//:lb_child_policy_handler",
"//:orphanable",
"//:ref_counted_ptr",
"//:xds_client",
],
)
grpc_cc_library(
name = "grpc_lb_policy_xds_cluster_manager",
srcs = [
"load_balancing/xds/xds_cluster_manager.cc",
],
external_deps = [
"absl/status",
"absl/status:statusor",
"absl/strings",
"absl/types:optional",
],
language = "c++",
deps = [
"channel_args",
"client_channel_internal_header",
"connectivity_state",
"delegating_helper",
"grpc_resolver_xds_attributes",
"json",
"json_args",
"json_object_loader",
"lb_policy",
"lb_policy_factory",
"lb_policy_registry",
"pollset_set",
"time",
"validation_errors",
"//:config",
"//:debug_location",
"//:endpoint_addresses",
"//:exec_ctx",
"//:gpr",
"//:gpr_platform",
"//:grpc_base",
"//:grpc_client_channel",
"//:grpc_trace",
"//:lb_child_policy_handler",
"//:orphanable",
"//:ref_counted_ptr",
"//:work_serializer",
],
)
grpc_cc_library(
name = "grpc_lb_policy_xds_wrr_locality",
srcs = [
"load_balancing/xds/xds_wrr_locality.cc",
],
external_deps = [
"absl/status",
"absl/status:statusor",
"absl/strings",
"absl/types:optional",
],
language = "c++",
deps = [
"channel_args",
"delegating_helper",
"grpc_lb_xds_channel_args",
"json",
"json_args",
"json_object_loader",
"json_writer",
"lb_policy",
"lb_policy_factory",
"lb_policy_registry",
"pollset_set",
"ref_counted_string",
"validation_errors",
"//:config",
"//:debug_location",
"//:endpoint_addresses",
"//:gpr",
"//:grpc_base",
"//:grpc_trace",
"//:orphanable",
"//:ref_counted_ptr",
"//:xds_client",
],
)
grpc_cc_library(
name = "grpc_lb_address_filtering",
srcs = [
"load_balancing/address_filtering.cc",
],
hdrs = [
"load_balancing/address_filtering.h",
],
external_deps = [
"absl/functional:function_ref",
"absl/status:statusor",
"absl/strings",
],
language = "c++",
deps = [
"channel_args",
"ref_counted",
"ref_counted_string",
"resolved_address",
"//:endpoint_addresses",
"//:gpr_platform",
"//:ref_counted_ptr",
],
)
grpc_cc_library(
name = "health_check_client",
srcs = [
"load_balancing/health_check_client.cc",
],
hdrs = [
"load_balancing/health_check_client.h",
"load_balancing/health_check_client_internal.h",
],
external_deps = [
"absl/base:core_headers",
"absl/log:check",
"absl/status",
"absl/status:statusor",
"absl/strings",
"absl/types:optional",
"@com_google_protobuf//upb:base",
"@com_google_protobuf//upb:mem",
],
language = "c++",
deps = [
"channel_args",
"client_channel_internal_header",
"closure",
"connectivity_state",
"error",
"iomgr_fwd",
"pollset_set",
"slice",
"subchannel_interface",
"unique_type_name",
"//:channel_arg_names",
"//:channelz",
"//:debug_location",
"//:exec_ctx",
"//:gpr",
"//:grpc_base",
"//:grpc_client_channel",
"//:grpc_health_upb",
"//:grpc_public_hdrs",
"//:grpc_trace",
"//:orphanable",
"//:ref_counted_ptr",
"//:sockaddr_utils",
"//:work_serializer",
],
)
grpc_cc_library(
name = "lb_endpoint_list",
srcs = [
"load_balancing/endpoint_list.cc",
],
hdrs = [
"load_balancing/endpoint_list.h",
],
external_deps = [
"absl/functional:function_ref",
"absl/log:check",
"absl/status",
"absl/status:statusor",
"absl/types:optional",
],
language = "c++",
deps = [
"channel_args",
"delegating_helper",
"grpc_lb_policy_pick_first",
"json",
"lb_policy",
"lb_policy_registry",
"pollset_set",
"resolved_address",
"subchannel_interface",
"//:config",
"//:debug_location",
"//:endpoint_addresses",
"//:gpr",
"//:grpc_base",
"//:orphanable",
"//:ref_counted_ptr",
"//:work_serializer",
],
)
grpc_cc_library(
name = "grpc_lb_policy_pick_first",
srcs = [
"load_balancing/pick_first/pick_first.cc",
],
hdrs = [
"load_balancing/pick_first/pick_first.h",
],
external_deps = [
"absl/algorithm:container",
"absl/log:check",
"absl/random",
"absl/status",
"absl/status:statusor",
"absl/strings",
"absl/types:optional",
],
language = "c++",
deps = [
"channel_args",
"connectivity_state",
"experiments",
"health_check_client",
"iomgr_fwd",
"json",
"json_args",
"json_object_loader",
"lb_policy",
"lb_policy_factory",
"metrics",
"resolved_address",
"subchannel_interface",
"time",
"useful",
"//:channel_arg_names",
"//:config",
"//:debug_location",
"//:endpoint_addresses",
"//:exec_ctx",
"//:gpr",
"//:grpc_base",
"//:grpc_trace",
"//:orphanable",
"//:ref_counted_ptr",
"//:sockaddr_utils",
"//:work_serializer",
],
)
grpc_cc_library(
name = "down_cast",
hdrs = ["lib/gprpp/down_cast.h"],
external_deps = [
"absl/base:config",
"absl/log:check",
],
deps = ["//:gpr"],
)
grpc_cc_library(
name = "status_conversion",
srcs = ["lib/transport/status_conversion.cc"],
hdrs = ["lib/transport/status_conversion.h"],
deps = [
"http2_errors",
"time",
"//:gpr_platform",
"//:grpc_public_hdrs",
],
)
grpc_cc_library(
name = "error_utils",
srcs = ["lib/transport/error_utils.cc"],
hdrs = [
"lib/transport/error_utils.h",
],
external_deps = ["absl/status"],
deps = [
"error",
"http2_errors",
"status_conversion",
"status_helper",
"time",
"//:gpr",
"//:grpc_public_hdrs",
],
)
grpc_cc_library(
name = "connectivity_state",
srcs = [
"lib/transport/connectivity_state.cc",
],
hdrs = [
"lib/transport/connectivity_state.h",
],
external_deps = ["absl/status"],
deps = [
"closure",
"error",
"//:debug_location",
"//:exec_ctx",
"//:gpr",
"//:grpc_public_hdrs",
"//:grpc_trace",
"//:orphanable",
"//:ref_counted_ptr",
"//:work_serializer",
],
)
grpc_cc_library(
name = "xxhash_inline",
hdrs = ["lib/gprpp/xxhash_inline.h"],
external_deps = ["xxhash"],
language = "c++",
deps = ["//:gpr_platform"],
)
grpc_cc_library(
name = "grpc_lb_policy_ring_hash",
srcs = [
"load_balancing/ring_hash/ring_hash.cc",
],
hdrs = [
"load_balancing/ring_hash/ring_hash.h",
],
external_deps = [
"absl/base:core_headers",
"absl/container:inlined_vector",
"absl/log:check",
"absl/status",
"absl/status:statusor",
"absl/strings",
"absl/types:optional",
],
language = "c++",
deps = [
"channel_args",
"client_channel_internal_header",
"closure",
"connectivity_state",
"delegating_helper",
"error",
"grpc_lb_policy_pick_first",
"grpc_service_config",
"json",
"json_args",
"json_object_loader",
"lb_policy",
"lb_policy_factory",
"lb_policy_registry",
"pollset_set",
Second attempt: client channel: don't hold mutexes while calling the ConfigSelector or the LB picker (#32326) Original attempt was #31973, reverted in #32324 due to test flakiness. There were two problems causing test flakiness here. The first problem was that, upon resolver error, we were dispatching an async callback to re-process each of the queued picks *before* we updated the channel's connectivity state, which meant that the queued picks might be re-processed in another thread before the new connectivity state was set, so tests that expected the state to be TRANSIENT_FAILURE once RPCs failed might not see the expected state. The second problem affected the xDS ring hash tests, and it's a bit more involved to explain. We have an e2e test that simulates an aggregate cluster failover from a primary cluster using ring_hash at startup. The primary cluster has two addresses, both of which are unreachable when the client starts up, so the client should immediately fail over to the secondary cluster, which does have reachable endpoints. The test requires that no RPCs are failed while this failover occurs. The original PR made this test flaky. The problem here was caused by a combination of two factors: 1. Prior to the original PR, when the picker was updated (which happens inside the WorkSerializer), we re-processed previously queued picks synchronously, so it was not possible for another subchannel connectivity state update (which also happens in the WorkSerializer) to be processed between the time that we updated the picker and the time that we re-processed the previously queued picks. The original PR changed this such that the queued picks are re-processed asynchronously (outside of the WorkSerializer), so it is now possible for a subchannel connectivity state update to be processed between when the picker is updated and when we re-process the previously queued picks. 2. Unlike most LB policies, where the picker does not see updated subchannel connectivity states until a new picker is created, the ring_hash picker gets the subchannel connectivity states from the LB policy via a lock, so it can wind up seeing the new states before it gets updated. This means that when a subchannel connectivity state update is processed by the ring_hash policy in the WorkSerializer, it will immediately be seen by the existing picker, even without a picker update. With those two points in mind, the sequence of events in the failing test were as follows: 1. The pick is attempted in the ring_hash picker for the primary cluster. This causes the first subchannel to attempt to connect. 2. The subchannel transitions from IDLE to CONNECTING. A new picker is returned due to the subchannel connectivity state change, and the channel retries the queued pick. The retried pick is done asynchronously, but in this case it does not matter: the call will be re-queued. 3. The connection attempt fails, and the subchannel reports TRANSIENT_FAILURE. A new picker is again returned, and the channel retries the queued pick. The retried pick is done asynchronously, but in this case it does not matter: this causes the picker to trigger a connection attempt for the second subchannel. 4. The second subchannel transitions from IDLE to CONNECTING. A new picker is again returned, and the channel retries the queued pick. The retried pick is done asynchronously, and in this case it *does* matter. 5. The second subchannel now transitions to TRANSIENT_FAILURE. The ring_hash policy will now report TRANSIENT_FAILURE, but before it can finish that... 6. ...In another thread, the channel now tries to re-process the queued pick using the CONNECTING picker from step 4. However, because the ring_hash policy has already seen the TRANSIENT_FAILURE report from the second subchannel, that picker will now fail the pick instead of queuing it. After discussion with @ejona86 and @dfawley (since this bug actually exists in Java and Go as well), we agreed that the right solution is to change the ring_hash picker to contain its own copy of the subchannel connectivity state information, rather than sharing that information with the LB policy using synchronization.
2 years ago
"ref_counted",
"resolved_address",
"unique_type_name",
"validation_errors",
"xxhash_inline",
"//:channel_arg_names",
"//:config",
"//:debug_location",
"//:endpoint_addresses",
"//:exec_ctx",
"//:gpr",
"//:grpc_base",
"//:grpc_client_channel",
"//:grpc_trace",
"//:orphanable",
"//:ref_counted_ptr",
"//:sockaddr_utils",
"//:work_serializer",
],
)
grpc_cc_library(
name = "grpc_lb_policy_round_robin",
srcs = [
"load_balancing/round_robin/round_robin.cc",
],
external_deps = [
"absl/log:check",
"absl/meta:type_traits",
Second attempt: client channel: don't hold mutexes while calling the ConfigSelector or the LB picker (#32326) Original attempt was #31973, reverted in #32324 due to test flakiness. There were two problems causing test flakiness here. The first problem was that, upon resolver error, we were dispatching an async callback to re-process each of the queued picks *before* we updated the channel's connectivity state, which meant that the queued picks might be re-processed in another thread before the new connectivity state was set, so tests that expected the state to be TRANSIENT_FAILURE once RPCs failed might not see the expected state. The second problem affected the xDS ring hash tests, and it's a bit more involved to explain. We have an e2e test that simulates an aggregate cluster failover from a primary cluster using ring_hash at startup. The primary cluster has two addresses, both of which are unreachable when the client starts up, so the client should immediately fail over to the secondary cluster, which does have reachable endpoints. The test requires that no RPCs are failed while this failover occurs. The original PR made this test flaky. The problem here was caused by a combination of two factors: 1. Prior to the original PR, when the picker was updated (which happens inside the WorkSerializer), we re-processed previously queued picks synchronously, so it was not possible for another subchannel connectivity state update (which also happens in the WorkSerializer) to be processed between the time that we updated the picker and the time that we re-processed the previously queued picks. The original PR changed this such that the queued picks are re-processed asynchronously (outside of the WorkSerializer), so it is now possible for a subchannel connectivity state update to be processed between when the picker is updated and when we re-process the previously queued picks. 2. Unlike most LB policies, where the picker does not see updated subchannel connectivity states until a new picker is created, the ring_hash picker gets the subchannel connectivity states from the LB policy via a lock, so it can wind up seeing the new states before it gets updated. This means that when a subchannel connectivity state update is processed by the ring_hash policy in the WorkSerializer, it will immediately be seen by the existing picker, even without a picker update. With those two points in mind, the sequence of events in the failing test were as follows: 1. The pick is attempted in the ring_hash picker for the primary cluster. This causes the first subchannel to attempt to connect. 2. The subchannel transitions from IDLE to CONNECTING. A new picker is returned due to the subchannel connectivity state change, and the channel retries the queued pick. The retried pick is done asynchronously, but in this case it does not matter: the call will be re-queued. 3. The connection attempt fails, and the subchannel reports TRANSIENT_FAILURE. A new picker is again returned, and the channel retries the queued pick. The retried pick is done asynchronously, but in this case it does not matter: this causes the picker to trigger a connection attempt for the second subchannel. 4. The second subchannel transitions from IDLE to CONNECTING. A new picker is again returned, and the channel retries the queued pick. The retried pick is done asynchronously, and in this case it *does* matter. 5. The second subchannel now transitions to TRANSIENT_FAILURE. The ring_hash policy will now report TRANSIENT_FAILURE, but before it can finish that... 6. ...In another thread, the channel now tries to re-process the queued pick using the CONNECTING picker from step 4. However, because the ring_hash policy has already seen the TRANSIENT_FAILURE report from the second subchannel, that picker will now fail the pick instead of queuing it. After discussion with @ejona86 and @dfawley (since this bug actually exists in Java and Go as well), we agreed that the right solution is to change the ring_hash picker to contain its own copy of the subchannel connectivity state information, rather than sharing that information with the LB policy using synchronization.
2 years ago
"absl/random",
"absl/status",
"absl/status:statusor",
"absl/strings",
"absl/types:optional",
],
language = "c++",
deps = [
"channel_args",
"connectivity_state",
"json",
"lb_endpoint_list",
"lb_policy",
"lb_policy_factory",
"//:config",
"//:debug_location",
"//:endpoint_addresses",
"//:gpr",
"//:grpc_base",
"//:grpc_trace",
"//:orphanable",
"//:ref_counted_ptr",
"//:work_serializer",
],
)
grpc_cc_library(
name = "static_stride_scheduler",
srcs = [
"load_balancing/weighted_round_robin/static_stride_scheduler.cc",
],
hdrs = [
"load_balancing/weighted_round_robin/static_stride_scheduler.h",
],
external_deps = [
"absl/functional:any_invocable",
"absl/log:check",
"absl/types:optional",
"absl/types:span",
],
language = "c++",
deps = ["//:gpr"],
)
WRR: implement WRR LB policy (#31904) * WRR: port StaticStrideScheduler to OSS * WIP * Automated change: Fix sanity tests * fix build * remove unused aliases * fix another type mismatch * remove unnecessary include * move benchmarks to their own file, and don't run it on windows * Automated change: Fix sanity tests * add OOB reporting * generate_projects * clang-format * add config parser test * clang-tidy and minimize lock contention * add config defaults * add oob_reporting_period config field and add basic test * Automated change: Fix sanity tests * fix test * change test to use basic RR * WIP: started exposing peer address to LB policy API * first WRR test passing! * small cleanup * port RR fix to WRR * test helper refactoring * more test helper refactoring * WIP: trying to fix test to have the right weights * more WIP -- need to make pickers DualRefCounted * fix timer ref handling and get tests working * clang-format * iwyu and generate_projects * fix build * add test for OOB reporting * keep only READY subchannels in the picker * add file missed in a previous commit * fix sanity * iwyu * add weight expiration period * add tests for weight update period and OOB reporting period * Automated change: Fix sanity tests * lower bound for timer interval * consistently apply grpc_test_slowdown_factor() * cache time in test * add blackout_period tests * avoid some unnecessary copies * clang-format * add field to config test * simplify orca watcher tracking * attempt to fix build * iwyu * generate_projects * add "_experimental" suffix to policy name * WRR: update tests to cover qps plumbing * WIP * more WIP * basic WRR e2e test working * add OOB test * fix sanity * ignore duplicate addresses * Automated change: Fix sanity tests * add new tracer to doc/environment_variables.md * retain scheduler state across pickers * Automated change: Fix sanity tests * use separate mutexes for scheduler and timer * sort addresses to avoid index churn * remove fetch_sub for wrap around in RR case Co-authored-by: markdroth <markdroth@users.noreply.github.com>
2 years ago
grpc_cc_library(
name = "grpc_lb_policy_weighted_round_robin",
srcs = [
"load_balancing/weighted_round_robin/weighted_round_robin.cc",
WRR: implement WRR LB policy (#31904) * WRR: port StaticStrideScheduler to OSS * WIP * Automated change: Fix sanity tests * fix build * remove unused aliases * fix another type mismatch * remove unnecessary include * move benchmarks to their own file, and don't run it on windows * Automated change: Fix sanity tests * add OOB reporting * generate_projects * clang-format * add config parser test * clang-tidy and minimize lock contention * add config defaults * add oob_reporting_period config field and add basic test * Automated change: Fix sanity tests * fix test * change test to use basic RR * WIP: started exposing peer address to LB policy API * first WRR test passing! * small cleanup * port RR fix to WRR * test helper refactoring * more test helper refactoring * WIP: trying to fix test to have the right weights * more WIP -- need to make pickers DualRefCounted * fix timer ref handling and get tests working * clang-format * iwyu and generate_projects * fix build * add test for OOB reporting * keep only READY subchannels in the picker * add file missed in a previous commit * fix sanity * iwyu * add weight expiration period * add tests for weight update period and OOB reporting period * Automated change: Fix sanity tests * lower bound for timer interval * consistently apply grpc_test_slowdown_factor() * cache time in test * add blackout_period tests * avoid some unnecessary copies * clang-format * add field to config test * simplify orca watcher tracking * attempt to fix build * iwyu * generate_projects * add "_experimental" suffix to policy name * WRR: update tests to cover qps plumbing * WIP * more WIP * basic WRR e2e test working * add OOB test * fix sanity * ignore duplicate addresses * Automated change: Fix sanity tests * add new tracer to doc/environment_variables.md * retain scheduler state across pickers * Automated change: Fix sanity tests * use separate mutexes for scheduler and timer * sort addresses to avoid index churn * remove fetch_sub for wrap around in RR case Co-authored-by: markdroth <markdroth@users.noreply.github.com>
2 years ago
],
external_deps = [
"absl/base:core_headers",
"absl/log:check",
"absl/meta:type_traits",
WRR: implement WRR LB policy (#31904) * WRR: port StaticStrideScheduler to OSS * WIP * Automated change: Fix sanity tests * fix build * remove unused aliases * fix another type mismatch * remove unnecessary include * move benchmarks to their own file, and don't run it on windows * Automated change: Fix sanity tests * add OOB reporting * generate_projects * clang-format * add config parser test * clang-tidy and minimize lock contention * add config defaults * add oob_reporting_period config field and add basic test * Automated change: Fix sanity tests * fix test * change test to use basic RR * WIP: started exposing peer address to LB policy API * first WRR test passing! * small cleanup * port RR fix to WRR * test helper refactoring * more test helper refactoring * WIP: trying to fix test to have the right weights * more WIP -- need to make pickers DualRefCounted * fix timer ref handling and get tests working * clang-format * iwyu and generate_projects * fix build * add test for OOB reporting * keep only READY subchannels in the picker * add file missed in a previous commit * fix sanity * iwyu * add weight expiration period * add tests for weight update period and OOB reporting period * Automated change: Fix sanity tests * lower bound for timer interval * consistently apply grpc_test_slowdown_factor() * cache time in test * add blackout_period tests * avoid some unnecessary copies * clang-format * add field to config test * simplify orca watcher tracking * attempt to fix build * iwyu * generate_projects * add "_experimental" suffix to policy name * WRR: update tests to cover qps plumbing * WIP * more WIP * basic WRR e2e test working * add OOB test * fix sanity * ignore duplicate addresses * Automated change: Fix sanity tests * add new tracer to doc/environment_variables.md * retain scheduler state across pickers * Automated change: Fix sanity tests * use separate mutexes for scheduler and timer * sort addresses to avoid index churn * remove fetch_sub for wrap around in RR case Co-authored-by: markdroth <markdroth@users.noreply.github.com>
2 years ago
"absl/random",
"absl/status",
"absl/status:statusor",
"absl/strings",
"absl/types:optional",
"absl/types:variant",
WRR: implement WRR LB policy (#31904) * WRR: port StaticStrideScheduler to OSS * WIP * Automated change: Fix sanity tests * fix build * remove unused aliases * fix another type mismatch * remove unnecessary include * move benchmarks to their own file, and don't run it on windows * Automated change: Fix sanity tests * add OOB reporting * generate_projects * clang-format * add config parser test * clang-tidy and minimize lock contention * add config defaults * add oob_reporting_period config field and add basic test * Automated change: Fix sanity tests * fix test * change test to use basic RR * WIP: started exposing peer address to LB policy API * first WRR test passing! * small cleanup * port RR fix to WRR * test helper refactoring * more test helper refactoring * WIP: trying to fix test to have the right weights * more WIP -- need to make pickers DualRefCounted * fix timer ref handling and get tests working * clang-format * iwyu and generate_projects * fix build * add test for OOB reporting * keep only READY subchannels in the picker * add file missed in a previous commit * fix sanity * iwyu * add weight expiration period * add tests for weight update period and OOB reporting period * Automated change: Fix sanity tests * lower bound for timer interval * consistently apply grpc_test_slowdown_factor() * cache time in test * add blackout_period tests * avoid some unnecessary copies * clang-format * add field to config test * simplify orca watcher tracking * attempt to fix build * iwyu * generate_projects * add "_experimental" suffix to policy name * WRR: update tests to cover qps plumbing * WIP * more WIP * basic WRR e2e test working * add OOB test * fix sanity * ignore duplicate addresses * Automated change: Fix sanity tests * add new tracer to doc/environment_variables.md * retain scheduler state across pickers * Automated change: Fix sanity tests * use separate mutexes for scheduler and timer * sort addresses to avoid index churn * remove fetch_sub for wrap around in RR case Co-authored-by: markdroth <markdroth@users.noreply.github.com>
2 years ago
],
language = "c++",
deps = [
"channel_args",
"connectivity_state",
[client_channel] second attempt: SubchannelWrapper hops into WorkSerializer before destruction (#34321) Original PR was #34307, reverted in #34318 due to internal test failures. The first commit is a revert of the revert. The second commit contains the fix. The original idea here was that `SubchannelWrapper::Orphan()`, which is called when the strong refcount reaches 0, would take a new weak ref and then hop into the `WorkSerializer` before dropping that weak ref, thus ensuring that the `SubchannelWrapper` is destroyed inside the `WorkSerializer` (which is needed because the `SubchannelWrapper` dtor cleans up some state in the channel related to the subchannel). The problem is that `DualRefCounted<>::Unref()` itself actually increments the weak ref count before calling `Orphan()` and then decrements it afterwards. So in the case where the `SubchannelWrapper` is unreffed outside of the `WorkSerializer` and no other thread happens to be holding the `WorkSerializer`, the weak ref that we were taking in `Orphan()` was unreffed inline, which meant that it wasn't actually the last weak ref -- the last weak ref was the one taken by `DualRefCounted<>::Unref()`, and it wasn't released until after the `WorkSerializer` was released. To this this problem, we move the code from the `SubchannelWrapper` dtor that cleans up the channel's state into the `WorkSerializer` callback that is scheduled in `Orphan()`. Thus, regardless of whether or not the last weak ref is released inside of the `WorkSerializer`, we are definitely doing that cleanup inside the `WorkSerializer`, which is what we actually care about. Also adds an experiment to guard this behavior.
2 years ago
"experiments",
WRR: implement WRR LB policy (#31904) * WRR: port StaticStrideScheduler to OSS * WIP * Automated change: Fix sanity tests * fix build * remove unused aliases * fix another type mismatch * remove unnecessary include * move benchmarks to their own file, and don't run it on windows * Automated change: Fix sanity tests * add OOB reporting * generate_projects * clang-format * add config parser test * clang-tidy and minimize lock contention * add config defaults * add oob_reporting_period config field and add basic test * Automated change: Fix sanity tests * fix test * change test to use basic RR * WIP: started exposing peer address to LB policy API * first WRR test passing! * small cleanup * port RR fix to WRR * test helper refactoring * more test helper refactoring * WIP: trying to fix test to have the right weights * more WIP -- need to make pickers DualRefCounted * fix timer ref handling and get tests working * clang-format * iwyu and generate_projects * fix build * add test for OOB reporting * keep only READY subchannels in the picker * add file missed in a previous commit * fix sanity * iwyu * add weight expiration period * add tests for weight update period and OOB reporting period * Automated change: Fix sanity tests * lower bound for timer interval * consistently apply grpc_test_slowdown_factor() * cache time in test * add blackout_period tests * avoid some unnecessary copies * clang-format * add field to config test * simplify orca watcher tracking * attempt to fix build * iwyu * generate_projects * add "_experimental" suffix to policy name * WRR: update tests to cover qps plumbing * WIP * more WIP * basic WRR e2e test working * add OOB test * fix sanity * ignore duplicate addresses * Automated change: Fix sanity tests * add new tracer to doc/environment_variables.md * retain scheduler state across pickers * Automated change: Fix sanity tests * use separate mutexes for scheduler and timer * sort addresses to avoid index churn * remove fetch_sub for wrap around in RR case Co-authored-by: markdroth <markdroth@users.noreply.github.com>
2 years ago
"grpc_backend_metric_data",
"grpc_lb_policy_weighted_target",
WRR: implement WRR LB policy (#31904) * WRR: port StaticStrideScheduler to OSS * WIP * Automated change: Fix sanity tests * fix build * remove unused aliases * fix another type mismatch * remove unnecessary include * move benchmarks to their own file, and don't run it on windows * Automated change: Fix sanity tests * add OOB reporting * generate_projects * clang-format * add config parser test * clang-tidy and minimize lock contention * add config defaults * add oob_reporting_period config field and add basic test * Automated change: Fix sanity tests * fix test * change test to use basic RR * WIP: started exposing peer address to LB policy API * first WRR test passing! * small cleanup * port RR fix to WRR * test helper refactoring * more test helper refactoring * WIP: trying to fix test to have the right weights * more WIP -- need to make pickers DualRefCounted * fix timer ref handling and get tests working * clang-format * iwyu and generate_projects * fix build * add test for OOB reporting * keep only READY subchannels in the picker * add file missed in a previous commit * fix sanity * iwyu * add weight expiration period * add tests for weight update period and OOB reporting period * Automated change: Fix sanity tests * lower bound for timer interval * consistently apply grpc_test_slowdown_factor() * cache time in test * add blackout_period tests * avoid some unnecessary copies * clang-format * add field to config test * simplify orca watcher tracking * attempt to fix build * iwyu * generate_projects * add "_experimental" suffix to policy name * WRR: update tests to cover qps plumbing * WIP * more WIP * basic WRR e2e test working * add OOB test * fix sanity * ignore duplicate addresses * Automated change: Fix sanity tests * add new tracer to doc/environment_variables.md * retain scheduler state across pickers * Automated change: Fix sanity tests * use separate mutexes for scheduler and timer * sort addresses to avoid index churn * remove fetch_sub for wrap around in RR case Co-authored-by: markdroth <markdroth@users.noreply.github.com>
2 years ago
"json",
"json_args",
"json_object_loader",
"lb_endpoint_list",
WRR: implement WRR LB policy (#31904) * WRR: port StaticStrideScheduler to OSS * WIP * Automated change: Fix sanity tests * fix build * remove unused aliases * fix another type mismatch * remove unnecessary include * move benchmarks to their own file, and don't run it on windows * Automated change: Fix sanity tests * add OOB reporting * generate_projects * clang-format * add config parser test * clang-tidy and minimize lock contention * add config defaults * add oob_reporting_period config field and add basic test * Automated change: Fix sanity tests * fix test * change test to use basic RR * WIP: started exposing peer address to LB policy API * first WRR test passing! * small cleanup * port RR fix to WRR * test helper refactoring * more test helper refactoring * WIP: trying to fix test to have the right weights * more WIP -- need to make pickers DualRefCounted * fix timer ref handling and get tests working * clang-format * iwyu and generate_projects * fix build * add test for OOB reporting * keep only READY subchannels in the picker * add file missed in a previous commit * fix sanity * iwyu * add weight expiration period * add tests for weight update period and OOB reporting period * Automated change: Fix sanity tests * lower bound for timer interval * consistently apply grpc_test_slowdown_factor() * cache time in test * add blackout_period tests * avoid some unnecessary copies * clang-format * add field to config test * simplify orca watcher tracking * attempt to fix build * iwyu * generate_projects * add "_experimental" suffix to policy name * WRR: update tests to cover qps plumbing * WIP * more WIP * basic WRR e2e test working * add OOB test * fix sanity * ignore duplicate addresses * Automated change: Fix sanity tests * add new tracer to doc/environment_variables.md * retain scheduler state across pickers * Automated change: Fix sanity tests * use separate mutexes for scheduler and timer * sort addresses to avoid index churn * remove fetch_sub for wrap around in RR case Co-authored-by: markdroth <markdroth@users.noreply.github.com>
2 years ago
"lb_policy",
"lb_policy_factory",
"metrics",
WRR: implement WRR LB policy (#31904) * WRR: port StaticStrideScheduler to OSS * WIP * Automated change: Fix sanity tests * fix build * remove unused aliases * fix another type mismatch * remove unnecessary include * move benchmarks to their own file, and don't run it on windows * Automated change: Fix sanity tests * add OOB reporting * generate_projects * clang-format * add config parser test * clang-tidy and minimize lock contention * add config defaults * add oob_reporting_period config field and add basic test * Automated change: Fix sanity tests * fix test * change test to use basic RR * WIP: started exposing peer address to LB policy API * first WRR test passing! * small cleanup * port RR fix to WRR * test helper refactoring * more test helper refactoring * WIP: trying to fix test to have the right weights * more WIP -- need to make pickers DualRefCounted * fix timer ref handling and get tests working * clang-format * iwyu and generate_projects * fix build * add test for OOB reporting * keep only READY subchannels in the picker * add file missed in a previous commit * fix sanity * iwyu * add weight expiration period * add tests for weight update period and OOB reporting period * Automated change: Fix sanity tests * lower bound for timer interval * consistently apply grpc_test_slowdown_factor() * cache time in test * add blackout_period tests * avoid some unnecessary copies * clang-format * add field to config test * simplify orca watcher tracking * attempt to fix build * iwyu * generate_projects * add "_experimental" suffix to policy name * WRR: update tests to cover qps plumbing * WIP * more WIP * basic WRR e2e test working * add OOB test * fix sanity * ignore duplicate addresses * Automated change: Fix sanity tests * add new tracer to doc/environment_variables.md * retain scheduler state across pickers * Automated change: Fix sanity tests * use separate mutexes for scheduler and timer * sort addresses to avoid index churn * remove fetch_sub for wrap around in RR case Co-authored-by: markdroth <markdroth@users.noreply.github.com>
2 years ago
"ref_counted",
"resolved_address",
"static_stride_scheduler",
"stats_data",
WRR: implement WRR LB policy (#31904) * WRR: port StaticStrideScheduler to OSS * WIP * Automated change: Fix sanity tests * fix build * remove unused aliases * fix another type mismatch * remove unnecessary include * move benchmarks to their own file, and don't run it on windows * Automated change: Fix sanity tests * add OOB reporting * generate_projects * clang-format * add config parser test * clang-tidy and minimize lock contention * add config defaults * add oob_reporting_period config field and add basic test * Automated change: Fix sanity tests * fix test * change test to use basic RR * WIP: started exposing peer address to LB policy API * first WRR test passing! * small cleanup * port RR fix to WRR * test helper refactoring * more test helper refactoring * WIP: trying to fix test to have the right weights * more WIP -- need to make pickers DualRefCounted * fix timer ref handling and get tests working * clang-format * iwyu and generate_projects * fix build * add test for OOB reporting * keep only READY subchannels in the picker * add file missed in a previous commit * fix sanity * iwyu * add weight expiration period * add tests for weight update period and OOB reporting period * Automated change: Fix sanity tests * lower bound for timer interval * consistently apply grpc_test_slowdown_factor() * cache time in test * add blackout_period tests * avoid some unnecessary copies * clang-format * add field to config test * simplify orca watcher tracking * attempt to fix build * iwyu * generate_projects * add "_experimental" suffix to policy name * WRR: update tests to cover qps plumbing * WIP * more WIP * basic WRR e2e test working * add OOB test * fix sanity * ignore duplicate addresses * Automated change: Fix sanity tests * add new tracer to doc/environment_variables.md * retain scheduler state across pickers * Automated change: Fix sanity tests * use separate mutexes for scheduler and timer * sort addresses to avoid index churn * remove fetch_sub for wrap around in RR case Co-authored-by: markdroth <markdroth@users.noreply.github.com>
2 years ago
"subchannel_interface",
"time",
"validation_errors",
"//:config",
"//:debug_location",
"//:endpoint_addresses",
WRR: implement WRR LB policy (#31904) * WRR: port StaticStrideScheduler to OSS * WIP * Automated change: Fix sanity tests * fix build * remove unused aliases * fix another type mismatch * remove unnecessary include * move benchmarks to their own file, and don't run it on windows * Automated change: Fix sanity tests * add OOB reporting * generate_projects * clang-format * add config parser test * clang-tidy and minimize lock contention * add config defaults * add oob_reporting_period config field and add basic test * Automated change: Fix sanity tests * fix test * change test to use basic RR * WIP: started exposing peer address to LB policy API * first WRR test passing! * small cleanup * port RR fix to WRR * test helper refactoring * more test helper refactoring * WIP: trying to fix test to have the right weights * more WIP -- need to make pickers DualRefCounted * fix timer ref handling and get tests working * clang-format * iwyu and generate_projects * fix build * add test for OOB reporting * keep only READY subchannels in the picker * add file missed in a previous commit * fix sanity * iwyu * add weight expiration period * add tests for weight update period and OOB reporting period * Automated change: Fix sanity tests * lower bound for timer interval * consistently apply grpc_test_slowdown_factor() * cache time in test * add blackout_period tests * avoid some unnecessary copies * clang-format * add field to config test * simplify orca watcher tracking * attempt to fix build * iwyu * generate_projects * add "_experimental" suffix to policy name * WRR: update tests to cover qps plumbing * WIP * more WIP * basic WRR e2e test working * add OOB test * fix sanity * ignore duplicate addresses * Automated change: Fix sanity tests * add new tracer to doc/environment_variables.md * retain scheduler state across pickers * Automated change: Fix sanity tests * use separate mutexes for scheduler and timer * sort addresses to avoid index churn * remove fetch_sub for wrap around in RR case Co-authored-by: markdroth <markdroth@users.noreply.github.com>
2 years ago
"//:exec_ctx",
"//:gpr",
"//:grpc_base",
"//:grpc_client_channel",
"//:grpc_trace",
"//:oob_backend_metric",
WRR: implement WRR LB policy (#31904) * WRR: port StaticStrideScheduler to OSS * WIP * Automated change: Fix sanity tests * fix build * remove unused aliases * fix another type mismatch * remove unnecessary include * move benchmarks to their own file, and don't run it on windows * Automated change: Fix sanity tests * add OOB reporting * generate_projects * clang-format * add config parser test * clang-tidy and minimize lock contention * add config defaults * add oob_reporting_period config field and add basic test * Automated change: Fix sanity tests * fix test * change test to use basic RR * WIP: started exposing peer address to LB policy API * first WRR test passing! * small cleanup * port RR fix to WRR * test helper refactoring * more test helper refactoring * WIP: trying to fix test to have the right weights * more WIP -- need to make pickers DualRefCounted * fix timer ref handling and get tests working * clang-format * iwyu and generate_projects * fix build * add test for OOB reporting * keep only READY subchannels in the picker * add file missed in a previous commit * fix sanity * iwyu * add weight expiration period * add tests for weight update period and OOB reporting period * Automated change: Fix sanity tests * lower bound for timer interval * consistently apply grpc_test_slowdown_factor() * cache time in test * add blackout_period tests * avoid some unnecessary copies * clang-format * add field to config test * simplify orca watcher tracking * attempt to fix build * iwyu * generate_projects * add "_experimental" suffix to policy name * WRR: update tests to cover qps plumbing * WIP * more WIP * basic WRR e2e test working * add OOB test * fix sanity * ignore duplicate addresses * Automated change: Fix sanity tests * add new tracer to doc/environment_variables.md * retain scheduler state across pickers * Automated change: Fix sanity tests * use separate mutexes for scheduler and timer * sort addresses to avoid index churn * remove fetch_sub for wrap around in RR case Co-authored-by: markdroth <markdroth@users.noreply.github.com>
2 years ago
"//:orphanable",
"//:ref_counted_ptr",
"//:stats",
"//:work_serializer",
WRR: implement WRR LB policy (#31904) * WRR: port StaticStrideScheduler to OSS * WIP * Automated change: Fix sanity tests * fix build * remove unused aliases * fix another type mismatch * remove unnecessary include * move benchmarks to their own file, and don't run it on windows * Automated change: Fix sanity tests * add OOB reporting * generate_projects * clang-format * add config parser test * clang-tidy and minimize lock contention * add config defaults * add oob_reporting_period config field and add basic test * Automated change: Fix sanity tests * fix test * change test to use basic RR * WIP: started exposing peer address to LB policy API * first WRR test passing! * small cleanup * port RR fix to WRR * test helper refactoring * more test helper refactoring * WIP: trying to fix test to have the right weights * more WIP -- need to make pickers DualRefCounted * fix timer ref handling and get tests working * clang-format * iwyu and generate_projects * fix build * add test for OOB reporting * keep only READY subchannels in the picker * add file missed in a previous commit * fix sanity * iwyu * add weight expiration period * add tests for weight update period and OOB reporting period * Automated change: Fix sanity tests * lower bound for timer interval * consistently apply grpc_test_slowdown_factor() * cache time in test * add blackout_period tests * avoid some unnecessary copies * clang-format * add field to config test * simplify orca watcher tracking * attempt to fix build * iwyu * generate_projects * add "_experimental" suffix to policy name * WRR: update tests to cover qps plumbing * WIP * more WIP * basic WRR e2e test working * add OOB test * fix sanity * ignore duplicate addresses * Automated change: Fix sanity tests * add new tracer to doc/environment_variables.md * retain scheduler state across pickers * Automated change: Fix sanity tests * use separate mutexes for scheduler and timer * sort addresses to avoid index churn * remove fetch_sub for wrap around in RR case Co-authored-by: markdroth <markdroth@users.noreply.github.com>
2 years ago
],
)
grpc_cc_library(
name = "grpc_outlier_detection_header",
hdrs = [
"load_balancing/outlier_detection/outlier_detection.h",
],
external_deps = ["absl/types:optional"],
language = "c++",
deps = [
"json",
"json_args",
"json_object_loader",
"time",
"validation_errors",
"//:gpr_platform",
],
)
grpc_cc_library(
name = "grpc_lb_policy_outlier_detection",
srcs = [
"load_balancing/outlier_detection/outlier_detection.cc",
],
external_deps = [
"absl/base:core_headers",
"absl/log:check",
"absl/meta:type_traits",
"absl/random",
"absl/status",
"absl/status:statusor",
"absl/strings",
"absl/types:variant",
],
language = "c++",
deps = [
"channel_args",
"connectivity_state",
"delegating_helper",
"experiments",
"grpc_outlier_detection_header",
"health_check_client",
"iomgr_fwd",
"json",
"lb_policy",
"lb_policy_factory",
"lb_policy_registry",
"pollset_set",
"ref_counted",
"resolved_address",
"subchannel_interface",
"unique_type_name",
"validation_errors",
"//:config",
"//:debug_location",
"//:endpoint_addresses",
"//:exec_ctx",
"//:gpr",
"//:grpc_base",
"//:grpc_client_channel",
"//:grpc_trace",
"//:lb_child_policy_handler",
"//:orphanable",
"//:ref_counted_ptr",
"//:sockaddr_utils",
"//:work_serializer",
],
)
grpc_cc_library(
name = "grpc_lb_policy_priority",
srcs = [
"load_balancing/priority/priority.cc",
],
external_deps = [
"absl/log:check",
"absl/status",
"absl/status:statusor",
"absl/strings",
"absl/types:optional",
],
language = "c++",
deps = [
"channel_args",
"connectivity_state",
"delegating_helper",
"grpc_lb_address_filtering",
"json",
"json_args",
"json_object_loader",
"lb_policy",
"lb_policy_factory",
"lb_policy_registry",
"pollset_set",
"ref_counted_string",
"time",
"validation_errors",
"//:channel_arg_names",
"//:config",
"//:debug_location",
"//:endpoint_addresses",
"//:exec_ctx",
"//:gpr",
"//:grpc_base",
"//:grpc_client_channel",
"//:grpc_trace",
"//:lb_child_policy_handler",
"//:orphanable",
"//:ref_counted_ptr",
"//:work_serializer",
],
)
grpc_cc_library(
name = "grpc_lb_policy_weighted_target",
srcs = [
"load_balancing/weighted_target/weighted_target.cc",
],
hdrs = [
"load_balancing/weighted_target/weighted_target.h",
],
external_deps = [
Second attempt: client channel: don't hold mutexes while calling the ConfigSelector or the LB picker (#32326) Original attempt was #31973, reverted in #32324 due to test flakiness. There were two problems causing test flakiness here. The first problem was that, upon resolver error, we were dispatching an async callback to re-process each of the queued picks *before* we updated the channel's connectivity state, which meant that the queued picks might be re-processed in another thread before the new connectivity state was set, so tests that expected the state to be TRANSIENT_FAILURE once RPCs failed might not see the expected state. The second problem affected the xDS ring hash tests, and it's a bit more involved to explain. We have an e2e test that simulates an aggregate cluster failover from a primary cluster using ring_hash at startup. The primary cluster has two addresses, both of which are unreachable when the client starts up, so the client should immediately fail over to the secondary cluster, which does have reachable endpoints. The test requires that no RPCs are failed while this failover occurs. The original PR made this test flaky. The problem here was caused by a combination of two factors: 1. Prior to the original PR, when the picker was updated (which happens inside the WorkSerializer), we re-processed previously queued picks synchronously, so it was not possible for another subchannel connectivity state update (which also happens in the WorkSerializer) to be processed between the time that we updated the picker and the time that we re-processed the previously queued picks. The original PR changed this such that the queued picks are re-processed asynchronously (outside of the WorkSerializer), so it is now possible for a subchannel connectivity state update to be processed between when the picker is updated and when we re-process the previously queued picks. 2. Unlike most LB policies, where the picker does not see updated subchannel connectivity states until a new picker is created, the ring_hash picker gets the subchannel connectivity states from the LB policy via a lock, so it can wind up seeing the new states before it gets updated. This means that when a subchannel connectivity state update is processed by the ring_hash policy in the WorkSerializer, it will immediately be seen by the existing picker, even without a picker update. With those two points in mind, the sequence of events in the failing test were as follows: 1. The pick is attempted in the ring_hash picker for the primary cluster. This causes the first subchannel to attempt to connect. 2. The subchannel transitions from IDLE to CONNECTING. A new picker is returned due to the subchannel connectivity state change, and the channel retries the queued pick. The retried pick is done asynchronously, but in this case it does not matter: the call will be re-queued. 3. The connection attempt fails, and the subchannel reports TRANSIENT_FAILURE. A new picker is again returned, and the channel retries the queued pick. The retried pick is done asynchronously, but in this case it does not matter: this causes the picker to trigger a connection attempt for the second subchannel. 4. The second subchannel transitions from IDLE to CONNECTING. A new picker is again returned, and the channel retries the queued pick. The retried pick is done asynchronously, and in this case it *does* matter. 5. The second subchannel now transitions to TRANSIENT_FAILURE. The ring_hash policy will now report TRANSIENT_FAILURE, but before it can finish that... 6. ...In another thread, the channel now tries to re-process the queued pick using the CONNECTING picker from step 4. However, because the ring_hash policy has already seen the TRANSIENT_FAILURE report from the second subchannel, that picker will now fail the pick instead of queuing it. After discussion with @ejona86 and @dfawley (since this bug actually exists in Java and Go as well), we agreed that the right solution is to change the ring_hash picker to contain its own copy of the subchannel connectivity state information, rather than sharing that information with the LB policy using synchronization.
2 years ago
"absl/base:core_headers",
"absl/log:check",
"absl/meta:type_traits",
"absl/random",
"absl/status",
"absl/status:statusor",
"absl/strings",
"absl/types:optional",
],
language = "c++",
deps = [
"channel_args",
"connectivity_state",
"delegating_helper",
"grpc_lb_address_filtering",
"json",
"json_args",
"json_object_loader",
"lb_policy",
"lb_policy_factory",
"lb_policy_registry",
"pollset_set",
"time",
"validation_errors",
"//:config",
"//:debug_location",
"//:endpoint_addresses",
"//:exec_ctx",
"//:gpr",
"//:grpc_base",
"//:grpc_client_channel",
"//:grpc_trace",
"//:lb_child_policy_handler",
"//:orphanable",
"//:ref_counted_ptr",
"//:work_serializer",
],
)
grpc_cc_library(
name = "grpc_lb_policy_xds_override_host",
srcs = [
"load_balancing/xds/xds_override_host.cc",
],
hdrs = [
"load_balancing/xds/xds_override_host.h",
],
external_deps = [
"absl/base:core_headers",
"absl/functional:function_ref",
"absl/log:check",
"absl/status",
"absl/status:statusor",
"absl/strings",
"absl/types:optional",
"absl/types:span",
"absl/types:variant",
],
language = "c++",
deps = [
"channel_args",
"client_channel_internal_header",
"closure",
"connectivity_state",
"delegating_helper",
"error",
"experiments",
"grpc_stateful_session_filter",
"grpc_xds_client",
"iomgr_fwd",
"json",
"json_args",
"json_object_loader",
"lb_policy",
"lb_policy_factory",
"lb_policy_registry",
"match",
"pollset_set",
"ref_counted_string",
"resolved_address",
"subchannel_interface",
"validation_errors",
"xds_dependency_manager",
"//:config",
"//:debug_location",
"//:endpoint_addresses",
"//:exec_ctx",
"//:gpr",
"//:grpc_base",
"//:grpc_client_channel",
"//:grpc_trace",
"//:lb_child_policy_handler",
"//:orphanable",
"//:parse_address",
"//:ref_counted_ptr",
"//:sockaddr_utils",
"//:work_serializer",
],
)
grpc_cc_library(
name = "lb_server_load_reporting_filter",
srcs = [
"ext/filters/load_reporting/server_load_reporting_filter.cc",
],
hdrs = [
"ext/filters/load_reporting/registered_opencensus_objects.h",
"ext/filters/load_reporting/server_load_reporting_filter.h",
"//:src/cpp/server/load_reporter/constants.h",
],
external_deps = [
"absl/container:inlined_vector",
"absl/status",
"absl/status:statusor",
"absl/strings",
"absl/strings:str_format",
"absl/types:optional",
"opencensus-stats",
"opencensus-tags",
],
language = "c++",
deps = [
"arena_promise",
"call_finalization",
"channel_args",
"channel_fwd",
"channel_stack_type",
"context",
"grpc_sockaddr",
"metadata_batch",
"resolved_address",
"seq",
"slice",
"//:channel_arg_names",
"//:config",
"//:gpr",
"//:gpr_platform",
"//:grpc_base",
"//:grpc_public_hdrs",
"//:grpc_security_base",
[EventEngine] Modify iomgr to allow creation of event engine clients and client side endpoints (#31661) * [WIP] EventEngine iomgr endpoint shims * [WIP] EventEngine::Endpoint iomgr shims for the PosixEventEngine * Util functions to help with posix engine listener implementation * sanity * update comments in posix_engine_listener_utils.h * review comments * iwyu * revert prev commit * iwyu * update build * update * regenerate projects * regenerate projects * minor fixes * update BUILD * sanity * update build * regenerate projects * fix unused parameter * sanity * update * sanity * regenerate_projects * remove unused variable * start * update * regenerate_projects * sanity * update * fixes * update * regenerate_projects * update * fix sanity and msan failure * more fixes * build failure * update * fix * sanity * fixes * update * regenerate projects * fix sanity * review comments * An EventEngine subclass to be implemented by all posix based event engines * sanity * comments * update * review comments * re-word * fix * update * review comments * regenerate projects * syntax fix * add lock free event benchmark * releasable mutex lock * fix build isue * update * start * regenerate projects * update * fix * windows build * update * windows portability issue * update * update * update * update * format * update * update * update * update * update * fix sanity * regenerate projects * update * iwyu * Fix resolved address length related bugs in tcp_socket_utils and listener_utils * iwyu * cleanup src/core/lib/event_engine/tcp_socket_utils.cc * iwyu * fix * regenerate projects * fix sanity * re-write endpoint shim * more re-write * cleanup * update * review comments * build issue * more build issue fixes plus adding event_engine_trace * even more build issue fixes * iwyu * add static_cast * update * remove redundant code * update * deduplicate * iwyu * Fix review comments and regenerate_projects * sanity * review comments * fix include guards Co-authored-by: AJ Heller <hork@google.com>
2 years ago
"//:parse_address",
"//:promise",
"//:uri_parser",
],
alwayslink = 1,
)
grpc_cc_library(
name = "grpc_backend_metric_filter",
srcs = [
"ext/filters/backend_metrics/backend_metric_filter.cc",
],
hdrs = [
"ext/filters/backend_metrics/backend_metric_filter.h",
],
external_deps = [
"absl/status:statusor",
"absl/strings",
"absl/types:optional",
"@com_google_protobuf//upb:base",
"@com_google_protobuf//upb:mem",
],
language = "c++",
deps = [
"arena_promise",
"channel_args",
"channel_fwd",
"channel_stack_type",
"context",
"experiments",
"grpc_backend_metric_data",
"grpc_backend_metric_provider",
"map",
"metadata_batch",
"slice",
"//:channel_arg_names",
"//:config",
"//:gpr",
"//:gpr_platform",
"//:grpc_base",
"//:grpc_trace",
"//:legacy_context",
"//:xds_orca_upb",
],
)
grpc_cc_library(
name = "polling_resolver",
srcs = [
"resolver/polling_resolver.cc",
],
hdrs = [
"resolver/polling_resolver.h",
],
external_deps = [
"absl/log:check",
"absl/status",
"absl/status:statusor",
"absl/strings",
"absl/types:optional",
],
language = "c++",
deps = [
"channel_args",
"grpc_service_config",
"iomgr_fwd",
"time",
"//:backoff",
"//:debug_location",
"//:endpoint_addresses",
"//:event_engine_base_hdrs",
"//:exec_ctx",
"//:gpr",
"//:grpc_resolver",
"//:grpc_trace",
"//:orphanable",
"//:ref_counted_ptr",
"//:uri_parser",
"//:work_serializer",
],
)
grpc_cc_library(
name = "service_config_helper",
srcs = [
"resolver/dns/event_engine/service_config_helper.cc",
],
hdrs = [
"resolver/dns/event_engine/service_config_helper.h",
],
external_deps = [
"absl/status:statusor",
"absl/strings",
],
language = "c++",
deps = [
"json",
"json_args",
"json_object_loader",
"json_reader",
"json_writer",
"status_helper",
"//:gpr_platform",
"//:grpc_base",
"//:iomgr",
],
)
grpc_cc_library(
name = "grpc_resolver_dns_event_engine",
srcs = [
"resolver/dns/event_engine/event_engine_client_channel_resolver.cc",
],
hdrs = [
"resolver/dns/event_engine/event_engine_client_channel_resolver.h",
],
external_deps = [
"absl/base:core_headers",
"absl/cleanup",
"absl/log:check",
"absl/status",
"absl/status:statusor",
"absl/strings",
"absl/types:optional",
],
language = "c++",
deps = [
"channel_args",
"event_engine_common",
"grpc_service_config",
"polling_resolver",
"service_config_helper",
"time",
"validation_errors",
"//:backoff",
"//:channel_arg_names",
"//:debug_location",
"//:endpoint_addresses",
[EventEngine] PosixEventEngine DNS Resolver (#32701) This PR implements a c-ares based DNS resolver for EventEngine with the reference from the original [grpc_ares_wrapper.h](../blob/master/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h). The PosixEventEngine DNSResolver is implemented on top of that. Tests which use the client channel resolver API ([resolver.h](../blob/master/src/core/lib/resolver/resolver.h#L54)) are ported, namely the [resolver_component_test.cc](../blob/master/test/cpp/naming/resolver_component_test.cc) and the [cancel_ares_query_test.cc](../blob/master/test/cpp/naming/cancel_ares_query_test.cc). The WindowsEventEngine DNSResolver will use the same EventEngine's grpc_ares_wrapper and will be worked on next. The [resolve_address_test.cc](https://github.com/grpc/grpc/blob/master/test/core/iomgr/resolve_address_test.cc) which uses the iomgr [DNSResolver](../blob/master/src/core/lib/iomgr/resolve_address.h#L44) API has been ported to EventEngine's dns_test.cc. That leaves only 2 tests which use iomgr's API, notably the [dns_resolver_cooldown_test.cc](../blob/master/test/core/client_channel/resolvers/dns_resolver_cooldown_test.cc) and the [goaway_server_test.cc](../blob/master/test/core/end2end/goaway_server_test.cc) which probably need to be restructured to use EventEngine DNSResolver (for one thing they override the original grpc_ares_wrapper's free functions). I will try to tackle these in the next step. <!-- If you know who should review your pull request, please assign it to that person, otherwise the pull request would get assigned randomly. If your pull request is for a specific language, please add the appropriate lang label. -->
2 years ago
"//:exec_ctx",
"//:gpr",
"//:gpr_platform",
"//:grpc_base",
"//:grpc_grpclb_balancer_addresses",
"//:grpc_resolver",
"//:grpc_service_config_impl",
"//:grpc_trace",
"//:iomgr",
"//:orphanable",
"//:ref_counted_ptr",
"//:uri_parser",
],
)
grpc_cc_library(
name = "grpc_resolver_dns_plugin",
srcs = [
"resolver/dns/dns_resolver_plugin.cc",
],
hdrs = [
"resolver/dns/dns_resolver_plugin.h",
],
external_deps = ["absl/strings"],
language = "c++",
deps = [
"experiments",
"grpc_resolver_dns_event_engine",
"grpc_resolver_dns_native",
"//:config",
"//:config_vars",
"//:gpr",
"//:grpc_resolver",
"//:grpc_resolver_dns_ares",
],
)
grpc_cc_library(
name = "grpc_resolver_dns_native",
srcs = [
"resolver/dns/native/dns_resolver.cc",
],
hdrs = [
"resolver/dns/native/dns_resolver.h",
],
external_deps = [
"absl/functional:bind_front",
"absl/status",
"absl/status:statusor",
"absl/strings",
"absl/types:optional",
],
language = "c++",
deps = [
"channel_args",
"polling_resolver",
"resolved_address",
"time",
"//:backoff",
"//:channel_arg_names",
"//:config",
"//:debug_location",
"//:endpoint_addresses",
"//:gpr",
"//:grpc_base",
"//:grpc_resolver",
"//:grpc_trace",
"//:iomgr",
"//:orphanable",
"//:ref_counted_ptr",
"//:uri_parser",
],
)
grpc_cc_library(
name = "grpc_resolver_sockaddr",
srcs = [
"resolver/sockaddr/sockaddr_resolver.cc",
],
external_deps = [
"absl/status:statusor",
"absl/strings",
],
language = "c++",
deps = [
"channel_args",
"iomgr_port",
"resolved_address",
"//:config",
"//:endpoint_addresses",
"//:gpr",
"//:grpc_resolver",
"//:orphanable",
[EventEngine] Modify iomgr to allow creation of event engine clients and client side endpoints (#31661) * [WIP] EventEngine iomgr endpoint shims * [WIP] EventEngine::Endpoint iomgr shims for the PosixEventEngine * Util functions to help with posix engine listener implementation * sanity * update comments in posix_engine_listener_utils.h * review comments * iwyu * revert prev commit * iwyu * update build * update * regenerate projects * regenerate projects * minor fixes * update BUILD * sanity * update build * regenerate projects * fix unused parameter * sanity * update * sanity * regenerate_projects * remove unused variable * start * update * regenerate_projects * sanity * update * fixes * update * regenerate_projects * update * fix sanity and msan failure * more fixes * build failure * update * fix * sanity * fixes * update * regenerate projects * fix sanity * review comments * An EventEngine subclass to be implemented by all posix based event engines * sanity * comments * update * review comments * re-word * fix * update * review comments * regenerate projects * syntax fix * add lock free event benchmark * releasable mutex lock * fix build isue * update * start * regenerate projects * update * fix * windows build * update * windows portability issue * update * update * update * update * format * update * update * update * update * update * fix sanity * regenerate projects * update * iwyu * Fix resolved address length related bugs in tcp_socket_utils and listener_utils * iwyu * cleanup src/core/lib/event_engine/tcp_socket_utils.cc * iwyu * fix * regenerate projects * fix sanity * re-write endpoint shim * more re-write * cleanup * update * review comments * build issue * more build issue fixes plus adding event_engine_trace * even more build issue fixes * iwyu * add static_cast * update * remove redundant code * update * deduplicate * iwyu * Fix review comments and regenerate_projects * sanity * review comments * fix include guards Co-authored-by: AJ Heller <hork@google.com>
2 years ago
"//:parse_address",
"//:uri_parser",
],
)
grpc_cc_library(
name = "grpc_resolver_binder",
srcs = [
"resolver/binder/binder_resolver.cc",
],
external_deps = [
"absl/status",
"absl/status:statusor",
"absl/strings",
],
language = "c++",
deps = [
"channel_args",
"error",
"iomgr_port",
"resolved_address",
"status_helper",
"//:config",
"//:endpoint_addresses",
"//:gpr",
"//:grpc_resolver",
"//:orphanable",
"//:uri_parser",
],
)
grpc_cc_library(
name = "grpc_resolver_xds_attributes",
hdrs = [
"resolver/xds/xds_resolver_attributes.h",
],
external_deps = ["absl/strings"],
language = "c++",
deps = [
"grpc_service_config",
"unique_type_name",
"//:gpr_platform",
],
)
grpc_cc_library(
name = "grpc_resolver_xds_trace",
srcs = [
"resolver/xds/xds_resolver_trace.cc",
],
hdrs = [
"resolver/xds/xds_resolver_trace.h",
],
language = "c++",
deps = [
"//:gpr_platform",
"//:grpc_trace",
],
)
grpc_cc_library(
name = "xds_dependency_manager",
srcs = [
"resolver/xds/xds_dependency_manager.cc",
],
hdrs = [
"resolver/xds/xds_dependency_manager.h",
],
external_deps = [
"absl/container:flat_hash_map",
"absl/container:flat_hash_set",
"absl/log:check",
"absl/strings",
],
language = "c++",
deps = [
"grpc_lb_xds_channel_args",
"grpc_resolver_xds_trace",
"grpc_xds_client",
"match",
"ref_counted",
"//:config",
"//:gpr",
"//:grpc_resolver",
"//:grpc_resolver_fake",
],
)
grpc_cc_library(
name = "grpc_resolver_xds",
srcs = [
"resolver/xds/xds_resolver.cc",
],
external_deps = [
"absl/log:check",
"absl/meta:type_traits",
"absl/random",
"absl/status",
"absl/status:statusor",
"absl/strings",
"absl/strings:str_format",
"absl/types:optional",
"absl/types:variant",
"re2",
],
language = "c++",
deps = [
"arena",
"arena_promise",
"channel_args",
"channel_fwd",
"client_channel_internal_header",
"config_selector",
"context",
"dual_ref_counted",
"experiments",
"grpc_lb_policy_ring_hash",
"grpc_resolver_xds_attributes",
"grpc_resolver_xds_trace",
"grpc_service_config",
"grpc_xds_client",
"iomgr_fwd",
"match",
"metadata_batch",
"pollset_set",
"ref_counted",
"slice",
"time",
"xds_dependency_manager",
"xxhash_inline",
"//:channel_arg_names",
"//:config",
"//:debug_location",
"//:endpoint_addresses",
"//:gpr",
"//:grpc_base",
"//:grpc_public_hdrs",
"//:grpc_resolver",
"//:grpc_service_config_impl",
"//:grpc_trace",
"//:legacy_context",
"//:orphanable",
"//:ref_counted_ptr",
"//:uri_parser",
"//:work_serializer",
"//:xds_client",
],
)
grpc_cc_library(
name = "grpc_resolver_c2p",
srcs = [
"resolver/google_c2p/google_c2p_resolver.cc",
],
external_deps = [
"absl/log:check",
"absl/status:statusor",
"absl/strings",
"absl/types:optional",
],
language = "c++",
deps = [
"channel_args",
"env",
"gcp_metadata_query",
"grpc_xds_client",
"json",
"json_writer",
"resource_quota",
"time",
"//:alts_util",
"//:config",
"//:debug_location",
"//:gpr",
"//:grpc_base",
"//:grpc_resolver",
"//:iomgr",
"//:orphanable",
"//:ref_counted_ptr",
"//:uri_parser",
"//:work_serializer",
"//:xds_client",
],
)
grpc_cc_library(
name = "hpack_constants",
hdrs = [
"ext/transport/chttp2/transport/hpack_constants.h",
],
language = "c++",
deps = ["//:gpr_platform"],
)
grpc_cc_library(
name = "hpack_encoder_table",
srcs = [
"ext/transport/chttp2/transport/hpack_encoder_table.cc",
],
hdrs = [
"ext/transport/chttp2/transport/hpack_encoder_table.h",
],
external_deps = [
"absl/log:check",
],
language = "c++",
deps = [
"hpack_constants",
"//:gpr",
],
)
grpc_cc_library(
name = "chttp2_flow_control",
srcs = [
"ext/transport/chttp2/transport/flow_control.cc",
],
hdrs = [
"ext/transport/chttp2/transport/flow_control.h",
],
external_deps = [
"absl/functional:function_ref",
"absl/log:check",
"absl/status",
"absl/strings",
"absl/strings:str_format",
"absl/types:optional",
],
deps = [
"bdp_estimator",
"experiments",
"http2_settings",
"memory_quota",
"time",
"useful",
"//:gpr",
"//:grpc_trace",
],
)
grpc_cc_library(
name = "ping_abuse_policy",
srcs = [
"ext/transport/chttp2/transport/ping_abuse_policy.cc",
],
hdrs = [
"ext/transport/chttp2/transport/ping_abuse_policy.h",
],
external_deps = [
"absl/strings",
"absl/types:optional",
],
deps = [
"channel_args",
"time",
"//:channel_arg_names",
"//:gpr_platform",
],
)
grpc_cc_library(
name = "ping_callbacks",
srcs = [
"ext/transport/chttp2/transport/ping_callbacks.cc",
],
hdrs = [
"ext/transport/chttp2/transport/ping_callbacks.h",
],
external_deps = [
"absl/container:flat_hash_map",
"absl/functional:any_invocable",
"absl/hash",
"absl/log:check",
"absl/meta:type_traits",
"absl/random:bit_gen_ref",
"absl/random:distributions",
"absl/types:optional",
],
deps = [
"time",
"//:event_engine_base_hdrs",
"//:gpr",
"//:gpr_platform",
"//:grpc_trace",
],
)
grpc_cc_library(
name = "write_size_policy",
srcs = [
"ext/transport/chttp2/transport/write_size_policy.cc",
],
hdrs = [
"ext/transport/chttp2/transport/write_size_policy.h",
],
external_deps = [
"absl/log:check",
],
deps = [
"time",
"//:gpr",
"//:gpr_platform",
],
)
grpc_cc_library(
name = "ping_rate_policy",
srcs = [
"ext/transport/chttp2/transport/ping_rate_policy.cc",
],
hdrs = [
"ext/transport/chttp2/transport/ping_rate_policy.h",
],
external_deps = [
"absl/strings",
"absl/types:optional",
"absl/types:variant",
],
deps = [
"channel_args",
"experiments",
"match",
"time",
"//:channel_arg_names",
"//:gpr_platform",
],
)
grpc_cc_library(
name = "max_concurrent_streams_policy",
srcs = [
"ext/transport/chttp2/transport/max_concurrent_streams_policy.cc",
],
hdrs = [
"ext/transport/chttp2/transport/max_concurrent_streams_policy.h",
],
external_deps = [
"absl/log:check",
],
deps = [
"//:gpr",
"//:gpr_platform",
],
)
grpc_cc_library(
name = "huffsyms",
srcs = [
"ext/transport/chttp2/transport/huffsyms.cc",
],
hdrs = [
"ext/transport/chttp2/transport/huffsyms.h",
],
deps = ["//:gpr_platform"],
)
grpc_cc_library(
name = "decode_huff",
srcs = [
"ext/transport/chttp2/transport/decode_huff.cc",
],
hdrs = [
"ext/transport/chttp2/transport/decode_huff.h",
],
deps = ["//:gpr_platform"],
)
grpc_cc_library(
name = "http2_settings",
srcs = [
"ext/transport/chttp2/transport/http2_settings.cc",
],
hdrs = [
"ext/transport/chttp2/transport/http2_settings.h",
],
external_deps = [
"absl/functional:function_ref",
"absl/strings",
"absl/types:optional",
],
deps = [
"http2_errors",
"useful",
"//:chttp2_frame",
"//:gpr_platform",
],
)
grpc_cc_library(
name = "grpc_transport_chttp2_alpn",
srcs = [
"ext/transport/chttp2/alpn/alpn.cc",
],
hdrs = [
"ext/transport/chttp2/alpn/alpn.h",
],
external_deps = [
"absl/log:check",
],
language = "c++",
deps = [
"useful",
"//:gpr",
],
)
grpc_cc_library(
name = "grpc_transport_chttp2_client_connector",
srcs = [
"ext/transport/chttp2/client/chttp2_connector.cc",
],
hdrs = [
"ext/transport/chttp2/client/chttp2_connector.h",
],
external_deps = [
"absl/base:core_headers",
"absl/log:check",
"absl/status",
"absl/status:statusor",
"absl/strings:str_format",
"absl/types:optional",
],
language = "c++",
deps = [
"channel_args",
"channel_args_endpoint_config",
"channel_args_preconditioning",
"channel_stack_type",
"closure",
"error",
"error_utils",
"grpc_insecure_credentials",
"handshaker_registry",
"resolved_address",
"status_helper",
"subchannel_connector",
"tcp_connect_handshaker",
"time",
"unique_type_name",
"//:api_trace",
"//:channel",
"//:channel_arg_names",
"//:channel_create",
"//:channelz",
"//:config",
"//:debug_location",
"//:exec_ctx",
"//:gpr",
"//:grpc_base",
"//:grpc_client_channel",
"//:grpc_public_hdrs",
"//:grpc_resolver",
"//:grpc_security_base",
"//:grpc_trace",
"//:grpc_transport_chttp2",
"//:handshaker",
"//:iomgr",
"//:orphanable",
"//:ref_counted_ptr",
"//:sockaddr_utils",
],
)
grpc_cc_library(
name = "grpc_transport_chttp2_server",
srcs = [
"ext/transport/chttp2/server/chttp2_server.cc",
],
hdrs = [
"ext/transport/chttp2/server/chttp2_server.h",
],
external_deps = [
"absl/base:core_headers",
"absl/log:check",
"absl/status",
"absl/status:statusor",
"absl/strings",
"absl/strings:str_format",
"absl/types:optional",
],
language = "c++",
deps = [
"channel_args",
"channel_args_endpoint_config",
"closure",
"connection_quota",
"error",
"error_utils",
"grpc_insecure_credentials",
"handshaker_registry",
"iomgr_fwd",
"memory_quota",
"pollset_set",
"resolved_address",
"resource_quota",
"status_helper",
"time",
"unique_type_name",
"//:api_trace",
"//:channel_arg_names",
"//:channelz",
"//:chttp2_legacy_frame",
"//:config",
"//:debug_location",
"//:exec_ctx",
"//:gpr",
"//:grpc_base",
"//:grpc_security_base",
"//:grpc_trace",
"//:grpc_transport_chttp2",
"//:handshaker",
"//:iomgr",
"//:orphanable",
"//:ref_counted_ptr",
"//:server",
"//:sockaddr_utils",
"//:uri_parser",
],
)
grpc_cc_library(
name = "grpc_transport_inproc",
srcs = [
"ext/transport/inproc/inproc_plugin.cc",
"ext/transport/inproc/inproc_transport.cc",
"ext/transport/inproc/legacy_inproc_transport.cc",
],
hdrs = [
"ext/transport/inproc/inproc_transport.h",
"ext/transport/inproc/legacy_inproc_transport.h",
],
external_deps = [
"absl/log:check",
"absl/status",
"absl/status:statusor",
"absl/strings",
"absl/types:optional",
],
language = "c++",
deps = [
"arena",
"channel_args",
"channel_args_preconditioning",
"channel_stack_type",
"closure",
"connectivity_state",
"error",
"experiments",
"iomgr_fwd",
"metadata_batch",
11 months ago
"resource_quota",
"slice",
"slice_buffer",
"status_helper",
"time",
"try_seq",
"//:api_trace",
"//:channel",
"//:channel_arg_names",
"//:channel_create",
"//:channelz",
"//:config",
"//:debug_location",
"//:exec_ctx",
"//:gpr",
"//:grpc_base",
"//:grpc_public_hdrs",
"//:grpc_trace",
"//:iomgr",
"//:promise",
"//:ref_counted_ptr",
"//:server",
],
)
grpc_cc_library(
name = "chaotic_good_frame",
srcs = [
"ext/transport/chaotic_good/frame.cc",
],
hdrs = [
"ext/transport/chaotic_good/frame.h",
],
external_deps = [
"absl/log:check",
"absl/random:bit_gen_ref",
"absl/status",
"absl/status:statusor",
"absl/types:variant",
],
deps = [
"arena",
"bitset",
"chaotic_good_frame_header",
[chaotic-good] Add chaotic good client transport read (roll-forward) (#34806) Roll forward #34657, which was reverted in #34761. Previous error in CMake: ``` [ RUN ] ClientTransportTest.AddOneStreamMultipleMessages unknown file: Failure Unexpected mock function call - returning directly. Function call: Call(CANCELLED: ) Google Mock tried the following 1 expectation, but it didn't match: /[var/local/git/grpc/test/core/transport/chaotic_good/client_transport_test.cc:484](https://cs.corp.google.com/piper///depot/google3/var/local/git/grpc/test/core/transport/chaotic_good/client_transport_test.cc?l=484): EXPECT_CALL(on_done, Call(absl::OkStatus()))... Expected arg #0: is equal to OK Actual: CANCELLED: Expected: to be called once Actual: never called - unsatisfied and active /[var/local/git/grpc/test/core/transport/chaotic_good/client_transport_test.cc:484](https://cs.corp.google.com/piper///depot/google3/var/local/git/grpc/test/core/transport/chaotic_good/client_transport_test.cc?l=484): Failure Actual function call count doesn't match EXPECT_CALL(on_done, Call(absl::OkStatus()))... Expected: to be called once Actual: never called - unsatisfied and active real 0.24 user 0.00 sys 0.00 2023-10-20 01:50:32,776 FAILED: cmake/build/client_transport_test --gtest_filter=ClientTransportTest.AddOneStreamMultipleMessages GRPC_POLL_STRATEGY=epoll1 [ret=139, pid=1663532, time=0.3sec] ``` <!-- If you know who should review your pull request, please assign it to that person, otherwise the pull request would get assigned randomly. If your pull request is for a specific language, please add the appropriate lang label. -->
1 year ago
"context",
"match",
"metadata_batch",
"no_destruct",
"slice",
"slice_buffer",
"status_helper",
"//:gpr",
"//:gpr_platform",
"//:grpc_base",
"//:hpack_encoder",
"//:hpack_parser",
],
)
grpc_cc_library(
name = "chaotic_good_settings_metadata",
srcs = [
"ext/transport/chaotic_good/settings_metadata.cc",
],
hdrs = [
"ext/transport/chaotic_good/settings_metadata.h",
],
external_deps = [
"absl/status",
"absl/types:optional",
],
deps = [
"arena",
"metadata_batch",
"//:gpr",
],
)
grpc_cc_library(
name = "chaotic_good_frame_header",
srcs = [
"ext/transport/chaotic_good/frame_header.cc",
],
hdrs = [
"ext/transport/chaotic_good/frame_header.h",
],
external_deps = [
"absl/status",
"absl/status:statusor",
"absl/strings",
],
deps = [
"bitset",
"//:gpr",
"//:gpr_platform",
],
)
grpc_cc_library(
name = "gcp_metadata_query",
srcs = [
"ext/gcp/metadata_query.cc",
],
hdrs = [
"ext/gcp/metadata_query.h",
],
external_deps = [
"absl/functional:any_invocable",
"absl/log:check",
"absl/status",
"absl/status:statusor",
"absl/strings",
"absl/strings:str_format",
],
deps = [
"closure",
"error",
"status_helper",
"time",
"//:gpr",
"//:gpr_platform",
"//:grpc_base",
"//:grpc_core_credentials_header",
"//:grpc_security_base",
"//:grpc_trace",
"//:httpcli",
"//:iomgr",
"//:orphanable",
"//:ref_counted_ptr",
"//:uri_parser",
],
)
grpc_cc_library(
name = "logging_sink",
hdrs = [
"ext/filters/logging/logging_sink.h",
],
external_deps = [
"absl/numeric:int128",
"absl/strings",
],
language = "c++",
visibility = [
"//src/cpp/ext/gcp:__subpackages__",
"//test:__subpackages__",
],
deps = [
"time",
"//:gpr_platform",
],
)
grpc_cc_library(
name = "logging_filter",
srcs = [
"ext/filters/logging/logging_filter.cc",
],
hdrs = [
"ext/filters/logging/logging_filter.h",
],
external_deps = [
"absl/numeric:int128",
"absl/random",
"absl/random:distributions",
"absl/status:statusor",
"absl/strings",
"absl/types:optional",
],
language = "c++",
deps = [
"arena",
"arena_promise",
"cancel_callback",
"channel_args",
"channel_fwd",
"channel_stack_type",
"context",
"logging_sink",
"map",
"metadata_batch",
"pipe",
"slice",
"slice_buffer",
"time",
"//:call_tracer",
"//:channel_arg_names",
"//:config",
"//:gpr",
"//:gpr_platform",
"//:grpc_base",
"//:grpc_client_channel",
"//:grpc_public_hdrs",
"//:grpc_resolver",
"//:legacy_context",
"//:uri_parser",
],
)
grpc_cc_library(
name = "grpc_promise_endpoint",
srcs = [
"lib/transport/promise_endpoint.cc",
],
external_deps = [
"absl/base:core_headers",
"absl/log:check",
"absl/status",
"absl/status:statusor",
"absl/types:optional",
],
language = "c++",
public_hdrs = [
"lib/transport/promise_endpoint.h",
],
deps = [
"activity",
"cancel_callback",
"event_engine_common",
"event_engine_extensions",
"event_engine_query_extensions",
"if",
"map",
"poll",
"slice",
"slice_buffer",
"//:event_engine_base_hdrs",
"//:exec_ctx",
"//:gpr",
],
)
grpc_cc_library(
name = "chaotic_good_transport",
srcs = [
"ext/transport/chaotic_good/chaotic_good_transport.cc",
],
hdrs = [
"ext/transport/chaotic_good/chaotic_good_transport.h",
],
external_deps = ["absl/random"],
language = "c++",
deps = [
"chaotic_good_frame",
"chaotic_good_frame_header",
"event_engine_tcp_socket_utils",
"grpc_promise_endpoint",
"if",
"try_join",
"try_seq",
"//:gpr_platform",
"//:grpc_trace",
"//:hpack_encoder",
"//:promise",
],
)
grpc_cc_library(
name = "chaotic_good_client_transport",
srcs = [
"ext/transport/chaotic_good/client_transport.cc",
],
hdrs = [
"ext/transport/chaotic_good/client_transport.h",
],
external_deps = [
"absl/base:core_headers",
"absl/container:flat_hash_map",
"absl/log:check",
[chaotic-good] Add chaotic good client transport read (roll-forward) (#34806) Roll forward #34657, which was reverted in #34761. Previous error in CMake: ``` [ RUN ] ClientTransportTest.AddOneStreamMultipleMessages unknown file: Failure Unexpected mock function call - returning directly. Function call: Call(CANCELLED: ) Google Mock tried the following 1 expectation, but it didn't match: /[var/local/git/grpc/test/core/transport/chaotic_good/client_transport_test.cc:484](https://cs.corp.google.com/piper///depot/google3/var/local/git/grpc/test/core/transport/chaotic_good/client_transport_test.cc?l=484): EXPECT_CALL(on_done, Call(absl::OkStatus()))... Expected arg #0: is equal to OK Actual: CANCELLED: Expected: to be called once Actual: never called - unsatisfied and active /[var/local/git/grpc/test/core/transport/chaotic_good/client_transport_test.cc:484](https://cs.corp.google.com/piper///depot/google3/var/local/git/grpc/test/core/transport/chaotic_good/client_transport_test.cc?l=484): Failure Actual function call count doesn't match EXPECT_CALL(on_done, Call(absl::OkStatus()))... Expected: to be called once Actual: never called - unsatisfied and active real 0.24 user 0.00 sys 0.00 2023-10-20 01:50:32,776 FAILED: cmake/build/client_transport_test --gtest_filter=ClientTransportTest.AddOneStreamMultipleMessages GRPC_POLL_STRATEGY=epoll1 [ret=139, pid=1663532, time=0.3sec] ``` <!-- If you know who should review your pull request, please assign it to that person, otherwise the pull request would get assigned randomly. If your pull request is for a specific language, please add the appropriate lang label. -->
1 year ago
"absl/random",
"absl/random:bit_gen_ref",
"absl/status",
[chaotic-good] Add chaotic good client transport read (roll-forward) (#34806) Roll forward #34657, which was reverted in #34761. Previous error in CMake: ``` [ RUN ] ClientTransportTest.AddOneStreamMultipleMessages unknown file: Failure Unexpected mock function call - returning directly. Function call: Call(CANCELLED: ) Google Mock tried the following 1 expectation, but it didn't match: /[var/local/git/grpc/test/core/transport/chaotic_good/client_transport_test.cc:484](https://cs.corp.google.com/piper///depot/google3/var/local/git/grpc/test/core/transport/chaotic_good/client_transport_test.cc?l=484): EXPECT_CALL(on_done, Call(absl::OkStatus()))... Expected arg #0: is equal to OK Actual: CANCELLED: Expected: to be called once Actual: never called - unsatisfied and active /[var/local/git/grpc/test/core/transport/chaotic_good/client_transport_test.cc:484](https://cs.corp.google.com/piper///depot/google3/var/local/git/grpc/test/core/transport/chaotic_good/client_transport_test.cc?l=484): Failure Actual function call count doesn't match EXPECT_CALL(on_done, Call(absl::OkStatus()))... Expected: to be called once Actual: never called - unsatisfied and active real 0.24 user 0.00 sys 0.00 2023-10-20 01:50:32,776 FAILED: cmake/build/client_transport_test --gtest_filter=ClientTransportTest.AddOneStreamMultipleMessages GRPC_POLL_STRATEGY=epoll1 [ret=139, pid=1663532, time=0.3sec] ``` <!-- If you know who should review your pull request, please assign it to that person, otherwise the pull request would get assigned randomly. If your pull request is for a specific language, please add the appropriate lang label. -->
1 year ago
"absl/status:statusor",
"absl/types:optional",
"absl/types:variant",
],
language = "c++",
deps = [
"activity",
"all_ok",
[chaotic-good] Add chaotic good client transport read (roll-forward) (#34806) Roll forward #34657, which was reverted in #34761. Previous error in CMake: ``` [ RUN ] ClientTransportTest.AddOneStreamMultipleMessages unknown file: Failure Unexpected mock function call - returning directly. Function call: Call(CANCELLED: ) Google Mock tried the following 1 expectation, but it didn't match: /[var/local/git/grpc/test/core/transport/chaotic_good/client_transport_test.cc:484](https://cs.corp.google.com/piper///depot/google3/var/local/git/grpc/test/core/transport/chaotic_good/client_transport_test.cc?l=484): EXPECT_CALL(on_done, Call(absl::OkStatus()))... Expected arg #0: is equal to OK Actual: CANCELLED: Expected: to be called once Actual: never called - unsatisfied and active /[var/local/git/grpc/test/core/transport/chaotic_good/client_transport_test.cc:484](https://cs.corp.google.com/piper///depot/google3/var/local/git/grpc/test/core/transport/chaotic_good/client_transport_test.cc?l=484): Failure Actual function call count doesn't match EXPECT_CALL(on_done, Call(absl::OkStatus()))... Expected: to be called once Actual: never called - unsatisfied and active real 0.24 user 0.00 sys 0.00 2023-10-20 01:50:32,776 FAILED: cmake/build/client_transport_test --gtest_filter=ClientTransportTest.AddOneStreamMultipleMessages GRPC_POLL_STRATEGY=epoll1 [ret=139, pid=1663532, time=0.3sec] ``` <!-- If you know who should review your pull request, please assign it to that person, otherwise the pull request would get assigned randomly. If your pull request is for a specific language, please add the appropriate lang label. -->
1 year ago
"arena",
"chaotic_good_frame",
"chaotic_good_frame_header",
"chaotic_good_transport",
"context",
"event_engine_wakeup_scheduler",
"for_each",
"grpc_promise_endpoint",
[chaotic-good] Add chaotic good client transport read (roll-forward) (#34806) Roll forward #34657, which was reverted in #34761. Previous error in CMake: ``` [ RUN ] ClientTransportTest.AddOneStreamMultipleMessages unknown file: Failure Unexpected mock function call - returning directly. Function call: Call(CANCELLED: ) Google Mock tried the following 1 expectation, but it didn't match: /[var/local/git/grpc/test/core/transport/chaotic_good/client_transport_test.cc:484](https://cs.corp.google.com/piper///depot/google3/var/local/git/grpc/test/core/transport/chaotic_good/client_transport_test.cc?l=484): EXPECT_CALL(on_done, Call(absl::OkStatus()))... Expected arg #0: is equal to OK Actual: CANCELLED: Expected: to be called once Actual: never called - unsatisfied and active /[var/local/git/grpc/test/core/transport/chaotic_good/client_transport_test.cc:484](https://cs.corp.google.com/piper///depot/google3/var/local/git/grpc/test/core/transport/chaotic_good/client_transport_test.cc?l=484): Failure Actual function call count doesn't match EXPECT_CALL(on_done, Call(absl::OkStatus()))... Expected: to be called once Actual: never called - unsatisfied and active real 0.24 user 0.00 sys 0.00 2023-10-20 01:50:32,776 FAILED: cmake/build/client_transport_test --gtest_filter=ClientTransportTest.AddOneStreamMultipleMessages GRPC_POLL_STRATEGY=epoll1 [ret=139, pid=1663532, time=0.3sec] ``` <!-- If you know who should review your pull request, please assign it to that person, otherwise the pull request would get assigned randomly. If your pull request is for a specific language, please add the appropriate lang label. -->
1 year ago
"if",
"inter_activity_pipe",
"loop",
"map",
"match",
[chaotic-good] Add chaotic good client transport read (roll-forward) (#34806) Roll forward #34657, which was reverted in #34761. Previous error in CMake: ``` [ RUN ] ClientTransportTest.AddOneStreamMultipleMessages unknown file: Failure Unexpected mock function call - returning directly. Function call: Call(CANCELLED: ) Google Mock tried the following 1 expectation, but it didn't match: /[var/local/git/grpc/test/core/transport/chaotic_good/client_transport_test.cc:484](https://cs.corp.google.com/piper///depot/google3/var/local/git/grpc/test/core/transport/chaotic_good/client_transport_test.cc?l=484): EXPECT_CALL(on_done, Call(absl::OkStatus()))... Expected arg #0: is equal to OK Actual: CANCELLED: Expected: to be called once Actual: never called - unsatisfied and active /[var/local/git/grpc/test/core/transport/chaotic_good/client_transport_test.cc:484](https://cs.corp.google.com/piper///depot/google3/var/local/git/grpc/test/core/transport/chaotic_good/client_transport_test.cc?l=484): Failure Actual function call count doesn't match EXPECT_CALL(on_done, Call(absl::OkStatus()))... Expected: to be called once Actual: never called - unsatisfied and active real 0.24 user 0.00 sys 0.00 2023-10-20 01:50:32,776 FAILED: cmake/build/client_transport_test --gtest_filter=ClientTransportTest.AddOneStreamMultipleMessages GRPC_POLL_STRATEGY=epoll1 [ret=139, pid=1663532, time=0.3sec] ``` <!-- If you know who should review your pull request, please assign it to that person, otherwise the pull request would get assigned randomly. If your pull request is for a specific language, please add the appropriate lang label. -->
1 year ago
"memory_quota",
"metadata_batch",
"mpsc",
"pipe",
[chaotic-good] Add chaotic good client transport read (roll-forward) (#34806) Roll forward #34657, which was reverted in #34761. Previous error in CMake: ``` [ RUN ] ClientTransportTest.AddOneStreamMultipleMessages unknown file: Failure Unexpected mock function call - returning directly. Function call: Call(CANCELLED: ) Google Mock tried the following 1 expectation, but it didn't match: /[var/local/git/grpc/test/core/transport/chaotic_good/client_transport_test.cc:484](https://cs.corp.google.com/piper///depot/google3/var/local/git/grpc/test/core/transport/chaotic_good/client_transport_test.cc?l=484): EXPECT_CALL(on_done, Call(absl::OkStatus()))... Expected arg #0: is equal to OK Actual: CANCELLED: Expected: to be called once Actual: never called - unsatisfied and active /[var/local/git/grpc/test/core/transport/chaotic_good/client_transport_test.cc:484](https://cs.corp.google.com/piper///depot/google3/var/local/git/grpc/test/core/transport/chaotic_good/client_transport_test.cc?l=484): Failure Actual function call count doesn't match EXPECT_CALL(on_done, Call(absl::OkStatus()))... Expected: to be called once Actual: never called - unsatisfied and active real 0.24 user 0.00 sys 0.00 2023-10-20 01:50:32,776 FAILED: cmake/build/client_transport_test --gtest_filter=ClientTransportTest.AddOneStreamMultipleMessages GRPC_POLL_STRATEGY=epoll1 [ret=139, pid=1663532, time=0.3sec] ``` <!-- If you know who should review your pull request, please assign it to that person, otherwise the pull request would get assigned randomly. If your pull request is for a specific language, please add the appropriate lang label. -->
1 year ago
"poll",
"resource_quota",
"slice",
"slice_buffer",
[chaotic-good] Add chaotic good client transport read (roll-forward) (#34806) Roll forward #34657, which was reverted in #34761. Previous error in CMake: ``` [ RUN ] ClientTransportTest.AddOneStreamMultipleMessages unknown file: Failure Unexpected mock function call - returning directly. Function call: Call(CANCELLED: ) Google Mock tried the following 1 expectation, but it didn't match: /[var/local/git/grpc/test/core/transport/chaotic_good/client_transport_test.cc:484](https://cs.corp.google.com/piper///depot/google3/var/local/git/grpc/test/core/transport/chaotic_good/client_transport_test.cc?l=484): EXPECT_CALL(on_done, Call(absl::OkStatus()))... Expected arg #0: is equal to OK Actual: CANCELLED: Expected: to be called once Actual: never called - unsatisfied and active /[var/local/git/grpc/test/core/transport/chaotic_good/client_transport_test.cc:484](https://cs.corp.google.com/piper///depot/google3/var/local/git/grpc/test/core/transport/chaotic_good/client_transport_test.cc?l=484): Failure Actual function call count doesn't match EXPECT_CALL(on_done, Call(absl::OkStatus()))... Expected: to be called once Actual: never called - unsatisfied and active real 0.24 user 0.00 sys 0.00 2023-10-20 01:50:32,776 FAILED: cmake/build/client_transport_test --gtest_filter=ClientTransportTest.AddOneStreamMultipleMessages GRPC_POLL_STRATEGY=epoll1 [ret=139, pid=1663532, time=0.3sec] ``` <!-- If you know who should review your pull request, please assign it to that person, otherwise the pull request would get assigned randomly. If your pull request is for a specific language, please add the appropriate lang label. -->
1 year ago
"try_join",
"try_seq",
"//:exec_ctx",
"//:gpr",
"//:gpr_platform",
"//:grpc_base",
"//:hpack_encoder",
[chaotic-good] Add chaotic good client transport read (roll-forward) (#34806) Roll forward #34657, which was reverted in #34761. Previous error in CMake: ``` [ RUN ] ClientTransportTest.AddOneStreamMultipleMessages unknown file: Failure Unexpected mock function call - returning directly. Function call: Call(CANCELLED: ) Google Mock tried the following 1 expectation, but it didn't match: /[var/local/git/grpc/test/core/transport/chaotic_good/client_transport_test.cc:484](https://cs.corp.google.com/piper///depot/google3/var/local/git/grpc/test/core/transport/chaotic_good/client_transport_test.cc?l=484): EXPECT_CALL(on_done, Call(absl::OkStatus()))... Expected arg #0: is equal to OK Actual: CANCELLED: Expected: to be called once Actual: never called - unsatisfied and active /[var/local/git/grpc/test/core/transport/chaotic_good/client_transport_test.cc:484](https://cs.corp.google.com/piper///depot/google3/var/local/git/grpc/test/core/transport/chaotic_good/client_transport_test.cc?l=484): Failure Actual function call count doesn't match EXPECT_CALL(on_done, Call(absl::OkStatus()))... Expected: to be called once Actual: never called - unsatisfied and active real 0.24 user 0.00 sys 0.00 2023-10-20 01:50:32,776 FAILED: cmake/build/client_transport_test --gtest_filter=ClientTransportTest.AddOneStreamMultipleMessages GRPC_POLL_STRATEGY=epoll1 [ret=139, pid=1663532, time=0.3sec] ``` <!-- If you know who should review your pull request, please assign it to that person, otherwise the pull request would get assigned randomly. If your pull request is for a specific language, please add the appropriate lang label. -->
1 year ago
"//:hpack_parser",
"//:promise",
"//:ref_counted_ptr",
],
)
grpc_cc_library(
name = "chaotic_good_server_transport",
srcs = [
"ext/transport/chaotic_good/server_transport.cc",
],
hdrs = [
"ext/transport/chaotic_good/server_transport.h",
],
external_deps = [
"absl/base:core_headers",
"absl/container:flat_hash_map",
"absl/functional:any_invocable",
"absl/log:check",
"absl/random",
"absl/random:bit_gen_ref",
"absl/status",
"absl/status:statusor",
"absl/types:optional",
"absl/types:variant",
],
language = "c++",
deps = [
"1999",
"activity",
"arena",
"chaotic_good_frame",
"chaotic_good_frame_header",
"chaotic_good_transport",
"context",
"default_event_engine",
"event_engine_wakeup_scheduler",
"for_each",
"grpc_promise_endpoint",
"if",
"inter_activity_latch",
"inter_activity_pipe",
"loop",
"memory_quota",
"metadata_batch",
"mpsc",
"pipe",
"poll",
"resource_quota",
"seq",
"slice",
"slice_buffer",
"switch",
"try_join",
"try_seq",
"//:exec_ctx",
"//:gpr",
"//:gpr_platform",
"//:grpc_base",
"//:hpack_encoder",
"//:hpack_parser",
[chaotic-good] Add chaotic good client transport read (roll-forward) (#34806) Roll forward #34657, which was reverted in #34761. Previous error in CMake: ``` [ RUN ] ClientTransportTest.AddOneStreamMultipleMessages unknown file: Failure Unexpected mock function call - returning directly. Function call: Call(CANCELLED: ) Google Mock tried the following 1 expectation, but it didn't match: /[var/local/git/grpc/test/core/transport/chaotic_good/client_transport_test.cc:484](https://cs.corp.google.com/piper///depot/google3/var/local/git/grpc/test/core/transport/chaotic_good/client_transport_test.cc?l=484): EXPECT_CALL(on_done, Call(absl::OkStatus()))... Expected arg #0: is equal to OK Actual: CANCELLED: Expected: to be called once Actual: never called - unsatisfied and active /[var/local/git/grpc/test/core/transport/chaotic_good/client_transport_test.cc:484](https://cs.corp.google.com/piper///depot/google3/var/local/git/grpc/test/core/transport/chaotic_good/client_transport_test.cc?l=484): Failure Actual function call count doesn't match EXPECT_CALL(on_done, Call(absl::OkStatus()))... Expected: to be called once Actual: never called - unsatisfied and active real 0.24 user 0.00 sys 0.00 2023-10-20 01:50:32,776 FAILED: cmake/build/client_transport_test --gtest_filter=ClientTransportTest.AddOneStreamMultipleMessages GRPC_POLL_STRATEGY=epoll1 [ret=139, pid=1663532, time=0.3sec] ``` <!-- If you know who should review your pull request, please assign it to that person, otherwise the pull request would get assigned randomly. If your pull request is for a specific language, please add the appropriate lang label. -->
1 year ago
"//:ref_counted_ptr",
],
)
grpc_cc_library(
name = "call_final_info",
srcs = [
"lib/transport/call_final_info.cc",
],
hdrs = [
"lib/transport/call_final_info.h",
],
deps = [
"//:gpr",
"//:grpc_public_hdrs",
],
)
grpc_cc_library(
name = "call_finalization",
hdrs = [
"lib/channel/call_finalization.h",
],
language = "c++",
visibility = ["@grpc:alt_grpc_base_legacy"],
deps = [
"arena",
"call_final_info",
"context",
"//:gpr_platform",
],
)
grpc_cc_library(
name = "call_filters",
srcs = [
"lib/transport/call_filters.cc",
],
hdrs = [
"lib/transport/call_filters.h",
],
external_deps = [
"absl/log:check",
],
deps = [
"call_final_info",
"latch",
"map",
"message",
"metadata",
"ref_counted",
"status_flag",
"//:gpr",
"//:promise",
"//:ref_counted_ptr",
],
)
grpc_cc_library(
name = "interception_chain",
srcs = [
"lib/transport/interception_chain.cc",
],
hdrs = [
"lib/transport/interception_chain.h",
],
deps = [
"call_destination",
"call_filters",
"call_spine",
"match",
"metadata",
"ref_counted",
"//:gpr_platform",
],
)
grpc_cc_library(
name = "call_destination",
hdrs = [
"lib/transport/call_destination.h",
],
deps = [
"call_spine",
"//:gpr_platform",
"//:orphanable",
],
)
grpc_cc_library(
name = "parsed_metadata",
srcs = [
"lib/transport/parsed_metadata.cc",
],
hdrs = [
"lib/transport/parsed_metadata.h",
],
external_deps = [
"absl/functional:function_ref",
"absl/meta:type_traits",
"absl/strings",
],
deps = [
"slice",
"time",
"//:gpr_platform",
],
)
grpc_cc_library(
name = "metadata",
srcs = [
"lib/transport/metadata.cc",
],
hdrs = [
"lib/transport/metadata.h",
],
deps = [
"error_utils",
"metadata_batch",
"//:gpr_platform",
],
)
grpc_cc_library(
name = "message",
srcs = [
"lib/transport/message.cc",
],
hdrs = [
"lib/transport/message.h",
],
external_deps = [
"absl/strings",
],
deps = [
"arena",
"slice_buffer",
"//:gpr_platform",
"//:grpc_public_hdrs",
],
)
grpc_cc_library(
name = "call_spine",
srcs = [
"lib/transport/call_spine.cc",
],
hdrs = [
"lib/transport/call_spine.h",
],
external_deps = [
"absl/log:check",
],
deps = [
"1999",
"call_arena_allocator",
"call_filters",
"for_each",
"if",
"latch",
"message",
"metadata",
"pipe",
"promise_status",
"status_flag",
"try_seq",
"//:gpr",
"//:legacy_context",
"//:promise",
],
)
grpc_cc_library(
name = "metadata_batch",
srcs = [
"lib/transport/metadata_batch.cc",
],
hdrs = [
"lib/transport/custom_metadata.h",
"lib/transport/metadata_batch.h",
"lib/transport/simple_slice_based_metadata.h",
],
external_deps = [
"absl/base:no_destructor",
"absl/container:flat_hash_set",
"absl/container:inlined_vector",
"absl/functional:function_ref",
"absl/log:check",
"absl/meta:type_traits",
"absl/strings",
"absl/strings:str_format",
"absl/types:optional",
],
deps = [
"arena",
"chunked_vector",
"compression",
"experiments",
"if_list",
"metadata_compression_traits",
"packed_table",
"parsed_metadata",
"poll",
"slice",
"time",
"timeout_encoding",
"type_list",
"//:gpr",
"//:grpc_public_hdrs",
],
)
grpc_cc_library(
name = "timeout_encoding",
srcs = [
"lib/transport/timeout_encoding.cc",
],
hdrs = [
"lib/transport/timeout_encoding.h",
],
external_deps = [
"absl/base:core_headers",
"absl/log:check",
"absl/types:optional",
],
deps = [
"slice",
"time",
"//:gpr",
],
)
grpc_cc_library(
name = "call_arena_allocator",
srcs = [
"lib/transport/call_arena_allocator.cc",
],
hdrs = [
"lib/transport/call_arena_allocator.h",
],
deps = [
"arena",
"memory_quota",
"ref_counted",
"//:gpr_platform",
],
)
grpc_cc_library(
name = "compression",
srcs = [
"lib/compression/compression.cc",
"lib/compression/compression_internal.cc",
],
hdrs = [
"lib/compression/compression_internal.h",
],
external_deps = [
"absl/container:inlined_vector",
"absl/log:check",
"absl/strings",
"absl/strings:str_format",
"absl/types:optional",
],
deps = [
"bitset",
"channel_args",
"ref_counted_string",
"slice",
"useful",
"//:api_trace",
"//:gpr",
"//:grpc_public_hdrs",
"//:grpc_trace",
"//:ref_counted_ptr",
],
)
grpc_cc_library(
name = "chaotic_good_server",
srcs = [
"ext/transport/chaotic_good/server/chaotic_good_server.cc",
],
hdrs = [
"ext/transport/chaotic_good/server/chaotic_good_server.h",
],
external_deps = [
"absl/container:flat_hash_map",
"absl/log:check",
"absl/random",
"absl/random:bit_gen_ref",
"absl/status",
"absl/status:statusor",
],
language = "c++",
deps = [
"activity",
"arena",
"channel_args",
"channel_args_endpoint_config",
"chaotic_good_frame",
"chaotic_good_frame_header",
"chaotic_good_server_transport",
"chaotic_good_settings_metadata",
"closure",
"context",
"error",
"error_utils",
"event_engine_common",
"event_engine_context",
"event_engine_extensions",
"event_engine_query_extensions",
"event_engine_tcp_socket_utils",
"event_engine_wakeup_scheduler",
"grpc_promise_endpoint",
"if",
"inter_activity_latch",
"iomgr_fwd",
"latch",
"memory_quota",
"metadata",
"metadata_batch",
"race",
"resource_quota",
"sleep",
"slice",
"slice_buffer",
"status_helper",
"time",
"try_seq",
"//:channelz",
"//:gpr",
"//:gpr_platform",
"//:grpc_base",
"//:handshaker",
"//:hpack_encoder",
"//:hpack_parser",
"//:iomgr",
"//:orphanable",
"//:ref_counted_ptr",
"//:server",
],
)
grpc_cc_library(
name = "chaotic_good_connector",
srcs = [
"ext/transport/chaotic_good/client/chaotic_good_connector.cc",
],
hdrs = [
"ext/transport/chaotic_good/client/chaotic_good_connector.h",
],
external_deps = [
"absl/log:check",
"absl/random",
"absl/random:bit_gen_ref",
"absl/status",
"absl/status:statusor",
],
language = "c++",
deps = [
"activity",
"arena",
"channel_args",
"channel_args_endpoint_config",
"chaotic_good_client_transport",
"chaotic_good_frame",
"chaotic_good_frame_header",
"chaotic_good_settings_metadata",
"closure",
"context",
"default_event_engine",
"error",
"error_utils",
"event_engine_extensions",
"event_engine_query_extensions",
"event_engine_tcp_socket_utils",
"event_engine_wakeup_scheduler",
"grpc_promise_endpoint",
"inter_activity_latch",
"latch",
"memory_quota",
"no_destruct",
"notification",
"race",
"resource_quota",
"sleep",
"slice",
"slice_buffer",
"subchannel_connector",
"time",
"try_seq",
"wait_for_callback",
"//:api_trace",
"//:channel",
"//:channel_create",
"//:config",
"//:debug_location",
"//:exec_ctx",
"//:gpr",
"//:gpr_platform",
"//:grpc_base",
"//:grpc_client_channel",
"//:handshaker",
"//:hpack_encoder",
"//:hpack_parser",
"//:iomgr",
"//:ref_counted_ptr",
],
)
grpc_cc_library(
name = "metrics",
srcs = [
"lib/channel/metrics.cc",
],
hdrs = [
"lib/channel/metrics.h",
],
external_deps = [
"absl/container:flat_hash_map",
"absl/functional:any_invocable",
"absl/functional:function_ref",
"absl/log:check",
"absl/strings",
"absl/types:span",
],
language = "c++",
deps = [
"arena",
"channel_args",
"no_destruct",
"slice",
"time",
"//:call_tracer",
"//:gpr",
"//:legacy_context",
],
)
### UPB Targets
grpc_upb_proto_library(
name = "envoy_admin_upb",
deps = ["@envoy_api//envoy/admin/v3:pkg"],
)
grpc_upb_proto_library(
name = "envoy_config_cluster_upb",
deps = ["@envoy_api//envoy/config/cluster/v3:pkg"],
)
grpc_upb_proto_reflection_library(
name = "envoy_config_cluster_upbdefs",
deps = ["@envoy_api//envoy/config/cluster/v3:pkg"],
)
grpc_upb_proto_library(
name = "envoy_config_core_upb",
deps = ["@envoy_api//envoy/config/core/v3:pkg"],
)
grpc_upb_proto_library(
name = "envoy_config_endpoint_upb",
deps = ["@envoy_api//envoy/config/endpoint/v3:pkg"],
)
grpc_upb_proto_reflection_library(
name = "envoy_config_endpoint_upbdefs",
deps = ["@envoy_api//envoy/config/endpoint/v3:pkg"],
)
grpc_upb_proto_library(
name = "envoy_config_listener_upb",
deps = ["@envoy_api//envoy/config/listener/v3:pkg"],
)
grpc_upb_proto_reflection_library(
name = "envoy_config_listener_upbdefs",
deps = ["@envoy_api//envoy/config/listener/v3:pkg"],
)
grpc_upb_proto_library(
name = "envoy_config_rbac_upb",
deps = ["@envoy_api//envoy/config/rbac/v3:pkg"],
)
grpc_upb_proto_library(
name = "envoy_config_route_upb",
deps = ["@envoy_api//envoy/config/route/v3:pkg"],
)
grpc_upb_proto_reflection_library(
name = "envoy_config_route_upbdefs",
deps = ["@envoy_api//envoy/config/route/v3:pkg"],
)
grpc_upb_proto_library(
name = "envoy_extensions_clusters_aggregate_upb",
deps = ["@envoy_api//envoy/extensions/clusters/aggregate/v3:pkg"],
)
grpc_upb_proto_reflection_library(
name = "envoy_extensions_clusters_aggregate_upbdefs",
deps = ["@envoy_api//envoy/extensions/clusters/aggregate/v3:pkg"],
)
grpc_upb_proto_library(
name = "envoy_extensions_filters_common_fault_upb",
deps = ["@envoy_api//envoy/extensions/filters/common/fault/v3:pkg"],
)
grpc_upb_proto_library(
name = "envoy_extensions_filters_http_fault_upb",
deps = ["@envoy_api//envoy/extensions/filters/http/fault/v3:pkg"],
)
grpc_upb_proto_reflection_library(
name = "envoy_extensions_filters_http_fault_upbdefs",
deps = ["@envoy_api//envoy/extensions/filters/http/fault/v3:pkg"],
)
grpc_upb_proto_library(
name = "envoy_extensions_filters_http_rbac_upb",
deps = ["@envoy_api//envoy/extensions/filters/http/rbac/v3:pkg"],
)
grpc_upb_proto_reflection_library(
name = "envoy_extensions_filters_http_rbac_upbdefs",
deps = ["@envoy_api//envoy/extensions/filters/http/rbac/v3:pkg"],
)
grpc_upb_proto_library(
name = "envoy_extensions_filters_http_router_upb",
deps = ["@envoy_api//envoy/extensions/filters/http/router/v3:pkg"],
)
grpc_upb_proto_reflection_library(
name = "envoy_extensions_filters_http_router_upbdefs",
deps = ["@envoy_api//envoy/extensions/filters/http/router/v3:pkg"],
)
grpc_upb_proto_library(
name = "envoy_extensions_filters_http_stateful_session_upb",
deps = ["@envoy_api//envoy/extensions/filters/http/stateful_session/v3:pkg"],
)
grpc_upb_proto_reflection_library(
name = "envoy_extensions_filters_http_stateful_session_upbdefs",
deps = ["@envoy_api//envoy/extensions/filters/http/stateful_session/v3:pkg"],
)
grpc_upb_proto_library(
name = "envoy_extensions_http_stateful_session_cookie_upb",
deps = ["@envoy_api//envoy/extensions/http/stateful_session/cookie/v3:pkg"],
)
grpc_upb_proto_reflection_library(
name = "envoy_extensions_http_stateful_session_cookie_upbdefs",
deps = ["@envoy_api//envoy/extensions/http/stateful_session/cookie/v3:pkg"],
)
grpc_upb_proto_library(
name = "envoy_type_http_upb",
deps = ["@envoy_api//envoy/type/http/v3:pkg"],
)
grpc_upb_proto_library(
name = "envoy_extensions_load_balancing_policies_client_side_weighted_round_robin_upb",
deps = [
"@envoy_api//envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3:pkg",
],
)
grpc_upb_proto_library(
name = "envoy_extensions_load_balancing_policies_ring_hash_upb",
deps = ["@envoy_api//envoy/extensions/load_balancing_policies/ring_hash/v3:pkg"],
)
grpc_upb_proto_library(
name = "envoy_extensions_load_balancing_policies_wrr_locality_upb",
deps = ["@envoy_api//envoy/extensions/load_balancing_policies/wrr_locality/v3:pkg"],
)
grpc_upb_proto_library(
name = "envoy_extensions_load_balancing_policies_pick_first_upb",
deps = ["@envoy_api//envoy/extensions/load_balancing_policies/pick_first/v3:pkg"],
)
grpc_upb_proto_library(
name = "envoy_extensions_filters_network_http_connection_manager_upb",
deps = [
"@envoy_api//envoy/extensions/filters/network/http_connection_manager/v3:pkg",
],
)
grpc_upb_proto_reflection_library(
name = "envoy_extensions_filters_network_http_connection_manager_upbdefs",
deps = [
"@envoy_api//envoy/extensions/filters/network/http_connection_manager/v3:pkg",
],
)
grpc_upb_proto_library(
name = "envoy_extensions_transport_sockets_tls_upb",
deps = ["@envoy_api//envoy/extensions/transport_sockets/tls/v3:pkg"],
)
grpc_upb_proto_reflection_library(
name = "envoy_extensions_transport_sockets_tls_upbdefs",
deps = ["@envoy_api//envoy/extensions/transport_sockets/tls/v3:pkg"],
)
grpc_upb_proto_library(
name = "envoy_extensions_upstreams_http_upb",
deps = ["@envoy_api//envoy/extensions/upstreams/http/v3:pkg"],
)
grpc_upb_proto_reflection_library(
name = "envoy_extensions_upstreams_http_upbdefs",
deps = ["@envoy_api//envoy/extensions/upstreams/http/v3:pkg"],
)
grpc_upb_proto_library(
name = "envoy_service_discovery_upb",
deps = ["@envoy_api//envoy/service/discovery/v3:pkg"],
)
grpc_upb_proto_reflection_library(
name = "envoy_service_discovery_upbdefs",
deps = ["@envoy_api//envoy/service/discovery/v3:pkg"],
)
grpc_upb_proto_library(
name = "envoy_service_load_stats_upb",
deps = ["@envoy_api//envoy/service/load_stats/v3:pkg"],
)
grpc_upb_proto_reflection_library(
name = "envoy_service_load_stats_upbdefs",
deps = ["@envoy_api//envoy/service/load_stats/v3:pkg"],
)
grpc_upb_proto_library(
name = "envoy_service_status_upb",
deps = ["@envoy_api//envoy/service/status/v3:pkg"],
)
grpc_upb_proto_reflection_library(
name = "envoy_service_status_upbdefs",
deps = ["@envoy_api//envoy/service/status/v3:pkg"],
)
grpc_upb_proto_library(
name = "envoy_type_matcher_upb",
deps = ["@envoy_api//envoy/type/matcher/v3:pkg"],
)
grpc_upb_proto_library(
name = "envoy_type_upb",
deps = ["@envoy_api//envoy/type/v3:pkg"],
)
grpc_upb_proto_library(
name = "xds_type_upb",
deps = ["@com_github_cncf_xds//xds/type/v3:pkg"],
)
grpc_upb_proto_reflection_library(
name = "xds_type_upbdefs",
deps = ["@com_github_cncf_xds//xds/type/v3:pkg"],
)
grpc_upb_proto_library(
name = "xds_orca_upb",
deps = ["@com_github_cncf_xds//xds/data/orca/v3:pkg"],
)
grpc_upb_proto_library(
name = "xds_orca_service_upb",
deps = ["@com_github_cncf_xds//xds/service/orca/v3:pkg"],
)
grpc_upb_proto_library(
name = "grpc_health_upb",
deps = ["//src/proto/grpc/health/v1:health_proto_descriptor"],
)
grpc_upb_proto_library(
name = "google_rpc_status_upb",
deps = ["@com_google_googleapis//google/rpc:status_proto"],
)
grpc_upb_proto_reflection_library(
name = "google_rpc_status_upbdefs",
deps = ["@com_google_googleapis//google/rpc:status_proto"],
)
grpc_upb_proto_library(
name = "google_type_expr_upb",
deps = ["@com_google_googleapis//google/type:expr_proto"],
)
grpc_upb_proto_library(
name = "grpc_lb_upb",
deps = ["//src/proto/grpc/lb/v1:load_balancer_proto_descriptor"],
)
grpc_upb_proto_library(
name = "alts_upb",
deps = ["//src/proto/grpc/gcp:alts_handshaker_proto"],
)
grpc_upb_proto_library(
name = "rls_upb",
deps = ["//src/proto/grpc/lookup/v1:rls_proto_descriptor"],
)
grpc_upb_proto_library(
name = "rls_config_upb",
deps = ["//src/proto/grpc/lookup/v1:rls_config_proto_descriptor"],
)
grpc_upb_proto_reflection_library(
name = "rls_config_upbdefs",
deps = ["//src/proto/grpc/lookup/v1:rls_config_proto_descriptor"],
)
WELL_KNOWN_PROTO_TARGETS = [
"any",
"duration",
"empty",
"struct",
"timestamp",
"wrappers",
]
[
grpc_upb_proto_library(
name = "protobuf_" + target + "_upb",
deps = ["@com_google_protobuf//:" + target + "_proto"],
)
for target in WELL_KNOWN_PROTO_TARGETS
]
[
grpc_upb_proto_reflection_library(
name = "protobuf_" + target + "_upbdefs",
deps = ["@com_google_protobuf//:" + target + "_proto"],
)
for target in WELL_KNOWN_PROTO_TARGETS
]
grpc_generate_one_off_internal_targets()