diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 14a883c7cdc..7998f90b0a0 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1,11 +1,12 @@ -/**/OWNERS @markdroth @a11r /bazel/** @veblush @gnossen /bazel/experiments.yaml /cmake/** @veblush @apolcyn -/src/core/ext/filters/client_channel/** @markdroth +/src/core/client_channel/** @markdroth /src/core/ext/transport/chttp2/transport/** @ctiller -/src/core/ext/xds/** @markdroth -/src/core/lib/resolver/** @markdroth -/src/core/lib/service_config/** @markdroth +/src/core/load_balancing/** @markdroth +/src/core/resolver/** @markdroth +/src/core/server/xds* @markdroth +/src/core/service_config/** @markdroth +/src/core/xds/** @markdroth /tools/dockerfile/** @drfloob @apolcyn @gnossen /tools/run_tests/xds_k8s_test_driver/** @sergiitk @XuanWang-Amos @gnossen diff --git a/.github/workflows/pr-auto-fix.yaml b/.github/workflows/pr-auto-fix.yaml index 13511d3c86c..7566c2776aa 100644 --- a/.github/workflows/pr-auto-fix.yaml +++ b/.github/workflows/pr-auto-fix.yaml @@ -29,7 +29,7 @@ jobs: path: ~/.cache/bazel # formattedTime here is like 2021323 - the year concatenated with the week then # the day of that week. - # As this changes every day, we cycle to a new cache once per day, with lookup + # As this changes every day, we cycle to a new cache once per day, with lookup # across the week (and then the year). key: ${{ runner.os }}-${{ steps.current-time-with-day.outputs.formattedTime }} restore-keys: | @@ -48,13 +48,13 @@ jobs: with: script: | // If you'd like not to run this code on your commits, add your github user id here: - NO_AUTOFIX_USERS = ["copybara-service[bot]"] - const { owner, repo } = context.repo + const NO_AUTOFIX_USERS = ["copybara-service[bot]"]; + const { owner, repo } = context.repo; console.log("Actor: " + context.actor); if (NO_AUTOFIX_USERS.includes(context.actor)) { console.log('Cancelling'); const run_id = "${{ github.run_id }}"; - await github.actions.cancelWorkflowRun({ owner, repo, run_id }); + await github.rest.actions.cancelWorkflowRun({ owner, repo, run_id }); return 'go'; } else { return 'stay'; diff --git a/BUILD b/BUILD index 894186b35f2..0c611f2db1e 100644 --- a/BUILD +++ b/BUILD @@ -127,6 +127,11 @@ config_setting( values = {"apple_platform_type": "tvos"}, ) +config_setting( + name = "visionos", + values = {"apple_platform_type": "visionos"}, +) + config_setting( name = "watchos", values = {"apple_platform_type": "watchos"}, @@ -237,11 +242,11 @@ config_setting( python_config_settings() # This should be updated along with build_handwritten.yaml -g_stands_for = "grateful" # @unused +g_stands_for = "gnarly" # @unused -core_version = "40.0.0" # @unused +core_version = "41.0.0" # @unused -version = "1.64.0-dev" # @unused +version = "1.65.0-dev" # @unused GPR_PUBLIC_HDRS = [ "include/grpc/support/alloc.h", @@ -291,6 +296,7 @@ GRPC_PUBLIC_HDRS = [ "include/grpc/grpc_posix.h", "include/grpc/grpc_security.h", "include/grpc/grpc_security_constants.h", + "include/grpc/passive_listener.h", "include/grpc/slice.h", "include/grpc/slice_buffer.h", "include/grpc/status.h", @@ -452,6 +458,7 @@ GRPCXX_PUBLIC_HDRS = [ "include/grpcpp/impl/service_type.h", "include/grpcpp/impl/status.h", "include/grpcpp/impl/sync.h", + "include/grpcpp/passive_listener.h", "include/grpcpp/resource_quota.h", "include/grpcpp/security/audit_logging.h", "include/grpcpp/security/tls_crl_provider.h", @@ -576,6 +583,7 @@ grpc_cc_library( defines = ["GRPC_NO_XDS"], external_deps = [ "absl/base:core_headers", + "absl/log:log", ], language = "c++", public_hdrs = GRPC_PUBLIC_HDRS, @@ -647,6 +655,7 @@ grpc_cc_library( }), external_deps = [ "absl/base:core_headers", + "absl/log:log", ], language = "c++", public_hdrs = GRPC_PUBLIC_HDRS, @@ -725,31 +734,6 @@ grpc_cc_library( grpc_cc_library( name = "gpr", srcs = [ - "//src/core:lib/gpr/alloc.cc", - "//src/core:lib/gpr/android/log.cc", - "//src/core:lib/gpr/iphone/cpu.cc", - "//src/core:lib/gpr/linux/cpu.cc", - "//src/core:lib/gpr/linux/log.cc", - "//src/core:lib/gpr/log.cc", - "//src/core:lib/gpr/msys/tmpfile.cc", - "//src/core:lib/gpr/posix/cpu.cc", - "//src/core:lib/gpr/posix/log.cc", - "//src/core:lib/gpr/posix/string.cc", - "//src/core:lib/gpr/posix/sync.cc", - "//src/core:lib/gpr/posix/time.cc", - "//src/core:lib/gpr/posix/tmpfile.cc", - "//src/core:lib/gpr/string.cc", - "//src/core:lib/gpr/sync.cc", - "//src/core:lib/gpr/sync_abseil.cc", - "//src/core:lib/gpr/time.cc", - "//src/core:lib/gpr/time_precise.cc", - "//src/core:lib/gpr/windows/cpu.cc", - "//src/core:lib/gpr/windows/log.cc", - "//src/core:lib/gpr/windows/string.cc", - "//src/core:lib/gpr/windows/string_util.cc", - "//src/core:lib/gpr/windows/sync.cc", - "//src/core:lib/gpr/windows/time.cc", - "//src/core:lib/gpr/windows/tmpfile.cc", "//src/core:lib/gprpp/crash.cc", "//src/core:lib/gprpp/fork.cc", "//src/core:lib/gprpp/host_port.cc", @@ -759,12 +743,33 @@ grpc_cc_library( "//src/core:lib/gprpp/time_util.cc", "//src/core:lib/gprpp/windows/stat.cc", "//src/core:lib/gprpp/windows/thd.cc", + "//src/core:util/alloc.cc", + "//src/core:util/android/log.cc", + "//src/core:util/iphone/cpu.cc", + "//src/core:util/linux/cpu.cc", + "//src/core:util/linux/log.cc", + "//src/core:util/log.cc", + "//src/core:util/msys/tmpfile.cc", + "//src/core:util/posix/cpu.cc", + "//src/core:util/posix/log.cc", + "//src/core:util/posix/string.cc", + "//src/core:util/posix/sync.cc", + "//src/core:util/posix/time.cc", + "//src/core:util/posix/tmpfile.cc", + "//src/core:util/string.cc", + "//src/core:util/sync.cc", + "//src/core:util/sync_abseil.cc", + "//src/core:util/time.cc", + "//src/core:util/time_precise.cc", + "//src/core:util/windows/cpu.cc", + "//src/core:util/windows/log.cc", + "//src/core:util/windows/string.cc", + "//src/core:util/windows/string_util.cc", + "//src/core:util/windows/sync.cc", + "//src/core:util/windows/time.cc", + "//src/core:util/windows/tmpfile.cc", ], hdrs = [ - "//src/core:lib/gpr/alloc.h", - "//src/core:lib/gpr/string.h", - "//src/core:lib/gpr/time_precise.h", - "//src/core:lib/gpr/tmpfile.h", "//src/core:lib/gprpp/crash.h", "//src/core:lib/gprpp/fork.h", "//src/core:lib/gprpp/host_port.h", @@ -774,13 +779,19 @@ grpc_cc_library( "//src/core:lib/gprpp/sync.h", "//src/core:lib/gprpp/thd.h", "//src/core:lib/gprpp/time_util.h", + "//src/core:util/alloc.h", + "//src/core:util/string.h", + "//src/core:util/time_precise.h", + "//src/core:util/tmpfile.h", ], external_deps = [ "absl/base", "absl/base:core_headers", "absl/base:log_severity", "absl/functional:any_invocable", - "absl/log", + "absl/log:check", + "absl/log:globals", + "absl/log:log", "absl/memory", "absl/random", "absl/status", @@ -823,6 +834,7 @@ grpc_cc_library( "avoid_dep", "nofixdeps", ], + visibility = ["@grpc:gpr_public_hdrs"], ) grpc_cc_library( @@ -850,7 +862,6 @@ grpc_cc_library( # standard plugins "census", "//src/core:grpc_backend_metric_filter", - "//src/core:grpc_deadline_filter", "//src/core:grpc_client_authority_filter", "//src/core:grpc_lb_policy_grpclb", "//src/core:grpc_lb_policy_outlier_detection", @@ -876,7 +887,7 @@ grpc_cc_library( grpc_cc_library( name = "grpc_public_hdrs", - hdrs = GRPC_PUBLIC_HDRS, + hdrs = GRPC_PUBLIC_HDRS + GRPC_PUBLIC_EVENT_ENGINE_HDRS, external_deps = [ "absl/status:statusor", "absl/strings", @@ -885,6 +896,7 @@ grpc_cc_library( "avoid_dep", "nofixdeps", ], + visibility = ["@grpc:grpc_public_hdrs"], deps = [ "channel_arg_names", "gpr_public_hdrs", @@ -895,6 +907,8 @@ grpc_cc_library( name = "grpc++_public_hdrs", hdrs = GRPCXX_PUBLIC_HDRS, external_deps = [ + "absl/log:check", + "absl/log:log", "absl/strings:cord", "absl/synchronization", "protobuf_headers", @@ -904,7 +918,7 @@ grpc_cc_library( "avoid_dep", "nofixdeps", ], - visibility = ["@grpc:public"], + visibility = ["@grpc:grpc++_public_hdrs"], deps = [ "grpc_public_hdrs", "//src/core:gpr_atm", @@ -924,6 +938,8 @@ grpc_cc_library( "src/cpp/server/secure_server_credentials.h", ], external_deps = [ + "absl/log:check", + "absl/log:log", "absl/strings:cord", ], language = "c++", @@ -992,6 +1008,8 @@ grpc_cc_library( ], external_deps = [ "absl/base:core_headers", + "absl/log:check", + "absl/log:log", "absl/status", "absl/status:statusor", "absl/strings", @@ -1051,6 +1069,7 @@ grpc_cc_library( ], external_deps = [ "absl/container:flat_hash_set", + "absl/log:log", "absl/strings", "absl/types:optional", "absl/types:span", @@ -1122,6 +1141,8 @@ grpc_cc_library( "absl/container:flat_hash_map", "absl/functional:any_invocable", "absl/hash", + "absl/log:check", + "absl/log:log", "absl/memory", "absl/meta:type_traits", "absl/status", @@ -1181,7 +1202,10 @@ grpc_cc_library( hdrs = [ "src/cpp/client/secure_credentials.h", ], - external_deps = ["absl/strings"], + external_deps = [ + "absl/log:check", + "absl/strings", + ], language = "c++", deps = [ "exec_ctx", @@ -1203,6 +1227,9 @@ grpc_cc_library( hdrs = [ "src/cpp/server/secure_server_credentials.h", ], + external_deps = [ + "absl/log:check", + ], language = "c++", public_hdrs = [ "include/grpcpp/xds_server_builder.h", @@ -1228,6 +1255,8 @@ grpc_cc_library( "src/cpp/server/insecure_server_credentials.cc", ], external_deps = [ + "absl/log:check", + "absl/log:log", "absl/strings", "absl/synchronization", ], @@ -1278,6 +1307,7 @@ grpc_cc_library( "include/grpcpp/security/alts_util.h", ], external_deps = [ + "absl/log:log", "@com_google_protobuf//upb:base", "@com_google_protobuf//upb:mem", "@com_google_protobuf//upb:message", @@ -1348,17 +1378,19 @@ grpc_cc_library( grpc_cc_library( name = "channelz", srcs = [ - "//src/core:lib/channel/channel_trace.cc", - "//src/core:lib/channel/channelz.cc", - "//src/core:lib/channel/channelz_registry.cc", + "//src/core:channelz/channel_trace.cc", + "//src/core:channelz/channelz.cc", + "//src/core:channelz/channelz_registry.cc", ], hdrs = [ - "//src/core:lib/channel/channel_trace.h", - "//src/core:lib/channel/channelz.h", - "//src/core:lib/channel/channelz_registry.h", + "//src/core:channelz/channel_trace.h", + "//src/core:channelz/channelz.h", + "//src/core:channelz/channelz_registry.h", ], external_deps = [ "absl/base:core_headers", + "absl/log:check", + "absl/log:log", "absl/status:statusor", "absl/strings", "absl/types:optional", @@ -1417,6 +1449,8 @@ grpc_cc_library( ], external_deps = [ "absl/container:inlined_vector", + "absl/log:check", + "absl/log:log", ], language = "c++", deps = [ @@ -1468,6 +1502,9 @@ grpc_cc_library( hdrs = [ "//src/core:lib/surface/api_trace.h", ], + external_deps = [ + "absl/log:log", + ], language = "c++", deps = [ "gpr", @@ -1481,6 +1518,9 @@ grpc_cc_library( "//src/core:lib/surface/byte_buffer.cc", "//src/core:lib/surface/byte_buffer_reader.cc", ], + external_deps = [ + "absl/log:check", + ], language = "c++", deps = [ "exec_ctx", @@ -1618,6 +1658,8 @@ grpc_cc_library( "absl/container:flat_hash_map", "absl/container:flat_hash_set", "absl/functional:any_invocable", + "absl/log:check", + "absl/log:log", "absl/status", "absl/status:statusor", "absl/strings", @@ -1705,6 +1747,7 @@ grpc_cc_library( "//src/core:lib/channel/call_tracer.h", ], external_deps = [ + "absl/log:check", "absl/status", "absl/strings", "absl/types:optional", @@ -1736,6 +1779,7 @@ grpc_cc_library( ], external_deps = [ "absl/base:core_headers", + "absl/log:check", "absl/status:statusor", "absl/strings", "absl/types:optional", @@ -1778,6 +1822,8 @@ grpc_cc_library( ], external_deps = [ "absl/base:core_headers", + "absl/log:check", + "absl/log:log", "absl/status", "absl/status:statusor", "absl/types:optional", @@ -1796,7 +1842,7 @@ grpc_cc_library( "ref_counted_ptr", "stats", "//src/core:arena", - "//src/core:call_size_estimator", + "//src/core:call_arena_allocator", "//src/core:channel_args", "//src/core:channel_fwd", "//src/core:channel_init", @@ -1824,6 +1870,7 @@ grpc_cc_library( ], external_deps = [ "absl/base:core_headers", + "absl/log:check", "absl/status:statusor", "absl/strings", "absl/types:optional", @@ -1854,10 +1901,10 @@ grpc_cc_library( grpc_cc_library( name = "server", srcs = [ - "//src/core:lib/surface/server.cc", + "//src/core:server/server.cc", ], hdrs = [ - "//src/core:lib/surface/server.h", + "//src/core:server/server.h", ], external_deps = [ "absl/base:core_headers", @@ -1865,6 +1912,8 @@ grpc_cc_library( "absl/container:flat_hash_map", "absl/container:flat_hash_set", "absl/hash", + "absl/log:check", + "absl/log:log", "absl/random", "absl/status", "absl/status:statusor", @@ -1894,9 +1943,7 @@ grpc_cc_library( "promise", "ref_counted_ptr", "stats", - "//src/core:1999", "//src/core:activity", - "//src/core:arena", "//src/core:arena_promise", "//src/core:cancel_callback", "//src/core:channel_args", @@ -1910,6 +1957,7 @@ grpc_cc_library( "//src/core:error", "//src/core:error_utils", "//src/core:experiments", + "//src/core:interception_chain", "//src/core:iomgr_fwd", "//src/core:map", "//src/core:metadata_batch", @@ -1982,6 +2030,8 @@ grpc_cc_library( "absl/container:inlined_vector", "absl/functional:any_invocable", "absl/functional:function_ref", + "absl/log:check", + "absl/log:log", "absl/meta:type_traits", "absl/status", "absl/status:statusor", @@ -2028,10 +2078,12 @@ grpc_cc_library( "//src/core:arena_promise", "//src/core:atomic_utils", "//src/core:bitset", + "//src/core:call_destination", "//src/core:call_filters", "//src/core:call_final_info", "//src/core:call_finalization", "//src/core:call_spine", + "//src/core:cancel_callback", "//src/core:channel_args", "//src/core:channel_args_preconditioning", "//src/core:channel_fwd", @@ -2107,6 +2159,10 @@ grpc_cc_library( "src/cpp/server/load_reporter/constants.h", "src/cpp/server/load_reporter/load_data_store.h", ], + external_deps = [ + "absl/log:check", + "absl/log:log", + ], language = "c++", deps = [ "gpr", @@ -2138,6 +2194,9 @@ grpc_cc_library( "src/cpp/server/load_reporter/load_reporting_service_server_builder_option.cc", "src/cpp/server/load_reporter/util.cc", ], + external_deps = [ + "absl/log:log", + ], language = "c++", public_hdrs = [ "include/grpcpp/ext/server_load_reporting.h", @@ -2165,6 +2224,8 @@ grpc_cc_library( "src/cpp/server/load_reporter/load_reporter_async_service_impl.h", ], external_deps = [ + "absl/log:check", + "absl/log:log", "absl/memory", "protobuf_headers", ], @@ -2189,6 +2250,9 @@ grpc_cc_library( hdrs = [ "src/cpp/server/load_reporter/get_cpu_stats.h", ], + external_deps = [ + "absl/log:log", + ], language = "c++", deps = [ "gpr", @@ -2206,6 +2270,8 @@ grpc_cc_library( "src/cpp/server/load_reporter/load_reporter.h", ], external_deps = [ + "absl/log:check", + "absl/log:log", "opencensus-stats", "opencensus-tags", "protobuf_headers", @@ -2223,6 +2289,9 @@ grpc_cc_library( grpc_cc_library( name = "grpc_security_base", srcs = [ + "//src/core:handshaker/security/secure_endpoint.cc", + "//src/core:handshaker/security/security_handshaker.cc", + "//src/core:handshaker/security/tsi_error.cc", "//src/core:lib/security/context/security_context.cc", "//src/core:lib/security/credentials/call_creds_util.cc", "//src/core:lib/security/credentials/composite/composite_credentials.cc", @@ -2230,12 +2299,12 @@ grpc_cc_library( "//src/core:lib/security/credentials/plugin/plugin_credentials.cc", "//src/core:lib/security/security_connector/security_connector.cc", "//src/core:lib/security/transport/client_auth_filter.cc", - "//src/core:lib/security/transport/secure_endpoint.cc", - "//src/core:lib/security/transport/security_handshaker.cc", "//src/core:lib/security/transport/server_auth_filter.cc", - "//src/core:lib/security/transport/tsi_error.cc", ], hdrs = [ + "//src/core:handshaker/security/secure_endpoint.h", + "//src/core:handshaker/security/security_handshaker.h", + "//src/core:handshaker/security/tsi_error.h", "//src/core:lib/security/context/security_context.h", "//src/core:lib/security/credentials/call_creds_util.h", "//src/core:lib/security/credentials/composite/composite_credentials.h", @@ -2243,13 +2312,12 @@ grpc_cc_library( "//src/core:lib/security/credentials/plugin/plugin_credentials.h", "//src/core:lib/security/security_connector/security_connector.h", "//src/core:lib/security/transport/auth_filters.h", - "//src/core:lib/security/transport/secure_endpoint.h", - "//src/core:lib/security/transport/security_handshaker.h", - "//src/core:lib/security/transport/tsi_error.h", ], external_deps = [ "absl/base:core_headers", "absl/container:inlined_vector", + "absl/log:check", + "absl/log:log", "absl/status", "absl/status:statusor", "absl/strings", @@ -2357,6 +2425,7 @@ grpc_cc_library( "//src/core:tsi/alts/handshaker/transport_security_common_api.h", ], external_deps = [ + "absl/log:log", "@com_google_protobuf//upb:base", "@com_google_protobuf//upb:mem", ], @@ -2414,6 +2483,8 @@ grpc_cc_library( external_deps = [ "absl/base:core_headers", "absl/functional:any_invocable", + "absl/log:check", + "absl/log:log", "absl/status", "absl/status:statusor", "absl/strings", @@ -2470,6 +2541,7 @@ grpc_cc_library( "//src/core:grpc_backend_metric_provider", "//src/core:grpc_crl_provider", "//src/core:grpc_service_config", + "//src/core:grpc_transport_chttp2_server", "//src/core:grpc_transport_inproc", "//src/core:json", "//src/core:json_reader", @@ -2496,6 +2568,8 @@ grpc_cc_library( external_deps = [ "absl/base:core_headers", "absl/functional:any_invocable", + "absl/log:check", + "absl/log:log", "absl/status", "absl/status:statusor", "absl/strings", @@ -2527,6 +2601,7 @@ grpc_cc_library( "grpc_security_base", "grpc_service_config_impl", "grpc_trace", + "grpc_transport_chttp2", "grpc_unsecure", "grpcpp_backend_metric_recorder", "grpcpp_call_metric_recorder", @@ -2548,6 +2623,7 @@ grpc_cc_library( "//src/core:grpc_backend_metric_provider", "//src/core:grpc_insecure_credentials", "//src/core:grpc_service_config", + "//src/core:grpc_transport_chttp2_server", "//src/core:grpc_transport_inproc", "//src/core:ref_counted", "//src/core:resource_quota", @@ -2650,6 +2726,7 @@ grpc_cc_library( ], external_deps = [ "absl/base:core_headers", + "absl/log:log", "absl/strings", ], language = "c++", @@ -2674,6 +2751,7 @@ grpc_cc_library( ], external_deps = [ "absl/base:core_headers", + "absl/log:check", "absl/strings", "absl/time", "absl/types:optional", @@ -2832,6 +2910,7 @@ grpc_cc_library( external_deps = [ "absl/base:core_headers", "absl/base:endian", + "absl/log:check", "absl/status", "absl/status:statusor", "absl/strings", @@ -2923,6 +3002,8 @@ grpc_cc_library( external_deps = [ "absl/base:core_headers", "absl/container:inlined_vector", + "absl/log:check", + "absl/log:log", ], language = "c++", visibility = ["@grpc:client_channel"], @@ -2943,7 +3024,10 @@ grpc_cc_library( name = "grpc_trace", srcs = ["//src/core:lib/debug/trace.cc"], hdrs = ["//src/core:lib/debug/trace.h"], - external_deps = ["absl/strings"], + external_deps = [ + "absl/log:log", + "absl/strings", + ], language = "c++", visibility = ["@grpc:trace"], deps = [ @@ -2964,13 +3048,13 @@ grpc_cc_library( external_deps = [ "absl/flags:flag", "absl/flags:marshalling", + "absl/log:check", "absl/strings", "absl/types:optional", ], deps = [ "gpr_platform", "//src/core:env", - "//src/core:gpr_log_internal", ], ) @@ -2999,7 +3083,10 @@ grpc_cc_library( srcs = [ "//src/core:lib/config/core_configuration.cc", ], - external_deps = ["absl/functional:any_invocable"], + external_deps = [ + "absl/functional:any_invocable", + "absl/log:check", + ], language = "c++", public_hdrs = [ "//src/core:lib/config/core_configuration.h", @@ -3079,17 +3166,19 @@ grpc_cc_library( grpc_cc_library( name = "handshaker", srcs = [ - "//src/core:lib/transport/handshaker.cc", + "//src/core:handshaker/handshaker.cc", ], external_deps = [ "absl/base:core_headers", "absl/container:inlined_vector", + "absl/log:check", + "absl/log:log", "absl/status", "absl/strings:str_format", ], language = "c++", public_hdrs = [ - "//src/core:lib/transport/handshaker.h", + "//src/core:handshaker/handshaker.h", ], visibility = ["@grpc:alt_grpc_base_legacy"], deps = [ @@ -3116,17 +3205,18 @@ grpc_cc_library( grpc_cc_library( name = "http_connect_handshaker", srcs = [ - "//src/core:lib/transport/http_connect_handshaker.cc", + "//src/core:handshaker/http_connect/http_connect_handshaker.cc", ], external_deps = [ "absl/base:core_headers", + "absl/log:log", "absl/status", "absl/strings", "absl/types:optional", ], language = "c++", public_hdrs = [ - "//src/core:lib/transport/http_connect_handshaker.h", + "//src/core:handshaker/http_connect/http_connect_handshaker.h", ], visibility = ["@grpc:alt_grpc_base_legacy"], deps = [ @@ -3164,7 +3254,11 @@ grpc_cc_library( "//src/core:lib/iomgr/executor.h", "//src/core:lib/iomgr/iomgr_internal.h", ], - external_deps = ["absl/strings:str_format"], + external_deps = [ + "absl/log:check", + "absl/log:log", + "absl/strings:str_format", + ], visibility = [ "@grpc:alt_grpc_base_legacy", "@grpc:exec_ctx", @@ -3193,6 +3287,8 @@ grpc_cc_library( "//src/core:lib/address_utils/sockaddr_utils.h", ], external_deps = [ + "absl/log:check", + "absl/log:log", "absl/status", "absl/status:statusor", "absl/strings", @@ -3226,6 +3322,8 @@ grpc_cc_library( "//src/core:lib/iomgr/iomgr.h", ], external_deps = [ + "absl/log:check", + "absl/log:log", "absl/strings", "absl/strings:str_format", ], @@ -3254,6 +3352,9 @@ grpc_cc_library( hdrs = [ "//src/core:lib/iomgr/internal_errqueue.h", ], + external_deps = [ + "absl/log:log", + ], tags = ["nofixdeps"], visibility = ["@grpc:iomgr_internal_errqueue"], deps = [ @@ -3272,6 +3373,7 @@ grpc_cc_library( "//src/core:lib/iomgr/buffer_list.h", ], external_deps = [ + "absl/log:log", "absl/strings", "absl/strings:str_format", "absl/types:optional", @@ -3295,6 +3397,7 @@ grpc_cc_library( "//src/core:lib/uri/uri_parser.h", ], external_deps = [ + "absl/log:check", "absl/status", "absl/status:statusor", "absl/strings", @@ -3316,6 +3419,8 @@ grpc_cc_library( "//src/core:lib/iomgr/grpc_if_nametoindex.h", ], external_deps = [ + "absl/log:check", + "absl/log:log", "absl/status", "absl/status:statusor", "absl/strings", @@ -3404,6 +3509,7 @@ grpc_cc_library( "//src/core:service_config/service_config_impl.h", ], external_deps = [ + "absl/log:check", "absl/status", "absl/status:statusor", "absl/strings", @@ -3439,6 +3545,7 @@ grpc_cc_library( ], external_deps = [ "absl/functional:function_ref", + "absl/log:check", "absl/status", "absl/status:statusor", "absl/strings", @@ -3480,6 +3587,8 @@ grpc_cc_library( "//src/core:resolver/resolver_registry.h", ], external_deps = [ + "absl/log:check", + "absl/log:log", "absl/status", "absl/status:statusor", "absl/strings", @@ -3512,6 +3621,8 @@ grpc_cc_library( ], external_deps = [ "absl/base:core_headers", + "absl/log:check", + "absl/log:log", "absl/status", "absl/strings", "@com_google_protobuf//upb:base", @@ -3532,7 +3643,6 @@ grpc_cc_library( "xds_orca_service_upb", "xds_orca_upb", "//src/core:backend_metric_parser", - "//src/core:client_channel_channelz", "//src/core:closure", "//src/core:error", "//src/core:grpc_backend_metric_data", @@ -3554,6 +3664,8 @@ grpc_cc_library( "//src/core:load_balancing/child_policy_handler.h", ], external_deps = [ + "absl/log:check", + "absl/log:log", "absl/status", "absl/strings", ], @@ -3609,6 +3721,8 @@ grpc_cc_library( "absl/container:flat_hash_set", "absl/container:inlined_vector", "absl/functional:any_invocable", + "absl/log:check", + "absl/log:log", "absl/status", "absl/status:statusor", "absl/strings", @@ -3666,7 +3780,6 @@ grpc_cc_library( "//src/core:channel_init", "//src/core:channel_stack_type", "//src/core:client_channel_backup_poller", - "//src/core:client_channel_channelz", "//src/core:client_channel_internal_header", "//src/core:client_channel_service_config", "//src/core:closure", @@ -3683,7 +3796,6 @@ grpc_cc_library( "//src/core:gpr_atm", "//src/core:gpr_manual_constructor", "//src/core:grpc_backend_metric_data", - "//src/core:grpc_deadline_filter", "//src/core:grpc_message_size_filter", "//src/core:grpc_service_config", "//src/core:init_internally", @@ -3744,6 +3856,8 @@ grpc_cc_library( external_deps = [ "absl/base:core_headers", "absl/functional:any_invocable", + "absl/log:check", + "absl/log:log", "absl/status", "absl/status:statusor", "absl/strings", @@ -3807,6 +3921,8 @@ grpc_cc_library( external_deps = [ "absl/base:core_headers", "absl/functional:bind_front", + "absl/log:check", + "absl/log:log", "absl/status", "absl/status:statusor", "absl/strings", @@ -3860,6 +3976,8 @@ grpc_cc_library( "//src/core:lib/security/security_connector/alts/alts_security_connector.h", ], external_deps = [ + "absl/log:check", + "absl/log:log", "absl/status", "absl/strings", "absl/types:optional", @@ -3902,6 +4020,10 @@ grpc_cc_library( hdrs = [ "//src/core:tsi/fake_transport_security.h", ], + external_deps = [ + "absl/log:check", + "absl/log:log", + ], language = "c++", visibility = [ "@grpc:public", @@ -3927,6 +4049,8 @@ grpc_cc_library( "//src/core:lib/security/credentials/jwt/jwt_verifier.h", ], external_deps = [ + "absl/log:check", + "absl/log:log", "absl/status", "absl/status:statusor", "absl/strings", @@ -3987,7 +4111,10 @@ grpc_cc_library( "//src/core:lib/security/security_connector/load_system_roots_supported.h", "//src/core:lib/security/util/json_util.h", ], - external_deps = ["absl/strings"], + external_deps = [ + "absl/log:log", + "absl/strings", + ], language = "c++", visibility = ["@grpc:public"], deps = [ @@ -4018,6 +4145,8 @@ grpc_cc_library( "//src/core:tsi/alts/handshaker/alts_tsi_utils.h", ], external_deps = [ + "absl/log:check", + "absl/log:log", "absl/strings", "@com_google_protobuf//upb:base", "@com_google_protobuf//upb:mem", @@ -4077,6 +4206,8 @@ grpc_cc_library( "//src/core:tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.h", ], external_deps = [ + "absl/log:check", + "absl/log:log", "absl/types:span", "libcrypto", "libssl", @@ -4107,6 +4238,8 @@ grpc_cc_library( "//src/core:tsi/ssl/session_cache/ssl_session_cache.h", ], external_deps = [ + "absl/log:check", + "absl/log:log", "absl/memory", "libssl", ], @@ -4137,6 +4270,8 @@ grpc_cc_library( ], external_deps = [ "absl/base:core_headers", + "absl/log:check", + "absl/log:log", "absl/status", "absl/status:statusor", "absl/strings", @@ -4184,6 +4319,8 @@ grpc_cc_library( ], external_deps = [ "absl/base:core_headers", + "absl/log:check", + "absl/log:log", "absl/status", "absl/status:statusor", "absl/strings", @@ -4249,25 +4386,27 @@ grpc_cc_library( grpc_cc_library( name = "xds_client", srcs = [ - "//src/core:ext/xds/xds_api.cc", - "//src/core:ext/xds/xds_bootstrap.cc", - "//src/core:ext/xds/xds_client.cc", - "//src/core:ext/xds/xds_client_stats.cc", + "//src/core:xds/xds_client/xds_api.cc", + "//src/core:xds/xds_client/xds_bootstrap.cc", + "//src/core:xds/xds_client/xds_client.cc", + "//src/core:xds/xds_client/xds_client_stats.cc", ], hdrs = [ - "//src/core:ext/xds/xds_api.h", - "//src/core:ext/xds/xds_bootstrap.h", - "//src/core:ext/xds/xds_channel_args.h", - "//src/core:ext/xds/xds_client.h", - "//src/core:ext/xds/xds_client_stats.h", - "//src/core:ext/xds/xds_metrics.h", - "//src/core:ext/xds/xds_resource_type.h", - "//src/core:ext/xds/xds_resource_type_impl.h", - "//src/core:ext/xds/xds_transport.h", + "//src/core:xds/xds_client/xds_api.h", + "//src/core:xds/xds_client/xds_bootstrap.h", + "//src/core:xds/xds_client/xds_channel_args.h", + "//src/core:xds/xds_client/xds_client.h", + "//src/core:xds/xds_client/xds_client_stats.h", + "//src/core:xds/xds_client/xds_metrics.h", + "//src/core:xds/xds_client/xds_resource_type.h", + "//src/core:xds/xds_client/xds_resource_type_impl.h", + "//src/core:xds/xds_client/xds_transport.h", ], external_deps = [ "absl/base:core_headers", "absl/cleanup", + "absl/log:check", + "absl/log:log", "absl/memory", "absl/status", "absl/status:statusor", @@ -4351,6 +4490,7 @@ grpc_cc_library( hdrs = ["//src/core:resolver/fake/fake_resolver.h"], external_deps = [ "absl/base:core_headers", + "absl/log:check", "absl/strings", "absl/time", "absl/types:optional", @@ -4386,6 +4526,7 @@ grpc_cc_library( "//src/core:ext/transport/chttp2/transport/frame.h", ], external_deps = [ + "absl/log:check", "absl/status", "absl/status:statusor", "absl/strings", @@ -4431,6 +4572,8 @@ grpc_cc_library( ], external_deps = [ "absl/functional:function_ref", + "absl/log:check", + "absl/log:log", "absl/status", "absl/strings", ], @@ -4457,6 +4600,7 @@ grpc_cc_library( "//src/core:ext/transport/chttp2/transport/hpack_parse_result.h", ], external_deps = [ + "absl/log:check", "absl/status", "absl/strings", "absl/strings:str_format", @@ -4485,6 +4629,8 @@ grpc_cc_library( ], external_deps = [ "absl/base:core_headers", + "absl/log:check", + "absl/log:log", "absl/random:bit_gen_ref", "absl/status", "absl/strings", @@ -4525,7 +4671,11 @@ grpc_cc_library( hdrs = [ "//src/core:ext/transport/chttp2/transport/hpack_encoder.h", ], - external_deps = ["absl/strings"], + external_deps = [ + "absl/log:check", + "absl/log:log", + "absl/strings", + ], deps = [ "chttp2_bin_encoder", "chttp2_legacy_frame", @@ -4555,6 +4705,9 @@ grpc_cc_library( hdrs = [ "//src/core:ext/transport/chttp2/transport/bin_encoder.h", ], + external_deps = [ + "absl/log:check", + ], deps = [ "gpr", "gpr_platform", @@ -4571,7 +4724,10 @@ grpc_cc_library( hdrs = [ "//src/core:ext/transport/chttp2/transport/varint.h", ], - external_deps = ["absl/base:core_headers"], + external_deps = [ + "absl/base:core_headers", + "absl/log:check", + ], deps = ["gpr"], ) @@ -4630,6 +4786,8 @@ grpc_cc_library( "absl/base:core_headers", "absl/container:flat_hash_map", "absl/hash", + "absl/log:check", + "absl/log:log", "absl/meta:type_traits", "absl/random", "absl/random:bit_gen_ref", @@ -4748,13 +4906,15 @@ grpc_cc_library( grpc_cc_library( name = "subprocess", srcs = [ - "//src/core:lib/gpr/subprocess_posix.cc", - "//src/core:lib/gpr/subprocess_windows.cc", + "//src/core:util/subprocess_posix.cc", + "//src/core:util/subprocess_windows.cc", ], hdrs = [ - "//src/core:lib/gpr/subprocess.h", + "//src/core:util/subprocess.h", ], external_deps = [ + "absl/log:check", + "absl/log:log", "absl/strings", "absl/types:span", ], diff --git a/BoringSSL-Package.swift b/BoringSSL-Package.swift index 363c62433ef..8a4f6a6d639 100644 --- a/BoringSSL-Package.swift +++ b/BoringSSL-Package.swift @@ -26,7 +26,6 @@ let package = Package( ], sources: [ - "err_data.c", "src/crypto/asn1/a_bitstr.c", "src/crypto/asn1/a_bool.c", "src/crypto/asn1/a_d2i_fp.c", @@ -117,6 +116,8 @@ let package = Package( "src/crypto/evp/evp.c", "src/crypto/evp/evp_asn1.c", "src/crypto/evp/evp_ctx.c", + "src/crypto/evp/p_dh.c", + "src/crypto/evp/p_dh_asn1.c", "src/crypto/evp/p_dsa_asn1.c", "src/crypto/evp/p_ec.c", "src/crypto/evp/p_ec_asn1.c", @@ -258,6 +259,7 @@ let package = Package( "src/crypto/x509/x_val.c", "src/crypto/x509/x_x509.c", "src/crypto/x509/x_x509a.c", + "src/gen/crypto/err_data.c", "src/ssl/bio_ssl.cc", "src/ssl/d1_both.cc", "src/ssl/d1_lib.cc", @@ -279,6 +281,7 @@ let package = Package( "src/ssl/ssl_buffer.cc", "src/ssl/ssl_cert.cc", "src/ssl/ssl_cipher.cc", + "src/ssl/ssl_credential.cc", "src/ssl/ssl_file.cc", "src/ssl/ssl_key_share.cc", "src/ssl/ssl_lib.cc", diff --git a/CMakeLists.txt b/CMakeLists.txt index bce2fd580fe..d0172728836 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -25,11 +25,11 @@ cmake_minimum_required(VERSION 3.13) set(PACKAGE_NAME "grpc") -set(PACKAGE_VERSION "1.64.0-dev") -set(gRPC_CORE_VERSION "40.0.0") -set(gRPC_CORE_SOVERSION "40") -set(gRPC_CPP_VERSION "1.64.0-dev") -set(gRPC_CPP_SOVERSION "1.64") +set(PACKAGE_VERSION "1.65.0-dev") +set(gRPC_CORE_VERSION "41.0.0") +set(gRPC_CORE_SOVERSION "41") +set(gRPC_CPP_VERSION "1.65.0-dev") +set(gRPC_CPP_SOVERSION "1.65") set(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}") set(PACKAGE_TARNAME "${PACKAGE_NAME}-${PACKAGE_VERSION}") set(PACKAGE_BUGREPORT "https://github.com/grpc/grpc/issues/") @@ -109,6 +109,7 @@ set(gRPC_ABSL_USED_TARGETS absl_bind_front absl_bits absl_charset + absl_check absl_city absl_civil_time absl_cleanup @@ -169,6 +170,8 @@ set(gRPC_ABSL_USED_TARGETS absl_log_entry absl_log_globals absl_log_internal_append_truncated + absl_log_internal_check_impl + absl_log_internal_check_op absl_log_internal_conditions absl_log_internal_config absl_log_internal_fnmatch @@ -870,13 +873,13 @@ protobuf_generate_grpc_cpp_with_import_path_correction( test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.proto test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.proto ) protobuf_generate_grpc_cpp_with_import_path_correction( - test/core/tsi/alts/fake_handshaker/handshaker.proto test/core/tsi/alts/fake_handshaker/handshaker.proto + test/core/test_util/fuzz_config_vars.proto test/core/test_util/fuzz_config_vars.proto ) protobuf_generate_grpc_cpp_with_import_path_correction( - test/core/tsi/alts/fake_handshaker/transport_security_common.proto test/core/tsi/alts/fake_handshaker/transport_security_common.proto + test/core/tsi/alts/fake_handshaker/handshaker.proto test/core/tsi/alts/fake_handshaker/handshaker.proto ) protobuf_generate_grpc_cpp_with_import_path_correction( - test/core/util/fuzz_config_vars.proto test/core/util/fuzz_config_vars.proto + test/core/tsi/alts/fake_handshaker/transport_security_common.proto test/core/tsi/alts/fake_handshaker/transport_security_common.proto ) if(gRPC_BUILD_TESTS) @@ -1049,6 +1052,7 @@ if(gRPC_BUILD_TESTS) if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) add_dependencies(buildtests_cxx dualstack_socket_test) endif() + add_dependencies(buildtests_cxx dump_args_test) add_dependencies(buildtests_cxx duplicate_header_bad_client_test) add_dependencies(buildtests_cxx empty_batch_test) if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_POSIX) @@ -1169,6 +1173,7 @@ if(gRPC_BUILD_TESTS) add_dependencies(buildtests_cxx insecure_security_connector_test) add_dependencies(buildtests_cxx inter_activity_latch_test) add_dependencies(buildtests_cxx inter_activity_pipe_test) + add_dependencies(buildtests_cxx interception_chain_test) add_dependencies(buildtests_cxx interceptor_list_test) add_dependencies(buildtests_cxx interop_client) add_dependencies(buildtests_cxx interop_server) @@ -1448,12 +1453,11 @@ if(gRPC_BUILD_TESTS) add_dependencies(buildtests_cxx tcp_server_posix_test) endif() add_dependencies(buildtests_cxx tcp_socket_utils_test) - add_dependencies(buildtests_cxx test_core_channel_channelz_test) + add_dependencies(buildtests_cxx test_core_channelz_channelz_test) add_dependencies(buildtests_cxx test_core_end2end_channelz_test) add_dependencies(buildtests_cxx test_core_event_engine_posix_timer_heap_test) add_dependencies(buildtests_cxx test_core_event_engine_posix_timer_list_test) add_dependencies(buildtests_cxx test_core_event_engine_slice_buffer_test) - add_dependencies(buildtests_cxx test_core_gpr_time_test) add_dependencies(buildtests_cxx test_core_gprpp_time_test) add_dependencies(buildtests_cxx test_core_iomgr_timer_heap_test) add_dependencies(buildtests_cxx test_core_security_credentials_test) @@ -1463,6 +1467,7 @@ if(gRPC_BUILD_TESTS) if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_POSIX) add_dependencies(buildtests_cxx test_core_transport_test_suite_chaotic_good_test) endif() + add_dependencies(buildtests_cxx test_core_util_time_test) add_dependencies(buildtests_cxx test_cpp_client_credentials_test) add_dependencies(buildtests_cxx test_cpp_end2end_ssl_credentials_test) add_dependencies(buildtests_cxx test_cpp_ext_chaotic_good_test) @@ -1656,32 +1661,6 @@ add_library(gpr src/core/lib/config/config_vars_non_generated.cc src/core/lib/config/load_config.cc src/core/lib/event_engine/thread_local.cc - src/core/lib/gpr/alloc.cc - src/core/lib/gpr/android/log.cc - src/core/lib/gpr/atm.cc - src/core/lib/gpr/iphone/cpu.cc - src/core/lib/gpr/linux/cpu.cc - src/core/lib/gpr/linux/log.cc - src/core/lib/gpr/log.cc - src/core/lib/gpr/msys/tmpfile.cc - src/core/lib/gpr/posix/cpu.cc - src/core/lib/gpr/posix/log.cc - src/core/lib/gpr/posix/string.cc - src/core/lib/gpr/posix/sync.cc - src/core/lib/gpr/posix/time.cc - src/core/lib/gpr/posix/tmpfile.cc - src/core/lib/gpr/string.cc - src/core/lib/gpr/sync.cc - src/core/lib/gpr/sync_abseil.cc - src/core/lib/gpr/time.cc - src/core/lib/gpr/time_precise.cc - src/core/lib/gpr/windows/cpu.cc - src/core/lib/gpr/windows/log.cc - src/core/lib/gpr/windows/string.cc - src/core/lib/gpr/windows/string_util.cc - src/core/lib/gpr/windows/sync.cc - src/core/lib/gpr/windows/time.cc - src/core/lib/gpr/windows/tmpfile.cc src/core/lib/gprpp/crash.cc src/core/lib/gprpp/examine_stack.cc src/core/lib/gprpp/fork.cc @@ -1697,6 +1676,32 @@ add_library(gpr src/core/lib/gprpp/windows/env.cc src/core/lib/gprpp/windows/stat.cc src/core/lib/gprpp/windows/thd.cc + src/core/util/alloc.cc + src/core/util/android/log.cc + src/core/util/atm.cc + src/core/util/iphone/cpu.cc + src/core/util/linux/cpu.cc + src/core/util/linux/log.cc + src/core/util/log.cc + src/core/util/msys/tmpfile.cc + src/core/util/posix/cpu.cc + src/core/util/posix/log.cc + src/core/util/posix/string.cc + src/core/util/posix/sync.cc + src/core/util/posix/time.cc + src/core/util/posix/tmpfile.cc + src/core/util/string.cc + src/core/util/sync.cc + src/core/util/sync_abseil.cc + src/core/util/time.cc + src/core/util/time_precise.cc + src/core/util/windows/cpu.cc + src/core/util/windows/log.cc + src/core/util/windows/string.cc + src/core/util/windows/string_util.cc + src/core/util/windows/sync.cc + src/core/util/windows/time.cc + src/core/util/windows/tmpfile.cc ) target_compile_features(gpr PUBLIC cxx_std_14) @@ -1744,6 +1749,8 @@ target_link_libraries(gpr absl::flags absl::flags_marshalling absl::any_invocable + absl::check + absl::log_globals absl::log absl::memory absl::random_random @@ -1819,8 +1826,10 @@ endif() add_library(grpc + src/core/channelz/channel_trace.cc + src/core/channelz/channelz.cc + src/core/channelz/channelz_registry.cc src/core/client_channel/backup_poller.cc - src/core/client_channel/client_channel_channelz.cc src/core/client_channel/client_channel_factory.cc src/core/client_channel/client_channel_filter.cc src/core/client_channel/client_channel_plugin.cc @@ -1828,7 +1837,6 @@ add_library(grpc src/core/client_channel/config_selector.cc src/core/client_channel/dynamic_filters.cc src/core/client_channel/global_subchannel_pool.cc - src/core/client_channel/http_proxy_mapper.cc src/core/client_channel/local_subchannel_pool.cc src/core/client_channel/retry_filter.cc src/core/client_channel/retry_filter_legacy_call_data.cc @@ -1841,7 +1849,6 @@ add_library(grpc src/core/ext/filters/census/grpc_context.cc src/core/ext/filters/channel_idle/idle_filter_state.cc src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc - src/core/ext/filters/deadline/deadline_filter.cc src/core/ext/filters/fault_injection/fault_injection_filter.cc src/core/ext/filters/fault_injection/fault_injection_service_config_parser.cc src/core/ext/filters/http/client/http_client_filter.cc @@ -1852,7 +1859,6 @@ add_library(grpc src/core/ext/filters/message_size/message_size_filter.cc src/core/ext/filters/rbac/rbac_filter.cc src/core/ext/filters/rbac/rbac_service_config_parser.cc - src/core/ext/filters/server_config_selector/server_config_selector_filter.cc src/core/ext/filters/stateful_session/stateful_session_filter.cc src/core/ext/filters/stateful_session/stateful_session_service_config_parser.cc src/core/ext/gcp/metadata_query.cc @@ -2208,32 +2214,16 @@ add_library(grpc src/core/ext/upbdefs-gen/xds/type/v3/cel.upbdefs.c src/core/ext/upbdefs-gen/xds/type/v3/range.upbdefs.c src/core/ext/upbdefs-gen/xds/type/v3/typed_struct.upbdefs.c - src/core/ext/xds/certificate_provider_store.cc - src/core/ext/xds/file_watcher_certificate_provider_factory.cc - src/core/ext/xds/xds_api.cc - src/core/ext/xds/xds_audit_logger_registry.cc - src/core/ext/xds/xds_bootstrap.cc - src/core/ext/xds/xds_bootstrap_grpc.cc - src/core/ext/xds/xds_certificate_provider.cc - src/core/ext/xds/xds_channel_stack_modifier.cc - src/core/ext/xds/xds_client.cc - src/core/ext/xds/xds_client_grpc.cc - src/core/ext/xds/xds_client_stats.cc - src/core/ext/xds/xds_cluster.cc - src/core/ext/xds/xds_cluster_specifier_plugin.cc - src/core/ext/xds/xds_common_types.cc - src/core/ext/xds/xds_endpoint.cc - src/core/ext/xds/xds_health_status.cc - src/core/ext/xds/xds_http_fault_filter.cc - src/core/ext/xds/xds_http_filters.cc - src/core/ext/xds/xds_http_rbac_filter.cc - src/core/ext/xds/xds_http_stateful_session_filter.cc - src/core/ext/xds/xds_lb_policy_registry.cc - src/core/ext/xds/xds_listener.cc - src/core/ext/xds/xds_route_config.cc - src/core/ext/xds/xds_routing.cc - src/core/ext/xds/xds_server_config_fetcher.cc - src/core/ext/xds/xds_transport_grpc.cc + src/core/handshaker/endpoint_info/endpoint_info_handshaker.cc + src/core/handshaker/handshaker.cc + src/core/handshaker/handshaker_registry.cc + src/core/handshaker/http_connect/http_connect_handshaker.cc + src/core/handshaker/http_connect/http_proxy_mapper.cc + src/core/handshaker/proxy_mapper_registry.cc + src/core/handshaker/security/secure_endpoint.cc + src/core/handshaker/security/security_handshaker.cc + src/core/handshaker/security/tsi_error.cc + src/core/handshaker/tcp_connect/tcp_connect_handshaker.cc src/core/lib/address_utils/parse_address.cc src/core/lib/address_utils/sockaddr_utils.cc src/core/lib/backoff/backoff.cc @@ -2245,13 +2235,9 @@ add_library(grpc src/core/lib/channel/channel_stack_builder.cc src/core/lib/channel/channel_stack_builder_impl.cc src/core/lib/channel/channel_stack_trace.cc - src/core/lib/channel/channel_trace.cc - src/core/lib/channel/channelz.cc - src/core/lib/channel/channelz_registry.cc src/core/lib/channel/connected_channel.cc src/core/lib/channel/metrics.cc src/core/lib/channel/promise_based_filter.cc - src/core/lib/channel/server_call_tracer_filter.cc src/core/lib/channel/status_util.cc src/core/lib/compression/compression.cc src/core/lib/compression/compression_internal.cc @@ -2322,7 +2308,6 @@ add_library(grpc src/core/lib/gprpp/validation_errors.cc src/core/lib/gprpp/windows/directory_reader.cc src/core/lib/gprpp/work_serializer.cc - src/core/lib/handshaker/proxy_mapper_registry.cc src/core/lib/http/format_request.cc src/core/lib/http/httpcli.cc src/core/lib/http/httpcli_security_connector.cc @@ -2481,10 +2466,7 @@ add_library(grpc src/core/lib/security/security_connector/ssl_utils.cc src/core/lib/security/security_connector/tls/tls_security_connector.cc src/core/lib/security/transport/client_auth_filter.cc - src/core/lib/security/transport/secure_endpoint.cc - src/core/lib/security/transport/security_handshaker.cc src/core/lib/security/transport/server_auth_filter.cc - src/core/lib/security/transport/tsi_error.cc src/core/lib/security/util/json_util.cc src/core/lib/slice/percent_encoding.cc src/core/lib/slice/slice.cc @@ -2509,29 +2491,24 @@ add_library(grpc src/core/lib/surface/lame_client.cc src/core/lib/surface/legacy_channel.cc src/core/lib/surface/metadata_array.cc - src/core/lib/surface/server.cc src/core/lib/surface/validate_metadata.cc src/core/lib/surface/version.cc src/core/lib/surface/wait_for_cq_end_op.cc src/core/lib/transport/batch_builder.cc src/core/lib/transport/bdp_estimator.cc + src/core/lib/transport/call_arena_allocator.cc src/core/lib/transport/call_filters.cc src/core/lib/transport/call_final_info.cc - src/core/lib/transport/call_size_estimator.cc src/core/lib/transport/call_spine.cc src/core/lib/transport/connectivity_state.cc - src/core/lib/transport/endpoint_info_handshaker.cc src/core/lib/transport/error_utils.cc - src/core/lib/transport/handshaker.cc - src/core/lib/transport/handshaker_registry.cc - src/core/lib/transport/http_connect_handshaker.cc + src/core/lib/transport/interception_chain.cc src/core/lib/transport/message.cc src/core/lib/transport/metadata.cc src/core/lib/transport/metadata_batch.cc src/core/lib/transport/metadata_info.cc src/core/lib/transport/parsed_metadata.cc src/core/lib/transport/status_conversion.cc - src/core/lib/transport/tcp_connect_handshaker.cc src/core/lib/transport/timeout_encoding.cc src/core/lib/transport/transport.cc src/core/lib/transport/transport_op_string.cc @@ -2586,6 +2563,11 @@ add_library(grpc src/core/resolver/xds/xds_dependency_manager.cc src/core/resolver/xds/xds_resolver.cc src/core/resolver/xds/xds_resolver_trace.cc + src/core/server/server.cc + src/core/server/server_call_tracer_filter.cc + src/core/server/server_config_selector_filter.cc + src/core/server/xds_channel_stack_modifier.cc + src/core/server/xds_server_config_fetcher.cc src/core/service_config/service_config_channel_arg_filter.cc src/core/service_config/service_config_impl.cc src/core/service_config/service_config_parser.cc @@ -2618,6 +2600,30 @@ add_library(grpc src/core/tsi/ssl_transport_security_utils.cc src/core/tsi/transport_security.cc src/core/tsi/transport_security_grpc.cc + src/core/xds/grpc/certificate_provider_store.cc + src/core/xds/grpc/file_watcher_certificate_provider_factory.cc + src/core/xds/grpc/xds_audit_logger_registry.cc + src/core/xds/grpc/xds_bootstrap_grpc.cc + src/core/xds/grpc/xds_certificate_provider.cc + src/core/xds/grpc/xds_client_grpc.cc + src/core/xds/grpc/xds_cluster.cc + src/core/xds/grpc/xds_cluster_specifier_plugin.cc + src/core/xds/grpc/xds_common_types.cc + src/core/xds/grpc/xds_endpoint.cc + src/core/xds/grpc/xds_health_status.cc + src/core/xds/grpc/xds_http_fault_filter.cc + src/core/xds/grpc/xds_http_filters.cc + src/core/xds/grpc/xds_http_rbac_filter.cc + src/core/xds/grpc/xds_http_stateful_session_filter.cc + src/core/xds/grpc/xds_lb_policy_registry.cc + src/core/xds/grpc/xds_listener.cc + src/core/xds/grpc/xds_route_config.cc + src/core/xds/grpc/xds_routing.cc + src/core/xds/grpc/xds_transport_grpc.cc + src/core/xds/xds_client/xds_api.cc + src/core/xds/xds_client/xds_bootstrap.cc + src/core/xds/xds_client/xds_client.cc + src/core/xds/xds_client/xds_client_stats.cc ) target_compile_features(grpc PUBLIC cxx_std_14) @@ -2742,6 +2748,7 @@ foreach(_hdr include/grpc/impl/propagation_bits.h include/grpc/impl/slice_type.h include/grpc/load_reporting.h + include/grpc/passive_listener.h include/grpc/slice.h include/grpc/slice_buffer.h include/grpc/status.h @@ -2787,15 +2794,15 @@ if(gRPC_BUILD_TESTS) add_library(grpc_test_util test/core/event_engine/test_init.cc - test/core/util/build.cc - test/core/util/port.cc - test/core/util/port_isolated_runtime_environment.cc - test/core/util/port_server_client.cc - test/core/util/reconnect_server.cc - test/core/util/stack_tracer.cc - test/core/util/test_config.cc - test/core/util/test_tcp_server.cc - test/core/util/tls_utils.cc + test/core/test_util/build.cc + test/core/test_util/port.cc + test/core/test_util/port_isolated_runtime_environment.cc + test/core/test_util/port_server_client.cc + test/core/test_util/reconnect_server.cc + test/core/test_util/stack_tracer.cc + test/core/test_util/test_config.cc + test/core/test_util/test_tcp_server.cc + test/core/test_util/tls_utils.cc ) target_compile_features(grpc_test_util PUBLIC cxx_std_14) @@ -2853,14 +2860,14 @@ if(gRPC_BUILD_TESTS) add_library(grpc_test_util_unsecure test/core/event_engine/test_init.cc - test/core/util/build.cc - test/core/util/port.cc - test/core/util/port_isolated_runtime_environment.cc - test/core/util/port_server_client.cc - test/core/util/reconnect_server.cc - test/core/util/stack_tracer.cc - test/core/util/test_config.cc - test/core/util/test_tcp_server.cc + test/core/test_util/build.cc + test/core/test_util/port.cc + test/core/test_util/port_isolated_runtime_environment.cc + test/core/test_util/port_server_client.cc + test/core/test_util/reconnect_server.cc + test/core/test_util/stack_tracer.cc + test/core/test_util/test_config.cc + test/core/test_util/test_tcp_server.cc ) target_compile_features(grpc_test_util_unsecure PUBLIC cxx_std_14) @@ -2916,8 +2923,10 @@ endif() endif() add_library(grpc_unsecure + src/core/channelz/channel_trace.cc + src/core/channelz/channelz.cc + src/core/channelz/channelz_registry.cc src/core/client_channel/backup_poller.cc - src/core/client_channel/client_channel_channelz.cc src/core/client_channel/client_channel_factory.cc src/core/client_channel/client_channel_filter.cc src/core/client_channel/client_channel_plugin.cc @@ -2925,7 +2934,6 @@ add_library(grpc_unsecure src/core/client_channel/config_selector.cc src/core/client_channel/dynamic_filters.cc src/core/client_channel/global_subchannel_pool.cc - src/core/client_channel/http_proxy_mapper.cc src/core/client_channel/local_subchannel_pool.cc src/core/client_channel/retry_filter.cc src/core/client_channel/retry_filter_legacy_call_data.cc @@ -2938,7 +2946,6 @@ add_library(grpc_unsecure src/core/ext/filters/census/grpc_context.cc src/core/ext/filters/channel_idle/idle_filter_state.cc src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc - src/core/ext/filters/deadline/deadline_filter.cc src/core/ext/filters/fault_injection/fault_injection_filter.cc src/core/ext/filters/fault_injection/fault_injection_service_config_parser.cc src/core/ext/filters/http/client/http_client_filter.cc @@ -3000,6 +3007,16 @@ add_library(grpc_unsecure src/core/ext/upb-gen/validate/validate.upb_minitable.c src/core/ext/upb-gen/xds/data/orca/v3/orca_load_report.upb_minitable.c src/core/ext/upb-gen/xds/service/orca/v3/orca.upb_minitable.c + src/core/handshaker/endpoint_info/endpoint_info_handshaker.cc + src/core/handshaker/handshaker.cc + src/core/handshaker/handshaker_registry.cc + src/core/handshaker/http_connect/http_connect_handshaker.cc + src/core/handshaker/http_connect/http_proxy_mapper.cc + src/core/handshaker/proxy_mapper_registry.cc + src/core/handshaker/security/secure_endpoint.cc + src/core/handshaker/security/security_handshaker.cc + src/core/handshaker/security/tsi_error.cc + src/core/handshaker/tcp_connect/tcp_connect_handshaker.cc src/core/lib/address_utils/parse_address.cc src/core/lib/address_utils/sockaddr_utils.cc src/core/lib/backoff/backoff.cc @@ -3011,13 +3028,9 @@ add_library(grpc_unsecure src/core/lib/channel/channel_stack_builder.cc src/core/lib/channel/channel_stack_builder_impl.cc src/core/lib/channel/channel_stack_trace.cc - src/core/lib/channel/channel_trace.cc - src/core/lib/channel/channelz.cc - src/core/lib/channel/channelz_registry.cc src/core/lib/channel/connected_channel.cc src/core/lib/channel/metrics.cc src/core/lib/channel/promise_based_filter.cc - src/core/lib/channel/server_call_tracer_filter.cc src/core/lib/channel/status_util.cc src/core/lib/compression/compression.cc src/core/lib/compression/compression_internal.cc @@ -3086,7 +3099,6 @@ add_library(grpc_unsecure src/core/lib/gprpp/uuid_v4.cc src/core/lib/gprpp/validation_errors.cc src/core/lib/gprpp/work_serializer.cc - src/core/lib/handshaker/proxy_mapper_registry.cc src/core/lib/http/format_request.cc src/core/lib/http/httpcli.cc src/core/lib/http/parser.cc @@ -3208,10 +3220,7 @@ add_library(grpc_unsecure src/core/lib/security/security_connector/load_system_roots_windows.cc src/core/lib/security/security_connector/security_connector.cc src/core/lib/security/transport/client_auth_filter.cc - src/core/lib/security/transport/secure_endpoint.cc - src/core/lib/security/transport/security_handshaker.cc src/core/lib/security/transport/server_auth_filter.cc - src/core/lib/security/transport/tsi_error.cc src/core/lib/security/util/json_util.cc src/core/lib/slice/percent_encoding.cc src/core/lib/slice/slice.cc @@ -3236,29 +3245,24 @@ add_library(grpc_unsecure src/core/lib/surface/lame_client.cc src/core/lib/surface/legacy_channel.cc src/core/lib/surface/metadata_array.cc - src/core/lib/surface/server.cc src/core/lib/surface/validate_metadata.cc src/core/lib/surface/version.cc src/core/lib/surface/wait_for_cq_end_op.cc src/core/lib/transport/batch_builder.cc src/core/lib/transport/bdp_estimator.cc + src/core/lib/transport/call_arena_allocator.cc src/core/lib/transport/call_filters.cc src/core/lib/transport/call_final_info.cc - src/core/lib/transport/call_size_estimator.cc src/core/lib/transport/call_spine.cc src/core/lib/transport/connectivity_state.cc - src/core/lib/transport/endpoint_info_handshaker.cc src/core/lib/transport/error_utils.cc - src/core/lib/transport/handshaker.cc - src/core/lib/transport/handshaker_registry.cc - src/core/lib/transport/http_connect_handshaker.cc + src/core/lib/transport/interception_chain.cc src/core/lib/transport/message.cc src/core/lib/transport/metadata.cc src/core/lib/transport/metadata_batch.cc src/core/lib/transport/metadata_info.cc src/core/lib/transport/parsed_metadata.cc src/core/lib/transport/status_conversion.cc - src/core/lib/transport/tcp_connect_handshaker.cc src/core/lib/transport/timeout_encoding.cc src/core/lib/transport/transport.cc src/core/lib/transport/transport_op_string.cc @@ -3303,6 +3307,8 @@ add_library(grpc_unsecure src/core/resolver/resolver.cc src/core/resolver/resolver_registry.cc src/core/resolver/sockaddr/sockaddr_resolver.cc + src/core/server/server.cc + src/core/server/server_call_tracer_filter.cc src/core/service_config/service_config_channel_arg_filter.cc src/core/service_config/service_config_impl.cc src/core/service_config/service_config_parser.cc @@ -3444,6 +3450,7 @@ foreach(_hdr include/grpc/impl/propagation_bits.h include/grpc/impl/slice_type.h include/grpc/load_reporting.h + include/grpc/passive_listener.h include/grpc/slice.h include/grpc/slice_buffer.h include/grpc/status.h @@ -3968,15 +3975,15 @@ add_library(benchmark_helpers ${_gRPC_STATIC_WIN32} ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/orca_load_report.grpc.pb.cc ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/orca_load_report.pb.h ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/orca_load_report.grpc.pb.h - test/core/util/cmdline.cc - test/core/util/fuzzer_util.cc - test/core/util/grpc_profiler.cc - test/core/util/histogram.cc - test/core/util/mock_endpoint.cc - test/core/util/parse_hexstring.cc - test/core/util/resolve_localhost_ip46.cc - test/core/util/slice_splitter.cc - test/core/util/tracer_util.cc + test/core/test_util/cmdline.cc + test/core/test_util/fuzzer_util.cc + test/core/test_util/grpc_profiler.cc + test/core/test_util/histogram.cc + test/core/test_util/mock_endpoint.cc + test/core/test_util/parse_hexstring.cc + test/core/test_util/resolve_localhost_ip46.cc + test/core/test_util/slice_splitter.cc + test/core/test_util/tracer_util.cc test/cpp/microbenchmarks/helpers.cc ) @@ -4022,7 +4029,6 @@ target_include_directories(benchmark_helpers ) target_link_libraries(benchmark_helpers ${_gRPC_ALLTARGETS_LIBRARIES} - absl::check ${_gRPC_BENCHMARK_LIBRARIES} grpc++_unsecure grpc_test_util_unsecure @@ -4313,6 +4319,7 @@ foreach(_hdr include/grpcpp/impl/service_type.h include/grpcpp/impl/status.h include/grpcpp/impl/sync.h + include/grpcpp/passive_listener.h include/grpcpp/resource_quota.h include/grpcpp/security/audit_logging.h include/grpcpp/security/auth_context.h @@ -4730,21 +4737,21 @@ endif() if(gRPC_BUILD_TESTS) add_library(grpc++_test_util - src/core/lib/gpr/subprocess_posix.cc - src/core/lib/gpr/subprocess_windows.cc + src/core/util/subprocess_posix.cc + src/core/util/subprocess_windows.cc test/core/end2end/data/client_certs.cc test/core/end2end/data/server1_cert.cc test/core/end2end/data/server1_key.cc test/core/end2end/data/test_root_cert.cc - test/core/util/cmdline.cc - test/core/util/fuzzer_util.cc - test/core/util/grpc_profiler.cc - test/core/util/histogram.cc - test/core/util/mock_endpoint.cc - test/core/util/parse_hexstring.cc - test/core/util/resolve_localhost_ip46.cc - test/core/util/slice_splitter.cc - test/core/util/tracer_util.cc + test/core/test_util/cmdline.cc + test/core/test_util/fuzzer_util.cc + test/core/test_util/grpc_profiler.cc + test/core/test_util/histogram.cc + test/core/test_util/mock_endpoint.cc + test/core/test_util/parse_hexstring.cc + test/core/test_util/resolve_localhost_ip46.cc + test/core/test_util/slice_splitter.cc + test/core/test_util/tracer_util.cc test/cpp/util/byte_buffer_proto_helper.cc test/cpp/util/create_test_channel.cc test/cpp/util/string_ref_helper.cc @@ -5053,6 +5060,7 @@ foreach(_hdr include/grpcpp/impl/service_type.h include/grpcpp/impl/status.h include/grpcpp/impl/sync.h + include/grpcpp/passive_listener.h include/grpcpp/resource_quota.h include/grpcpp/security/audit_logging.h include/grpcpp/security/auth_context.h @@ -5113,11 +5121,21 @@ endif() add_library(grpc_authorization_provider + src/core/channelz/channel_trace.cc + src/core/channelz/channelz.cc + src/core/channelz/channelz_registry.cc src/core/ext/upb-gen/google/protobuf/any.upb_minitable.c src/core/ext/upb-gen/google/rpc/status.upb_minitable.c src/core/ext/upb-gen/src/proto/grpc/gcp/altscontext.upb_minitable.c src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb_minitable.c src/core/ext/upb-gen/src/proto/grpc/gcp/transport_security_common.upb_minitable.c + src/core/handshaker/endpoint_info/endpoint_info_handshaker.cc + src/core/handshaker/handshaker.cc + src/core/handshaker/handshaker_registry.cc + src/core/handshaker/proxy_mapper_registry.cc + src/core/handshaker/security/secure_endpoint.cc + src/core/handshaker/security/security_handshaker.cc + src/core/handshaker/security/tsi_error.cc src/core/lib/address_utils/parse_address.cc src/core/lib/address_utils/sockaddr_utils.cc src/core/lib/backoff/backoff.cc @@ -5128,9 +5146,6 @@ add_library(grpc_authorization_provider src/core/lib/channel/channel_stack_builder.cc src/core/lib/channel/channel_stack_builder_impl.cc src/core/lib/channel/channel_stack_trace.cc - src/core/lib/channel/channel_trace.cc - src/core/lib/channel/channelz.cc - src/core/lib/channel/channelz_registry.cc src/core/lib/channel/connected_channel.cc src/core/lib/channel/metrics.cc src/core/lib/channel/promise_based_filter.cc @@ -5201,7 +5216,6 @@ add_library(grpc_authorization_provider src/core/lib/gprpp/time_averaged_stats.cc src/core/lib/gprpp/validation_errors.cc src/core/lib/gprpp/work_serializer.cc - src/core/lib/handshaker/proxy_mapper_registry.cc src/core/lib/iomgr/buffer_list.cc src/core/lib/iomgr/call_combiner.cc src/core/lib/iomgr/cfstream_handle.cc @@ -5322,10 +5336,7 @@ add_library(grpc_authorization_provider src/core/lib/security/security_connector/load_system_roots_windows.cc src/core/lib/security/security_connector/security_connector.cc src/core/lib/security/transport/client_auth_filter.cc - src/core/lib/security/transport/secure_endpoint.cc - src/core/lib/security/transport/security_handshaker.cc src/core/lib/security/transport/server_auth_filter.cc - src/core/lib/security/transport/tsi_error.cc src/core/lib/security/util/json_util.cc src/core/lib/slice/percent_encoding.cc src/core/lib/slice/slice.cc @@ -5351,14 +5362,13 @@ add_library(grpc_authorization_provider src/core/lib/surface/version.cc src/core/lib/surface/wait_for_cq_end_op.cc src/core/lib/transport/batch_builder.cc + src/core/lib/transport/call_arena_allocator.cc src/core/lib/transport/call_filters.cc src/core/lib/transport/call_final_info.cc src/core/lib/transport/call_spine.cc src/core/lib/transport/connectivity_state.cc - src/core/lib/transport/endpoint_info_handshaker.cc src/core/lib/transport/error_utils.cc - src/core/lib/transport/handshaker.cc - src/core/lib/transport/handshaker_registry.cc + src/core/lib/transport/interception_chain.cc src/core/lib/transport/message.cc src/core/lib/transport/metadata.cc src/core/lib/transport/metadata_batch.cc @@ -5502,6 +5512,7 @@ foreach(_hdr include/grpc/impl/propagation_bits.h include/grpc/impl/slice_type.h include/grpc/load_reporting.h + include/grpc/passive_listener.h include/grpc/slice.h include/grpc/slice_buffer.h include/grpc/status.h @@ -5778,15 +5789,15 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) add_executable(fd_conservation_posix_test test/core/iomgr/fd_conservation_posix_test.cc - test/core/util/cmdline.cc - test/core/util/fuzzer_util.cc - test/core/util/grpc_profiler.cc - test/core/util/histogram.cc - test/core/util/mock_endpoint.cc - test/core/util/parse_hexstring.cc - test/core/util/resolve_localhost_ip46.cc - test/core/util/slice_splitter.cc - test/core/util/tracer_util.cc + test/core/test_util/cmdline.cc + test/core/test_util/fuzzer_util.cc + test/core/test_util/grpc_profiler.cc + test/core/test_util/histogram.cc + test/core/test_util/mock_endpoint.cc + test/core/test_util/parse_hexstring.cc + test/core/test_util/resolve_localhost_ip46.cc + test/core/test_util/slice_splitter.cc + test/core/test_util/tracer_util.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -5899,7 +5910,7 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_POSIX) add_executable(static_stride_scheduler_benchmark src/core/load_balancing/weighted_round_robin/static_stride_scheduler.cc - test/core/client_channel/lb_policy/static_stride_scheduler_benchmark.cc + test/core/load_balancing/static_stride_scheduler_benchmark.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -5939,15 +5950,15 @@ if(gRPC_BUILD_TESTS) add_executable(test_core_iomgr_timer_list_test test/core/iomgr/timer_list_test.cc - test/core/util/cmdline.cc - test/core/util/fuzzer_util.cc - test/core/util/grpc_profiler.cc - test/core/util/histogram.cc - test/core/util/mock_endpoint.cc - test/core/util/parse_hexstring.cc - test/core/util/resolve_localhost_ip46.cc - test/core/util/slice_splitter.cc - test/core/util/tracer_util.cc + test/core/test_util/cmdline.cc + test/core/test_util/fuzzer_util.cc + test/core/test_util/grpc_profiler.cc + test/core/test_util/histogram.cc + test/core/test_util/mock_endpoint.cc + test/core/test_util/parse_hexstring.cc + test/core/test_util/resolve_localhost_ip46.cc + test/core/test_util/slice_splitter.cc + test/core/test_util/tracer_util.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -6078,17 +6089,17 @@ if(gRPC_BUILD_TESTS) if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) add_executable(address_sorting_test_unsecure - src/core/lib/gpr/subprocess_posix.cc - src/core/lib/gpr/subprocess_windows.cc - test/core/util/cmdline.cc - test/core/util/fuzzer_util.cc - test/core/util/grpc_profiler.cc - test/core/util/histogram.cc - test/core/util/mock_endpoint.cc - test/core/util/parse_hexstring.cc - test/core/util/resolve_localhost_ip46.cc - test/core/util/slice_splitter.cc - test/core/util/tracer_util.cc + src/core/util/subprocess_posix.cc + src/core/util/subprocess_windows.cc + test/core/test_util/cmdline.cc + test/core/test_util/fuzzer_util.cc + test/core/test_util/grpc_profiler.cc + test/core/test_util/histogram.cc + test/core/test_util/mock_endpoint.cc + test/core/test_util/parse_hexstring.cc + test/core/test_util/resolve_localhost_ip46.cc + test/core/test_util/slice_splitter.cc + test/core/test_util/tracer_util.cc test/cpp/naming/address_sorting_test.cc test/cpp/util/byte_buffer_proto_helper.cc test/cpp/util/string_ref_helper.cc @@ -6202,15 +6213,15 @@ if(gRPC_BUILD_TESTS) if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) add_executable(alarm_test - test/core/util/cmdline.cc - test/core/util/fuzzer_util.cc - test/core/util/grpc_profiler.cc - test/core/util/histogram.cc - test/core/util/mock_endpoint.cc - test/core/util/parse_hexstring.cc - test/core/util/resolve_localhost_ip46.cc - test/core/util/slice_splitter.cc - test/core/util/tracer_util.cc + test/core/test_util/cmdline.cc + test/core/test_util/fuzzer_util.cc + test/core/test_util/grpc_profiler.cc + test/core/test_util/histogram.cc + test/core/test_util/mock_endpoint.cc + test/core/test_util/parse_hexstring.cc + test/core/test_util/resolve_localhost_ip46.cc + test/core/test_util/slice_splitter.cc + test/core/test_util/tracer_util.cc test/cpp/common/alarm_test.cc ) if(WIN32 AND MSVC) @@ -6302,7 +6313,7 @@ endif() if(gRPC_BUILD_TESTS) add_executable(alloc_test - test/core/gpr/alloc_test.cc + test/core/util/alloc_test.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -6396,9 +6407,9 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_POSIX) ${_gRPC_PROTO_GENS_DIR}/test/core/tsi/alts/fake_handshaker/transport_security_common.pb.h ${_gRPC_PROTO_GENS_DIR}/test/core/tsi/alts/fake_handshaker/transport_security_common.grpc.pb.h test/core/end2end/cq_verifier.cc + test/core/test_util/fake_udp_and_tcp_server.cc test/core/tsi/alts/fake_handshaker/fake_handshaker_server.cc test/core/tsi/alts/handshaker/alts_concurrent_connectivity_test.cc - test/core/util/fake_udp_and_tcp_server.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -6608,7 +6619,6 @@ target_include_directories(alts_frame_protector_test target_link_libraries(alts_frame_protector_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_test_util ) @@ -6747,15 +6757,15 @@ if(gRPC_BUILD_TESTS) add_executable(alts_security_connector_test test/core/security/alts_security_connector_test.cc - test/core/util/cmdline.cc - test/core/util/fuzzer_util.cc - test/core/util/grpc_profiler.cc - test/core/util/histogram.cc - test/core/util/mock_endpoint.cc - test/core/util/parse_hexstring.cc - test/core/util/resolve_localhost_ip46.cc - test/core/util/slice_splitter.cc - test/core/util/tracer_util.cc + test/core/test_util/cmdline.cc + test/core/test_util/fuzzer_util.cc + test/core/test_util/grpc_profiler.cc + test/core/test_util/histogram.cc + test/core/test_util/mock_endpoint.cc + test/core/test_util/parse_hexstring.cc + test/core/test_util/resolve_localhost_ip46.cc + test/core/test_util/slice_splitter.cc + test/core/test_util/tracer_util.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -7113,7 +7123,6 @@ target_include_directories(async_end2end_test target_link_libraries(async_end2end_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc++_test_util ) @@ -7123,15 +7132,15 @@ if(gRPC_BUILD_TESTS) add_executable(auth_context_test test/core/security/auth_context_test.cc - test/core/util/cmdline.cc - test/core/util/fuzzer_util.cc - test/core/util/grpc_profiler.cc - test/core/util/histogram.cc - test/core/util/mock_endpoint.cc - test/core/util/parse_hexstring.cc - test/core/util/resolve_localhost_ip46.cc - test/core/util/slice_splitter.cc - test/core/util/tracer_util.cc + test/core/test_util/cmdline.cc + test/core/test_util/fuzzer_util.cc + test/core/test_util/grpc_profiler.cc + test/core/test_util/histogram.cc + test/core/test_util/mock_endpoint.cc + test/core/test_util/parse_hexstring.cc + test/core/test_util/resolve_localhost_ip46.cc + test/core/test_util/slice_splitter.cc + test/core/test_util/tracer_util.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -7217,15 +7226,15 @@ if(gRPC_BUILD_TESTS) add_executable(authorization_matchers_test test/core/security/authorization_matchers_test.cc - test/core/util/cmdline.cc - test/core/util/fuzzer_util.cc - test/core/util/grpc_profiler.cc - test/core/util/histogram.cc - test/core/util/mock_endpoint.cc - test/core/util/parse_hexstring.cc - test/core/util/resolve_localhost_ip46.cc - test/core/util/slice_splitter.cc - test/core/util/tracer_util.cc + test/core/test_util/cmdline.cc + test/core/test_util/fuzzer_util.cc + test/core/test_util/grpc_profiler.cc + test/core/test_util/histogram.cc + test/core/test_util/mock_endpoint.cc + test/core/test_util/parse_hexstring.cc + test/core/test_util/resolve_localhost_ip46.cc + test/core/test_util/slice_splitter.cc + test/core/test_util/tracer_util.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -7357,15 +7366,15 @@ if(gRPC_BUILD_TESTS) add_executable(aws_request_signer_test test/core/security/aws_request_signer_test.cc - test/core/util/cmdline.cc - test/core/util/fuzzer_util.cc - test/core/util/grpc_profiler.cc - test/core/util/histogram.cc - test/core/util/mock_endpoint.cc - test/core/util/parse_hexstring.cc - test/core/util/resolve_localhost_ip46.cc - test/core/util/slice_splitter.cc - test/core/util/tracer_util.cc + test/core/test_util/cmdline.cc + test/core/test_util/fuzzer_util.cc + test/core/test_util/grpc_profiler.cc + test/core/test_util/histogram.cc + test/core/test_util/mock_endpoint.cc + test/core/test_util/parse_hexstring.cc + test/core/test_util/resolve_localhost_ip46.cc + test/core/test_util/slice_splitter.cc + test/core/test_util/tracer_util.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -7456,7 +7465,6 @@ target_include_directories(backend_metrics_lb_policy_test target_link_libraries(backend_metrics_lb_policy_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc++ grpc_test_util grpc++_test_config @@ -7527,8 +7535,8 @@ add_executable(bad_ping_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/bad_ping.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -7562,7 +7570,6 @@ target_include_directories(bad_ping_test target_link_libraries(bad_ping_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -7617,19 +7624,19 @@ if(gRPC_BUILD_TESTS) if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) add_executable(bad_ssl_alpn_test - src/core/lib/gpr/subprocess_posix.cc - src/core/lib/gpr/subprocess_windows.cc + src/core/util/subprocess_posix.cc + src/core/util/subprocess_windows.cc test/core/bad_ssl/bad_ssl_test.cc test/core/end2end/cq_verifier.cc - test/core/util/cmdline.cc - test/core/util/fuzzer_util.cc - test/core/util/grpc_profiler.cc - test/core/util/histogram.cc - test/core/util/mock_endpoint.cc - test/core/util/parse_hexstring.cc - test/core/util/resolve_localhost_ip46.cc - test/core/util/slice_splitter.cc - test/core/util/tracer_util.cc + test/core/test_util/cmdline.cc + test/core/test_util/fuzzer_util.cc + test/core/test_util/grpc_profiler.cc + test/core/test_util/histogram.cc + test/core/test_util/mock_endpoint.cc + test/core/test_util/parse_hexstring.cc + test/core/test_util/resolve_localhost_ip46.cc + test/core/test_util/slice_splitter.cc + test/core/test_util/tracer_util.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -7673,19 +7680,19 @@ if(gRPC_BUILD_TESTS) if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) add_executable(bad_ssl_cert_test - src/core/lib/gpr/subprocess_posix.cc - src/core/lib/gpr/subprocess_windows.cc + src/core/util/subprocess_posix.cc + src/core/util/subprocess_windows.cc test/core/bad_ssl/bad_ssl_test.cc test/core/end2end/cq_verifier.cc - test/core/util/cmdline.cc - test/core/util/fuzzer_util.cc - test/core/util/grpc_profiler.cc - test/core/util/histogram.cc - test/core/util/mock_endpoint.cc - test/core/util/parse_hexstring.cc - test/core/util/resolve_localhost_ip46.cc - test/core/util/slice_splitter.cc - test/core/util/tracer_util.cc + test/core/test_util/cmdline.cc + test/core/test_util/fuzzer_util.cc + test/core/test_util/grpc_profiler.cc + test/core/test_util/histogram.cc + test/core/test_util/mock_endpoint.cc + test/core/test_util/parse_hexstring.cc + test/core/test_util/resolve_localhost_ip46.cc + test/core/test_util/slice_splitter.cc + test/core/test_util/tracer_util.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -7764,7 +7771,6 @@ target_include_directories(bad_streaming_id_bad_client_test target_link_libraries(bad_streaming_id_bad_client_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_test_util ) @@ -7809,7 +7815,6 @@ target_include_directories(badreq_bad_client_test target_link_libraries(badreq_bad_client_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_test_util ) @@ -8006,8 +8011,8 @@ add_executable(binary_metadata_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/binary_metadata.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -8041,7 +8046,6 @@ target_include_directories(binary_metadata_test target_link_libraries(binary_metadata_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -8052,7 +8056,7 @@ endif() if(gRPC_BUILD_TESTS) add_executable(binder_resolver_test - test/core/client_channel/resolvers/binder_resolver_test.cc + test/core/resolver/binder_resolver_test.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -8147,7 +8151,6 @@ target_include_directories(binder_server_test target_link_libraries(binder_server_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc++_test_util ) @@ -8297,15 +8300,15 @@ if(gRPC_BUILD_TESTS) add_executable(buffer_list_test test/core/iomgr/buffer_list_test.cc - test/core/util/cmdline.cc - test/core/util/fuzzer_util.cc - test/core/util/grpc_profiler.cc - test/core/util/histogram.cc - test/core/util/mock_endpoint.cc - test/core/util/parse_hexstring.cc - test/core/util/resolve_localhost_ip46.cc - test/core/util/slice_splitter.cc - test/core/util/tracer_util.cc + test/core/test_util/cmdline.cc + test/core/test_util/fuzzer_util.cc + test/core/test_util/grpc_profiler.cc + test/core/test_util/histogram.cc + test/core/test_util/mock_endpoint.cc + test/core/test_util/parse_hexstring.cc + test/core/test_util/resolve_localhost_ip46.cc + test/core/test_util/slice_splitter.cc + test/core/test_util/tracer_util.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -8450,8 +8453,8 @@ add_executable(call_creds_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/call_creds.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -8485,7 +8488,6 @@ target_include_directories(call_creds_test target_link_libraries(call_creds_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -8656,8 +8658,8 @@ add_executable(call_host_override_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/call_host_override.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -8691,7 +8693,6 @@ target_include_directories(call_host_override_test target_link_libraries(call_host_override_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -8703,7 +8704,7 @@ if(gRPC_BUILD_TESTS) add_executable(call_tracer_test test/core/channel/call_tracer_test.cc - test/core/util/fake_stats_plugin.cc + test/core/test_util/fake_stats_plugin.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -8763,8 +8764,8 @@ add_executable(cancel_after_accept_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/cancel_after_accept.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -8798,7 +8799,6 @@ target_include_directories(cancel_after_accept_test target_link_libraries(cancel_after_accept_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -8827,8 +8827,8 @@ add_executable(cancel_after_client_done_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/cancel_after_client_done.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -8862,7 +8862,6 @@ target_include_directories(cancel_after_client_done_test target_link_libraries(cancel_after_client_done_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -8891,8 +8890,8 @@ add_executable(cancel_after_invoke_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/cancel_after_invoke.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -8926,7 +8925,6 @@ target_include_directories(cancel_after_invoke_test target_link_libraries(cancel_after_invoke_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -8955,8 +8953,8 @@ add_executable(cancel_after_round_trip_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/cancel_after_round_trip.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -8990,7 +8988,6 @@ target_include_directories(cancel_after_round_trip_test target_link_libraries(cancel_after_round_trip_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -9002,8 +8999,8 @@ if(gRPC_BUILD_TESTS) add_executable(cancel_ares_query_test test/core/end2end/cq_verifier.cc - test/core/util/fake_udp_and_tcp_server.cc - test/core/util/socket_use_after_close_detector.cc + test/core/test_util/fake_udp_and_tcp_server.cc + test/core/test_util/socket_use_after_close_detector.cc test/cpp/naming/cancel_ares_query_test.cc ) if(WIN32 AND MSVC) @@ -9066,8 +9063,8 @@ add_executable(cancel_before_invoke_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/cancel_before_invoke.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -9101,7 +9098,6 @@ target_include_directories(cancel_before_invoke_test target_link_libraries(cancel_before_invoke_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -9172,8 +9168,8 @@ add_executable(cancel_in_a_vacuum_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/cancel_in_a_vacuum.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -9207,7 +9203,6 @@ target_include_directories(cancel_in_a_vacuum_test target_link_libraries(cancel_in_a_vacuum_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -9236,8 +9231,8 @@ add_executable(cancel_with_status_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/cancel_with_status.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -9271,7 +9266,6 @@ target_include_directories(cancel_with_status_test target_link_libraries(cancel_with_status_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -9372,15 +9366,15 @@ add_executable(cel_authorization_engine_test src/core/ext/upb-gen/xds/type/v3/typed_struct.upb_minitable.c src/core/lib/security/authorization/cel_authorization_engine.cc test/core/security/cel_authorization_engine_test.cc - test/core/util/cmdline.cc - test/core/util/fuzzer_util.cc - test/core/util/grpc_profiler.cc - test/core/util/histogram.cc - test/core/util/mock_endpoint.cc - test/core/util/parse_hexstring.cc - test/core/util/resolve_localhost_ip46.cc - test/core/util/slice_splitter.cc - test/core/util/tracer_util.cc + test/core/test_util/cmdline.cc + test/core/test_util/fuzzer_util.cc + test/core/test_util/grpc_profiler.cc + test/core/test_util/histogram.cc + test/core/test_util/mock_endpoint.cc + test/core/test_util/parse_hexstring.cc + test/core/test_util/resolve_localhost_ip46.cc + test/core/test_util/slice_splitter.cc + test/core/test_util/tracer_util.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -9541,7 +9535,6 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) target_link_libraries(cf_engine_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_test_util ) @@ -9591,7 +9584,6 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) target_link_libraries(cf_event_engine_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_test_util ) @@ -9653,7 +9645,6 @@ target_include_directories(cfstream_test target_link_libraries(cfstream_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc++_test_util ) @@ -9749,15 +9740,15 @@ if(gRPC_BUILD_TESTS) add_executable(channel_creds_registry_test test/core/security/channel_creds_registry_test.cc - test/core/util/cmdline.cc - test/core/util/fuzzer_util.cc - test/core/util/grpc_profiler.cc - test/core/util/histogram.cc - test/core/util/mock_endpoint.cc - test/core/util/parse_hexstring.cc - test/core/util/resolve_localhost_ip46.cc - test/core/util/slice_splitter.cc - test/core/util/tracer_util.cc + test/core/test_util/cmdline.cc + test/core/test_util/fuzzer_util.cc + test/core/test_util/grpc_profiler.cc + test/core/test_util/histogram.cc + test/core/test_util/mock_endpoint.cc + test/core/test_util/parse_hexstring.cc + test/core/test_util/resolve_localhost_ip46.cc + test/core/test_util/slice_splitter.cc + test/core/test_util/tracer_util.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -9929,7 +9920,7 @@ add_executable(channel_trace_test ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/channelz/channelz.grpc.pb.cc ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/channelz/channelz.pb.h ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/channelz/channelz.grpc.pb.h - test/core/channel/channel_trace_test.cc + test/core/channelz/channel_trace_test.cc test/cpp/util/channel_trace_proto_helper.cc ) if(WIN32 AND MSVC) @@ -9974,7 +9965,7 @@ endif() if(gRPC_BUILD_TESTS) add_executable(channelz_registry_test - test/core/channel/channelz_registry_test.cc + test/core/channelz/channelz_registry_test.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -10071,7 +10062,6 @@ target_include_directories(channelz_service_test target_link_libraries(channelz_service_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpcpp_channelz grpc++_test_util ) @@ -10082,15 +10072,15 @@ if(gRPC_BUILD_TESTS) add_executable(check_gcp_environment_linux_test test/core/security/check_gcp_environment_linux_test.cc - test/core/util/cmdline.cc - test/core/util/fuzzer_util.cc - test/core/util/grpc_profiler.cc - test/core/util/histogram.cc - test/core/util/mock_endpoint.cc - test/core/util/parse_hexstring.cc - test/core/util/resolve_localhost_ip46.cc - test/core/util/slice_splitter.cc - test/core/util/tracer_util.cc + test/core/test_util/cmdline.cc + test/core/test_util/fuzzer_util.cc + test/core/test_util/grpc_profiler.cc + test/core/test_util/histogram.cc + test/core/test_util/mock_endpoint.cc + test/core/test_util/parse_hexstring.cc + test/core/test_util/resolve_localhost_ip46.cc + test/core/test_util/slice_splitter.cc + test/core/test_util/tracer_util.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -10133,15 +10123,15 @@ if(gRPC_BUILD_TESTS) add_executable(check_gcp_environment_windows_test test/core/security/check_gcp_environment_windows_test.cc - test/core/util/cmdline.cc - test/core/util/fuzzer_util.cc - test/core/util/grpc_profiler.cc - test/core/util/histogram.cc - test/core/util/mock_endpoint.cc - test/core/util/parse_hexstring.cc - test/core/util/resolve_localhost_ip46.cc - test/core/util/slice_splitter.cc - test/core/util/tracer_util.cc + test/core/test_util/cmdline.cc + test/core/test_util/fuzzer_util.cc + test/core/test_util/grpc_profiler.cc + test/core/test_util/histogram.cc + test/core/test_util/mock_endpoint.cc + test/core/test_util/parse_hexstring.cc + test/core/test_util/resolve_localhost_ip46.cc + test/core/test_util/slice_splitter.cc + test/core/test_util/tracer_util.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -10377,7 +10367,6 @@ target_include_directories(client_auth_filter_test target_link_libraries(client_auth_filter_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check ${_gRPC_PROTOBUF_LIBRARIES} grpc_test_util ) @@ -10427,7 +10416,6 @@ target_include_directories(client_authority_filter_test target_link_libraries(client_authority_filter_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check ${_gRPC_PROTOBUF_LIBRARIES} grpc_test_util ) @@ -10490,7 +10478,6 @@ target_include_directories(client_callback_end2end_test target_link_libraries(client_callback_end2end_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc++_test_util ) @@ -10746,7 +10733,6 @@ target_include_directories(client_interceptors_end2end_test target_link_libraries(client_interceptors_end2end_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc++_test_util ) @@ -10781,7 +10767,7 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/orca_load_report.pb.h ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/orca_load_report.grpc.pb.h src/cpp/server/orca/orca_service.cc - test/core/util/test_lb_policies.cc + test/core/test_util/test_lb_policies.cc test/cpp/end2end/client_lb_end2end_test.cc test/cpp/end2end/connection_attempt_injector.cc test/cpp/end2end/test_service_impl.cc @@ -10819,7 +10805,6 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) target_link_libraries(client_lb_end2end_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc++_test_util ) @@ -10891,8 +10876,8 @@ add_executable(client_streaming_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/client_streaming.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -10926,7 +10911,6 @@ target_include_directories(client_streaming_test target_link_libraries(client_streaming_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -10937,16 +10921,16 @@ endif() if(gRPC_BUILD_TESTS) add_executable(cmdline_test - test/core/util/cmdline.cc - test/core/util/cmdline_test.cc - test/core/util/fuzzer_util.cc - test/core/util/grpc_profiler.cc - test/core/util/histogram.cc - test/core/util/mock_endpoint.cc - test/core/util/parse_hexstring.cc - test/core/util/resolve_localhost_ip46.cc - test/core/util/slice_splitter.cc - test/core/util/tracer_util.cc + test/core/test_util/cmdline.cc + test/core/test_util/cmdline_test.cc + test/core/test_util/fuzzer_util.cc + test/core/test_util/grpc_profiler.cc + test/core/test_util/histogram.cc + test/core/test_util/mock_endpoint.cc + test/core/test_util/parse_hexstring.cc + test/core/test_util/resolve_localhost_ip46.cc + test/core/test_util/slice_splitter.cc + test/core/test_util/tracer_util.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -11078,15 +11062,15 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) add_executable(combiner_test test/core/iomgr/combiner_test.cc - test/core/util/cmdline.cc - test/core/util/fuzzer_util.cc - test/core/util/grpc_profiler.cc - test/core/util/histogram.cc - test/core/util/mock_endpoint.cc - test/core/util/parse_hexstring.cc - test/core/util/resolve_localhost_ip46.cc - test/core/util/slice_splitter.cc - test/core/util/tracer_util.cc + test/core/test_util/cmdline.cc + test/core/test_util/fuzzer_util.cc + test/core/test_util/grpc_profiler.cc + test/core/test_util/histogram.cc + test/core/test_util/mock_endpoint.cc + test/core/test_util/parse_hexstring.cc + test/core/test_util/resolve_localhost_ip46.cc + test/core/test_util/slice_splitter.cc + test/core/test_util/tracer_util.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -11231,8 +11215,8 @@ add_executable(compressed_payload_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/compressed_payload.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -11266,7 +11250,6 @@ target_include_directories(compressed_payload_test target_link_libraries(compressed_payload_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -11397,7 +11380,6 @@ target_include_directories(connection_prefix_bad_client_test target_link_libraries(connection_prefix_bad_client_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_test_util ) @@ -11449,16 +11431,16 @@ endif() if(gRPC_BUILD_TESTS) add_executable(connectivity_state_test + test/core/test_util/cmdline.cc + test/core/test_util/fuzzer_util.cc + test/core/test_util/grpc_profiler.cc + test/core/test_util/histogram.cc + test/core/test_util/mock_endpoint.cc + test/core/test_util/parse_hexstring.cc + test/core/test_util/resolve_localhost_ip46.cc + test/core/test_util/slice_splitter.cc + test/core/test_util/tracer_util.cc test/core/transport/connectivity_state_test.cc - test/core/util/cmdline.cc - test/core/util/fuzzer_util.cc - test/core/util/grpc_profiler.cc - test/core/util/histogram.cc - test/core/util/mock_endpoint.cc - test/core/util/parse_hexstring.cc - test/core/util/resolve_localhost_ip46.cc - test/core/util/slice_splitter.cc - test/core/util/tracer_util.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -11518,8 +11500,8 @@ add_executable(connectivity_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/connectivity.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -11553,7 +11535,6 @@ target_include_directories(connectivity_test target_link_libraries(connectivity_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -11616,7 +11597,6 @@ target_include_directories(context_allocator_end2end_test target_link_libraries(context_allocator_end2end_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc++_test_util ) @@ -11742,7 +11722,7 @@ endif() if(gRPC_BUILD_TESTS) add_executable(cpu_test - test/core/gpr/cpu_test.cc + test/core/util/cpu_test.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -11836,7 +11816,6 @@ target_include_directories(crl_provider_test target_link_libraries(crl_provider_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc++_test_util ) @@ -11881,7 +11860,6 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) target_link_libraries(crl_ssl_transport_security_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_test_util ) @@ -11951,8 +11929,8 @@ add_executable(default_host_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/default_host.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -11986,7 +11964,6 @@ target_include_directories(default_host_test target_link_libraries(default_host_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -12049,7 +12026,6 @@ target_include_directories(delegating_channel_test target_link_libraries(delegating_channel_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc++_test_util ) @@ -12161,8 +12137,8 @@ add_executable(disappearing_server_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/disappearing_server.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -12196,7 +12172,6 @@ target_include_directories(disappearing_server_test target_link_libraries(disappearing_server_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -12207,7 +12182,7 @@ endif() if(gRPC_BUILD_TESTS) add_executable(dns_resolver_cooldown_test - test/core/client_channel/resolvers/dns_resolver_cooldown_test.cc + test/core/resolver/dns_resolver_cooldown_test.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -12249,7 +12224,7 @@ endif() if(gRPC_BUILD_TESTS) add_executable(dns_resolver_test - test/core/client_channel/resolvers/dns_resolver_test.cc + test/core/resolver/dns_resolver_test.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -12419,6 +12394,41 @@ endif() endif() if(gRPC_BUILD_TESTS) +add_executable(dump_args_test + src/core/lib/gprpp/dump_args.cc + test/core/gprpp/dump_args_test.cc +) +target_compile_features(dump_args_test PUBLIC cxx_std_14) +target_include_directories(dump_args_test + PRIVATE + ${CMAKE_CURRENT_SOURCE_DIR} + ${CMAKE_CURRENT_SOURCE_DIR}/include + ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR} + ${_gRPC_RE2_INCLUDE_DIR} + ${_gRPC_SSL_INCLUDE_DIR} + ${_gRPC_UPB_GENERATED_DIR} + ${_gRPC_UPB_GRPC_GENERATED_DIR} + ${_gRPC_UPB_INCLUDE_DIR} + ${_gRPC_XXHASH_INCLUDE_DIR} + ${_gRPC_ZLIB_INCLUDE_DIR} + third_party/googletest/googletest/include + third_party/googletest/googletest + third_party/googletest/googlemock/include + third_party/googletest/googlemock + ${_gRPC_PROTO_GENS_DIR} +) + +target_link_libraries(dump_args_test + ${_gRPC_ALLTARGETS_LIBRARIES} + gtest + absl::any_invocable + absl::check +) + + +endif() +if(gRPC_BUILD_TESTS) + add_executable(duplicate_header_bad_client_test test/core/bad_client/bad_client.cc test/core/bad_client/tests/duplicate_header.cc @@ -12456,7 +12466,6 @@ target_include_directories(duplicate_header_bad_client_test target_link_libraries(duplicate_header_bad_client_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_test_util ) @@ -12483,8 +12492,8 @@ add_executable(empty_batch_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/empty_batch.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -12518,7 +12527,6 @@ target_include_directories(empty_batch_test target_link_libraries(empty_batch_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -12584,7 +12592,6 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_POSIX) target_link_libraries(end2end_binder_transport_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc++_test_util ) @@ -12650,7 +12657,6 @@ target_include_directories(end2end_test target_link_libraries(end2end_test ${_gRPC_ALLTARGETS_LIBRARIES} - absl::check grpc++_test grpc++_test_util ) @@ -12862,15 +12868,15 @@ if(gRPC_BUILD_TESTS) add_executable(endpoint_pair_test test/core/iomgr/endpoint_pair_test.cc test/core/iomgr/endpoint_tests.cc - test/core/util/cmdline.cc - test/core/util/fuzzer_util.cc - test/core/util/grpc_profiler.cc - test/core/util/histogram.cc - test/core/util/mock_endpoint.cc - test/core/util/parse_hexstring.cc - test/core/util/resolve_localhost_ip46.cc - test/core/util/slice_splitter.cc - test/core/util/tracer_util.cc + test/core/test_util/cmdline.cc + test/core/test_util/fuzzer_util.cc + test/core/test_util/grpc_profiler.cc + test/core/test_util/histogram.cc + test/core/test_util/mock_endpoint.cc + test/core/test_util/parse_hexstring.cc + test/core/test_util/resolve_localhost_ip46.cc + test/core/test_util/slice_splitter.cc + test/core/test_util/tracer_util.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -12912,7 +12918,7 @@ endif() if(gRPC_BUILD_TESTS) add_executable(env_test - test/core/gpr/env_test.cc + test/core/util/env_test.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -13012,15 +13018,15 @@ if(gRPC_BUILD_TESTS) add_executable(error_test test/core/iomgr/endpoint_tests.cc test/core/iomgr/error_test.cc - test/core/util/cmdline.cc - test/core/util/fuzzer_util.cc - test/core/util/grpc_profiler.cc - test/core/util/histogram.cc - test/core/util/mock_endpoint.cc - test/core/util/parse_hexstring.cc - test/core/util/resolve_localhost_ip46.cc - test/core/util/slice_splitter.cc - test/core/util/tracer_util.cc + test/core/test_util/cmdline.cc + test/core/test_util/fuzzer_util.cc + test/core/test_util/grpc_profiler.cc + test/core/test_util/histogram.cc + test/core/test_util/mock_endpoint.cc + test/core/test_util/parse_hexstring.cc + test/core/test_util/resolve_localhost_ip46.cc + test/core/test_util/slice_splitter.cc + test/core/test_util/tracer_util.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -13062,16 +13068,16 @@ endif() if(gRPC_BUILD_TESTS) add_executable(error_utils_test + test/core/test_util/cmdline.cc + test/core/test_util/fuzzer_util.cc + test/core/test_util/grpc_profiler.cc + test/core/test_util/histogram.cc + test/core/test_util/mock_endpoint.cc + test/core/test_util/parse_hexstring.cc + test/core/test_util/resolve_localhost_ip46.cc + test/core/test_util/slice_splitter.cc + test/core/test_util/tracer_util.cc test/core/transport/error_utils_test.cc - test/core/util/cmdline.cc - test/core/util/fuzzer_util.cc - test/core/util/grpc_profiler.cc - test/core/util/histogram.cc - test/core/util/mock_endpoint.cc - test/core/util/parse_hexstring.cc - test/core/util/resolve_localhost_ip46.cc - test/core/util/slice_splitter.cc - test/core/util/tracer_util.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -13114,15 +13120,15 @@ if(gRPC_BUILD_TESTS) add_executable(evaluate_args_test test/core/security/evaluate_args_test.cc - test/core/util/cmdline.cc - test/core/util/fuzzer_util.cc - test/core/util/grpc_profiler.cc - test/core/util/histogram.cc - test/core/util/mock_endpoint.cc - test/core/util/parse_hexstring.cc - test/core/util/resolve_localhost_ip46.cc - test/core/util/slice_splitter.cc - test/core/util/tracer_util.cc + test/core/test_util/cmdline.cc + test/core/test_util/fuzzer_util.cc + test/core/test_util/grpc_profiler.cc + test/core/test_util/histogram.cc + test/core/test_util/mock_endpoint.cc + test/core/test_util/parse_hexstring.cc + test/core/test_util/resolve_localhost_ip46.cc + test/core/test_util/slice_splitter.cc + test/core/test_util/tracer_util.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -13668,7 +13674,7 @@ endif() if(gRPC_BUILD_TESTS) add_executable(fake_resolver_test - test/core/client_channel/resolvers/fake_resolver_test.cc + test/core/resolver/fake_resolver_test.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -13745,7 +13751,6 @@ target_include_directories(fake_transport_security_test target_link_libraries(fake_transport_security_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_test_util ) @@ -13756,15 +13761,15 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) add_executable(fd_posix_test test/core/iomgr/fd_posix_test.cc - test/core/util/cmdline.cc - test/core/util/fuzzer_util.cc - test/core/util/grpc_profiler.cc - test/core/util/histogram.cc - test/core/util/mock_endpoint.cc - test/core/util/parse_hexstring.cc - test/core/util/resolve_localhost_ip46.cc - test/core/util/slice_splitter.cc - test/core/util/tracer_util.cc + test/core/test_util/cmdline.cc + test/core/test_util/fuzzer_util.cc + test/core/test_util/grpc_profiler.cc + test/core/test_util/histogram.cc + test/core/test_util/mock_endpoint.cc + test/core/test_util/parse_hexstring.cc + test/core/test_util/resolve_localhost_ip46.cc + test/core/test_util/slice_splitter.cc + test/core/test_util/tracer_util.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -13867,8 +13872,8 @@ add_executable(filter_causes_close_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/filter_causes_close.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -13902,7 +13907,6 @@ target_include_directories(filter_causes_close_test target_link_libraries(filter_causes_close_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -13931,8 +13935,8 @@ add_executable(filter_context_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/filter_context.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -13966,7 +13970,6 @@ target_include_directories(filter_context_test target_link_libraries(filter_context_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -13995,8 +13998,8 @@ add_executable(filter_init_fails_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/filter_init_fails.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -14030,7 +14033,6 @@ target_include_directories(filter_init_fails_test target_link_libraries(filter_init_fails_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -14081,7 +14083,6 @@ target_include_directories(filter_test_test target_link_libraries(filter_test_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_unsecure ${_gRPC_PROTOBUF_LIBRARIES} grpc_test_util @@ -14110,8 +14111,8 @@ add_executable(filtered_metadata_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/filtered_metadata.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -14145,7 +14146,6 @@ target_include_directories(filtered_metadata_test target_link_libraries(filtered_metadata_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -14208,7 +14208,6 @@ target_include_directories(flaky_network_test target_link_libraries(flaky_network_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc++_test_util ) @@ -14295,7 +14294,6 @@ target_link_libraries(flow_control_test absl::config absl::function_ref absl::hash - absl::check absl::type_traits absl::statusor absl::span @@ -14484,15 +14482,15 @@ add_executable(format_request_test test/core/end2end/data/server1_key.cc test/core/end2end/data/test_root_cert.cc test/core/http/format_request_test.cc - test/core/util/cmdline.cc - test/core/util/fuzzer_util.cc - test/core/util/grpc_profiler.cc - test/core/util/histogram.cc - test/core/util/mock_endpoint.cc - test/core/util/parse_hexstring.cc - test/core/util/resolve_localhost_ip46.cc - test/core/util/slice_splitter.cc - test/core/util/tracer_util.cc + test/core/test_util/cmdline.cc + test/core/test_util/fuzzer_util.cc + test/core/test_util/grpc_profiler.cc + test/core/test_util/histogram.cc + test/core/test_util/mock_endpoint.cc + test/core/test_util/parse_hexstring.cc + test/core/test_util/resolve_localhost_ip46.cc + test/core/test_util/slice_splitter.cc + test/core/test_util/tracer_util.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -14672,7 +14670,6 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_POSIX) target_link_libraries(fuzzing_event_engine_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check ${_gRPC_PROTOBUF_LIBRARIES} grpc_test_util ) @@ -14722,7 +14719,6 @@ target_include_directories(fuzzing_event_engine_unittest target_link_libraries(fuzzing_event_engine_unittest ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check ${_gRPC_PROTOBUF_LIBRARIES} grpc_test_util ) @@ -14838,8 +14834,8 @@ endif() if(gRPC_BUILD_TESTS) add_executable(google_c2p_resolver_test - test/core/client_channel/resolvers/google_c2p_resolver_test.cc - test/core/util/fake_udp_and_tcp_server.cc + test/core/resolver/google_c2p_resolver_test.cc + test/core/test_util/fake_udp_and_tcp_server.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -14900,8 +14896,8 @@ add_executable(graceful_server_shutdown_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/graceful_server_shutdown.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -14935,7 +14931,6 @@ target_include_directories(graceful_server_shutdown_test target_link_libraries(graceful_server_shutdown_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -14981,7 +14976,6 @@ target_include_directories(graceful_shutdown_test target_link_libraries(graceful_shutdown_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_test_util ) @@ -14991,15 +14985,15 @@ if(gRPC_BUILD_TESTS) add_executable(grpc_alts_credentials_options_test test/core/security/grpc_alts_credentials_options_test.cc - test/core/util/cmdline.cc - test/core/util/fuzzer_util.cc - test/core/util/grpc_profiler.cc - test/core/util/histogram.cc - test/core/util/mock_endpoint.cc - test/core/util/parse_hexstring.cc - test/core/util/resolve_localhost_ip46.cc - test/core/util/slice_splitter.cc - test/core/util/tracer_util.cc + test/core/test_util/cmdline.cc + test/core/test_util/fuzzer_util.cc + test/core/test_util/grpc_profiler.cc + test/core/test_util/histogram.cc + test/core/test_util/mock_endpoint.cc + test/core/test_util/parse_hexstring.cc + test/core/test_util/resolve_localhost_ip46.cc + test/core/test_util/slice_splitter.cc + test/core/test_util/tracer_util.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -15084,16 +15078,16 @@ if(gRPC_BUILD_TESTS) add_executable(grpc_authorization_engine_test test/core/security/grpc_authorization_engine_test.cc - test/core/util/audit_logging_utils.cc - test/core/util/cmdline.cc - test/core/util/fuzzer_util.cc - test/core/util/grpc_profiler.cc - test/core/util/histogram.cc - test/core/util/mock_endpoint.cc - test/core/util/parse_hexstring.cc - test/core/util/resolve_localhost_ip46.cc - test/core/util/slice_splitter.cc - test/core/util/tracer_util.cc + test/core/test_util/audit_logging_utils.cc + test/core/test_util/cmdline.cc + test/core/test_util/fuzzer_util.cc + test/core/test_util/grpc_profiler.cc + test/core/test_util/histogram.cc + test/core/test_util/mock_endpoint.cc + test/core/test_util/parse_hexstring.cc + test/core/test_util/resolve_localhost_ip46.cc + test/core/test_util/slice_splitter.cc + test/core/test_util/tracer_util.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -15136,15 +15130,15 @@ if(gRPC_BUILD_TESTS) add_executable(grpc_authorization_policy_provider_test test/core/security/grpc_authorization_policy_provider_test.cc - test/core/util/cmdline.cc - test/core/util/fuzzer_util.cc - test/core/util/grpc_profiler.cc - test/core/util/histogram.cc - test/core/util/mock_endpoint.cc - test/core/util/parse_hexstring.cc - test/core/util/resolve_localhost_ip46.cc - test/core/util/slice_splitter.cc - test/core/util/tracer_util.cc + test/core/test_util/cmdline.cc + test/core/test_util/fuzzer_util.cc + test/core/test_util/grpc_profiler.cc + test/core/test_util/histogram.cc + test/core/test_util/mock_endpoint.cc + test/core/test_util/parse_hexstring.cc + test/core/test_util/resolve_localhost_ip46.cc + test/core/test_util/slice_splitter.cc + test/core/test_util/tracer_util.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -15204,7 +15198,7 @@ add_executable(grpc_authz_end2end_test ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/orca_load_report.pb.h ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/orca_load_report.grpc.pb.h src/cpp/server/authorization_policy_provider.cc - test/core/util/audit_logging_utils.cc + test/core/test_util/audit_logging_utils.cc test/cpp/end2end/grpc_authz_end2end_test.cc test/cpp/end2end/test_service_impl.cc ) @@ -15241,7 +15235,6 @@ target_include_directories(grpc_authz_end2end_test target_link_libraries(grpc_authz_end2end_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc++_test_util ) @@ -15269,8 +15262,8 @@ add_executable(grpc_authz_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/grpc_authz.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -15304,7 +15297,6 @@ target_include_directories(grpc_authz_test target_link_libraries(grpc_authz_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -15526,15 +15518,15 @@ if(gRPC_BUILD_TESTS) add_executable(grpc_ipv6_loopback_available_test test/core/iomgr/grpc_ipv6_loopback_available_test.cc - test/core/util/cmdline.cc - test/core/util/fuzzer_util.cc - test/core/util/grpc_profiler.cc - test/core/util/histogram.cc - test/core/util/mock_endpoint.cc - test/core/util/parse_hexstring.cc - test/core/util/resolve_localhost_ip46.cc - test/core/util/slice_splitter.cc - test/core/util/tracer_util.cc + test/core/test_util/cmdline.cc + test/core/test_util/fuzzer_util.cc + test/core/test_util/grpc_profiler.cc + test/core/test_util/histogram.cc + test/core/test_util/mock_endpoint.cc + test/core/test_util/parse_hexstring.cc + test/core/test_util/resolve_localhost_ip46.cc + test/core/test_util/slice_splitter.cc + test/core/test_util/tracer_util.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -15767,15 +15759,15 @@ if(gRPC_BUILD_TESTS) add_executable(grpc_tls_certificate_distributor_test test/core/security/grpc_tls_certificate_distributor_test.cc - test/core/util/cmdline.cc - test/core/util/fuzzer_util.cc - test/core/util/grpc_profiler.cc - test/core/util/histogram.cc - test/core/util/mock_endpoint.cc - test/core/util/parse_hexstring.cc - test/core/util/resolve_localhost_ip46.cc - test/core/util/slice_splitter.cc - test/core/util/tracer_util.cc + test/core/test_util/cmdline.cc + test/core/test_util/fuzzer_util.cc + test/core/test_util/grpc_profiler.cc + test/core/test_util/histogram.cc + test/core/test_util/mock_endpoint.cc + test/core/test_util/parse_hexstring.cc + test/core/test_util/resolve_localhost_ip46.cc + test/core/test_util/slice_splitter.cc + test/core/test_util/tracer_util.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -15818,15 +15810,15 @@ if(gRPC_BUILD_TESTS) add_executable(grpc_tls_certificate_provider_test test/core/security/grpc_tls_certificate_provider_test.cc - test/core/util/cmdline.cc - test/core/util/fuzzer_util.cc - test/core/util/grpc_profiler.cc - test/core/util/histogram.cc - test/core/util/mock_endpoint.cc - test/core/util/parse_hexstring.cc - test/core/util/resolve_localhost_ip46.cc - test/core/util/slice_splitter.cc - test/core/util/tracer_util.cc + test/core/test_util/cmdline.cc + test/core/test_util/fuzzer_util.cc + test/core/test_util/grpc_profiler.cc + test/core/test_util/histogram.cc + test/core/test_util/mock_endpoint.cc + test/core/test_util/parse_hexstring.cc + test/core/test_util/resolve_localhost_ip46.cc + test/core/test_util/slice_splitter.cc + test/core/test_util/tracer_util.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -15869,15 +15861,15 @@ if(gRPC_BUILD_TESTS) add_executable(grpc_tls_certificate_verifier_test test/core/security/grpc_tls_certificate_verifier_test.cc - test/core/util/cmdline.cc - test/core/util/fuzzer_util.cc - test/core/util/grpc_profiler.cc - test/core/util/histogram.cc - test/core/util/mock_endpoint.cc - test/core/util/parse_hexstring.cc - test/core/util/resolve_localhost_ip46.cc - test/core/util/slice_splitter.cc - test/core/util/tracer_util.cc + test/core/test_util/cmdline.cc + test/core/test_util/fuzzer_util.cc + test/core/test_util/grpc_profiler.cc + test/core/test_util/histogram.cc + test/core/test_util/mock_endpoint.cc + test/core/test_util/parse_hexstring.cc + test/core/test_util/resolve_localhost_ip46.cc + test/core/test_util/slice_splitter.cc + test/core/test_util/tracer_util.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -15920,15 +15912,15 @@ if(gRPC_BUILD_TESTS) add_executable(grpc_tls_credentials_options_comparator_test test/core/security/grpc_tls_credentials_options_comparator_test.cc - test/core/util/cmdline.cc - test/core/util/fuzzer_util.cc - test/core/util/grpc_profiler.cc - test/core/util/histogram.cc - test/core/util/mock_endpoint.cc - test/core/util/parse_hexstring.cc - test/core/util/resolve_localhost_ip46.cc - test/core/util/slice_splitter.cc - test/core/util/tracer_util.cc + test/core/test_util/cmdline.cc + test/core/test_util/fuzzer_util.cc + test/core/test_util/grpc_profiler.cc + test/core/test_util/histogram.cc + test/core/test_util/mock_endpoint.cc + test/core/test_util/parse_hexstring.cc + test/core/test_util/resolve_localhost_ip46.cc + test/core/test_util/slice_splitter.cc + test/core/test_util/tracer_util.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -15971,15 +15963,15 @@ if(gRPC_BUILD_TESTS) add_executable(grpc_tls_credentials_options_test test/core/security/grpc_tls_credentials_options_test.cc - test/core/util/cmdline.cc - test/core/util/fuzzer_util.cc - test/core/util/grpc_profiler.cc - test/core/util/histogram.cc - test/core/util/mock_endpoint.cc - test/core/util/parse_hexstring.cc - test/core/util/resolve_localhost_ip46.cc - test/core/util/slice_splitter.cc - test/core/util/tracer_util.cc + test/core/test_util/cmdline.cc + test/core/test_util/fuzzer_util.cc + test/core/test_util/grpc_profiler.cc + test/core/test_util/histogram.cc + test/core/test_util/mock_endpoint.cc + test/core/test_util/parse_hexstring.cc + test/core/test_util/resolve_localhost_ip46.cc + test/core/test_util/slice_splitter.cc + test/core/test_util/tracer_util.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -16025,10 +16017,10 @@ add_executable(grpc_tls_crl_provider_test ${_gRPC_PROTO_GENS_DIR}/test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.grpc.pb.cc ${_gRPC_PROTO_GENS_DIR}/test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.pb.h ${_gRPC_PROTO_GENS_DIR}/test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.grpc.pb.h - ${_gRPC_PROTO_GENS_DIR}/test/core/util/fuzz_config_vars.pb.cc - ${_gRPC_PROTO_GENS_DIR}/test/core/util/fuzz_config_vars.grpc.pb.cc - ${_gRPC_PROTO_GENS_DIR}/test/core/util/fuzz_config_vars.pb.h - ${_gRPC_PROTO_GENS_DIR}/test/core/util/fuzz_config_vars.grpc.pb.h + ${_gRPC_PROTO_GENS_DIR}/test/core/test_util/fuzz_config_vars.pb.cc + ${_gRPC_PROTO_GENS_DIR}/test/core/test_util/fuzz_config_vars.grpc.pb.cc + ${_gRPC_PROTO_GENS_DIR}/test/core/test_util/fuzz_config_vars.pb.h + ${_gRPC_PROTO_GENS_DIR}/test/core/test_util/fuzz_config_vars.grpc.pb.h test/core/event_engine/event_engine_test_utils.cc test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.cc test/core/security/grpc_tls_crl_provider_test.cc @@ -16066,7 +16058,6 @@ target_include_directories(grpc_tls_crl_provider_test target_link_libraries(grpc_tls_crl_provider_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check ${_gRPC_PROTOBUF_LIBRARIES} grpc_test_util ) @@ -16185,7 +16176,6 @@ target_include_directories(grpclb_api_test target_link_libraries(grpclb_api_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc++_test_util ) @@ -16255,7 +16245,6 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) target_link_libraries(grpclb_end2end_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc++_test_config grpc++_test_util ) @@ -16308,7 +16297,6 @@ target_include_directories(h2_ssl_cert_test target_link_libraries(h2_ssl_cert_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_test_util ) @@ -16526,7 +16514,6 @@ target_include_directories(head_of_line_blocking_bad_client_test target_link_libraries(head_of_line_blocking_bad_client_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_test_util ) @@ -16571,7 +16558,6 @@ target_include_directories(headers_bad_client_test target_link_libraries(headers_bad_client_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_test_util ) @@ -16641,7 +16627,6 @@ target_include_directories(health_service_end2end_test target_link_libraries(health_service_end2end_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc++_test_util ) @@ -16668,8 +16653,8 @@ add_executable(high_initial_seqno_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/high_initial_seqno.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -16703,7 +16688,6 @@ target_include_directories(high_initial_seqno_test target_link_libraries(high_initial_seqno_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -16714,16 +16698,16 @@ endif() if(gRPC_BUILD_TESTS) add_executable(histogram_test - test/core/util/cmdline.cc - test/core/util/fuzzer_util.cc - test/core/util/grpc_profiler.cc - test/core/util/histogram.cc - test/core/util/histogram_test.cc - test/core/util/mock_endpoint.cc - test/core/util/parse_hexstring.cc - test/core/util/resolve_localhost_ip46.cc - test/core/util/slice_splitter.cc - test/core/util/tracer_util.cc + test/core/test_util/cmdline.cc + test/core/test_util/fuzzer_util.cc + test/core/test_util/grpc_profiler.cc + test/core/test_util/histogram.cc + test/core/test_util/histogram_test.cc + test/core/test_util/mock_endpoint.cc + test/core/test_util/parse_hexstring.cc + test/core/test_util/resolve_localhost_ip46.cc + test/core/test_util/slice_splitter.cc + test/core/test_util/tracer_util.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -16807,16 +16791,16 @@ endif() if(gRPC_BUILD_TESTS) add_executable(hpack_encoder_test + test/core/test_util/cmdline.cc + test/core/test_util/fuzzer_util.cc + test/core/test_util/grpc_profiler.cc + test/core/test_util/histogram.cc + test/core/test_util/mock_endpoint.cc + test/core/test_util/parse_hexstring.cc + test/core/test_util/resolve_localhost_ip46.cc + test/core/test_util/slice_splitter.cc + test/core/test_util/tracer_util.cc test/core/transport/chttp2/hpack_encoder_test.cc - test/core/util/cmdline.cc - test/core/util/fuzzer_util.cc - test/core/util/grpc_profiler.cc - test/core/util/histogram.cc - test/core/util/mock_endpoint.cc - test/core/util/parse_hexstring.cc - test/core/util/resolve_localhost_ip46.cc - test/core/util/slice_splitter.cc - test/core/util/tracer_util.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -16858,16 +16842,16 @@ endif() if(gRPC_BUILD_TESTS) add_executable(hpack_parser_table_test + test/core/test_util/cmdline.cc + test/core/test_util/fuzzer_util.cc + test/core/test_util/grpc_profiler.cc + test/core/test_util/histogram.cc + test/core/test_util/mock_endpoint.cc + test/core/test_util/parse_hexstring.cc + test/core/test_util/resolve_localhost_ip46.cc + test/core/test_util/slice_splitter.cc + test/core/test_util/tracer_util.cc test/core/transport/chttp2/hpack_parser_table_test.cc - test/core/util/cmdline.cc - test/core/util/fuzzer_util.cc - test/core/util/grpc_profiler.cc - test/core/util/histogram.cc - test/core/util/mock_endpoint.cc - test/core/util/parse_hexstring.cc - test/core/util/resolve_localhost_ip46.cc - test/core/util/slice_splitter.cc - test/core/util/tracer_util.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -16909,16 +16893,16 @@ endif() if(gRPC_BUILD_TESTS) add_executable(hpack_parser_test + test/core/test_util/cmdline.cc + test/core/test_util/fuzzer_util.cc + test/core/test_util/grpc_profiler.cc + test/core/test_util/histogram.cc + test/core/test_util/mock_endpoint.cc + test/core/test_util/parse_hexstring.cc + test/core/test_util/resolve_localhost_ip46.cc + test/core/test_util/slice_splitter.cc + test/core/test_util/tracer_util.cc test/core/transport/chttp2/hpack_parser_test.cc - test/core/util/cmdline.cc - test/core/util/fuzzer_util.cc - test/core/util/grpc_profiler.cc - test/core/util/histogram.cc - test/core/util/mock_endpoint.cc - test/core/util/parse_hexstring.cc - test/core/util/resolve_localhost_ip46.cc - test/core/util/slice_splitter.cc - test/core/util/tracer_util.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -16978,8 +16962,8 @@ add_executable(hpack_size_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/hpack_size.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -17013,7 +16997,6 @@ target_include_directories(hpack_size_test target_link_libraries(hpack_size_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -17066,7 +17049,6 @@ target_include_directories(http2_client target_link_libraries(http2_client ${_gRPC_ALLTARGETS_LIBRARIES} - absl::check grpc++_test_config grpc++_test_util ) @@ -17136,8 +17118,8 @@ add_executable(http2_stats_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/http2_stats.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -17171,7 +17153,6 @@ target_include_directories(http2_stats_test target_link_libraries(http2_stats_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -17182,7 +17163,7 @@ endif() if(gRPC_BUILD_TESTS) add_executable(http_proxy_mapper_test - test/core/client_channel/http_proxy_mapper_test.cc + test/core/handshake/http_proxy_mapper_test.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -17227,7 +17208,7 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) add_executable(httpcli_test test/core/http/httpcli_test.cc test/core/http/httpcli_test_util.cc - test/core/util/fake_udp_and_tcp_server.cc + test/core/test_util/fake_udp_and_tcp_server.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -17274,7 +17255,7 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) add_executable(httpscli_test test/core/http/httpcli_test_util.cc test/core/http/httpscli_test.cc - test/core/util/fake_udp_and_tcp_server.cc + test/core/test_util/fake_udp_and_tcp_server.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -17374,7 +17355,6 @@ target_include_directories(hybrid_end2end_test target_link_libraries(hybrid_end2end_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc++_test_util ) @@ -17569,7 +17549,6 @@ target_include_directories(initial_settings_frame_bad_client_test target_link_libraries(initial_settings_frame_bad_client_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_test_util ) @@ -17625,7 +17604,6 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_POSIX) target_link_libraries(inproc_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check ${_gRPC_PROTOBUF_LIBRARIES} grpc_test_util ) @@ -17637,15 +17615,15 @@ if(gRPC_BUILD_TESTS) add_executable(insecure_security_connector_test test/core/security/insecure_security_connector_test.cc - test/core/util/cmdline.cc - test/core/util/fuzzer_util.cc - test/core/util/grpc_profiler.cc - test/core/util/histogram.cc - test/core/util/mock_endpoint.cc - test/core/util/parse_hexstring.cc - test/core/util/resolve_localhost_ip46.cc - test/core/util/slice_splitter.cc - test/core/util/tracer_util.cc + test/core/test_util/cmdline.cc + test/core/test_util/fuzzer_util.cc + test/core/test_util/grpc_profiler.cc + test/core/test_util/histogram.cc + test/core/test_util/mock_endpoint.cc + test/core/test_util/parse_hexstring.cc + test/core/test_util/resolve_localhost_ip46.cc + test/core/test_util/slice_splitter.cc + test/core/test_util/tracer_util.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -17773,6 +17751,307 @@ target_link_libraries(inter_activity_pipe_test ) +endif() +if(gRPC_BUILD_TESTS) + +add_executable(interception_chain_test + src/core/channelz/channel_trace.cc + src/core/channelz/channelz.cc + src/core/channelz/channelz_registry.cc + src/core/ext/upb-gen/google/protobuf/any.upb_minitable.c + src/core/ext/upb-gen/google/rpc/status.upb_minitable.c + src/core/ext/upb-gen/src/proto/grpc/gcp/altscontext.upb_minitable.c + src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb_minitable.c + src/core/ext/upb-gen/src/proto/grpc/gcp/transport_security_common.upb_minitable.c + src/core/handshaker/handshaker_registry.cc + src/core/handshaker/proxy_mapper_registry.cc + src/core/lib/address_utils/parse_address.cc + src/core/lib/address_utils/sockaddr_utils.cc + src/core/lib/backoff/backoff.cc + src/core/lib/channel/call_tracer.cc + src/core/lib/channel/channel_args.cc + src/core/lib/channel/channel_args_preconditioning.cc + src/core/lib/channel/channel_stack.cc + src/core/lib/channel/channel_stack_builder.cc + src/core/lib/channel/channel_stack_builder_impl.cc + src/core/lib/channel/channel_stack_trace.cc + src/core/lib/channel/connected_channel.cc + src/core/lib/channel/metrics.cc + src/core/lib/channel/promise_based_filter.cc + src/core/lib/channel/status_util.cc + src/core/lib/compression/compression.cc + src/core/lib/compression/compression_internal.cc + src/core/lib/compression/message_compress.cc + src/core/lib/config/core_configuration.cc + src/core/lib/debug/event_log.cc + src/core/lib/debug/histogram_view.cc + src/core/lib/debug/stats.cc + src/core/lib/debug/stats_data.cc + src/core/lib/debug/trace.cc + src/core/lib/event_engine/ares_resolver.cc + src/core/lib/event_engine/cf_engine/cf_engine.cc + src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc + src/core/lib/event_engine/cf_engine/dns_service_resolver.cc + src/core/lib/event_engine/channel_args_endpoint_config.cc + src/core/lib/event_engine/default_event_engine.cc + src/core/lib/event_engine/default_event_engine_factory.cc + src/core/lib/event_engine/event_engine.cc + src/core/lib/event_engine/forkable.cc + src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc + src/core/lib/event_engine/posix_engine/ev_poll_posix.cc + src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc + src/core/lib/event_engine/posix_engine/internal_errqueue.cc + src/core/lib/event_engine/posix_engine/lockfree_event.cc + src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.cc + src/core/lib/event_engine/posix_engine/posix_endpoint.cc + src/core/lib/event_engine/posix_engine/posix_engine.cc + src/core/lib/event_engine/posix_engine/posix_engine_listener.cc + src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc + src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc + src/core/lib/event_engine/posix_engine/timer.cc + src/core/lib/event_engine/posix_engine/timer_heap.cc + src/core/lib/event_engine/posix_engine/timer_manager.cc + src/core/lib/event_engine/posix_engine/traced_buffer_list.cc + src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.cc + src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc + src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc + src/core/lib/event_engine/resolved_address.cc + src/core/lib/event_engine/shim.cc + src/core/lib/event_engine/slice.cc + src/core/lib/event_engine/slice_buffer.cc + src/core/lib/event_engine/tcp_socket_utils.cc + src/core/lib/event_engine/thread_pool/thread_count.cc + src/core/lib/event_engine/thread_pool/thread_pool_factory.cc + src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc + src/core/lib/event_engine/thready_event_engine/thready_event_engine.cc + src/core/lib/event_engine/time_util.cc + src/core/lib/event_engine/trace.cc + src/core/lib/event_engine/utils.cc + src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc + src/core/lib/event_engine/windows/iocp.cc + src/core/lib/event_engine/windows/native_windows_dns_resolver.cc + src/core/lib/event_engine/windows/win_socket.cc + src/core/lib/event_engine/windows/windows_endpoint.cc + src/core/lib/event_engine/windows/windows_engine.cc + src/core/lib/event_engine/windows/windows_listener.cc + src/core/lib/event_engine/work_queue/basic_work_queue.cc + src/core/lib/experiments/config.cc + src/core/lib/experiments/experiments.cc + src/core/lib/gprpp/load_file.cc + src/core/lib/gprpp/per_cpu.cc + src/core/lib/gprpp/ref_counted_string.cc + src/core/lib/gprpp/status_helper.cc + src/core/lib/gprpp/time.cc + src/core/lib/gprpp/time_averaged_stats.cc + src/core/lib/gprpp/validation_errors.cc + src/core/lib/gprpp/work_serializer.cc + src/core/lib/iomgr/buffer_list.cc + src/core/lib/iomgr/call_combiner.cc + src/core/lib/iomgr/cfstream_handle.cc + src/core/lib/iomgr/closure.cc + src/core/lib/iomgr/combiner.cc + src/core/lib/iomgr/dualstack_socket_posix.cc + src/core/lib/iomgr/endpoint.cc + src/core/lib/iomgr/endpoint_cfstream.cc + src/core/lib/iomgr/endpoint_pair_posix.cc + src/core/lib/iomgr/endpoint_pair_windows.cc + src/core/lib/iomgr/error.cc + src/core/lib/iomgr/error_cfstream.cc + src/core/lib/iomgr/ev_apple.cc + src/core/lib/iomgr/ev_epoll1_linux.cc + src/core/lib/iomgr/ev_poll_posix.cc + src/core/lib/iomgr/ev_posix.cc + src/core/lib/iomgr/ev_windows.cc + src/core/lib/iomgr/event_engine_shims/closure.cc + src/core/lib/iomgr/event_engine_shims/endpoint.cc + src/core/lib/iomgr/event_engine_shims/tcp_client.cc + src/core/lib/iomgr/exec_ctx.cc + src/core/lib/iomgr/executor.cc + src/core/lib/iomgr/fork_posix.cc + src/core/lib/iomgr/fork_windows.cc + src/core/lib/iomgr/gethostname_fallback.cc + src/core/lib/iomgr/gethostname_host_name_max.cc + src/core/lib/iomgr/gethostname_sysconf.cc + src/core/lib/iomgr/grpc_if_nametoindex_posix.cc + src/core/lib/iomgr/grpc_if_nametoindex_unsupported.cc + src/core/lib/iomgr/internal_errqueue.cc + src/core/lib/iomgr/iocp_windows.cc + src/core/lib/iomgr/iomgr.cc + src/core/lib/iomgr/iomgr_internal.cc + src/core/lib/iomgr/iomgr_posix.cc + src/core/lib/iomgr/iomgr_posix_cfstream.cc + src/core/lib/iomgr/iomgr_windows.cc + src/core/lib/iomgr/lockfree_event.cc + src/core/lib/iomgr/polling_entity.cc + src/core/lib/iomgr/pollset.cc + src/core/lib/iomgr/pollset_set.cc + src/core/lib/iomgr/pollset_set_windows.cc + src/core/lib/iomgr/pollset_windows.cc + src/core/lib/iomgr/resolve_address.cc + src/core/lib/iomgr/resolve_address_posix.cc + src/core/lib/iomgr/resolve_address_windows.cc + src/core/lib/iomgr/sockaddr_utils_posix.cc + src/core/lib/iomgr/socket_factory_posix.cc + src/core/lib/iomgr/socket_mutator.cc + src/core/lib/iomgr/socket_utils_common_posix.cc + src/core/lib/iomgr/socket_utils_linux.cc + src/core/lib/iomgr/socket_utils_posix.cc + src/core/lib/iomgr/socket_utils_windows.cc + src/core/lib/iomgr/socket_windows.cc + src/core/lib/iomgr/systemd_utils.cc + src/core/lib/iomgr/tcp_client.cc + src/core/lib/iomgr/tcp_client_cfstream.cc + src/core/lib/iomgr/tcp_client_posix.cc + src/core/lib/iomgr/tcp_client_windows.cc + src/core/lib/iomgr/tcp_posix.cc + src/core/lib/iomgr/tcp_server.cc + src/core/lib/iomgr/tcp_server_posix.cc + src/core/lib/iomgr/tcp_server_utils_posix_common.cc + src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc + src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc + src/core/lib/iomgr/tcp_server_windows.cc + src/core/lib/iomgr/tcp_windows.cc + src/core/lib/iomgr/timer.cc + src/core/lib/iomgr/timer_generic.cc + src/core/lib/iomgr/timer_heap.cc + src/core/lib/iomgr/timer_manager.cc + src/core/lib/iomgr/unix_sockets_posix.cc + src/core/lib/iomgr/unix_sockets_posix_noop.cc + src/core/lib/iomgr/vsock.cc + src/core/lib/iomgr/wakeup_fd_eventfd.cc + src/core/lib/iomgr/wakeup_fd_nospecial.cc + src/core/lib/iomgr/wakeup_fd_pipe.cc + src/core/lib/iomgr/wakeup_fd_posix.cc + src/core/lib/json/json_writer.cc + src/core/lib/promise/activity.cc + src/core/lib/promise/party.cc + src/core/lib/promise/trace.cc + src/core/lib/resource_quota/api.cc + src/core/lib/resource_quota/arena.cc + src/core/lib/resource_quota/connection_quota.cc + src/core/lib/resource_quota/memory_quota.cc + src/core/lib/resource_quota/periodic_update.cc + src/core/lib/resource_quota/resource_quota.cc + src/core/lib/resource_quota/thread_quota.cc + src/core/lib/resource_quota/trace.cc + src/core/lib/security/certificate_provider/certificate_provider_registry.cc + src/core/lib/security/credentials/alts/check_gcp_environment.cc + src/core/lib/security/credentials/alts/check_gcp_environment_linux.cc + src/core/lib/security/credentials/alts/check_gcp_environment_no_op.cc + src/core/lib/security/credentials/alts/check_gcp_environment_windows.cc + src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc + src/core/lib/security/credentials/alts/grpc_alts_credentials_options.cc + src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc + src/core/lib/slice/percent_encoding.cc + src/core/lib/slice/slice.cc + src/core/lib/slice/slice_buffer.cc + src/core/lib/slice/slice_refcount.cc + src/core/lib/slice/slice_string_helpers.cc + src/core/lib/surface/api_trace.cc + src/core/lib/surface/byte_buffer.cc + src/core/lib/surface/byte_buffer_reader.cc + src/core/lib/surface/call.cc + src/core/lib/surface/call_details.cc + src/core/lib/surface/call_log_batch.cc + src/core/lib/surface/channel.cc + src/core/lib/surface/channel_init.cc + src/core/lib/surface/channel_stack_type.cc + src/core/lib/surface/completion_queue.cc + src/core/lib/surface/completion_queue_factory.cc + src/core/lib/surface/event_string.cc + src/core/lib/surface/init_internally.cc + src/core/lib/surface/lame_client.cc + src/core/lib/surface/metadata_array.cc + src/core/lib/surface/validate_metadata.cc + src/core/lib/surface/version.cc + src/core/lib/surface/wait_for_cq_end_op.cc + src/core/lib/transport/batch_builder.cc + src/core/lib/transport/call_arena_allocator.cc + src/core/lib/transport/call_filters.cc + src/core/lib/transport/call_final_info.cc + src/core/lib/transport/call_spine.cc + src/core/lib/transport/connectivity_state.cc + src/core/lib/transport/error_utils.cc + src/core/lib/transport/interception_chain.cc + src/core/lib/transport/message.cc + src/core/lib/transport/metadata.cc + src/core/lib/transport/metadata_batch.cc + src/core/lib/transport/parsed_metadata.cc + src/core/lib/transport/status_conversion.cc + src/core/lib/transport/timeout_encoding.cc + src/core/lib/transport/transport.cc + src/core/lib/transport/transport_op_string.cc + src/core/lib/uri/uri_parser.cc + src/core/load_balancing/lb_policy.cc + src/core/load_balancing/lb_policy_registry.cc + src/core/resolver/endpoint_addresses.cc + src/core/resolver/resolver.cc + src/core/resolver/resolver_registry.cc + src/core/service_config/service_config_parser.cc + src/core/tsi/alts/handshaker/transport_security_common_api.cc + test/core/transport/interception_chain_test.cc + third_party/upb/upb/mini_descriptor/build_enum.c + third_party/upb/upb/mini_descriptor/decode.c + third_party/upb/upb/mini_descriptor/internal/base92.c + third_party/upb/upb/mini_descriptor/internal/encode.c + third_party/upb/upb/mini_descriptor/link.c + third_party/upb/upb/wire/decode.c + third_party/upb/upb/wire/encode.c + third_party/upb/upb/wire/eps_copy_input_stream.c + third_party/upb/upb/wire/internal/decode_fast.c + third_party/upb/upb/wire/reader.c +) +if(WIN32 AND MSVC) + if(BUILD_SHARED_LIBS) + target_compile_definitions(interception_chain_test + PRIVATE + "GPR_DLL_IMPORTS" + ) + endif() +endif() +target_compile_features(interception_chain_test PUBLIC cxx_std_14) +target_include_directories(interception_chain_test + PRIVATE + ${CMAKE_CURRENT_SOURCE_DIR} + ${CMAKE_CURRENT_SOURCE_DIR}/include + ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR} + ${_gRPC_RE2_INCLUDE_DIR} + ${_gRPC_SSL_INCLUDE_DIR} + ${_gRPC_UPB_GENERATED_DIR} + ${_gRPC_UPB_GRPC_GENERATED_DIR} + ${_gRPC_UPB_INCLUDE_DIR} + ${_gRPC_XXHASH_INCLUDE_DIR} + ${_gRPC_ZLIB_INCLUDE_DIR} + third_party/googletest/googletest/include + third_party/googletest/googletest + third_party/googletest/googlemock/include + third_party/googletest/googlemock + ${_gRPC_PROTO_GENS_DIR} +) + +target_link_libraries(interception_chain_test + ${_gRPC_ALLTARGETS_LIBRARIES} + gtest + utf8_range_lib + upb_message_lib + ${_gRPC_ZLIB_LIBRARIES} + absl::config + absl::no_destructor + absl::cleanup + absl::flat_hash_map + absl::inlined_vector + absl::function_ref + absl::hash + absl::type_traits + absl::statusor + absl::span + absl::utility + ${_gRPC_CARES_LIBRARIES} + gpr + ${_gRPC_ADDRESS_SORTING_LIBRARIES} +) + + endif() if(gRPC_BUILD_TESTS) @@ -17907,7 +18186,6 @@ target_include_directories(interop_client target_link_libraries(interop_client ${_gRPC_ALLTARGETS_LIBRARIES} - absl::check grpc++_test_config grpc++_test_util ) @@ -17962,7 +18240,6 @@ target_include_directories(interop_server target_link_libraries(interop_server ${_gRPC_ALLTARGETS_LIBRARIES} - absl::check grpc++_test_config grpc++_test_util ) @@ -18033,8 +18310,8 @@ add_executable(invoke_large_request_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/invoke_large_request.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -18068,7 +18345,6 @@ target_include_directories(invoke_large_request_test target_link_libraries(invoke_large_request_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -18115,7 +18391,6 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_POSIX OR _gRPC_PLATFORM_WINDOWS) target_link_libraries(iocp_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_test_util ) @@ -18305,15 +18580,15 @@ if(gRPC_BUILD_TESTS) add_executable(json_token_test test/core/security/json_token_test.cc - test/core/util/cmdline.cc - test/core/util/fuzzer_util.cc - test/core/util/grpc_profiler.cc - test/core/util/histogram.cc - test/core/util/mock_endpoint.cc - test/core/util/parse_hexstring.cc - test/core/util/resolve_localhost_ip46.cc - test/core/util/slice_splitter.cc - test/core/util/tracer_util.cc + test/core/test_util/cmdline.cc + test/core/test_util/fuzzer_util.cc + test/core/test_util/grpc_profiler.cc + test/core/test_util/histogram.cc + test/core/test_util/mock_endpoint.cc + test/core/test_util/parse_hexstring.cc + test/core/test_util/resolve_localhost_ip46.cc + test/core/test_util/slice_splitter.cc + test/core/test_util/tracer_util.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -18356,15 +18631,15 @@ if(gRPC_BUILD_TESTS) add_executable(jwt_verifier_test test/core/security/jwt_verifier_test.cc - test/core/util/cmdline.cc - test/core/util/fuzzer_util.cc - test/core/util/grpc_profiler.cc - test/core/util/histogram.cc - test/core/util/mock_endpoint.cc - test/core/util/parse_hexstring.cc - test/core/util/resolve_localhost_ip46.cc - test/core/util/slice_splitter.cc - test/core/util/tracer_util.cc + test/core/test_util/cmdline.cc + test/core/test_util/fuzzer_util.cc + test/core/test_util/grpc_profiler.cc + test/core/test_util/histogram.cc + test/core/test_util/mock_endpoint.cc + test/core/test_util/parse_hexstring.cc + test/core/test_util/resolve_localhost_ip46.cc + test/core/test_util/slice_splitter.cc + test/core/test_util/tracer_util.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -18424,8 +18699,8 @@ add_executable(keepalive_timeout_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/keepalive_timeout.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -18459,7 +18734,6 @@ target_include_directories(keepalive_timeout_test target_link_libraries(keepalive_timeout_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -18531,8 +18805,8 @@ add_executable(large_metadata_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/large_metadata.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -18566,7 +18840,6 @@ target_include_directories(large_metadata_test target_link_libraries(large_metadata_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -18845,7 +19118,7 @@ endif() if(gRPC_BUILD_TESTS) add_executable(log_test - test/core/gpr/log_test.cc + test/core/util/log_test.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -19093,15 +19366,15 @@ if(gRPC_BUILD_TESTS) add_executable(matchers_test test/core/matchers/matchers_test.cc - test/core/util/cmdline.cc - test/core/util/fuzzer_util.cc - test/core/util/grpc_profiler.cc - test/core/util/histogram.cc - test/core/util/mock_endpoint.cc - test/core/util/parse_hexstring.cc - test/core/util/resolve_localhost_ip46.cc - test/core/util/slice_splitter.cc - test/core/util/tracer_util.cc + test/core/test_util/cmdline.cc + test/core/test_util/fuzzer_util.cc + test/core/test_util/grpc_profiler.cc + test/core/test_util/histogram.cc + test/core/test_util/mock_endpoint.cc + test/core/test_util/parse_hexstring.cc + test/core/test_util/resolve_localhost_ip46.cc + test/core/test_util/slice_splitter.cc + test/core/test_util/tracer_util.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -19203,8 +19476,8 @@ add_executable(max_concurrent_streams_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/max_concurrent_streams.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -19238,7 +19511,6 @@ target_include_directories(max_concurrent_streams_test target_link_libraries(max_concurrent_streams_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -19267,8 +19539,8 @@ add_executable(max_connection_age_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/max_connection_age.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -19302,7 +19574,6 @@ target_include_directories(max_connection_age_test target_link_libraries(max_connection_age_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -19331,8 +19602,8 @@ add_executable(max_connection_idle_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/max_connection_idle.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -19366,7 +19637,6 @@ target_include_directories(max_connection_idle_test target_link_libraries(max_connection_idle_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -19395,8 +19665,8 @@ add_executable(max_message_length_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/max_message_length.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -19430,7 +19700,6 @@ target_include_directories(max_message_length_test target_link_libraries(max_message_length_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -19579,7 +19848,6 @@ target_include_directories(message_allocator_end2end_test target_link_libraries(message_allocator_end2end_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc++_test_util ) @@ -19589,15 +19857,15 @@ if(gRPC_BUILD_TESTS) add_executable(message_compress_test test/core/compression/message_compress_test.cc - test/core/util/cmdline.cc - test/core/util/fuzzer_util.cc - test/core/util/grpc_profiler.cc - test/core/util/histogram.cc - test/core/util/mock_endpoint.cc - test/core/util/parse_hexstring.cc - test/core/util/resolve_localhost_ip46.cc - test/core/util/slice_splitter.cc - test/core/util/tracer_util.cc + test/core/test_util/cmdline.cc + test/core/test_util/fuzzer_util.cc + test/core/test_util/grpc_profiler.cc + test/core/test_util/histogram.cc + test/core/test_util/mock_endpoint.cc + test/core/test_util/parse_hexstring.cc + test/core/test_util/resolve_localhost_ip46.cc + test/core/test_util/slice_splitter.cc + test/core/test_util/tracer_util.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -19681,16 +19949,16 @@ endif() if(gRPC_BUILD_TESTS) add_executable(metadata_map_test + test/core/test_util/cmdline.cc + test/core/test_util/fuzzer_util.cc + test/core/test_util/grpc_profiler.cc + test/core/test_util/histogram.cc + test/core/test_util/mock_endpoint.cc + test/core/test_util/parse_hexstring.cc + test/core/test_util/resolve_localhost_ip46.cc + test/core/test_util/slice_splitter.cc + test/core/test_util/tracer_util.cc test/core/transport/metadata_map_test.cc - test/core/util/cmdline.cc - test/core/util/fuzzer_util.cc - test/core/util/grpc_profiler.cc - test/core/util/histogram.cc - test/core/util/mock_endpoint.cc - test/core/util/parse_hexstring.cc - test/core/util/resolve_localhost_ip46.cc - test/core/util/slice_splitter.cc - test/core/util/tracer_util.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -19733,7 +20001,7 @@ if(gRPC_BUILD_TESTS) add_executable(metrics_test test/core/channel/metrics_test.cc - test/core/util/fake_stats_plugin.cc + test/core/test_util/fake_stats_plugin.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -20079,8 +20347,8 @@ add_executable(negative_deadline_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/negative_deadline.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -20114,7 +20382,6 @@ target_include_directories(negative_deadline_test target_link_libraries(negative_deadline_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -20175,8 +20442,8 @@ add_executable(no_logging_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/no_logging.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -20210,7 +20477,6 @@ target_include_directories(no_logging_test target_link_libraries(no_logging_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -20239,8 +20505,8 @@ add_executable(no_op_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/no_op.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -20274,7 +20540,6 @@ target_include_directories(no_op_test target_link_libraries(no_op_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -20379,7 +20644,6 @@ target_include_directories(nonblocking_test target_link_libraries(nonblocking_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc++_test_util ) @@ -20557,7 +20821,6 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) target_link_libraries(oracle_event_engine_posix_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_test_util ) @@ -20661,8 +20924,8 @@ endif() if(gRPC_BUILD_TESTS) add_executable(osa_distance_test - test/core/util/osa_distance.cc - test/core/util/osa_distance_test.cc + test/core/test_util/osa_distance.cc + test/core/test_util/osa_distance_test.cc ) target_compile_features(osa_distance_test PUBLIC cxx_std_14) target_include_directories(osa_distance_test @@ -20713,7 +20976,7 @@ add_executable(otel_plugin_test src/cpp/ext/otel/otel_client_call_tracer.cc src/cpp/ext/otel/otel_plugin.cc src/cpp/ext/otel/otel_server_call_tracer.cc - test/core/util/fake_stats_plugin.cc + test/core/test_util/fake_stats_plugin.cc test/cpp/end2end/test_service_impl.cc test/cpp/ext/otel/otel_plugin_test.cc test/cpp/ext/otel/otel_test_library.cc @@ -20751,7 +21014,6 @@ target_include_directories(otel_plugin_test target_link_libraries(otel_plugin_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check opentelemetry-cpp::api opentelemetry-cpp::metrics grpc++_test_util @@ -20798,7 +21060,6 @@ target_include_directories(out_of_bounds_bad_client_test target_link_libraries(out_of_bounds_bad_client_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_test_util ) @@ -20807,7 +21068,7 @@ endif() if(gRPC_BUILD_TESTS) add_executable(outlier_detection_lb_config_parser_test - test/core/client_channel/lb_policy/outlier_detection_lb_config_parser_test.cc + test/core/load_balancing/outlier_detection_lb_config_parser_test.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -20853,9 +21114,9 @@ add_executable(outlier_detection_test ${_gRPC_PROTO_GENS_DIR}/test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.grpc.pb.cc ${_gRPC_PROTO_GENS_DIR}/test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.pb.h ${_gRPC_PROTO_GENS_DIR}/test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.grpc.pb.h - test/core/client_channel/lb_policy/outlier_detection_test.cc test/core/event_engine/event_engine_test_utils.cc test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.cc + test/core/load_balancing/outlier_detection_test.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -20889,7 +21150,6 @@ target_include_directories(outlier_detection_test target_link_libraries(outlier_detection_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check ${_gRPC_PROTOBUF_LIBRARIES} grpc_test_util ) @@ -21064,15 +21324,15 @@ add_executable(parser_test test/core/end2end/data/server1_key.cc test/core/end2end/data/test_root_cert.cc test/core/http/parser_test.cc - test/core/util/cmdline.cc - test/core/util/fuzzer_util.cc - test/core/util/grpc_profiler.cc - test/core/util/histogram.cc - test/core/util/mock_endpoint.cc - test/core/util/parse_hexstring.cc - test/core/util/resolve_localhost_ip46.cc - test/core/util/slice_splitter.cc - test/core/util/tracer_util.cc + test/core/test_util/cmdline.cc + test/core/test_util/fuzzer_util.cc + test/core/test_util/grpc_profiler.cc + test/core/test_util/histogram.cc + test/core/test_util/mock_endpoint.cc + test/core/test_util/parse_hexstring.cc + test/core/test_util/resolve_localhost_ip46.cc + test/core/test_util/slice_splitter.cc + test/core/test_util/tracer_util.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -21174,8 +21434,8 @@ add_executable(payload_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/payload.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -21209,7 +21469,6 @@ target_include_directories(payload_test target_link_libraries(payload_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -21340,10 +21599,10 @@ add_executable(pick_first_test ${_gRPC_PROTO_GENS_DIR}/test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.grpc.pb.cc ${_gRPC_PROTO_GENS_DIR}/test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.pb.h ${_gRPC_PROTO_GENS_DIR}/test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.grpc.pb.h - test/core/client_channel/lb_policy/pick_first_test.cc test/core/event_engine/event_engine_test_utils.cc test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.cc - test/core/util/fake_stats_plugin.cc + test/core/load_balancing/pick_first_test.cc + test/core/test_util/fake_stats_plugin.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -21377,7 +21636,6 @@ target_include_directories(pick_first_test target_link_libraries(pick_first_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check ${_gRPC_PROTOBUF_LIBRARIES} grpc_test_util ) @@ -21387,16 +21645,16 @@ endif() if(gRPC_BUILD_TESTS) add_executable(ping_abuse_policy_test + test/core/test_util/cmdline.cc + test/core/test_util/fuzzer_util.cc + test/core/test_util/grpc_profiler.cc + test/core/test_util/histogram.cc + test/core/test_util/mock_endpoint.cc + test/core/test_util/parse_hexstring.cc + test/core/test_util/resolve_localhost_ip46.cc + test/core/test_util/slice_splitter.cc + test/core/test_util/tracer_util.cc test/core/transport/chttp2/ping_abuse_policy_test.cc - test/core/util/cmdline.cc - test/core/util/fuzzer_util.cc - test/core/util/grpc_profiler.cc - test/core/util/histogram.cc - test/core/util/mock_endpoint.cc - test/core/util/parse_hexstring.cc - test/core/util/resolve_localhost_ip46.cc - test/core/util/slice_splitter.cc - test/core/util/tracer_util.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -21480,16 +21738,16 @@ endif() if(gRPC_BUILD_TESTS) add_executable(ping_configuration_test + test/core/test_util/cmdline.cc + test/core/test_util/fuzzer_util.cc + test/core/test_util/grpc_profiler.cc + test/core/test_util/histogram.cc + test/core/test_util/mock_endpoint.cc + test/core/test_util/parse_hexstring.cc + test/core/test_util/resolve_localhost_ip46.cc + test/core/test_util/slice_splitter.cc + test/core/test_util/tracer_util.cc test/core/transport/chttp2/ping_configuration_test.cc - test/core/util/cmdline.cc - test/core/util/fuzzer_util.cc - test/core/util/grpc_profiler.cc - test/core/util/histogram.cc - test/core/util/mock_endpoint.cc - test/core/util/parse_hexstring.cc - test/core/util/resolve_localhost_ip46.cc - test/core/util/slice_splitter.cc - test/core/util/tracer_util.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -21549,8 +21807,8 @@ add_executable(ping_pong_streaming_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/ping_pong_streaming.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -21584,7 +21842,6 @@ target_include_directories(ping_pong_streaming_test target_link_libraries(ping_pong_streaming_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -21595,16 +21852,16 @@ endif() if(gRPC_BUILD_TESTS) add_executable(ping_rate_policy_test + test/core/test_util/cmdline.cc + test/core/test_util/fuzzer_util.cc + test/core/test_util/grpc_profiler.cc + test/core/test_util/histogram.cc + test/core/test_util/mock_endpoint.cc + test/core/test_util/parse_hexstring.cc + test/core/test_util/resolve_localhost_ip46.cc + test/core/test_util/slice_splitter.cc + test/core/test_util/tracer_util.cc test/core/transport/chttp2/ping_rate_policy_test.cc - test/core/util/cmdline.cc - test/core/util/fuzzer_util.cc - test/core/util/grpc_profiler.cc - test/core/util/histogram.cc - test/core/util/mock_endpoint.cc - test/core/util/parse_hexstring.cc - test/core/util/resolve_localhost_ip46.cc - test/core/util/slice_splitter.cc - test/core/util/tracer_util.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -21664,8 +21921,8 @@ add_executable(ping_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/ping.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -21699,7 +21956,6 @@ target_include_directories(ping_test target_link_libraries(ping_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -21845,7 +22101,6 @@ target_include_directories(port_sharing_end2end_test target_link_libraries(port_sharing_end2end_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc++_test_util ) @@ -21893,7 +22148,6 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) target_link_libraries(posix_endpoint_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_test_util ) @@ -21985,7 +22239,6 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_POSIX) target_link_libraries(posix_event_engine_connect_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_test_util ) @@ -22001,7 +22254,7 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_POSIX) test/core/event_engine/test_suite/posix/oracle_event_engine_posix.cc test/core/event_engine/test_suite/posix_event_engine_native_dns_test.cc test/core/event_engine/test_suite/tests/dns_test.cc - test/core/util/fake_udp_and_tcp_server.cc + test/core/test_util/fake_udp_and_tcp_server.cc test/cpp/util/get_grpc_test_runfile_dir.cc test/cpp/util/windows/manifest_file.cc ) @@ -22038,7 +22291,6 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_POSIX) target_link_libraries(posix_event_engine_native_dns_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc++_test_util ) @@ -22057,7 +22309,7 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_POSIX) test/core/event_engine/test_suite/tests/dns_test.cc test/core/event_engine/test_suite/tests/server_test.cc test/core/event_engine/test_suite/tests/timer_test.cc - test/core/util/fake_udp_and_tcp_server.cc + test/core/test_util/fake_udp_and_tcp_server.cc test/cpp/util/get_grpc_test_runfile_dir.cc test/cpp/util/windows/manifest_file.cc ) @@ -22094,7 +22346,6 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_POSIX) target_link_libraries(posix_event_engine_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc++_test_util ) @@ -22593,7 +22844,6 @@ target_include_directories(proto_server_reflection_test target_link_libraries(proto_server_reflection_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc++_reflection grpc++_test_util ) @@ -22665,8 +22915,8 @@ add_executable(proxy_auth_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/proxy_auth.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -22700,7 +22950,6 @@ target_include_directories(proxy_auth_test target_link_libraries(proxy_auth_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -22782,7 +23031,6 @@ target_include_directories(qps_json_driver target_link_libraries(qps_json_driver ${_gRPC_ALLTARGETS_LIBRARIES} - absl::check grpc++_test_config grpc++_test_util ) @@ -22855,7 +23103,6 @@ target_include_directories(qps_worker target_link_libraries(qps_worker ${_gRPC_ALLTARGETS_LIBRARIES} - absl::check grpc++_test_config grpc++_test_util ) @@ -23040,7 +23287,6 @@ target_include_directories(raw_end2end_test target_link_libraries(raw_end2end_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc++_test_util ) @@ -23092,15 +23338,15 @@ if(gRPC_BUILD_TESTS) add_executable(rbac_translator_test test/core/security/rbac_translator_test.cc - test/core/util/cmdline.cc - test/core/util/fuzzer_util.cc - test/core/util/grpc_profiler.cc - test/core/util/histogram.cc - test/core/util/mock_endpoint.cc - test/core/util/parse_hexstring.cc - test/core/util/resolve_localhost_ip46.cc - test/core/util/slice_splitter.cc - test/core/util/tracer_util.cc + test/core/test_util/cmdline.cc + test/core/test_util/fuzzer_util.cc + test/core/test_util/grpc_profiler.cc + test/core/test_util/histogram.cc + test/core/test_util/mock_endpoint.cc + test/core/test_util/parse_hexstring.cc + test/core/test_util/resolve_localhost_ip46.cc + test/core/test_util/slice_splitter.cc + test/core/test_util/tracer_util.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -23245,8 +23491,8 @@ add_executable(registered_call_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/registered_call.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -23280,7 +23526,6 @@ target_include_directories(registered_call_test target_link_libraries(registered_call_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -23326,7 +23571,6 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) target_link_libraries(remove_stream_from_stalled_lists_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_test_util ) @@ -23354,8 +23598,8 @@ add_executable(request_with_flags_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/request_with_flags.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -23389,7 +23633,6 @@ target_include_directories(request_with_flags_test target_link_libraries(request_with_flags_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -23418,8 +23661,8 @@ add_executable(request_with_payload_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/request_with_payload.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -23453,7 +23696,6 @@ target_include_directories(request_with_payload_test target_link_libraries(request_with_payload_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -23466,15 +23708,15 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) add_executable(resolve_address_using_ares_resolver_posix_test test/core/iomgr/resolve_address_posix_test.cc - test/core/util/cmdline.cc - test/core/util/fuzzer_util.cc - test/core/util/grpc_profiler.cc - test/core/util/histogram.cc - test/core/util/mock_endpoint.cc - test/core/util/parse_hexstring.cc - test/core/util/resolve_localhost_ip46.cc - test/core/util/slice_splitter.cc - test/core/util/tracer_util.cc + test/core/test_util/cmdline.cc + test/core/test_util/fuzzer_util.cc + test/core/test_util/grpc_profiler.cc + test/core/test_util/histogram.cc + test/core/test_util/mock_endpoint.cc + test/core/test_util/parse_hexstring.cc + test/core/test_util/resolve_localhost_ip46.cc + test/core/test_util/slice_splitter.cc + test/core/test_util/tracer_util.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -23518,16 +23760,16 @@ if(gRPC_BUILD_TESTS) add_executable(resolve_address_using_ares_resolver_test test/core/iomgr/resolve_address_test.cc - test/core/util/cmdline.cc - test/core/util/fake_udp_and_tcp_server.cc - test/core/util/fuzzer_util.cc - test/core/util/grpc_profiler.cc - test/core/util/histogram.cc - test/core/util/mock_endpoint.cc - test/core/util/parse_hexstring.cc - test/core/util/resolve_localhost_ip46.cc - test/core/util/slice_splitter.cc - test/core/util/tracer_util.cc + test/core/test_util/cmdline.cc + test/core/test_util/fake_udp_and_tcp_server.cc + test/core/test_util/fuzzer_util.cc + test/core/test_util/grpc_profiler.cc + test/core/test_util/histogram.cc + test/core/test_util/mock_endpoint.cc + test/core/test_util/parse_hexstring.cc + test/core/test_util/resolve_localhost_ip46.cc + test/core/test_util/slice_splitter.cc + test/core/test_util/tracer_util.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -23572,15 +23814,15 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) add_executable(resolve_address_using_native_resolver_posix_test test/core/iomgr/resolve_address_posix_test.cc - test/core/util/cmdline.cc - test/core/util/fuzzer_util.cc - test/core/util/grpc_profiler.cc - test/core/util/histogram.cc - test/core/util/mock_endpoint.cc - test/core/util/parse_hexstring.cc - test/core/util/resolve_localhost_ip46.cc - test/core/util/slice_splitter.cc - test/core/util/tracer_util.cc + test/core/test_util/cmdline.cc + test/core/test_util/fuzzer_util.cc + test/core/test_util/grpc_profiler.cc + test/core/test_util/histogram.cc + test/core/test_util/mock_endpoint.cc + test/core/test_util/parse_hexstring.cc + test/core/test_util/resolve_localhost_ip46.cc + test/core/test_util/slice_splitter.cc + test/core/test_util/tracer_util.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -23624,16 +23866,16 @@ if(gRPC_BUILD_TESTS) add_executable(resolve_address_using_native_resolver_test test/core/iomgr/resolve_address_test.cc - test/core/util/cmdline.cc - test/core/util/fake_udp_and_tcp_server.cc - test/core/util/fuzzer_util.cc - test/core/util/grpc_profiler.cc - test/core/util/histogram.cc - test/core/util/mock_endpoint.cc - test/core/util/parse_hexstring.cc - test/core/util/resolve_localhost_ip46.cc - test/core/util/slice_splitter.cc - test/core/util/tracer_util.cc + test/core/test_util/cmdline.cc + test/core/test_util/fake_udp_and_tcp_server.cc + test/core/test_util/fuzzer_util.cc + test/core/test_util/grpc_profiler.cc + test/core/test_util/histogram.cc + test/core/test_util/mock_endpoint.cc + test/core/test_util/parse_hexstring.cc + test/core/test_util/resolve_localhost_ip46.cc + test/core/test_util/slice_splitter.cc + test/core/test_util/tracer_util.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -23753,8 +23995,8 @@ add_executable(resource_quota_server_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/resource_quota_server.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -23788,7 +24030,6 @@ target_include_directories(resource_quota_server_test target_link_libraries(resource_quota_server_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -23859,8 +24100,8 @@ add_executable(retry_cancel_after_first_attempt_starts_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/retry_cancel_after_first_attempt_starts.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -23894,7 +24135,6 @@ target_include_directories(retry_cancel_after_first_attempt_starts_test target_link_libraries(retry_cancel_after_first_attempt_starts_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -23923,8 +24163,8 @@ add_executable(retry_cancel_during_delay_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/retry_cancel_during_delay.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -23958,7 +24198,6 @@ target_include_directories(retry_cancel_during_delay_test target_link_libraries(retry_cancel_during_delay_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -23987,8 +24226,8 @@ add_executable(retry_cancel_with_multiple_send_batches_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/retry_cancel_with_multiple_send_batches.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -24022,7 +24261,6 @@ target_include_directories(retry_cancel_with_multiple_send_batches_test target_link_libraries(retry_cancel_with_multiple_send_batches_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -24051,8 +24289,8 @@ add_executable(retry_cancellation_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/retry_cancellation.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -24086,7 +24324,6 @@ target_include_directories(retry_cancellation_test target_link_libraries(retry_cancellation_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -24115,8 +24352,8 @@ add_executable(retry_disabled_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/retry_disabled.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -24150,7 +24387,6 @@ target_include_directories(retry_disabled_test target_link_libraries(retry_disabled_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -24179,8 +24415,8 @@ add_executable(retry_exceeds_buffer_size_in_delay_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/retry_exceeds_buffer_size_in_delay.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -24214,7 +24450,6 @@ target_include_directories(retry_exceeds_buffer_size_in_delay_test target_link_libraries(retry_exceeds_buffer_size_in_delay_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -24243,8 +24478,8 @@ add_executable(retry_exceeds_buffer_size_in_initial_batch_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/retry_exceeds_buffer_size_in_initial_batch.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -24278,7 +24513,6 @@ target_include_directories(retry_exceeds_buffer_size_in_initial_batch_test target_link_libraries(retry_exceeds_buffer_size_in_initial_batch_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -24307,8 +24541,8 @@ add_executable(retry_exceeds_buffer_size_in_subsequent_batch_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/retry_exceeds_buffer_size_in_subsequent_batch.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -24342,7 +24576,6 @@ target_include_directories(retry_exceeds_buffer_size_in_subsequent_batch_test target_link_libraries(retry_exceeds_buffer_size_in_subsequent_batch_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -24371,8 +24604,8 @@ add_executable(retry_lb_drop_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/retry_lb_drop.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -24406,7 +24639,6 @@ target_include_directories(retry_lb_drop_test target_link_libraries(retry_lb_drop_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -24435,8 +24667,8 @@ add_executable(retry_lb_fail_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/retry_lb_fail.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -24470,7 +24702,6 @@ target_include_directories(retry_lb_fail_test target_link_libraries(retry_lb_fail_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -24499,8 +24730,8 @@ add_executable(retry_non_retriable_status_before_trailers_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/retry_non_retriable_status_before_trailers.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -24534,7 +24765,6 @@ target_include_directories(retry_non_retriable_status_before_trailers_test target_link_libraries(retry_non_retriable_status_before_trailers_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -24563,8 +24793,8 @@ add_executable(retry_non_retriable_status_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/retry_non_retriable_status.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -24598,7 +24828,6 @@ target_include_directories(retry_non_retriable_status_test target_link_libraries(retry_non_retriable_status_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -24627,8 +24856,8 @@ add_executable(retry_per_attempt_recv_timeout_on_last_attempt_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/retry_per_attempt_recv_timeout_on_last_attempt.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -24662,7 +24891,6 @@ target_include_directories(retry_per_attempt_recv_timeout_on_last_attempt_test target_link_libraries(retry_per_attempt_recv_timeout_on_last_attempt_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -24691,8 +24919,8 @@ add_executable(retry_per_attempt_recv_timeout_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/retry_per_attempt_recv_timeout.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -24726,7 +24954,6 @@ target_include_directories(retry_per_attempt_recv_timeout_test target_link_libraries(retry_per_attempt_recv_timeout_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -24755,8 +24982,8 @@ add_executable(retry_recv_initial_metadata_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/retry_recv_initial_metadata.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -24790,7 +25017,6 @@ target_include_directories(retry_recv_initial_metadata_test target_link_libraries(retry_recv_initial_metadata_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -24819,8 +25045,8 @@ add_executable(retry_recv_message_replay_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/retry_recv_message_replay.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -24854,7 +25080,6 @@ target_include_directories(retry_recv_message_replay_test target_link_libraries(retry_recv_message_replay_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -24883,8 +25108,8 @@ add_executable(retry_recv_message_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/retry_recv_message.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -24918,7 +25143,6 @@ target_include_directories(retry_recv_message_test target_link_libraries(retry_recv_message_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -24947,8 +25171,8 @@ add_executable(retry_recv_trailing_metadata_error_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/retry_recv_trailing_metadata_error.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -24982,7 +25206,6 @@ target_include_directories(retry_recv_trailing_metadata_error_test target_link_libraries(retry_recv_trailing_metadata_error_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -25011,8 +25234,8 @@ add_executable(retry_send_initial_metadata_refs_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/retry_send_initial_metadata_refs.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -25046,7 +25269,6 @@ target_include_directories(retry_send_initial_metadata_refs_test target_link_libraries(retry_send_initial_metadata_refs_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -25075,8 +25297,8 @@ add_executable(retry_send_op_fails_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/retry_send_op_fails.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -25110,7 +25332,6 @@ target_include_directories(retry_send_op_fails_test target_link_libraries(retry_send_op_fails_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -25139,8 +25360,8 @@ add_executable(retry_send_recv_batch_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/retry_send_recv_batch.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -25174,7 +25395,6 @@ target_include_directories(retry_send_recv_batch_test target_link_libraries(retry_send_recv_batch_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -25203,8 +25423,8 @@ add_executable(retry_server_pushback_delay_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/retry_server_pushback_delay.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -25238,7 +25458,6 @@ target_include_directories(retry_server_pushback_delay_test target_link_libraries(retry_server_pushback_delay_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -25267,8 +25486,8 @@ add_executable(retry_server_pushback_disabled_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/retry_server_pushback_disabled.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -25302,7 +25521,6 @@ target_include_directories(retry_server_pushback_disabled_test target_link_libraries(retry_server_pushback_disabled_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -25373,8 +25591,8 @@ add_executable(retry_streaming_after_commit_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/retry_streaming_after_commit.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -25408,7 +25626,6 @@ target_include_directories(retry_streaming_after_commit_test target_link_libraries(retry_streaming_after_commit_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -25437,8 +25654,8 @@ add_executable(retry_streaming_succeeds_before_replay_finished_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/retry_streaming_succeeds_before_replay_finished.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -25472,7 +25689,6 @@ target_include_directories(retry_streaming_succeeds_before_replay_finished_test target_link_libraries(retry_streaming_succeeds_before_replay_finished_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -25501,8 +25717,8 @@ add_executable(retry_streaming_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/retry_streaming.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -25536,7 +25752,6 @@ target_include_directories(retry_streaming_test target_link_libraries(retry_streaming_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -25565,8 +25780,8 @@ add_executable(retry_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/retry.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -25600,7 +25815,6 @@ target_include_directories(retry_test target_link_libraries(retry_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -25671,8 +25885,8 @@ add_executable(retry_throttled_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/retry_throttled.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -25706,7 +25920,6 @@ target_include_directories(retry_throttled_test target_link_libraries(retry_throttled_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -25735,8 +25948,8 @@ add_executable(retry_too_many_attempts_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/retry_too_many_attempts.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -25770,7 +25983,6 @@ target_include_directories(retry_too_many_attempts_test target_link_libraries(retry_too_many_attempts_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -25799,8 +26011,8 @@ add_executable(retry_transparent_goaway_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/retry_transparent_goaway.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -25834,7 +26046,6 @@ target_include_directories(retry_transparent_goaway_test target_link_libraries(retry_transparent_goaway_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -25863,8 +26074,8 @@ add_executable(retry_transparent_max_concurrent_streams_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/retry_transparent_max_concurrent_streams.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -25898,7 +26109,6 @@ target_include_directories(retry_transparent_max_concurrent_streams_test target_link_libraries(retry_transparent_max_concurrent_streams_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -25927,8 +26137,8 @@ add_executable(retry_transparent_not_sent_on_wire_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/retry_transparent_not_sent_on_wire.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -25962,7 +26172,6 @@ target_include_directories(retry_transparent_not_sent_on_wire_test target_link_libraries(retry_transparent_not_sent_on_wire_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -25991,8 +26200,8 @@ add_executable(retry_unref_before_finish_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/retry_unref_before_finish.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -26026,7 +26235,6 @@ target_include_directories(retry_unref_before_finish_test target_link_libraries(retry_unref_before_finish_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -26055,8 +26263,8 @@ add_executable(retry_unref_before_recv_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/retry_unref_before_recv.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -26090,7 +26298,6 @@ target_include_directories(retry_unref_before_recv_test target_link_libraries(retry_unref_before_recv_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -26105,9 +26312,9 @@ add_executable(ring_hash_test ${_gRPC_PROTO_GENS_DIR}/test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.grpc.pb.cc ${_gRPC_PROTO_GENS_DIR}/test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.pb.h ${_gRPC_PROTO_GENS_DIR}/test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.grpc.pb.h - test/core/client_channel/lb_policy/ring_hash_test.cc test/core/event_engine/event_engine_test_utils.cc test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.cc + test/core/load_balancing/ring_hash_test.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -26141,7 +26348,6 @@ target_include_directories(ring_hash_test target_link_libraries(ring_hash_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check ${_gRPC_PROTOBUF_LIBRARIES} grpc_test_util ) @@ -26175,8 +26381,9 @@ add_executable(rls_end2end_test ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/orca_load_report.grpc.pb.cc ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/orca_load_report.pb.h ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/orca_load_report.grpc.pb.h - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/event_engine/event_engine_test_utils.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc test/cpp/end2end/rls_end2end_test.cc test/cpp/end2end/rls_server.cc test/cpp/end2end/test_service_impl.cc @@ -26214,7 +26421,6 @@ target_include_directories(rls_end2end_test target_link_libraries(rls_end2end_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc++_test_config grpc++_test_util ) @@ -26224,7 +26430,7 @@ endif() if(gRPC_BUILD_TESTS) add_executable(rls_lb_config_parser_test - test/core/client_channel/lb_policy/rls_lb_config_parser_test.cc + test/core/load_balancing/rls_lb_config_parser_test.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -26270,9 +26476,9 @@ add_executable(round_robin_test ${_gRPC_PROTO_GENS_DIR}/test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.grpc.pb.cc ${_gRPC_PROTO_GENS_DIR}/test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.pb.h ${_gRPC_PROTO_GENS_DIR}/test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.grpc.pb.h - test/core/client_channel/lb_policy/round_robin_test.cc test/core/event_engine/event_engine_test_utils.cc test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.cc + test/core/load_balancing/round_robin_test.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -26306,7 +26512,6 @@ target_include_directories(round_robin_test target_link_libraries(round_robin_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check ${_gRPC_PROTOBUF_LIBRARIES} grpc_test_util ) @@ -26403,15 +26608,15 @@ if(gRPC_BUILD_TESTS) add_executable(secure_endpoint_test test/core/iomgr/endpoint_tests.cc test/core/security/secure_endpoint_test.cc - test/core/util/cmdline.cc - test/core/util/fuzzer_util.cc - test/core/util/grpc_profiler.cc - test/core/util/histogram.cc - test/core/util/mock_endpoint.cc - test/core/util/parse_hexstring.cc - test/core/util/resolve_localhost_ip46.cc - test/core/util/slice_splitter.cc - test/core/util/tracer_util.cc + test/core/test_util/cmdline.cc + test/core/test_util/fuzzer_util.cc + test/core/test_util/grpc_profiler.cc + test/core/test_util/histogram.cc + test/core/test_util/mock_endpoint.cc + test/core/test_util/parse_hexstring.cc + test/core/test_util/resolve_localhost_ip46.cc + test/core/test_util/slice_splitter.cc + test/core/test_util/tracer_util.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -26454,15 +26659,15 @@ if(gRPC_BUILD_TESTS) add_executable(security_connector_test test/core/security/security_connector_test.cc - test/core/util/cmdline.cc - test/core/util/fuzzer_util.cc - test/core/util/grpc_profiler.cc - test/core/util/histogram.cc - test/core/util/mock_endpoint.cc - test/core/util/parse_hexstring.cc - test/core/util/resolve_localhost_ip46.cc - test/core/util/slice_splitter.cc - test/core/util/tracer_util.cc + test/core/test_util/cmdline.cc + test/core/test_util/fuzzer_util.cc + test/core/test_util/grpc_profiler.cc + test/core/test_util/histogram.cc + test/core/test_util/mock_endpoint.cc + test/core/test_util/parse_hexstring.cc + test/core/test_util/resolve_localhost_ip46.cc + test/core/test_util/slice_splitter.cc + test/core/test_util/tracer_util.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -26647,7 +26852,6 @@ target_include_directories(server_builder_plugin_test target_link_libraries(server_builder_plugin_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc++_test_util ) @@ -26673,15 +26877,16 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/orca_load_report.grpc.pb.cc ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/orca_load_report.pb.h ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/orca_load_report.grpc.pb.h - test/core/util/cmdline.cc - test/core/util/fuzzer_util.cc - test/core/util/grpc_profiler.cc - test/core/util/histogram.cc - test/core/util/mock_endpoint.cc - test/core/util/parse_hexstring.cc - test/core/util/resolve_localhost_ip46.cc - test/core/util/slice_splitter.cc - test/core/util/tracer_util.cc + test/core/event_engine/event_engine_test_utils.cc + test/core/test_util/cmdline.cc + test/core/test_util/fuzzer_util.cc + test/core/test_util/grpc_profiler.cc + test/core/test_util/histogram.cc + test/core/test_util/mock_endpoint.cc + test/core/test_util/parse_hexstring.cc + test/core/test_util/resolve_localhost_ip46.cc + test/core/test_util/slice_splitter.cc + test/core/test_util/tracer_util.cc test/cpp/server/server_builder_test.cc ) if(WIN32 AND MSVC) @@ -26744,15 +26949,15 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/orca_load_report.grpc.pb.cc ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/orca_load_report.pb.h ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/orca_load_report.grpc.pb.h - test/core/util/cmdline.cc - test/core/util/fuzzer_util.cc - test/core/util/grpc_profiler.cc - test/core/util/histogram.cc - test/core/util/mock_endpoint.cc - test/core/util/parse_hexstring.cc - test/core/util/resolve_localhost_ip46.cc - test/core/util/slice_splitter.cc - test/core/util/tracer_util.cc + test/core/test_util/cmdline.cc + test/core/test_util/fuzzer_util.cc + test/core/test_util/grpc_profiler.cc + test/core/test_util/histogram.cc + test/core/test_util/mock_endpoint.cc + test/core/test_util/parse_hexstring.cc + test/core/test_util/resolve_localhost_ip46.cc + test/core/test_util/slice_splitter.cc + test/core/test_util/tracer_util.cc test/cpp/server/server_builder_with_socket_mutator_test.cc ) if(WIN32 AND MSVC) @@ -26882,7 +27087,7 @@ endif() if(gRPC_BUILD_TESTS) add_executable(server_config_selector_test - test/core/server_config_selector/server_config_selector_test.cc + test/core/server/server_config_selector_test.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -27044,8 +27249,8 @@ add_executable(server_finishes_request_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/server_finishes_request.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -27079,7 +27284,6 @@ target_include_directories(server_finishes_request_test target_link_libraries(server_finishes_request_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -27143,7 +27347,6 @@ target_include_directories(server_interceptors_end2end_test target_link_libraries(server_interceptors_end2end_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc++_test_util ) @@ -27188,7 +27391,6 @@ target_include_directories(server_registered_method_bad_client_test target_link_libraries(server_registered_method_bad_client_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_test_util ) @@ -27214,15 +27416,15 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/orca_load_report.grpc.pb.cc ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/orca_load_report.pb.h ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/orca_load_report.grpc.pb.h - test/core/util/cmdline.cc - test/core/util/fuzzer_util.cc - test/core/util/grpc_profiler.cc - test/core/util/histogram.cc - test/core/util/mock_endpoint.cc - test/core/util/parse_hexstring.cc - test/core/util/resolve_localhost_ip46.cc - test/core/util/slice_splitter.cc - test/core/util/tracer_util.cc + test/core/test_util/cmdline.cc + test/core/test_util/fuzzer_util.cc + test/core/test_util/grpc_profiler.cc + test/core/test_util/histogram.cc + test/core/test_util/mock_endpoint.cc + test/core/test_util/parse_hexstring.cc + test/core/test_util/resolve_localhost_ip46.cc + test/core/test_util/slice_splitter.cc + test/core/test_util/tracer_util.cc test/cpp/server/server_request_call_test.cc ) if(WIN32 AND MSVC) @@ -27331,8 +27533,8 @@ add_executable(server_streaming_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/server_streaming.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -27366,7 +27568,6 @@ target_include_directories(server_streaming_test target_link_libraries(server_streaming_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -27475,7 +27676,6 @@ target_include_directories(service_config_end2end_test target_link_libraries(service_config_end2end_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc++_test_util ) @@ -27526,16 +27726,16 @@ endif() if(gRPC_BUILD_TESTS) add_executable(settings_timeout_test + test/core/test_util/cmdline.cc + test/core/test_util/fuzzer_util.cc + test/core/test_util/grpc_profiler.cc + test/core/test_util/histogram.cc + test/core/test_util/mock_endpoint.cc + test/core/test_util/parse_hexstring.cc + test/core/test_util/resolve_localhost_ip46.cc + test/core/test_util/slice_splitter.cc + test/core/test_util/tracer_util.cc test/core/transport/chttp2/settings_timeout_test.cc - test/core/util/cmdline.cc - test/core/util/fuzzer_util.cc - test/core/util/grpc_profiler.cc - test/core/util/histogram.cc - test/core/util/mock_endpoint.cc - test/core/util/parse_hexstring.cc - test/core/util/resolve_localhost_ip46.cc - test/core/util/slice_splitter.cc - test/core/util/tracer_util.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -27569,7 +27769,6 @@ target_include_directories(settings_timeout_test target_link_libraries(settings_timeout_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_test_util ) @@ -27596,8 +27795,8 @@ add_executable(shutdown_finishes_calls_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/shutdown_finishes_calls.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -27631,7 +27830,6 @@ target_include_directories(shutdown_finishes_calls_test target_link_libraries(shutdown_finishes_calls_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -27660,8 +27858,8 @@ add_executable(shutdown_finishes_tags_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/shutdown_finishes_tags.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -27695,7 +27893,6 @@ target_include_directories(shutdown_finishes_tags_test target_link_libraries(shutdown_finishes_tags_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -27761,7 +27958,6 @@ target_include_directories(shutdown_test target_link_libraries(shutdown_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc++_test_util ) @@ -27788,8 +27984,8 @@ add_executable(simple_delayed_request_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/simple_delayed_request.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -27823,7 +28019,6 @@ target_include_directories(simple_delayed_request_test target_link_libraries(simple_delayed_request_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -27852,8 +28047,8 @@ add_executable(simple_metadata_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/simple_metadata.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -27887,7 +28082,6 @@ target_include_directories(simple_metadata_test target_link_libraries(simple_metadata_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -27934,7 +28128,6 @@ target_include_directories(simple_request_bad_client_test target_link_libraries(simple_request_bad_client_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_test_util ) @@ -27961,8 +28154,8 @@ add_executable(simple_request_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/simple_request.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -27996,7 +28189,6 @@ target_include_directories(simple_request_test target_link_libraries(simple_request_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -28179,7 +28371,7 @@ endif() if(gRPC_BUILD_TESTS) add_executable(sockaddr_resolver_test - test/core/client_channel/resolvers/sockaddr_resolver_test.cc + test/core/resolver/sockaddr_resolver_test.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -28265,15 +28457,15 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) add_executable(socket_utils_test test/core/iomgr/socket_utils_test.cc - test/core/util/cmdline.cc - test/core/util/fuzzer_util.cc - test/core/util/grpc_profiler.cc - test/core/util/histogram.cc - test/core/util/mock_endpoint.cc - test/core/util/parse_hexstring.cc - test/core/util/resolve_localhost_ip46.cc - test/core/util/slice_splitter.cc - test/core/util/tracer_util.cc + test/core/test_util/cmdline.cc + test/core/test_util/fuzzer_util.cc + test/core/test_util/grpc_profiler.cc + test/core/test_util/histogram.cc + test/core/test_util/mock_endpoint.cc + test/core/test_util/parse_hexstring.cc + test/core/test_util/resolve_localhost_ip46.cc + test/core/test_util/slice_splitter.cc + test/core/test_util/tracer_util.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -28348,7 +28540,7 @@ endif() if(gRPC_BUILD_TESTS) add_executable(spinlock_test - test/core/gpr/spinlock_test.cc + test/core/util/spinlock_test.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -28426,7 +28618,6 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) target_link_libraries(ssl_transport_security_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_test_util ) @@ -28472,7 +28663,6 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) target_link_libraries(ssl_transport_security_utils_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_test_util ) @@ -28483,7 +28673,7 @@ if(gRPC_BUILD_TESTS) if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) add_executable(stack_tracer_test - test/core/util/stack_tracer_test.cc + test/core/test_util/stack_tracer_test.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -28569,7 +28759,7 @@ if(gRPC_BUILD_TESTS) add_executable(static_stride_scheduler_test src/core/load_balancing/weighted_round_robin/static_stride_scheduler.cc - test/core/client_channel/lb_policy/static_stride_scheduler_test.cc + test/core/load_balancing/static_stride_scheduler_test.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -28653,16 +28843,16 @@ endif() if(gRPC_BUILD_TESTS) add_executable(status_conversion_test + test/core/test_util/cmdline.cc + test/core/test_util/fuzzer_util.cc + test/core/test_util/grpc_profiler.cc + test/core/test_util/histogram.cc + test/core/test_util/mock_endpoint.cc + test/core/test_util/parse_hexstring.cc + test/core/test_util/resolve_localhost_ip46.cc + test/core/test_util/slice_splitter.cc + test/core/test_util/tracer_util.cc test/core/transport/status_conversion_test.cc - test/core/util/cmdline.cc - test/core/util/fuzzer_util.cc - test/core/util/grpc_profiler.cc - test/core/util/histogram.cc - test/core/util/mock_endpoint.cc - test/core/util/parse_hexstring.cc - test/core/util/resolve_localhost_ip46.cc - test/core/util/slice_splitter.cc - test/core/util/tracer_util.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -28864,7 +29054,6 @@ target_include_directories(stream_leak_with_queued_flow_control_update_test target_link_libraries(stream_leak_with_queued_flow_control_update_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_test_util ) @@ -28891,8 +29080,8 @@ add_executable(streaming_error_response_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/streaming_error_response.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -28926,7 +29115,6 @@ target_include_directories(streaming_error_response_test target_link_libraries(streaming_error_response_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -29003,16 +29191,16 @@ if(gRPC_BUILD_TESTS) add_executable(streams_not_seen_test test/core/end2end/cq_verifier.cc + test/core/test_util/cmdline.cc + test/core/test_util/fuzzer_util.cc + test/core/test_util/grpc_profiler.cc + test/core/test_util/histogram.cc + test/core/test_util/mock_endpoint.cc + test/core/test_util/parse_hexstring.cc + test/core/test_util/resolve_localhost_ip46.cc + test/core/test_util/slice_splitter.cc + test/core/test_util/tracer_util.cc test/core/transport/chttp2/streams_not_seen_test.cc - test/core/util/cmdline.cc - test/core/util/fuzzer_util.cc - test/core/util/grpc_profiler.cc - test/core/util/histogram.cc - test/core/util/mock_endpoint.cc - test/core/util/parse_hexstring.cc - test/core/util/resolve_localhost_ip46.cc - test/core/util/slice_splitter.cc - test/core/util/tracer_util.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -29046,7 +29234,6 @@ target_include_directories(streams_not_seen_test target_link_libraries(streams_not_seen_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_test_util ) @@ -29099,7 +29286,7 @@ endif() if(gRPC_BUILD_TESTS) add_executable(string_test - test/core/gpr/string_test.cc + test/core/util/string_test.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -29184,7 +29371,7 @@ endif() if(gRPC_BUILD_TESTS) add_executable(sync_test - test/core/gpr/sync_test.cc + test/core/util/sync_test.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -29227,15 +29414,15 @@ if(gRPC_BUILD_TESTS) add_executable(system_roots_test test/core/security/system_roots_test.cc - test/core/util/cmdline.cc - test/core/util/fuzzer_util.cc - test/core/util/grpc_profiler.cc - test/core/util/histogram.cc - test/core/util/mock_endpoint.cc - test/core/util/parse_hexstring.cc - test/core/util/resolve_localhost_ip46.cc - test/core/util/slice_splitter.cc - test/core/util/tracer_util.cc + test/core/test_util/cmdline.cc + test/core/test_util/fuzzer_util.cc + test/core/test_util/grpc_profiler.cc + test/core/test_util/histogram.cc + test/core/test_util/mock_endpoint.cc + test/core/test_util/parse_hexstring.cc + test/core/test_util/resolve_localhost_ip46.cc + test/core/test_util/slice_splitter.cc + test/core/test_util/tracer_util.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -29313,15 +29500,15 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) add_executable(tcp_client_posix_test test/core/iomgr/tcp_client_posix_test.cc - test/core/util/cmdline.cc - test/core/util/fuzzer_util.cc - test/core/util/grpc_profiler.cc - test/core/util/histogram.cc - test/core/util/mock_endpoint.cc - test/core/util/parse_hexstring.cc - test/core/util/resolve_localhost_ip46.cc - test/core/util/slice_splitter.cc - test/core/util/tracer_util.cc + test/core/test_util/cmdline.cc + test/core/test_util/fuzzer_util.cc + test/core/test_util/grpc_profiler.cc + test/core/test_util/histogram.cc + test/core/test_util/mock_endpoint.cc + test/core/test_util/parse_hexstring.cc + test/core/test_util/resolve_localhost_ip46.cc + test/core/test_util/slice_splitter.cc + test/core/test_util/tracer_util.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -29411,15 +29598,15 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_POSIX) add_executable(tcp_posix_test test/core/iomgr/endpoint_tests.cc test/core/iomgr/tcp_posix_test.cc - test/core/util/cmdline.cc - test/core/util/fuzzer_util.cc - test/core/util/grpc_profiler.cc - test/core/util/histogram.cc - test/core/util/mock_endpoint.cc - test/core/util/parse_hexstring.cc - test/core/util/resolve_localhost_ip46.cc - test/core/util/slice_splitter.cc - test/core/util/tracer_util.cc + test/core/test_util/cmdline.cc + test/core/test_util/fuzzer_util.cc + test/core/test_util/grpc_profiler.cc + test/core/test_util/histogram.cc + test/core/test_util/mock_endpoint.cc + test/core/test_util/parse_hexstring.cc + test/core/test_util/resolve_localhost_ip46.cc + test/core/test_util/slice_splitter.cc + test/core/test_util/tracer_util.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -29464,15 +29651,15 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) add_executable(tcp_server_posix_test test/core/iomgr/tcp_server_posix_test.cc - test/core/util/cmdline.cc - test/core/util/fuzzer_util.cc - test/core/util/grpc_profiler.cc - test/core/util/histogram.cc - test/core/util/mock_endpoint.cc - test/core/util/parse_hexstring.cc - test/core/util/resolve_localhost_ip46.cc - test/core/util/slice_splitter.cc - test/core/util/tracer_util.cc + test/core/test_util/cmdline.cc + test/core/test_util/fuzzer_util.cc + test/core/test_util/grpc_profiler.cc + test/core/test_util/histogram.cc + test/core/test_util/mock_endpoint.cc + test/core/test_util/parse_hexstring.cc + test/core/test_util/resolve_localhost_ip46.cc + test/core/test_util/slice_splitter.cc + test/core/test_util/tracer_util.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -29549,7 +29736,6 @@ target_include_directories(tcp_socket_utils_test target_link_libraries(tcp_socket_utils_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc ) @@ -29557,18 +29743,18 @@ target_link_libraries(tcp_socket_utils_test endif() if(gRPC_BUILD_TESTS) -add_executable(test_core_channel_channelz_test +add_executable(test_core_channelz_channelz_test ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/channelz/channelz.pb.cc ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/channelz/channelz.grpc.pb.cc ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/channelz/channelz.pb.h ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/channelz/channelz.grpc.pb.h - test/core/channel/channelz_test.cc + test/core/channelz/channelz_test.cc test/core/event_engine/event_engine_test_utils.cc test/cpp/util/channel_trace_proto_helper.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) - target_compile_definitions(test_core_channel_channelz_test + target_compile_definitions(test_core_channelz_channelz_test PRIVATE "GPR_DLL_IMPORTS" "GRPC_DLL_IMPORTS" @@ -29576,8 +29762,8 @@ if(WIN32 AND MSVC) ) endif() endif() -target_compile_features(test_core_channel_channelz_test PUBLIC cxx_std_14) -target_include_directories(test_core_channel_channelz_test +target_compile_features(test_core_channelz_channelz_test PUBLIC cxx_std_14) +target_include_directories(test_core_channelz_channelz_test PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/include @@ -29596,10 +29782,9 @@ target_include_directories(test_core_channel_channelz_test ${_gRPC_PROTO_GENS_DIR} ) -target_link_libraries(test_core_channel_channelz_test +target_link_libraries(test_core_channelz_channelz_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc++ grpc_test_util ) @@ -29627,8 +29812,8 @@ add_executable(test_core_end2end_channelz_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/channelz.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -29662,7 +29847,6 @@ target_include_directories(test_core_end2end_channelz_test target_link_libraries(test_core_end2end_channelz_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -29710,7 +29894,6 @@ target_include_directories(test_core_event_engine_posix_timer_heap_test target_link_libraries(test_core_event_engine_posix_timer_heap_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check absl::statusor gpr ) @@ -29809,55 +29992,12 @@ target_link_libraries(test_core_event_engine_slice_buffer_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest absl::hash - absl::check absl::statusor absl::utility gpr ) -endif() -if(gRPC_BUILD_TESTS) - -add_executable(test_core_gpr_time_test - test/core/gpr/time_test.cc -) -if(WIN32 AND MSVC) - if(BUILD_SHARED_LIBS) - target_compile_definitions(test_core_gpr_time_test - PRIVATE - "GPR_DLL_IMPORTS" - "GRPC_DLL_IMPORTS" - ) - endif() -endif() -target_compile_features(test_core_gpr_time_test PUBLIC cxx_std_14) -target_include_directories(test_core_gpr_time_test - PRIVATE - ${CMAKE_CURRENT_SOURCE_DIR} - ${CMAKE_CURRENT_SOURCE_DIR}/include - ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR} - ${_gRPC_RE2_INCLUDE_DIR} - ${_gRPC_SSL_INCLUDE_DIR} - ${_gRPC_UPB_GENERATED_DIR} - ${_gRPC_UPB_GRPC_GENERATED_DIR} - ${_gRPC_UPB_INCLUDE_DIR} - ${_gRPC_XXHASH_INCLUDE_DIR} - ${_gRPC_ZLIB_INCLUDE_DIR} - third_party/googletest/googletest/include - third_party/googletest/googletest - third_party/googletest/googlemock/include - third_party/googletest/googlemock - ${_gRPC_PROTO_GENS_DIR} -) - -target_link_libraries(test_core_gpr_time_test - ${_gRPC_ALLTARGETS_LIBRARIES} - gtest - grpc_test_util -) - - endif() if(gRPC_BUILD_TESTS) @@ -29906,15 +30046,15 @@ if(gRPC_BUILD_TESTS) add_executable(test_core_iomgr_timer_heap_test test/core/iomgr/timer_heap_test.cc - test/core/util/cmdline.cc - test/core/util/fuzzer_util.cc - test/core/util/grpc_profiler.cc - test/core/util/histogram.cc - test/core/util/mock_endpoint.cc - test/core/util/parse_hexstring.cc - test/core/util/resolve_localhost_ip46.cc - test/core/util/slice_splitter.cc - test/core/util/tracer_util.cc + test/core/test_util/cmdline.cc + test/core/test_util/fuzzer_util.cc + test/core/test_util/grpc_profiler.cc + test/core/test_util/histogram.cc + test/core/test_util/mock_endpoint.cc + test/core/test_util/parse_hexstring.cc + test/core/test_util/resolve_localhost_ip46.cc + test/core/test_util/slice_splitter.cc + test/core/test_util/tracer_util.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -29957,15 +30097,15 @@ if(gRPC_BUILD_TESTS) add_executable(test_core_security_credentials_test test/core/security/credentials_test.cc - test/core/util/cmdline.cc - test/core/util/fuzzer_util.cc - test/core/util/grpc_profiler.cc - test/core/util/histogram.cc - test/core/util/mock_endpoint.cc - test/core/util/parse_hexstring.cc - test/core/util/resolve_localhost_ip46.cc - test/core/util/slice_splitter.cc - test/core/util/tracer_util.cc + test/core/test_util/cmdline.cc + test/core/test_util/fuzzer_util.cc + test/core/test_util/grpc_profiler.cc + test/core/test_util/histogram.cc + test/core/test_util/mock_endpoint.cc + test/core/test_util/parse_hexstring.cc + test/core/test_util/resolve_localhost_ip46.cc + test/core/test_util/slice_splitter.cc + test/core/test_util/tracer_util.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -29999,7 +30139,6 @@ target_include_directories(test_core_security_credentials_test target_link_libraries(test_core_security_credentials_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_test_util ) @@ -30009,15 +30148,15 @@ if(gRPC_BUILD_TESTS) add_executable(test_core_security_ssl_credentials_test test/core/security/ssl_credentials_test.cc - test/core/util/cmdline.cc - test/core/util/fuzzer_util.cc - test/core/util/grpc_profiler.cc - test/core/util/histogram.cc - test/core/util/mock_endpoint.cc - test/core/util/parse_hexstring.cc - test/core/util/resolve_localhost_ip46.cc - test/core/util/slice_splitter.cc - test/core/util/tracer_util.cc + test/core/test_util/cmdline.cc + test/core/test_util/fuzzer_util.cc + test/core/test_util/grpc_profiler.cc + test/core/test_util/histogram.cc + test/core/test_util/mock_endpoint.cc + test/core/test_util/parse_hexstring.cc + test/core/test_util/resolve_localhost_ip46.cc + test/core/test_util/slice_splitter.cc + test/core/test_util/tracer_util.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -30102,7 +30241,7 @@ if(gRPC_BUILD_TESTS) add_executable(test_core_slice_slice_test test/core/slice/slice_test.cc - test/core/util/build.cc + test/core/test_util/build.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -30197,7 +30336,6 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_POSIX) target_link_libraries(test_core_transport_test_suite_chaotic_good_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check ${_gRPC_PROTOBUF_LIBRARIES} grpc_test_util ) @@ -30207,6 +30345,48 @@ endif() endif() if(gRPC_BUILD_TESTS) +add_executable(test_core_util_time_test + test/core/util/time_test.cc +) +if(WIN32 AND MSVC) + if(BUILD_SHARED_LIBS) + target_compile_definitions(test_core_util_time_test + PRIVATE + "GPR_DLL_IMPORTS" + "GRPC_DLL_IMPORTS" + ) + endif() +endif() +target_compile_features(test_core_util_time_test PUBLIC cxx_std_14) +target_include_directories(test_core_util_time_test + PRIVATE + ${CMAKE_CURRENT_SOURCE_DIR} + ${CMAKE_CURRENT_SOURCE_DIR}/include + ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR} + ${_gRPC_RE2_INCLUDE_DIR} + ${_gRPC_SSL_INCLUDE_DIR} + ${_gRPC_UPB_GENERATED_DIR} + ${_gRPC_UPB_GRPC_GENERATED_DIR} + ${_gRPC_UPB_INCLUDE_DIR} + ${_gRPC_XXHASH_INCLUDE_DIR} + ${_gRPC_ZLIB_INCLUDE_DIR} + third_party/googletest/googletest/include + third_party/googletest/googletest + third_party/googletest/googlemock/include + third_party/googletest/googlemock + ${_gRPC_PROTO_GENS_DIR} +) + +target_link_libraries(test_core_util_time_test + ${_gRPC_ALLTARGETS_LIBRARIES} + gtest + grpc_test_util +) + + +endif() +if(gRPC_BUILD_TESTS) + add_executable(test_cpp_client_credentials_test test/cpp/client/credentials_test.cc test/cpp/util/tls_test_utils.cc @@ -30305,7 +30485,6 @@ target_include_directories(test_cpp_end2end_ssl_credentials_test target_link_libraries(test_cpp_end2end_ssl_credentials_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc++_test_util ) @@ -30778,7 +30957,6 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) target_link_libraries(thready_posix_event_engine_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_test_util ) @@ -30894,8 +31072,8 @@ add_executable(timeout_before_request_call_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/timeout_before_request_call.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -30929,7 +31107,6 @@ target_include_directories(timeout_before_request_call_test target_link_libraries(timeout_before_request_call_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -30940,16 +31117,16 @@ endif() if(gRPC_BUILD_TESTS) add_executable(timeout_encoding_test + test/core/test_util/cmdline.cc + test/core/test_util/fuzzer_util.cc + test/core/test_util/grpc_profiler.cc + test/core/test_util/histogram.cc + test/core/test_util/mock_endpoint.cc + test/core/test_util/parse_hexstring.cc + test/core/test_util/resolve_localhost_ip46.cc + test/core/test_util/slice_splitter.cc + test/core/test_util/tracer_util.cc test/core/transport/timeout_encoding_test.cc - test/core/util/cmdline.cc - test/core/util/fuzzer_util.cc - test/core/util/grpc_profiler.cc - test/core/util/histogram.cc - test/core/util/mock_endpoint.cc - test/core/util/parse_hexstring.cc - test/core/util/resolve_localhost_ip46.cc - test/core/util/slice_splitter.cc - test/core/util/tracer_util.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -31174,7 +31351,6 @@ target_include_directories(tls_credentials_test target_link_libraries(tls_credentials_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc++_test_util ) @@ -31234,7 +31410,6 @@ target_include_directories(tls_key_export_test target_link_libraries(tls_key_export_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc++_test_util ) @@ -31244,15 +31419,15 @@ if(gRPC_BUILD_TESTS) add_executable(tls_security_connector_test test/core/security/tls_security_connector_test.cc - test/core/util/cmdline.cc - test/core/util/fuzzer_util.cc - test/core/util/grpc_profiler.cc - test/core/util/histogram.cc - test/core/util/mock_endpoint.cc - test/core/util/parse_hexstring.cc - test/core/util/resolve_localhost_ip46.cc - test/core/util/slice_splitter.cc - test/core/util/tracer_util.cc + test/core/test_util/cmdline.cc + test/core/test_util/fuzzer_util.cc + test/core/test_util/grpc_profiler.cc + test/core/test_util/histogram.cc + test/core/test_util/mock_endpoint.cc + test/core/test_util/parse_hexstring.cc + test/core/test_util/resolve_localhost_ip46.cc + test/core/test_util/slice_splitter.cc + test/core/test_util/tracer_util.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -31330,7 +31505,6 @@ target_include_directories(too_many_pings_test target_link_libraries(too_many_pings_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc++_test_config grpc++_test_util ) @@ -31375,7 +31549,6 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) target_link_libraries(traced_buffer_list_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_test_util ) @@ -31403,8 +31576,8 @@ add_executable(trailing_metadata_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/trailing_metadata.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -31438,7 +31611,6 @@ target_include_directories(trailing_metadata_test target_link_libraries(trailing_metadata_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -31842,7 +32014,6 @@ target_include_directories(unknown_frame_bad_client_test target_link_libraries(unknown_frame_bad_client_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_test_util ) @@ -31893,7 +32064,7 @@ endif() if(gRPC_BUILD_TESTS) add_executable(useful_test - test/core/gpr/useful_test.cc + test/core/util/useful_test.cc ) target_compile_features(useful_test PUBLIC cxx_std_14) target_include_directories(useful_test @@ -32141,8 +32312,8 @@ endif() if(gRPC_BUILD_TESTS) add_executable(weighted_round_robin_config_test - test/core/client_channel/lb_policy/weighted_round_robin_config_test.cc - test/core/util/fake_stats_plugin.cc + test/core/load_balancing/weighted_round_robin_config_test.cc + test/core/test_util/fake_stats_plugin.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -32188,10 +32359,10 @@ add_executable(weighted_round_robin_test ${_gRPC_PROTO_GENS_DIR}/test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.grpc.pb.cc ${_gRPC_PROTO_GENS_DIR}/test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.pb.h ${_gRPC_PROTO_GENS_DIR}/test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.grpc.pb.h - test/core/client_channel/lb_policy/weighted_round_robin_test.cc test/core/event_engine/event_engine_test_utils.cc test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.cc - test/core/util/fake_stats_plugin.cc + test/core/load_balancing/weighted_round_robin_test.cc + test/core/test_util/fake_stats_plugin.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -32225,7 +32396,6 @@ target_include_directories(weighted_round_robin_test target_link_libraries(weighted_round_robin_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check ${_gRPC_PROTOBUF_LIBRARIES} grpc_test_util ) @@ -32271,7 +32441,6 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_POSIX OR _gRPC_PLATFORM_WINDOWS) target_link_libraries(win_socket_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_test_util ) @@ -32317,7 +32486,6 @@ target_include_directories(window_overflow_bad_client_test target_link_libraries(window_overflow_bad_client_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_test_util ) @@ -32362,7 +32530,6 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_POSIX OR _gRPC_PLATFORM_WINDOWS) target_link_libraries(windows_endpoint_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_test_util ) @@ -32624,7 +32791,6 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) target_link_libraries(work_serializer_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_test_util ) @@ -32652,8 +32818,8 @@ add_executable(write_buffering_at_end_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/write_buffering_at_end.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -32687,7 +32853,6 @@ target_include_directories(write_buffering_at_end_test target_link_libraries(write_buffering_at_end_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -32716,8 +32881,8 @@ add_executable(write_buffering_test test/core/end2end/fixtures/proxy.cc test/core/end2end/tests/write_buffering.cc test/core/event_engine/event_engine_test_utils.cc - test/core/util/fake_stats_plugin.cc - test/core/util/test_lb_policies.cc + test/core/test_util/fake_stats_plugin.cc + test/core/test_util/test_lb_policies.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -32751,7 +32916,6 @@ target_include_directories(write_buffering_test target_link_libraries(write_buffering_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc_authorization_provider grpc_unsecure grpc_test_util @@ -32829,15 +32993,15 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) ${_gRPC_PROTO_GENS_DIR}/test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.grpc.pb.h test/core/event_engine/event_engine_test_utils.cc test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.cc - test/core/util/cmdline.cc - test/core/util/fuzzer_util.cc - test/core/util/grpc_profiler.cc - test/core/util/histogram.cc - test/core/util/mock_endpoint.cc - test/core/util/parse_hexstring.cc - test/core/util/resolve_localhost_ip46.cc - test/core/util/slice_splitter.cc - test/core/util/tracer_util.cc + test/core/test_util/cmdline.cc + test/core/test_util/fuzzer_util.cc + test/core/test_util/grpc_profiler.cc + test/core/test_util/histogram.cc + test/core/test_util/mock_endpoint.cc + test/core/test_util/parse_hexstring.cc + test/core/test_util/resolve_localhost_ip46.cc + test/core/test_util/slice_splitter.cc + test/core/test_util/tracer_util.cc test/cpp/performance/writes_per_rpc_test.cc ) if(WIN32 AND MSVC) @@ -32873,7 +33037,6 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) target_link_libraries(writes_per_rpc_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc++ grpc_test_util ) @@ -33260,7 +33423,7 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/string.grpc.pb.cc ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/string.pb.h ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/string.grpc.pb.h - test/core/util/fake_stats_plugin.cc + test/core/test_util/fake_stats_plugin.cc test/cpp/end2end/connection_attempt_injector.cc test/cpp/end2end/test_service_impl.cc test/cpp/end2end/xds/xds_cluster_end2end_test.cc @@ -33302,7 +33465,6 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) target_link_libraries(xds_cluster_end2end_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc++_test_util ) @@ -33598,7 +33760,6 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) target_link_libraries(xds_cluster_type_end2end_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc++_test_util ) @@ -33819,7 +33980,7 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/string.grpc.pb.cc ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/string.pb.h ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/string.grpc.pb.h - test/core/util/fake_stats_plugin.cc + test/core/test_util/fake_stats_plugin.cc test/cpp/end2end/test_service_impl.cc test/cpp/end2end/xds/xds_core_end2end_test.cc test/cpp/end2end/xds/xds_end2end_test_lib.cc @@ -33860,7 +34021,6 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) target_link_libraries(xds_core_end2end_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc++_test_util ) @@ -33922,7 +34082,6 @@ target_include_directories(xds_credentials_end2end_test target_link_libraries(xds_credentials_end2end_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc++_test_util ) @@ -33932,15 +34091,15 @@ if(gRPC_BUILD_TESTS) add_executable(xds_credentials_test test/core/security/xds_credentials_test.cc - test/core/util/cmdline.cc - test/core/util/fuzzer_util.cc - test/core/util/grpc_profiler.cc - test/core/util/histogram.cc - test/core/util/mock_endpoint.cc - test/core/util/parse_hexstring.cc - test/core/util/resolve_localhost_ip46.cc - test/core/util/slice_splitter.cc - test/core/util/tracer_util.cc + test/core/test_util/cmdline.cc + test/core/test_util/fuzzer_util.cc + test/core/test_util/grpc_profiler.cc + test/core/test_util/histogram.cc + test/core/test_util/mock_endpoint.cc + test/core/test_util/parse_hexstring.cc + test/core/test_util/resolve_localhost_ip46.cc + test/core/test_util/slice_splitter.cc + test/core/test_util/tracer_util.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -34156,7 +34315,6 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) target_link_libraries(xds_csds_end2end_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc++_test_util ) @@ -34311,7 +34469,7 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/typed_struct.grpc.pb.cc ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/typed_struct.pb.h ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/typed_struct.grpc.pb.h - test/core/util/audit_logging_utils.cc + test/core/test_util/audit_logging_utils.cc test/cpp/end2end/test_service_impl.cc test/cpp/end2end/xds/xds_end2end_test.cc test/cpp/end2end/xds/xds_end2end_test_lib.cc @@ -34352,7 +34510,6 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) target_link_libraries(xds_end2end_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc++_test_config grpc++_test_util ) @@ -34592,7 +34749,6 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) target_link_libraries(xds_fallback_end2end_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc++_test_util ) @@ -34775,7 +34931,6 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) target_link_libraries(xds_fault_injection_end2end_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc++_test_util ) @@ -35352,7 +35507,6 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) target_link_libraries(xds_outlier_detection_end2end_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc++_test_util ) @@ -35539,7 +35693,6 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) target_link_libraries(xds_override_host_end2end_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc++_test_util ) @@ -35549,7 +35702,7 @@ endif() if(gRPC_BUILD_TESTS) add_executable(xds_override_host_lb_config_parser_test - test/core/client_channel/lb_policy/xds_override_host_lb_config_parser_test.cc + test/core/load_balancing/xds_override_host_lb_config_parser_test.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -35595,9 +35748,9 @@ add_executable(xds_override_host_test ${_gRPC_PROTO_GENS_DIR}/test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.grpc.pb.cc ${_gRPC_PROTO_GENS_DIR}/test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.pb.h ${_gRPC_PROTO_GENS_DIR}/test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.grpc.pb.h - test/core/client_channel/lb_policy/xds_override_host_test.cc test/core/event_engine/event_engine_test_utils.cc test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.cc + test/core/load_balancing/xds_override_host_test.cc ) if(WIN32 AND MSVC) if(BUILD_SHARED_LIBS) @@ -35631,7 +35784,6 @@ target_include_directories(xds_override_host_test target_link_libraries(xds_override_host_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check ${_gRPC_PROTOBUF_LIBRARIES} grpc_test_util ) @@ -35815,7 +35967,6 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) target_link_libraries(xds_pick_first_end2end_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc++_test_util ) @@ -35995,7 +36146,6 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) target_link_libraries(xds_ring_hash_end2end_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc++_test_util ) @@ -36179,7 +36329,6 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) target_link_libraries(xds_rls_end2end_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc++_test_util ) @@ -36484,7 +36633,6 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) target_link_libraries(xds_routing_end2end_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc++_test_util ) @@ -36561,7 +36709,6 @@ target_include_directories(xds_stats_watcher_test target_link_libraries(xds_stats_watcher_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc++_reflection grpcpp_channelz grpc_test_util @@ -36706,7 +36853,7 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/wrr_locality.grpc.pb.cc ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/wrr_locality.pb.h ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/wrr_locality.grpc.pb.h - test/core/util/fake_stats_plugin.cc + test/core/test_util/fake_stats_plugin.cc test/cpp/end2end/test_service_impl.cc test/cpp/end2end/xds/xds_end2end_test_lib.cc test/cpp/end2end/xds/xds_server.cc @@ -36747,7 +36894,6 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) target_link_libraries(xds_wrr_end2end_test ${_gRPC_ALLTARGETS_LIBRARIES} gtest - absl::check grpc++_test_util ) @@ -36820,7 +36966,7 @@ generate_pkgconfig( "gpr" "gRPC platform support library" "${gRPC_CORE_VERSION}" - "absl_any_invocable absl_base absl_cord absl_core_headers absl_flags absl_flags_marshalling absl_log absl_log_severity absl_memory absl_optional absl_random_random absl_status absl_str_format absl_strings absl_synchronization absl_time absl_variant" + "absl_any_invocable absl_base absl_check absl_cord absl_core_headers absl_flags absl_flags_marshalling absl_log absl_log_globals absl_log_severity absl_memory absl_optional absl_random_random absl_status absl_str_format absl_strings absl_synchronization absl_time absl_variant" "" "-lgpr" "" @@ -36831,7 +36977,7 @@ generate_pkgconfig( "gRPC" "high performance general RPC framework" "${gRPC_CORE_VERSION}" - "absl_algorithm_container absl_any_invocable absl_base absl_bind_front absl_cleanup absl_config absl_cord absl_core_headers absl_flags absl_flags_marshalling absl_flat_hash_map absl_flat_hash_set absl_function_ref absl_hash absl_inlined_vector absl_log absl_log_severity absl_memory absl_no_destructor absl_optional absl_random_bit_gen_ref absl_random_distributions absl_random_random absl_span absl_status absl_statusor absl_str_format absl_strings absl_synchronization absl_time absl_type_traits absl_utility absl_variant gpr" + "absl_algorithm_container absl_any_invocable absl_base absl_bind_front absl_check absl_cleanup absl_config absl_cord absl_core_headers absl_flags absl_flags_marshalling absl_flat_hash_map absl_flat_hash_set absl_function_ref absl_hash absl_inlined_vector absl_log absl_log_globals absl_log_severity absl_memory absl_no_destructor absl_optional absl_random_bit_gen_ref absl_random_distributions absl_random_random absl_span absl_status absl_statusor absl_str_format absl_strings absl_synchronization absl_time absl_type_traits absl_utility absl_variant gpr" "libcares openssl re2 zlib" "-lgrpc" "-laddress_sorting -lupb_textformat_lib -lupb_json_lib -lupb_message_lib -lupb_mem_lib -lupb_base_lib -lutf8_range_lib" @@ -36842,7 +36988,7 @@ generate_pkgconfig( "gRPC unsecure" "high performance general RPC framework without SSL" "${gRPC_CORE_VERSION}" - "absl_algorithm_container absl_any_invocable absl_base absl_bind_front absl_cleanup absl_config absl_cord absl_core_headers absl_flags absl_flags_marshalling absl_flat_hash_map absl_flat_hash_set absl_function_ref absl_hash absl_inlined_vector absl_log absl_log_severity absl_memory absl_no_destructor absl_optional absl_random_bit_gen_ref absl_random_distributions absl_random_random absl_span absl_status absl_statusor absl_str_format absl_strings absl_synchronization absl_time absl_type_traits absl_utility absl_variant gpr" + "absl_algorithm_container absl_any_invocable absl_base absl_bind_front absl_check absl_cleanup absl_config absl_cord absl_core_headers absl_flags absl_flags_marshalling absl_flat_hash_map absl_flat_hash_set absl_function_ref absl_hash absl_inlined_vector absl_log absl_log_globals absl_log_severity absl_memory absl_no_destructor absl_optional absl_random_bit_gen_ref absl_random_distributions absl_random_random absl_span absl_status absl_statusor absl_str_format absl_strings absl_synchronization absl_time absl_type_traits absl_utility absl_variant gpr" "libcares zlib" "-lgrpc_unsecure" "-laddress_sorting -lupb_message_lib -lupb_mem_lib -lupb_base_lib -lutf8_range_lib" @@ -36853,7 +36999,7 @@ generate_pkgconfig( "gRPC++" "C++ wrapper for gRPC" "${gRPC_CPP_VERSION}" - "absl_algorithm_container absl_any_invocable absl_base absl_bind_front absl_cleanup absl_config absl_cord absl_core_headers absl_flags absl_flags_marshalling absl_flat_hash_map absl_flat_hash_set absl_function_ref absl_hash absl_inlined_vector absl_log absl_log_severity absl_memory absl_no_destructor absl_optional absl_random_bit_gen_ref absl_random_distributions absl_random_random absl_span absl_status absl_statusor absl_str_format absl_strings absl_synchronization absl_time absl_type_traits absl_utility absl_variant gpr grpc" + "absl_algorithm_container absl_any_invocable absl_base absl_bind_front absl_check absl_cleanup absl_config absl_cord absl_core_headers absl_flags absl_flags_marshalling absl_flat_hash_map absl_flat_hash_set absl_function_ref absl_hash absl_inlined_vector absl_log absl_log_globals absl_log_severity absl_memory absl_no_destructor absl_optional absl_random_bit_gen_ref absl_random_distributions absl_random_random absl_span absl_status absl_statusor absl_str_format absl_strings absl_synchronization absl_time absl_type_traits absl_utility absl_variant gpr grpc" "libcares openssl re2 zlib" "-lgrpc++" "-laddress_sorting -lupb_textformat_lib -lupb_json_lib -lupb_message_lib -lupb_mem_lib -lupb_base_lib -lutf8_range_lib" @@ -36864,7 +37010,7 @@ generate_pkgconfig( "gRPC++ unsecure" "C++ wrapper for gRPC without SSL" "${gRPC_CPP_VERSION}" - "absl_algorithm_container absl_any_invocable absl_base absl_bind_front absl_cleanup absl_config absl_cord absl_core_headers absl_flags absl_flags_marshalling absl_flat_hash_map absl_flat_hash_set absl_function_ref absl_hash absl_inlined_vector absl_log absl_log_severity absl_memory absl_no_destructor absl_optional absl_random_bit_gen_ref absl_random_distributions absl_random_random absl_span absl_status absl_statusor absl_str_format absl_strings absl_synchronization absl_time absl_type_traits absl_utility absl_variant gpr grpc_unsecure" + "absl_algorithm_container absl_any_invocable absl_base absl_bind_front absl_check absl_cleanup absl_config absl_cord absl_core_headers absl_flags absl_flags_marshalling absl_flat_hash_map absl_flat_hash_set absl_function_ref absl_hash absl_inlined_vector absl_log absl_log_globals absl_log_severity absl_memory absl_no_destructor absl_optional absl_random_bit_gen_ref absl_random_distributions absl_random_random absl_span absl_status absl_statusor absl_str_format absl_strings absl_synchronization absl_time absl_type_traits absl_utility absl_variant gpr grpc_unsecure" "libcares zlib" "-lgrpc++_unsecure" "-laddress_sorting -lupb_message_lib -lupb_mem_lib -lupb_base_lib -lutf8_range_lib" diff --git a/MAINTAINERS.md b/MAINTAINERS.md index 6d868d6bc27..5c36c24f156 100644 --- a/MAINTAINERS.md +++ b/MAINTAINERS.md @@ -40,6 +40,7 @@ for general contribution guidelines. - [vishalpowar](https://github.com/vishalpowar), Google LLC - [wenbozhu](https://github.com/wenbozhu), Google LLC - [yashykt](https://github.com/yashykt), Google LLC +- [yijiem](https://github.com/yijiem), Google LLC - [ZhouyihaiDing](https://github.com/ZhouyihaiDing), Google LLC diff --git a/Makefile b/Makefile index 30be778e03d..5e22b66b5ee 100644 --- a/Makefile +++ b/Makefile @@ -367,8 +367,8 @@ E = @echo Q = @ endif -CORE_VERSION = 40.0.0 -CPP_VERSION = 1.64.0-dev +CORE_VERSION = 41.0.0 +CPP_VERSION = 1.65.0-dev CPPFLAGS_NO_ARCH += $(addprefix -I, $(INCLUDES)) $(addprefix -D, $(DEFINES)) CPPFLAGS += $(CPPFLAGS_NO_ARCH) $(ARCH_FLAGS) @@ -404,7 +404,7 @@ SHARED_EXT_CORE = dll SHARED_EXT_CPP = dll SHARED_PREFIX = -SHARED_VERSION_CORE = -40 +SHARED_VERSION_CORE = -41 SHARED_VERSION_CPP = -1 else ifeq ($(SYSTEM),Darwin) EXECUTABLE_SUFFIX = @@ -666,8 +666,10 @@ clean: # deps: ['cares', 'libssl', 'z'] # transitive_deps: ['cares', 'libssl', 'z'] LIBGRPC_SRC = \ + src/core/channelz/channel_trace.cc \ + src/core/channelz/channelz.cc \ + src/core/channelz/channelz_registry.cc \ src/core/client_channel/backup_poller.cc \ - src/core/client_channel/client_channel_channelz.cc \ src/core/client_channel/client_channel_factory.cc \ src/core/client_channel/client_channel_filter.cc \ src/core/client_channel/client_channel_plugin.cc \ @@ -675,7 +677,6 @@ LIBGRPC_SRC = \ src/core/client_channel/config_selector.cc \ src/core/client_channel/dynamic_filters.cc \ src/core/client_channel/global_subchannel_pool.cc \ - src/core/client_channel/http_proxy_mapper.cc \ src/core/client_channel/local_subchannel_pool.cc \ src/core/client_channel/retry_filter.cc \ src/core/client_channel/retry_filter_legacy_call_data.cc \ @@ -688,7 +689,6 @@ LIBGRPC_SRC = \ src/core/ext/filters/census/grpc_context.cc \ src/core/ext/filters/channel_idle/idle_filter_state.cc \ src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc \ - src/core/ext/filters/deadline/deadline_filter.cc \ src/core/ext/filters/fault_injection/fault_injection_filter.cc \ src/core/ext/filters/fault_injection/fault_injection_service_config_parser.cc \ src/core/ext/filters/http/client/http_client_filter.cc \ @@ -699,7 +699,6 @@ LIBGRPC_SRC = \ src/core/ext/filters/message_size/message_size_filter.cc \ src/core/ext/filters/rbac/rbac_filter.cc \ src/core/ext/filters/rbac/rbac_service_config_parser.cc \ - src/core/ext/filters/server_config_selector/server_config_selector_filter.cc \ src/core/ext/filters/stateful_session/stateful_session_filter.cc \ src/core/ext/filters/stateful_session/stateful_session_service_config_parser.cc \ src/core/ext/gcp/metadata_query.cc \ @@ -1055,32 +1054,16 @@ LIBGRPC_SRC = \ src/core/ext/upbdefs-gen/xds/type/v3/cel.upbdefs.c \ src/core/ext/upbdefs-gen/xds/type/v3/range.upbdefs.c \ src/core/ext/upbdefs-gen/xds/type/v3/typed_struct.upbdefs.c \ - src/core/ext/xds/certificate_provider_store.cc \ - src/core/ext/xds/file_watcher_certificate_provider_factory.cc \ - src/core/ext/xds/xds_api.cc \ - src/core/ext/xds/xds_audit_logger_registry.cc \ - src/core/ext/xds/xds_bootstrap.cc \ - src/core/ext/xds/xds_bootstrap_grpc.cc \ - src/core/ext/xds/xds_certificate_provider.cc \ - src/core/ext/xds/xds_channel_stack_modifier.cc \ - src/core/ext/xds/xds_client.cc \ - src/core/ext/xds/xds_client_grpc.cc \ - src/core/ext/xds/xds_client_stats.cc \ - src/core/ext/xds/xds_cluster.cc \ - src/core/ext/xds/xds_cluster_specifier_plugin.cc \ - src/core/ext/xds/xds_common_types.cc \ - src/core/ext/xds/xds_endpoint.cc \ - src/core/ext/xds/xds_health_status.cc \ - src/core/ext/xds/xds_http_fault_filter.cc \ - src/core/ext/xds/xds_http_filters.cc \ - src/core/ext/xds/xds_http_rbac_filter.cc \ - src/core/ext/xds/xds_http_stateful_session_filter.cc \ - src/core/ext/xds/xds_lb_policy_registry.cc \ - src/core/ext/xds/xds_listener.cc \ - src/core/ext/xds/xds_route_config.cc \ - src/core/ext/xds/xds_routing.cc \ - src/core/ext/xds/xds_server_config_fetcher.cc \ - src/core/ext/xds/xds_transport_grpc.cc \ + src/core/handshaker/endpoint_info/endpoint_info_handshaker.cc \ + src/core/handshaker/handshaker.cc \ + src/core/handshaker/handshaker_registry.cc \ + src/core/handshaker/http_connect/http_connect_handshaker.cc \ + src/core/handshaker/http_connect/http_proxy_mapper.cc \ + src/core/handshaker/proxy_mapper_registry.cc \ + src/core/handshaker/security/secure_endpoint.cc \ + src/core/handshaker/security/security_handshaker.cc \ + src/core/handshaker/security/tsi_error.cc \ + src/core/handshaker/tcp_connect/tcp_connect_handshaker.cc \ src/core/lib/address_utils/parse_address.cc \ src/core/lib/address_utils/sockaddr_utils.cc \ src/core/lib/backoff/backoff.cc \ @@ -1092,13 +1075,9 @@ LIBGRPC_SRC = \ src/core/lib/channel/channel_stack_builder.cc \ src/core/lib/channel/channel_stack_builder_impl.cc \ src/core/lib/channel/channel_stack_trace.cc \ - src/core/lib/channel/channel_trace.cc \ - src/core/lib/channel/channelz.cc \ - src/core/lib/channel/channelz_registry.cc \ src/core/lib/channel/connected_channel.cc \ src/core/lib/channel/metrics.cc \ src/core/lib/channel/promise_based_filter.cc \ - src/core/lib/channel/server_call_tracer_filter.cc \ src/core/lib/channel/status_util.cc \ src/core/lib/compression/compression.cc \ src/core/lib/compression/compression_internal.cc \ @@ -1162,32 +1141,6 @@ LIBGRPC_SRC = \ src/core/lib/event_engine/work_queue/basic_work_queue.cc \ src/core/lib/experiments/config.cc \ src/core/lib/experiments/experiments.cc \ - src/core/lib/gpr/alloc.cc \ - src/core/lib/gpr/android/log.cc \ - src/core/lib/gpr/atm.cc \ - src/core/lib/gpr/iphone/cpu.cc \ - src/core/lib/gpr/linux/cpu.cc \ - src/core/lib/gpr/linux/log.cc \ - src/core/lib/gpr/log.cc \ - src/core/lib/gpr/msys/tmpfile.cc \ - src/core/lib/gpr/posix/cpu.cc \ - src/core/lib/gpr/posix/log.cc \ - src/core/lib/gpr/posix/string.cc \ - src/core/lib/gpr/posix/sync.cc \ - src/core/lib/gpr/posix/time.cc \ - src/core/lib/gpr/posix/tmpfile.cc \ - src/core/lib/gpr/string.cc \ - src/core/lib/gpr/sync.cc \ - src/core/lib/gpr/sync_abseil.cc \ - src/core/lib/gpr/time.cc \ - src/core/lib/gpr/time_precise.cc \ - src/core/lib/gpr/windows/cpu.cc \ - src/core/lib/gpr/windows/log.cc \ - src/core/lib/gpr/windows/string.cc \ - src/core/lib/gpr/windows/string_util.cc \ - src/core/lib/gpr/windows/sync.cc \ - src/core/lib/gpr/windows/time.cc \ - src/core/lib/gpr/windows/tmpfile.cc \ src/core/lib/gprpp/crash.cc \ src/core/lib/gprpp/examine_stack.cc \ src/core/lib/gprpp/fork.cc \ @@ -1214,7 +1167,6 @@ LIBGRPC_SRC = \ src/core/lib/gprpp/windows/stat.cc \ src/core/lib/gprpp/windows/thd.cc \ src/core/lib/gprpp/work_serializer.cc \ - src/core/lib/handshaker/proxy_mapper_registry.cc \ src/core/lib/http/format_request.cc \ src/core/lib/http/httpcli.cc \ src/core/lib/http/httpcli_security_connector.cc \ @@ -1373,10 +1325,7 @@ LIBGRPC_SRC = \ src/core/lib/security/security_connector/ssl_utils.cc \ src/core/lib/security/security_connector/tls/tls_security_connector.cc \ src/core/lib/security/transport/client_auth_filter.cc \ - src/core/lib/security/transport/secure_endpoint.cc \ - src/core/lib/security/transport/security_handshaker.cc \ src/core/lib/security/transport/server_auth_filter.cc \ - src/core/lib/security/transport/tsi_error.cc \ src/core/lib/security/util/json_util.cc \ src/core/lib/slice/percent_encoding.cc \ src/core/lib/slice/slice.cc \ @@ -1401,29 +1350,24 @@ LIBGRPC_SRC = \ src/core/lib/surface/lame_client.cc \ src/core/lib/surface/legacy_channel.cc \ src/core/lib/surface/metadata_array.cc \ - src/core/lib/surface/server.cc \ src/core/lib/surface/validate_metadata.cc \ src/core/lib/surface/version.cc \ src/core/lib/surface/wait_for_cq_end_op.cc \ src/core/lib/transport/batch_builder.cc \ src/core/lib/transport/bdp_estimator.cc \ + src/core/lib/transport/call_arena_allocator.cc \ src/core/lib/transport/call_filters.cc \ src/core/lib/transport/call_final_info.cc \ - src/core/lib/transport/call_size_estimator.cc \ src/core/lib/transport/call_spine.cc \ src/core/lib/transport/connectivity_state.cc \ - src/core/lib/transport/endpoint_info_handshaker.cc \ src/core/lib/transport/error_utils.cc \ - src/core/lib/transport/handshaker.cc \ - src/core/lib/transport/handshaker_registry.cc \ - src/core/lib/transport/http_connect_handshaker.cc \ + src/core/lib/transport/interception_chain.cc \ src/core/lib/transport/message.cc \ src/core/lib/transport/metadata.cc \ src/core/lib/transport/metadata_batch.cc \ src/core/lib/transport/metadata_info.cc \ src/core/lib/transport/parsed_metadata.cc \ src/core/lib/transport/status_conversion.cc \ - src/core/lib/transport/tcp_connect_handshaker.cc \ src/core/lib/transport/timeout_encoding.cc \ src/core/lib/transport/transport.cc \ src/core/lib/transport/transport_op_string.cc \ @@ -1478,6 +1422,11 @@ LIBGRPC_SRC = \ src/core/resolver/xds/xds_dependency_manager.cc \ src/core/resolver/xds/xds_resolver.cc \ src/core/resolver/xds/xds_resolver_trace.cc \ + src/core/server/server.cc \ + src/core/server/server_call_tracer_filter.cc \ + src/core/server/server_config_selector_filter.cc \ + src/core/server/xds_channel_stack_modifier.cc \ + src/core/server/xds_server_config_fetcher.cc \ src/core/service_config/service_config_channel_arg_filter.cc \ src/core/service_config/service_config_impl.cc \ src/core/service_config/service_config_parser.cc \ @@ -1510,6 +1459,56 @@ LIBGRPC_SRC = \ src/core/tsi/ssl_transport_security_utils.cc \ src/core/tsi/transport_security.cc \ src/core/tsi/transport_security_grpc.cc \ + src/core/util/alloc.cc \ + src/core/util/android/log.cc \ + src/core/util/atm.cc \ + src/core/util/iphone/cpu.cc \ + src/core/util/linux/cpu.cc \ + src/core/util/linux/log.cc \ + src/core/util/log.cc \ + src/core/util/msys/tmpfile.cc \ + src/core/util/posix/cpu.cc \ + src/core/util/posix/log.cc \ + src/core/util/posix/string.cc \ + src/core/util/posix/sync.cc \ + src/core/util/posix/time.cc \ + src/core/util/posix/tmpfile.cc \ + src/core/util/string.cc \ + src/core/util/sync.cc \ + src/core/util/sync_abseil.cc \ + src/core/util/time.cc \ + src/core/util/time_precise.cc \ + src/core/util/windows/cpu.cc \ + src/core/util/windows/log.cc \ + src/core/util/windows/string.cc \ + src/core/util/windows/string_util.cc \ + src/core/util/windows/sync.cc \ + src/core/util/windows/time.cc \ + src/core/util/windows/tmpfile.cc \ + src/core/xds/grpc/certificate_provider_store.cc \ + src/core/xds/grpc/file_watcher_certificate_provider_factory.cc \ + src/core/xds/grpc/xds_audit_logger_registry.cc \ + src/core/xds/grpc/xds_bootstrap_grpc.cc \ + src/core/xds/grpc/xds_certificate_provider.cc \ + src/core/xds/grpc/xds_client_grpc.cc \ + src/core/xds/grpc/xds_cluster.cc \ + src/core/xds/grpc/xds_cluster_specifier_plugin.cc \ + src/core/xds/grpc/xds_common_types.cc \ + src/core/xds/grpc/xds_endpoint.cc \ + src/core/xds/grpc/xds_health_status.cc \ + src/core/xds/grpc/xds_http_fault_filter.cc \ + src/core/xds/grpc/xds_http_filters.cc \ + src/core/xds/grpc/xds_http_rbac_filter.cc \ + src/core/xds/grpc/xds_http_stateful_session_filter.cc \ + src/core/xds/grpc/xds_lb_policy_registry.cc \ + src/core/xds/grpc/xds_listener.cc \ + src/core/xds/grpc/xds_route_config.cc \ + src/core/xds/grpc/xds_routing.cc \ + src/core/xds/grpc/xds_transport_grpc.cc \ + src/core/xds/xds_client/xds_api.cc \ + src/core/xds/xds_client/xds_bootstrap.cc \ + src/core/xds/xds_client/xds_client.cc \ + src/core/xds/xds_client/xds_client_stats.cc \ third_party/abseil-cpp/absl/base/internal/cycleclock.cc \ third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc \ third_party/abseil-cpp/absl/base/internal/raw_logging.cc \ @@ -1551,6 +1550,7 @@ LIBGRPC_SRC = \ third_party/abseil-cpp/absl/hash/internal/hash.cc \ third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc \ third_party/abseil-cpp/absl/log/globals.cc \ + third_party/abseil-cpp/absl/log/internal/check_op.cc \ third_party/abseil-cpp/absl/log/internal/conditions.cc \ third_party/abseil-cpp/absl/log/internal/fnmatch.cc \ third_party/abseil-cpp/absl/log/internal/globals.cc \ @@ -1776,6 +1776,7 @@ PUBLIC_HEADERS_C += \ include/grpc/impl/propagation_bits.h \ include/grpc/impl/slice_type.h \ include/grpc/load_reporting.h \ + include/grpc/passive_listener.h \ include/grpc/slice.h \ include/grpc/slice_buffer.h \ include/grpc/status.h \ @@ -1836,8 +1837,8 @@ $(LIBDIR)/$(CONFIG)/libgrpc$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE): $(LIBGRPC_ ifeq ($(SYSTEM),Darwin) $(Q) $(LDXX) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -install_name $(SHARED_PREFIX)grpc$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) -dynamiclib -o $(LIBDIR)/$(CONFIG)/libgrpc$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBGRPC_OBJS) $(LIBDIR)/$(CONFIG)/libcares.a $(OPENSSL_MERGE_LIBS) $(ZLIB_MERGE_LIBS) $(LDLIBS_SECURE) $(LDLIBS) else - $(Q) $(LDXX) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -shared -Wl,-soname,libgrpc.so.40 -o $(LIBDIR)/$(CONFIG)/libgrpc$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBGRPC_OBJS) $(LIBDIR)/$(CONFIG)/libcares.a $(OPENSSL_MERGE_LIBS) $(ZLIB_MERGE_LIBS) $(LDLIBS_SECURE) $(LDLIBS) - $(Q) ln -sf $(SHARED_PREFIX)grpc$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBDIR)/$(CONFIG)/libgrpc$(SHARED_VERSION_CORE).so.40 + $(Q) $(LDXX) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -shared -Wl,-soname,libgrpc.so.41 -o $(LIBDIR)/$(CONFIG)/libgrpc$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBGRPC_OBJS) $(LIBDIR)/$(CONFIG)/libcares.a $(OPENSSL_MERGE_LIBS) $(ZLIB_MERGE_LIBS) $(LDLIBS_SECURE) $(LDLIBS) + $(Q) ln -sf $(SHARED_PREFIX)grpc$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBDIR)/$(CONFIG)/libgrpc$(SHARED_VERSION_CORE).so.41 $(Q) ln -sf $(SHARED_PREFIX)grpc$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBDIR)/$(CONFIG)/libgrpc$(SHARED_VERSION_CORE).so endif endif @@ -1856,7 +1857,6 @@ endif # deps: [] # transitive_deps: [] LIBBORINGSSL_SRC = \ - third_party/boringssl-with-bazel/err_data.c \ third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c \ third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c \ third_party/boringssl-with-bazel/src/crypto/asn1/a_d2i_fp.c \ @@ -1947,6 +1947,8 @@ LIBBORINGSSL_SRC = \ third_party/boringssl-with-bazel/src/crypto/evp/evp.c \ third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c \ third_party/boringssl-with-bazel/src/crypto/evp/evp_ctx.c \ + third_party/boringssl-with-bazel/src/crypto/evp/p_dh.c \ + third_party/boringssl-with-bazel/src/crypto/evp/p_dh_asn1.c \ third_party/boringssl-with-bazel/src/crypto/evp/p_dsa_asn1.c \ third_party/boringssl-with-bazel/src/crypto/evp/p_ec.c \ third_party/boringssl-with-bazel/src/crypto/evp/p_ec_asn1.c \ @@ -2088,6 +2090,7 @@ LIBBORINGSSL_SRC = \ third_party/boringssl-with-bazel/src/crypto/x509/x_val.c \ third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c \ third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c \ + third_party/boringssl-with-bazel/src/gen/crypto/err_data.c \ third_party/boringssl-with-bazel/src/ssl/bio_ssl.cc \ third_party/boringssl-with-bazel/src/ssl/d1_both.cc \ third_party/boringssl-with-bazel/src/ssl/d1_lib.cc \ @@ -2109,6 +2112,7 @@ LIBBORINGSSL_SRC = \ third_party/boringssl-with-bazel/src/ssl/ssl_buffer.cc \ third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc \ third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc \ + third_party/boringssl-with-bazel/src/ssl/ssl_credential.cc \ third_party/boringssl-with-bazel/src/ssl/ssl_file.cc \ third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc \ third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc \ diff --git a/Package.swift b/Package.swift index ce9e5e1bed5..2cfe0e1798e 100644 --- a/Package.swift +++ b/Package.swift @@ -23,8 +23,8 @@ let package = Package( ], dependencies: [ - .package(url: "https://github.com/firebase/abseil-cpp-SwiftPM.git", "0.20230802.0"..<"0.20230803.0"), - .package(url: "https://github.com/firebase/boringssl-SwiftPM.git", "0.9.0"..<"0.10.0"), + .package(url: "https://github.com/firebase/abseil-cpp-SwiftPM.git", "0.20240116.1"..<"0.20240117.0"), + .package(url: "https://github.com/firebase/boringssl-SwiftPM.git", "0.32.0"..<"0.33.0"), ], targets: [ @@ -93,6 +93,7 @@ let package = Package( "include/grpc/impl/propagation_bits.h", "include/grpc/impl/slice_type.h", "include/grpc/load_reporting.h", + "include/grpc/passive_listener.h", "include/grpc/slice.h", "include/grpc/slice_buffer.h", "include/grpc/status.h", @@ -117,10 +118,14 @@ let package = Package( "include/grpc/support/thd_id.h", "include/grpc/support/time.h", "include/grpc/support/workaround_list.h", + "src/core/channelz/channel_trace.cc", + "src/core/channelz/channel_trace.h", + "src/core/channelz/channelz.cc", + "src/core/channelz/channelz.h", + "src/core/channelz/channelz_registry.cc", + "src/core/channelz/channelz_registry.h", "src/core/client_channel/backup_poller.cc", "src/core/client_channel/backup_poller.h", - "src/core/client_channel/client_channel_channelz.cc", - "src/core/client_channel/client_channel_channelz.h", "src/core/client_channel/client_channel_factory.cc", "src/core/client_channel/client_channel_factory.h", "src/core/client_channel/client_channel_filter.cc", @@ -136,8 +141,6 @@ let package = Package( "src/core/client_channel/dynamic_filters.h", "src/core/client_channel/global_subchannel_pool.cc", "src/core/client_channel/global_subchannel_pool.h", - "src/core/client_channel/http_proxy_mapper.cc", - "src/core/client_channel/http_proxy_mapper.h", "src/core/client_channel/local_subchannel_pool.cc", "src/core/client_channel/local_subchannel_pool.h", "src/core/client_channel/retry_filter.cc", @@ -163,8 +166,6 @@ let package = Package( "src/core/ext/filters/channel_idle/idle_filter_state.h", "src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc", "src/core/ext/filters/channel_idle/legacy_channel_idle_filter.h", - "src/core/ext/filters/deadline/deadline_filter.cc", - "src/core/ext/filters/deadline/deadline_filter.h", "src/core/ext/filters/fault_injection/fault_injection_filter.cc", "src/core/ext/filters/fault_injection/fault_injection_filter.h", "src/core/ext/filters/fault_injection/fault_injection_service_config_parser.cc", @@ -184,9 +185,6 @@ let package = Package( "src/core/ext/filters/rbac/rbac_filter.h", "src/core/ext/filters/rbac/rbac_service_config_parser.cc", "src/core/ext/filters/rbac/rbac_service_config_parser.h", - "src/core/ext/filters/server_config_selector/server_config_selector.h", - "src/core/ext/filters/server_config_selector/server_config_selector_filter.cc", - "src/core/ext/filters/server_config_selector/server_config_selector_filter.h", "src/core/ext/filters/stateful_session/stateful_session_filter.cc", "src/core/ext/filters/stateful_session/stateful_session_filter.h", "src/core/ext/filters/stateful_session/stateful_session_service_config_parser.cc", @@ -1062,63 +1060,28 @@ let package = Package( "src/core/ext/upbdefs-gen/xds/type/v3/range.upbdefs.h", "src/core/ext/upbdefs-gen/xds/type/v3/typed_struct.upbdefs.c", "src/core/ext/upbdefs-gen/xds/type/v3/typed_struct.upbdefs.h", - "src/core/ext/xds/certificate_provider_store.cc", - "src/core/ext/xds/certificate_provider_store.h", - "src/core/ext/xds/file_watcher_certificate_provider_factory.cc", - "src/core/ext/xds/file_watcher_certificate_provider_factory.h", - "src/core/ext/xds/upb_utils.h", - "src/core/ext/xds/xds_api.cc", - "src/core/ext/xds/xds_api.h", - "src/core/ext/xds/xds_audit_logger_registry.cc", - "src/core/ext/xds/xds_audit_logger_registry.h", - "src/core/ext/xds/xds_bootstrap.cc", - "src/core/ext/xds/xds_bootstrap.h", - "src/core/ext/xds/xds_bootstrap_grpc.cc", - "src/core/ext/xds/xds_bootstrap_grpc.h", - "src/core/ext/xds/xds_certificate_provider.cc", - "src/core/ext/xds/xds_certificate_provider.h", - "src/core/ext/xds/xds_channel_args.h", - "src/core/ext/xds/xds_channel_stack_modifier.cc", - "src/core/ext/xds/xds_channel_stack_modifier.h", - "src/core/ext/xds/xds_client.cc", - "src/core/ext/xds/xds_client.h", - "src/core/ext/xds/xds_client_grpc.cc", - "src/core/ext/xds/xds_client_grpc.h", - "src/core/ext/xds/xds_client_stats.cc", - "src/core/ext/xds/xds_client_stats.h", - "src/core/ext/xds/xds_cluster.cc", - "src/core/ext/xds/xds_cluster.h", - "src/core/ext/xds/xds_cluster_specifier_plugin.cc", - "src/core/ext/xds/xds_cluster_specifier_plugin.h", - "src/core/ext/xds/xds_common_types.cc", - "src/core/ext/xds/xds_common_types.h", - "src/core/ext/xds/xds_endpoint.cc", - "src/core/ext/xds/xds_endpoint.h", - "src/core/ext/xds/xds_health_status.cc", - "src/core/ext/xds/xds_health_status.h", - "src/core/ext/xds/xds_http_fault_filter.cc", - "src/core/ext/xds/xds_http_fault_filter.h", - "src/core/ext/xds/xds_http_filters.cc", - "src/core/ext/xds/xds_http_filters.h", - "src/core/ext/xds/xds_http_rbac_filter.cc", - "src/core/ext/xds/xds_http_rbac_filter.h", - "src/core/ext/xds/xds_http_stateful_session_filter.cc", - "src/core/ext/xds/xds_http_stateful_session_filter.h", - "src/core/ext/xds/xds_lb_policy_registry.cc", - "src/core/ext/xds/xds_lb_policy_registry.h", - "src/core/ext/xds/xds_listener.cc", - "src/core/ext/xds/xds_listener.h", - "src/core/ext/xds/xds_metrics.h", - "src/core/ext/xds/xds_resource_type.h", - "src/core/ext/xds/xds_resource_type_impl.h", - "src/core/ext/xds/xds_route_config.cc", - "src/core/ext/xds/xds_route_config.h", - "src/core/ext/xds/xds_routing.cc", - "src/core/ext/xds/xds_routing.h", - "src/core/ext/xds/xds_server_config_fetcher.cc", - "src/core/ext/xds/xds_transport.h", - "src/core/ext/xds/xds_transport_grpc.cc", - "src/core/ext/xds/xds_transport_grpc.h", + "src/core/handshaker/endpoint_info/endpoint_info_handshaker.cc", + "src/core/handshaker/endpoint_info/endpoint_info_handshaker.h", + "src/core/handshaker/handshaker.cc", + "src/core/handshaker/handshaker.h", + "src/core/handshaker/handshaker_factory.h", + "src/core/handshaker/handshaker_registry.cc", + "src/core/handshaker/handshaker_registry.h", + "src/core/handshaker/http_connect/http_connect_handshaker.cc", + "src/core/handshaker/http_connect/http_connect_handshaker.h", + "src/core/handshaker/http_connect/http_proxy_mapper.cc", + "src/core/handshaker/http_connect/http_proxy_mapper.h", + "src/core/handshaker/proxy_mapper.h", + "src/core/handshaker/proxy_mapper_registry.cc", + "src/core/handshaker/proxy_mapper_registry.h", + "src/core/handshaker/security/secure_endpoint.cc", + "src/core/handshaker/security/secure_endpoint.h", + "src/core/handshaker/security/security_handshaker.cc", + "src/core/handshaker/security/security_handshaker.h", + "src/core/handshaker/security/tsi_error.cc", + "src/core/handshaker/security/tsi_error.h", + "src/core/handshaker/tcp_connect/tcp_connect_handshaker.cc", + "src/core/handshaker/tcp_connect/tcp_connect_handshaker.h", "src/core/lib/address_utils/parse_address.cc", "src/core/lib/address_utils/parse_address.h", "src/core/lib/address_utils/sockaddr_utils.cc", @@ -1144,12 +1107,6 @@ let package = Package( "src/core/lib/channel/channel_stack_builder_impl.h", "src/core/lib/channel/channel_stack_trace.cc", "src/core/lib/channel/channel_stack_trace.h", - "src/core/lib/channel/channel_trace.cc", - "src/core/lib/channel/channel_trace.h", - "src/core/lib/channel/channelz.cc", - "src/core/lib/channel/channelz.h", - "src/core/lib/channel/channelz_registry.cc", - "src/core/lib/channel/channelz_registry.h", "src/core/lib/channel/connected_channel.cc", "src/core/lib/channel/connected_channel.h", "src/core/lib/channel/context.h", @@ -1157,8 +1114,6 @@ let package = Package( "src/core/lib/channel/metrics.h", "src/core/lib/channel/promise_based_filter.cc", "src/core/lib/channel/promise_based_filter.h", - "src/core/lib/channel/server_call_tracer_filter.cc", - "src/core/lib/channel/server_call_tracer_filter.h", "src/core/lib/channel/status_util.cc", "src/core/lib/channel/status_util.h", "src/core/lib/channel/tcp_tracer.h", @@ -1300,39 +1255,6 @@ let package = Package( "src/core/lib/experiments/config.h", "src/core/lib/experiments/experiments.cc", "src/core/lib/experiments/experiments.h", - "src/core/lib/gpr/alloc.cc", - "src/core/lib/gpr/alloc.h", - "src/core/lib/gpr/android/log.cc", - "src/core/lib/gpr/atm.cc", - "src/core/lib/gpr/iphone/cpu.cc", - "src/core/lib/gpr/linux/cpu.cc", - "src/core/lib/gpr/linux/log.cc", - "src/core/lib/gpr/log.cc", - "src/core/lib/gpr/log_internal.h", - "src/core/lib/gpr/msys/tmpfile.cc", - "src/core/lib/gpr/posix/cpu.cc", - "src/core/lib/gpr/posix/log.cc", - "src/core/lib/gpr/posix/string.cc", - "src/core/lib/gpr/posix/sync.cc", - "src/core/lib/gpr/posix/time.cc", - "src/core/lib/gpr/posix/tmpfile.cc", - "src/core/lib/gpr/spinlock.h", - "src/core/lib/gpr/string.cc", - "src/core/lib/gpr/string.h", - "src/core/lib/gpr/sync.cc", - "src/core/lib/gpr/sync_abseil.cc", - "src/core/lib/gpr/time.cc", - "src/core/lib/gpr/time_precise.cc", - "src/core/lib/gpr/time_precise.h", - "src/core/lib/gpr/tmpfile.h", - "src/core/lib/gpr/useful.h", - "src/core/lib/gpr/windows/cpu.cc", - "src/core/lib/gpr/windows/log.cc", - "src/core/lib/gpr/windows/string.cc", - "src/core/lib/gpr/windows/string_util.cc", - "src/core/lib/gpr/windows/sync.cc", - "src/core/lib/gpr/windows/time.cc", - "src/core/lib/gpr/windows/tmpfile.cc", "src/core/lib/gprpp/atomic_utils.h", "src/core/lib/gprpp/bitset.h", "src/core/lib/gprpp/chunked_vector.h", @@ -1406,9 +1328,6 @@ let package = Package( "src/core/lib/gprpp/work_serializer.cc", "src/core/lib/gprpp/work_serializer.h", "src/core/lib/gprpp/xxhash_inline.h", - "src/core/lib/handshaker/proxy_mapper.h", - "src/core/lib/handshaker/proxy_mapper_registry.cc", - "src/core/lib/handshaker/proxy_mapper_registry.h", "src/core/lib/http/format_request.cc", "src/core/lib/http/format_request.h", "src/core/lib/http/httpcli.cc", @@ -1740,13 +1659,7 @@ let package = Package( "src/core/lib/security/security_connector/tls/tls_security_connector.h", "src/core/lib/security/transport/auth_filters.h", "src/core/lib/security/transport/client_auth_filter.cc", - "src/core/lib/security/transport/secure_endpoint.cc", - "src/core/lib/security/transport/secure_endpoint.h", - "src/core/lib/security/transport/security_handshaker.cc", - "src/core/lib/security/transport/security_handshaker.h", "src/core/lib/security/transport/server_auth_filter.cc", - "src/core/lib/security/transport/tsi_error.cc", - "src/core/lib/security/transport/tsi_error.h", "src/core/lib/security/util/json_util.cc", "src/core/lib/security/util/json_util.h", "src/core/lib/slice/percent_encoding.cc", @@ -1793,9 +1706,6 @@ let package = Package( "src/core/lib/surface/legacy_channel.cc", "src/core/lib/surface/legacy_channel.h", "src/core/lib/surface/metadata_array.cc", - "src/core/lib/surface/server.cc", - "src/core/lib/surface/server.h", - "src/core/lib/surface/server_interface.h", "src/core/lib/surface/validate_metadata.cc", "src/core/lib/surface/validate_metadata.h", "src/core/lib/surface/version.cc", @@ -1805,29 +1715,23 @@ let package = Package( "src/core/lib/transport/batch_builder.h", "src/core/lib/transport/bdp_estimator.cc", "src/core/lib/transport/bdp_estimator.h", + "src/core/lib/transport/call_arena_allocator.cc", + "src/core/lib/transport/call_arena_allocator.h", + "src/core/lib/transport/call_destination.h", "src/core/lib/transport/call_filters.cc", "src/core/lib/transport/call_filters.h", "src/core/lib/transport/call_final_info.cc", "src/core/lib/transport/call_final_info.h", - "src/core/lib/transport/call_size_estimator.cc", - "src/core/lib/transport/call_size_estimator.h", "src/core/lib/transport/call_spine.cc", "src/core/lib/transport/call_spine.h", "src/core/lib/transport/connectivity_state.cc", "src/core/lib/transport/connectivity_state.h", "src/core/lib/transport/custom_metadata.h", - "src/core/lib/transport/endpoint_info_handshaker.cc", - "src/core/lib/transport/endpoint_info_handshaker.h", "src/core/lib/transport/error_utils.cc", "src/core/lib/transport/error_utils.h", - "src/core/lib/transport/handshaker.cc", - "src/core/lib/transport/handshaker.h", - "src/core/lib/transport/handshaker_factory.h", - "src/core/lib/transport/handshaker_registry.cc", - "src/core/lib/transport/handshaker_registry.h", "src/core/lib/transport/http2_errors.h", - "src/core/lib/transport/http_connect_handshaker.cc", - "src/core/lib/transport/http_connect_handshaker.h", + "src/core/lib/transport/interception_chain.cc", + "src/core/lib/transport/interception_chain.h", "src/core/lib/transport/message.cc", "src/core/lib/transport/message.h", "src/core/lib/transport/metadata.cc", @@ -1842,8 +1746,6 @@ let package = Package( "src/core/lib/transport/simple_slice_based_metadata.h", "src/core/lib/transport/status_conversion.cc", "src/core/lib/transport/status_conversion.h", - "src/core/lib/transport/tcp_connect_handshaker.cc", - "src/core/lib/transport/tcp_connect_handshaker.h", "src/core/lib/transport/timeout_encoding.cc", "src/core/lib/transport/timeout_encoding.h", "src/core/lib/transport/transport.cc", @@ -1946,6 +1848,17 @@ let package = Package( "src/core/resolver/xds/xds_resolver_attributes.h", "src/core/resolver/xds/xds_resolver_trace.cc", "src/core/resolver/xds/xds_resolver_trace.h", + "src/core/server/server.cc", + "src/core/server/server.h", + "src/core/server/server_call_tracer_filter.cc", + "src/core/server/server_call_tracer_filter.h", + "src/core/server/server_config_selector.h", + "src/core/server/server_config_selector_filter.cc", + "src/core/server/server_config_selector_filter.h", + "src/core/server/server_interface.h", + "src/core/server/xds_channel_stack_modifier.cc", + "src/core/server/xds_channel_stack_modifier.h", + "src/core/server/xds_server_config_fetcher.cc", "src/core/service_config/service_config.h", "src/core/service_config/service_config_call_data.h", "src/core/service_config/service_config_channel_arg_filter.cc", @@ -2011,6 +1924,92 @@ let package = Package( "src/core/tsi/transport_security_grpc.cc", "src/core/tsi/transport_security_grpc.h", "src/core/tsi/transport_security_interface.h", + "src/core/util/alloc.cc", + "src/core/util/alloc.h", + "src/core/util/android/log.cc", + "src/core/util/atm.cc", + "src/core/util/iphone/cpu.cc", + "src/core/util/linux/cpu.cc", + "src/core/util/linux/log.cc", + "src/core/util/log.cc", + "src/core/util/msys/tmpfile.cc", + "src/core/util/posix/cpu.cc", + "src/core/util/posix/log.cc", + "src/core/util/posix/string.cc", + "src/core/util/posix/sync.cc", + "src/core/util/posix/time.cc", + "src/core/util/posix/tmpfile.cc", + "src/core/util/spinlock.h", + "src/core/util/string.cc", + "src/core/util/string.h", + "src/core/util/sync.cc", + "src/core/util/sync_abseil.cc", + "src/core/util/time.cc", + "src/core/util/time_precise.cc", + "src/core/util/time_precise.h", + "src/core/util/tmpfile.h", + "src/core/util/useful.h", + "src/core/util/windows/cpu.cc", + "src/core/util/windows/log.cc", + "src/core/util/windows/string.cc", + "src/core/util/windows/string_util.cc", + "src/core/util/windows/sync.cc", + "src/core/util/windows/time.cc", + "src/core/util/windows/tmpfile.cc", + "src/core/xds/grpc/certificate_provider_store.cc", + "src/core/xds/grpc/certificate_provider_store.h", + "src/core/xds/grpc/file_watcher_certificate_provider_factory.cc", + "src/core/xds/grpc/file_watcher_certificate_provider_factory.h", + "src/core/xds/grpc/upb_utils.h", + "src/core/xds/grpc/xds_audit_logger_registry.cc", + "src/core/xds/grpc/xds_audit_logger_registry.h", + "src/core/xds/grpc/xds_bootstrap_grpc.cc", + "src/core/xds/grpc/xds_bootstrap_grpc.h", + "src/core/xds/grpc/xds_certificate_provider.cc", + "src/core/xds/grpc/xds_certificate_provider.h", + "src/core/xds/grpc/xds_client_grpc.cc", + "src/core/xds/grpc/xds_client_grpc.h", + "src/core/xds/grpc/xds_cluster.cc", + "src/core/xds/grpc/xds_cluster.h", + "src/core/xds/grpc/xds_cluster_specifier_plugin.cc", + "src/core/xds/grpc/xds_cluster_specifier_plugin.h", + "src/core/xds/grpc/xds_common_types.cc", + "src/core/xds/grpc/xds_common_types.h", + "src/core/xds/grpc/xds_endpoint.cc", + "src/core/xds/grpc/xds_endpoint.h", + "src/core/xds/grpc/xds_health_status.cc", + "src/core/xds/grpc/xds_health_status.h", + "src/core/xds/grpc/xds_http_fault_filter.cc", + "src/core/xds/grpc/xds_http_fault_filter.h", + "src/core/xds/grpc/xds_http_filters.cc", + "src/core/xds/grpc/xds_http_filters.h", + "src/core/xds/grpc/xds_http_rbac_filter.cc", + "src/core/xds/grpc/xds_http_rbac_filter.h", + "src/core/xds/grpc/xds_http_stateful_session_filter.cc", + "src/core/xds/grpc/xds_http_stateful_session_filter.h", + "src/core/xds/grpc/xds_lb_policy_registry.cc", + "src/core/xds/grpc/xds_lb_policy_registry.h", + "src/core/xds/grpc/xds_listener.cc", + "src/core/xds/grpc/xds_listener.h", + "src/core/xds/grpc/xds_route_config.cc", + "src/core/xds/grpc/xds_route_config.h", + "src/core/xds/grpc/xds_routing.cc", + "src/core/xds/grpc/xds_routing.h", + "src/core/xds/grpc/xds_transport_grpc.cc", + "src/core/xds/grpc/xds_transport_grpc.h", + "src/core/xds/xds_client/xds_api.cc", + "src/core/xds/xds_client/xds_api.h", + "src/core/xds/xds_client/xds_bootstrap.cc", + "src/core/xds/xds_client/xds_bootstrap.h", + "src/core/xds/xds_client/xds_channel_args.h", + "src/core/xds/xds_client/xds_client.cc", + "src/core/xds/xds_client/xds_client.h", + "src/core/xds/xds_client/xds_client_stats.cc", + "src/core/xds/xds_client/xds_client_stats.h", + "src/core/xds/xds_client/xds_metrics.h", + "src/core/xds/xds_client/xds_resource_type.h", + "src/core/xds/xds_client/xds_resource_type_impl.h", + "src/core/xds/xds_client/xds_transport.h", "third_party/re2/re2/bitmap256.h", "third_party/re2/re2/bitstate.cc", "third_party/re2/re2/compile.cc", diff --git a/_metadata.py b/_metadata.py index 7b93f833ee6..448129f21db 100644 --- a/_metadata.py +++ b/_metadata.py @@ -14,4 +14,4 @@ # AUTO-GENERATED FROM `$REPO_ROOT/templates/_metadata.py.template`!!! -__version__ = """1.64.0.dev0""" +__version__ = """1.65.0.dev0""" diff --git a/bazel/experiments.bzl b/bazel/experiments.bzl index 5ec650beff7..ac49a39656e 100644 --- a/bazel/experiments.bzl +++ b/bazel/experiments.bzl @@ -31,12 +31,10 @@ EXPERIMENT_ENABLES = { "monitoring_experiment": "monitoring_experiment", "multiping": "multiping", "peer_state_based_framing": "peer_state_based_framing", - "pending_queue_cap": "pending_queue_cap", "pick_first_new": "pick_first_new", "promise_based_client_call": "event_engine_client,event_engine_listener,promise_based_client_call", - "promise_based_server_call": "promise_based_server_call", - "chaotic_good": "chaotic_good,event_engine_client,event_engine_listener,promise_based_client_call,promise_based_server_call", - "promise_based_inproc_transport": "event_engine_client,event_engine_listener,promise_based_client_call,promise_based_inproc_transport,promise_based_server_call", + "chaotic_good": "chaotic_good,event_engine_client,event_engine_listener,promise_based_client_call", + "promise_based_inproc_transport": "event_engine_client,event_engine_listener,promise_based_client_call,promise_based_inproc_transport", "rstpit": "rstpit", "schedule_cancellation_over_write": "schedule_cancellation_over_write", "server_privacy": "server_privacy", @@ -59,12 +57,6 @@ EXPERIMENTS = { "dbg": { }, "off": { - "core_end2end_test": [ - "promise_based_server_call", - ], - "cpp_end2end_test": [ - "promise_based_server_call", - ], "endpoint_test": [ "tcp_frame_size_tuning", "tcp_rcv_lowat", @@ -76,27 +68,25 @@ EXPERIMENTS = { "tcp_frame_size_tuning", "tcp_rcv_lowat", ], - "logging_test": [ - "promise_based_server_call", - ], "resource_quota_test": [ "free_large_allocator", "unconstrained_max_quota_buffer_size", ], - "xds_end2end_test": [ - "promise_based_server_call", - ], }, "on": { "cancel_ares_query_test": [ "event_engine_dns", ], "core_end2end_test": [ + "event_engine_client", "event_engine_listener", ], "cpp_lb_end2end_test": [ "pick_first_new", ], + "event_engine_client_test": [ + "event_engine_client", + ], "event_engine_listener_test": [ "event_engine_listener", ], @@ -115,12 +105,6 @@ EXPERIMENTS = { "dbg": { }, "off": { - "core_end2end_test": [ - "promise_based_server_call", - ], - "cpp_end2end_test": [ - "promise_based_server_call", - ], "endpoint_test": [ "tcp_frame_size_tuning", "tcp_rcv_lowat", @@ -132,16 +116,10 @@ EXPERIMENTS = { "tcp_frame_size_tuning", "tcp_rcv_lowat", ], - "logging_test": [ - "promise_based_server_call", - ], "resource_quota_test": [ "free_large_allocator", "unconstrained_max_quota_buffer_size", ], - "xds_end2end_test": [ - "promise_based_server_call", - ], }, "on": { "cpp_lb_end2end_test": [ @@ -163,10 +141,6 @@ EXPERIMENTS = { "chaotic_good", "event_engine_client", "promise_based_client_call", - "promise_based_server_call", - ], - "cpp_end2end_test": [ - "promise_based_server_call", ], "endpoint_test": [ "tcp_frame_size_tuning", @@ -185,16 +159,10 @@ EXPERIMENTS = { "lame_client_test": [ "promise_based_client_call", ], - "logging_test": [ - "promise_based_server_call", - ], "resource_quota_test": [ "free_large_allocator", "unconstrained_max_quota_buffer_size", ], - "xds_end2end_test": [ - "promise_based_server_call", - ], }, "on": { "cancel_ares_query_test": [ diff --git a/bazel/grpc_build_system.bzl b/bazel/grpc_build_system.bzl index 54bb074ab2e..77756c28287 100644 --- a/bazel/grpc_build_system.bzl +++ b/bazel/grpc_build_system.bzl @@ -106,11 +106,14 @@ def _update_visibility(visibility): "debug_location": PRIVATE, "endpoint_tests": PRIVATE, "exec_ctx": PRIVATE, + "gpr_public_hdrs": PRIVATE, "grpclb": PRIVATE, "grpc_experiments": PRIVATE, "grpc_opencensus_plugin": PUBLIC, + "grpc_public_hdrs": PRIVATE, "grpcpp_gcp_observability": PUBLIC, "grpc_resolver_fake": PRIVATE, + "grpc++_public_hdrs": PUBLIC, "grpc++_test": PRIVATE, "http": PRIVATE, "httpcli": PRIVATE, @@ -536,7 +539,7 @@ def grpc_cc_test(name, srcs = [], deps = [], external_deps = [], args = [], data if language.upper() == "C": copts = copts + if_not_windows(["-std=c11"]) - core_deps = deps + _get_external_deps(external_deps) + ["//test/core/util:grpc_suppressions"] + core_deps = deps + _get_external_deps(external_deps) + ["//test/core/test_util:grpc_suppressions"] # Test args for all tests test_args = { @@ -614,7 +617,7 @@ def grpc_cc_binary(name, srcs = [], deps = [], external_deps = [], args = [], da data = data, testonly = testonly, linkshared = linkshared, - deps = deps + _get_external_deps(external_deps) + ["//test/core/util:grpc_suppressions"], + deps = deps + _get_external_deps(external_deps) + ["//test/core/test_util:grpc_suppressions"], copts = GRPC_DEFAULT_COPTS + copts, linkopts = if_not_windows(["-pthread"]) + linkopts, tags = tags, diff --git a/bazel/grpc_deps.bzl b/bazel/grpc_deps.bzl index 328c2a45c72..d0099ab6163 100644 --- a/bazel/grpc_deps.bzl +++ b/bazel/grpc_deps.bzl @@ -190,11 +190,11 @@ def grpc_deps(): name = "boringssl", # Use github mirror instead of https://boringssl.googlesource.com/boringssl # to obtain a boringssl archive with consistent sha256 - sha256 = "06ba43ff1825c8a9a45dae7f85e532153a531707f6a3e56be1e892fd2d3b75f6", - strip_prefix = "boringssl-e14d29f68c2d1b02e06f10c83b9b8ea4d061f8df", + sha256 = "c4cccc0ea8b149d2853da77254655c0d5a5739dd4bbdff9a5b586c06a627de6c", + strip_prefix = "boringssl-5a2bca2124800f2861263959b72bc35cdf18949b", urls = [ - "https://storage.googleapis.com/grpc-bazel-mirror/github.com/google/boringssl/archive/e14d29f68c2d1b02e06f10c83b9b8ea4d061f8df.tar.gz", - "https://github.com/google/boringssl/archive/e14d29f68c2d1b02e06f10c83b9b8ea4d061f8df.tar.gz", + "https://storage.googleapis.com/grpc-bazel-mirror/github.com/google/boringssl/archive/5a2bca2124800f2861263959b72bc35cdf18949b.tar.gz", + "https://github.com/google/boringssl/archive/5a2bca2124800f2861263959b72bc35cdf18949b.tar.gz", ], ) diff --git a/build_autogenerated.yaml b/build_autogenerated.yaml index 0418b6ae26a..f72466229e9 100644 --- a/build_autogenerated.yaml +++ b/build_autogenerated.yaml @@ -55,12 +55,6 @@ libs: - src/core/lib/config/config_vars.h - src/core/lib/config/load_config.h - src/core/lib/event_engine/thread_local.h - - src/core/lib/gpr/alloc.h - - src/core/lib/gpr/log_internal.h - - src/core/lib/gpr/string.h - - src/core/lib/gpr/time_precise.h - - src/core/lib/gpr/tmpfile.h - - src/core/lib/gpr/useful.h - src/core/lib/gprpp/construct_destruct.h - src/core/lib/gprpp/crash.h - src/core/lib/gprpp/debug_location.h @@ -77,37 +71,16 @@ libs: - src/core/lib/gprpp/tchar.h - src/core/lib/gprpp/thd.h - src/core/lib/gprpp/time_util.h + - src/core/util/alloc.h + - src/core/util/string.h + - src/core/util/time_precise.h + - src/core/util/tmpfile.h + - src/core/util/useful.h src: - src/core/lib/config/config_vars.cc - src/core/lib/config/config_vars_non_generated.cc - src/core/lib/config/load_config.cc - src/core/lib/event_engine/thread_local.cc - - src/core/lib/gpr/alloc.cc - - src/core/lib/gpr/android/log.cc - - src/core/lib/gpr/atm.cc - - src/core/lib/gpr/iphone/cpu.cc - - src/core/lib/gpr/linux/cpu.cc - - src/core/lib/gpr/linux/log.cc - - src/core/lib/gpr/log.cc - - src/core/lib/gpr/msys/tmpfile.cc - - src/core/lib/gpr/posix/cpu.cc - - src/core/lib/gpr/posix/log.cc - - src/core/lib/gpr/posix/string.cc - - src/core/lib/gpr/posix/sync.cc - - src/core/lib/gpr/posix/time.cc - - src/core/lib/gpr/posix/tmpfile.cc - - src/core/lib/gpr/string.cc - - src/core/lib/gpr/sync.cc - - src/core/lib/gpr/sync_abseil.cc - - src/core/lib/gpr/time.cc - - src/core/lib/gpr/time_precise.cc - - src/core/lib/gpr/windows/cpu.cc - - src/core/lib/gpr/windows/log.cc - - src/core/lib/gpr/windows/string.cc - - src/core/lib/gpr/windows/string_util.cc - - src/core/lib/gpr/windows/sync.cc - - src/core/lib/gpr/windows/time.cc - - src/core/lib/gpr/windows/tmpfile.cc - src/core/lib/gprpp/crash.cc - src/core/lib/gprpp/examine_stack.cc - src/core/lib/gprpp/fork.cc @@ -123,6 +96,32 @@ libs: - src/core/lib/gprpp/windows/env.cc - src/core/lib/gprpp/windows/stat.cc - src/core/lib/gprpp/windows/thd.cc + - src/core/util/alloc.cc + - src/core/util/android/log.cc + - src/core/util/atm.cc + - src/core/util/iphone/cpu.cc + - src/core/util/linux/cpu.cc + - src/core/util/linux/log.cc + - src/core/util/log.cc + - src/core/util/msys/tmpfile.cc + - src/core/util/posix/cpu.cc + - src/core/util/posix/log.cc + - src/core/util/posix/string.cc + - src/core/util/posix/sync.cc + - src/core/util/posix/time.cc + - src/core/util/posix/tmpfile.cc + - src/core/util/string.cc + - src/core/util/sync.cc + - src/core/util/sync_abseil.cc + - src/core/util/time.cc + - src/core/util/time_precise.cc + - src/core/util/windows/cpu.cc + - src/core/util/windows/log.cc + - src/core/util/windows/string.cc + - src/core/util/windows/string_util.cc + - src/core/util/windows/sync.cc + - src/core/util/windows/time.cc + - src/core/util/windows/tmpfile.cc deps: - absl/base:base - absl/base:core_headers @@ -130,6 +129,8 @@ libs: - absl/flags:flag - absl/flags:marshalling - absl/functional:any_invocable + - absl/log:check + - absl/log:globals - absl/log:log - absl/memory:memory - absl/random:random @@ -197,6 +198,7 @@ libs: - include/grpc/impl/propagation_bits.h - include/grpc/impl/slice_type.h - include/grpc/load_reporting.h + - include/grpc/passive_listener.h - include/grpc/slice.h - include/grpc/slice_buffer.h - include/grpc/status.h @@ -221,8 +223,10 @@ libs: - include/grpc/support/time.h - include/grpc/support/workaround_list.h headers: + - src/core/channelz/channel_trace.h + - src/core/channelz/channelz.h + - src/core/channelz/channelz_registry.h - src/core/client_channel/backup_poller.h - - src/core/client_channel/client_channel_channelz.h - src/core/client_channel/client_channel_factory.h - src/core/client_channel/client_channel_filter.h - src/core/client_channel/client_channel_internal.h @@ -231,7 +235,6 @@ libs: - src/core/client_channel/connector.h - src/core/client_channel/dynamic_filters.h - src/core/client_channel/global_subchannel_pool.h - - src/core/client_channel/http_proxy_mapper.h - src/core/client_channel/local_subchannel_pool.h - src/core/client_channel/retry_filter.h - src/core/client_channel/retry_filter_legacy_call_data.h @@ -245,7 +248,6 @@ libs: - src/core/ext/filters/backend_metrics/backend_metric_provider.h - src/core/ext/filters/channel_idle/idle_filter_state.h - src/core/ext/filters/channel_idle/legacy_channel_idle_filter.h - - src/core/ext/filters/deadline/deadline_filter.h - src/core/ext/filters/fault_injection/fault_injection_filter.h - src/core/ext/filters/fault_injection/fault_injection_service_config_parser.h - src/core/ext/filters/http/client/http_client_filter.h @@ -255,8 +257,6 @@ libs: - src/core/ext/filters/message_size/message_size_filter.h - src/core/ext/filters/rbac/rbac_filter.h - src/core/ext/filters/rbac/rbac_service_config_parser.h - - src/core/ext/filters/server_config_selector/server_config_selector.h - - src/core/ext/filters/server_config_selector/server_config_selector_filter.h - src/core/ext/filters/stateful_session/stateful_session_filter.h - src/core/ext/filters/stateful_session/stateful_session_service_config_parser.h - src/core/ext/gcp/metadata_query.h @@ -777,37 +777,18 @@ libs: - src/core/ext/upbdefs-gen/xds/type/v3/cel.upbdefs.h - src/core/ext/upbdefs-gen/xds/type/v3/range.upbdefs.h - src/core/ext/upbdefs-gen/xds/type/v3/typed_struct.upbdefs.h - - src/core/ext/xds/certificate_provider_store.h - - src/core/ext/xds/file_watcher_certificate_provider_factory.h - - src/core/ext/xds/upb_utils.h - - src/core/ext/xds/xds_api.h - - src/core/ext/xds/xds_audit_logger_registry.h - - src/core/ext/xds/xds_bootstrap.h - - src/core/ext/xds/xds_bootstrap_grpc.h - - src/core/ext/xds/xds_certificate_provider.h - - src/core/ext/xds/xds_channel_args.h - - src/core/ext/xds/xds_channel_stack_modifier.h - - src/core/ext/xds/xds_client.h - - src/core/ext/xds/xds_client_grpc.h - - src/core/ext/xds/xds_client_stats.h - - src/core/ext/xds/xds_cluster.h - - src/core/ext/xds/xds_cluster_specifier_plugin.h - - src/core/ext/xds/xds_common_types.h - - src/core/ext/xds/xds_endpoint.h - - src/core/ext/xds/xds_health_status.h - - src/core/ext/xds/xds_http_fault_filter.h - - src/core/ext/xds/xds_http_filters.h - - src/core/ext/xds/xds_http_rbac_filter.h - - src/core/ext/xds/xds_http_stateful_session_filter.h - - src/core/ext/xds/xds_lb_policy_registry.h - - src/core/ext/xds/xds_listener.h - - src/core/ext/xds/xds_metrics.h - - src/core/ext/xds/xds_resource_type.h - - src/core/ext/xds/xds_resource_type_impl.h - - src/core/ext/xds/xds_route_config.h - - src/core/ext/xds/xds_routing.h - - src/core/ext/xds/xds_transport.h - - src/core/ext/xds/xds_transport_grpc.h + - src/core/handshaker/endpoint_info/endpoint_info_handshaker.h + - src/core/handshaker/handshaker.h + - src/core/handshaker/handshaker_factory.h + - src/core/handshaker/handshaker_registry.h + - src/core/handshaker/http_connect/http_connect_handshaker.h + - src/core/handshaker/http_connect/http_proxy_mapper.h + - src/core/handshaker/proxy_mapper.h + - src/core/handshaker/proxy_mapper_registry.h + - src/core/handshaker/security/secure_endpoint.h + - src/core/handshaker/security/security_handshaker.h + - src/core/handshaker/security/tsi_error.h + - src/core/handshaker/tcp_connect/tcp_connect_handshaker.h - src/core/lib/address_utils/parse_address.h - src/core/lib/address_utils/sockaddr_utils.h - src/core/lib/avl/avl.h @@ -822,14 +803,10 @@ libs: - src/core/lib/channel/channel_stack_builder.h - src/core/lib/channel/channel_stack_builder_impl.h - src/core/lib/channel/channel_stack_trace.h - - src/core/lib/channel/channel_trace.h - - src/core/lib/channel/channelz.h - - src/core/lib/channel/channelz_registry.h - src/core/lib/channel/connected_channel.h - src/core/lib/channel/context.h - src/core/lib/channel/metrics.h - src/core/lib/channel/promise_based_filter.h - - src/core/lib/channel/server_call_tracer_filter.h - src/core/lib/channel/status_util.h - src/core/lib/channel/tcp_tracer.h - src/core/lib/compression/compression_internal.h @@ -905,7 +882,6 @@ libs: - src/core/lib/event_engine/work_queue/work_queue.h - src/core/lib/experiments/config.h - src/core/lib/experiments/experiments.h - - src/core/lib/gpr/spinlock.h - src/core/lib/gprpp/atomic_utils.h - src/core/lib/gprpp/bitset.h - src/core/lib/gprpp/chunked_vector.h @@ -937,8 +913,6 @@ libs: - src/core/lib/gprpp/validation_errors.h - src/core/lib/gprpp/work_serializer.h - src/core/lib/gprpp/xxhash_inline.h - - src/core/lib/handshaker/proxy_mapper.h - - src/core/lib/handshaker/proxy_mapper_registry.h - src/core/lib/http/format_request.h - src/core/lib/http/httpcli.h - src/core/lib/http/httpcli_ssl_credentials.h @@ -1108,9 +1082,6 @@ libs: - src/core/lib/security/security_connector/ssl_utils.h - src/core/lib/security/security_connector/tls/tls_security_connector.h - src/core/lib/security/transport/auth_filters.h - - src/core/lib/security/transport/secure_endpoint.h - - src/core/lib/security/transport/security_handshaker.h - - src/core/lib/security/transport/tsi_error.h - src/core/lib/security/util/json_util.h - src/core/lib/slice/percent_encoding.h - src/core/lib/slice/slice.h @@ -1133,25 +1104,20 @@ libs: - src/core/lib/surface/init_internally.h - src/core/lib/surface/lame_client.h - src/core/lib/surface/legacy_channel.h - - src/core/lib/surface/server.h - - src/core/lib/surface/server_interface.h - src/core/lib/surface/validate_metadata.h - src/core/lib/surface/wait_for_cq_end_op.h - src/core/lib/transport/batch_builder.h - src/core/lib/transport/bdp_estimator.h + - src/core/lib/transport/call_arena_allocator.h + - src/core/lib/transport/call_destination.h - src/core/lib/transport/call_filters.h - src/core/lib/transport/call_final_info.h - - src/core/lib/transport/call_size_estimator.h - src/core/lib/transport/call_spine.h - src/core/lib/transport/connectivity_state.h - src/core/lib/transport/custom_metadata.h - - src/core/lib/transport/endpoint_info_handshaker.h - src/core/lib/transport/error_utils.h - - src/core/lib/transport/handshaker.h - - src/core/lib/transport/handshaker_factory.h - - src/core/lib/transport/handshaker_registry.h - src/core/lib/transport/http2_errors.h - - src/core/lib/transport/http_connect_handshaker.h + - src/core/lib/transport/interception_chain.h - src/core/lib/transport/message.h - src/core/lib/transport/metadata.h - src/core/lib/transport/metadata_batch.h @@ -1160,7 +1126,6 @@ libs: - src/core/lib/transport/parsed_metadata.h - src/core/lib/transport/simple_slice_based_metadata.h - src/core/lib/transport/status_conversion.h - - src/core/lib/transport/tcp_connect_handshaker.h - src/core/lib/transport/timeout_encoding.h - src/core/lib/transport/transport.h - src/core/lib/transport/transport_fwd.h @@ -1209,6 +1174,12 @@ libs: - src/core/resolver/xds/xds_dependency_manager.h - src/core/resolver/xds/xds_resolver_attributes.h - src/core/resolver/xds/xds_resolver_trace.h + - src/core/server/server.h + - src/core/server/server_call_tracer_filter.h + - src/core/server/server_config_selector.h + - src/core/server/server_config_selector_filter.h + - src/core/server/server_interface.h + - src/core/server/xds_channel_stack_modifier.h - src/core/service_config/service_config.h - src/core/service_config/service_config_call_data.h - src/core/service_config/service_config_impl.h @@ -1242,11 +1213,44 @@ libs: - src/core/tsi/transport_security.h - src/core/tsi/transport_security_grpc.h - src/core/tsi/transport_security_interface.h + - src/core/util/spinlock.h + - src/core/xds/grpc/certificate_provider_store.h + - src/core/xds/grpc/file_watcher_certificate_provider_factory.h + - src/core/xds/grpc/upb_utils.h + - src/core/xds/grpc/xds_audit_logger_registry.h + - src/core/xds/grpc/xds_bootstrap_grpc.h + - src/core/xds/grpc/xds_certificate_provider.h + - src/core/xds/grpc/xds_client_grpc.h + - src/core/xds/grpc/xds_cluster.h + - src/core/xds/grpc/xds_cluster_specifier_plugin.h + - src/core/xds/grpc/xds_common_types.h + - src/core/xds/grpc/xds_endpoint.h + - src/core/xds/grpc/xds_health_status.h + - src/core/xds/grpc/xds_http_fault_filter.h + - src/core/xds/grpc/xds_http_filters.h + - src/core/xds/grpc/xds_http_rbac_filter.h + - src/core/xds/grpc/xds_http_stateful_session_filter.h + - src/core/xds/grpc/xds_lb_policy_registry.h + - src/core/xds/grpc/xds_listener.h + - src/core/xds/grpc/xds_route_config.h + - src/core/xds/grpc/xds_routing.h + - src/core/xds/grpc/xds_transport_grpc.h + - src/core/xds/xds_client/xds_api.h + - src/core/xds/xds_client/xds_bootstrap.h + - src/core/xds/xds_client/xds_channel_args.h + - src/core/xds/xds_client/xds_client.h + - src/core/xds/xds_client/xds_client_stats.h + - src/core/xds/xds_client/xds_metrics.h + - src/core/xds/xds_client/xds_resource_type.h + - src/core/xds/xds_client/xds_resource_type_impl.h + - src/core/xds/xds_client/xds_transport.h - third_party/upb/upb/generated_code_support.h - third_party/xxhash/xxhash.h src: + - src/core/channelz/channel_trace.cc + - src/core/channelz/channelz.cc + - src/core/channelz/channelz_registry.cc - src/core/client_channel/backup_poller.cc - - src/core/client_channel/client_channel_channelz.cc - src/core/client_channel/client_channel_factory.cc - src/core/client_channel/client_channel_filter.cc - src/core/client_channel/client_channel_plugin.cc @@ -1254,7 +1258,6 @@ libs: - src/core/client_channel/config_selector.cc - src/core/client_channel/dynamic_filters.cc - src/core/client_channel/global_subchannel_pool.cc - - src/core/client_channel/http_proxy_mapper.cc - src/core/client_channel/local_subchannel_pool.cc - src/core/client_channel/retry_filter.cc - src/core/client_channel/retry_filter_legacy_call_data.cc @@ -1267,7 +1270,6 @@ libs: - src/core/ext/filters/census/grpc_context.cc - src/core/ext/filters/channel_idle/idle_filter_state.cc - src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc - - src/core/ext/filters/deadline/deadline_filter.cc - src/core/ext/filters/fault_injection/fault_injection_filter.cc - src/core/ext/filters/fault_injection/fault_injection_service_config_parser.cc - src/core/ext/filters/http/client/http_client_filter.cc @@ -1278,7 +1280,6 @@ libs: - src/core/ext/filters/message_size/message_size_filter.cc - src/core/ext/filters/rbac/rbac_filter.cc - src/core/ext/filters/rbac/rbac_service_config_parser.cc - - src/core/ext/filters/server_config_selector/server_config_selector_filter.cc - src/core/ext/filters/stateful_session/stateful_session_filter.cc - src/core/ext/filters/stateful_session/stateful_session_service_config_parser.cc - src/core/ext/gcp/metadata_query.cc @@ -1634,32 +1635,16 @@ libs: - src/core/ext/upbdefs-gen/xds/type/v3/cel.upbdefs.c - src/core/ext/upbdefs-gen/xds/type/v3/range.upbdefs.c - src/core/ext/upbdefs-gen/xds/type/v3/typed_struct.upbdefs.c - - src/core/ext/xds/certificate_provider_store.cc - - src/core/ext/xds/file_watcher_certificate_provider_factory.cc - - src/core/ext/xds/xds_api.cc - - src/core/ext/xds/xds_audit_logger_registry.cc - - src/core/ext/xds/xds_bootstrap.cc - - src/core/ext/xds/xds_bootstrap_grpc.cc - - src/core/ext/xds/xds_certificate_provider.cc - - src/core/ext/xds/xds_channel_stack_modifier.cc - - src/core/ext/xds/xds_client.cc - - src/core/ext/xds/xds_client_grpc.cc - - src/core/ext/xds/xds_client_stats.cc - - src/core/ext/xds/xds_cluster.cc - - src/core/ext/xds/xds_cluster_specifier_plugin.cc - - src/core/ext/xds/xds_common_types.cc - - src/core/ext/xds/xds_endpoint.cc - - src/core/ext/xds/xds_health_status.cc - - src/core/ext/xds/xds_http_fault_filter.cc - - src/core/ext/xds/xds_http_filters.cc - - src/core/ext/xds/xds_http_rbac_filter.cc - - src/core/ext/xds/xds_http_stateful_session_filter.cc - - src/core/ext/xds/xds_lb_policy_registry.cc - - src/core/ext/xds/xds_listener.cc - - src/core/ext/xds/xds_route_config.cc - - src/core/ext/xds/xds_routing.cc - - src/core/ext/xds/xds_server_config_fetcher.cc - - src/core/ext/xds/xds_transport_grpc.cc + - src/core/handshaker/endpoint_info/endpoint_info_handshaker.cc + - src/core/handshaker/handshaker.cc + - src/core/handshaker/handshaker_registry.cc + - src/core/handshaker/http_connect/http_connect_handshaker.cc + - src/core/handshaker/http_connect/http_proxy_mapper.cc + - src/core/handshaker/proxy_mapper_registry.cc + - src/core/handshaker/security/secure_endpoint.cc + - src/core/handshaker/security/security_handshaker.cc + - src/core/handshaker/security/tsi_error.cc + - src/core/handshaker/tcp_connect/tcp_connect_handshaker.cc - src/core/lib/address_utils/parse_address.cc - src/core/lib/address_utils/sockaddr_utils.cc - src/core/lib/backoff/backoff.cc @@ -1671,13 +1656,9 @@ libs: - src/core/lib/channel/channel_stack_builder.cc - src/core/lib/channel/channel_stack_builder_impl.cc - src/core/lib/channel/channel_stack_trace.cc - - src/core/lib/channel/channel_trace.cc - - src/core/lib/channel/channelz.cc - - src/core/lib/channel/channelz_registry.cc - src/core/lib/channel/connected_channel.cc - src/core/lib/channel/metrics.cc - src/core/lib/channel/promise_based_filter.cc - - src/core/lib/channel/server_call_tracer_filter.cc - src/core/lib/channel/status_util.cc - src/core/lib/compression/compression.cc - src/core/lib/compression/compression_internal.cc @@ -1748,7 +1729,6 @@ libs: - src/core/lib/gprpp/validation_errors.cc - src/core/lib/gprpp/windows/directory_reader.cc - src/core/lib/gprpp/work_serializer.cc - - src/core/lib/handshaker/proxy_mapper_registry.cc - src/core/lib/http/format_request.cc - src/core/lib/http/httpcli.cc - src/core/lib/http/httpcli_security_connector.cc @@ -1907,10 +1887,7 @@ libs: - src/core/lib/security/security_connector/ssl_utils.cc - src/core/lib/security/security_connector/tls/tls_security_connector.cc - src/core/lib/security/transport/client_auth_filter.cc - - src/core/lib/security/transport/secure_endpoint.cc - - src/core/lib/security/transport/security_handshaker.cc - src/core/lib/security/transport/server_auth_filter.cc - - src/core/lib/security/transport/tsi_error.cc - src/core/lib/security/util/json_util.cc - src/core/lib/slice/percent_encoding.cc - src/core/lib/slice/slice.cc @@ -1935,29 +1912,24 @@ libs: - src/core/lib/surface/lame_client.cc - src/core/lib/surface/legacy_channel.cc - src/core/lib/surface/metadata_array.cc - - src/core/lib/surface/server.cc - src/core/lib/surface/validate_metadata.cc - src/core/lib/surface/version.cc - src/core/lib/surface/wait_for_cq_end_op.cc - src/core/lib/transport/batch_builder.cc - src/core/lib/transport/bdp_estimator.cc + - src/core/lib/transport/call_arena_allocator.cc - src/core/lib/transport/call_filters.cc - src/core/lib/transport/call_final_info.cc - - src/core/lib/transport/call_size_estimator.cc - src/core/lib/transport/call_spine.cc - src/core/lib/transport/connectivity_state.cc - - src/core/lib/transport/endpoint_info_handshaker.cc - src/core/lib/transport/error_utils.cc - - src/core/lib/transport/handshaker.cc - - src/core/lib/transport/handshaker_registry.cc - - src/core/lib/transport/http_connect_handshaker.cc + - src/core/lib/transport/interception_chain.cc - src/core/lib/transport/message.cc - src/core/lib/transport/metadata.cc - src/core/lib/transport/metadata_batch.cc - src/core/lib/transport/metadata_info.cc - src/core/lib/transport/parsed_metadata.cc - src/core/lib/transport/status_conversion.cc - - src/core/lib/transport/tcp_connect_handshaker.cc - src/core/lib/transport/timeout_encoding.cc - src/core/lib/transport/transport.cc - src/core/lib/transport/transport_op_string.cc @@ -2012,6 +1984,11 @@ libs: - src/core/resolver/xds/xds_dependency_manager.cc - src/core/resolver/xds/xds_resolver.cc - src/core/resolver/xds/xds_resolver_trace.cc + - src/core/server/server.cc + - src/core/server/server_call_tracer_filter.cc + - src/core/server/server_config_selector_filter.cc + - src/core/server/xds_channel_stack_modifier.cc + - src/core/server/xds_server_config_fetcher.cc - src/core/service_config/service_config_channel_arg_filter.cc - src/core/service_config/service_config_impl.cc - src/core/service_config/service_config_parser.cc @@ -2044,6 +2021,30 @@ libs: - src/core/tsi/ssl_transport_security_utils.cc - src/core/tsi/transport_security.cc - src/core/tsi/transport_security_grpc.cc + - src/core/xds/grpc/certificate_provider_store.cc + - src/core/xds/grpc/file_watcher_certificate_provider_factory.cc + - src/core/xds/grpc/xds_audit_logger_registry.cc + - src/core/xds/grpc/xds_bootstrap_grpc.cc + - src/core/xds/grpc/xds_certificate_provider.cc + - src/core/xds/grpc/xds_client_grpc.cc + - src/core/xds/grpc/xds_cluster.cc + - src/core/xds/grpc/xds_cluster_specifier_plugin.cc + - src/core/xds/grpc/xds_common_types.cc + - src/core/xds/grpc/xds_endpoint.cc + - src/core/xds/grpc/xds_health_status.cc + - src/core/xds/grpc/xds_http_fault_filter.cc + - src/core/xds/grpc/xds_http_filters.cc + - src/core/xds/grpc/xds_http_rbac_filter.cc + - src/core/xds/grpc/xds_http_stateful_session_filter.cc + - src/core/xds/grpc/xds_lb_policy_registry.cc + - src/core/xds/grpc/xds_listener.cc + - src/core/xds/grpc/xds_route_config.cc + - src/core/xds/grpc/xds_routing.cc + - src/core/xds/grpc/xds_transport_grpc.cc + - src/core/xds/xds_client/xds_api.cc + - src/core/xds/xds_client/xds_bootstrap.cc + - src/core/xds/xds_client/xds_client.cc + - src/core/xds/xds_client/xds_client_stats.cc deps: - upb_json_lib - upb_textformat_lib @@ -2077,25 +2078,25 @@ libs: public_headers: [] headers: - test/core/event_engine/test_init.h - - test/core/util/build.h - - test/core/util/port.h - - test/core/util/port_server_client.h - - test/core/util/reconnect_server.h - - test/core/util/stack_tracer.h - - test/core/util/test_config.h - - test/core/util/test_tcp_server.h - - test/core/util/tls_utils.h + - test/core/test_util/build.h + - test/core/test_util/port.h + - test/core/test_util/port_server_client.h + - test/core/test_util/reconnect_server.h + - test/core/test_util/stack_tracer.h + - test/core/test_util/test_config.h + - test/core/test_util/test_tcp_server.h + - test/core/test_util/tls_utils.h src: - test/core/event_engine/test_init.cc - - test/core/util/build.cc - - test/core/util/port.cc - - test/core/util/port_isolated_runtime_environment.cc - - test/core/util/port_server_client.cc - - test/core/util/reconnect_server.cc - - test/core/util/stack_tracer.cc - - test/core/util/test_config.cc - - test/core/util/test_tcp_server.cc - - test/core/util/tls_utils.cc + - test/core/test_util/build.cc + - test/core/test_util/port.cc + - test/core/test_util/port_isolated_runtime_environment.cc + - test/core/test_util/port_server_client.cc + - test/core/test_util/reconnect_server.cc + - test/core/test_util/stack_tracer.cc + - test/core/test_util/test_config.cc + - test/core/test_util/test_tcp_server.cc + - test/core/test_util/tls_utils.cc deps: - absl/debugging:failure_signal_handler - absl/debugging:stacktrace @@ -2107,23 +2108,23 @@ libs: public_headers: [] headers: - test/core/event_engine/test_init.h - - test/core/util/build.h - - test/core/util/port.h - - test/core/util/port_server_client.h - - test/core/util/reconnect_server.h - - test/core/util/stack_tracer.h - - test/core/util/test_config.h - - test/core/util/test_tcp_server.h + - test/core/test_util/build.h + - test/core/test_util/port.h + - test/core/test_util/port_server_client.h + - test/core/test_util/reconnect_server.h + - test/core/test_util/stack_tracer.h + - test/core/test_util/test_config.h + - test/core/test_util/test_tcp_server.h src: - test/core/event_engine/test_init.cc - - test/core/util/build.cc - - test/core/util/port.cc - - test/core/util/port_isolated_runtime_environment.cc - - test/core/util/port_server_client.cc - - test/core/util/reconnect_server.cc - - test/core/util/stack_tracer.cc - - test/core/util/test_config.cc - - test/core/util/test_tcp_server.cc + - test/core/test_util/build.cc + - test/core/test_util/port.cc + - test/core/test_util/port_isolated_runtime_environment.cc + - test/core/test_util/port_server_client.cc + - test/core/test_util/reconnect_server.cc + - test/core/test_util/stack_tracer.cc + - test/core/test_util/test_config.cc + - test/core/test_util/test_tcp_server.cc deps: - absl/debugging:failure_signal_handler - absl/debugging:stacktrace @@ -2185,6 +2186,7 @@ libs: - include/grpc/impl/propagation_bits.h - include/grpc/impl/slice_type.h - include/grpc/load_reporting.h + - include/grpc/passive_listener.h - include/grpc/slice.h - include/grpc/slice_buffer.h - include/grpc/status.h @@ -2209,8 +2211,10 @@ libs: - include/grpc/support/time.h - include/grpc/support/workaround_list.h headers: + - src/core/channelz/channel_trace.h + - src/core/channelz/channelz.h + - src/core/channelz/channelz_registry.h - src/core/client_channel/backup_poller.h - - src/core/client_channel/client_channel_channelz.h - src/core/client_channel/client_channel_factory.h - src/core/client_channel/client_channel_filter.h - src/core/client_channel/client_channel_internal.h @@ -2219,7 +2223,6 @@ libs: - src/core/client_channel/connector.h - src/core/client_channel/dynamic_filters.h - src/core/client_channel/global_subchannel_pool.h - - src/core/client_channel/http_proxy_mapper.h - src/core/client_channel/local_subchannel_pool.h - src/core/client_channel/retry_filter.h - src/core/client_channel/retry_filter_legacy_call_data.h @@ -2233,7 +2236,6 @@ libs: - src/core/ext/filters/backend_metrics/backend_metric_provider.h - src/core/ext/filters/channel_idle/idle_filter_state.h - src/core/ext/filters/channel_idle/legacy_channel_idle_filter.h - - src/core/ext/filters/deadline/deadline_filter.h - src/core/ext/filters/fault_injection/fault_injection_filter.h - src/core/ext/filters/fault_injection/fault_injection_service_config_parser.h - src/core/ext/filters/http/client/http_client_filter.h @@ -2313,6 +2315,18 @@ libs: - src/core/ext/upb-gen/xds/data/orca/v3/orca_load_report.upb_minitable.h - src/core/ext/upb-gen/xds/service/orca/v3/orca.upb.h - src/core/ext/upb-gen/xds/service/orca/v3/orca.upb_minitable.h + - src/core/handshaker/endpoint_info/endpoint_info_handshaker.h + - src/core/handshaker/handshaker.h + - src/core/handshaker/handshaker_factory.h + - src/core/handshaker/handshaker_registry.h + - src/core/handshaker/http_connect/http_connect_handshaker.h + - src/core/handshaker/http_connect/http_proxy_mapper.h + - src/core/handshaker/proxy_mapper.h + - src/core/handshaker/proxy_mapper_registry.h + - src/core/handshaker/security/secure_endpoint.h + - src/core/handshaker/security/security_handshaker.h + - src/core/handshaker/security/tsi_error.h + - src/core/handshaker/tcp_connect/tcp_connect_handshaker.h - src/core/lib/address_utils/parse_address.h - src/core/lib/address_utils/sockaddr_utils.h - src/core/lib/avl/avl.h @@ -2327,14 +2341,10 @@ libs: - src/core/lib/channel/channel_stack_builder.h - src/core/lib/channel/channel_stack_builder_impl.h - src/core/lib/channel/channel_stack_trace.h - - src/core/lib/channel/channel_trace.h - - src/core/lib/channel/channelz.h - - src/core/lib/channel/channelz_registry.h - src/core/lib/channel/connected_channel.h - src/core/lib/channel/context.h - src/core/lib/channel/metrics.h - src/core/lib/channel/promise_based_filter.h - - src/core/lib/channel/server_call_tracer_filter.h - src/core/lib/channel/status_util.h - src/core/lib/channel/tcp_tracer.h - src/core/lib/compression/compression_internal.h @@ -2410,7 +2420,6 @@ libs: - src/core/lib/event_engine/work_queue/work_queue.h - src/core/lib/experiments/config.h - src/core/lib/experiments/experiments.h - - src/core/lib/gpr/spinlock.h - src/core/lib/gprpp/atomic_utils.h - src/core/lib/gprpp/bitset.h - src/core/lib/gprpp/chunked_vector.h @@ -2440,8 +2449,6 @@ libs: - src/core/lib/gprpp/uuid_v4.h - src/core/lib/gprpp/validation_errors.h - src/core/lib/gprpp/work_serializer.h - - src/core/lib/handshaker/proxy_mapper.h - - src/core/lib/handshaker/proxy_mapper_registry.h - src/core/lib/http/format_request.h - src/core/lib/http/httpcli.h - src/core/lib/http/parser.h @@ -2577,9 +2584,6 @@ libs: - src/core/lib/security/security_connector/load_system_roots_supported.h - src/core/lib/security/security_connector/security_connector.h - src/core/lib/security/transport/auth_filters.h - - src/core/lib/security/transport/secure_endpoint.h - - src/core/lib/security/transport/security_handshaker.h - - src/core/lib/security/transport/tsi_error.h - src/core/lib/security/util/json_util.h - src/core/lib/slice/percent_encoding.h - src/core/lib/slice/slice.h @@ -2602,25 +2606,20 @@ libs: - src/core/lib/surface/init_internally.h - src/core/lib/surface/lame_client.h - src/core/lib/surface/legacy_channel.h - - src/core/lib/surface/server.h - - src/core/lib/surface/server_interface.h - src/core/lib/surface/validate_metadata.h - src/core/lib/surface/wait_for_cq_end_op.h - src/core/lib/transport/batch_builder.h - src/core/lib/transport/bdp_estimator.h + - src/core/lib/transport/call_arena_allocator.h + - src/core/lib/transport/call_destination.h - src/core/lib/transport/call_filters.h - src/core/lib/transport/call_final_info.h - - src/core/lib/transport/call_size_estimator.h - src/core/lib/transport/call_spine.h - src/core/lib/transport/connectivity_state.h - src/core/lib/transport/custom_metadata.h - - src/core/lib/transport/endpoint_info_handshaker.h - src/core/lib/transport/error_utils.h - - src/core/lib/transport/handshaker.h - - src/core/lib/transport/handshaker_factory.h - - src/core/lib/transport/handshaker_registry.h - src/core/lib/transport/http2_errors.h - - src/core/lib/transport/http_connect_handshaker.h + - src/core/lib/transport/interception_chain.h - src/core/lib/transport/message.h - src/core/lib/transport/metadata.h - src/core/lib/transport/metadata_batch.h @@ -2629,7 +2628,6 @@ libs: - src/core/lib/transport/parsed_metadata.h - src/core/lib/transport/simple_slice_based_metadata.h - src/core/lib/transport/status_conversion.h - - src/core/lib/transport/tcp_connect_handshaker.h - src/core/lib/transport/timeout_encoding.h - src/core/lib/transport/transport.h - src/core/lib/transport/transport_fwd.h @@ -2672,6 +2670,9 @@ libs: - src/core/resolver/resolver_factory.h - src/core/resolver/resolver_registry.h - src/core/resolver/server_address.h + - src/core/server/server.h + - src/core/server/server_call_tracer_filter.h + - src/core/server/server_interface.h - src/core/service_config/service_config.h - src/core/service_config/service_config_call_data.h - src/core/service_config/service_config_impl.h @@ -2682,6 +2683,7 @@ libs: - src/core/tsi/transport_security.h - src/core/tsi/transport_security_grpc.h - src/core/tsi/transport_security_interface.h + - src/core/util/spinlock.h - third_party/upb/upb/generated_code_support.h - third_party/upb/upb/mini_descriptor/build_enum.h - third_party/upb/upb/mini_descriptor/decode.h @@ -2702,8 +2704,10 @@ libs: - third_party/upb/upb/wire/reader.h - third_party/upb/upb/wire/types.h src: + - src/core/channelz/channel_trace.cc + - src/core/channelz/channelz.cc + - src/core/channelz/channelz_registry.cc - src/core/client_channel/backup_poller.cc - - src/core/client_channel/client_channel_channelz.cc - src/core/client_channel/client_channel_factory.cc - src/core/client_channel/client_channel_filter.cc - src/core/client_channel/client_channel_plugin.cc @@ -2711,7 +2715,6 @@ libs: - src/core/client_channel/config_selector.cc - src/core/client_channel/dynamic_filters.cc - src/core/client_channel/global_subchannel_pool.cc - - src/core/client_channel/http_proxy_mapper.cc - src/core/client_channel/local_subchannel_pool.cc - src/core/client_channel/retry_filter.cc - src/core/client_channel/retry_filter_legacy_call_data.cc @@ -2724,7 +2727,6 @@ libs: - src/core/ext/filters/census/grpc_context.cc - src/core/ext/filters/channel_idle/idle_filter_state.cc - src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc - - src/core/ext/filters/deadline/deadline_filter.cc - src/core/ext/filters/fault_injection/fault_injection_filter.cc - src/core/ext/filters/fault_injection/fault_injection_service_config_parser.cc - src/core/ext/filters/http/client/http_client_filter.cc @@ -2786,6 +2788,16 @@ libs: - src/core/ext/upb-gen/validate/validate.upb_minitable.c - src/core/ext/upb-gen/xds/data/orca/v3/orca_load_report.upb_minitable.c - src/core/ext/upb-gen/xds/service/orca/v3/orca.upb_minitable.c + - src/core/handshaker/endpoint_info/endpoint_info_handshaker.cc + - src/core/handshaker/handshaker.cc + - src/core/handshaker/handshaker_registry.cc + - src/core/handshaker/http_connect/http_connect_handshaker.cc + - src/core/handshaker/http_connect/http_proxy_mapper.cc + - src/core/handshaker/proxy_mapper_registry.cc + - src/core/handshaker/security/secure_endpoint.cc + - src/core/handshaker/security/security_handshaker.cc + - src/core/handshaker/security/tsi_error.cc + - src/core/handshaker/tcp_connect/tcp_connect_handshaker.cc - src/core/lib/address_utils/parse_address.cc - src/core/lib/address_utils/sockaddr_utils.cc - src/core/lib/backoff/backoff.cc @@ -2797,13 +2809,9 @@ libs: - src/core/lib/channel/channel_stack_builder.cc - src/core/lib/channel/channel_stack_builder_impl.cc - src/core/lib/channel/channel_stack_trace.cc - - src/core/lib/channel/channel_trace.cc - - src/core/lib/channel/channelz.cc - - src/core/lib/channel/channelz_registry.cc - src/core/lib/channel/connected_channel.cc - src/core/lib/channel/metrics.cc - src/core/lib/channel/promise_based_filter.cc - - src/core/lib/channel/server_call_tracer_filter.cc - src/core/lib/channel/status_util.cc - src/core/lib/compression/compression.cc - src/core/lib/compression/compression_internal.cc @@ -2872,7 +2880,6 @@ libs: - src/core/lib/gprpp/uuid_v4.cc - src/core/lib/gprpp/validation_errors.cc - src/core/lib/gprpp/work_serializer.cc - - src/core/lib/handshaker/proxy_mapper_registry.cc - src/core/lib/http/format_request.cc - src/core/lib/http/httpcli.cc - src/core/lib/http/parser.cc @@ -2994,10 +3001,7 @@ libs: - src/core/lib/security/security_connector/load_system_roots_windows.cc - src/core/lib/security/security_connector/security_connector.cc - src/core/lib/security/transport/client_auth_filter.cc - - src/core/lib/security/transport/secure_endpoint.cc - - src/core/lib/security/transport/security_handshaker.cc - src/core/lib/security/transport/server_auth_filter.cc - - src/core/lib/security/transport/tsi_error.cc - src/core/lib/security/util/json_util.cc - src/core/lib/slice/percent_encoding.cc - src/core/lib/slice/slice.cc @@ -3022,29 +3026,24 @@ libs: - src/core/lib/surface/lame_client.cc - src/core/lib/surface/legacy_channel.cc - src/core/lib/surface/metadata_array.cc - - src/core/lib/surface/server.cc - src/core/lib/surface/validate_metadata.cc - src/core/lib/surface/version.cc - src/core/lib/surface/wait_for_cq_end_op.cc - src/core/lib/transport/batch_builder.cc - src/core/lib/transport/bdp_estimator.cc + - src/core/lib/transport/call_arena_allocator.cc - src/core/lib/transport/call_filters.cc - src/core/lib/transport/call_final_info.cc - - src/core/lib/transport/call_size_estimator.cc - src/core/lib/transport/call_spine.cc - src/core/lib/transport/connectivity_state.cc - - src/core/lib/transport/endpoint_info_handshaker.cc - src/core/lib/transport/error_utils.cc - - src/core/lib/transport/handshaker.cc - - src/core/lib/transport/handshaker_registry.cc - - src/core/lib/transport/http_connect_handshaker.cc + - src/core/lib/transport/interception_chain.cc - src/core/lib/transport/message.cc - src/core/lib/transport/metadata.cc - src/core/lib/transport/metadata_batch.cc - src/core/lib/transport/metadata_info.cc - src/core/lib/transport/parsed_metadata.cc - src/core/lib/transport/status_conversion.cc - - src/core/lib/transport/tcp_connect_handshaker.cc - src/core/lib/transport/timeout_encoding.cc - src/core/lib/transport/transport.cc - src/core/lib/transport/transport_op_string.cc @@ -3089,6 +3088,8 @@ libs: - src/core/resolver/resolver.cc - src/core/resolver/resolver_registry.cc - src/core/resolver/sockaddr/sockaddr_resolver.cc + - src/core/server/server.cc + - src/core/server/server_call_tracer_filter.cc - src/core/service_config/service_config_channel_arg_filter.cc - src/core/service_config/service_config_impl.cc - src/core/service_config/service_config_parser.cc @@ -3593,17 +3594,16 @@ libs: language: c++ public_headers: [] headers: - - test/core/util/cmdline.h - - test/core/util/evaluate_args_test_util.h - - test/core/util/fuzzer_util.h - - test/core/util/grpc_profiler.h - - test/core/util/histogram.h - - test/core/util/mock_authorization_endpoint.h - - test/core/util/mock_endpoint.h - - test/core/util/parse_hexstring.h - - test/core/util/resolve_localhost_ip46.h - - test/core/util/slice_splitter.h - - test/core/util/tracer_util.h + - test/core/test_util/cmdline.h + - test/core/test_util/evaluate_args_test_util.h + - test/core/test_util/fuzzer_util.h + - test/core/test_util/grpc_profiler.h + - test/core/test_util/histogram.h + - test/core/test_util/mock_endpoint.h + - test/core/test_util/parse_hexstring.h + - test/core/test_util/resolve_localhost_ip46.h + - test/core/test_util/slice_splitter.h + - test/core/test_util/tracer_util.h - test/cpp/microbenchmarks/fullstack_context_mutators.h - test/cpp/microbenchmarks/fullstack_fixtures.h - test/cpp/microbenchmarks/helpers.h @@ -3612,18 +3612,17 @@ libs: - src/proto/grpc/testing/echo_messages.proto - src/proto/grpc/testing/simple_messages.proto - src/proto/grpc/testing/xds/v3/orca_load_report.proto - - test/core/util/cmdline.cc - - test/core/util/fuzzer_util.cc - - test/core/util/grpc_profiler.cc - - test/core/util/histogram.cc - - test/core/util/mock_endpoint.cc - - test/core/util/parse_hexstring.cc - - test/core/util/resolve_localhost_ip46.cc - - test/core/util/slice_splitter.cc - - test/core/util/tracer_util.cc + - test/core/test_util/cmdline.cc + - test/core/test_util/fuzzer_util.cc + - test/core/test_util/grpc_profiler.cc + - test/core/test_util/histogram.cc + - test/core/test_util/mock_endpoint.cc + - test/core/test_util/parse_hexstring.cc + - test/core/test_util/resolve_localhost_ip46.cc + - test/core/test_util/slice_splitter.cc + - test/core/test_util/tracer_util.cc - test/cpp/microbenchmarks/helpers.cc deps: - - absl/log:check - benchmark - grpc++_unsecure - grpc_test_util_unsecure @@ -3795,6 +3794,7 @@ libs: - include/grpcpp/impl/service_type.h - include/grpcpp/impl/status.h - include/grpcpp/impl/sync.h + - include/grpcpp/passive_listener.h - include/grpcpp/resource_quota.h - include/grpcpp/security/audit_logging.h - include/grpcpp/security/auth_context.h @@ -3859,7 +3859,7 @@ libs: - src/core/ext/transport/binder/wire_format/wire_reader.h - src/core/ext/transport/binder/wire_format/wire_reader_impl.h - src/core/ext/transport/binder/wire_format/wire_writer.h - - src/core/ext/xds/xds_enabled_server.h + - src/core/xds/grpc/xds_enabled_server.h - src/cpp/client/client_stats_interceptor.h - src/cpp/client/create_channel_internal.h - src/cpp/client/secure_credentials.h @@ -4015,19 +4015,18 @@ libs: language: c++ public_headers: [] headers: - - src/core/lib/gpr/subprocess.h + - src/core/util/subprocess.h - test/core/end2end/data/ssl_test_data.h - - test/core/util/cmdline.h - - test/core/util/evaluate_args_test_util.h - - test/core/util/fuzzer_util.h - - test/core/util/grpc_profiler.h - - test/core/util/histogram.h - - test/core/util/mock_authorization_endpoint.h - - test/core/util/mock_endpoint.h - - test/core/util/parse_hexstring.h - - test/core/util/resolve_localhost_ip46.h - - test/core/util/slice_splitter.h - - test/core/util/tracer_util.h + - test/core/test_util/cmdline.h + - test/core/test_util/evaluate_args_test_util.h + - test/core/test_util/fuzzer_util.h + - test/core/test_util/grpc_profiler.h + - test/core/test_util/histogram.h + - test/core/test_util/mock_endpoint.h + - test/core/test_util/parse_hexstring.h + - test/core/test_util/resolve_localhost_ip46.h + - test/core/test_util/slice_splitter.h + - test/core/test_util/tracer_util.h - test/cpp/util/byte_buffer_proto_helper.h - test/cpp/util/create_test_channel.h - test/cpp/util/credentials.h @@ -4035,21 +4034,21 @@ libs: - test/cpp/util/subprocess.h - test/cpp/util/test_credentials_provider.h src: - - src/core/lib/gpr/subprocess_posix.cc - - src/core/lib/gpr/subprocess_windows.cc + - src/core/util/subprocess_posix.cc + - src/core/util/subprocess_windows.cc - test/core/end2end/data/client_certs.cc - test/core/end2end/data/server1_cert.cc - test/core/end2end/data/server1_key.cc - test/core/end2end/data/test_root_cert.cc - - test/core/util/cmdline.cc - - test/core/util/fuzzer_util.cc - - test/core/util/grpc_profiler.cc - - test/core/util/histogram.cc - - test/core/util/mock_endpoint.cc - - test/core/util/parse_hexstring.cc - - test/core/util/resolve_localhost_ip46.cc - - test/core/util/slice_splitter.cc - - test/core/util/tracer_util.cc + - test/core/test_util/cmdline.cc + - test/core/test_util/fuzzer_util.cc + - test/core/test_util/grpc_profiler.cc + - test/core/test_util/histogram.cc + - test/core/test_util/mock_endpoint.cc + - test/core/test_util/parse_hexstring.cc + - test/core/test_util/resolve_localhost_ip46.cc + - test/core/test_util/slice_splitter.cc + - test/core/test_util/tracer_util.cc - test/cpp/util/byte_buffer_proto_helper.cc - test/cpp/util/create_test_channel.cc - test/cpp/util/string_ref_helper.cc @@ -4223,6 +4222,7 @@ libs: - include/grpcpp/impl/service_type.h - include/grpcpp/impl/status.h - include/grpcpp/impl/sync.h + - include/grpcpp/passive_listener.h - include/grpcpp/resource_quota.h - include/grpcpp/security/audit_logging.h - include/grpcpp/security/auth_context.h @@ -4371,6 +4371,7 @@ libs: - include/grpc/impl/propagation_bits.h - include/grpc/impl/slice_type.h - include/grpc/load_reporting.h + - include/grpc/passive_listener.h - include/grpc/slice.h - include/grpc/slice_buffer.h - include/grpc/status.h @@ -4395,6 +4396,9 @@ libs: - include/grpc/support/time.h - include/grpc/support/workaround_list.h headers: + - src/core/channelz/channel_trace.h + - src/core/channelz/channelz.h + - src/core/channelz/channelz_registry.h - src/core/ext/upb-gen/google/protobuf/any.upb.h - src/core/ext/upb-gen/google/protobuf/any.upb_minitable.h - src/core/ext/upb-gen/google/rpc/status.upb.h @@ -4405,6 +4409,15 @@ libs: - src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb_minitable.h - src/core/ext/upb-gen/src/proto/grpc/gcp/transport_security_common.upb.h - src/core/ext/upb-gen/src/proto/grpc/gcp/transport_security_common.upb_minitable.h + - src/core/handshaker/endpoint_info/endpoint_info_handshaker.h + - src/core/handshaker/handshaker.h + - src/core/handshaker/handshaker_factory.h + - src/core/handshaker/handshaker_registry.h + - src/core/handshaker/proxy_mapper.h + - src/core/handshaker/proxy_mapper_registry.h + - src/core/handshaker/security/secure_endpoint.h + - src/core/handshaker/security/security_handshaker.h + - src/core/handshaker/security/tsi_error.h - src/core/lib/address_utils/parse_address.h - src/core/lib/address_utils/sockaddr_utils.h - src/core/lib/avl/avl.h @@ -4418,9 +4431,6 @@ libs: - src/core/lib/channel/channel_stack_builder.h - src/core/lib/channel/channel_stack_builder_impl.h - src/core/lib/channel/channel_stack_trace.h - - src/core/lib/channel/channel_trace.h - - src/core/lib/channel/channelz.h - - src/core/lib/channel/channelz_registry.h - src/core/lib/channel/connected_channel.h - src/core/lib/channel/context.h - src/core/lib/channel/metrics.h @@ -4500,7 +4510,6 @@ libs: - src/core/lib/event_engine/work_queue/work_queue.h - src/core/lib/experiments/config.h - src/core/lib/experiments/experiments.h - - src/core/lib/gpr/spinlock.h - src/core/lib/gprpp/atomic_utils.h - src/core/lib/gprpp/bitset.h - src/core/lib/gprpp/chunked_vector.h @@ -4528,8 +4537,6 @@ libs: - src/core/lib/gprpp/unique_type_name.h - src/core/lib/gprpp/validation_errors.h - src/core/lib/gprpp/work_serializer.h - - src/core/lib/handshaker/proxy_mapper.h - - src/core/lib/handshaker/proxy_mapper_registry.h - src/core/lib/iomgr/block_annotate.h - src/core/lib/iomgr/buffer_list.h - src/core/lib/iomgr/call_combiner.h @@ -4603,6 +4610,7 @@ libs: - src/core/lib/promise/activity.h - src/core/lib/promise/all_ok.h - src/core/lib/promise/arena_promise.h + - src/core/lib/promise/cancel_callback.h - src/core/lib/promise/context.h - src/core/lib/promise/detail/basic_seq.h - src/core/lib/promise/detail/join_state.h @@ -4620,7 +4628,6 @@ libs: - src/core/lib/promise/party.h - src/core/lib/promise/pipe.h - src/core/lib/promise/poll.h - - src/core/lib/promise/prioritized_race.h - src/core/lib/promise/promise.h - src/core/lib/promise/race.h - src/core/lib/promise/seq.h @@ -4661,9 +4668,6 @@ libs: - src/core/lib/security/security_connector/load_system_roots_supported.h - src/core/lib/security/security_connector/security_connector.h - src/core/lib/security/transport/auth_filters.h - - src/core/lib/security/transport/secure_endpoint.h - - src/core/lib/security/transport/security_handshaker.h - - src/core/lib/security/transport/tsi_error.h - src/core/lib/security/util/json_util.h - src/core/lib/slice/percent_encoding.h - src/core/lib/slice/slice.h @@ -4684,21 +4688,19 @@ libs: - src/core/lib/surface/init.h - src/core/lib/surface/init_internally.h - src/core/lib/surface/lame_client.h - - src/core/lib/surface/server_interface.h - src/core/lib/surface/validate_metadata.h - src/core/lib/surface/wait_for_cq_end_op.h - src/core/lib/transport/batch_builder.h + - src/core/lib/transport/call_arena_allocator.h + - src/core/lib/transport/call_destination.h - src/core/lib/transport/call_filters.h - src/core/lib/transport/call_final_info.h - src/core/lib/transport/call_spine.h - src/core/lib/transport/connectivity_state.h - src/core/lib/transport/custom_metadata.h - - src/core/lib/transport/endpoint_info_handshaker.h - src/core/lib/transport/error_utils.h - - src/core/lib/transport/handshaker.h - - src/core/lib/transport/handshaker_factory.h - - src/core/lib/transport/handshaker_registry.h - src/core/lib/transport/http2_errors.h + - src/core/lib/transport/interception_chain.h - src/core/lib/transport/message.h - src/core/lib/transport/metadata.h - src/core/lib/transport/metadata_batch.h @@ -4720,6 +4722,7 @@ libs: - src/core/resolver/resolver_factory.h - src/core/resolver/resolver_registry.h - src/core/resolver/server_address.h + - src/core/server/server_interface.h - src/core/service_config/service_config.h - src/core/service_config/service_config_call_data.h - src/core/service_config/service_config_parser.h @@ -4727,6 +4730,7 @@ libs: - src/core/tsi/transport_security.h - src/core/tsi/transport_security_grpc.h - src/core/tsi/transport_security_interface.h + - src/core/util/spinlock.h - third_party/upb/upb/generated_code_support.h - third_party/upb/upb/mini_descriptor/build_enum.h - third_party/upb/upb/mini_descriptor/decode.h @@ -4747,11 +4751,21 @@ libs: - third_party/upb/upb/wire/reader.h - third_party/upb/upb/wire/types.h src: + - src/core/channelz/channel_trace.cc + - src/core/channelz/channelz.cc + - src/core/channelz/channelz_registry.cc - src/core/ext/upb-gen/google/protobuf/any.upb_minitable.c - src/core/ext/upb-gen/google/rpc/status.upb_minitable.c - src/core/ext/upb-gen/src/proto/grpc/gcp/altscontext.upb_minitable.c - src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb_minitable.c - src/core/ext/upb-gen/src/proto/grpc/gcp/transport_security_common.upb_minitable.c + - src/core/handshaker/endpoint_info/endpoint_info_handshaker.cc + - src/core/handshaker/handshaker.cc + - src/core/handshaker/handshaker_registry.cc + - src/core/handshaker/proxy_mapper_registry.cc + - src/core/handshaker/security/secure_endpoint.cc + - src/core/handshaker/security/security_handshaker.cc + - src/core/handshaker/security/tsi_error.cc - src/core/lib/address_utils/parse_address.cc - src/core/lib/address_utils/sockaddr_utils.cc - src/core/lib/backoff/backoff.cc @@ -4762,9 +4776,6 @@ libs: - src/core/lib/channel/channel_stack_builder.cc - src/core/lib/channel/channel_stack_builder_impl.cc - src/core/lib/channel/channel_stack_trace.cc - - src/core/lib/channel/channel_trace.cc - - src/core/lib/channel/channelz.cc - - src/core/lib/channel/channelz_registry.cc - src/core/lib/channel/connected_channel.cc - src/core/lib/channel/metrics.cc - src/core/lib/channel/promise_based_filter.cc @@ -4835,7 +4846,6 @@ libs: - src/core/lib/gprpp/time_averaged_stats.cc - src/core/lib/gprpp/validation_errors.cc - src/core/lib/gprpp/work_serializer.cc - - src/core/lib/handshaker/proxy_mapper_registry.cc - src/core/lib/iomgr/buffer_list.cc - src/core/lib/iomgr/call_combiner.cc - src/core/lib/iomgr/cfstream_handle.cc @@ -4956,10 +4966,7 @@ libs: - src/core/lib/security/security_connector/load_system_roots_windows.cc - src/core/lib/security/security_connector/security_connector.cc - src/core/lib/security/transport/client_auth_filter.cc - - src/core/lib/security/transport/secure_endpoint.cc - - src/core/lib/security/transport/security_handshaker.cc - src/core/lib/security/transport/server_auth_filter.cc - - src/core/lib/security/transport/tsi_error.cc - src/core/lib/security/util/json_util.cc - src/core/lib/slice/percent_encoding.cc - src/core/lib/slice/slice.cc @@ -4985,14 +4992,13 @@ libs: - src/core/lib/surface/version.cc - src/core/lib/surface/wait_for_cq_end_op.cc - src/core/lib/transport/batch_builder.cc + - src/core/lib/transport/call_arena_allocator.cc - src/core/lib/transport/call_filters.cc - src/core/lib/transport/call_final_info.cc - src/core/lib/transport/call_spine.cc - src/core/lib/transport/connectivity_state.cc - - src/core/lib/transport/endpoint_info_handshaker.cc - src/core/lib/transport/error_utils.cc - - src/core/lib/transport/handshaker.cc - - src/core/lib/transport/handshaker_registry.cc + - src/core/lib/transport/interception_chain.cc - src/core/lib/transport/message.cc - src/core/lib/transport/metadata.cc - src/core/lib/transport/metadata_batch.cc @@ -5119,28 +5125,27 @@ targets: build: test language: c headers: - - test/core/util/cmdline.h - - test/core/util/evaluate_args_test_util.h - - test/core/util/fuzzer_util.h - - test/core/util/grpc_profiler.h - - test/core/util/histogram.h - - test/core/util/mock_authorization_endpoint.h - - test/core/util/mock_endpoint.h - - test/core/util/parse_hexstring.h - - test/core/util/resolve_localhost_ip46.h - - test/core/util/slice_splitter.h - - test/core/util/tracer_util.h + - test/core/test_util/cmdline.h + - test/core/test_util/evaluate_args_test_util.h + - test/core/test_util/fuzzer_util.h + - test/core/test_util/grpc_profiler.h + - test/core/test_util/histogram.h + - test/core/test_util/mock_endpoint.h + - test/core/test_util/parse_hexstring.h + - test/core/test_util/resolve_localhost_ip46.h + - test/core/test_util/slice_splitter.h + - test/core/test_util/tracer_util.h src: - test/core/iomgr/fd_conservation_posix_test.cc - - test/core/util/cmdline.cc - - test/core/util/fuzzer_util.cc - - test/core/util/grpc_profiler.cc - - test/core/util/histogram.cc - - test/core/util/mock_endpoint.cc - - test/core/util/parse_hexstring.cc - - test/core/util/resolve_localhost_ip46.cc - - test/core/util/slice_splitter.cc - - test/core/util/tracer_util.cc + - test/core/test_util/cmdline.cc + - test/core/test_util/fuzzer_util.cc + - test/core/test_util/grpc_profiler.cc + - test/core/test_util/histogram.cc + - test/core/test_util/mock_endpoint.cc + - test/core/test_util/parse_hexstring.cc + - test/core/test_util/resolve_localhost_ip46.cc + - test/core/test_util/slice_splitter.cc + - test/core/test_util/tracer_util.cc deps: - grpc_test_util platforms: @@ -5174,7 +5179,7 @@ targets: - src/core/load_balancing/weighted_round_robin/static_stride_scheduler.h src: - src/core/load_balancing/weighted_round_robin/static_stride_scheduler.cc - - test/core/client_channel/lb_policy/static_stride_scheduler_benchmark.cc + - test/core/load_balancing/static_stride_scheduler_benchmark.cc deps: - absl/algorithm:container - absl/types:span @@ -5190,28 +5195,27 @@ targets: build: test language: c headers: - - test/core/util/cmdline.h - - test/core/util/evaluate_args_test_util.h - - test/core/util/fuzzer_util.h - - test/core/util/grpc_profiler.h - - test/core/util/histogram.h - - test/core/util/mock_authorization_endpoint.h - - test/core/util/mock_endpoint.h - - test/core/util/parse_hexstring.h - - test/core/util/resolve_localhost_ip46.h - - test/core/util/slice_splitter.h - - test/core/util/tracer_util.h + - test/core/test_util/cmdline.h + - test/core/test_util/evaluate_args_test_util.h + - test/core/test_util/fuzzer_util.h + - test/core/test_util/grpc_profiler.h + - test/core/test_util/histogram.h + - test/core/test_util/mock_endpoint.h + - test/core/test_util/parse_hexstring.h + - test/core/test_util/resolve_localhost_ip46.h + - test/core/test_util/slice_splitter.h + - test/core/test_util/tracer_util.h src: - test/core/iomgr/timer_list_test.cc - - test/core/util/cmdline.cc - - test/core/util/fuzzer_util.cc - - test/core/util/grpc_profiler.cc - - test/core/util/histogram.cc - - test/core/util/mock_endpoint.cc - - test/core/util/parse_hexstring.cc - - test/core/util/resolve_localhost_ip46.cc - - test/core/util/slice_splitter.cc - - test/core/util/tracer_util.cc + - test/core/test_util/cmdline.cc + - test/core/test_util/fuzzer_util.cc + - test/core/test_util/grpc_profiler.cc + - test/core/test_util/histogram.cc + - test/core/test_util/mock_endpoint.cc + - test/core/test_util/parse_hexstring.cc + - test/core/test_util/resolve_localhost_ip46.cc + - test/core/test_util/slice_splitter.cc + - test/core/test_util/tracer_util.cc deps: - grpc_test_util uses_polling: false @@ -5278,34 +5282,33 @@ targets: build: test language: c++ headers: - - src/core/lib/gpr/subprocess.h - - test/core/util/cmdline.h - - test/core/util/evaluate_args_test_util.h - - test/core/util/fuzzer_util.h - - test/core/util/grpc_profiler.h - - test/core/util/histogram.h - - test/core/util/mock_authorization_endpoint.h - - test/core/util/mock_endpoint.h - - test/core/util/parse_hexstring.h - - test/core/util/resolve_localhost_ip46.h - - test/core/util/slice_splitter.h - - test/core/util/tracer_util.h + - src/core/util/subprocess.h + - test/core/test_util/cmdline.h + - test/core/test_util/evaluate_args_test_util.h + - test/core/test_util/fuzzer_util.h + - test/core/test_util/grpc_profiler.h + - test/core/test_util/histogram.h + - test/core/test_util/mock_endpoint.h + - test/core/test_util/parse_hexstring.h + - test/core/test_util/resolve_localhost_ip46.h + - test/core/test_util/slice_splitter.h + - test/core/test_util/tracer_util.h - test/cpp/util/byte_buffer_proto_helper.h - test/cpp/util/credentials.h - test/cpp/util/string_ref_helper.h - test/cpp/util/subprocess.h src: - - src/core/lib/gpr/subprocess_posix.cc - - src/core/lib/gpr/subprocess_windows.cc - - test/core/util/cmdline.cc - - test/core/util/fuzzer_util.cc - - test/core/util/grpc_profiler.cc - - test/core/util/histogram.cc - - test/core/util/mock_endpoint.cc - - test/core/util/parse_hexstring.cc - - test/core/util/resolve_localhost_ip46.cc - - test/core/util/slice_splitter.cc - - test/core/util/tracer_util.cc + - src/core/util/subprocess_posix.cc + - src/core/util/subprocess_windows.cc + - test/core/test_util/cmdline.cc + - test/core/test_util/fuzzer_util.cc + - test/core/test_util/grpc_profiler.cc + - test/core/test_util/histogram.cc + - test/core/test_util/mock_endpoint.cc + - test/core/test_util/parse_hexstring.cc + - test/core/test_util/resolve_localhost_ip46.cc + - test/core/test_util/slice_splitter.cc + - test/core/test_util/tracer_util.cc - test/cpp/naming/address_sorting_test.cc - test/cpp/util/byte_buffer_proto_helper.cc - test/cpp/util/string_ref_helper.cc @@ -5343,27 +5346,26 @@ targets: build: test language: c++ headers: - - test/core/util/cmdline.h - - test/core/util/evaluate_args_test_util.h - - test/core/util/fuzzer_util.h - - test/core/util/grpc_profiler.h - - test/core/util/histogram.h - - test/core/util/mock_authorization_endpoint.h - - test/core/util/mock_endpoint.h - - test/core/util/parse_hexstring.h - - test/core/util/resolve_localhost_ip46.h - - test/core/util/slice_splitter.h - - test/core/util/tracer_util.h - src: - - test/core/util/cmdline.cc - - test/core/util/fuzzer_util.cc - - test/core/util/grpc_profiler.cc - - test/core/util/histogram.cc - - test/core/util/mock_endpoint.cc - - test/core/util/parse_hexstring.cc - - test/core/util/resolve_localhost_ip46.cc - - test/core/util/slice_splitter.cc - - test/core/util/tracer_util.cc + - test/core/test_util/cmdline.h + - test/core/test_util/evaluate_args_test_util.h + - test/core/test_util/fuzzer_util.h + - test/core/test_util/grpc_profiler.h + - test/core/test_util/histogram.h + - test/core/test_util/mock_endpoint.h + - test/core/test_util/parse_hexstring.h + - test/core/test_util/resolve_localhost_ip46.h + - test/core/test_util/slice_splitter.h + - test/core/test_util/tracer_util.h + src: + - test/core/test_util/cmdline.cc + - test/core/test_util/fuzzer_util.cc + - test/core/test_util/grpc_profiler.cc + - test/core/test_util/histogram.cc + - test/core/test_util/mock_endpoint.cc + - test/core/test_util/parse_hexstring.cc + - test/core/test_util/resolve_localhost_ip46.cc + - test/core/test_util/slice_splitter.cc + - test/core/test_util/tracer_util.cc - test/cpp/common/alarm_test.cc deps: - gtest @@ -5405,7 +5407,7 @@ targets: language: c++ headers: [] src: - - test/core/gpr/alloc_test.cc + - test/core/util/alloc_test.cc deps: - gtest - grpc_test_util @@ -5427,15 +5429,15 @@ targets: language: c++ headers: - test/core/end2end/cq_verifier.h + - test/core/test_util/fake_udp_and_tcp_server.h - test/core/tsi/alts/fake_handshaker/fake_handshaker_server.h - - test/core/util/fake_udp_and_tcp_server.h src: - test/core/tsi/alts/fake_handshaker/handshaker.proto - test/core/tsi/alts/fake_handshaker/transport_security_common.proto - test/core/end2end/cq_verifier.cc + - test/core/test_util/fake_udp_and_tcp_server.cc - test/core/tsi/alts/fake_handshaker/fake_handshaker_server.cc - test/core/tsi/alts/handshaker/alts_concurrent_connectivity_test.cc - - test/core/util/fake_udp_and_tcp_server.cc deps: - gtest - grpc++ @@ -5492,7 +5494,6 @@ targets: - test/core/tsi/transport_security_test_lib.cc deps: - gtest - - absl/log:check - grpc_test_util - name: alts_grpc_record_protocol_test gtest: true @@ -5535,28 +5536,27 @@ targets: build: test language: c++ headers: - - test/core/util/cmdline.h - - test/core/util/evaluate_args_test_util.h - - test/core/util/fuzzer_util.h - - test/core/util/grpc_profiler.h - - test/core/util/histogram.h - - test/core/util/mock_authorization_endpoint.h - - test/core/util/mock_endpoint.h - - test/core/util/parse_hexstring.h - - test/core/util/resolve_localhost_ip46.h - - test/core/util/slice_splitter.h - - test/core/util/tracer_util.h + - test/core/test_util/cmdline.h + - test/core/test_util/evaluate_args_test_util.h + - test/core/test_util/fuzzer_util.h + - test/core/test_util/grpc_profiler.h + - test/core/test_util/histogram.h + - test/core/test_util/mock_endpoint.h + - test/core/test_util/parse_hexstring.h + - test/core/test_util/resolve_localhost_ip46.h + - test/core/test_util/slice_splitter.h + - test/core/test_util/tracer_util.h src: - test/core/security/alts_security_connector_test.cc - - test/core/util/cmdline.cc - - test/core/util/fuzzer_util.cc - - test/core/util/grpc_profiler.cc - - test/core/util/histogram.cc - - test/core/util/mock_endpoint.cc - - test/core/util/parse_hexstring.cc - - test/core/util/resolve_localhost_ip46.cc - - test/core/util/slice_splitter.cc - - test/core/util/tracer_util.cc + - test/core/test_util/cmdline.cc + - test/core/test_util/fuzzer_util.cc + - test/core/test_util/grpc_profiler.cc + - test/core/test_util/histogram.cc + - test/core/test_util/mock_endpoint.cc + - test/core/test_util/parse_hexstring.cc + - test/core/test_util/resolve_localhost_ip46.cc + - test/core/test_util/slice_splitter.cc + - test/core/test_util/tracer_util.cc deps: - gtest - grpc_test_util @@ -5645,35 +5645,33 @@ targets: - test/cpp/end2end/async_end2end_test.cc deps: - gtest - - absl/log:check - grpc++_test_util - name: auth_context_test gtest: true build: test language: c++ headers: - - test/core/util/cmdline.h - - test/core/util/evaluate_args_test_util.h - - test/core/util/fuzzer_util.h - - test/core/util/grpc_profiler.h - - test/core/util/histogram.h - - test/core/util/mock_authorization_endpoint.h - - test/core/util/mock_endpoint.h - - test/core/util/parse_hexstring.h - - test/core/util/resolve_localhost_ip46.h - - test/core/util/slice_splitter.h - - test/core/util/tracer_util.h + - test/core/test_util/cmdline.h + - test/core/test_util/evaluate_args_test_util.h + - test/core/test_util/fuzzer_util.h + - test/core/test_util/grpc_profiler.h + - test/core/test_util/histogram.h + - test/core/test_util/mock_endpoint.h + - test/core/test_util/parse_hexstring.h + - test/core/test_util/resolve_localhost_ip46.h + - test/core/test_util/slice_splitter.h + - test/core/test_util/tracer_util.h src: - test/core/security/auth_context_test.cc - - test/core/util/cmdline.cc - - test/core/util/fuzzer_util.cc - - test/core/util/grpc_profiler.cc - - test/core/util/histogram.cc - - test/core/util/mock_endpoint.cc - - test/core/util/parse_hexstring.cc - - test/core/util/resolve_localhost_ip46.cc - - test/core/util/slice_splitter.cc - - test/core/util/tracer_util.cc + - test/core/test_util/cmdline.cc + - test/core/test_util/fuzzer_util.cc + - test/core/test_util/grpc_profiler.cc + - test/core/test_util/histogram.cc + - test/core/test_util/mock_endpoint.cc + - test/core/test_util/parse_hexstring.cc + - test/core/test_util/resolve_localhost_ip46.cc + - test/core/test_util/slice_splitter.cc + - test/core/test_util/tracer_util.cc deps: - gtest - grpc_test_util @@ -5694,28 +5692,27 @@ targets: build: test language: c++ headers: - - test/core/util/cmdline.h - - test/core/util/evaluate_args_test_util.h - - test/core/util/fuzzer_util.h - - test/core/util/grpc_profiler.h - - test/core/util/histogram.h - - test/core/util/mock_authorization_endpoint.h - - test/core/util/mock_endpoint.h - - test/core/util/parse_hexstring.h - - test/core/util/resolve_localhost_ip46.h - - test/core/util/slice_splitter.h - - test/core/util/tracer_util.h + - test/core/test_util/cmdline.h + - test/core/test_util/evaluate_args_test_util.h + - test/core/test_util/fuzzer_util.h + - test/core/test_util/grpc_profiler.h + - test/core/test_util/histogram.h + - test/core/test_util/mock_endpoint.h + - test/core/test_util/parse_hexstring.h + - test/core/test_util/resolve_localhost_ip46.h + - test/core/test_util/slice_splitter.h + - test/core/test_util/tracer_util.h src: - test/core/security/authorization_matchers_test.cc - - test/core/util/cmdline.cc - - test/core/util/fuzzer_util.cc - - test/core/util/grpc_profiler.cc - - test/core/util/histogram.cc - - test/core/util/mock_endpoint.cc - - test/core/util/parse_hexstring.cc - - test/core/util/resolve_localhost_ip46.cc - - test/core/util/slice_splitter.cc - - test/core/util/tracer_util.cc + - test/core/test_util/cmdline.cc + - test/core/test_util/fuzzer_util.cc + - test/core/test_util/grpc_profiler.cc + - test/core/test_util/histogram.cc + - test/core/test_util/mock_endpoint.cc + - test/core/test_util/parse_hexstring.cc + - test/core/test_util/resolve_localhost_ip46.cc + - test/core/test_util/slice_splitter.cc + - test/core/test_util/tracer_util.cc deps: - gtest - grpc_test_util @@ -5755,28 +5752,27 @@ targets: build: test language: c++ headers: - - test/core/util/cmdline.h - - test/core/util/evaluate_args_test_util.h - - test/core/util/fuzzer_util.h - - test/core/util/grpc_profiler.h - - test/core/util/histogram.h - - test/core/util/mock_authorization_endpoint.h - - test/core/util/mock_endpoint.h - - test/core/util/parse_hexstring.h - - test/core/util/resolve_localhost_ip46.h - - test/core/util/slice_splitter.h - - test/core/util/tracer_util.h + - test/core/test_util/cmdline.h + - test/core/test_util/evaluate_args_test_util.h + - test/core/test_util/fuzzer_util.h + - test/core/test_util/grpc_profiler.h + - test/core/test_util/histogram.h + - test/core/test_util/mock_endpoint.h + - test/core/test_util/parse_hexstring.h + - test/core/test_util/resolve_localhost_ip46.h + - test/core/test_util/slice_splitter.h + - test/core/test_util/tracer_util.h src: - test/core/security/aws_request_signer_test.cc - - test/core/util/cmdline.cc - - test/core/util/fuzzer_util.cc - - test/core/util/grpc_profiler.cc - - test/core/util/histogram.cc - - test/core/util/mock_endpoint.cc - - test/core/util/parse_hexstring.cc - - test/core/util/resolve_localhost_ip46.cc - - test/core/util/slice_splitter.cc - - test/core/util/tracer_util.cc + - test/core/test_util/cmdline.cc + - test/core/test_util/fuzzer_util.cc + - test/core/test_util/grpc_profiler.cc + - test/core/test_util/histogram.cc + - test/core/test_util/mock_endpoint.cc + - test/core/test_util/parse_hexstring.cc + - test/core/test_util/resolve_localhost_ip46.cc + - test/core/test_util/slice_splitter.cc + - test/core/test_util/tracer_util.cc deps: - gtest - grpc_test_util @@ -5795,7 +5791,6 @@ targets: - test/cpp/interop/backend_metrics_lb_policy_test.cc deps: - gtest - - absl/log:check - grpc++ - grpc_test_util - grpc++_test_config @@ -5845,8 +5840,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -5866,11 +5861,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/bad_ping.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -5891,33 +5885,32 @@ targets: build: test language: c++ headers: - - src/core/lib/gpr/subprocess.h + - src/core/util/subprocess.h - test/core/end2end/cq_verifier.h - - test/core/util/cmdline.h - - test/core/util/evaluate_args_test_util.h - - test/core/util/fuzzer_util.h - - test/core/util/grpc_profiler.h - - test/core/util/histogram.h - - test/core/util/mock_authorization_endpoint.h - - test/core/util/mock_endpoint.h - - test/core/util/parse_hexstring.h - - test/core/util/resolve_localhost_ip46.h - - test/core/util/slice_splitter.h - - test/core/util/tracer_util.h - src: - - src/core/lib/gpr/subprocess_posix.cc - - src/core/lib/gpr/subprocess_windows.cc + - test/core/test_util/cmdline.h + - test/core/test_util/evaluate_args_test_util.h + - test/core/test_util/fuzzer_util.h + - test/core/test_util/grpc_profiler.h + - test/core/test_util/histogram.h + - test/core/test_util/mock_endpoint.h + - test/core/test_util/parse_hexstring.h + - test/core/test_util/resolve_localhost_ip46.h + - test/core/test_util/slice_splitter.h + - test/core/test_util/tracer_util.h + src: + - src/core/util/subprocess_posix.cc + - src/core/util/subprocess_windows.cc - test/core/bad_ssl/bad_ssl_test.cc - test/core/end2end/cq_verifier.cc - - test/core/util/cmdline.cc - - test/core/util/fuzzer_util.cc - - test/core/util/grpc_profiler.cc - - test/core/util/histogram.cc - - test/core/util/mock_endpoint.cc - - test/core/util/parse_hexstring.cc - - test/core/util/resolve_localhost_ip46.cc - - test/core/util/slice_splitter.cc - - test/core/util/tracer_util.cc + - test/core/test_util/cmdline.cc + - test/core/test_util/fuzzer_util.cc + - test/core/test_util/grpc_profiler.cc + - test/core/test_util/histogram.cc + - test/core/test_util/mock_endpoint.cc + - test/core/test_util/parse_hexstring.cc + - test/core/test_util/resolve_localhost_ip46.cc + - test/core/test_util/slice_splitter.cc + - test/core/test_util/tracer_util.cc deps: - gtest - grpc_test_util @@ -5930,33 +5923,32 @@ targets: build: test language: c++ headers: - - src/core/lib/gpr/subprocess.h + - src/core/util/subprocess.h - test/core/end2end/cq_verifier.h - - test/core/util/cmdline.h - - test/core/util/evaluate_args_test_util.h - - test/core/util/fuzzer_util.h - - test/core/util/grpc_profiler.h - - test/core/util/histogram.h - - test/core/util/mock_authorization_endpoint.h - - test/core/util/mock_endpoint.h - - test/core/util/parse_hexstring.h - - test/core/util/resolve_localhost_ip46.h - - test/core/util/slice_splitter.h - - test/core/util/tracer_util.h - src: - - src/core/lib/gpr/subprocess_posix.cc - - src/core/lib/gpr/subprocess_windows.cc + - test/core/test_util/cmdline.h + - test/core/test_util/evaluate_args_test_util.h + - test/core/test_util/fuzzer_util.h + - test/core/test_util/grpc_profiler.h + - test/core/test_util/histogram.h + - test/core/test_util/mock_endpoint.h + - test/core/test_util/parse_hexstring.h + - test/core/test_util/resolve_localhost_ip46.h + - test/core/test_util/slice_splitter.h + - test/core/test_util/tracer_util.h + src: + - src/core/util/subprocess_posix.cc + - src/core/util/subprocess_windows.cc - test/core/bad_ssl/bad_ssl_test.cc - test/core/end2end/cq_verifier.cc - - test/core/util/cmdline.cc - - test/core/util/fuzzer_util.cc - - test/core/util/grpc_profiler.cc - - test/core/util/histogram.cc - - test/core/util/mock_endpoint.cc - - test/core/util/parse_hexstring.cc - - test/core/util/resolve_localhost_ip46.cc - - test/core/util/slice_splitter.cc - - test/core/util/tracer_util.cc + - test/core/test_util/cmdline.cc + - test/core/test_util/fuzzer_util.cc + - test/core/test_util/grpc_profiler.cc + - test/core/test_util/histogram.cc + - test/core/test_util/mock_endpoint.cc + - test/core/test_util/parse_hexstring.cc + - test/core/test_util/resolve_localhost_ip46.cc + - test/core/test_util/slice_splitter.cc + - test/core/test_util/tracer_util.cc deps: - gtest - grpc_test_util @@ -5977,7 +5969,6 @@ targets: - test/core/end2end/cq_verifier.cc deps: - gtest - - absl/log:check - grpc_test_util - name: badreq_bad_client_test gtest: true @@ -5992,7 +5983,6 @@ targets: - test/core/end2end/cq_verifier.cc deps: - gtest - - absl/log:check - grpc_test_util - name: basic_work_queue_test gtest: true @@ -6076,8 +6066,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -6097,11 +6087,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/binary_metadata.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -6111,7 +6100,7 @@ targets: language: c++ headers: [] src: - - test/core/client_channel/resolvers/binder_resolver_test.cc + - test/core/resolver/binder_resolver_test.cc deps: - gtest - grpc_test_util @@ -6132,7 +6121,6 @@ targets: - test/cpp/end2end/test_service_impl.cc deps: - gtest - - absl/log:check - grpc++_test_util - name: binder_transport_test gtest: true @@ -6248,8 +6236,8 @@ targets: build: test language: c++ headers: - - src/core/lib/gpr/useful.h - src/core/lib/gprpp/bitset.h + - src/core/util/useful.h src: - test/core/gprpp/bitset_test.cc deps: @@ -6260,28 +6248,27 @@ targets: build: test language: c++ headers: - - test/core/util/cmdline.h - - test/core/util/evaluate_args_test_util.h - - test/core/util/fuzzer_util.h - - test/core/util/grpc_profiler.h - - test/core/util/histogram.h - - test/core/util/mock_authorization_endpoint.h - - test/core/util/mock_endpoint.h - - test/core/util/parse_hexstring.h - - test/core/util/resolve_localhost_ip46.h - - test/core/util/slice_splitter.h - - test/core/util/tracer_util.h + - test/core/test_util/cmdline.h + - test/core/test_util/evaluate_args_test_util.h + - test/core/test_util/fuzzer_util.h + - test/core/test_util/grpc_profiler.h + - test/core/test_util/histogram.h + - test/core/test_util/mock_endpoint.h + - test/core/test_util/parse_hexstring.h + - test/core/test_util/resolve_localhost_ip46.h + - test/core/test_util/slice_splitter.h + - test/core/test_util/tracer_util.h src: - test/core/iomgr/buffer_list_test.cc - - test/core/util/cmdline.cc - - test/core/util/fuzzer_util.cc - - test/core/util/grpc_profiler.cc - - test/core/util/histogram.cc - - test/core/util/mock_endpoint.cc - - test/core/util/parse_hexstring.cc - - test/core/util/resolve_localhost_ip46.cc - - test/core/util/slice_splitter.cc - - test/core/util/tracer_util.cc + - test/core/test_util/cmdline.cc + - test/core/test_util/fuzzer_util.cc + - test/core/test_util/grpc_profiler.cc + - test/core/test_util/histogram.cc + - test/core/test_util/mock_endpoint.cc + - test/core/test_util/parse_hexstring.cc + - test/core/test_util/resolve_localhost_ip46.cc + - test/core/test_util/slice_splitter.cc + - test/core/test_util/tracer_util.cc deps: - gtest - grpc_test_util @@ -6342,8 +6329,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -6363,11 +6350,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/call_creds.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -6387,7 +6373,6 @@ targets: - src/core/lib/event_engine/event_engine_context.h - src/core/lib/experiments/config.h - src/core/lib/experiments/experiments.h - - src/core/lib/gpr/spinlock.h - src/core/lib/gprpp/atomic_utils.h - src/core/lib/gprpp/bitset.h - src/core/lib/gprpp/chunked_vector.h @@ -6453,6 +6438,8 @@ targets: - src/core/lib/transport/simple_slice_based_metadata.h - src/core/lib/transport/status_conversion.h - src/core/lib/transport/timeout_encoding.h + - src/core/util/spinlock.h + - test/core/promise/poll_matcher.h - third_party/upb/upb/generated_code_support.h - third_party/upb/upb/mini_descriptor/build_enum.h - third_party/upb/upb/mini_descriptor/decode.h @@ -6583,8 +6570,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -6604,11 +6591,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/call_host_override.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -6617,10 +6603,10 @@ targets: build: test language: c++ headers: - - test/core/util/fake_stats_plugin.h + - test/core/test_util/fake_stats_plugin.h src: - test/core/channel/call_tracer_test.cc - - test/core/util/fake_stats_plugin.cc + - test/core/test_util/fake_stats_plugin.cc deps: - gtest - grpc_test_util @@ -6660,8 +6646,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -6681,11 +6667,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/cancel_after_accept.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -6724,8 +6709,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -6745,11 +6730,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/cancel_after_client_done.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -6788,8 +6772,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -6809,11 +6793,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/cancel_after_invoke.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -6852,8 +6835,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -6873,11 +6856,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/cancel_after_round_trip.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -6887,12 +6869,12 @@ targets: language: c++ headers: - test/core/end2end/cq_verifier.h - - test/core/util/fake_udp_and_tcp_server.h - - test/core/util/socket_use_after_close_detector.h + - test/core/test_util/fake_udp_and_tcp_server.h + - test/core/test_util/socket_use_after_close_detector.h src: - test/core/end2end/cq_verifier.cc - - test/core/util/fake_udp_and_tcp_server.cc - - test/core/util/socket_use_after_close_detector.cc + - test/core/test_util/fake_udp_and_tcp_server.cc + - test/core/test_util/socket_use_after_close_detector.cc - test/cpp/naming/cancel_ares_query_test.cc deps: - gtest @@ -6933,8 +6915,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -6954,11 +6936,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/cancel_before_invoke.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -7012,8 +6993,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -7033,11 +7014,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/cancel_in_a_vacuum.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -7076,8 +7056,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -7097,11 +7077,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/cancel_with_status.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -7293,17 +7272,16 @@ targets: - src/core/lib/security/authorization/mock_cel/cel_value.h - src/core/lib/security/authorization/mock_cel/evaluator_core.h - src/core/lib/security/authorization/mock_cel/flat_expr_builder.h - - test/core/util/cmdline.h - - test/core/util/evaluate_args_test_util.h - - test/core/util/fuzzer_util.h - - test/core/util/grpc_profiler.h - - test/core/util/histogram.h - - test/core/util/mock_authorization_endpoint.h - - test/core/util/mock_endpoint.h - - test/core/util/parse_hexstring.h - - test/core/util/resolve_localhost_ip46.h - - test/core/util/slice_splitter.h - - test/core/util/tracer_util.h + - test/core/test_util/cmdline.h + - test/core/test_util/evaluate_args_test_util.h + - test/core/test_util/fuzzer_util.h + - test/core/test_util/grpc_profiler.h + - test/core/test_util/histogram.h + - test/core/test_util/mock_endpoint.h + - test/core/test_util/parse_hexstring.h + - test/core/test_util/resolve_localhost_ip46.h + - test/core/test_util/slice_splitter.h + - test/core/test_util/tracer_util.h src: - src/core/ext/upb-gen/envoy/annotations/deprecation.upb_minitable.c - src/core/ext/upb-gen/envoy/annotations/resource.upb_minitable.c @@ -7395,15 +7373,15 @@ targets: - src/core/ext/upb-gen/xds/type/v3/typed_struct.upb_minitable.c - src/core/lib/security/authorization/cel_authorization_engine.cc - test/core/security/cel_authorization_engine_test.cc - - test/core/util/cmdline.cc - - test/core/util/fuzzer_util.cc - - test/core/util/grpc_profiler.cc - - test/core/util/histogram.cc - - test/core/util/mock_endpoint.cc - - test/core/util/parse_hexstring.cc - - test/core/util/resolve_localhost_ip46.cc - - test/core/util/slice_splitter.cc - - test/core/util/tracer_util.cc + - test/core/test_util/cmdline.cc + - test/core/test_util/fuzzer_util.cc + - test/core/test_util/grpc_profiler.cc + - test/core/test_util/histogram.cc + - test/core/test_util/mock_endpoint.cc + - test/core/test_util/parse_hexstring.cc + - test/core/test_util/resolve_localhost_ip46.cc + - test/core/test_util/slice_splitter.cc + - test/core/test_util/tracer_util.cc deps: - gtest - grpc_test_util @@ -7437,7 +7415,6 @@ targets: - test/core/event_engine/cf/cf_engine_test.cc deps: - gtest - - absl/log:check - grpc_test_util platforms: - linux @@ -7462,7 +7439,6 @@ targets: - test/core/event_engine/test_suite/tests/timer_test.cc deps: - gtest - - absl/log:check - grpc_test_util platforms: - linux @@ -7484,7 +7460,6 @@ targets: - test/cpp/end2end/test_service_impl.cc deps: - gtest - - absl/log:check - grpc++_test_util - name: channel_args_test gtest: true @@ -7514,28 +7489,27 @@ targets: build: test language: c++ headers: - - test/core/util/cmdline.h - - test/core/util/evaluate_args_test_util.h - - test/core/util/fuzzer_util.h - - test/core/util/grpc_profiler.h - - test/core/util/histogram.h - - test/core/util/mock_authorization_endpoint.h - - test/core/util/mock_endpoint.h - - test/core/util/parse_hexstring.h - - test/core/util/resolve_localhost_ip46.h - - test/core/util/slice_splitter.h - - test/core/util/tracer_util.h + - test/core/test_util/cmdline.h + - test/core/test_util/evaluate_args_test_util.h + - test/core/test_util/fuzzer_util.h + - test/core/test_util/grpc_profiler.h + - test/core/test_util/histogram.h + - test/core/test_util/mock_endpoint.h + - test/core/test_util/parse_hexstring.h + - test/core/test_util/resolve_localhost_ip46.h + - test/core/test_util/slice_splitter.h + - test/core/test_util/tracer_util.h src: - test/core/security/channel_creds_registry_test.cc - - test/core/util/cmdline.cc - - test/core/util/fuzzer_util.cc - - test/core/util/grpc_profiler.cc - - test/core/util/histogram.cc - - test/core/util/mock_endpoint.cc - - test/core/util/parse_hexstring.cc - - test/core/util/resolve_localhost_ip46.cc - - test/core/util/slice_splitter.cc - - test/core/util/tracer_util.cc + - test/core/test_util/cmdline.cc + - test/core/test_util/fuzzer_util.cc + - test/core/test_util/grpc_profiler.cc + - test/core/test_util/histogram.cc + - test/core/test_util/mock_endpoint.cc + - test/core/test_util/parse_hexstring.cc + - test/core/test_util/resolve_localhost_ip46.cc + - test/core/test_util/slice_splitter.cc + - test/core/test_util/tracer_util.cc deps: - gtest - grpc_test_util @@ -7579,7 +7553,7 @@ targets: - test/cpp/util/channel_trace_proto_helper.h src: - src/proto/grpc/channelz/channelz.proto - - test/core/channel/channel_trace_test.cc + - test/core/channelz/channel_trace_test.cc - test/cpp/util/channel_trace_proto_helper.cc deps: - gtest @@ -7591,7 +7565,7 @@ targets: language: c++ headers: [] src: - - test/core/channel/channelz_registry_test.cc + - test/core/channelz/channelz_registry_test.cc deps: - gtest - grpc++ @@ -7614,7 +7588,6 @@ targets: - test/cpp/end2end/test_service_impl.cc deps: - gtest - - absl/log:check - grpcpp_channelz - grpc++_test_util - name: check_gcp_environment_linux_test @@ -7622,28 +7595,27 @@ targets: build: test language: c++ headers: - - test/core/util/cmdline.h - - test/core/util/evaluate_args_test_util.h - - test/core/util/fuzzer_util.h - - test/core/util/grpc_profiler.h - - test/core/util/histogram.h - - test/core/util/mock_authorization_endpoint.h - - test/core/util/mock_endpoint.h - - test/core/util/parse_hexstring.h - - test/core/util/resolve_localhost_ip46.h - - test/core/util/slice_splitter.h - - test/core/util/tracer_util.h + - test/core/test_util/cmdline.h + - test/core/test_util/evaluate_args_test_util.h + - test/core/test_util/fuzzer_util.h + - test/core/test_util/grpc_profiler.h + - test/core/test_util/histogram.h + - test/core/test_util/mock_endpoint.h + - test/core/test_util/parse_hexstring.h + - test/core/test_util/resolve_localhost_ip46.h + - test/core/test_util/slice_splitter.h + - test/core/test_util/tracer_util.h src: - test/core/security/check_gcp_environment_linux_test.cc - - test/core/util/cmdline.cc - - test/core/util/fuzzer_util.cc - - test/core/util/grpc_profiler.cc - - test/core/util/histogram.cc - - test/core/util/mock_endpoint.cc - - test/core/util/parse_hexstring.cc - - test/core/util/resolve_localhost_ip46.cc - - test/core/util/slice_splitter.cc - - test/core/util/tracer_util.cc + - test/core/test_util/cmdline.cc + - test/core/test_util/fuzzer_util.cc + - test/core/test_util/grpc_profiler.cc + - test/core/test_util/histogram.cc + - test/core/test_util/mock_endpoint.cc + - test/core/test_util/parse_hexstring.cc + - test/core/test_util/resolve_localhost_ip46.cc + - test/core/test_util/slice_splitter.cc + - test/core/test_util/tracer_util.cc deps: - gtest - grpc_test_util @@ -7652,28 +7624,27 @@ targets: build: test language: c++ headers: - - test/core/util/cmdline.h - - test/core/util/evaluate_args_test_util.h - - test/core/util/fuzzer_util.h - - test/core/util/grpc_profiler.h - - test/core/util/histogram.h - - test/core/util/mock_authorization_endpoint.h - - test/core/util/mock_endpoint.h - - test/core/util/parse_hexstring.h - - test/core/util/resolve_localhost_ip46.h - - test/core/util/slice_splitter.h - - test/core/util/tracer_util.h + - test/core/test_util/cmdline.h + - test/core/test_util/evaluate_args_test_util.h + - test/core/test_util/fuzzer_util.h + - test/core/test_util/grpc_profiler.h + - test/core/test_util/histogram.h + - test/core/test_util/mock_endpoint.h + - test/core/test_util/parse_hexstring.h + - test/core/test_util/resolve_localhost_ip46.h + - test/core/test_util/slice_splitter.h + - test/core/test_util/tracer_util.h src: - test/core/security/check_gcp_environment_windows_test.cc - - test/core/util/cmdline.cc - - test/core/util/fuzzer_util.cc - - test/core/util/grpc_profiler.cc - - test/core/util/histogram.cc - - test/core/util/mock_endpoint.cc - - test/core/util/parse_hexstring.cc - - test/core/util/resolve_localhost_ip46.cc - - test/core/util/slice_splitter.cc - - test/core/util/tracer_util.cc + - test/core/test_util/cmdline.cc + - test/core/test_util/fuzzer_util.cc + - test/core/test_util/grpc_profiler.cc + - test/core/test_util/histogram.cc + - test/core/test_util/mock_endpoint.cc + - test/core/test_util/parse_hexstring.cc + - test/core/test_util/resolve_localhost_ip46.cc + - test/core/test_util/slice_splitter.cc + - test/core/test_util/tracer_util.cc deps: - gtest - grpc_test_util @@ -7690,7 +7661,6 @@ targets: - src/core/lib/event_engine/event_engine_context.h - src/core/lib/experiments/config.h - src/core/lib/experiments/experiments.h - - src/core/lib/gpr/spinlock.h - src/core/lib/gprpp/atomic_utils.h - src/core/lib/gprpp/bitset.h - src/core/lib/gprpp/chunked_vector.h @@ -7734,6 +7704,7 @@ targets: - src/core/lib/slice/slice_internal.h - src/core/lib/slice/slice_refcount.h - src/core/lib/slice/slice_string_helpers.h + - src/core/util/spinlock.h - third_party/upb/upb/generated_code_support.h - third_party/upb/upb/mini_descriptor/build_enum.h - third_party/upb/upb/mini_descriptor/decode.h @@ -7845,7 +7816,6 @@ targets: - test/core/filters/filter_test.cc deps: - gtest - - absl/log:check - protobuf - grpc_test_util uses_polling: false @@ -7863,7 +7833,6 @@ targets: - test/core/filters/filter_test.cc deps: - gtest - - absl/log:check - protobuf - grpc_test_util uses_polling: false @@ -7884,7 +7853,6 @@ targets: - test/cpp/end2end/test_service_impl.cc deps: - gtest - - absl/log:check - grpc++_test_util - name: client_channel_service_config_test gtest: true @@ -7956,7 +7924,6 @@ targets: - test/cpp/end2end/test_service_impl.cc deps: - gtest - - absl/log:check - grpc++_test_util - name: client_lb_end2end_test gtest: true @@ -7964,7 +7931,7 @@ targets: run: false language: c++ headers: - - test/core/util/test_lb_policies.h + - test/core/test_util/test_lb_policies.h - test/cpp/end2end/connection_attempt_injector.h - test/cpp/end2end/test_service_impl.h src: @@ -7975,13 +7942,12 @@ targets: - src/proto/grpc/testing/simple_messages.proto - src/proto/grpc/testing/xds/v3/orca_load_report.proto - src/cpp/server/orca/orca_service.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/test_lb_policies.cc - test/cpp/end2end/client_lb_end2end_test.cc - test/cpp/end2end/connection_attempt_injector.cc - test/cpp/end2end/test_service_impl.cc deps: - gtest - - absl/log:check - grpc++_test_util platforms: - linux @@ -8036,8 +8002,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -8057,11 +8023,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/client_streaming.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -8070,28 +8035,27 @@ targets: build: test language: c++ headers: - - test/core/util/cmdline.h - - test/core/util/evaluate_args_test_util.h - - test/core/util/fuzzer_util.h - - test/core/util/grpc_profiler.h - - test/core/util/histogram.h - - test/core/util/mock_authorization_endpoint.h - - test/core/util/mock_endpoint.h - - test/core/util/parse_hexstring.h - - test/core/util/resolve_localhost_ip46.h - - test/core/util/slice_splitter.h - - test/core/util/tracer_util.h + - test/core/test_util/cmdline.h + - test/core/test_util/evaluate_args_test_util.h + - test/core/test_util/fuzzer_util.h + - test/core/test_util/grpc_profiler.h + - test/core/test_util/histogram.h + - test/core/test_util/mock_endpoint.h + - test/core/test_util/parse_hexstring.h + - test/core/test_util/resolve_localhost_ip46.h + - test/core/test_util/slice_splitter.h + - test/core/test_util/tracer_util.h src: - - test/core/util/cmdline.cc - - test/core/util/cmdline_test.cc - - test/core/util/fuzzer_util.cc - - test/core/util/grpc_profiler.cc - - test/core/util/histogram.cc - - test/core/util/mock_endpoint.cc - - test/core/util/parse_hexstring.cc - - test/core/util/resolve_localhost_ip46.cc - - test/core/util/slice_splitter.cc - - test/core/util/tracer_util.cc + - test/core/test_util/cmdline.cc + - test/core/test_util/cmdline_test.cc + - test/core/test_util/fuzzer_util.cc + - test/core/test_util/grpc_profiler.cc + - test/core/test_util/histogram.cc + - test/core/test_util/mock_endpoint.cc + - test/core/test_util/parse_hexstring.cc + - test/core/test_util/resolve_localhost_ip46.cc + - test/core/test_util/slice_splitter.cc + - test/core/test_util/tracer_util.cc deps: - gtest - grpc_test_util @@ -8126,28 +8090,27 @@ targets: run: false language: c++ headers: - - test/core/util/cmdline.h - - test/core/util/evaluate_args_test_util.h - - test/core/util/fuzzer_util.h - - test/core/util/grpc_profiler.h - - test/core/util/histogram.h - - test/core/util/mock_authorization_endpoint.h - - test/core/util/mock_endpoint.h - - test/core/util/parse_hexstring.h - - test/core/util/resolve_localhost_ip46.h - - test/core/util/slice_splitter.h - - test/core/util/tracer_util.h + - test/core/test_util/cmdline.h + - test/core/test_util/evaluate_args_test_util.h + - test/core/test_util/fuzzer_util.h + - test/core/test_util/grpc_profiler.h + - test/core/test_util/histogram.h + - test/core/test_util/mock_endpoint.h + - test/core/test_util/parse_hexstring.h + - test/core/test_util/resolve_localhost_ip46.h + - test/core/test_util/slice_splitter.h + - test/core/test_util/tracer_util.h src: - test/core/iomgr/combiner_test.cc - - test/core/util/cmdline.cc - - test/core/util/fuzzer_util.cc - - test/core/util/grpc_profiler.cc - - test/core/util/histogram.cc - - test/core/util/mock_endpoint.cc - - test/core/util/parse_hexstring.cc - - test/core/util/resolve_localhost_ip46.cc - - test/core/util/slice_splitter.cc - - test/core/util/tracer_util.cc + - test/core/test_util/cmdline.cc + - test/core/test_util/fuzzer_util.cc + - test/core/test_util/grpc_profiler.cc + - test/core/test_util/histogram.cc + - test/core/test_util/mock_endpoint.cc + - test/core/test_util/parse_hexstring.cc + - test/core/test_util/resolve_localhost_ip46.cc + - test/core/test_util/slice_splitter.cc + - test/core/test_util/tracer_util.cc deps: - gtest - grpc_test_util @@ -8213,8 +8176,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -8234,11 +8197,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/compressed_payload.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -8276,7 +8238,6 @@ targets: - test/core/end2end/cq_verifier.cc deps: - gtest - - absl/log:check - grpc_test_util - name: connection_refused_test gtest: true @@ -8295,28 +8256,27 @@ targets: build: test language: c++ headers: - - test/core/util/cmdline.h - - test/core/util/evaluate_args_test_util.h - - test/core/util/fuzzer_util.h - - test/core/util/grpc_profiler.h - - test/core/util/histogram.h - - test/core/util/mock_authorization_endpoint.h - - test/core/util/mock_endpoint.h - - test/core/util/parse_hexstring.h - - test/core/util/resolve_localhost_ip46.h - - test/core/util/slice_splitter.h - - test/core/util/tracer_util.h - src: + - test/core/test_util/cmdline.h + - test/core/test_util/evaluate_args_test_util.h + - test/core/test_util/fuzzer_util.h + - test/core/test_util/grpc_profiler.h + - test/core/test_util/histogram.h + - test/core/test_util/mock_endpoint.h + - test/core/test_util/parse_hexstring.h + - test/core/test_util/resolve_localhost_ip46.h + - test/core/test_util/slice_splitter.h + - test/core/test_util/tracer_util.h + src: + - test/core/test_util/cmdline.cc + - test/core/test_util/fuzzer_util.cc + - test/core/test_util/grpc_profiler.cc + - test/core/test_util/histogram.cc + - test/core/test_util/mock_endpoint.cc + - test/core/test_util/parse_hexstring.cc + - test/core/test_util/resolve_localhost_ip46.cc + - test/core/test_util/slice_splitter.cc + - test/core/test_util/tracer_util.cc - test/core/transport/connectivity_state_test.cc - - test/core/util/cmdline.cc - - test/core/util/fuzzer_util.cc - - test/core/util/grpc_profiler.cc - - test/core/util/histogram.cc - - test/core/util/mock_endpoint.cc - - test/core/util/parse_hexstring.cc - - test/core/util/resolve_localhost_ip46.cc - - test/core/util/slice_splitter.cc - - test/core/util/tracer_util.cc deps: - gtest - grpc_test_util @@ -8355,8 +8315,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -8376,11 +8336,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/connectivity.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -8399,7 +8358,6 @@ targets: - test/cpp/end2end/test_service_impl.cc deps: - gtest - - absl/log:check - grpc++_test_util - name: context_test gtest: true @@ -8444,7 +8402,7 @@ targets: language: c++ headers: [] src: - - test/core/gpr/cpu_test.cc + - test/core/util/cpu_test.cc deps: - gtest - grpc_test_util @@ -8464,7 +8422,6 @@ targets: - test/cpp/end2end/test_service_impl.cc deps: - gtest - - absl/log:check - grpc++_test_util - name: crl_ssl_transport_security_test gtest: true @@ -8477,7 +8434,6 @@ targets: - test/core/tsi/transport_security_test_lib.cc deps: - gtest - - absl/log:check - grpc_test_util platforms: - linux @@ -8528,8 +8484,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -8549,11 +8505,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/default_host.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -8572,7 +8527,6 @@ targets: - test/cpp/end2end/test_service_impl.cc deps: - gtest - - absl/log:check - grpc++_test_util - name: destroy_grpclb_channel_with_active_connect_stress_test gtest: true @@ -8630,8 +8584,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -8651,11 +8605,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/disappearing_server.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -8665,7 +8618,7 @@ targets: language: c++ headers: [] src: - - test/core/client_channel/resolvers/dns_resolver_cooldown_test.cc + - test/core/resolver/dns_resolver_cooldown_test.cc deps: - gtest - grpc_test_util @@ -8675,7 +8628,7 @@ targets: language: c++ headers: [] src: - - test/core/client_channel/resolvers/dns_resolver_test.cc + - test/core/resolver/dns_resolver_test.cc deps: - gtest - grpc_test_util @@ -8718,6 +8671,20 @@ targets: - linux - posix - mac +- name: dump_args_test + gtest: true + build: test + language: c++ + headers: + - src/core/lib/gprpp/dump_args.h + src: + - src/core/lib/gprpp/dump_args.cc + - test/core/gprpp/dump_args_test.cc + deps: + - gtest + - absl/functional:any_invocable + - absl/log:check + uses_polling: false - name: duplicate_header_bad_client_test gtest: true build: test @@ -8731,7 +8698,6 @@ targets: - test/core/end2end/cq_verifier.cc deps: - gtest - - absl/log:check - grpc_test_util - name: empty_batch_test gtest: true @@ -8768,8 +8734,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -8789,11 +8755,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/empty_batch.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -8817,7 +8782,6 @@ targets: - test/cpp/end2end/test_service_impl.cc deps: - gtest - - absl/log:check - grpc++_test_util platforms: - linux @@ -8840,7 +8804,6 @@ targets: - test/cpp/end2end/interceptors_util.cc - test/cpp/end2end/test_service_impl.cc deps: - - absl/log:check - grpc++_test - grpc++_test_util - name: endpoint_addresses_test @@ -9001,29 +8964,28 @@ targets: language: c++ headers: - test/core/iomgr/endpoint_tests.h - - test/core/util/cmdline.h - - test/core/util/evaluate_args_test_util.h - - test/core/util/fuzzer_util.h - - test/core/util/grpc_profiler.h - - test/core/util/histogram.h - - test/core/util/mock_authorization_endpoint.h - - test/core/util/mock_endpoint.h - - test/core/util/parse_hexstring.h - - test/core/util/resolve_localhost_ip46.h - - test/core/util/slice_splitter.h - - test/core/util/tracer_util.h + - test/core/test_util/cmdline.h + - test/core/test_util/evaluate_args_test_util.h + - test/core/test_util/fuzzer_util.h + - test/core/test_util/grpc_profiler.h + - test/core/test_util/histogram.h + - test/core/test_util/mock_endpoint.h + - test/core/test_util/parse_hexstring.h + - test/core/test_util/resolve_localhost_ip46.h + - test/core/test_util/slice_splitter.h + - test/core/test_util/tracer_util.h src: - test/core/iomgr/endpoint_pair_test.cc - test/core/iomgr/endpoint_tests.cc - - test/core/util/cmdline.cc - - test/core/util/fuzzer_util.cc - - test/core/util/grpc_profiler.cc - - test/core/util/histogram.cc - - test/core/util/mock_endpoint.cc - - test/core/util/parse_hexstring.cc - - test/core/util/resolve_localhost_ip46.cc - - test/core/util/slice_splitter.cc - - test/core/util/tracer_util.cc + - test/core/test_util/cmdline.cc + - test/core/test_util/fuzzer_util.cc + - test/core/test_util/grpc_profiler.cc + - test/core/test_util/histogram.cc + - test/core/test_util/mock_endpoint.cc + - test/core/test_util/parse_hexstring.cc + - test/core/test_util/resolve_localhost_ip46.cc + - test/core/test_util/slice_splitter.cc + - test/core/test_util/tracer_util.cc deps: - gtest - grpc_test_util @@ -9033,7 +8995,7 @@ targets: language: c++ headers: [] src: - - test/core/gpr/env_test.cc + - test/core/util/env_test.cc deps: - gtest - grpc_test_util @@ -9058,29 +9020,28 @@ targets: language: c++ headers: - test/core/iomgr/endpoint_tests.h - - test/core/util/cmdline.h - - test/core/util/evaluate_args_test_util.h - - test/core/util/fuzzer_util.h - - test/core/util/grpc_profiler.h - - test/core/util/histogram.h - - test/core/util/mock_authorization_endpoint.h - - test/core/util/mock_endpoint.h - - test/core/util/parse_hexstring.h - - test/core/util/resolve_localhost_ip46.h - - test/core/util/slice_splitter.h - - test/core/util/tracer_util.h + - test/core/test_util/cmdline.h + - test/core/test_util/evaluate_args_test_util.h + - test/core/test_util/fuzzer_util.h + - test/core/test_util/grpc_profiler.h + - test/core/test_util/histogram.h + - test/core/test_util/mock_endpoint.h + - test/core/test_util/parse_hexstring.h + - test/core/test_util/resolve_localhost_ip46.h + - test/core/test_util/slice_splitter.h + - test/core/test_util/tracer_util.h src: - test/core/iomgr/endpoint_tests.cc - test/core/iomgr/error_test.cc - - test/core/util/cmdline.cc - - test/core/util/fuzzer_util.cc - - test/core/util/grpc_profiler.cc - - test/core/util/histogram.cc - - test/core/util/mock_endpoint.cc - - test/core/util/parse_hexstring.cc - - test/core/util/resolve_localhost_ip46.cc - - test/core/util/slice_splitter.cc - - test/core/util/tracer_util.cc + - test/core/test_util/cmdline.cc + - test/core/test_util/fuzzer_util.cc + - test/core/test_util/grpc_profiler.cc + - test/core/test_util/histogram.cc + - test/core/test_util/mock_endpoint.cc + - test/core/test_util/parse_hexstring.cc + - test/core/test_util/resolve_localhost_ip46.cc + - test/core/test_util/slice_splitter.cc + - test/core/test_util/tracer_util.cc deps: - gtest - grpc_test_util @@ -9090,28 +9051,27 @@ targets: build: test language: c++ headers: - - test/core/util/cmdline.h - - test/core/util/evaluate_args_test_util.h - - test/core/util/fuzzer_util.h - - test/core/util/grpc_profiler.h - - test/core/util/histogram.h - - test/core/util/mock_authorization_endpoint.h - - test/core/util/mock_endpoint.h - - test/core/util/parse_hexstring.h - - test/core/util/resolve_localhost_ip46.h - - test/core/util/slice_splitter.h - - test/core/util/tracer_util.h - src: + - test/core/test_util/cmdline.h + - test/core/test_util/evaluate_args_test_util.h + - test/core/test_util/fuzzer_util.h + - test/core/test_util/grpc_profiler.h + - test/core/test_util/histogram.h + - test/core/test_util/mock_endpoint.h + - test/core/test_util/parse_hexstring.h + - test/core/test_util/resolve_localhost_ip46.h + - test/core/test_util/slice_splitter.h + - test/core/test_util/tracer_util.h + src: + - test/core/test_util/cmdline.cc + - test/core/test_util/fuzzer_util.cc + - test/core/test_util/grpc_profiler.cc + - test/core/test_util/histogram.cc + - test/core/test_util/mock_endpoint.cc + - test/core/test_util/parse_hexstring.cc + - test/core/test_util/resolve_localhost_ip46.cc + - test/core/test_util/slice_splitter.cc + - test/core/test_util/tracer_util.cc - test/core/transport/error_utils_test.cc - - test/core/util/cmdline.cc - - test/core/util/fuzzer_util.cc - - test/core/util/grpc_profiler.cc - - test/core/util/histogram.cc - - test/core/util/mock_endpoint.cc - - test/core/util/parse_hexstring.cc - - test/core/util/resolve_localhost_ip46.cc - - test/core/util/slice_splitter.cc - - test/core/util/tracer_util.cc deps: - gtest - grpc_test_util @@ -9120,28 +9080,27 @@ targets: build: test language: c++ headers: - - test/core/util/cmdline.h - - test/core/util/evaluate_args_test_util.h - - test/core/util/fuzzer_util.h - - test/core/util/grpc_profiler.h - - test/core/util/histogram.h - - test/core/util/mock_authorization_endpoint.h - - test/core/util/mock_endpoint.h - - test/core/util/parse_hexstring.h - - test/core/util/resolve_localhost_ip46.h - - test/core/util/slice_splitter.h - - test/core/util/tracer_util.h + - test/core/test_util/cmdline.h + - test/core/test_util/evaluate_args_test_util.h + - test/core/test_util/fuzzer_util.h + - test/core/test_util/grpc_profiler.h + - test/core/test_util/histogram.h + - test/core/test_util/mock_endpoint.h + - test/core/test_util/parse_hexstring.h + - test/core/test_util/resolve_localhost_ip46.h + - test/core/test_util/slice_splitter.h + - test/core/test_util/tracer_util.h src: - test/core/security/evaluate_args_test.cc - - test/core/util/cmdline.cc - - test/core/util/fuzzer_util.cc - - test/core/util/grpc_profiler.cc - - test/core/util/histogram.cc - - test/core/util/mock_endpoint.cc - - test/core/util/parse_hexstring.cc - - test/core/util/resolve_localhost_ip46.cc - - test/core/util/slice_splitter.cc - - test/core/util/tracer_util.cc + - test/core/test_util/cmdline.cc + - test/core/test_util/fuzzer_util.cc + - test/core/test_util/grpc_profiler.cc + - test/core/test_util/histogram.cc + - test/core/test_util/mock_endpoint.cc + - test/core/test_util/parse_hexstring.cc + - test/core/test_util/resolve_localhost_ip46.cc + - test/core/test_util/slice_splitter.cc + - test/core/test_util/tracer_util.cc deps: - gtest - grpc_test_util @@ -9215,7 +9174,6 @@ targets: - src/core/lib/event_engine/event_engine_context.h - src/core/lib/experiments/config.h - src/core/lib/experiments/experiments.h - - src/core/lib/gpr/spinlock.h - src/core/lib/gprpp/atomic_utils.h - src/core/lib/gprpp/bitset.h - src/core/lib/gprpp/down_cast.h @@ -9243,6 +9201,7 @@ targets: - src/core/lib/slice/slice_internal.h - src/core/lib/slice/slice_refcount.h - src/core/lib/slice/slice_string_helpers.h + - src/core/util/spinlock.h - third_party/upb/upb/generated_code_support.h - third_party/upb/upb/mini_descriptor/build_enum.h - third_party/upb/upb/mini_descriptor/decode.h @@ -9463,7 +9422,7 @@ targets: language: c++ headers: [] src: - - test/core/client_channel/resolvers/fake_resolver_test.cc + - test/core/resolver/fake_resolver_test.cc deps: - gtest - grpc_test_util @@ -9478,35 +9437,33 @@ targets: - test/core/tsi/transport_security_test_lib.cc deps: - gtest - - absl/log:check - grpc_test_util - name: fd_posix_test gtest: true build: test language: c++ headers: - - test/core/util/cmdline.h - - test/core/util/evaluate_args_test_util.h - - test/core/util/fuzzer_util.h - - test/core/util/grpc_profiler.h - - test/core/util/histogram.h - - test/core/util/mock_authorization_endpoint.h - - test/core/util/mock_endpoint.h - - test/core/util/parse_hexstring.h - - test/core/util/resolve_localhost_ip46.h - - test/core/util/slice_splitter.h - - test/core/util/tracer_util.h + - test/core/test_util/cmdline.h + - test/core/test_util/evaluate_args_test_util.h + - test/core/test_util/fuzzer_util.h + - test/core/test_util/grpc_profiler.h + - test/core/test_util/histogram.h + - test/core/test_util/mock_endpoint.h + - test/core/test_util/parse_hexstring.h + - test/core/test_util/resolve_localhost_ip46.h + - test/core/test_util/slice_splitter.h + - test/core/test_util/tracer_util.h src: - test/core/iomgr/fd_posix_test.cc - - test/core/util/cmdline.cc - - test/core/util/fuzzer_util.cc - - test/core/util/grpc_profiler.cc - - test/core/util/histogram.cc - - test/core/util/mock_endpoint.cc - - test/core/util/parse_hexstring.cc - - test/core/util/resolve_localhost_ip46.cc - - test/core/util/slice_splitter.cc - - test/core/util/tracer_util.cc + - test/core/test_util/cmdline.cc + - test/core/test_util/fuzzer_util.cc + - test/core/test_util/grpc_profiler.cc + - test/core/test_util/histogram.cc + - test/core/test_util/mock_endpoint.cc + - test/core/test_util/parse_hexstring.cc + - test/core/test_util/resolve_localhost_ip46.cc + - test/core/test_util/slice_splitter.cc + - test/core/test_util/tracer_util.cc deps: - gtest - grpc_test_util @@ -9560,8 +9517,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -9581,11 +9538,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/filter_causes_close.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -9624,8 +9580,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -9645,11 +9601,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/filter_context.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -9688,8 +9643,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -9709,11 +9664,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/filter_init_fails.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -9731,7 +9685,6 @@ targets: - test/core/filters/filter_test_test.cc deps: - gtest - - absl/log:check - grpc_unsecure - protobuf - grpc_test_util @@ -9771,8 +9724,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -9792,11 +9745,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/filtered_metadata.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -9816,7 +9768,6 @@ targets: - test/cpp/end2end/test_service_impl.cc deps: - gtest - - absl/log:check - grpc++_test_util - name: flow_control_test gtest: true @@ -9834,7 +9785,6 @@ targets: - src/core/lib/event_engine/event_engine_context.h - src/core/lib/experiments/config.h - src/core/lib/experiments/experiments.h - - src/core/lib/gpr/spinlock.h - src/core/lib/gprpp/atomic_utils.h - src/core/lib/gprpp/bitset.h - src/core/lib/gprpp/cpp_impl_of.h @@ -9879,6 +9829,7 @@ targets: - src/core/lib/slice/slice_string_helpers.h - src/core/lib/transport/bdp_estimator.h - src/core/lib/transport/http2_errors.h + - src/core/util/spinlock.h - third_party/upb/upb/generated_code_support.h - third_party/upb/upb/mini_descriptor/build_enum.h - third_party/upb/upb/mini_descriptor/decode.h @@ -9947,7 +9898,6 @@ targets: - absl/base:config - absl/functional:function_ref - absl/hash:hash - - absl/log:check - absl/meta:type_traits - absl/status:statusor - absl/types:span @@ -9966,7 +9916,6 @@ targets: - src/core/lib/event_engine/event_engine_context.h - src/core/lib/experiments/config.h - src/core/lib/experiments/experiments.h - - src/core/lib/gpr/spinlock.h - src/core/lib/gprpp/atomic_utils.h - src/core/lib/gprpp/bitset.h - src/core/lib/gprpp/cpp_impl_of.h @@ -10018,6 +9967,7 @@ targets: - src/core/lib/slice/slice_internal.h - src/core/lib/slice/slice_refcount.h - src/core/lib/slice/slice_string_helpers.h + - src/core/util/spinlock.h - test/core/promise/test_wakeup_schedulers.h - third_party/upb/upb/generated_code_support.h - third_party/upb/upb/mini_descriptor/build_enum.h @@ -10123,32 +10073,31 @@ targets: language: c++ headers: - test/core/end2end/data/ssl_test_data.h - - test/core/util/cmdline.h - - test/core/util/evaluate_args_test_util.h - - test/core/util/fuzzer_util.h - - test/core/util/grpc_profiler.h - - test/core/util/histogram.h - - test/core/util/mock_authorization_endpoint.h - - test/core/util/mock_endpoint.h - - test/core/util/parse_hexstring.h - - test/core/util/resolve_localhost_ip46.h - - test/core/util/slice_splitter.h - - test/core/util/tracer_util.h + - test/core/test_util/cmdline.h + - test/core/test_util/evaluate_args_test_util.h + - test/core/test_util/fuzzer_util.h + - test/core/test_util/grpc_profiler.h + - test/core/test_util/histogram.h + - test/core/test_util/mock_endpoint.h + - test/core/test_util/parse_hexstring.h + - test/core/test_util/resolve_localhost_ip46.h + - test/core/test_util/slice_splitter.h + - test/core/test_util/tracer_util.h src: - test/core/end2end/data/client_certs.cc - test/core/end2end/data/server1_cert.cc - test/core/end2end/data/server1_key.cc - test/core/end2end/data/test_root_cert.cc - test/core/http/format_request_test.cc - - test/core/util/cmdline.cc - - test/core/util/fuzzer_util.cc - - test/core/util/grpc_profiler.cc - - test/core/util/histogram.cc - - test/core/util/mock_endpoint.cc - - test/core/util/parse_hexstring.cc - - test/core/util/resolve_localhost_ip46.cc - - test/core/util/slice_splitter.cc - - test/core/util/tracer_util.cc + - test/core/test_util/cmdline.cc + - test/core/test_util/fuzzer_util.cc + - test/core/test_util/grpc_profiler.cc + - test/core/test_util/histogram.cc + - test/core/test_util/mock_endpoint.cc + - test/core/test_util/parse_hexstring.cc + - test/core/test_util/resolve_localhost_ip46.cc + - test/core/test_util/slice_splitter.cc + - test/core/test_util/tracer_util.cc deps: - gtest - grpc_test_util @@ -10214,7 +10163,6 @@ targets: - test/core/event_engine/test_suite/tests/timer_test.cc deps: - gtest - - absl/log:check - protobuf - grpc_test_util platforms: @@ -10233,7 +10181,6 @@ targets: - test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine_unittest.cc deps: - gtest - - absl/log:check - protobuf - grpc_test_util - name: generic_end2end_test @@ -10268,10 +10215,10 @@ targets: build: test language: c++ headers: - - test/core/util/fake_udp_and_tcp_server.h + - test/core/test_util/fake_udp_and_tcp_server.h src: - - test/core/client_channel/resolvers/google_c2p_resolver_test.cc - - test/core/util/fake_udp_and_tcp_server.cc + - test/core/resolver/google_c2p_resolver_test.cc + - test/core/test_util/fake_udp_and_tcp_server.cc deps: - gtest - grpc++_test_util @@ -10310,8 +10257,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -10331,11 +10278,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/graceful_server_shutdown.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -10350,35 +10296,33 @@ targets: - test/core/transport/chttp2/graceful_shutdown_test.cc deps: - gtest - - absl/log:check - grpc_test_util - name: grpc_alts_credentials_options_test gtest: true build: test language: c++ headers: - - test/core/util/cmdline.h - - test/core/util/evaluate_args_test_util.h - - test/core/util/fuzzer_util.h - - test/core/util/grpc_profiler.h - - test/core/util/histogram.h - - test/core/util/mock_authorization_endpoint.h - - test/core/util/mock_endpoint.h - - test/core/util/parse_hexstring.h - - test/core/util/resolve_localhost_ip46.h - - test/core/util/slice_splitter.h - - test/core/util/tracer_util.h + - test/core/test_util/cmdline.h + - test/core/test_util/evaluate_args_test_util.h + - test/core/test_util/fuzzer_util.h + - test/core/test_util/grpc_profiler.h + - test/core/test_util/histogram.h + - test/core/test_util/mock_endpoint.h + - test/core/test_util/parse_hexstring.h + - test/core/test_util/resolve_localhost_ip46.h + - test/core/test_util/slice_splitter.h + - test/core/test_util/tracer_util.h src: - test/core/security/grpc_alts_credentials_options_test.cc - - test/core/util/cmdline.cc - - test/core/util/fuzzer_util.cc - - test/core/util/grpc_profiler.cc - - test/core/util/histogram.cc - - test/core/util/mock_endpoint.cc - - test/core/util/parse_hexstring.cc - - test/core/util/resolve_localhost_ip46.cc - - test/core/util/slice_splitter.cc - - test/core/util/tracer_util.cc + - test/core/test_util/cmdline.cc + - test/core/test_util/fuzzer_util.cc + - test/core/test_util/grpc_profiler.cc + - test/core/test_util/histogram.cc + - test/core/test_util/mock_endpoint.cc + - test/core/test_util/parse_hexstring.cc + - test/core/test_util/resolve_localhost_ip46.cc + - test/core/test_util/slice_splitter.cc + - test/core/test_util/tracer_util.cc deps: - gtest - grpc_test_util @@ -10397,30 +10341,29 @@ targets: build: test language: c++ headers: - - test/core/util/audit_logging_utils.h - - test/core/util/cmdline.h - - test/core/util/evaluate_args_test_util.h - - test/core/util/fuzzer_util.h - - test/core/util/grpc_profiler.h - - test/core/util/histogram.h - - test/core/util/mock_authorization_endpoint.h - - test/core/util/mock_endpoint.h - - test/core/util/parse_hexstring.h - - test/core/util/resolve_localhost_ip46.h - - test/core/util/slice_splitter.h - - test/core/util/tracer_util.h + - test/core/test_util/audit_logging_utils.h + - test/core/test_util/cmdline.h + - test/core/test_util/evaluate_args_test_util.h + - test/core/test_util/fuzzer_util.h + - test/core/test_util/grpc_profiler.h + - test/core/test_util/histogram.h + - test/core/test_util/mock_endpoint.h + - test/core/test_util/parse_hexstring.h + - test/core/test_util/resolve_localhost_ip46.h + - test/core/test_util/slice_splitter.h + - test/core/test_util/tracer_util.h src: - test/core/security/grpc_authorization_engine_test.cc - - test/core/util/audit_logging_utils.cc - - test/core/util/cmdline.cc - - test/core/util/fuzzer_util.cc - - test/core/util/grpc_profiler.cc - - test/core/util/histogram.cc - - test/core/util/mock_endpoint.cc - - test/core/util/parse_hexstring.cc - - test/core/util/resolve_localhost_ip46.cc - - test/core/util/slice_splitter.cc - - test/core/util/tracer_util.cc + - test/core/test_util/audit_logging_utils.cc + - test/core/test_util/cmdline.cc + - test/core/test_util/fuzzer_util.cc + - test/core/test_util/grpc_profiler.cc + - test/core/test_util/histogram.cc + - test/core/test_util/mock_endpoint.cc + - test/core/test_util/parse_hexstring.cc + - test/core/test_util/resolve_localhost_ip46.cc + - test/core/test_util/slice_splitter.cc + - test/core/test_util/tracer_util.cc deps: - gtest - grpc_test_util @@ -10429,28 +10372,27 @@ targets: build: test language: c++ headers: - - test/core/util/cmdline.h - - test/core/util/evaluate_args_test_util.h - - test/core/util/fuzzer_util.h - - test/core/util/grpc_profiler.h - - test/core/util/histogram.h - - test/core/util/mock_authorization_endpoint.h - - test/core/util/mock_endpoint.h - - test/core/util/parse_hexstring.h - - test/core/util/resolve_localhost_ip46.h - - test/core/util/slice_splitter.h - - test/core/util/tracer_util.h + - test/core/test_util/cmdline.h + - test/core/test_util/evaluate_args_test_util.h + - test/core/test_util/fuzzer_util.h + - test/core/test_util/grpc_profiler.h + - test/core/test_util/histogram.h + - test/core/test_util/mock_endpoint.h + - test/core/test_util/parse_hexstring.h + - test/core/test_util/resolve_localhost_ip46.h + - test/core/test_util/slice_splitter.h + - test/core/test_util/tracer_util.h src: - test/core/security/grpc_authorization_policy_provider_test.cc - - test/core/util/cmdline.cc - - test/core/util/fuzzer_util.cc - - test/core/util/grpc_profiler.cc - - test/core/util/histogram.cc - - test/core/util/mock_endpoint.cc - - test/core/util/parse_hexstring.cc - - test/core/util/resolve_localhost_ip46.cc - - test/core/util/slice_splitter.cc - - test/core/util/tracer_util.cc + - test/core/test_util/cmdline.cc + - test/core/test_util/fuzzer_util.cc + - test/core/test_util/grpc_profiler.cc + - test/core/test_util/histogram.cc + - test/core/test_util/mock_endpoint.cc + - test/core/test_util/parse_hexstring.cc + - test/core/test_util/resolve_localhost_ip46.cc + - test/core/test_util/slice_splitter.cc + - test/core/test_util/tracer_util.cc deps: - gtest - grpc_authorization_provider @@ -10460,7 +10402,7 @@ targets: build: test language: c++ headers: - - test/core/util/audit_logging_utils.h + - test/core/test_util/audit_logging_utils.h - test/cpp/end2end/test_service_impl.h src: - src/proto/grpc/testing/echo.proto @@ -10468,12 +10410,11 @@ targets: - src/proto/grpc/testing/simple_messages.proto - src/proto/grpc/testing/xds/v3/orca_load_report.proto - src/cpp/server/authorization_policy_provider.cc - - test/core/util/audit_logging_utils.cc + - test/core/test_util/audit_logging_utils.cc - test/cpp/end2end/grpc_authz_end2end_test.cc - test/cpp/end2end/test_service_impl.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc++_test_util - name: grpc_authz_test @@ -10511,8 +10452,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -10532,11 +10473,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/grpc_authz.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -10607,28 +10547,27 @@ targets: build: test language: c++ headers: - - test/core/util/cmdline.h - - test/core/util/evaluate_args_test_util.h - - test/core/util/fuzzer_util.h - - test/core/util/grpc_profiler.h - - test/core/util/histogram.h - - test/core/util/mock_authorization_endpoint.h - - test/core/util/mock_endpoint.h - - test/core/util/parse_hexstring.h - - test/core/util/resolve_localhost_ip46.h - - test/core/util/slice_splitter.h - - test/core/util/tracer_util.h + - test/core/test_util/cmdline.h + - test/core/test_util/evaluate_args_test_util.h + - test/core/test_util/fuzzer_util.h + - test/core/test_util/grpc_profiler.h + - test/core/test_util/histogram.h + - test/core/test_util/mock_endpoint.h + - test/core/test_util/parse_hexstring.h + - test/core/test_util/resolve_localhost_ip46.h + - test/core/test_util/slice_splitter.h + - test/core/test_util/tracer_util.h src: - test/core/iomgr/grpc_ipv6_loopback_available_test.cc - - test/core/util/cmdline.cc - - test/core/util/fuzzer_util.cc - - test/core/util/grpc_profiler.cc - - test/core/util/histogram.cc - - test/core/util/mock_endpoint.cc - - test/core/util/parse_hexstring.cc - - test/core/util/resolve_localhost_ip46.cc - - test/core/util/slice_splitter.cc - - test/core/util/tracer_util.cc + - test/core/test_util/cmdline.cc + - test/core/test_util/fuzzer_util.cc + - test/core/test_util/grpc_profiler.cc + - test/core/test_util/histogram.cc + - test/core/test_util/mock_endpoint.cc + - test/core/test_util/parse_hexstring.cc + - test/core/test_util/resolve_localhost_ip46.cc + - test/core/test_util/slice_splitter.cc + - test/core/test_util/tracer_util.cc deps: - gtest - grpc_test_util @@ -10677,28 +10616,27 @@ targets: build: test language: c++ headers: - - test/core/util/cmdline.h - - test/core/util/evaluate_args_test_util.h - - test/core/util/fuzzer_util.h - - test/core/util/grpc_profiler.h - - test/core/util/histogram.h - - test/core/util/mock_authorization_endpoint.h - - test/core/util/mock_endpoint.h - - test/core/util/parse_hexstring.h - - test/core/util/resolve_localhost_ip46.h - - test/core/util/slice_splitter.h - - test/core/util/tracer_util.h + - test/core/test_util/cmdline.h + - test/core/test_util/evaluate_args_test_util.h + - test/core/test_util/fuzzer_util.h + - test/core/test_util/grpc_profiler.h + - test/core/test_util/histogram.h + - test/core/test_util/mock_endpoint.h + - test/core/test_util/parse_hexstring.h + - test/core/test_util/resolve_localhost_ip46.h + - test/core/test_util/slice_splitter.h + - test/core/test_util/tracer_util.h src: - test/core/security/grpc_tls_certificate_distributor_test.cc - - test/core/util/cmdline.cc - - test/core/util/fuzzer_util.cc - - test/core/util/grpc_profiler.cc - - test/core/util/histogram.cc - - test/core/util/mock_endpoint.cc - - test/core/util/parse_hexstring.cc - - test/core/util/resolve_localhost_ip46.cc - - test/core/util/slice_splitter.cc - - test/core/util/tracer_util.cc + - test/core/test_util/cmdline.cc + - test/core/test_util/fuzzer_util.cc + - test/core/test_util/grpc_profiler.cc + - test/core/test_util/histogram.cc + - test/core/test_util/mock_endpoint.cc + - test/core/test_util/parse_hexstring.cc + - test/core/test_util/resolve_localhost_ip46.cc + - test/core/test_util/slice_splitter.cc + - test/core/test_util/tracer_util.cc deps: - gtest - grpc_test_util @@ -10707,28 +10645,27 @@ targets: build: test language: c++ headers: - - test/core/util/cmdline.h - - test/core/util/evaluate_args_test_util.h - - test/core/util/fuzzer_util.h - - test/core/util/grpc_profiler.h - - test/core/util/histogram.h - - test/core/util/mock_authorization_endpoint.h - - test/core/util/mock_endpoint.h - - test/core/util/parse_hexstring.h - - test/core/util/resolve_localhost_ip46.h - - test/core/util/slice_splitter.h - - test/core/util/tracer_util.h + - test/core/test_util/cmdline.h + - test/core/test_util/evaluate_args_test_util.h + - test/core/test_util/fuzzer_util.h + - test/core/test_util/grpc_profiler.h + - test/core/test_util/histogram.h + - test/core/test_util/mock_endpoint.h + - test/core/test_util/parse_hexstring.h + - test/core/test_util/resolve_localhost_ip46.h + - test/core/test_util/slice_splitter.h + - test/core/test_util/tracer_util.h src: - test/core/security/grpc_tls_certificate_provider_test.cc - - test/core/util/cmdline.cc - - test/core/util/fuzzer_util.cc - - test/core/util/grpc_profiler.cc - - test/core/util/histogram.cc - - test/core/util/mock_endpoint.cc - - test/core/util/parse_hexstring.cc - - test/core/util/resolve_localhost_ip46.cc - - test/core/util/slice_splitter.cc - - test/core/util/tracer_util.cc + - test/core/test_util/cmdline.cc + - test/core/test_util/fuzzer_util.cc + - test/core/test_util/grpc_profiler.cc + - test/core/test_util/histogram.cc + - test/core/test_util/mock_endpoint.cc + - test/core/test_util/parse_hexstring.cc + - test/core/test_util/resolve_localhost_ip46.cc + - test/core/test_util/slice_splitter.cc + - test/core/test_util/tracer_util.cc deps: - gtest - grpc_test_util @@ -10737,28 +10674,27 @@ targets: build: test language: c++ headers: - - test/core/util/cmdline.h - - test/core/util/evaluate_args_test_util.h - - test/core/util/fuzzer_util.h - - test/core/util/grpc_profiler.h - - test/core/util/histogram.h - - test/core/util/mock_authorization_endpoint.h - - test/core/util/mock_endpoint.h - - test/core/util/parse_hexstring.h - - test/core/util/resolve_localhost_ip46.h - - test/core/util/slice_splitter.h - - test/core/util/tracer_util.h + - test/core/test_util/cmdline.h + - test/core/test_util/evaluate_args_test_util.h + - test/core/test_util/fuzzer_util.h + - test/core/test_util/grpc_profiler.h + - test/core/test_util/histogram.h + - test/core/test_util/mock_endpoint.h + - test/core/test_util/parse_hexstring.h + - test/core/test_util/resolve_localhost_ip46.h + - test/core/test_util/slice_splitter.h + - test/core/test_util/tracer_util.h src: - test/core/security/grpc_tls_certificate_verifier_test.cc - - test/core/util/cmdline.cc - - test/core/util/fuzzer_util.cc - - test/core/util/grpc_profiler.cc - - test/core/util/histogram.cc - - test/core/util/mock_endpoint.cc - - test/core/util/parse_hexstring.cc - - test/core/util/resolve_localhost_ip46.cc - - test/core/util/slice_splitter.cc - - test/core/util/tracer_util.cc + - test/core/test_util/cmdline.cc + - test/core/test_util/fuzzer_util.cc + - test/core/test_util/grpc_profiler.cc + - test/core/test_util/histogram.cc + - test/core/test_util/mock_endpoint.cc + - test/core/test_util/parse_hexstring.cc + - test/core/test_util/resolve_localhost_ip46.cc + - test/core/test_util/slice_splitter.cc + - test/core/test_util/tracer_util.cc deps: - gtest - grpc_test_util @@ -10767,28 +10703,27 @@ targets: build: test language: c++ headers: - - test/core/util/cmdline.h - - test/core/util/evaluate_args_test_util.h - - test/core/util/fuzzer_util.h - - test/core/util/grpc_profiler.h - - test/core/util/histogram.h - - test/core/util/mock_authorization_endpoint.h - - test/core/util/mock_endpoint.h - - test/core/util/parse_hexstring.h - - test/core/util/resolve_localhost_ip46.h - - test/core/util/slice_splitter.h - - test/core/util/tracer_util.h + - test/core/test_util/cmdline.h + - test/core/test_util/evaluate_args_test_util.h + - test/core/test_util/fuzzer_util.h + - test/core/test_util/grpc_profiler.h + - test/core/test_util/histogram.h + - test/core/test_util/mock_endpoint.h + - test/core/test_util/parse_hexstring.h + - test/core/test_util/resolve_localhost_ip46.h + - test/core/test_util/slice_splitter.h + - test/core/test_util/tracer_util.h src: - test/core/security/grpc_tls_credentials_options_comparator_test.cc - - test/core/util/cmdline.cc - - test/core/util/fuzzer_util.cc - - test/core/util/grpc_profiler.cc - - test/core/util/histogram.cc - - test/core/util/mock_endpoint.cc - - test/core/util/parse_hexstring.cc - - test/core/util/resolve_localhost_ip46.cc - - test/core/util/slice_splitter.cc - - test/core/util/tracer_util.cc + - test/core/test_util/cmdline.cc + - test/core/test_util/fuzzer_util.cc + - test/core/test_util/grpc_profiler.cc + - test/core/test_util/histogram.cc + - test/core/test_util/mock_endpoint.cc + - test/core/test_util/parse_hexstring.cc + - test/core/test_util/resolve_localhost_ip46.cc + - test/core/test_util/slice_splitter.cc + - test/core/test_util/tracer_util.cc deps: - gtest - grpc_test_util @@ -10797,28 +10732,27 @@ targets: build: test language: c++ headers: - - test/core/util/cmdline.h - - test/core/util/evaluate_args_test_util.h - - test/core/util/fuzzer_util.h - - test/core/util/grpc_profiler.h - - test/core/util/histogram.h - - test/core/util/mock_authorization_endpoint.h - - test/core/util/mock_endpoint.h - - test/core/util/parse_hexstring.h - - test/core/util/resolve_localhost_ip46.h - - test/core/util/slice_splitter.h - - test/core/util/tracer_util.h + - test/core/test_util/cmdline.h + - test/core/test_util/evaluate_args_test_util.h + - test/core/test_util/fuzzer_util.h + - test/core/test_util/grpc_profiler.h + - test/core/test_util/histogram.h + - test/core/test_util/mock_endpoint.h + - test/core/test_util/parse_hexstring.h + - test/core/test_util/resolve_localhost_ip46.h + - test/core/test_util/slice_splitter.h + - test/core/test_util/tracer_util.h src: - test/core/security/grpc_tls_credentials_options_test.cc - - test/core/util/cmdline.cc - - test/core/util/fuzzer_util.cc - - test/core/util/grpc_profiler.cc - - test/core/util/histogram.cc - - test/core/util/mock_endpoint.cc - - test/core/util/parse_hexstring.cc - - test/core/util/resolve_localhost_ip46.cc - - test/core/util/slice_splitter.cc - - test/core/util/tracer_util.cc + - test/core/test_util/cmdline.cc + - test/core/test_util/fuzzer_util.cc + - test/core/test_util/grpc_profiler.cc + - test/core/test_util/histogram.cc + - test/core/test_util/mock_endpoint.cc + - test/core/test_util/parse_hexstring.cc + - test/core/test_util/resolve_localhost_ip46.cc + - test/core/test_util/slice_splitter.cc + - test/core/test_util/tracer_util.cc deps: - gtest - grpc_test_util @@ -10832,14 +10766,13 @@ targets: - test/core/tsi/transport_security_test_lib.h src: - test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.proto - - test/core/util/fuzz_config_vars.proto + - test/core/test_util/fuzz_config_vars.proto - test/core/event_engine/event_engine_test_utils.cc - test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.cc - test/core/security/grpc_tls_crl_provider_test.cc - test/core/tsi/transport_security_test_lib.cc deps: - gtest - - absl/log:check - protobuf - grpc_test_util - name: grpc_tool_test @@ -10885,7 +10818,6 @@ targets: - test/cpp/grpclb/grpclb_api_test.cc deps: - gtest - - absl/log:check - grpc++_test_util - name: grpclb_end2end_test gtest: true @@ -10906,7 +10838,6 @@ targets: - test/cpp/end2end/test_service_impl.cc deps: - gtest - - absl/log:check - grpc++_test_config - grpc++_test_util platforms: @@ -10943,7 +10874,6 @@ targets: - test/core/event_engine/event_engine_test_utils.cc deps: - gtest - - absl/log:check - grpc_test_util - name: h2_ssl_session_reuse_test gtest: true @@ -11009,7 +10939,6 @@ targets: - test/core/end2end/cq_verifier.cc deps: - gtest - - absl/log:check - grpc_test_util - name: headers_bad_client_test gtest: true @@ -11024,7 +10953,6 @@ targets: - test/core/end2end/cq_verifier.cc deps: - gtest - - absl/log:check - grpc_test_util - name: health_service_end2end_test gtest: true @@ -11045,7 +10973,6 @@ targets: - test/cpp/end2end/test_service_impl.cc deps: - gtest - - absl/log:check - grpc++_test_util - name: high_initial_seqno_test gtest: true @@ -11082,8 +11009,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -11103,11 +11030,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/high_initial_seqno.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -11116,28 +11042,27 @@ targets: build: test language: c++ headers: - - test/core/util/cmdline.h - - test/core/util/evaluate_args_test_util.h - - test/core/util/fuzzer_util.h - - test/core/util/grpc_profiler.h - - test/core/util/histogram.h - - test/core/util/mock_authorization_endpoint.h - - test/core/util/mock_endpoint.h - - test/core/util/parse_hexstring.h - - test/core/util/resolve_localhost_ip46.h - - test/core/util/slice_splitter.h - - test/core/util/tracer_util.h + - test/core/test_util/cmdline.h + - test/core/test_util/evaluate_args_test_util.h + - test/core/test_util/fuzzer_util.h + - test/core/test_util/grpc_profiler.h + - test/core/test_util/histogram.h + - test/core/test_util/mock_endpoint.h + - test/core/test_util/parse_hexstring.h + - test/core/test_util/resolve_localhost_ip46.h + - test/core/test_util/slice_splitter.h + - test/core/test_util/tracer_util.h src: - - test/core/util/cmdline.cc - - test/core/util/fuzzer_util.cc - - test/core/util/grpc_profiler.cc - - test/core/util/histogram.cc - - test/core/util/histogram_test.cc - - test/core/util/mock_endpoint.cc - - test/core/util/parse_hexstring.cc - - test/core/util/resolve_localhost_ip46.cc - - test/core/util/slice_splitter.cc - - test/core/util/tracer_util.cc + - test/core/test_util/cmdline.cc + - test/core/test_util/fuzzer_util.cc + - test/core/test_util/grpc_profiler.cc + - test/core/test_util/histogram.cc + - test/core/test_util/histogram_test.cc + - test/core/test_util/mock_endpoint.cc + - test/core/test_util/parse_hexstring.cc + - test/core/test_util/resolve_localhost_ip46.cc + - test/core/test_util/slice_splitter.cc + - test/core/test_util/tracer_util.cc deps: - gtest - grpc_test_util @@ -11158,28 +11083,27 @@ targets: build: test language: c++ headers: - - test/core/util/cmdline.h - - test/core/util/evaluate_args_test_util.h - - test/core/util/fuzzer_util.h - - test/core/util/grpc_profiler.h - - test/core/util/histogram.h - - test/core/util/mock_authorization_endpoint.h - - test/core/util/mock_endpoint.h - - test/core/util/parse_hexstring.h - - test/core/util/resolve_localhost_ip46.h - - test/core/util/slice_splitter.h - - test/core/util/tracer_util.h - src: + - test/core/test_util/cmdline.h + - test/core/test_util/evaluate_args_test_util.h + - test/core/test_util/fuzzer_util.h + - test/core/test_util/grpc_profiler.h + - test/core/test_util/histogram.h + - test/core/test_util/mock_endpoint.h + - test/core/test_util/parse_hexstring.h + - test/core/test_util/resolve_localhost_ip46.h + - test/core/test_util/slice_splitter.h + - test/core/test_util/tracer_util.h + src: + - test/core/test_util/cmdline.cc + - test/core/test_util/fuzzer_util.cc + - test/core/test_util/grpc_profiler.cc + - test/core/test_util/histogram.cc + - test/core/test_util/mock_endpoint.cc + - test/core/test_util/parse_hexstring.cc + - test/core/test_util/resolve_localhost_ip46.cc + - test/core/test_util/slice_splitter.cc + - test/core/test_util/tracer_util.cc - test/core/transport/chttp2/hpack_encoder_test.cc - - test/core/util/cmdline.cc - - test/core/util/fuzzer_util.cc - - test/core/util/grpc_profiler.cc - - test/core/util/histogram.cc - - test/core/util/mock_endpoint.cc - - test/core/util/parse_hexstring.cc - - test/core/util/resolve_localhost_ip46.cc - - test/core/util/slice_splitter.cc - - test/core/util/tracer_util.cc deps: - gtest - grpc_test_util @@ -11189,28 +11113,27 @@ targets: build: test language: c++ headers: - - test/core/util/cmdline.h - - test/core/util/evaluate_args_test_util.h - - test/core/util/fuzzer_util.h - - test/core/util/grpc_profiler.h - - test/core/util/histogram.h - - test/core/util/mock_authorization_endpoint.h - - test/core/util/mock_endpoint.h - - test/core/util/parse_hexstring.h - - test/core/util/resolve_localhost_ip46.h - - test/core/util/slice_splitter.h - - test/core/util/tracer_util.h - src: + - test/core/test_util/cmdline.h + - test/core/test_util/evaluate_args_test_util.h + - test/core/test_util/fuzzer_util.h + - test/core/test_util/grpc_profiler.h + - test/core/test_util/histogram.h + - test/core/test_util/mock_endpoint.h + - test/core/test_util/parse_hexstring.h + - test/core/test_util/resolve_localhost_ip46.h + - test/core/test_util/slice_splitter.h + - test/core/test_util/tracer_util.h + src: + - test/core/test_util/cmdline.cc + - test/core/test_util/fuzzer_util.cc + - test/core/test_util/grpc_profiler.cc + - test/core/test_util/histogram.cc + - test/core/test_util/mock_endpoint.cc + - test/core/test_util/parse_hexstring.cc + - test/core/test_util/resolve_localhost_ip46.cc + - test/core/test_util/slice_splitter.cc + - test/core/test_util/tracer_util.cc - test/core/transport/chttp2/hpack_parser_table_test.cc - - test/core/util/cmdline.cc - - test/core/util/fuzzer_util.cc - - test/core/util/grpc_profiler.cc - - test/core/util/histogram.cc - - test/core/util/mock_endpoint.cc - - test/core/util/parse_hexstring.cc - - test/core/util/resolve_localhost_ip46.cc - - test/core/util/slice_splitter.cc - - test/core/util/tracer_util.cc deps: - gtest - grpc_test_util @@ -11220,28 +11143,27 @@ targets: build: test language: c++ headers: - - test/core/util/cmdline.h - - test/core/util/evaluate_args_test_util.h - - test/core/util/fuzzer_util.h - - test/core/util/grpc_profiler.h - - test/core/util/histogram.h - - test/core/util/mock_authorization_endpoint.h - - test/core/util/mock_endpoint.h - - test/core/util/parse_hexstring.h - - test/core/util/resolve_localhost_ip46.h - - test/core/util/slice_splitter.h - - test/core/util/tracer_util.h - src: + - test/core/test_util/cmdline.h + - test/core/test_util/evaluate_args_test_util.h + - test/core/test_util/fuzzer_util.h + - test/core/test_util/grpc_profiler.h + - test/core/test_util/histogram.h + - test/core/test_util/mock_endpoint.h + - test/core/test_util/parse_hexstring.h + - test/core/test_util/resolve_localhost_ip46.h + - test/core/test_util/slice_splitter.h + - test/core/test_util/tracer_util.h + src: + - test/core/test_util/cmdline.cc + - test/core/test_util/fuzzer_util.cc + - test/core/test_util/grpc_profiler.cc + - test/core/test_util/histogram.cc + - test/core/test_util/mock_endpoint.cc + - test/core/test_util/parse_hexstring.cc + - test/core/test_util/resolve_localhost_ip46.cc + - test/core/test_util/slice_splitter.cc + - test/core/test_util/tracer_util.cc - test/core/transport/chttp2/hpack_parser_test.cc - - test/core/util/cmdline.cc - - test/core/util/fuzzer_util.cc - - test/core/util/grpc_profiler.cc - - test/core/util/histogram.cc - - test/core/util/mock_endpoint.cc - - test/core/util/parse_hexstring.cc - - test/core/util/resolve_localhost_ip46.cc - - test/core/util/slice_splitter.cc - - test/core/util/tracer_util.cc deps: - gtest - grpc_test_util @@ -11281,8 +11203,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -11302,11 +11224,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/hpack_size.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -11322,7 +11243,6 @@ targets: - src/proto/grpc/testing/test.proto - test/cpp/interop/http2_client.cc deps: - - absl/log:check - grpc++_test_config - grpc++_test_util - name: http2_settings_test @@ -11370,8 +11290,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -11391,11 +11311,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/http2_stats.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -11404,9 +11323,9 @@ targets: build: test language: c++ headers: - - test/core/util/scoped_env_var.h + - test/core/test_util/scoped_env_var.h src: - - test/core/client_channel/http_proxy_mapper_test.cc + - test/core/handshake/http_proxy_mapper_test.cc deps: - gtest - grpc_test_util @@ -11417,11 +11336,11 @@ targets: language: c++ headers: - test/core/http/httpcli_test_util.h - - test/core/util/fake_udp_and_tcp_server.h + - test/core/test_util/fake_udp_and_tcp_server.h src: - test/core/http/httpcli_test.cc - test/core/http/httpcli_test_util.cc - - test/core/util/fake_udp_and_tcp_server.cc + - test/core/test_util/fake_udp_and_tcp_server.cc deps: - gtest - grpc++_test_util @@ -11435,11 +11354,11 @@ targets: language: c++ headers: - test/core/http/httpcli_test_util.h - - test/core/util/fake_udp_and_tcp_server.h + - test/core/test_util/fake_udp_and_tcp_server.h src: - test/core/http/httpcli_test_util.cc - test/core/http/httpscli_test.cc - - test/core/util/fake_udp_and_tcp_server.cc + - test/core/test_util/fake_udp_and_tcp_server.cc deps: - gtest - grpc++_test_util @@ -11463,7 +11382,6 @@ targets: - test/cpp/end2end/test_service_impl.cc deps: - gtest - - absl/log:check - grpc++_test_util - name: idle_filter_state_test gtest: true @@ -11529,7 +11447,6 @@ targets: - test/core/end2end/cq_verifier.cc deps: - gtest - - absl/log:check - grpc_test_util - name: inproc_test gtest: true @@ -11552,7 +11469,6 @@ targets: - test/core/transport/test_suite/test_main.cc deps: - gtest - - absl/log:check - protobuf - grpc_test_util platforms: @@ -11564,28 +11480,27 @@ targets: build: test language: c++ headers: - - test/core/util/cmdline.h - - test/core/util/evaluate_args_test_util.h - - test/core/util/fuzzer_util.h - - test/core/util/grpc_profiler.h - - test/core/util/histogram.h - - test/core/util/mock_authorization_endpoint.h - - test/core/util/mock_endpoint.h - - test/core/util/parse_hexstring.h - - test/core/util/resolve_localhost_ip46.h - - test/core/util/slice_splitter.h - - test/core/util/tracer_util.h + - test/core/test_util/cmdline.h + - test/core/test_util/evaluate_args_test_util.h + - test/core/test_util/fuzzer_util.h + - test/core/test_util/grpc_profiler.h + - test/core/test_util/histogram.h + - test/core/test_util/mock_endpoint.h + - test/core/test_util/parse_hexstring.h + - test/core/test_util/resolve_localhost_ip46.h + - test/core/test_util/slice_splitter.h + - test/core/test_util/tracer_util.h src: - test/core/security/insecure_security_connector_test.cc - - test/core/util/cmdline.cc - - test/core/util/fuzzer_util.cc - - test/core/util/grpc_profiler.cc - - test/core/util/histogram.cc - - test/core/util/mock_endpoint.cc - - test/core/util/parse_hexstring.cc - - test/core/util/resolve_localhost_ip46.cc - - test/core/util/slice_splitter.cc - - test/core/util/tracer_util.cc + - test/core/test_util/cmdline.cc + - test/core/test_util/fuzzer_util.cc + - test/core/test_util/grpc_profiler.cc + - test/core/test_util/histogram.cc + - test/core/test_util/mock_endpoint.cc + - test/core/test_util/parse_hexstring.cc + - test/core/test_util/resolve_localhost_ip46.cc + - test/core/test_util/slice_splitter.cc + - test/core/test_util/tracer_util.cc deps: - gtest - grpc_test_util @@ -11640,71 +11555,665 @@ targets: - absl/status:statusor - gpr uses_polling: false -- name: interceptor_list_test +- name: interception_chain_test gtest: true build: test language: c++ headers: + - src/core/channelz/channel_trace.h + - src/core/channelz/channelz.h + - src/core/channelz/channelz_registry.h - src/core/ext/upb-gen/google/protobuf/any.upb.h - src/core/ext/upb-gen/google/protobuf/any.upb_minitable.h - src/core/ext/upb-gen/google/rpc/status.upb.h - src/core/ext/upb-gen/google/rpc/status.upb_minitable.h + - src/core/ext/upb-gen/src/proto/grpc/gcp/altscontext.upb.h + - src/core/ext/upb-gen/src/proto/grpc/gcp/altscontext.upb_minitable.h + - src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb.h + - src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb_minitable.h + - src/core/ext/upb-gen/src/proto/grpc/gcp/transport_security_common.upb.h + - src/core/ext/upb-gen/src/proto/grpc/gcp/transport_security_common.upb_minitable.h + - src/core/handshaker/handshaker_factory.h + - src/core/handshaker/handshaker_registry.h + - src/core/handshaker/proxy_mapper.h + - src/core/handshaker/proxy_mapper_registry.h + - src/core/lib/address_utils/parse_address.h + - src/core/lib/address_utils/sockaddr_utils.h + - src/core/lib/avl/avl.h + - src/core/lib/backoff/backoff.h + - src/core/lib/channel/call_finalization.h + - src/core/lib/channel/call_tracer.h + - src/core/lib/channel/channel_args.h + - src/core/lib/channel/channel_args_preconditioning.h + - src/core/lib/channel/channel_fwd.h + - src/core/lib/channel/channel_stack.h + - src/core/lib/channel/channel_stack_builder.h + - src/core/lib/channel/channel_stack_builder_impl.h + - src/core/lib/channel/channel_stack_trace.h + - src/core/lib/channel/connected_channel.h + - src/core/lib/channel/context.h + - src/core/lib/channel/metrics.h + - src/core/lib/channel/promise_based_filter.h + - src/core/lib/channel/status_util.h + - src/core/lib/channel/tcp_tracer.h + - src/core/lib/compression/compression_internal.h + - src/core/lib/compression/message_compress.h + - src/core/lib/config/core_configuration.h + - src/core/lib/debug/event_log.h + - src/core/lib/debug/histogram_view.h + - src/core/lib/debug/stats.h + - src/core/lib/debug/stats_data.h - src/core/lib/debug/trace.h + - src/core/lib/event_engine/ares_resolver.h + - src/core/lib/event_engine/cf_engine/cf_engine.h + - src/core/lib/event_engine/cf_engine/cfstream_endpoint.h + - src/core/lib/event_engine/cf_engine/cftype_unique_ref.h + - src/core/lib/event_engine/cf_engine/dns_service_resolver.h + - src/core/lib/event_engine/channel_args_endpoint_config.h + - src/core/lib/event_engine/common_closures.h + - src/core/lib/event_engine/default_event_engine.h + - src/core/lib/event_engine/default_event_engine_factory.h - src/core/lib/event_engine/event_engine_context.h + - src/core/lib/event_engine/extensions/can_track_errors.h + - src/core/lib/event_engine/extensions/chaotic_good_extension.h + - src/core/lib/event_engine/extensions/supports_fd.h + - src/core/lib/event_engine/forkable.h + - src/core/lib/event_engine/grpc_polled_fd.h + - src/core/lib/event_engine/handle_containers.h + - src/core/lib/event_engine/memory_allocator_factory.h + - src/core/lib/event_engine/nameser.h + - src/core/lib/event_engine/poller.h + - src/core/lib/event_engine/posix.h + - src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h + - src/core/lib/event_engine/posix_engine/ev_poll_posix.h + - src/core/lib/event_engine/posix_engine/event_poller.h + - src/core/lib/event_engine/posix_engine/event_poller_posix_default.h + - src/core/lib/event_engine/posix_engine/grpc_polled_fd_posix.h + - src/core/lib/event_engine/posix_engine/internal_errqueue.h + - src/core/lib/event_engine/posix_engine/lockfree_event.h + - src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.h + - src/core/lib/event_engine/posix_engine/posix_endpoint.h + - src/core/lib/event_engine/posix_engine/posix_engine.h + - src/core/lib/event_engine/posix_engine/posix_engine_closure.h + - src/core/lib/event_engine/posix_engine/posix_engine_listener.h + - src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.h + - src/core/lib/event_engine/posix_engine/tcp_socket_utils.h + - src/core/lib/event_engine/posix_engine/timer.h + - src/core/lib/event_engine/posix_engine/timer_heap.h + - src/core/lib/event_engine/posix_engine/timer_manager.h + - src/core/lib/event_engine/posix_engine/traced_buffer_list.h + - src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.h + - src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.h + - src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h + - src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h + - src/core/lib/event_engine/query_extensions.h + - src/core/lib/event_engine/ref_counted_dns_resolver_interface.h + - src/core/lib/event_engine/resolved_address_internal.h + - src/core/lib/event_engine/shim.h + - src/core/lib/event_engine/tcp_socket_utils.h + - src/core/lib/event_engine/thread_pool/thread_count.h + - src/core/lib/event_engine/thread_pool/thread_pool.h + - src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h + - src/core/lib/event_engine/thready_event_engine/thready_event_engine.h + - src/core/lib/event_engine/time_util.h + - src/core/lib/event_engine/trace.h + - src/core/lib/event_engine/utils.h + - src/core/lib/event_engine/windows/grpc_polled_fd_windows.h + - src/core/lib/event_engine/windows/iocp.h + - src/core/lib/event_engine/windows/native_windows_dns_resolver.h + - src/core/lib/event_engine/windows/win_socket.h + - src/core/lib/event_engine/windows/windows_endpoint.h + - src/core/lib/event_engine/windows/windows_engine.h + - src/core/lib/event_engine/windows/windows_listener.h + - src/core/lib/event_engine/work_queue/basic_work_queue.h + - src/core/lib/event_engine/work_queue/work_queue.h - src/core/lib/experiments/config.h - src/core/lib/experiments/experiments.h - - src/core/lib/gpr/spinlock.h - src/core/lib/gprpp/atomic_utils.h - src/core/lib/gprpp/bitset.h + - src/core/lib/gprpp/chunked_vector.h - src/core/lib/gprpp/cpp_impl_of.h - src/core/lib/gprpp/down_cast.h + - src/core/lib/gprpp/dual_ref_counted.h + - src/core/lib/gprpp/if_list.h + - src/core/lib/gprpp/load_file.h - src/core/lib/gprpp/manual_constructor.h + - src/core/lib/gprpp/match.h + - src/core/lib/gprpp/notification.h - src/core/lib/gprpp/orphanable.h + - src/core/lib/gprpp/overload.h + - src/core/lib/gprpp/packed_table.h + - src/core/lib/gprpp/per_cpu.h - src/core/lib/gprpp/ref_counted.h - src/core/lib/gprpp/ref_counted_ptr.h + - src/core/lib/gprpp/ref_counted_string.h + - src/core/lib/gprpp/sorted_pack.h - src/core/lib/gprpp/status_helper.h + - src/core/lib/gprpp/table.h - src/core/lib/gprpp/time.h + - src/core/lib/gprpp/time_averaged_stats.h + - src/core/lib/gprpp/type_list.h + - src/core/lib/gprpp/unique_type_name.h + - src/core/lib/gprpp/validation_errors.h + - src/core/lib/gprpp/work_serializer.h + - src/core/lib/iomgr/block_annotate.h + - src/core/lib/iomgr/buffer_list.h + - src/core/lib/iomgr/call_combiner.h + - src/core/lib/iomgr/cfstream_handle.h - src/core/lib/iomgr/closure.h - src/core/lib/iomgr/combiner.h + - src/core/lib/iomgr/dynamic_annotations.h + - src/core/lib/iomgr/endpoint.h + - src/core/lib/iomgr/endpoint_cfstream.h + - src/core/lib/iomgr/endpoint_pair.h - src/core/lib/iomgr/error.h + - src/core/lib/iomgr/error_cfstream.h + - src/core/lib/iomgr/ev_apple.h + - src/core/lib/iomgr/ev_epoll1_linux.h + - src/core/lib/iomgr/ev_poll_posix.h + - src/core/lib/iomgr/ev_posix.h + - src/core/lib/iomgr/event_engine_shims/closure.h + - src/core/lib/iomgr/event_engine_shims/endpoint.h + - src/core/lib/iomgr/event_engine_shims/tcp_client.h - src/core/lib/iomgr/exec_ctx.h - src/core/lib/iomgr/executor.h + - src/core/lib/iomgr/gethostname.h + - src/core/lib/iomgr/grpc_if_nametoindex.h + - src/core/lib/iomgr/internal_errqueue.h + - src/core/lib/iomgr/iocp_windows.h + - src/core/lib/iomgr/iomgr.h + - src/core/lib/iomgr/iomgr_fwd.h - src/core/lib/iomgr/iomgr_internal.h - - src/core/lib/promise/activity.h - - src/core/lib/promise/context.h - - src/core/lib/promise/detail/basic_seq.h - - src/core/lib/promise/detail/promise_factory.h - - src/core/lib/promise/detail/promise_like.h - - src/core/lib/promise/detail/seq_state.h - - src/core/lib/promise/detail/status.h - - src/core/lib/promise/exec_ctx_wakeup_scheduler.h - - src/core/lib/promise/interceptor_list.h - - src/core/lib/promise/loop.h - - src/core/lib/promise/map.h - - src/core/lib/promise/poll.h - - src/core/lib/promise/race.h - - src/core/lib/promise/seq.h - - src/core/lib/promise/trace.h - - src/core/lib/resource_quota/arena.h - - src/core/lib/resource_quota/connection_quota.h - - src/core/lib/resource_quota/memory_quota.h - - src/core/lib/resource_quota/periodic_update.h - - src/core/lib/resource_quota/resource_quota.h - - src/core/lib/resource_quota/thread_quota.h - - src/core/lib/resource_quota/trace.h - - src/core/lib/slice/percent_encoding.h - - src/core/lib/slice/slice.h - - src/core/lib/slice/slice_internal.h - - src/core/lib/slice/slice_refcount.h - - src/core/lib/slice/slice_string_helpers.h - - test/core/promise/test_context.h - - third_party/upb/upb/generated_code_support.h - - third_party/upb/upb/mini_descriptor/build_enum.h - - third_party/upb/upb/mini_descriptor/decode.h - - third_party/upb/upb/mini_descriptor/internal/base92.h - - third_party/upb/upb/mini_descriptor/internal/decoder.h - - third_party/upb/upb/mini_descriptor/internal/encode.h - - third_party/upb/upb/mini_descriptor/internal/encode.hpp + - src/core/lib/iomgr/lockfree_event.h + - src/core/lib/iomgr/nameser.h + - src/core/lib/iomgr/polling_entity.h + - src/core/lib/iomgr/pollset.h + - src/core/lib/iomgr/pollset_set.h + - src/core/lib/iomgr/pollset_set_windows.h + - src/core/lib/iomgr/pollset_windows.h + - src/core/lib/iomgr/port.h + - src/core/lib/iomgr/python_util.h + - src/core/lib/iomgr/resolve_address.h + - src/core/lib/iomgr/resolve_address_impl.h + - src/core/lib/iomgr/resolve_address_posix.h + - src/core/lib/iomgr/resolve_address_windows.h + - src/core/lib/iomgr/resolved_address.h + - src/core/lib/iomgr/sockaddr.h + - src/core/lib/iomgr/sockaddr_posix.h + - src/core/lib/iomgr/sockaddr_windows.h + - src/core/lib/iomgr/socket_factory_posix.h + - src/core/lib/iomgr/socket_mutator.h + - src/core/lib/iomgr/socket_utils.h + - src/core/lib/iomgr/socket_utils_posix.h + - src/core/lib/iomgr/socket_windows.h + - src/core/lib/iomgr/systemd_utils.h + - src/core/lib/iomgr/tcp_client.h + - src/core/lib/iomgr/tcp_client_posix.h + - src/core/lib/iomgr/tcp_posix.h + - src/core/lib/iomgr/tcp_server.h + - src/core/lib/iomgr/tcp_server_utils_posix.h + - src/core/lib/iomgr/tcp_windows.h + - src/core/lib/iomgr/timer.h + - src/core/lib/iomgr/timer_generic.h + - src/core/lib/iomgr/timer_heap.h + - src/core/lib/iomgr/timer_manager.h + - src/core/lib/iomgr/unix_sockets_posix.h + - src/core/lib/iomgr/vsock.h + - src/core/lib/iomgr/wakeup_fd_pipe.h + - src/core/lib/iomgr/wakeup_fd_posix.h + - src/core/lib/json/json.h + - src/core/lib/json/json_args.h + - src/core/lib/json/json_writer.h + - src/core/lib/promise/activity.h + - src/core/lib/promise/all_ok.h + - src/core/lib/promise/arena_promise.h + - src/core/lib/promise/cancel_callback.h + - src/core/lib/promise/context.h + - src/core/lib/promise/detail/basic_seq.h + - src/core/lib/promise/detail/join_state.h + - src/core/lib/promise/detail/promise_factory.h + - src/core/lib/promise/detail/promise_like.h + - src/core/lib/promise/detail/seq_state.h + - src/core/lib/promise/detail/status.h + - src/core/lib/promise/exec_ctx_wakeup_scheduler.h + - src/core/lib/promise/for_each.h + - src/core/lib/promise/if.h + - src/core/lib/promise/interceptor_list.h + - src/core/lib/promise/latch.h + - src/core/lib/promise/loop.h + - src/core/lib/promise/map.h + - src/core/lib/promise/party.h + - src/core/lib/promise/pipe.h + - src/core/lib/promise/poll.h + - src/core/lib/promise/promise.h + - src/core/lib/promise/race.h + - src/core/lib/promise/seq.h + - src/core/lib/promise/status_flag.h + - src/core/lib/promise/trace.h + - src/core/lib/promise/try_seq.h + - src/core/lib/resource_quota/api.h + - src/core/lib/resource_quota/arena.h + - src/core/lib/resource_quota/connection_quota.h + - src/core/lib/resource_quota/memory_quota.h + - src/core/lib/resource_quota/periodic_update.h + - src/core/lib/resource_quota/resource_quota.h + - src/core/lib/resource_quota/thread_quota.h + - src/core/lib/resource_quota/trace.h + - src/core/lib/security/certificate_provider/certificate_provider_factory.h + - src/core/lib/security/certificate_provider/certificate_provider_registry.h + - src/core/lib/security/credentials/alts/check_gcp_environment.h + - src/core/lib/security/credentials/alts/grpc_alts_credentials_options.h + - src/core/lib/security/credentials/channel_creds_registry.h + - src/core/lib/slice/percent_encoding.h + - src/core/lib/slice/slice.h + - src/core/lib/slice/slice_buffer.h + - src/core/lib/slice/slice_internal.h + - src/core/lib/slice/slice_refcount.h + - src/core/lib/slice/slice_string_helpers.h + - src/core/lib/surface/api_trace.h + - src/core/lib/surface/call.h + - src/core/lib/surface/call_test_only.h + - src/core/lib/surface/call_trace.h + - src/core/lib/surface/channel.h + - src/core/lib/surface/channel_init.h + - src/core/lib/surface/channel_stack_type.h + - src/core/lib/surface/completion_queue.h + - src/core/lib/surface/completion_queue_factory.h + - src/core/lib/surface/event_string.h + - src/core/lib/surface/init.h + - src/core/lib/surface/init_internally.h + - src/core/lib/surface/lame_client.h + - src/core/lib/surface/validate_metadata.h + - src/core/lib/surface/wait_for_cq_end_op.h + - src/core/lib/transport/batch_builder.h + - src/core/lib/transport/call_arena_allocator.h + - src/core/lib/transport/call_destination.h + - src/core/lib/transport/call_filters.h + - src/core/lib/transport/call_final_info.h + - src/core/lib/transport/call_spine.h + - src/core/lib/transport/connectivity_state.h + - src/core/lib/transport/custom_metadata.h + - src/core/lib/transport/error_utils.h + - src/core/lib/transport/http2_errors.h + - src/core/lib/transport/interception_chain.h + - src/core/lib/transport/message.h + - src/core/lib/transport/metadata.h + - src/core/lib/transport/metadata_batch.h + - src/core/lib/transport/metadata_compression_traits.h + - src/core/lib/transport/parsed_metadata.h + - src/core/lib/transport/simple_slice_based_metadata.h + - src/core/lib/transport/status_conversion.h + - src/core/lib/transport/timeout_encoding.h + - src/core/lib/transport/transport.h + - src/core/lib/transport/transport_fwd.h + - src/core/lib/uri/uri_parser.h + - src/core/load_balancing/backend_metric_data.h + - src/core/load_balancing/lb_policy.h + - src/core/load_balancing/lb_policy_factory.h + - src/core/load_balancing/lb_policy_registry.h + - src/core/load_balancing/subchannel_interface.h + - src/core/resolver/endpoint_addresses.h + - src/core/resolver/resolver.h + - src/core/resolver/resolver_factory.h + - src/core/resolver/resolver_registry.h + - src/core/resolver/server_address.h + - src/core/server/server_interface.h + - src/core/service_config/service_config.h + - src/core/service_config/service_config_call_data.h + - src/core/service_config/service_config_parser.h + - src/core/tsi/alts/handshaker/transport_security_common_api.h + - src/core/util/spinlock.h + - test/core/promise/poll_matcher.h + - third_party/upb/upb/generated_code_support.h + - third_party/upb/upb/mini_descriptor/build_enum.h + - third_party/upb/upb/mini_descriptor/decode.h + - third_party/upb/upb/mini_descriptor/internal/base92.h + - third_party/upb/upb/mini_descriptor/internal/decoder.h + - third_party/upb/upb/mini_descriptor/internal/encode.h + - third_party/upb/upb/mini_descriptor/internal/encode.hpp + - third_party/upb/upb/mini_descriptor/internal/modifiers.h + - third_party/upb/upb/mini_descriptor/internal/wire_constants.h + - third_party/upb/upb/mini_descriptor/link.h + - third_party/upb/upb/wire/decode.h + - third_party/upb/upb/wire/encode.h + - third_party/upb/upb/wire/eps_copy_input_stream.h + - third_party/upb/upb/wire/internal/constants.h + - third_party/upb/upb/wire/internal/decode_fast.h + - third_party/upb/upb/wire/internal/decoder.h + - third_party/upb/upb/wire/internal/reader.h + - third_party/upb/upb/wire/reader.h + - third_party/upb/upb/wire/types.h + src: + - src/core/channelz/channel_trace.cc + - src/core/channelz/channelz.cc + - src/core/channelz/channelz_registry.cc + - src/core/ext/upb-gen/google/protobuf/any.upb_minitable.c + - src/core/ext/upb-gen/google/rpc/status.upb_minitable.c + - src/core/ext/upb-gen/src/proto/grpc/gcp/altscontext.upb_minitable.c + - src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb_minitable.c + - src/core/ext/upb-gen/src/proto/grpc/gcp/transport_security_common.upb_minitable.c + - src/core/handshaker/handshaker_registry.cc + - src/core/handshaker/proxy_mapper_registry.cc + - src/core/lib/address_utils/parse_address.cc + - src/core/lib/address_utils/sockaddr_utils.cc + - src/core/lib/backoff/backoff.cc + - src/core/lib/channel/call_tracer.cc + - src/core/lib/channel/channel_args.cc + - src/core/lib/channel/channel_args_preconditioning.cc + - src/core/lib/channel/channel_stack.cc + - src/core/lib/channel/channel_stack_builder.cc + - src/core/lib/channel/channel_stack_builder_impl.cc + - src/core/lib/channel/channel_stack_trace.cc + - src/core/lib/channel/connected_channel.cc + - src/core/lib/channel/metrics.cc + - src/core/lib/channel/promise_based_filter.cc + - src/core/lib/channel/status_util.cc + - src/core/lib/compression/compression.cc + - src/core/lib/compression/compression_internal.cc + - src/core/lib/compression/message_compress.cc + - src/core/lib/config/core_configuration.cc + - src/core/lib/debug/event_log.cc + - src/core/lib/debug/histogram_view.cc + - src/core/lib/debug/stats.cc + - src/core/lib/debug/stats_data.cc + - src/core/lib/debug/trace.cc + - src/core/lib/event_engine/ares_resolver.cc + - src/core/lib/event_engine/cf_engine/cf_engine.cc + - src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc + - src/core/lib/event_engine/cf_engine/dns_service_resolver.cc + - src/core/lib/event_engine/channel_args_endpoint_config.cc + - src/core/lib/event_engine/default_event_engine.cc + - src/core/lib/event_engine/default_event_engine_factory.cc + - src/core/lib/event_engine/event_engine.cc + - src/core/lib/event_engine/forkable.cc + - src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc + - src/core/lib/event_engine/posix_engine/ev_poll_posix.cc + - src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc + - src/core/lib/event_engine/posix_engine/internal_errqueue.cc + - src/core/lib/event_engine/posix_engine/lockfree_event.cc + - src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.cc + - src/core/lib/event_engine/posix_engine/posix_endpoint.cc + - src/core/lib/event_engine/posix_engine/posix_engine.cc + - src/core/lib/event_engine/posix_engine/posix_engine_listener.cc + - src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc + - src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc + - src/core/lib/event_engine/posix_engine/timer.cc + - src/core/lib/event_engine/posix_engine/timer_heap.cc + - src/core/lib/event_engine/posix_engine/timer_manager.cc + - src/core/lib/event_engine/posix_engine/traced_buffer_list.cc + - src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.cc + - src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc + - src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc + - src/core/lib/event_engine/resolved_address.cc + - src/core/lib/event_engine/shim.cc + - src/core/lib/event_engine/slice.cc + - src/core/lib/event_engine/slice_buffer.cc + - src/core/lib/event_engine/tcp_socket_utils.cc + - src/core/lib/event_engine/thread_pool/thread_count.cc + - src/core/lib/event_engine/thread_pool/thread_pool_factory.cc + - src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc + - src/core/lib/event_engine/thready_event_engine/thready_event_engine.cc + - src/core/lib/event_engine/time_util.cc + - src/core/lib/event_engine/trace.cc + - src/core/lib/event_engine/utils.cc + - src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc + - src/core/lib/event_engine/windows/iocp.cc + - src/core/lib/event_engine/windows/native_windows_dns_resolver.cc + - src/core/lib/event_engine/windows/win_socket.cc + - src/core/lib/event_engine/windows/windows_endpoint.cc + - src/core/lib/event_engine/windows/windows_engine.cc + - src/core/lib/event_engine/windows/windows_listener.cc + - src/core/lib/event_engine/work_queue/basic_work_queue.cc + - src/core/lib/experiments/config.cc + - src/core/lib/experiments/experiments.cc + - src/core/lib/gprpp/load_file.cc + - src/core/lib/gprpp/per_cpu.cc + - src/core/lib/gprpp/ref_counted_string.cc + - src/core/lib/gprpp/status_helper.cc + - src/core/lib/gprpp/time.cc + - src/core/lib/gprpp/time_averaged_stats.cc + - src/core/lib/gprpp/validation_errors.cc + - src/core/lib/gprpp/work_serializer.cc + - src/core/lib/iomgr/buffer_list.cc + - src/core/lib/iomgr/call_combiner.cc + - src/core/lib/iomgr/cfstream_handle.cc + - src/core/lib/iomgr/closure.cc + - src/core/lib/iomgr/combiner.cc + - src/core/lib/iomgr/dualstack_socket_posix.cc + - src/core/lib/iomgr/endpoint.cc + - src/core/lib/iomgr/endpoint_cfstream.cc + - src/core/lib/iomgr/endpoint_pair_posix.cc + - src/core/lib/iomgr/endpoint_pair_windows.cc + - src/core/lib/iomgr/error.cc + - src/core/lib/iomgr/error_cfstream.cc + - src/core/lib/iomgr/ev_apple.cc + - src/core/lib/iomgr/ev_epoll1_linux.cc + - src/core/lib/iomgr/ev_poll_posix.cc + - src/core/lib/iomgr/ev_posix.cc + - src/core/lib/iomgr/ev_windows.cc + - src/core/lib/iomgr/event_engine_shims/closure.cc + - src/core/lib/iomgr/event_engine_shims/endpoint.cc + - src/core/lib/iomgr/event_engine_shims/tcp_client.cc + - src/core/lib/iomgr/exec_ctx.cc + - src/core/lib/iomgr/executor.cc + - src/core/lib/iomgr/fork_posix.cc + - src/core/lib/iomgr/fork_windows.cc + - src/core/lib/iomgr/gethostname_fallback.cc + - src/core/lib/iomgr/gethostname_host_name_max.cc + - src/core/lib/iomgr/gethostname_sysconf.cc + - src/core/lib/iomgr/grpc_if_nametoindex_posix.cc + - src/core/lib/iomgr/grpc_if_nametoindex_unsupported.cc + - src/core/lib/iomgr/internal_errqueue.cc + - src/core/lib/iomgr/iocp_windows.cc + - src/core/lib/iomgr/iomgr.cc + - src/core/lib/iomgr/iomgr_internal.cc + - src/core/lib/iomgr/iomgr_posix.cc + - src/core/lib/iomgr/iomgr_posix_cfstream.cc + - src/core/lib/iomgr/iomgr_windows.cc + - src/core/lib/iomgr/lockfree_event.cc + - src/core/lib/iomgr/polling_entity.cc + - src/core/lib/iomgr/pollset.cc + - src/core/lib/iomgr/pollset_set.cc + - src/core/lib/iomgr/pollset_set_windows.cc + - src/core/lib/iomgr/pollset_windows.cc + - src/core/lib/iomgr/resolve_address.cc + - src/core/lib/iomgr/resolve_address_posix.cc + - src/core/lib/iomgr/resolve_address_windows.cc + - src/core/lib/iomgr/sockaddr_utils_posix.cc + - src/core/lib/iomgr/socket_factory_posix.cc + - src/core/lib/iomgr/socket_mutator.cc + - src/core/lib/iomgr/socket_utils_common_posix.cc + - src/core/lib/iomgr/socket_utils_linux.cc + - src/core/lib/iomgr/socket_utils_posix.cc + - src/core/lib/iomgr/socket_utils_windows.cc + - src/core/lib/iomgr/socket_windows.cc + - src/core/lib/iomgr/systemd_utils.cc + - src/core/lib/iomgr/tcp_client.cc + - src/core/lib/iomgr/tcp_client_cfstream.cc + - src/core/lib/iomgr/tcp_client_posix.cc + - src/core/lib/iomgr/tcp_client_windows.cc + - src/core/lib/iomgr/tcp_posix.cc + - src/core/lib/iomgr/tcp_server.cc + - src/core/lib/iomgr/tcp_server_posix.cc + - src/core/lib/iomgr/tcp_server_utils_posix_common.cc + - src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc + - src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc + - src/core/lib/iomgr/tcp_server_windows.cc + - src/core/lib/iomgr/tcp_windows.cc + - src/core/lib/iomgr/timer.cc + - src/core/lib/iomgr/timer_generic.cc + - src/core/lib/iomgr/timer_heap.cc + - src/core/lib/iomgr/timer_manager.cc + - src/core/lib/iomgr/unix_sockets_posix.cc + - src/core/lib/iomgr/unix_sockets_posix_noop.cc + - src/core/lib/iomgr/vsock.cc + - src/core/lib/iomgr/wakeup_fd_eventfd.cc + - src/core/lib/iomgr/wakeup_fd_nospecial.cc + - src/core/lib/iomgr/wakeup_fd_pipe.cc + - src/core/lib/iomgr/wakeup_fd_posix.cc + - src/core/lib/json/json_writer.cc + - src/core/lib/promise/activity.cc + - src/core/lib/promise/party.cc + - src/core/lib/promise/trace.cc + - src/core/lib/resource_quota/api.cc + - src/core/lib/resource_quota/arena.cc + - src/core/lib/resource_quota/connection_quota.cc + - src/core/lib/resource_quota/memory_quota.cc + - src/core/lib/resource_quota/periodic_update.cc + - src/core/lib/resource_quota/resource_quota.cc + - src/core/lib/resource_quota/thread_quota.cc + - src/core/lib/resource_quota/trace.cc + - src/core/lib/security/certificate_provider/certificate_provider_registry.cc + - src/core/lib/security/credentials/alts/check_gcp_environment.cc + - src/core/lib/security/credentials/alts/check_gcp_environment_linux.cc + - src/core/lib/security/credentials/alts/check_gcp_environment_no_op.cc + - src/core/lib/security/credentials/alts/check_gcp_environment_windows.cc + - src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc + - src/core/lib/security/credentials/alts/grpc_alts_credentials_options.cc + - src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc + - src/core/lib/slice/percent_encoding.cc + - src/core/lib/slice/slice.cc + - src/core/lib/slice/slice_buffer.cc + - src/core/lib/slice/slice_refcount.cc + - src/core/lib/slice/slice_string_helpers.cc + - src/core/lib/surface/api_trace.cc + - src/core/lib/surface/byte_buffer.cc + - src/core/lib/surface/byte_buffer_reader.cc + - src/core/lib/surface/call.cc + - src/core/lib/surface/call_details.cc + - src/core/lib/surface/call_log_batch.cc + - src/core/lib/surface/channel.cc + - src/core/lib/surface/channel_init.cc + - src/core/lib/surface/channel_stack_type.cc + - src/core/lib/surface/completion_queue.cc + - src/core/lib/surface/completion_queue_factory.cc + - src/core/lib/surface/event_string.cc + - src/core/lib/surface/init_internally.cc + - src/core/lib/surface/lame_client.cc + - src/core/lib/surface/metadata_array.cc + - src/core/lib/surface/validate_metadata.cc + - src/core/lib/surface/version.cc + - src/core/lib/surface/wait_for_cq_end_op.cc + - src/core/lib/transport/batch_builder.cc + - src/core/lib/transport/call_arena_allocator.cc + - src/core/lib/transport/call_filters.cc + - src/core/lib/transport/call_final_info.cc + - src/core/lib/transport/call_spine.cc + - src/core/lib/transport/connectivity_state.cc + - src/core/lib/transport/error_utils.cc + - src/core/lib/transport/interception_chain.cc + - src/core/lib/transport/message.cc + - src/core/lib/transport/metadata.cc + - src/core/lib/transport/metadata_batch.cc + - src/core/lib/transport/parsed_metadata.cc + - src/core/lib/transport/status_conversion.cc + - src/core/lib/transport/timeout_encoding.cc + - src/core/lib/transport/transport.cc + - src/core/lib/transport/transport_op_string.cc + - src/core/lib/uri/uri_parser.cc + - src/core/load_balancing/lb_policy.cc + - src/core/load_balancing/lb_policy_registry.cc + - src/core/resolver/endpoint_addresses.cc + - src/core/resolver/resolver.cc + - src/core/resolver/resolver_registry.cc + - src/core/service_config/service_config_parser.cc + - src/core/tsi/alts/handshaker/transport_security_common_api.cc + - test/core/transport/interception_chain_test.cc + - third_party/upb/upb/mini_descriptor/build_enum.c + - third_party/upb/upb/mini_descriptor/decode.c + - third_party/upb/upb/mini_descriptor/internal/base92.c + - third_party/upb/upb/mini_descriptor/internal/encode.c + - third_party/upb/upb/mini_descriptor/link.c + - third_party/upb/upb/wire/decode.c + - third_party/upb/upb/wire/encode.c + - third_party/upb/upb/wire/eps_copy_input_stream.c + - third_party/upb/upb/wire/internal/decode_fast.c + - third_party/upb/upb/wire/reader.c + deps: + - gtest + - utf8_range_lib + - upb_message_lib + - z + - absl/base:config + - absl/base:no_destructor + - absl/cleanup:cleanup + - absl/container:flat_hash_map + - absl/container:inlined_vector + - absl/functional:function_ref + - absl/hash:hash + - absl/meta:type_traits + - absl/status:statusor + - absl/types:span + - absl/utility:utility + - cares + - gpr + - address_sorting + uses_polling: false +- name: interceptor_list_test + gtest: true + build: test + language: c++ + headers: + - src/core/ext/upb-gen/google/protobuf/any.upb.h + - src/core/ext/upb-gen/google/protobuf/any.upb_minitable.h + - src/core/ext/upb-gen/google/rpc/status.upb.h + - src/core/ext/upb-gen/google/rpc/status.upb_minitable.h + - src/core/lib/debug/trace.h + - src/core/lib/event_engine/event_engine_context.h + - src/core/lib/experiments/config.h + - src/core/lib/experiments/experiments.h + - src/core/lib/gprpp/atomic_utils.h + - src/core/lib/gprpp/bitset.h + - src/core/lib/gprpp/cpp_impl_of.h + - src/core/lib/gprpp/down_cast.h + - src/core/lib/gprpp/manual_constructor.h + - src/core/lib/gprpp/orphanable.h + - src/core/lib/gprpp/ref_counted.h + - src/core/lib/gprpp/ref_counted_ptr.h + - src/core/lib/gprpp/status_helper.h + - src/core/lib/gprpp/time.h + - src/core/lib/iomgr/closure.h + - src/core/lib/iomgr/combiner.h + - src/core/lib/iomgr/error.h + - src/core/lib/iomgr/exec_ctx.h + - src/core/lib/iomgr/executor.h + - src/core/lib/iomgr/iomgr_internal.h + - src/core/lib/promise/activity.h + - src/core/lib/promise/context.h + - src/core/lib/promise/detail/basic_seq.h + - src/core/lib/promise/detail/promise_factory.h + - src/core/lib/promise/detail/promise_like.h + - src/core/lib/promise/detail/seq_state.h + - src/core/lib/promise/detail/status.h + - src/core/lib/promise/exec_ctx_wakeup_scheduler.h + - src/core/lib/promise/interceptor_list.h + - src/core/lib/promise/loop.h + - src/core/lib/promise/map.h + - src/core/lib/promise/poll.h + - src/core/lib/promise/race.h + - src/core/lib/promise/seq.h + - src/core/lib/promise/trace.h + - src/core/lib/resource_quota/arena.h + - src/core/lib/resource_quota/connection_quota.h + - src/core/lib/resource_quota/memory_quota.h + - src/core/lib/resource_quota/periodic_update.h + - src/core/lib/resource_quota/resource_quota.h + - src/core/lib/resource_quota/thread_quota.h + - src/core/lib/resource_quota/trace.h + - src/core/lib/slice/percent_encoding.h + - src/core/lib/slice/slice.h + - src/core/lib/slice/slice_internal.h + - src/core/lib/slice/slice_refcount.h + - src/core/lib/slice/slice_string_helpers.h + - src/core/util/spinlock.h + - test/core/promise/test_context.h + - third_party/upb/upb/generated_code_support.h + - third_party/upb/upb/mini_descriptor/build_enum.h + - third_party/upb/upb/mini_descriptor/decode.h + - third_party/upb/upb/mini_descriptor/internal/base92.h + - third_party/upb/upb/mini_descriptor/internal/decoder.h + - third_party/upb/upb/mini_descriptor/internal/encode.h + - third_party/upb/upb/mini_descriptor/internal/encode.hpp - third_party/upb/upb/mini_descriptor/internal/modifiers.h - third_party/upb/upb/mini_descriptor/internal/wire_constants.h - third_party/upb/upb/mini_descriptor/link.h @@ -11785,7 +12294,6 @@ targets: - test/cpp/interop/client_helper.cc - test/cpp/interop/interop_client.cc deps: - - absl/log:check - grpc++_test_config - grpc++_test_util - name: interop_server @@ -11803,7 +12311,6 @@ targets: - test/cpp/interop/interop_server_bootstrap.cc - test/cpp/interop/server_helper.cc deps: - - absl/log:check - grpc++_test_config - grpc++_test_util - name: invalid_call_argument_test @@ -11853,8 +12360,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -11874,11 +12381,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/invoke_large_request.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -11893,7 +12399,6 @@ targets: - test/core/event_engine/windows/iocp_test.cc deps: - gtest - - absl/log:check - grpc_test_util platforms: - linux @@ -11965,28 +12470,27 @@ targets: build: test language: c++ headers: - - test/core/util/cmdline.h - - test/core/util/evaluate_args_test_util.h - - test/core/util/fuzzer_util.h - - test/core/util/grpc_profiler.h - - test/core/util/histogram.h - - test/core/util/mock_authorization_endpoint.h - - test/core/util/mock_endpoint.h - - test/core/util/parse_hexstring.h - - test/core/util/resolve_localhost_ip46.h - - test/core/util/slice_splitter.h - - test/core/util/tracer_util.h + - test/core/test_util/cmdline.h + - test/core/test_util/evaluate_args_test_util.h + - test/core/test_util/fuzzer_util.h + - test/core/test_util/grpc_profiler.h + - test/core/test_util/histogram.h + - test/core/test_util/mock_endpoint.h + - test/core/test_util/parse_hexstring.h + - test/core/test_util/resolve_localhost_ip46.h + - test/core/test_util/slice_splitter.h + - test/core/test_util/tracer_util.h src: - test/core/security/json_token_test.cc - - test/core/util/cmdline.cc - - test/core/util/fuzzer_util.cc - - test/core/util/grpc_profiler.cc - - test/core/util/histogram.cc - - test/core/util/mock_endpoint.cc - - test/core/util/parse_hexstring.cc - - test/core/util/resolve_localhost_ip46.cc - - test/core/util/slice_splitter.cc - - test/core/util/tracer_util.cc + - test/core/test_util/cmdline.cc + - test/core/test_util/fuzzer_util.cc + - test/core/test_util/grpc_profiler.cc + - test/core/test_util/histogram.cc + - test/core/test_util/mock_endpoint.cc + - test/core/test_util/parse_hexstring.cc + - test/core/test_util/resolve_localhost_ip46.cc + - test/core/test_util/slice_splitter.cc + - test/core/test_util/tracer_util.cc deps: - gtest - grpc_test_util @@ -11996,28 +12500,27 @@ targets: build: test language: c++ headers: - - test/core/util/cmdline.h - - test/core/util/evaluate_args_test_util.h - - test/core/util/fuzzer_util.h - - test/core/util/grpc_profiler.h - - test/core/util/histogram.h - - test/core/util/mock_authorization_endpoint.h - - test/core/util/mock_endpoint.h - - test/core/util/parse_hexstring.h - - test/core/util/resolve_localhost_ip46.h - - test/core/util/slice_splitter.h - - test/core/util/tracer_util.h + - test/core/test_util/cmdline.h + - test/core/test_util/evaluate_args_test_util.h + - test/core/test_util/fuzzer_util.h + - test/core/test_util/grpc_profiler.h + - test/core/test_util/histogram.h + - test/core/test_util/mock_endpoint.h + - test/core/test_util/parse_hexstring.h + - test/core/test_util/resolve_localhost_ip46.h + - test/core/test_util/slice_splitter.h + - test/core/test_util/tracer_util.h src: - test/core/security/jwt_verifier_test.cc - - test/core/util/cmdline.cc - - test/core/util/fuzzer_util.cc - - test/core/util/grpc_profiler.cc - - test/core/util/histogram.cc - - test/core/util/mock_endpoint.cc - - test/core/util/parse_hexstring.cc - - test/core/util/resolve_localhost_ip46.cc - - test/core/util/slice_splitter.cc - - test/core/util/tracer_util.cc + - test/core/test_util/cmdline.cc + - test/core/test_util/fuzzer_util.cc + - test/core/test_util/grpc_profiler.cc + - test/core/test_util/histogram.cc + - test/core/test_util/mock_endpoint.cc + - test/core/test_util/parse_hexstring.cc + - test/core/test_util/resolve_localhost_ip46.cc + - test/core/test_util/slice_splitter.cc + - test/core/test_util/tracer_util.cc deps: - gtest - grpc_test_util @@ -12057,8 +12560,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -12078,11 +12581,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/keepalive_timeout.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -12133,8 +12635,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -12154,11 +12656,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/large_metadata.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -12277,7 +12778,7 @@ targets: language: c++ headers: [] src: - - test/core/gpr/log_test.cc + - test/core/util/log_test.cc deps: - gtest - grpc_test_util @@ -12334,7 +12835,6 @@ targets: - src/core/lib/event_engine/event_engine_context.h - src/core/lib/experiments/config.h - src/core/lib/experiments/experiments.h - - src/core/lib/gpr/spinlock.h - src/core/lib/gprpp/atomic_utils.h - src/core/lib/gprpp/bitset.h - src/core/lib/gprpp/cpp_impl_of.h @@ -12386,6 +12886,7 @@ targets: - src/core/lib/slice/slice_internal.h - src/core/lib/slice/slice_refcount.h - src/core/lib/slice/slice_string_helpers.h + - src/core/util/spinlock.h - test/core/promise/test_wakeup_schedulers.h - third_party/upb/upb/generated_code_support.h - third_party/upb/upb/mini_descriptor/build_enum.h @@ -12472,28 +12973,27 @@ targets: build: test language: c++ headers: - - test/core/util/cmdline.h - - test/core/util/evaluate_args_test_util.h - - test/core/util/fuzzer_util.h - - test/core/util/grpc_profiler.h - - test/core/util/histogram.h - - test/core/util/mock_authorization_endpoint.h - - test/core/util/mock_endpoint.h - - test/core/util/parse_hexstring.h - - test/core/util/resolve_localhost_ip46.h - - test/core/util/slice_splitter.h - - test/core/util/tracer_util.h + - test/core/test_util/cmdline.h + - test/core/test_util/evaluate_args_test_util.h + - test/core/test_util/fuzzer_util.h + - test/core/test_util/grpc_profiler.h + - test/core/test_util/histogram.h + - test/core/test_util/mock_endpoint.h + - test/core/test_util/parse_hexstring.h + - test/core/test_util/resolve_localhost_ip46.h + - test/core/test_util/slice_splitter.h + - test/core/test_util/tracer_util.h src: - test/core/matchers/matchers_test.cc - - test/core/util/cmdline.cc - - test/core/util/fuzzer_util.cc - - test/core/util/grpc_profiler.cc - - test/core/util/histogram.cc - - test/core/util/mock_endpoint.cc - - test/core/util/parse_hexstring.cc - - test/core/util/resolve_localhost_ip46.cc - - test/core/util/slice_splitter.cc - - test/core/util/tracer_util.cc + - test/core/test_util/cmdline.cc + - test/core/test_util/fuzzer_util.cc + - test/core/test_util/grpc_profiler.cc + - test/core/test_util/histogram.cc + - test/core/test_util/mock_endpoint.cc + - test/core/test_util/parse_hexstring.cc + - test/core/test_util/resolve_localhost_ip46.cc + - test/core/test_util/slice_splitter.cc + - test/core/test_util/tracer_util.cc deps: - gtest - grpc_test_util @@ -12544,8 +13044,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -12565,11 +13065,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/max_concurrent_streams.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -12608,8 +13107,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -12629,11 +13128,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/max_connection_age.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -12672,8 +13170,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -12693,11 +13191,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/max_connection_idle.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -12736,8 +13233,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -12757,11 +13254,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/max_message_length.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -12806,35 +13302,33 @@ targets: - test/cpp/end2end/test_service_impl.cc deps: - gtest - - absl/log:check - grpc++_test_util - name: message_compress_test gtest: true build: test language: c++ headers: - - test/core/util/cmdline.h - - test/core/util/evaluate_args_test_util.h - - test/core/util/fuzzer_util.h - - test/core/util/grpc_profiler.h - - test/core/util/histogram.h - - test/core/util/mock_authorization_endpoint.h - - test/core/util/mock_endpoint.h - - test/core/util/parse_hexstring.h - - test/core/util/resolve_localhost_ip46.h - - test/core/util/slice_splitter.h - - test/core/util/tracer_util.h + - test/core/test_util/cmdline.h + - test/core/test_util/evaluate_args_test_util.h + - test/core/test_util/fuzzer_util.h + - test/core/test_util/grpc_profiler.h + - test/core/test_util/histogram.h + - test/core/test_util/mock_endpoint.h + - test/core/test_util/parse_hexstring.h + - test/core/test_util/resolve_localhost_ip46.h + - test/core/test_util/slice_splitter.h + - test/core/test_util/tracer_util.h src: - test/core/compression/message_compress_test.cc - - test/core/util/cmdline.cc - - test/core/util/fuzzer_util.cc - - test/core/util/grpc_profiler.cc - - test/core/util/histogram.cc - - test/core/util/mock_endpoint.cc - - test/core/util/parse_hexstring.cc - - test/core/util/resolve_localhost_ip46.cc - - test/core/util/slice_splitter.cc - - test/core/util/tracer_util.cc + - test/core/test_util/cmdline.cc + - test/core/test_util/fuzzer_util.cc + - test/core/test_util/grpc_profiler.cc + - test/core/test_util/histogram.cc + - test/core/test_util/mock_endpoint.cc + - test/core/test_util/parse_hexstring.cc + - test/core/test_util/resolve_localhost_ip46.cc + - test/core/test_util/slice_splitter.cc + - test/core/test_util/tracer_util.cc deps: - gtest - grpc_test_util @@ -12854,28 +13348,27 @@ targets: build: test language: c++ headers: - - test/core/util/cmdline.h - - test/core/util/evaluate_args_test_util.h - - test/core/util/fuzzer_util.h - - test/core/util/grpc_profiler.h - - test/core/util/histogram.h - - test/core/util/mock_authorization_endpoint.h - - test/core/util/mock_endpoint.h - - test/core/util/parse_hexstring.h - - test/core/util/resolve_localhost_ip46.h - - test/core/util/slice_splitter.h - - test/core/util/tracer_util.h - src: + - test/core/test_util/cmdline.h + - test/core/test_util/evaluate_args_test_util.h + - test/core/test_util/fuzzer_util.h + - test/core/test_util/grpc_profiler.h + - test/core/test_util/histogram.h + - test/core/test_util/mock_endpoint.h + - test/core/test_util/parse_hexstring.h + - test/core/test_util/resolve_localhost_ip46.h + - test/core/test_util/slice_splitter.h + - test/core/test_util/tracer_util.h + src: + - test/core/test_util/cmdline.cc + - test/core/test_util/fuzzer_util.cc + - test/core/test_util/grpc_profiler.cc + - test/core/test_util/histogram.cc + - test/core/test_util/mock_endpoint.cc + - test/core/test_util/parse_hexstring.cc + - test/core/test_util/resolve_localhost_ip46.cc + - test/core/test_util/slice_splitter.cc + - test/core/test_util/tracer_util.cc - test/core/transport/metadata_map_test.cc - - test/core/util/cmdline.cc - - test/core/util/fuzzer_util.cc - - test/core/util/grpc_profiler.cc - - test/core/util/histogram.cc - - test/core/util/mock_endpoint.cc - - test/core/util/parse_hexstring.cc - - test/core/util/resolve_localhost_ip46.cc - - test/core/util/slice_splitter.cc - - test/core/util/tracer_util.cc deps: - gtest - grpc_test_util @@ -12884,10 +13377,10 @@ targets: build: test language: c++ headers: - - test/core/util/fake_stats_plugin.h + - test/core/test_util/fake_stats_plugin.h src: - test/core/channel/metrics_test.cc - - test/core/util/fake_stats_plugin.cc + - test/core/test_util/fake_stats_plugin.cc deps: - gtest - grpc_test_util @@ -13023,8 +13516,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -13044,11 +13537,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/negative_deadline.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -13099,8 +13591,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -13120,11 +13612,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/no_logging.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -13163,8 +13654,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -13184,11 +13675,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/no_op.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -13217,7 +13707,6 @@ targets: - test/cpp/end2end/nonblocking_test.cc deps: - gtest - - absl/log:check - grpc++_test_util - name: notification_test gtest: true @@ -13262,6 +13751,7 @@ targets: - src/core/lib/promise/map.h - src/core/lib/promise/observable.h - src/core/lib/promise/poll.h + - test/core/promise/poll_matcher.h src: - src/core/lib/promise/activity.cc - test/core/promise/observable_test.cc @@ -13292,7 +13782,6 @@ targets: - test/core/event_engine/test_suite/tests/server_test.cc deps: - gtest - - absl/log:check - grpc_test_util platforms: - linux @@ -13326,10 +13815,10 @@ targets: build: test language: c++ headers: - - test/core/util/osa_distance.h + - test/core/test_util/osa_distance.h src: - - test/core/util/osa_distance.cc - - test/core/util/osa_distance_test.cc + - test/core/test_util/osa_distance.cc + - test/core/test_util/osa_distance_test.cc deps: - gtest - name: otel_plugin_test @@ -13342,7 +13831,7 @@ targets: - src/cpp/ext/otel/otel_client_call_tracer.h - src/cpp/ext/otel/otel_plugin.h - src/cpp/ext/otel/otel_server_call_tracer.h - - test/core/util/fake_stats_plugin.h + - test/core/test_util/fake_stats_plugin.h - test/cpp/end2end/test_service_impl.h - test/cpp/ext/otel/otel_test_library.h src: @@ -13353,13 +13842,12 @@ targets: - src/cpp/ext/otel/otel_client_call_tracer.cc - src/cpp/ext/otel/otel_plugin.cc - src/cpp/ext/otel/otel_server_call_tracer.cc - - test/core/util/fake_stats_plugin.cc + - test/core/test_util/fake_stats_plugin.cc - test/cpp/end2end/test_service_impl.cc - test/cpp/ext/otel/otel_plugin_test.cc - test/cpp/ext/otel/otel_test_library.cc deps: - gtest - - absl/log:check - opentelemetry-cpp::api - opentelemetry-cpp::metrics - grpc++_test_util @@ -13376,16 +13864,15 @@ targets: - test/core/end2end/cq_verifier.cc deps: - gtest - - absl/log:check - grpc_test_util - name: outlier_detection_lb_config_parser_test gtest: true build: test language: c++ headers: - - test/core/util/scoped_env_var.h + - test/core/test_util/scoped_env_var.h src: - - test/core/client_channel/lb_policy/outlier_detection_lb_config_parser_test.cc + - test/core/load_balancing/outlier_detection_lb_config_parser_test.cc deps: - gtest - grpc_test_util @@ -13395,17 +13882,16 @@ targets: build: test language: c++ headers: - - test/core/client_channel/lb_policy/lb_policy_test_lib.h - test/core/event_engine/event_engine_test_utils.h - test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.h + - test/core/load_balancing/lb_policy_test_lib.h src: - test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.proto - - test/core/client_channel/lb_policy/outlier_detection_test.cc - test/core/event_engine/event_engine_test_utils.cc - test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.cc + - test/core/load_balancing/outlier_detection_test.cc deps: - gtest - - absl/log:check - protobuf - grpc_test_util uses_polling: false @@ -13461,32 +13947,31 @@ targets: language: c++ headers: - test/core/end2end/data/ssl_test_data.h - - test/core/util/cmdline.h - - test/core/util/evaluate_args_test_util.h - - test/core/util/fuzzer_util.h - - test/core/util/grpc_profiler.h - - test/core/util/histogram.h - - test/core/util/mock_authorization_endpoint.h - - test/core/util/mock_endpoint.h - - test/core/util/parse_hexstring.h - - test/core/util/resolve_localhost_ip46.h - - test/core/util/slice_splitter.h - - test/core/util/tracer_util.h + - test/core/test_util/cmdline.h + - test/core/test_util/evaluate_args_test_util.h + - test/core/test_util/fuzzer_util.h + - test/core/test_util/grpc_profiler.h + - test/core/test_util/histogram.h + - test/core/test_util/mock_endpoint.h + - test/core/test_util/parse_hexstring.h + - test/core/test_util/resolve_localhost_ip46.h + - test/core/test_util/slice_splitter.h + - test/core/test_util/tracer_util.h src: - test/core/end2end/data/client_certs.cc - test/core/end2end/data/server1_cert.cc - test/core/end2end/data/server1_key.cc - test/core/end2end/data/test_root_cert.cc - test/core/http/parser_test.cc - - test/core/util/cmdline.cc - - test/core/util/fuzzer_util.cc - - test/core/util/grpc_profiler.cc - - test/core/util/histogram.cc - - test/core/util/mock_endpoint.cc - - test/core/util/parse_hexstring.cc - - test/core/util/resolve_localhost_ip46.cc - - test/core/util/slice_splitter.cc - - test/core/util/tracer_util.cc + - test/core/test_util/cmdline.cc + - test/core/test_util/fuzzer_util.cc + - test/core/test_util/grpc_profiler.cc + - test/core/test_util/histogram.cc + - test/core/test_util/mock_endpoint.cc + - test/core/test_util/parse_hexstring.cc + - test/core/test_util/resolve_localhost_ip46.cc + - test/core/test_util/slice_splitter.cc + - test/core/test_util/tracer_util.cc deps: - gtest - grpc_test_util @@ -13539,8 +14024,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -13560,11 +14045,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/payload.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -13592,7 +14076,6 @@ targets: - src/core/lib/debug/trace.h - src/core/lib/experiments/config.h - src/core/lib/experiments/experiments.h - - src/core/lib/gpr/spinlock.h - src/core/lib/gprpp/bitset.h - src/core/lib/gprpp/manual_constructor.h - src/core/lib/gprpp/status_helper.h @@ -13609,6 +14092,7 @@ targets: - src/core/lib/slice/slice_internal.h - src/core/lib/slice/slice_refcount.h - src/core/lib/slice/slice_string_helpers.h + - src/core/util/spinlock.h - third_party/upb/upb/generated_code_support.h - third_party/upb/upb/mini_descriptor/build_enum.h - third_party/upb/upb/mini_descriptor/decode.h @@ -13672,20 +14156,19 @@ targets: build: test language: c++ headers: - - test/core/client_channel/lb_policy/lb_policy_test_lib.h - test/core/event_engine/event_engine_test_utils.h - test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.h - - test/core/util/fake_stats_plugin.h - - test/core/util/scoped_env_var.h + - test/core/load_balancing/lb_policy_test_lib.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/scoped_env_var.h src: - test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.proto - - test/core/client_channel/lb_policy/pick_first_test.cc - test/core/event_engine/event_engine_test_utils.cc - test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.cc - - test/core/util/fake_stats_plugin.cc + - test/core/load_balancing/pick_first_test.cc + - test/core/test_util/fake_stats_plugin.cc deps: - gtest - - absl/log:check - protobuf - grpc_test_util uses_polling: false @@ -13694,28 +14177,27 @@ targets: build: test language: c++ headers: - - test/core/util/cmdline.h - - test/core/util/evaluate_args_test_util.h - - test/core/util/fuzzer_util.h - - test/core/util/grpc_profiler.h - - test/core/util/histogram.h - - test/core/util/mock_authorization_endpoint.h - - test/core/util/mock_endpoint.h - - test/core/util/parse_hexstring.h - - test/core/util/resolve_localhost_ip46.h - - test/core/util/slice_splitter.h - - test/core/util/tracer_util.h - src: + - test/core/test_util/cmdline.h + - test/core/test_util/evaluate_args_test_util.h + - test/core/test_util/fuzzer_util.h + - test/core/test_util/grpc_profiler.h + - test/core/test_util/histogram.h + - test/core/test_util/mock_endpoint.h + - test/core/test_util/parse_hexstring.h + - test/core/test_util/resolve_localhost_ip46.h + - test/core/test_util/slice_splitter.h + - test/core/test_util/tracer_util.h + src: + - test/core/test_util/cmdline.cc + - test/core/test_util/fuzzer_util.cc + - test/core/test_util/grpc_profiler.cc + - test/core/test_util/histogram.cc + - test/core/test_util/mock_endpoint.cc + - test/core/test_util/parse_hexstring.cc + - test/core/test_util/resolve_localhost_ip46.cc + - test/core/test_util/slice_splitter.cc + - test/core/test_util/tracer_util.cc - test/core/transport/chttp2/ping_abuse_policy_test.cc - - test/core/util/cmdline.cc - - test/core/util/fuzzer_util.cc - - test/core/util/grpc_profiler.cc - - test/core/util/histogram.cc - - test/core/util/mock_endpoint.cc - - test/core/util/parse_hexstring.cc - - test/core/util/resolve_localhost_ip46.cc - - test/core/util/slice_splitter.cc - - test/core/util/tracer_util.cc deps: - gtest - grpc_test_util @@ -13737,28 +14219,27 @@ targets: build: test language: c++ headers: - - test/core/util/cmdline.h - - test/core/util/evaluate_args_test_util.h - - test/core/util/fuzzer_util.h - - test/core/util/grpc_profiler.h - - test/core/util/histogram.h - - test/core/util/mock_authorization_endpoint.h - - test/core/util/mock_endpoint.h - - test/core/util/parse_hexstring.h - - test/core/util/resolve_localhost_ip46.h - - test/core/util/slice_splitter.h - - test/core/util/tracer_util.h - src: + - test/core/test_util/cmdline.h + - test/core/test_util/evaluate_args_test_util.h + - test/core/test_util/fuzzer_util.h + - test/core/test_util/grpc_profiler.h + - test/core/test_util/histogram.h + - test/core/test_util/mock_endpoint.h + - test/core/test_util/parse_hexstring.h + - test/core/test_util/resolve_localhost_ip46.h + - test/core/test_util/slice_splitter.h + - test/core/test_util/tracer_util.h + src: + - test/core/test_util/cmdline.cc + - test/core/test_util/fuzzer_util.cc + - test/core/test_util/grpc_profiler.cc + - test/core/test_util/histogram.cc + - test/core/test_util/mock_endpoint.cc + - test/core/test_util/parse_hexstring.cc + - test/core/test_util/resolve_localhost_ip46.cc + - test/core/test_util/slice_splitter.cc + - test/core/test_util/tracer_util.cc - test/core/transport/chttp2/ping_configuration_test.cc - - test/core/util/cmdline.cc - - test/core/util/fuzzer_util.cc - - test/core/util/grpc_profiler.cc - - test/core/util/histogram.cc - - test/core/util/mock_endpoint.cc - - test/core/util/parse_hexstring.cc - - test/core/util/resolve_localhost_ip46.cc - - test/core/util/slice_splitter.cc - - test/core/util/tracer_util.cc deps: - gtest - grpc_test_util @@ -13798,8 +14279,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -13819,11 +14300,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/ping_pong_streaming.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -13832,28 +14312,27 @@ targets: build: test language: c++ headers: - - test/core/util/cmdline.h - - test/core/util/evaluate_args_test_util.h - - test/core/util/fuzzer_util.h - - test/core/util/grpc_profiler.h - - test/core/util/histogram.h - - test/core/util/mock_authorization_endpoint.h - - test/core/util/mock_endpoint.h - - test/core/util/parse_hexstring.h - - test/core/util/resolve_localhost_ip46.h - - test/core/util/slice_splitter.h - - test/core/util/tracer_util.h - src: + - test/core/test_util/cmdline.h + - test/core/test_util/evaluate_args_test_util.h + - test/core/test_util/fuzzer_util.h + - test/core/test_util/grpc_profiler.h + - test/core/test_util/histogram.h + - test/core/test_util/mock_endpoint.h + - test/core/test_util/parse_hexstring.h + - test/core/test_util/resolve_localhost_ip46.h + - test/core/test_util/slice_splitter.h + - test/core/test_util/tracer_util.h + src: + - test/core/test_util/cmdline.cc + - test/core/test_util/fuzzer_util.cc + - test/core/test_util/grpc_profiler.cc + - test/core/test_util/histogram.cc + - test/core/test_util/mock_endpoint.cc + - test/core/test_util/parse_hexstring.cc + - test/core/test_util/resolve_localhost_ip46.cc + - test/core/test_util/slice_splitter.cc + - test/core/test_util/tracer_util.cc - test/core/transport/chttp2/ping_rate_policy_test.cc - - test/core/util/cmdline.cc - - test/core/util/fuzzer_util.cc - - test/core/util/grpc_profiler.cc - - test/core/util/histogram.cc - - test/core/util/mock_endpoint.cc - - test/core/util/parse_hexstring.cc - - test/core/util/resolve_localhost_ip46.cc - - test/core/util/slice_splitter.cc - - test/core/util/tracer_util.cc deps: - gtest - grpc_test_util @@ -13893,8 +14372,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -13914,11 +14393,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/ping.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -13962,7 +14440,6 @@ targets: - test/cpp/end2end/test_service_impl.cc deps: - gtest - - absl/log:check - grpc++_test_util - name: posix_endpoint_test gtest: true @@ -13981,7 +14458,6 @@ targets: - test/core/event_engine/test_suite/posix/oracle_event_engine_posix.cc deps: - gtest - - absl/log:check - grpc_test_util platforms: - linux @@ -14016,7 +14492,6 @@ targets: - test/core/event_engine/test_suite/posix/oracle_event_engine_posix.cc deps: - gtest - - absl/log:check - grpc_test_util platforms: - linux @@ -14030,7 +14505,7 @@ targets: - test/core/event_engine/test_suite/event_engine_test_framework.h - test/core/event_engine/test_suite/posix/oracle_event_engine_posix.h - test/core/event_engine/test_suite/tests/dns_test.h - - test/core/util/fake_udp_and_tcp_server.h + - test/core/test_util/fake_udp_and_tcp_server.h - test/cpp/util/get_grpc_test_runfile_dir.h - test/cpp/util/windows/manifest_file.h src: @@ -14039,12 +14514,11 @@ targets: - test/core/event_engine/test_suite/posix/oracle_event_engine_posix.cc - test/core/event_engine/test_suite/posix_event_engine_native_dns_test.cc - test/core/event_engine/test_suite/tests/dns_test.cc - - test/core/util/fake_udp_and_tcp_server.cc + - test/core/test_util/fake_udp_and_tcp_server.cc - test/cpp/util/get_grpc_test_runfile_dir.cc - test/cpp/util/windows/manifest_file.cc deps: - gtest - - absl/log:check - grpc++_test_util platforms: - linux @@ -14061,7 +14535,7 @@ targets: - test/core/event_engine/test_suite/tests/dns_test.h - test/core/event_engine/test_suite/tests/server_test.h - test/core/event_engine/test_suite/tests/timer_test.h - - test/core/util/fake_udp_and_tcp_server.h + - test/core/test_util/fake_udp_and_tcp_server.h - test/cpp/util/get_grpc_test_runfile_dir.h - test/cpp/util/windows/manifest_file.h src: @@ -14073,12 +14547,11 @@ targets: - test/core/event_engine/test_suite/tests/dns_test.cc - test/core/event_engine/test_suite/tests/server_test.cc - test/core/event_engine/test_suite/tests/timer_test.cc - - test/core/util/fake_udp_and_tcp_server.cc + - test/core/test_util/fake_udp_and_tcp_server.cc - test/cpp/util/get_grpc_test_runfile_dir.cc - test/cpp/util/windows/manifest_file.cc deps: - gtest - - absl/log:check - grpc++_test_util platforms: - linux @@ -14269,7 +14742,6 @@ targets: - test/cpp/util/proto_reflection_descriptor_database.cc deps: - gtest - - absl/log:check - grpc++_reflection - grpc++_test_util - name: proto_utils_test @@ -14319,8 +14791,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -14340,11 +14812,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/proxy_auth.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -14388,7 +14859,6 @@ targets: - test/cpp/qps/server_sync.cc - test/cpp/qps/usage_timer.cc deps: - - absl/log:check - grpc++_test_config - grpc++_test_util - name: qps_worker @@ -14422,7 +14892,6 @@ targets: - test/cpp/qps/usage_timer.cc - test/cpp/qps/worker.cc deps: - - absl/log:check - grpc++_test_config - grpc++_test_util - name: query_extensions_test @@ -14482,7 +14951,6 @@ targets: - test/cpp/end2end/test_service_impl.cc deps: - gtest - - absl/log:check - grpc++_test_util - name: rbac_service_config_parser_test gtest: true @@ -14500,28 +14968,27 @@ targets: build: test language: c++ headers: - - test/core/util/cmdline.h - - test/core/util/evaluate_args_test_util.h - - test/core/util/fuzzer_util.h - - test/core/util/grpc_profiler.h - - test/core/util/histogram.h - - test/core/util/mock_authorization_endpoint.h - - test/core/util/mock_endpoint.h - - test/core/util/parse_hexstring.h - - test/core/util/resolve_localhost_ip46.h - - test/core/util/slice_splitter.h - - test/core/util/tracer_util.h + - test/core/test_util/cmdline.h + - test/core/test_util/evaluate_args_test_util.h + - test/core/test_util/fuzzer_util.h + - test/core/test_util/grpc_profiler.h + - test/core/test_util/histogram.h + - test/core/test_util/mock_endpoint.h + - test/core/test_util/parse_hexstring.h + - test/core/test_util/resolve_localhost_ip46.h + - test/core/test_util/slice_splitter.h + - test/core/test_util/tracer_util.h src: - test/core/security/rbac_translator_test.cc - - test/core/util/cmdline.cc - - test/core/util/fuzzer_util.cc - - test/core/util/grpc_profiler.cc - - test/core/util/histogram.cc - - test/core/util/mock_endpoint.cc - - test/core/util/parse_hexstring.cc - - test/core/util/resolve_localhost_ip46.cc - - test/core/util/slice_splitter.cc - - test/core/util/tracer_util.cc + - test/core/test_util/cmdline.cc + - test/core/test_util/fuzzer_util.cc + - test/core/test_util/grpc_profiler.cc + - test/core/test_util/histogram.cc + - test/core/test_util/mock_endpoint.cc + - test/core/test_util/parse_hexstring.cc + - test/core/test_util/resolve_localhost_ip46.cc + - test/core/test_util/slice_splitter.cc + - test/core/test_util/tracer_util.cc deps: - gtest - grpc_authorization_provider @@ -14581,8 +15048,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -14602,11 +15069,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/registered_call.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -14619,7 +15085,6 @@ targets: - test/core/transport/chttp2/remove_stream_from_stalled_lists_test.cc deps: - gtest - - absl/log:check - grpc_test_util platforms: - linux @@ -14660,8 +15125,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -14681,11 +15146,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/request_with_flags.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -14724,8 +15188,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -14745,11 +15209,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/request_with_payload.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -14758,28 +15221,27 @@ targets: build: test language: c++ headers: - - test/core/util/cmdline.h - - test/core/util/evaluate_args_test_util.h - - test/core/util/fuzzer_util.h - - test/core/util/grpc_profiler.h - - test/core/util/histogram.h - - test/core/util/mock_authorization_endpoint.h - - test/core/util/mock_endpoint.h - - test/core/util/parse_hexstring.h - - test/core/util/resolve_localhost_ip46.h - - test/core/util/slice_splitter.h - - test/core/util/tracer_util.h + - test/core/test_util/cmdline.h + - test/core/test_util/evaluate_args_test_util.h + - test/core/test_util/fuzzer_util.h + - test/core/test_util/grpc_profiler.h + - test/core/test_util/histogram.h + - test/core/test_util/mock_endpoint.h + - test/core/test_util/parse_hexstring.h + - test/core/test_util/resolve_localhost_ip46.h + - test/core/test_util/slice_splitter.h + - test/core/test_util/tracer_util.h src: - test/core/iomgr/resolve_address_posix_test.cc - - test/core/util/cmdline.cc - - test/core/util/fuzzer_util.cc - - test/core/util/grpc_profiler.cc - - test/core/util/histogram.cc - - test/core/util/mock_endpoint.cc - - test/core/util/parse_hexstring.cc - - test/core/util/resolve_localhost_ip46.cc - - test/core/util/slice_splitter.cc - - test/core/util/tracer_util.cc + - test/core/test_util/cmdline.cc + - test/core/test_util/fuzzer_util.cc + - test/core/test_util/grpc_profiler.cc + - test/core/test_util/histogram.cc + - test/core/test_util/mock_endpoint.cc + - test/core/test_util/parse_hexstring.cc + - test/core/test_util/resolve_localhost_ip46.cc + - test/core/test_util/slice_splitter.cc + - test/core/test_util/tracer_util.cc deps: - gtest - grpc_test_util @@ -14794,30 +15256,29 @@ targets: build: test language: c++ headers: - - test/core/util/cmdline.h - - test/core/util/evaluate_args_test_util.h - - test/core/util/fake_udp_and_tcp_server.h - - test/core/util/fuzzer_util.h - - test/core/util/grpc_profiler.h - - test/core/util/histogram.h - - test/core/util/mock_authorization_endpoint.h - - test/core/util/mock_endpoint.h - - test/core/util/parse_hexstring.h - - test/core/util/resolve_localhost_ip46.h - - test/core/util/slice_splitter.h - - test/core/util/tracer_util.h + - test/core/test_util/cmdline.h + - test/core/test_util/evaluate_args_test_util.h + - test/core/test_util/fake_udp_and_tcp_server.h + - test/core/test_util/fuzzer_util.h + - test/core/test_util/grpc_profiler.h + - test/core/test_util/histogram.h + - test/core/test_util/mock_endpoint.h + - test/core/test_util/parse_hexstring.h + - test/core/test_util/resolve_localhost_ip46.h + - test/core/test_util/slice_splitter.h + - test/core/test_util/tracer_util.h src: - test/core/iomgr/resolve_address_test.cc - - test/core/util/cmdline.cc - - test/core/util/fake_udp_and_tcp_server.cc - - test/core/util/fuzzer_util.cc - - test/core/util/grpc_profiler.cc - - test/core/util/histogram.cc - - test/core/util/mock_endpoint.cc - - test/core/util/parse_hexstring.cc - - test/core/util/resolve_localhost_ip46.cc - - test/core/util/slice_splitter.cc - - test/core/util/tracer_util.cc + - test/core/test_util/cmdline.cc + - test/core/test_util/fake_udp_and_tcp_server.cc + - test/core/test_util/fuzzer_util.cc + - test/core/test_util/grpc_profiler.cc + - test/core/test_util/histogram.cc + - test/core/test_util/mock_endpoint.cc + - test/core/test_util/parse_hexstring.cc + - test/core/test_util/resolve_localhost_ip46.cc + - test/core/test_util/slice_splitter.cc + - test/core/test_util/tracer_util.cc deps: - gtest - grpc_test_util @@ -14827,28 +15288,27 @@ targets: build: test language: c++ headers: - - test/core/util/cmdline.h - - test/core/util/evaluate_args_test_util.h - - test/core/util/fuzzer_util.h - - test/core/util/grpc_profiler.h - - test/core/util/histogram.h - - test/core/util/mock_authorization_endpoint.h - - test/core/util/mock_endpoint.h - - test/core/util/parse_hexstring.h - - test/core/util/resolve_localhost_ip46.h - - test/core/util/slice_splitter.h - - test/core/util/tracer_util.h + - test/core/test_util/cmdline.h + - test/core/test_util/evaluate_args_test_util.h + - test/core/test_util/fuzzer_util.h + - test/core/test_util/grpc_profiler.h + - test/core/test_util/histogram.h + - test/core/test_util/mock_endpoint.h + - test/core/test_util/parse_hexstring.h + - test/core/test_util/resolve_localhost_ip46.h + - test/core/test_util/slice_splitter.h + - test/core/test_util/tracer_util.h src: - test/core/iomgr/resolve_address_posix_test.cc - - test/core/util/cmdline.cc - - test/core/util/fuzzer_util.cc - - test/core/util/grpc_profiler.cc - - test/core/util/histogram.cc - - test/core/util/mock_endpoint.cc - - test/core/util/parse_hexstring.cc - - test/core/util/resolve_localhost_ip46.cc - - test/core/util/slice_splitter.cc - - test/core/util/tracer_util.cc + - test/core/test_util/cmdline.cc + - test/core/test_util/fuzzer_util.cc + - test/core/test_util/grpc_profiler.cc + - test/core/test_util/histogram.cc + - test/core/test_util/mock_endpoint.cc + - test/core/test_util/parse_hexstring.cc + - test/core/test_util/resolve_localhost_ip46.cc + - test/core/test_util/slice_splitter.cc + - test/core/test_util/tracer_util.cc deps: - gtest - grpc_test_util @@ -14863,30 +15323,29 @@ targets: build: test language: c++ headers: - - test/core/util/cmdline.h - - test/core/util/evaluate_args_test_util.h - - test/core/util/fake_udp_and_tcp_server.h - - test/core/util/fuzzer_util.h - - test/core/util/grpc_profiler.h - - test/core/util/histogram.h - - test/core/util/mock_authorization_endpoint.h - - test/core/util/mock_endpoint.h - - test/core/util/parse_hexstring.h - - test/core/util/resolve_localhost_ip46.h - - test/core/util/slice_splitter.h - - test/core/util/tracer_util.h + - test/core/test_util/cmdline.h + - test/core/test_util/evaluate_args_test_util.h + - test/core/test_util/fake_udp_and_tcp_server.h + - test/core/test_util/fuzzer_util.h + - test/core/test_util/grpc_profiler.h + - test/core/test_util/histogram.h + - test/core/test_util/mock_endpoint.h + - test/core/test_util/parse_hexstring.h + - test/core/test_util/resolve_localhost_ip46.h + - test/core/test_util/slice_splitter.h + - test/core/test_util/tracer_util.h src: - test/core/iomgr/resolve_address_test.cc - - test/core/util/cmdline.cc - - test/core/util/fake_udp_and_tcp_server.cc - - test/core/util/fuzzer_util.cc - - test/core/util/grpc_profiler.cc - - test/core/util/histogram.cc - - test/core/util/mock_endpoint.cc - - test/core/util/parse_hexstring.cc - - test/core/util/resolve_localhost_ip46.cc - - test/core/util/slice_splitter.cc - - test/core/util/tracer_util.cc + - test/core/test_util/cmdline.cc + - test/core/test_util/fake_udp_and_tcp_server.cc + - test/core/test_util/fuzzer_util.cc + - test/core/test_util/grpc_profiler.cc + - test/core/test_util/histogram.cc + - test/core/test_util/mock_endpoint.cc + - test/core/test_util/parse_hexstring.cc + - test/core/test_util/resolve_localhost_ip46.cc + - test/core/test_util/slice_splitter.cc + - test/core/test_util/tracer_util.cc deps: - gtest - grpc_test_util @@ -14940,8 +15399,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -14961,11 +15420,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/resource_quota_server.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -15015,8 +15473,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -15036,11 +15494,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/retry_cancel_after_first_attempt_starts.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -15079,8 +15536,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -15100,11 +15557,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/retry_cancel_during_delay.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -15143,8 +15599,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -15164,11 +15620,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/retry_cancel_with_multiple_send_batches.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -15207,8 +15662,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -15228,11 +15683,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/retry_cancellation.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -15271,8 +15725,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -15292,11 +15746,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/retry_disabled.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -15335,8 +15788,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -15356,11 +15809,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/retry_exceeds_buffer_size_in_delay.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -15399,8 +15851,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -15420,11 +15872,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/retry_exceeds_buffer_size_in_initial_batch.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -15463,8 +15914,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -15484,11 +15935,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/retry_exceeds_buffer_size_in_subsequent_batch.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -15527,8 +15977,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -15548,11 +15998,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/retry_lb_drop.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -15591,8 +16040,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -15612,11 +16061,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/retry_lb_fail.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -15655,8 +16103,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -15676,11 +16124,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/retry_non_retriable_status_before_trailers.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -15719,8 +16166,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -15740,11 +16187,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/retry_non_retriable_status.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -15783,8 +16229,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -15804,11 +16250,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/retry_per_attempt_recv_timeout_on_last_attempt.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -15847,8 +16292,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -15868,11 +16313,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/retry_per_attempt_recv_timeout.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -15911,8 +16355,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -15932,11 +16376,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/retry_recv_initial_metadata.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -15975,8 +16418,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -15996,11 +16439,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/retry_recv_message_replay.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -16039,8 +16481,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -16060,11 +16502,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/retry_recv_message.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -16103,8 +16544,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -16124,11 +16565,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/retry_recv_trailing_metadata_error.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -16167,8 +16607,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -16188,11 +16628,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/retry_send_initial_metadata_refs.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -16231,8 +16670,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -16252,11 +16691,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/retry_send_op_fails.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -16295,8 +16733,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -16316,11 +16754,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/retry_send_recv_batch.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -16359,8 +16796,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -16380,11 +16817,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/retry_server_pushback_delay.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -16423,8 +16859,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -16444,11 +16880,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/retry_server_pushback_disabled.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -16498,8 +16933,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -16519,11 +16954,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/retry_streaming_after_commit.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -16562,8 +16996,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -16583,11 +17017,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/retry_streaming_succeeds_before_replay_finished.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -16626,8 +17059,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -16647,11 +17080,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/retry_streaming.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -16690,8 +17122,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -16711,11 +17143,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/retry.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -16765,8 +17196,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -16786,11 +17217,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/retry_throttled.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -16829,8 +17259,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -16850,11 +17280,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/retry_too_many_attempts.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -16893,8 +17322,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -16914,11 +17343,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/retry_transparent_goaway.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -16957,8 +17385,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -16978,11 +17406,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/retry_transparent_max_concurrent_streams.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -17021,8 +17448,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -17042,11 +17469,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/retry_transparent_not_sent_on_wire.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -17085,8 +17511,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -17106,11 +17532,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/retry_unref_before_finish.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -17149,8 +17574,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -17170,11 +17595,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/retry_unref_before_recv.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -17183,17 +17607,16 @@ targets: build: test language: c++ headers: - - test/core/client_channel/lb_policy/lb_policy_test_lib.h - test/core/event_engine/event_engine_test_utils.h - test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.h + - test/core/load_balancing/lb_policy_test_lib.h src: - test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.proto - - test/core/client_channel/lb_policy/ring_hash_test.cc - test/core/event_engine/event_engine_test_utils.cc - test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.cc + - test/core/load_balancing/ring_hash_test.cc deps: - gtest - - absl/log:check - protobuf - grpc_test_util uses_polling: false @@ -17203,8 +17626,9 @@ targets: run: false language: c++ headers: - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/event_engine/event_engine_test_utils.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h - test/cpp/end2end/counted_service.h - test/cpp/end2end/rls_server.h - test/cpp/end2end/test_service_impl.h @@ -17215,14 +17639,14 @@ targets: - src/proto/grpc/testing/echo_messages.proto - src/proto/grpc/testing/simple_messages.proto - src/proto/grpc/testing/xds/v3/orca_load_report.proto - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/event_engine/event_engine_test_utils.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc - test/cpp/end2end/rls_end2end_test.cc - test/cpp/end2end/rls_server.cc - test/cpp/end2end/test_service_impl.cc deps: - gtest - - absl/log:check - grpc++_test_config - grpc++_test_util - name: rls_lb_config_parser_test @@ -17231,7 +17655,7 @@ targets: language: c++ headers: [] src: - - test/core/client_channel/lb_policy/rls_lb_config_parser_test.cc + - test/core/load_balancing/rls_lb_config_parser_test.cc deps: - gtest - grpc_test_util @@ -17241,17 +17665,16 @@ targets: build: test language: c++ headers: - - test/core/client_channel/lb_policy/lb_policy_test_lib.h - test/core/event_engine/event_engine_test_utils.h - test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.h + - test/core/load_balancing/lb_policy_test_lib.h src: - test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.proto - - test/core/client_channel/lb_policy/round_robin_test.cc - test/core/event_engine/event_engine_test_utils.cc - test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.cc + - test/core/load_balancing/round_robin_test.cc deps: - gtest - - absl/log:check - protobuf - grpc_test_util uses_polling: false @@ -17282,29 +17705,28 @@ targets: language: c++ headers: - test/core/iomgr/endpoint_tests.h - - test/core/util/cmdline.h - - test/core/util/evaluate_args_test_util.h - - test/core/util/fuzzer_util.h - - test/core/util/grpc_profiler.h - - test/core/util/histogram.h - - test/core/util/mock_authorization_endpoint.h - - test/core/util/mock_endpoint.h - - test/core/util/parse_hexstring.h - - test/core/util/resolve_localhost_ip46.h - - test/core/util/slice_splitter.h - - test/core/util/tracer_util.h + - test/core/test_util/cmdline.h + - test/core/test_util/evaluate_args_test_util.h + - test/core/test_util/fuzzer_util.h + - test/core/test_util/grpc_profiler.h + - test/core/test_util/histogram.h + - test/core/test_util/mock_endpoint.h + - test/core/test_util/parse_hexstring.h + - test/core/test_util/resolve_localhost_ip46.h + - test/core/test_util/slice_splitter.h + - test/core/test_util/tracer_util.h src: - test/core/iomgr/endpoint_tests.cc - test/core/security/secure_endpoint_test.cc - - test/core/util/cmdline.cc - - test/core/util/fuzzer_util.cc - - test/core/util/grpc_profiler.cc - - test/core/util/histogram.cc - - test/core/util/mock_endpoint.cc - - test/core/util/parse_hexstring.cc - - test/core/util/resolve_localhost_ip46.cc - - test/core/util/slice_splitter.cc - - test/core/util/tracer_util.cc + - test/core/test_util/cmdline.cc + - test/core/test_util/fuzzer_util.cc + - test/core/test_util/grpc_profiler.cc + - test/core/test_util/histogram.cc + - test/core/test_util/mock_endpoint.cc + - test/core/test_util/parse_hexstring.cc + - test/core/test_util/resolve_localhost_ip46.cc + - test/core/test_util/slice_splitter.cc + - test/core/test_util/tracer_util.cc deps: - gtest - grpc_test_util @@ -17313,28 +17735,27 @@ targets: build: test language: c++ headers: - - test/core/util/cmdline.h - - test/core/util/evaluate_args_test_util.h - - test/core/util/fuzzer_util.h - - test/core/util/grpc_profiler.h - - test/core/util/histogram.h - - test/core/util/mock_authorization_endpoint.h - - test/core/util/mock_endpoint.h - - test/core/util/parse_hexstring.h - - test/core/util/resolve_localhost_ip46.h - - test/core/util/slice_splitter.h - - test/core/util/tracer_util.h + - test/core/test_util/cmdline.h + - test/core/test_util/evaluate_args_test_util.h + - test/core/test_util/fuzzer_util.h + - test/core/test_util/grpc_profiler.h + - test/core/test_util/histogram.h + - test/core/test_util/mock_endpoint.h + - test/core/test_util/parse_hexstring.h + - test/core/test_util/resolve_localhost_ip46.h + - test/core/test_util/slice_splitter.h + - test/core/test_util/tracer_util.h src: - test/core/security/security_connector_test.cc - - test/core/util/cmdline.cc - - test/core/util/fuzzer_util.cc - - test/core/util/grpc_profiler.cc - - test/core/util/histogram.cc - - test/core/util/mock_endpoint.cc - - test/core/util/parse_hexstring.cc - - test/core/util/resolve_localhost_ip46.cc - - test/core/util/slice_splitter.cc - - test/core/util/tracer_util.cc + - test/core/test_util/cmdline.cc + - test/core/test_util/fuzzer_util.cc + - test/core/test_util/grpc_profiler.cc + - test/core/test_util/histogram.cc + - test/core/test_util/mock_endpoint.cc + - test/core/test_util/parse_hexstring.cc + - test/core/test_util/resolve_localhost_ip46.cc + - test/core/test_util/slice_splitter.cc + - test/core/test_util/tracer_util.cc deps: - gtest - grpc_test_util @@ -17387,38 +17808,38 @@ targets: - test/cpp/end2end/test_service_impl.cc deps: - gtest - - absl/log:check - grpc++_test_util - name: server_builder_test gtest: true build: test language: c++ headers: - - test/core/util/cmdline.h - - test/core/util/evaluate_args_test_util.h - - test/core/util/fuzzer_util.h - - test/core/util/grpc_profiler.h - - test/core/util/histogram.h - - test/core/util/mock_authorization_endpoint.h - - test/core/util/mock_endpoint.h - - test/core/util/parse_hexstring.h - - test/core/util/resolve_localhost_ip46.h - - test/core/util/slice_splitter.h - - test/core/util/tracer_util.h + - test/core/event_engine/event_engine_test_utils.h + - test/core/test_util/cmdline.h + - test/core/test_util/evaluate_args_test_util.h + - test/core/test_util/fuzzer_util.h + - test/core/test_util/grpc_profiler.h + - test/core/test_util/histogram.h + - test/core/test_util/mock_endpoint.h + - test/core/test_util/parse_hexstring.h + - test/core/test_util/resolve_localhost_ip46.h + - test/core/test_util/slice_splitter.h + - test/core/test_util/tracer_util.h src: - src/proto/grpc/testing/echo.proto - src/proto/grpc/testing/echo_messages.proto - src/proto/grpc/testing/simple_messages.proto - src/proto/grpc/testing/xds/v3/orca_load_report.proto - - test/core/util/cmdline.cc - - test/core/util/fuzzer_util.cc - - test/core/util/grpc_profiler.cc - - test/core/util/histogram.cc - - test/core/util/mock_endpoint.cc - - test/core/util/parse_hexstring.cc - - test/core/util/resolve_localhost_ip46.cc - - test/core/util/slice_splitter.cc - - test/core/util/tracer_util.cc + - test/core/event_engine/event_engine_test_utils.cc + - test/core/test_util/cmdline.cc + - test/core/test_util/fuzzer_util.cc + - test/core/test_util/grpc_profiler.cc + - test/core/test_util/histogram.cc + - test/core/test_util/mock_endpoint.cc + - test/core/test_util/parse_hexstring.cc + - test/core/test_util/resolve_localhost_ip46.cc + - test/core/test_util/slice_splitter.cc + - test/core/test_util/tracer_util.cc - test/cpp/server/server_builder_test.cc deps: - gtest @@ -17433,31 +17854,30 @@ targets: build: test language: c++ headers: - - test/core/util/cmdline.h - - test/core/util/evaluate_args_test_util.h - - test/core/util/fuzzer_util.h - - test/core/util/grpc_profiler.h - - test/core/util/histogram.h - - test/core/util/mock_authorization_endpoint.h - - test/core/util/mock_endpoint.h - - test/core/util/parse_hexstring.h - - test/core/util/resolve_localhost_ip46.h - - test/core/util/slice_splitter.h - - test/core/util/tracer_util.h + - test/core/test_util/cmdline.h + - test/core/test_util/evaluate_args_test_util.h + - test/core/test_util/fuzzer_util.h + - test/core/test_util/grpc_profiler.h + - test/core/test_util/histogram.h + - test/core/test_util/mock_endpoint.h + - test/core/test_util/parse_hexstring.h + - test/core/test_util/resolve_localhost_ip46.h + - test/core/test_util/slice_splitter.h + - test/core/test_util/tracer_util.h src: - src/proto/grpc/testing/echo.proto - src/proto/grpc/testing/echo_messages.proto - src/proto/grpc/testing/simple_messages.proto - src/proto/grpc/testing/xds/v3/orca_load_report.proto - - test/core/util/cmdline.cc - - test/core/util/fuzzer_util.cc - - test/core/util/grpc_profiler.cc - - test/core/util/histogram.cc - - test/core/util/mock_endpoint.cc - - test/core/util/parse_hexstring.cc - - test/core/util/resolve_localhost_ip46.cc - - test/core/util/slice_splitter.cc - - test/core/util/tracer_util.cc + - test/core/test_util/cmdline.cc + - test/core/test_util/fuzzer_util.cc + - test/core/test_util/grpc_profiler.cc + - test/core/test_util/histogram.cc + - test/core/test_util/mock_endpoint.cc + - test/core/test_util/parse_hexstring.cc + - test/core/test_util/resolve_localhost_ip46.cc + - test/core/test_util/slice_splitter.cc + - test/core/test_util/tracer_util.cc - test/cpp/server/server_builder_with_socket_mutator_test.cc deps: - gtest @@ -17494,7 +17914,7 @@ targets: language: c++ headers: [] src: - - test/core/server_config_selector/server_config_selector_test.cc + - test/core/server/server_config_selector_test.cc deps: - gtest - grpc_test_util @@ -17558,8 +17978,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -17579,11 +17999,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/server_finishes_request.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -17604,7 +18023,6 @@ targets: - test/cpp/end2end/test_service_impl.cc deps: - gtest - - absl/log:check - grpc++_test_util - name: server_registered_method_bad_client_test gtest: true @@ -17619,38 +18037,36 @@ targets: - test/core/end2end/cq_verifier.cc deps: - gtest - - absl/log:check - grpc_test_util - name: server_request_call_test gtest: true build: test language: c++ headers: - - test/core/util/cmdline.h - - test/core/util/evaluate_args_test_util.h - - test/core/util/fuzzer_util.h - - test/core/util/grpc_profiler.h - - test/core/util/histogram.h - - test/core/util/mock_authorization_endpoint.h - - test/core/util/mock_endpoint.h - - test/core/util/parse_hexstring.h - - test/core/util/resolve_localhost_ip46.h - - test/core/util/slice_splitter.h - - test/core/util/tracer_util.h + - test/core/test_util/cmdline.h + - test/core/test_util/evaluate_args_test_util.h + - test/core/test_util/fuzzer_util.h + - test/core/test_util/grpc_profiler.h + - test/core/test_util/histogram.h + - test/core/test_util/mock_endpoint.h + - test/core/test_util/parse_hexstring.h + - test/core/test_util/resolve_localhost_ip46.h + - test/core/test_util/slice_splitter.h + - test/core/test_util/tracer_util.h src: - src/proto/grpc/testing/echo.proto - src/proto/grpc/testing/echo_messages.proto - src/proto/grpc/testing/simple_messages.proto - src/proto/grpc/testing/xds/v3/orca_load_report.proto - - test/core/util/cmdline.cc - - test/core/util/fuzzer_util.cc - - test/core/util/grpc_profiler.cc - - test/core/util/histogram.cc - - test/core/util/mock_endpoint.cc - - test/core/util/parse_hexstring.cc - - test/core/util/resolve_localhost_ip46.cc - - test/core/util/slice_splitter.cc - - test/core/util/tracer_util.cc + - test/core/test_util/cmdline.cc + - test/core/test_util/fuzzer_util.cc + - test/core/test_util/grpc_profiler.cc + - test/core/test_util/histogram.cc + - test/core/test_util/mock_endpoint.cc + - test/core/test_util/parse_hexstring.cc + - test/core/test_util/resolve_localhost_ip46.cc + - test/core/test_util/slice_splitter.cc + - test/core/test_util/tracer_util.cc - test/cpp/server/server_request_call_test.cc deps: - gtest @@ -17711,8 +18127,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -17732,11 +18148,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/server_streaming.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -17766,7 +18181,6 @@ targets: - test/cpp/end2end/test_service_impl.cc deps: - gtest - - absl/log:check - grpc++_test_util - name: service_config_test gtest: true @@ -17783,31 +18197,29 @@ targets: build: test language: c++ headers: - - test/core/util/cmdline.h - - test/core/util/evaluate_args_test_util.h - - test/core/util/fuzzer_util.h - - test/core/util/grpc_profiler.h - - test/core/util/histogram.h - - test/core/util/mock_authorization_endpoint.h - - test/core/util/mock_endpoint.h - - test/core/util/parse_hexstring.h - - test/core/util/resolve_localhost_ip46.h - - test/core/util/slice_splitter.h - - test/core/util/tracer_util.h - src: + - test/core/test_util/cmdline.h + - test/core/test_util/evaluate_args_test_util.h + - test/core/test_util/fuzzer_util.h + - test/core/test_util/grpc_profiler.h + - test/core/test_util/histogram.h + - test/core/test_util/mock_endpoint.h + - test/core/test_util/parse_hexstring.h + - test/core/test_util/resolve_localhost_ip46.h + - test/core/test_util/slice_splitter.h + - test/core/test_util/tracer_util.h + src: + - test/core/test_util/cmdline.cc + - test/core/test_util/fuzzer_util.cc + - test/core/test_util/grpc_profiler.cc + - test/core/test_util/histogram.cc + - test/core/test_util/mock_endpoint.cc + - test/core/test_util/parse_hexstring.cc + - test/core/test_util/resolve_localhost_ip46.cc + - test/core/test_util/slice_splitter.cc + - test/core/test_util/tracer_util.cc - test/core/transport/chttp2/settings_timeout_test.cc - - test/core/util/cmdline.cc - - test/core/util/fuzzer_util.cc - - test/core/util/grpc_profiler.cc - - test/core/util/histogram.cc - - test/core/util/mock_endpoint.cc - - test/core/util/parse_hexstring.cc - - test/core/util/resolve_localhost_ip46.cc - - test/core/util/slice_splitter.cc - - test/core/util/tracer_util.cc deps: - gtest - - absl/log:check - grpc_test_util - name: shutdown_finishes_calls_test gtest: true @@ -17844,8 +18256,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -17865,11 +18277,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/shutdown_finishes_calls.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -17908,8 +18319,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -17929,11 +18340,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/shutdown_finishes_tags.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -17951,7 +18361,6 @@ targets: - test/cpp/end2end/shutdown_test.cc deps: - gtest - - absl/log:check - grpc++_test_util - name: simple_delayed_request_test gtest: true @@ -17988,8 +18397,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -18009,11 +18418,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/simple_delayed_request.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -18052,8 +18460,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -18073,11 +18481,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/simple_metadata.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -18094,7 +18501,6 @@ targets: - test/core/end2end/cq_verifier.cc deps: - gtest - - absl/log:check - grpc_test_util - name: simple_request_test gtest: true @@ -18131,8 +18537,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -18152,11 +18558,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/simple_request.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -18223,7 +18628,7 @@ targets: language: c++ headers: [] src: - - test/core/client_channel/resolvers/sockaddr_resolver_test.cc + - test/core/resolver/sockaddr_resolver_test.cc deps: - gtest - grpc_test_util @@ -18242,28 +18647,27 @@ targets: build: test language: c++ headers: - - test/core/util/cmdline.h - - test/core/util/evaluate_args_test_util.h - - test/core/util/fuzzer_util.h - - test/core/util/grpc_profiler.h - - test/core/util/histogram.h - - test/core/util/mock_authorization_endpoint.h - - test/core/util/mock_endpoint.h - - test/core/util/parse_hexstring.h - - test/core/util/resolve_localhost_ip46.h - - test/core/util/slice_splitter.h - - test/core/util/tracer_util.h + - test/core/test_util/cmdline.h + - test/core/test_util/evaluate_args_test_util.h + - test/core/test_util/fuzzer_util.h + - test/core/test_util/grpc_profiler.h + - test/core/test_util/histogram.h + - test/core/test_util/mock_endpoint.h + - test/core/test_util/parse_hexstring.h + - test/core/test_util/resolve_localhost_ip46.h + - test/core/test_util/slice_splitter.h + - test/core/test_util/tracer_util.h src: - test/core/iomgr/socket_utils_test.cc - - test/core/util/cmdline.cc - - test/core/util/fuzzer_util.cc - - test/core/util/grpc_profiler.cc - - test/core/util/histogram.cc - - test/core/util/mock_endpoint.cc - - test/core/util/parse_hexstring.cc - - test/core/util/resolve_localhost_ip46.cc - - test/core/util/slice_splitter.cc - - test/core/util/tracer_util.cc + - test/core/test_util/cmdline.cc + - test/core/test_util/fuzzer_util.cc + - test/core/test_util/grpc_profiler.cc + - test/core/test_util/histogram.cc + - test/core/test_util/mock_endpoint.cc + - test/core/test_util/parse_hexstring.cc + - test/core/test_util/resolve_localhost_ip46.cc + - test/core/test_util/slice_splitter.cc + - test/core/test_util/tracer_util.cc deps: - gtest - grpc_test_util @@ -18289,7 +18693,7 @@ targets: language: c++ headers: [] src: - - test/core/gpr/spinlock_test.cc + - test/core/util/spinlock_test.cc deps: - gtest - grpc_test_util @@ -18305,7 +18709,6 @@ targets: - test/core/tsi/transport_security_test_lib.cc deps: - gtest - - absl/log:check - grpc_test_util platforms: - linux @@ -18322,7 +18725,6 @@ targets: - test/core/tsi/transport_security_test_lib.cc deps: - gtest - - absl/log:check - grpc_test_util platforms: - linux @@ -18334,7 +18736,7 @@ targets: language: c++ headers: [] src: - - test/core/util/stack_tracer_test.cc + - test/core/test_util/stack_tracer_test.cc deps: - gtest - grpc_test_util @@ -18362,7 +18764,7 @@ targets: - src/core/load_balancing/weighted_round_robin/static_stride_scheduler.h src: - src/core/load_balancing/weighted_round_robin/static_stride_scheduler.cc - - test/core/client_channel/lb_policy/static_stride_scheduler_test.cc + - test/core/load_balancing/static_stride_scheduler_test.cc deps: - gtest - absl/types:span @@ -18384,28 +18786,27 @@ targets: build: test language: c++ headers: - - test/core/util/cmdline.h - - test/core/util/evaluate_args_test_util.h - - test/core/util/fuzzer_util.h - - test/core/util/grpc_profiler.h - - test/core/util/histogram.h - - test/core/util/mock_authorization_endpoint.h - - test/core/util/mock_endpoint.h - - test/core/util/parse_hexstring.h - - test/core/util/resolve_localhost_ip46.h - - test/core/util/slice_splitter.h - - test/core/util/tracer_util.h - src: + - test/core/test_util/cmdline.h + - test/core/test_util/evaluate_args_test_util.h + - test/core/test_util/fuzzer_util.h + - test/core/test_util/grpc_profiler.h + - test/core/test_util/histogram.h + - test/core/test_util/mock_endpoint.h + - test/core/test_util/parse_hexstring.h + - test/core/test_util/resolve_localhost_ip46.h + - test/core/test_util/slice_splitter.h + - test/core/test_util/tracer_util.h + src: + - test/core/test_util/cmdline.cc + - test/core/test_util/fuzzer_util.cc + - test/core/test_util/grpc_profiler.cc + - test/core/test_util/histogram.cc + - test/core/test_util/mock_endpoint.cc + - test/core/test_util/parse_hexstring.cc + - test/core/test_util/resolve_localhost_ip46.cc + - test/core/test_util/slice_splitter.cc + - test/core/test_util/tracer_util.cc - test/core/transport/status_conversion_test.cc - - test/core/util/cmdline.cc - - test/core/util/fuzzer_util.cc - - test/core/util/grpc_profiler.cc - - test/core/util/histogram.cc - - test/core/util/mock_endpoint.cc - - test/core/util/parse_hexstring.cc - - test/core/util/resolve_localhost_ip46.cc - - test/core/util/slice_splitter.cc - - test/core/util/tracer_util.cc deps: - gtest - grpc_test_util @@ -18455,7 +18856,6 @@ targets: - test/core/transport/chttp2/stream_leak_with_queued_flow_control_update_test.cc deps: - gtest - - absl/log:check - grpc_test_util - name: streaming_error_response_test gtest: true @@ -18492,8 +18892,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -18513,11 +18913,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/streaming_error_response.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -18546,32 +18945,30 @@ targets: language: c++ headers: - test/core/end2end/cq_verifier.h - - test/core/util/cmdline.h - - test/core/util/evaluate_args_test_util.h - - test/core/util/fuzzer_util.h - - test/core/util/grpc_profiler.h - - test/core/util/histogram.h - - test/core/util/mock_authorization_endpoint.h - - test/core/util/mock_endpoint.h - - test/core/util/parse_hexstring.h - - test/core/util/resolve_localhost_ip46.h - - test/core/util/slice_splitter.h - - test/core/util/tracer_util.h + - test/core/test_util/cmdline.h + - test/core/test_util/evaluate_args_test_util.h + - test/core/test_util/fuzzer_util.h + - test/core/test_util/grpc_profiler.h + - test/core/test_util/histogram.h + - test/core/test_util/mock_endpoint.h + - test/core/test_util/parse_hexstring.h + - test/core/test_util/resolve_localhost_ip46.h + - test/core/test_util/slice_splitter.h + - test/core/test_util/tracer_util.h src: - test/core/end2end/cq_verifier.cc + - test/core/test_util/cmdline.cc + - test/core/test_util/fuzzer_util.cc + - test/core/test_util/grpc_profiler.cc + - test/core/test_util/histogram.cc + - test/core/test_util/mock_endpoint.cc + - test/core/test_util/parse_hexstring.cc + - test/core/test_util/resolve_localhost_ip46.cc + - test/core/test_util/slice_splitter.cc + - test/core/test_util/tracer_util.cc - test/core/transport/chttp2/streams_not_seen_test.cc - - test/core/util/cmdline.cc - - test/core/util/fuzzer_util.cc - - test/core/util/grpc_profiler.cc - - test/core/util/histogram.cc - - test/core/util/mock_endpoint.cc - - test/core/util/parse_hexstring.cc - - test/core/util/resolve_localhost_ip46.cc - - test/core/util/slice_splitter.cc - - test/core/util/tracer_util.cc deps: - gtest - - absl/log:check - grpc_test_util - name: string_ref_test gtest: true @@ -18591,7 +18988,7 @@ targets: language: c++ headers: [] src: - - test/core/gpr/string_test.cc + - test/core/util/string_test.cc deps: - gtest - grpc_test_util @@ -18620,7 +19017,7 @@ targets: language: c++ headers: [] src: - - test/core/gpr/sync_test.cc + - test/core/util/sync_test.cc deps: - gtest - grpc_test_util @@ -18630,28 +19027,27 @@ targets: build: test language: c++ headers: - - test/core/util/cmdline.h - - test/core/util/evaluate_args_test_util.h - - test/core/util/fuzzer_util.h - - test/core/util/grpc_profiler.h - - test/core/util/histogram.h - - test/core/util/mock_authorization_endpoint.h - - test/core/util/mock_endpoint.h - - test/core/util/parse_hexstring.h - - test/core/util/resolve_localhost_ip46.h - - test/core/util/slice_splitter.h - - test/core/util/tracer_util.h + - test/core/test_util/cmdline.h + - test/core/test_util/evaluate_args_test_util.h + - test/core/test_util/fuzzer_util.h + - test/core/test_util/grpc_profiler.h + - test/core/test_util/histogram.h + - test/core/test_util/mock_endpoint.h + - test/core/test_util/parse_hexstring.h + - test/core/test_util/resolve_localhost_ip46.h + - test/core/test_util/slice_splitter.h + - test/core/test_util/tracer_util.h src: - test/core/security/system_roots_test.cc - - test/core/util/cmdline.cc - - test/core/util/fuzzer_util.cc - - test/core/util/grpc_profiler.cc - - test/core/util/histogram.cc - - test/core/util/mock_endpoint.cc - - test/core/util/parse_hexstring.cc - - test/core/util/resolve_localhost_ip46.cc - - test/core/util/slice_splitter.cc - - test/core/util/tracer_util.cc + - test/core/test_util/cmdline.cc + - test/core/test_util/fuzzer_util.cc + - test/core/test_util/grpc_profiler.cc + - test/core/test_util/histogram.cc + - test/core/test_util/mock_endpoint.cc + - test/core/test_util/parse_hexstring.cc + - test/core/test_util/resolve_localhost_ip46.cc + - test/core/test_util/slice_splitter.cc + - test/core/test_util/tracer_util.cc deps: - gtest - grpc_test_util @@ -18660,9 +19056,9 @@ targets: build: test language: c++ headers: - - src/core/lib/gpr/useful.h - src/core/lib/gprpp/bitset.h - src/core/lib/gprpp/table.h + - src/core/util/useful.h src: - test/core/gprpp/table_test.cc deps: @@ -18675,28 +19071,27 @@ targets: build: test language: c++ headers: - - test/core/util/cmdline.h - - test/core/util/evaluate_args_test_util.h - - test/core/util/fuzzer_util.h - - test/core/util/grpc_profiler.h - - test/core/util/histogram.h - - test/core/util/mock_authorization_endpoint.h - - test/core/util/mock_endpoint.h - - test/core/util/parse_hexstring.h - - test/core/util/resolve_localhost_ip46.h - - test/core/util/slice_splitter.h - - test/core/util/tracer_util.h + - test/core/test_util/cmdline.h + - test/core/test_util/evaluate_args_test_util.h + - test/core/test_util/fuzzer_util.h + - test/core/test_util/grpc_profiler.h + - test/core/test_util/histogram.h + - test/core/test_util/mock_endpoint.h + - test/core/test_util/parse_hexstring.h + - test/core/test_util/resolve_localhost_ip46.h + - test/core/test_util/slice_splitter.h + - test/core/test_util/tracer_util.h src: - test/core/iomgr/tcp_client_posix_test.cc - - test/core/util/cmdline.cc - - test/core/util/fuzzer_util.cc - - test/core/util/grpc_profiler.cc - - test/core/util/histogram.cc - - test/core/util/mock_endpoint.cc - - test/core/util/parse_hexstring.cc - - test/core/util/resolve_localhost_ip46.cc - - test/core/util/slice_splitter.cc - - test/core/util/tracer_util.cc + - test/core/test_util/cmdline.cc + - test/core/test_util/fuzzer_util.cc + - test/core/test_util/grpc_profiler.cc + - test/core/test_util/histogram.cc + - test/core/test_util/mock_endpoint.cc + - test/core/test_util/parse_hexstring.cc + - test/core/test_util/resolve_localhost_ip46.cc + - test/core/test_util/slice_splitter.cc + - test/core/test_util/tracer_util.cc deps: - gtest - grpc_test_util @@ -18725,29 +19120,28 @@ targets: language: c++ headers: - test/core/iomgr/endpoint_tests.h - - test/core/util/cmdline.h - - test/core/util/evaluate_args_test_util.h - - test/core/util/fuzzer_util.h - - test/core/util/grpc_profiler.h - - test/core/util/histogram.h - - test/core/util/mock_authorization_endpoint.h - - test/core/util/mock_endpoint.h - - test/core/util/parse_hexstring.h - - test/core/util/resolve_localhost_ip46.h - - test/core/util/slice_splitter.h - - test/core/util/tracer_util.h + - test/core/test_util/cmdline.h + - test/core/test_util/evaluate_args_test_util.h + - test/core/test_util/fuzzer_util.h + - test/core/test_util/grpc_profiler.h + - test/core/test_util/histogram.h + - test/core/test_util/mock_endpoint.h + - test/core/test_util/parse_hexstring.h + - test/core/test_util/resolve_localhost_ip46.h + - test/core/test_util/slice_splitter.h + - test/core/test_util/tracer_util.h src: - test/core/iomgr/endpoint_tests.cc - test/core/iomgr/tcp_posix_test.cc - - test/core/util/cmdline.cc - - test/core/util/fuzzer_util.cc - - test/core/util/grpc_profiler.cc - - test/core/util/histogram.cc - - test/core/util/mock_endpoint.cc - - test/core/util/parse_hexstring.cc - - test/core/util/resolve_localhost_ip46.cc - - test/core/util/slice_splitter.cc - - test/core/util/tracer_util.cc + - test/core/test_util/cmdline.cc + - test/core/test_util/fuzzer_util.cc + - test/core/test_util/grpc_profiler.cc + - test/core/test_util/histogram.cc + - test/core/test_util/mock_endpoint.cc + - test/core/test_util/parse_hexstring.cc + - test/core/test_util/resolve_localhost_ip46.cc + - test/core/test_util/slice_splitter.cc + - test/core/test_util/tracer_util.cc deps: - gtest - grpc_test_util @@ -18759,28 +19153,27 @@ targets: build: test language: c++ headers: - - test/core/util/cmdline.h - - test/core/util/evaluate_args_test_util.h - - test/core/util/fuzzer_util.h - - test/core/util/grpc_profiler.h - - test/core/util/histogram.h - - test/core/util/mock_authorization_endpoint.h - - test/core/util/mock_endpoint.h - - test/core/util/parse_hexstring.h - - test/core/util/resolve_localhost_ip46.h - - test/core/util/slice_splitter.h - - test/core/util/tracer_util.h + - test/core/test_util/cmdline.h + - test/core/test_util/evaluate_args_test_util.h + - test/core/test_util/fuzzer_util.h + - test/core/test_util/grpc_profiler.h + - test/core/test_util/histogram.h + - test/core/test_util/mock_endpoint.h + - test/core/test_util/parse_hexstring.h + - test/core/test_util/resolve_localhost_ip46.h + - test/core/test_util/slice_splitter.h + - test/core/test_util/tracer_util.h src: - test/core/iomgr/tcp_server_posix_test.cc - - test/core/util/cmdline.cc - - test/core/util/fuzzer_util.cc - - test/core/util/grpc_profiler.cc - - test/core/util/histogram.cc - - test/core/util/mock_endpoint.cc - - test/core/util/parse_hexstring.cc - - test/core/util/resolve_localhost_ip46.cc - - test/core/util/slice_splitter.cc - - test/core/util/tracer_util.cc + - test/core/test_util/cmdline.cc + - test/core/test_util/fuzzer_util.cc + - test/core/test_util/grpc_profiler.cc + - test/core/test_util/histogram.cc + - test/core/test_util/mock_endpoint.cc + - test/core/test_util/parse_hexstring.cc + - test/core/test_util/resolve_localhost_ip46.cc + - test/core/test_util/slice_splitter.cc + - test/core/test_util/tracer_util.cc deps: - gtest - grpc_test_util @@ -18797,10 +19190,9 @@ targets: - test/core/event_engine/tcp_socket_utils_test.cc deps: - gtest - - absl/log:check - grpc uses_polling: false -- name: test_core_channel_channelz_test +- name: test_core_channelz_channelz_test gtest: true build: test language: c++ @@ -18809,12 +19201,11 @@ targets: - test/cpp/util/channel_trace_proto_helper.h src: - src/proto/grpc/channelz/channelz.proto - - test/core/channel/channelz_test.cc + - test/core/channelz/channelz_test.cc - test/core/event_engine/event_engine_test_utils.cc - test/cpp/util/channel_trace_proto_helper.cc deps: - gtest - - absl/log:check - grpc++ - grpc_test_util - name: test_core_end2end_channelz_test @@ -18852,8 +19243,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -18873,11 +19264,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/channelz.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -18899,7 +19289,6 @@ targets: - test/core/event_engine/posix/timer_heap_test.cc deps: - gtest - - absl/log:check - absl/status:statusor - gpr uses_polling: false @@ -18953,21 +19342,9 @@ targets: deps: - gtest - absl/hash:hash - - absl/log:check - absl/status:statusor - absl/utility:utility - gpr -- name: test_core_gpr_time_test - gtest: true - build: test - language: c++ - headers: [] - src: - - test/core/gpr/time_test.cc - deps: - - gtest - - grpc_test_util - uses_polling: false - name: test_core_gprpp_time_test gtest: true build: test @@ -18987,28 +19364,27 @@ targets: build: test language: c++ headers: - - test/core/util/cmdline.h - - test/core/util/evaluate_args_test_util.h - - test/core/util/fuzzer_util.h - - test/core/util/grpc_profiler.h - - test/core/util/histogram.h - - test/core/util/mock_authorization_endpoint.h - - test/core/util/mock_endpoint.h - - test/core/util/parse_hexstring.h - - test/core/util/resolve_localhost_ip46.h - - test/core/util/slice_splitter.h - - test/core/util/tracer_util.h + - test/core/test_util/cmdline.h + - test/core/test_util/evaluate_args_test_util.h + - test/core/test_util/fuzzer_util.h + - test/core/test_util/grpc_profiler.h + - test/core/test_util/histogram.h + - test/core/test_util/mock_endpoint.h + - test/core/test_util/parse_hexstring.h + - test/core/test_util/resolve_localhost_ip46.h + - test/core/test_util/slice_splitter.h + - test/core/test_util/tracer_util.h src: - test/core/iomgr/timer_heap_test.cc - - test/core/util/cmdline.cc - - test/core/util/fuzzer_util.cc - - test/core/util/grpc_profiler.cc - - test/core/util/histogram.cc - - test/core/util/mock_endpoint.cc - - test/core/util/parse_hexstring.cc - - test/core/util/resolve_localhost_ip46.cc - - test/core/util/slice_splitter.cc - - test/core/util/tracer_util.cc + - test/core/test_util/cmdline.cc + - test/core/test_util/fuzzer_util.cc + - test/core/test_util/grpc_profiler.cc + - test/core/test_util/histogram.cc + - test/core/test_util/mock_endpoint.cc + - test/core/test_util/parse_hexstring.cc + - test/core/test_util/resolve_localhost_ip46.cc + - test/core/test_util/slice_splitter.cc + - test/core/test_util/tracer_util.cc deps: - gtest - grpc_test_util @@ -19018,59 +19394,56 @@ targets: build: test language: c++ headers: - - test/core/util/cmdline.h - - test/core/util/evaluate_args_test_util.h - - test/core/util/fuzzer_util.h - - test/core/util/grpc_profiler.h - - test/core/util/histogram.h - - test/core/util/mock_authorization_endpoint.h - - test/core/util/mock_endpoint.h - - test/core/util/parse_hexstring.h - - test/core/util/resolve_localhost_ip46.h - - test/core/util/slice_splitter.h - - test/core/util/tracer_util.h + - test/core/test_util/cmdline.h + - test/core/test_util/evaluate_args_test_util.h + - test/core/test_util/fuzzer_util.h + - test/core/test_util/grpc_profiler.h + - test/core/test_util/histogram.h + - test/core/test_util/mock_endpoint.h + - test/core/test_util/parse_hexstring.h + - test/core/test_util/resolve_localhost_ip46.h + - test/core/test_util/slice_splitter.h + - test/core/test_util/tracer_util.h src: - test/core/security/credentials_test.cc - - test/core/util/cmdline.cc - - test/core/util/fuzzer_util.cc - - test/core/util/grpc_profiler.cc - - test/core/util/histogram.cc - - test/core/util/mock_endpoint.cc - - test/core/util/parse_hexstring.cc - - test/core/util/resolve_localhost_ip46.cc - - test/core/util/slice_splitter.cc - - test/core/util/tracer_util.cc + - test/core/test_util/cmdline.cc + - test/core/test_util/fuzzer_util.cc + - test/core/test_util/grpc_profiler.cc + - test/core/test_util/histogram.cc + - test/core/test_util/mock_endpoint.cc + - test/core/test_util/parse_hexstring.cc + - test/core/test_util/resolve_localhost_ip46.cc + - test/core/test_util/slice_splitter.cc + - test/core/test_util/tracer_util.cc deps: - gtest - - absl/log:check - grpc_test_util - name: test_core_security_ssl_credentials_test gtest: true build: test language: c++ headers: - - test/core/util/cmdline.h - - test/core/util/evaluate_args_test_util.h - - test/core/util/fuzzer_util.h - - test/core/util/grpc_profiler.h - - test/core/util/histogram.h - - test/core/util/mock_authorization_endpoint.h - - test/core/util/mock_endpoint.h - - test/core/util/parse_hexstring.h - - test/core/util/resolve_localhost_ip46.h - - test/core/util/slice_splitter.h - - test/core/util/tracer_util.h + - test/core/test_util/cmdline.h + - test/core/test_util/evaluate_args_test_util.h + - test/core/test_util/fuzzer_util.h + - test/core/test_util/grpc_profiler.h + - test/core/test_util/histogram.h + - test/core/test_util/mock_endpoint.h + - test/core/test_util/parse_hexstring.h + - test/core/test_util/resolve_localhost_ip46.h + - test/core/test_util/slice_splitter.h + - test/core/test_util/tracer_util.h src: - test/core/security/ssl_credentials_test.cc - - test/core/util/cmdline.cc - - test/core/util/fuzzer_util.cc - - test/core/util/grpc_profiler.cc - - test/core/util/histogram.cc - - test/core/util/mock_endpoint.cc - - test/core/util/parse_hexstring.cc - - test/core/util/resolve_localhost_ip46.cc - - test/core/util/slice_splitter.cc - - test/core/util/tracer_util.cc + - test/core/test_util/cmdline.cc + - test/core/test_util/fuzzer_util.cc + - test/core/test_util/grpc_profiler.cc + - test/core/test_util/histogram.cc + - test/core/test_util/mock_endpoint.cc + - test/core/test_util/parse_hexstring.cc + - test/core/test_util/resolve_localhost_ip46.cc + - test/core/test_util/slice_splitter.cc + - test/core/test_util/tracer_util.cc deps: - gtest - grpc_test_util @@ -19090,10 +19463,10 @@ targets: build: test language: c++ headers: - - test/core/util/build.h + - test/core/test_util/build.h src: - test/core/slice/slice_test.cc - - test/core/util/build.cc + - test/core/test_util/build.cc deps: - gtest - grpc @@ -19137,13 +19510,23 @@ targets: - test/core/transport/test_suite/test_main.cc deps: - gtest - - absl/log:check - protobuf - grpc_test_util platforms: - linux - posix uses_polling: false +- name: test_core_util_time_test + gtest: true + build: test + language: c++ + headers: [] + src: + - test/core/util/time_test.cc + deps: + - gtest + - grpc_test_util + uses_polling: false - name: test_cpp_client_credentials_test gtest: true build: test @@ -19172,7 +19555,6 @@ targets: - test/cpp/end2end/test_service_impl.cc deps: - gtest - - absl/log:check - grpc++_test_util - name: test_cpp_ext_chaotic_good_test gtest: true @@ -19339,7 +19721,6 @@ targets: - test/core/event_engine/test_suite/thready_posix_event_engine_test.cc deps: - gtest - - absl/log:check - grpc_test_util platforms: - linux @@ -19407,8 +19788,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -19428,11 +19809,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/timeout_before_request_call.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -19441,28 +19821,27 @@ targets: build: test language: c++ headers: - - test/core/util/cmdline.h - - test/core/util/evaluate_args_test_util.h - - test/core/util/fuzzer_util.h - - test/core/util/grpc_profiler.h - - test/core/util/histogram.h - - test/core/util/mock_authorization_endpoint.h - - test/core/util/mock_endpoint.h - - test/core/util/parse_hexstring.h - - test/core/util/resolve_localhost_ip46.h - - test/core/util/slice_splitter.h - - test/core/util/tracer_util.h - src: + - test/core/test_util/cmdline.h + - test/core/test_util/evaluate_args_test_util.h + - test/core/test_util/fuzzer_util.h + - test/core/test_util/grpc_profiler.h + - test/core/test_util/histogram.h + - test/core/test_util/mock_endpoint.h + - test/core/test_util/parse_hexstring.h + - test/core/test_util/resolve_localhost_ip46.h + - test/core/test_util/slice_splitter.h + - test/core/test_util/tracer_util.h + src: + - test/core/test_util/cmdline.cc + - test/core/test_util/fuzzer_util.cc + - test/core/test_util/grpc_profiler.cc + - test/core/test_util/histogram.cc + - test/core/test_util/mock_endpoint.cc + - test/core/test_util/parse_hexstring.cc + - test/core/test_util/resolve_localhost_ip46.cc + - test/core/test_util/slice_splitter.cc + - test/core/test_util/tracer_util.cc - test/core/transport/timeout_encoding_test.cc - - test/core/util/cmdline.cc - - test/core/util/fuzzer_util.cc - - test/core/util/grpc_profiler.cc - - test/core/util/histogram.cc - - test/core/util/mock_endpoint.cc - - test/core/util/parse_hexstring.cc - - test/core/util/resolve_localhost_ip46.cc - - test/core/util/slice_splitter.cc - - test/core/util/tracer_util.cc deps: - gtest - grpc_test_util @@ -19518,7 +19897,6 @@ targets: - test/cpp/end2end/tls_credentials_test.cc deps: - gtest - - absl/log:check - grpc++_test_util - name: tls_key_export_test gtest: true @@ -19533,35 +19911,33 @@ targets: - test/cpp/end2end/tls_key_export_test.cc deps: - gtest - - absl/log:check - grpc++_test_util - name: tls_security_connector_test gtest: true build: test language: c++ headers: - - test/core/util/cmdline.h - - test/core/util/evaluate_args_test_util.h - - test/core/util/fuzzer_util.h - - test/core/util/grpc_profiler.h - - test/core/util/histogram.h - - test/core/util/mock_authorization_endpoint.h - - test/core/util/mock_endpoint.h - - test/core/util/parse_hexstring.h - - test/core/util/resolve_localhost_ip46.h - - test/core/util/slice_splitter.h - - test/core/util/tracer_util.h + - test/core/test_util/cmdline.h + - test/core/test_util/evaluate_args_test_util.h + - test/core/test_util/fuzzer_util.h + - test/core/test_util/grpc_profiler.h + - test/core/test_util/histogram.h + - test/core/test_util/mock_endpoint.h + - test/core/test_util/parse_hexstring.h + - test/core/test_util/resolve_localhost_ip46.h + - test/core/test_util/slice_splitter.h + - test/core/test_util/tracer_util.h src: - test/core/security/tls_security_connector_test.cc - - test/core/util/cmdline.cc - - test/core/util/fuzzer_util.cc - - test/core/util/grpc_profiler.cc - - test/core/util/histogram.cc - - test/core/util/mock_endpoint.cc - - test/core/util/parse_hexstring.cc - - test/core/util/resolve_localhost_ip46.cc - - test/core/util/slice_splitter.cc - - test/core/util/tracer_util.cc + - test/core/test_util/cmdline.cc + - test/core/test_util/fuzzer_util.cc + - test/core/test_util/grpc_profiler.cc + - test/core/test_util/histogram.cc + - test/core/test_util/mock_endpoint.cc + - test/core/test_util/parse_hexstring.cc + - test/core/test_util/resolve_localhost_ip46.cc + - test/core/test_util/slice_splitter.cc + - test/core/test_util/tracer_util.cc deps: - gtest - grpc_test_util @@ -19577,7 +19953,6 @@ targets: - test/core/transport/chttp2/too_many_pings_test.cc deps: - gtest - - absl/log:check - grpc++_test_config - grpc++_test_util - name: traced_buffer_list_test @@ -19589,7 +19964,6 @@ targets: - test/core/event_engine/posix/traced_buffer_list_test.cc deps: - gtest - - absl/log:check - grpc_test_util platforms: - linux @@ -19631,8 +20005,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -19652,11 +20026,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/trailing_metadata.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -19854,8 +20227,8 @@ targets: build: test language: c++ headers: - - src/core/lib/gpr/useful.h - src/core/lib/gprpp/unique_type_name.h + - src/core/util/useful.h src: - test/core/gprpp/unique_type_name_test.cc deps: @@ -19875,7 +20248,6 @@ targets: - test/core/end2end/cq_verifier.cc deps: - gtest - - absl/log:check - grpc_test_util - name: uri_parser_test gtest: true @@ -19892,9 +20264,9 @@ targets: build: test language: c++ headers: - - src/core/lib/gpr/useful.h + - src/core/util/useful.h src: - - test/core/gpr/useful_test.cc + - test/core/util/useful_test.cc deps: - gtest uses_polling: false @@ -19981,10 +20353,10 @@ targets: build: test language: c++ headers: - - test/core/util/fake_stats_plugin.h + - test/core/test_util/fake_stats_plugin.h src: - - test/core/client_channel/lb_policy/weighted_round_robin_config_test.cc - - test/core/util/fake_stats_plugin.cc + - test/core/load_balancing/weighted_round_robin_config_test.cc + - test/core/test_util/fake_stats_plugin.cc deps: - gtest - grpc_test_util @@ -19994,19 +20366,18 @@ targets: build: test language: c++ headers: - - test/core/client_channel/lb_policy/lb_policy_test_lib.h - test/core/event_engine/event_engine_test_utils.h - test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.h - - test/core/util/fake_stats_plugin.h + - test/core/load_balancing/lb_policy_test_lib.h + - test/core/test_util/fake_stats_plugin.h src: - test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.proto - - test/core/client_channel/lb_policy/weighted_round_robin_test.cc - test/core/event_engine/event_engine_test_utils.cc - test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.cc - - test/core/util/fake_stats_plugin.cc + - test/core/load_balancing/weighted_round_robin_test.cc + - test/core/test_util/fake_stats_plugin.cc deps: - gtest - - absl/log:check - protobuf - grpc_test_util uses_polling: false @@ -20021,7 +20392,6 @@ targets: - test/core/event_engine/windows/win_socket_test.cc deps: - gtest - - absl/log:check - grpc_test_util platforms: - linux @@ -20041,7 +20411,6 @@ targets: - test/core/end2end/cq_verifier.cc deps: - gtest - - absl/log:check - grpc_test_util - name: windows_endpoint_test gtest: true @@ -20054,7 +20423,6 @@ targets: - test/core/event_engine/windows/windows_endpoint_test.cc deps: - gtest - - absl/log:check - grpc_test_util platforms: - linux @@ -20291,7 +20659,6 @@ targets: - test/core/gprpp/work_serializer_test.cc deps: - gtest - - absl/log:check - grpc_test_util platforms: - linux @@ -20332,8 +20699,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -20353,11 +20720,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/write_buffering_at_end.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -20396,8 +20762,8 @@ targets: - test/core/end2end/fixtures/sockpair_fixture.h - test/core/end2end/tests/cancel_test_helpers.h - test/core/event_engine/event_engine_test_utils.h - - test/core/util/fake_stats_plugin.h - - test/core/util/test_lb_policies.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/test_lb_policies.h src: - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -20417,11 +20783,10 @@ targets: - test/core/end2end/fixtures/proxy.cc - test/core/end2end/tests/write_buffering.cc - test/core/event_engine/event_engine_test_utils.cc - - test/core/util/fake_stats_plugin.cc - - test/core/util/test_lb_policies.cc + - test/core/test_util/fake_stats_plugin.cc + - test/core/test_util/test_lb_policies.cc deps: - gtest - - absl/log:check - grpc_authorization_provider - grpc_unsecure - grpc_test_util @@ -20448,17 +20813,16 @@ targets: headers: - test/core/event_engine/event_engine_test_utils.h - test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.h - - test/core/util/cmdline.h - - test/core/util/evaluate_args_test_util.h - - test/core/util/fuzzer_util.h - - test/core/util/grpc_profiler.h - - test/core/util/histogram.h - - test/core/util/mock_authorization_endpoint.h - - test/core/util/mock_endpoint.h - - test/core/util/parse_hexstring.h - - test/core/util/resolve_localhost_ip46.h - - test/core/util/slice_splitter.h - - test/core/util/tracer_util.h + - test/core/test_util/cmdline.h + - test/core/test_util/evaluate_args_test_util.h + - test/core/test_util/fuzzer_util.h + - test/core/test_util/grpc_profiler.h + - test/core/test_util/histogram.h + - test/core/test_util/mock_endpoint.h + - test/core/test_util/parse_hexstring.h + - test/core/test_util/resolve_localhost_ip46.h + - test/core/test_util/slice_splitter.h + - test/core/test_util/tracer_util.h src: - src/proto/grpc/testing/echo.proto - src/proto/grpc/testing/echo_messages.proto @@ -20467,19 +20831,18 @@ targets: - test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.proto - test/core/event_engine/event_engine_test_utils.cc - test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.cc - - test/core/util/cmdline.cc - - test/core/util/fuzzer_util.cc - - test/core/util/grpc_profiler.cc - - test/core/util/histogram.cc - - test/core/util/mock_endpoint.cc - - test/core/util/parse_hexstring.cc - - test/core/util/resolve_localhost_ip46.cc - - test/core/util/slice_splitter.cc - - test/core/util/tracer_util.cc + - test/core/test_util/cmdline.cc + - test/core/test_util/fuzzer_util.cc + - test/core/test_util/grpc_profiler.cc + - test/core/test_util/histogram.cc + - test/core/test_util/mock_endpoint.cc + - test/core/test_util/parse_hexstring.cc + - test/core/test_util/resolve_localhost_ip46.cc + - test/core/test_util/slice_splitter.cc + - test/core/test_util/tracer_util.cc - test/cpp/performance/writes_per_rpc_test.cc deps: - gtest - - absl/log:check - grpc++ - grpc_test_util platforms: @@ -20530,7 +20893,7 @@ targets: build: test language: c++ headers: - - test/core/util/scoped_env_var.h + - test/core/test_util/scoped_env_var.h src: - test/core/xds/xds_bootstrap_test.cc deps: @@ -20553,7 +20916,7 @@ targets: build: test language: c++ headers: - - test/core/util/scoped_env_var.h + - test/core/test_util/scoped_env_var.h - test/core/xds/xds_client_test_peer.h - test/core/xds/xds_transport_fake.h src: @@ -20574,8 +20937,8 @@ targets: run: false language: c++ headers: - - test/core/util/fake_stats_plugin.h - - test/core/util/scoped_env_var.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/scoped_env_var.h - test/cpp/end2end/connection_attempt_injector.h - test/cpp/end2end/counted_service.h - test/cpp/end2end/test_service_impl.h @@ -20615,7 +20978,7 @@ targets: - src/proto/grpc/testing/xds/v3/route.proto - src/proto/grpc/testing/xds/v3/router.proto - src/proto/grpc/testing/xds/v3/string.proto - - test/core/util/fake_stats_plugin.cc + - test/core/test_util/fake_stats_plugin.cc - test/cpp/end2end/connection_attempt_injector.cc - test/cpp/end2end/test_service_impl.cc - test/cpp/end2end/xds/xds_cluster_end2end_test.cc @@ -20625,7 +20988,6 @@ targets: - test/cpp/util/tls_test_utils.cc deps: - gtest - - absl/log:check - grpc++_test_util platforms: - linux @@ -20668,7 +21030,7 @@ targets: run: false language: c++ headers: - - test/core/util/scoped_env_var.h + - test/core/test_util/scoped_env_var.h - test/cpp/end2end/connection_attempt_injector.h - test/cpp/end2end/counted_service.h - test/cpp/end2end/test_service_impl.h @@ -20718,7 +21080,6 @@ targets: - test/cpp/util/tls_test_utils.cc deps: - gtest - - absl/log:check - grpc++_test_util platforms: - linux @@ -20763,8 +21124,8 @@ targets: run: false language: c++ headers: - - test/core/util/fake_stats_plugin.h - - test/core/util/scoped_env_var.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/scoped_env_var.h - test/cpp/end2end/counted_service.h - test/cpp/end2end/test_service_impl.h - test/cpp/end2end/xds/xds_end2end_test_lib.h @@ -20803,7 +21164,7 @@ targets: - src/proto/grpc/testing/xds/v3/route.proto - src/proto/grpc/testing/xds/v3/router.proto - src/proto/grpc/testing/xds/v3/string.proto - - test/core/util/fake_stats_plugin.cc + - test/core/test_util/fake_stats_plugin.cc - test/cpp/end2end/test_service_impl.cc - test/cpp/end2end/xds/xds_core_end2end_test.cc - test/cpp/end2end/xds/xds_end2end_test_lib.cc @@ -20812,7 +21173,6 @@ targets: - test/cpp/util/tls_test_utils.cc deps: - gtest - - absl/log:check - grpc++_test_util platforms: - linux @@ -20833,35 +21193,33 @@ targets: - test/cpp/end2end/xds/xds_credentials_end2end_test.cc deps: - gtest - - absl/log:check - grpc++_test_util - name: xds_credentials_test gtest: true build: test language: c++ headers: - - test/core/util/cmdline.h - - test/core/util/evaluate_args_test_util.h - - test/core/util/fuzzer_util.h - - test/core/util/grpc_profiler.h - - test/core/util/histogram.h - - test/core/util/mock_authorization_endpoint.h - - test/core/util/mock_endpoint.h - - test/core/util/parse_hexstring.h - - test/core/util/resolve_localhost_ip46.h - - test/core/util/slice_splitter.h - - test/core/util/tracer_util.h + - test/core/test_util/cmdline.h + - test/core/test_util/evaluate_args_test_util.h + - test/core/test_util/fuzzer_util.h + - test/core/test_util/grpc_profiler.h + - test/core/test_util/histogram.h + - test/core/test_util/mock_endpoint.h + - test/core/test_util/parse_hexstring.h + - test/core/test_util/resolve_localhost_ip46.h + - test/core/test_util/slice_splitter.h + - test/core/test_util/tracer_util.h src: - test/core/security/xds_credentials_test.cc - - test/core/util/cmdline.cc - - test/core/util/fuzzer_util.cc - - test/core/util/grpc_profiler.cc - - test/core/util/histogram.cc - - test/core/util/mock_endpoint.cc - - test/core/util/parse_hexstring.cc - - test/core/util/resolve_localhost_ip46.cc - - test/core/util/slice_splitter.cc - - test/core/util/tracer_util.cc + - test/core/test_util/cmdline.cc + - test/core/test_util/fuzzer_util.cc + - test/core/test_util/grpc_profiler.cc + - test/core/test_util/histogram.cc + - test/core/test_util/mock_endpoint.cc + - test/core/test_util/parse_hexstring.cc + - test/core/test_util/resolve_localhost_ip46.cc + - test/core/test_util/slice_splitter.cc + - test/core/test_util/tracer_util.cc deps: - gtest - grpc_test_util @@ -20920,7 +21278,6 @@ targets: - test/cpp/util/tls_test_utils.cc deps: - gtest - - absl/log:check - grpc++_test_util platforms: - linux @@ -20932,8 +21289,8 @@ targets: run: false language: c++ headers: - - test/core/util/audit_logging_utils.h - - test/core/util/scoped_env_var.h + - test/core/test_util/audit_logging_utils.h + - test/core/test_util/scoped_env_var.h - test/cpp/end2end/counted_service.h - test/cpp/end2end/test_service_impl.h - test/cpp/end2end/xds/xds_end2end_test_lib.h @@ -20977,7 +21334,7 @@ targets: - src/proto/grpc/testing/xds/v3/string.proto - src/proto/grpc/testing/xds/v3/tls.proto - src/proto/grpc/testing/xds/v3/typed_struct.proto - - test/core/util/audit_logging_utils.cc + - test/core/test_util/audit_logging_utils.cc - test/cpp/end2end/test_service_impl.cc - test/cpp/end2end/xds/xds_end2end_test.cc - test/cpp/end2end/xds/xds_end2end_test_lib.cc @@ -20986,7 +21343,6 @@ targets: - test/cpp/util/tls_test_utils.cc deps: - gtest - - absl/log:check - grpc++_test_config - grpc++_test_util platforms: @@ -20998,7 +21354,7 @@ targets: build: test language: c++ headers: - - test/core/util/scoped_env_var.h + - test/core/test_util/scoped_env_var.h src: - src/proto/grpc/testing/xds/v3/address.proto - src/proto/grpc/testing/xds/v3/base.proto @@ -21017,7 +21373,7 @@ targets: build: test language: c++ headers: - - test/core/util/scoped_env_var.h + - test/core/test_util/scoped_env_var.h - test/cpp/end2end/counted_service.h - test/cpp/end2end/test_service_impl.h - test/cpp/end2end/xds/xds_end2end_test_lib.h @@ -21064,7 +21420,6 @@ targets: - test/cpp/util/tls_test_utils.cc deps: - gtest - - absl/log:check - grpc++_test_util platforms: - linux @@ -21124,7 +21479,6 @@ targets: - test/cpp/util/tls_test_utils.cc deps: - gtest - - absl/log:check - grpc++_test_util platforms: - linux @@ -21135,7 +21489,7 @@ targets: build: test language: c++ headers: - - test/core/util/scoped_env_var.h + - test/core/test_util/scoped_env_var.h - test/cpp/util/cli_call.h - test/cpp/util/cli_credentials.h - test/cpp/util/config_grpc_cli.h @@ -21181,7 +21535,7 @@ targets: build: test language: c++ headers: - - test/core/util/scoped_env_var.h + - test/core/test_util/scoped_env_var.h - test/cpp/util/cli_call.h - test/cpp/util/cli_credentials.h - test/cpp/util/config_grpc_cli.h @@ -21319,7 +21673,6 @@ targets: - test/cpp/util/tls_test_utils.cc deps: - gtest - - absl/log:check - grpc++_test_util platforms: - linux @@ -21330,7 +21683,7 @@ targets: build: test language: c++ headers: - - test/core/util/scoped_env_var.h + - test/core/test_util/scoped_env_var.h - test/cpp/end2end/counted_service.h - test/cpp/end2end/test_service_impl.h - test/cpp/end2end/xds/xds_end2end_test_lib.h @@ -21380,7 +21733,6 @@ targets: - test/cpp/util/tls_test_utils.cc deps: - gtest - - absl/log:check - grpc++_test_util platforms: - linux @@ -21392,7 +21744,7 @@ targets: language: c++ headers: [] src: - - test/core/client_channel/lb_policy/xds_override_host_lb_config_parser_test.cc + - test/core/load_balancing/xds_override_host_lb_config_parser_test.cc deps: - gtest - grpc_test_util @@ -21402,17 +21754,16 @@ targets: build: test language: c++ headers: - - test/core/client_channel/lb_policy/lb_policy_test_lib.h - test/core/event_engine/event_engine_test_utils.h - test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.h + - test/core/load_balancing/lb_policy_test_lib.h src: - test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.proto - - test/core/client_channel/lb_policy/xds_override_host_test.cc - test/core/event_engine/event_engine_test_utils.cc - test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.cc + - test/core/load_balancing/xds_override_host_test.cc deps: - gtest - - absl/log:check - protobuf - grpc_test_util uses_polling: false @@ -21421,7 +21772,7 @@ targets: build: test language: c++ headers: - - test/core/util/scoped_env_var.h + - test/core/test_util/scoped_env_var.h - test/cpp/end2end/connection_attempt_injector.h - test/cpp/end2end/counted_service.h - test/cpp/end2end/test_service_impl.h @@ -21472,7 +21823,6 @@ targets: - test/cpp/util/tls_test_utils.cc deps: - gtest - - absl/log:check - grpc++_test_util platforms: - linux @@ -21533,7 +21883,6 @@ targets: - test/cpp/util/tls_test_utils.cc deps: - gtest - - absl/log:check - grpc++_test_util platforms: - linux @@ -21544,7 +21893,7 @@ targets: build: test language: c++ headers: - - test/core/util/scoped_env_var.h + - test/core/test_util/scoped_env_var.h - test/cpp/end2end/counted_service.h - test/cpp/end2end/rls_server.h - test/cpp/end2end/test_service_impl.h @@ -21595,7 +21944,6 @@ targets: - test/cpp/util/tls_test_utils.cc deps: - gtest - - absl/log:check - grpc++_test_util platforms: - linux @@ -21606,7 +21954,7 @@ targets: build: test language: c++ headers: - - test/core/util/scoped_env_var.h + - test/core/test_util/scoped_env_var.h - test/cpp/util/cli_call.h - test/cpp/util/cli_credentials.h - test/cpp/util/config_grpc_cli.h @@ -21698,7 +22046,6 @@ targets: - test/cpp/util/tls_test_utils.cc deps: - gtest - - absl/log:check - grpc++_test_util platforms: - linux @@ -21727,7 +22074,6 @@ targets: - test/cpp/interop/xds_stats_watcher_test.cc deps: - gtest - - absl/log:check - grpc++_reflection - grpcpp_channelz - grpc_test_util @@ -21737,8 +22083,8 @@ targets: build: test language: c++ headers: - - test/core/util/fake_stats_plugin.h - - test/core/util/scoped_env_var.h + - test/core/test_util/fake_stats_plugin.h + - test/core/test_util/scoped_env_var.h - test/cpp/end2end/counted_service.h - test/cpp/end2end/test_service_impl.h - test/cpp/end2end/xds/xds_end2end_test_lib.h @@ -21779,7 +22125,7 @@ targets: - src/proto/grpc/testing/xds/v3/router.proto - src/proto/grpc/testing/xds/v3/string.proto - src/proto/grpc/testing/xds/v3/wrr_locality.proto - - test/core/util/fake_stats_plugin.cc + - test/core/test_util/fake_stats_plugin.cc - test/cpp/end2end/test_service_impl.cc - test/cpp/end2end/xds/xds_end2end_test_lib.cc - test/cpp/end2end/xds/xds_server.cc @@ -21788,7 +22134,6 @@ targets: - test/cpp/util/tls_test_utils.cc deps: - gtest - - absl/log:check - grpc++_test_util platforms: - linux diff --git a/build_config.rb b/build_config.rb index f02a2f1d2e1..3de824851f1 100644 --- a/build_config.rb +++ b/build_config.rb @@ -13,5 +13,5 @@ # limitations under the License. module GrpcBuildConfig - CORE_WINDOWS_DLL = '/tmp/libs/opt/grpc-40.dll' + CORE_WINDOWS_DLL = '/tmp/libs/opt/grpc-41.dll' end diff --git a/build_handwritten.yaml b/build_handwritten.yaml index 8ccc340c96f..e9eac935968 100644 --- a/build_handwritten.yaml +++ b/build_handwritten.yaml @@ -12,11 +12,11 @@ settings: '#08': Use "-preN" suffixes to identify pre-release versions '#09': Per-language overrides are possible with (eg) ruby_version tag here '#10': See the expand_version.py for all the quirks here - core_version: 40.0.0 + core_version: 41.0.0 csharp_major_version: 2 - g_stands_for: grateful + g_stands_for: gnarly protobuf_version: 3.26.1 - version: 1.64.0-dev + version: 1.65.0-dev configs: asan: CC: clang @@ -29,7 +29,7 @@ configs: compile_the_world: true test_environ: ASAN_OPTIONS: detect_leaks=1:color=always - LSAN_OPTIONS: suppressions=test/core/util/lsan_suppressions.txt:report_objects=1 + LSAN_OPTIONS: suppressions=test/core/test_util/lsan_suppressions.txt:report_objects=1 asan-noleaks: CC: clang CPPFLAGS: -O0 -fsanitize-coverage=edge,trace-pc-guard -fsanitize=address -fno-omit-frame-pointer @@ -53,7 +53,7 @@ configs: compile_the_world: true test_environ: ASAN_OPTIONS: detect_leaks=1:color=always - LSAN_OPTIONS: suppressions=test/core/util/lsan_suppressions.txt:report_objects=1 + LSAN_OPTIONS: suppressions=test/core/test_util/lsan_suppressions.txt:report_objects=1 c++-compat: CFLAGS: -Wc++-compat CPPFLAGS: -O0 @@ -115,7 +115,7 @@ configs: LDXX: clang++ compile_the_world: true test_environ: - TSAN_OPTIONS: suppressions=test/core/util/tsan_suppressions.txt:halt_on_error=1:second_deadlock_stack=1 + TSAN_OPTIONS: suppressions=test/core/test_util/tsan_suppressions.txt:halt_on_error=1:second_deadlock_stack=1 ubsan: CC: clang CPPFLAGS: -O0 -stdlib=libc++ -fsanitize-coverage=edge,trace-pc-guard -fsanitize=undefined @@ -127,7 +127,7 @@ configs: LDXX: clang++ compile_the_world: true test_environ: - UBSAN_OPTIONS: halt_on_error=1:print_stacktrace=1:suppressions=test/core/util/ubsan_suppressions.txt + UBSAN_OPTIONS: halt_on_error=1:print_stacktrace=1:suppressions=test/core/test_util/ubsan_suppressions.txt defaults: boringssl: CFLAGS: -g diff --git a/config.m4 b/config.m4 index d103e945a6b..672e7101589 100644 --- a/config.m4 +++ b/config.m4 @@ -41,8 +41,10 @@ if test "$PHP_GRPC" != "no"; then PHP_SUBST(GRPC_SHARED_LIBADD) PHP_NEW_EXTENSION(grpc, + src/core/channelz/channel_trace.cc \ + src/core/channelz/channelz.cc \ + src/core/channelz/channelz_registry.cc \ src/core/client_channel/backup_poller.cc \ - src/core/client_channel/client_channel_channelz.cc \ src/core/client_channel/client_channel_factory.cc \ src/core/client_channel/client_channel_filter.cc \ src/core/client_channel/client_channel_plugin.cc \ @@ -50,7 +52,6 @@ if test "$PHP_GRPC" != "no"; then src/core/client_channel/config_selector.cc \ src/core/client_channel/dynamic_filters.cc \ src/core/client_channel/global_subchannel_pool.cc \ - src/core/client_channel/http_proxy_mapper.cc \ src/core/client_channel/local_subchannel_pool.cc \ src/core/client_channel/retry_filter.cc \ src/core/client_channel/retry_filter_legacy_call_data.cc \ @@ -63,7 +64,6 @@ if test "$PHP_GRPC" != "no"; then src/core/ext/filters/census/grpc_context.cc \ src/core/ext/filters/channel_idle/idle_filter_state.cc \ src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc \ - src/core/ext/filters/deadline/deadline_filter.cc \ src/core/ext/filters/fault_injection/fault_injection_filter.cc \ src/core/ext/filters/fault_injection/fault_injection_service_config_parser.cc \ src/core/ext/filters/http/client/http_client_filter.cc \ @@ -74,7 +74,6 @@ if test "$PHP_GRPC" != "no"; then src/core/ext/filters/message_size/message_size_filter.cc \ src/core/ext/filters/rbac/rbac_filter.cc \ src/core/ext/filters/rbac/rbac_service_config_parser.cc \ - src/core/ext/filters/server_config_selector/server_config_selector_filter.cc \ src/core/ext/filters/stateful_session/stateful_session_filter.cc \ src/core/ext/filters/stateful_session/stateful_session_service_config_parser.cc \ src/core/ext/gcp/metadata_query.cc \ @@ -430,32 +429,16 @@ if test "$PHP_GRPC" != "no"; then src/core/ext/upbdefs-gen/xds/type/v3/cel.upbdefs.c \ src/core/ext/upbdefs-gen/xds/type/v3/range.upbdefs.c \ src/core/ext/upbdefs-gen/xds/type/v3/typed_struct.upbdefs.c \ - src/core/ext/xds/certificate_provider_store.cc \ - src/core/ext/xds/file_watcher_certificate_provider_factory.cc \ - src/core/ext/xds/xds_api.cc \ - src/core/ext/xds/xds_audit_logger_registry.cc \ - src/core/ext/xds/xds_bootstrap.cc \ - src/core/ext/xds/xds_bootstrap_grpc.cc \ - src/core/ext/xds/xds_certificate_provider.cc \ - src/core/ext/xds/xds_channel_stack_modifier.cc \ - src/core/ext/xds/xds_client.cc \ - src/core/ext/xds/xds_client_grpc.cc \ - src/core/ext/xds/xds_client_stats.cc \ - src/core/ext/xds/xds_cluster.cc \ - src/core/ext/xds/xds_cluster_specifier_plugin.cc \ - src/core/ext/xds/xds_common_types.cc \ - src/core/ext/xds/xds_endpoint.cc \ - src/core/ext/xds/xds_health_status.cc \ - src/core/ext/xds/xds_http_fault_filter.cc \ - src/core/ext/xds/xds_http_filters.cc \ - src/core/ext/xds/xds_http_rbac_filter.cc \ - src/core/ext/xds/xds_http_stateful_session_filter.cc \ - src/core/ext/xds/xds_lb_policy_registry.cc \ - src/core/ext/xds/xds_listener.cc \ - src/core/ext/xds/xds_route_config.cc \ - src/core/ext/xds/xds_routing.cc \ - src/core/ext/xds/xds_server_config_fetcher.cc \ - src/core/ext/xds/xds_transport_grpc.cc \ + src/core/handshaker/endpoint_info/endpoint_info_handshaker.cc \ + src/core/handshaker/handshaker.cc \ + src/core/handshaker/handshaker_registry.cc \ + src/core/handshaker/http_connect/http_connect_handshaker.cc \ + src/core/handshaker/http_connect/http_proxy_mapper.cc \ + src/core/handshaker/proxy_mapper_registry.cc \ + src/core/handshaker/security/secure_endpoint.cc \ + src/core/handshaker/security/security_handshaker.cc \ + src/core/handshaker/security/tsi_error.cc \ + src/core/handshaker/tcp_connect/tcp_connect_handshaker.cc \ src/core/lib/address_utils/parse_address.cc \ src/core/lib/address_utils/sockaddr_utils.cc \ src/core/lib/backoff/backoff.cc \ @@ -467,13 +450,9 @@ if test "$PHP_GRPC" != "no"; then src/core/lib/channel/channel_stack_builder.cc \ src/core/lib/channel/channel_stack_builder_impl.cc \ src/core/lib/channel/channel_stack_trace.cc \ - src/core/lib/channel/channel_trace.cc \ - src/core/lib/channel/channelz.cc \ - src/core/lib/channel/channelz_registry.cc \ src/core/lib/channel/connected_channel.cc \ src/core/lib/channel/metrics.cc \ src/core/lib/channel/promise_based_filter.cc \ - src/core/lib/channel/server_call_tracer_filter.cc \ src/core/lib/channel/status_util.cc \ src/core/lib/compression/compression.cc \ src/core/lib/compression/compression_internal.cc \ @@ -537,32 +516,6 @@ if test "$PHP_GRPC" != "no"; then src/core/lib/event_engine/work_queue/basic_work_queue.cc \ src/core/lib/experiments/config.cc \ src/core/lib/experiments/experiments.cc \ - src/core/lib/gpr/alloc.cc \ - src/core/lib/gpr/android/log.cc \ - src/core/lib/gpr/atm.cc \ - src/core/lib/gpr/iphone/cpu.cc \ - src/core/lib/gpr/linux/cpu.cc \ - src/core/lib/gpr/linux/log.cc \ - src/core/lib/gpr/log.cc \ - src/core/lib/gpr/msys/tmpfile.cc \ - src/core/lib/gpr/posix/cpu.cc \ - src/core/lib/gpr/posix/log.cc \ - src/core/lib/gpr/posix/string.cc \ - src/core/lib/gpr/posix/sync.cc \ - src/core/lib/gpr/posix/time.cc \ - src/core/lib/gpr/posix/tmpfile.cc \ - src/core/lib/gpr/string.cc \ - src/core/lib/gpr/sync.cc \ - src/core/lib/gpr/sync_abseil.cc \ - src/core/lib/gpr/time.cc \ - src/core/lib/gpr/time_precise.cc \ - src/core/lib/gpr/windows/cpu.cc \ - src/core/lib/gpr/windows/log.cc \ - src/core/lib/gpr/windows/string.cc \ - src/core/lib/gpr/windows/string_util.cc \ - src/core/lib/gpr/windows/sync.cc \ - src/core/lib/gpr/windows/time.cc \ - src/core/lib/gpr/windows/tmpfile.cc \ src/core/lib/gprpp/crash.cc \ src/core/lib/gprpp/examine_stack.cc \ src/core/lib/gprpp/fork.cc \ @@ -589,7 +542,6 @@ if test "$PHP_GRPC" != "no"; then src/core/lib/gprpp/windows/stat.cc \ src/core/lib/gprpp/windows/thd.cc \ src/core/lib/gprpp/work_serializer.cc \ - src/core/lib/handshaker/proxy_mapper_registry.cc \ src/core/lib/http/format_request.cc \ src/core/lib/http/httpcli.cc \ src/core/lib/http/httpcli_security_connector.cc \ @@ -748,10 +700,7 @@ if test "$PHP_GRPC" != "no"; then src/core/lib/security/security_connector/ssl_utils.cc \ src/core/lib/security/security_connector/tls/tls_security_connector.cc \ src/core/lib/security/transport/client_auth_filter.cc \ - src/core/lib/security/transport/secure_endpoint.cc \ - src/core/lib/security/transport/security_handshaker.cc \ src/core/lib/security/transport/server_auth_filter.cc \ - src/core/lib/security/transport/tsi_error.cc \ src/core/lib/security/util/json_util.cc \ src/core/lib/slice/percent_encoding.cc \ src/core/lib/slice/slice.cc \ @@ -776,29 +725,24 @@ if test "$PHP_GRPC" != "no"; then src/core/lib/surface/lame_client.cc \ src/core/lib/surface/legacy_channel.cc \ src/core/lib/surface/metadata_array.cc \ - src/core/lib/surface/server.cc \ src/core/lib/surface/validate_metadata.cc \ src/core/lib/surface/version.cc \ src/core/lib/surface/wait_for_cq_end_op.cc \ src/core/lib/transport/batch_builder.cc \ src/core/lib/transport/bdp_estimator.cc \ + src/core/lib/transport/call_arena_allocator.cc \ src/core/lib/transport/call_filters.cc \ src/core/lib/transport/call_final_info.cc \ - src/core/lib/transport/call_size_estimator.cc \ src/core/lib/transport/call_spine.cc \ src/core/lib/transport/connectivity_state.cc \ - src/core/lib/transport/endpoint_info_handshaker.cc \ src/core/lib/transport/error_utils.cc \ - src/core/lib/transport/handshaker.cc \ - src/core/lib/transport/handshaker_registry.cc \ - src/core/lib/transport/http_connect_handshaker.cc \ + src/core/lib/transport/interception_chain.cc \ src/core/lib/transport/message.cc \ src/core/lib/transport/metadata.cc \ src/core/lib/transport/metadata_batch.cc \ src/core/lib/transport/metadata_info.cc \ src/core/lib/transport/parsed_metadata.cc \ src/core/lib/transport/status_conversion.cc \ - src/core/lib/transport/tcp_connect_handshaker.cc \ src/core/lib/transport/timeout_encoding.cc \ src/core/lib/transport/transport.cc \ src/core/lib/transport/transport_op_string.cc \ @@ -853,6 +797,11 @@ if test "$PHP_GRPC" != "no"; then src/core/resolver/xds/xds_dependency_manager.cc \ src/core/resolver/xds/xds_resolver.cc \ src/core/resolver/xds/xds_resolver_trace.cc \ + src/core/server/server.cc \ + src/core/server/server_call_tracer_filter.cc \ + src/core/server/server_config_selector_filter.cc \ + src/core/server/xds_channel_stack_modifier.cc \ + src/core/server/xds_server_config_fetcher.cc \ src/core/service_config/service_config_channel_arg_filter.cc \ src/core/service_config/service_config_impl.cc \ src/core/service_config/service_config_parser.cc \ @@ -885,6 +834,56 @@ if test "$PHP_GRPC" != "no"; then src/core/tsi/ssl_transport_security_utils.cc \ src/core/tsi/transport_security.cc \ src/core/tsi/transport_security_grpc.cc \ + src/core/util/alloc.cc \ + src/core/util/android/log.cc \ + src/core/util/atm.cc \ + src/core/util/iphone/cpu.cc \ + src/core/util/linux/cpu.cc \ + src/core/util/linux/log.cc \ + src/core/util/log.cc \ + src/core/util/msys/tmpfile.cc \ + src/core/util/posix/cpu.cc \ + src/core/util/posix/log.cc \ + src/core/util/posix/string.cc \ + src/core/util/posix/sync.cc \ + src/core/util/posix/time.cc \ + src/core/util/posix/tmpfile.cc \ + src/core/util/string.cc \ + src/core/util/sync.cc \ + src/core/util/sync_abseil.cc \ + src/core/util/time.cc \ + src/core/util/time_precise.cc \ + src/core/util/windows/cpu.cc \ + src/core/util/windows/log.cc \ + src/core/util/windows/string.cc \ + src/core/util/windows/string_util.cc \ + src/core/util/windows/sync.cc \ + src/core/util/windows/time.cc \ + src/core/util/windows/tmpfile.cc \ + src/core/xds/grpc/certificate_provider_store.cc \ + src/core/xds/grpc/file_watcher_certificate_provider_factory.cc \ + src/core/xds/grpc/xds_audit_logger_registry.cc \ + src/core/xds/grpc/xds_bootstrap_grpc.cc \ + src/core/xds/grpc/xds_certificate_provider.cc \ + src/core/xds/grpc/xds_client_grpc.cc \ + src/core/xds/grpc/xds_cluster.cc \ + src/core/xds/grpc/xds_cluster_specifier_plugin.cc \ + src/core/xds/grpc/xds_common_types.cc \ + src/core/xds/grpc/xds_endpoint.cc \ + src/core/xds/grpc/xds_health_status.cc \ + src/core/xds/grpc/xds_http_fault_filter.cc \ + src/core/xds/grpc/xds_http_filters.cc \ + src/core/xds/grpc/xds_http_rbac_filter.cc \ + src/core/xds/grpc/xds_http_stateful_session_filter.cc \ + src/core/xds/grpc/xds_lb_policy_registry.cc \ + src/core/xds/grpc/xds_listener.cc \ + src/core/xds/grpc/xds_route_config.cc \ + src/core/xds/grpc/xds_routing.cc \ + src/core/xds/grpc/xds_transport_grpc.cc \ + src/core/xds/xds_client/xds_api.cc \ + src/core/xds/xds_client/xds_bootstrap.cc \ + src/core/xds/xds_client/xds_client.cc \ + src/core/xds/xds_client/xds_client_stats.cc \ src/php/ext/grpc/byte_buffer.c \ src/php/ext/grpc/call.c \ src/php/ext/grpc/call_credentials.c \ @@ -936,6 +935,7 @@ if test "$PHP_GRPC" != "no"; then third_party/abseil-cpp/absl/hash/internal/hash.cc \ third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc \ third_party/abseil-cpp/absl/log/globals.cc \ + third_party/abseil-cpp/absl/log/internal/check_op.cc \ third_party/abseil-cpp/absl/log/internal/conditions.cc \ third_party/abseil-cpp/absl/log/internal/fnmatch.cc \ third_party/abseil-cpp/absl/log/internal/globals.cc \ @@ -1034,7 +1034,6 @@ if test "$PHP_GRPC" != "no"; then third_party/address_sorting/address_sorting.c \ third_party/address_sorting/address_sorting_posix.c \ third_party/address_sorting/address_sorting_windows.c \ - third_party/boringssl-with-bazel/err_data.c \ third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c \ third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c \ third_party/boringssl-with-bazel/src/crypto/asn1/a_d2i_fp.c \ @@ -1125,6 +1124,8 @@ if test "$PHP_GRPC" != "no"; then third_party/boringssl-with-bazel/src/crypto/evp/evp.c \ third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c \ third_party/boringssl-with-bazel/src/crypto/evp/evp_ctx.c \ + third_party/boringssl-with-bazel/src/crypto/evp/p_dh.c \ + third_party/boringssl-with-bazel/src/crypto/evp/p_dh_asn1.c \ third_party/boringssl-with-bazel/src/crypto/evp/p_dsa_asn1.c \ third_party/boringssl-with-bazel/src/crypto/evp/p_ec.c \ third_party/boringssl-with-bazel/src/crypto/evp/p_ec_asn1.c \ @@ -1266,6 +1267,7 @@ if test "$PHP_GRPC" != "no"; then third_party/boringssl-with-bazel/src/crypto/x509/x_val.c \ third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c \ third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c \ + third_party/boringssl-with-bazel/src/gen/crypto/err_data.c \ third_party/boringssl-with-bazel/src/ssl/bio_ssl.cc \ third_party/boringssl-with-bazel/src/ssl/d1_both.cc \ third_party/boringssl-with-bazel/src/ssl/d1_lib.cc \ @@ -1287,6 +1289,7 @@ if test "$PHP_GRPC" != "no"; then third_party/boringssl-with-bazel/src/ssl/ssl_buffer.cc \ third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc \ third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc \ + third_party/boringssl-with-bazel/src/ssl/ssl_credential.cc \ third_party/boringssl-with-bazel/src/ssl/ssl_file.cc \ third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc \ third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc \ @@ -1381,13 +1384,13 @@ if test "$PHP_GRPC" != "no"; then -D_HAS_EXCEPTIONS=0 -DNOMINMAX -DGRPC_ARES=0 \ -DGRPC_POSIX_FORK_ALLOW_PTHREAD_ATFORK=1 \ -DGRPC_XDS_USER_AGENT_NAME_SUFFIX='"\"PHP\""' \ - -DGRPC_XDS_USER_AGENT_VERSION_SUFFIX='"\"1.64.0dev\""') + -DGRPC_XDS_USER_AGENT_VERSION_SUFFIX='"\"1.65.0dev\""') + PHP_ADD_BUILD_DIR($ext_builddir/src/core/channelz) PHP_ADD_BUILD_DIR($ext_builddir/src/core/client_channel) PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/filters/backend_metrics) PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/filters/census) PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/filters/channel_idle) - PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/filters/deadline) PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/filters/fault_injection) PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/filters/http) PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/filters/http/client) @@ -1395,7 +1398,6 @@ if test "$PHP_GRPC" != "no"; then PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/filters/http/server) PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/filters/message_size) PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/filters/rbac) - PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/filters/server_config_selector) PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/filters/stateful_session) PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/gcp) PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/transport/chttp2/alpn) @@ -1505,7 +1507,11 @@ if test "$PHP_GRPC" != "no"; then PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/upbdefs-gen/xds/core/v3) PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/upbdefs-gen/xds/type/matcher/v3) PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/upbdefs-gen/xds/type/v3) - PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/xds) + PHP_ADD_BUILD_DIR($ext_builddir/src/core/handshaker) + PHP_ADD_BUILD_DIR($ext_builddir/src/core/handshaker/endpoint_info) + PHP_ADD_BUILD_DIR($ext_builddir/src/core/handshaker/http_connect) + PHP_ADD_BUILD_DIR($ext_builddir/src/core/handshaker/security) + PHP_ADD_BUILD_DIR($ext_builddir/src/core/handshaker/tcp_connect) PHP_ADD_BUILD_DIR($ext_builddir/src/core/lib/address_utils) PHP_ADD_BUILD_DIR($ext_builddir/src/core/lib/backoff) PHP_ADD_BUILD_DIR($ext_builddir/src/core/lib/channel) @@ -1520,18 +1526,10 @@ if test "$PHP_GRPC" != "no"; then PHP_ADD_BUILD_DIR($ext_builddir/src/core/lib/event_engine/windows) PHP_ADD_BUILD_DIR($ext_builddir/src/core/lib/event_engine/work_queue) PHP_ADD_BUILD_DIR($ext_builddir/src/core/lib/experiments) - PHP_ADD_BUILD_DIR($ext_builddir/src/core/lib/gpr) - PHP_ADD_BUILD_DIR($ext_builddir/src/core/lib/gpr/android) - PHP_ADD_BUILD_DIR($ext_builddir/src/core/lib/gpr/iphone) - PHP_ADD_BUILD_DIR($ext_builddir/src/core/lib/gpr/linux) - PHP_ADD_BUILD_DIR($ext_builddir/src/core/lib/gpr/msys) - PHP_ADD_BUILD_DIR($ext_builddir/src/core/lib/gpr/posix) - PHP_ADD_BUILD_DIR($ext_builddir/src/core/lib/gpr/windows) PHP_ADD_BUILD_DIR($ext_builddir/src/core/lib/gprpp) PHP_ADD_BUILD_DIR($ext_builddir/src/core/lib/gprpp/linux) PHP_ADD_BUILD_DIR($ext_builddir/src/core/lib/gprpp/posix) PHP_ADD_BUILD_DIR($ext_builddir/src/core/lib/gprpp/windows) - PHP_ADD_BUILD_DIR($ext_builddir/src/core/lib/handshaker) PHP_ADD_BUILD_DIR($ext_builddir/src/core/lib/http) PHP_ADD_BUILD_DIR($ext_builddir/src/core/lib/iomgr) PHP_ADD_BUILD_DIR($ext_builddir/src/core/lib/iomgr/event_engine_shims) @@ -1592,6 +1590,7 @@ if test "$PHP_GRPC" != "no"; then PHP_ADD_BUILD_DIR($ext_builddir/src/core/resolver/google_c2p) PHP_ADD_BUILD_DIR($ext_builddir/src/core/resolver/sockaddr) PHP_ADD_BUILD_DIR($ext_builddir/src/core/resolver/xds) + PHP_ADD_BUILD_DIR($ext_builddir/src/core/server) PHP_ADD_BUILD_DIR($ext_builddir/src/core/service_config) PHP_ADD_BUILD_DIR($ext_builddir/src/core/tsi) PHP_ADD_BUILD_DIR($ext_builddir/src/core/tsi/alts/crypt) @@ -1600,6 +1599,15 @@ if test "$PHP_GRPC" != "no"; then PHP_ADD_BUILD_DIR($ext_builddir/src/core/tsi/alts/zero_copy_frame_protector) PHP_ADD_BUILD_DIR($ext_builddir/src/core/tsi/ssl/key_logging) PHP_ADD_BUILD_DIR($ext_builddir/src/core/tsi/ssl/session_cache) + PHP_ADD_BUILD_DIR($ext_builddir/src/core/util) + PHP_ADD_BUILD_DIR($ext_builddir/src/core/util/android) + PHP_ADD_BUILD_DIR($ext_builddir/src/core/util/iphone) + PHP_ADD_BUILD_DIR($ext_builddir/src/core/util/linux) + PHP_ADD_BUILD_DIR($ext_builddir/src/core/util/msys) + PHP_ADD_BUILD_DIR($ext_builddir/src/core/util/posix) + PHP_ADD_BUILD_DIR($ext_builddir/src/core/util/windows) + PHP_ADD_BUILD_DIR($ext_builddir/src/core/xds/grpc) + PHP_ADD_BUILD_DIR($ext_builddir/src/core/xds/xds_client) PHP_ADD_BUILD_DIR($ext_builddir/src/php/ext/grpc) PHP_ADD_BUILD_DIR($ext_builddir/third_party/abseil-cpp/absl/base) PHP_ADD_BUILD_DIR($ext_builddir/third_party/abseil-cpp/absl/base/internal) @@ -1628,7 +1636,6 @@ if test "$PHP_GRPC" != "no"; then PHP_ADD_BUILD_DIR($ext_builddir/third_party/abseil-cpp/absl/time/internal/cctz/src) PHP_ADD_BUILD_DIR($ext_builddir/third_party/abseil-cpp/absl/types) PHP_ADD_BUILD_DIR($ext_builddir/third_party/address_sorting) - PHP_ADD_BUILD_DIR($ext_builddir/third_party/boringssl-with-bazel) PHP_ADD_BUILD_DIR($ext_builddir/third_party/boringssl-with-bazel/src/crypto) PHP_ADD_BUILD_DIR($ext_builddir/third_party/boringssl-with-bazel/src/crypto/asn1) PHP_ADD_BUILD_DIR($ext_builddir/third_party/boringssl-with-bazel/src/crypto/base64) @@ -1671,6 +1678,7 @@ if test "$PHP_GRPC" != "no"; then PHP_ADD_BUILD_DIR($ext_builddir/third_party/boringssl-with-bazel/src/crypto/stack) PHP_ADD_BUILD_DIR($ext_builddir/third_party/boringssl-with-bazel/src/crypto/trust_token) PHP_ADD_BUILD_DIR($ext_builddir/third_party/boringssl-with-bazel/src/crypto/x509) + PHP_ADD_BUILD_DIR($ext_builddir/third_party/boringssl-with-bazel/src/gen/crypto) PHP_ADD_BUILD_DIR($ext_builddir/third_party/boringssl-with-bazel/src/ssl) PHP_ADD_BUILD_DIR($ext_builddir/third_party/re2/re2) PHP_ADD_BUILD_DIR($ext_builddir/third_party/re2/util) diff --git a/config.w32 b/config.w32 index f5fc445b434..c430f747c0a 100644 --- a/config.w32 +++ b/config.w32 @@ -6,8 +6,10 @@ ARG_WITH("grpc", "grpc support", "no"); if (PHP_GRPC != "no") { EXTENSION("grpc", + "src\\core\\channelz\\channel_trace.cc " + + "src\\core\\channelz\\channelz.cc " + + "src\\core\\channelz\\channelz_registry.cc " + "src\\core\\client_channel\\backup_poller.cc " + - "src\\core\\client_channel\\client_channel_channelz.cc " + "src\\core\\client_channel\\client_channel_factory.cc " + "src\\core\\client_channel\\client_channel_filter.cc " + "src\\core\\client_channel\\client_channel_plugin.cc " + @@ -15,7 +17,6 @@ if (PHP_GRPC != "no") { "src\\core\\client_channel\\config_selector.cc " + "src\\core\\client_channel\\dynamic_filters.cc " + "src\\core\\client_channel\\global_subchannel_pool.cc " + - "src\\core\\client_channel\\http_proxy_mapper.cc " + "src\\core\\client_channel\\local_subchannel_pool.cc " + "src\\core\\client_channel\\retry_filter.cc " + "src\\core\\client_channel\\retry_filter_legacy_call_data.cc " + @@ -28,7 +29,6 @@ if (PHP_GRPC != "no") { "src\\core\\ext\\filters\\census\\grpc_context.cc " + "src\\core\\ext\\filters\\channel_idle\\idle_filter_state.cc " + "src\\core\\ext\\filters\\channel_idle\\legacy_channel_idle_filter.cc " + - "src\\core\\ext\\filters\\deadline\\deadline_filter.cc " + "src\\core\\ext\\filters\\fault_injection\\fault_injection_filter.cc " + "src\\core\\ext\\filters\\fault_injection\\fault_injection_service_config_parser.cc " + "src\\core\\ext\\filters\\http\\client\\http_client_filter.cc " + @@ -39,7 +39,6 @@ if (PHP_GRPC != "no") { "src\\core\\ext\\filters\\message_size\\message_size_filter.cc " + "src\\core\\ext\\filters\\rbac\\rbac_filter.cc " + "src\\core\\ext\\filters\\rbac\\rbac_service_config_parser.cc " + - "src\\core\\ext\\filters\\server_config_selector\\server_config_selector_filter.cc " + "src\\core\\ext\\filters\\stateful_session\\stateful_session_filter.cc " + "src\\core\\ext\\filters\\stateful_session\\stateful_session_service_config_parser.cc " + "src\\core\\ext\\gcp\\metadata_query.cc " + @@ -395,32 +394,16 @@ if (PHP_GRPC != "no") { "src\\core\\ext\\upbdefs-gen\\xds\\type\\v3\\cel.upbdefs.c " + "src\\core\\ext\\upbdefs-gen\\xds\\type\\v3\\range.upbdefs.c " + "src\\core\\ext\\upbdefs-gen\\xds\\type\\v3\\typed_struct.upbdefs.c " + - "src\\core\\ext\\xds\\certificate_provider_store.cc " + - "src\\core\\ext\\xds\\file_watcher_certificate_provider_factory.cc " + - "src\\core\\ext\\xds\\xds_api.cc " + - "src\\core\\ext\\xds\\xds_audit_logger_registry.cc " + - "src\\core\\ext\\xds\\xds_bootstrap.cc " + - "src\\core\\ext\\xds\\xds_bootstrap_grpc.cc " + - "src\\core\\ext\\xds\\xds_certificate_provider.cc " + - "src\\core\\ext\\xds\\xds_channel_stack_modifier.cc " + - "src\\core\\ext\\xds\\xds_client.cc " + - "src\\core\\ext\\xds\\xds_client_grpc.cc " + - "src\\core\\ext\\xds\\xds_client_stats.cc " + - "src\\core\\ext\\xds\\xds_cluster.cc " + - "src\\core\\ext\\xds\\xds_cluster_specifier_plugin.cc " + - "src\\core\\ext\\xds\\xds_common_types.cc " + - "src\\core\\ext\\xds\\xds_endpoint.cc " + - "src\\core\\ext\\xds\\xds_health_status.cc " + - "src\\core\\ext\\xds\\xds_http_fault_filter.cc " + - "src\\core\\ext\\xds\\xds_http_filters.cc " + - "src\\core\\ext\\xds\\xds_http_rbac_filter.cc " + - "src\\core\\ext\\xds\\xds_http_stateful_session_filter.cc " + - "src\\core\\ext\\xds\\xds_lb_policy_registry.cc " + - "src\\core\\ext\\xds\\xds_listener.cc " + - "src\\core\\ext\\xds\\xds_route_config.cc " + - "src\\core\\ext\\xds\\xds_routing.cc " + - "src\\core\\ext\\xds\\xds_server_config_fetcher.cc " + - "src\\core\\ext\\xds\\xds_transport_grpc.cc " + + "src\\core\\handshaker\\endpoint_info\\endpoint_info_handshaker.cc " + + "src\\core\\handshaker\\handshaker.cc " + + "src\\core\\handshaker\\handshaker_registry.cc " + + "src\\core\\handshaker\\http_connect\\http_connect_handshaker.cc " + + "src\\core\\handshaker\\http_connect\\http_proxy_mapper.cc " + + "src\\core\\handshaker\\proxy_mapper_registry.cc " + + "src\\core\\handshaker\\security\\secure_endpoint.cc " + + "src\\core\\handshaker\\security\\security_handshaker.cc " + + "src\\core\\handshaker\\security\\tsi_error.cc " + + "src\\core\\handshaker\\tcp_connect\\tcp_connect_handshaker.cc " + "src\\core\\lib\\address_utils\\parse_address.cc " + "src\\core\\lib\\address_utils\\sockaddr_utils.cc " + "src\\core\\lib\\backoff\\backoff.cc " + @@ -432,13 +415,9 @@ if (PHP_GRPC != "no") { "src\\core\\lib\\channel\\channel_stack_builder.cc " + "src\\core\\lib\\channel\\channel_stack_builder_impl.cc " + "src\\core\\lib\\channel\\channel_stack_trace.cc " + - "src\\core\\lib\\channel\\channel_trace.cc " + - "src\\core\\lib\\channel\\channelz.cc " + - "src\\core\\lib\\channel\\channelz_registry.cc " + "src\\core\\lib\\channel\\connected_channel.cc " + "src\\core\\lib\\channel\\metrics.cc " + "src\\core\\lib\\channel\\promise_based_filter.cc " + - "src\\core\\lib\\channel\\server_call_tracer_filter.cc " + "src\\core\\lib\\channel\\status_util.cc " + "src\\core\\lib\\compression\\compression.cc " + "src\\core\\lib\\compression\\compression_internal.cc " + @@ -502,32 +481,6 @@ if (PHP_GRPC != "no") { "src\\core\\lib\\event_engine\\work_queue\\basic_work_queue.cc " + "src\\core\\lib\\experiments\\config.cc " + "src\\core\\lib\\experiments\\experiments.cc " + - "src\\core\\lib\\gpr\\alloc.cc " + - "src\\core\\lib\\gpr\\android\\log.cc " + - "src\\core\\lib\\gpr\\atm.cc " + - "src\\core\\lib\\gpr\\iphone\\cpu.cc " + - "src\\core\\lib\\gpr\\linux\\cpu.cc " + - "src\\core\\lib\\gpr\\linux\\log.cc " + - "src\\core\\lib\\gpr\\log.cc " + - "src\\core\\lib\\gpr\\msys\\tmpfile.cc " + - "src\\core\\lib\\gpr\\posix\\cpu.cc " + - "src\\core\\lib\\gpr\\posix\\log.cc " + - "src\\core\\lib\\gpr\\posix\\string.cc " + - "src\\core\\lib\\gpr\\posix\\sync.cc " + - "src\\core\\lib\\gpr\\posix\\time.cc " + - "src\\core\\lib\\gpr\\posix\\tmpfile.cc " + - "src\\core\\lib\\gpr\\string.cc " + - "src\\core\\lib\\gpr\\sync.cc " + - "src\\core\\lib\\gpr\\sync_abseil.cc " + - "src\\core\\lib\\gpr\\time.cc " + - "src\\core\\lib\\gpr\\time_precise.cc " + - "src\\core\\lib\\gpr\\windows\\cpu.cc " + - "src\\core\\lib\\gpr\\windows\\log.cc " + - "src\\core\\lib\\gpr\\windows\\string.cc " + - "src\\core\\lib\\gpr\\windows\\string_util.cc " + - "src\\core\\lib\\gpr\\windows\\sync.cc " + - "src\\core\\lib\\gpr\\windows\\time.cc " + - "src\\core\\lib\\gpr\\windows\\tmpfile.cc " + "src\\core\\lib\\gprpp\\crash.cc " + "src\\core\\lib\\gprpp\\examine_stack.cc " + "src\\core\\lib\\gprpp\\fork.cc " + @@ -554,7 +507,6 @@ if (PHP_GRPC != "no") { "src\\core\\lib\\gprpp\\windows\\stat.cc " + "src\\core\\lib\\gprpp\\windows\\thd.cc " + "src\\core\\lib\\gprpp\\work_serializer.cc " + - "src\\core\\lib\\handshaker\\proxy_mapper_registry.cc " + "src\\core\\lib\\http\\format_request.cc " + "src\\core\\lib\\http\\httpcli.cc " + "src\\core\\lib\\http\\httpcli_security_connector.cc " + @@ -713,10 +665,7 @@ if (PHP_GRPC != "no") { "src\\core\\lib\\security\\security_connector\\ssl_utils.cc " + "src\\core\\lib\\security\\security_connector\\tls\\tls_security_connector.cc " + "src\\core\\lib\\security\\transport\\client_auth_filter.cc " + - "src\\core\\lib\\security\\transport\\secure_endpoint.cc " + - "src\\core\\lib\\security\\transport\\security_handshaker.cc " + "src\\core\\lib\\security\\transport\\server_auth_filter.cc " + - "src\\core\\lib\\security\\transport\\tsi_error.cc " + "src\\core\\lib\\security\\util\\json_util.cc " + "src\\core\\lib\\slice\\percent_encoding.cc " + "src\\core\\lib\\slice\\slice.cc " + @@ -741,29 +690,24 @@ if (PHP_GRPC != "no") { "src\\core\\lib\\surface\\lame_client.cc " + "src\\core\\lib\\surface\\legacy_channel.cc " + "src\\core\\lib\\surface\\metadata_array.cc " + - "src\\core\\lib\\surface\\server.cc " + "src\\core\\lib\\surface\\validate_metadata.cc " + "src\\core\\lib\\surface\\version.cc " + "src\\core\\lib\\surface\\wait_for_cq_end_op.cc " + "src\\core\\lib\\transport\\batch_builder.cc " + "src\\core\\lib\\transport\\bdp_estimator.cc " + + "src\\core\\lib\\transport\\call_arena_allocator.cc " + "src\\core\\lib\\transport\\call_filters.cc " + "src\\core\\lib\\transport\\call_final_info.cc " + - "src\\core\\lib\\transport\\call_size_estimator.cc " + "src\\core\\lib\\transport\\call_spine.cc " + "src\\core\\lib\\transport\\connectivity_state.cc " + - "src\\core\\lib\\transport\\endpoint_info_handshaker.cc " + "src\\core\\lib\\transport\\error_utils.cc " + - "src\\core\\lib\\transport\\handshaker.cc " + - "src\\core\\lib\\transport\\handshaker_registry.cc " + - "src\\core\\lib\\transport\\http_connect_handshaker.cc " + + "src\\core\\lib\\transport\\interception_chain.cc " + "src\\core\\lib\\transport\\message.cc " + "src\\core\\lib\\transport\\metadata.cc " + "src\\core\\lib\\transport\\metadata_batch.cc " + "src\\core\\lib\\transport\\metadata_info.cc " + "src\\core\\lib\\transport\\parsed_metadata.cc " + "src\\core\\lib\\transport\\status_conversion.cc " + - "src\\core\\lib\\transport\\tcp_connect_handshaker.cc " + "src\\core\\lib\\transport\\timeout_encoding.cc " + "src\\core\\lib\\transport\\transport.cc " + "src\\core\\lib\\transport\\transport_op_string.cc " + @@ -818,6 +762,11 @@ if (PHP_GRPC != "no") { "src\\core\\resolver\\xds\\xds_dependency_manager.cc " + "src\\core\\resolver\\xds\\xds_resolver.cc " + "src\\core\\resolver\\xds\\xds_resolver_trace.cc " + + "src\\core\\server\\server.cc " + + "src\\core\\server\\server_call_tracer_filter.cc " + + "src\\core\\server\\server_config_selector_filter.cc " + + "src\\core\\server\\xds_channel_stack_modifier.cc " + + "src\\core\\server\\xds_server_config_fetcher.cc " + "src\\core\\service_config\\service_config_channel_arg_filter.cc " + "src\\core\\service_config\\service_config_impl.cc " + "src\\core\\service_config\\service_config_parser.cc " + @@ -850,6 +799,56 @@ if (PHP_GRPC != "no") { "src\\core\\tsi\\ssl_transport_security_utils.cc " + "src\\core\\tsi\\transport_security.cc " + "src\\core\\tsi\\transport_security_grpc.cc " + + "src\\core\\util\\alloc.cc " + + "src\\core\\util\\android\\log.cc " + + "src\\core\\util\\atm.cc " + + "src\\core\\util\\iphone\\cpu.cc " + + "src\\core\\util\\linux\\cpu.cc " + + "src\\core\\util\\linux\\log.cc " + + "src\\core\\util\\log.cc " + + "src\\core\\util\\msys\\tmpfile.cc " + + "src\\core\\util\\posix\\cpu.cc " + + "src\\core\\util\\posix\\log.cc " + + "src\\core\\util\\posix\\string.cc " + + "src\\core\\util\\posix\\sync.cc " + + "src\\core\\util\\posix\\time.cc " + + "src\\core\\util\\posix\\tmpfile.cc " + + "src\\core\\util\\string.cc " + + "src\\core\\util\\sync.cc " + + "src\\core\\util\\sync_abseil.cc " + + "src\\core\\util\\time.cc " + + "src\\core\\util\\time_precise.cc " + + "src\\core\\util\\windows\\cpu.cc " + + "src\\core\\util\\windows\\log.cc " + + "src\\core\\util\\windows\\string.cc " + + "src\\core\\util\\windows\\string_util.cc " + + "src\\core\\util\\windows\\sync.cc " + + "src\\core\\util\\windows\\time.cc " + + "src\\core\\util\\windows\\tmpfile.cc " + + "src\\core\\xds\\grpc\\certificate_provider_store.cc " + + "src\\core\\xds\\grpc\\file_watcher_certificate_provider_factory.cc " + + "src\\core\\xds\\grpc\\xds_audit_logger_registry.cc " + + "src\\core\\xds\\grpc\\xds_bootstrap_grpc.cc " + + "src\\core\\xds\\grpc\\xds_certificate_provider.cc " + + "src\\core\\xds\\grpc\\xds_client_grpc.cc " + + "src\\core\\xds\\grpc\\xds_cluster.cc " + + "src\\core\\xds\\grpc\\xds_cluster_specifier_plugin.cc " + + "src\\core\\xds\\grpc\\xds_common_types.cc " + + "src\\core\\xds\\grpc\\xds_endpoint.cc " + + "src\\core\\xds\\grpc\\xds_health_status.cc " + + "src\\core\\xds\\grpc\\xds_http_fault_filter.cc " + + "src\\core\\xds\\grpc\\xds_http_filters.cc " + + "src\\core\\xds\\grpc\\xds_http_rbac_filter.cc " + + "src\\core\\xds\\grpc\\xds_http_stateful_session_filter.cc " + + "src\\core\\xds\\grpc\\xds_lb_policy_registry.cc " + + "src\\core\\xds\\grpc\\xds_listener.cc " + + "src\\core\\xds\\grpc\\xds_route_config.cc " + + "src\\core\\xds\\grpc\\xds_routing.cc " + + "src\\core\\xds\\grpc\\xds_transport_grpc.cc " + + "src\\core\\xds\\xds_client\\xds_api.cc " + + "src\\core\\xds\\xds_client\\xds_bootstrap.cc " + + "src\\core\\xds\\xds_client\\xds_client.cc " + + "src\\core\\xds\\xds_client\\xds_client_stats.cc " + "src\\php\\ext\\grpc\\byte_buffer.c " + "src\\php\\ext\\grpc\\call.c " + "src\\php\\ext\\grpc\\call_credentials.c " + @@ -901,6 +900,7 @@ if (PHP_GRPC != "no") { "third_party\\abseil-cpp\\absl\\hash\\internal\\hash.cc " + "third_party\\abseil-cpp\\absl\\hash\\internal\\low_level_hash.cc " + "third_party\\abseil-cpp\\absl\\log\\globals.cc " + + "third_party\\abseil-cpp\\absl\\log\\internal\\check_op.cc " + "third_party\\abseil-cpp\\absl\\log\\internal\\conditions.cc " + "third_party\\abseil-cpp\\absl\\log\\internal\\fnmatch.cc " + "third_party\\abseil-cpp\\absl\\log\\internal\\globals.cc " + @@ -999,7 +999,6 @@ if (PHP_GRPC != "no") { "third_party\\address_sorting\\address_sorting.c " + "third_party\\address_sorting\\address_sorting_posix.c " + "third_party\\address_sorting\\address_sorting_windows.c " + - "third_party\\boringssl-with-bazel\\err_data.c " + "third_party\\boringssl-with-bazel\\src\\crypto\\asn1\\a_bitstr.c " + "third_party\\boringssl-with-bazel\\src\\crypto\\asn1\\a_bool.c " + "third_party\\boringssl-with-bazel\\src\\crypto\\asn1\\a_d2i_fp.c " + @@ -1090,6 +1089,8 @@ if (PHP_GRPC != "no") { "third_party\\boringssl-with-bazel\\src\\crypto\\evp\\evp.c " + "third_party\\boringssl-with-bazel\\src\\crypto\\evp\\evp_asn1.c " + "third_party\\boringssl-with-bazel\\src\\crypto\\evp\\evp_ctx.c " + + "third_party\\boringssl-with-bazel\\src\\crypto\\evp\\p_dh.c " + + "third_party\\boringssl-with-bazel\\src\\crypto\\evp\\p_dh_asn1.c " + "third_party\\boringssl-with-bazel\\src\\crypto\\evp\\p_dsa_asn1.c " + "third_party\\boringssl-with-bazel\\src\\crypto\\evp\\p_ec.c " + "third_party\\boringssl-with-bazel\\src\\crypto\\evp\\p_ec_asn1.c " + @@ -1231,6 +1232,7 @@ if (PHP_GRPC != "no") { "third_party\\boringssl-with-bazel\\src\\crypto\\x509\\x_val.c " + "third_party\\boringssl-with-bazel\\src\\crypto\\x509\\x_x509.c " + "third_party\\boringssl-with-bazel\\src\\crypto\\x509\\x_x509a.c " + + "third_party\\boringssl-with-bazel\\src\\gen\\crypto\\err_data.c " + "third_party\\boringssl-with-bazel\\src\\ssl\\bio_ssl.cc " + "third_party\\boringssl-with-bazel\\src\\ssl\\d1_both.cc " + "third_party\\boringssl-with-bazel\\src\\ssl\\d1_lib.cc " + @@ -1252,6 +1254,7 @@ if (PHP_GRPC != "no") { "third_party\\boringssl-with-bazel\\src\\ssl\\ssl_buffer.cc " + "third_party\\boringssl-with-bazel\\src\\ssl\\ssl_cert.cc " + "third_party\\boringssl-with-bazel\\src\\ssl\\ssl_cipher.cc " + + "third_party\\boringssl-with-bazel\\src\\ssl\\ssl_credential.cc " + "third_party\\boringssl-with-bazel\\src\\ssl\\ssl_file.cc " + "third_party\\boringssl-with-bazel\\src\\ssl\\ssl_key_share.cc " + "third_party\\boringssl-with-bazel\\src\\ssl\\ssl_lib.cc " + @@ -1375,13 +1378,13 @@ if (PHP_GRPC != "no") { FSO.CreateFolder(base_dir+"\\ext\\grpc"); FSO.CreateFolder(base_dir+"\\ext\\grpc\\src"); FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core"); + FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\channelz"); FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\client_channel"); FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext"); FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\filters"); FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\filters\\backend_metrics"); FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\filters\\census"); FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\filters\\channel_idle"); - FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\filters\\deadline"); FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\filters\\fault_injection"); FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\filters\\http"); FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\filters\\http\\client"); @@ -1389,7 +1392,6 @@ if (PHP_GRPC != "no") { FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\filters\\http\\server"); FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\filters\\message_size"); FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\filters\\rbac"); - FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\filters\\server_config_selector"); FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\filters\\stateful_session"); FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\gcp"); FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\transport"); @@ -1641,7 +1643,11 @@ if (PHP_GRPC != "no") { FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upbdefs-gen\\xds\\type\\matcher"); FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upbdefs-gen\\xds\\type\\matcher\\v3"); FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upbdefs-gen\\xds\\type\\v3"); - FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\xds"); + FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\handshaker"); + FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\handshaker\\endpoint_info"); + FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\handshaker\\http_connect"); + FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\handshaker\\security"); + FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\handshaker\\tcp_connect"); FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\lib"); FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\lib\\address_utils"); FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\lib\\backoff"); @@ -1657,18 +1663,10 @@ if (PHP_GRPC != "no") { FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\lib\\event_engine\\windows"); FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\lib\\event_engine\\work_queue"); FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\lib\\experiments"); - FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\lib\\gpr"); - FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\lib\\gpr\\android"); - FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\lib\\gpr\\iphone"); - FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\lib\\gpr\\linux"); - FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\lib\\gpr\\msys"); - FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\lib\\gpr\\posix"); - FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\lib\\gpr\\windows"); FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\lib\\gprpp"); FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\lib\\gprpp\\linux"); FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\lib\\gprpp\\posix"); FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\lib\\gprpp\\windows"); - FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\lib\\handshaker"); FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\lib\\http"); FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\lib\\iomgr"); FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\lib\\iomgr\\event_engine_shims"); @@ -1730,6 +1728,7 @@ if (PHP_GRPC != "no") { FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\resolver\\google_c2p"); FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\resolver\\sockaddr"); FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\resolver\\xds"); + FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\server"); FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\service_config"); FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\tsi"); FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\tsi\\alts"); @@ -1740,6 +1739,16 @@ if (PHP_GRPC != "no") { FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\tsi\\ssl"); FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\tsi\\ssl\\key_logging"); FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\tsi\\ssl\\session_cache"); + FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\util"); + FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\util\\android"); + FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\util\\iphone"); + FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\util\\linux"); + FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\util\\msys"); + FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\util\\posix"); + FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\util\\windows"); + FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\xds"); + FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\xds\\grpc"); + FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\xds\\xds_client"); FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\php"); FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\php\\ext"); FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\php\\ext\\grpc"); @@ -1822,6 +1831,8 @@ if (PHP_GRPC != "no") { FSO.CreateFolder(base_dir+"\\ext\\grpc\\third_party\\boringssl-with-bazel\\src\\crypto\\stack"); FSO.CreateFolder(base_dir+"\\ext\\grpc\\third_party\\boringssl-with-bazel\\src\\crypto\\trust_token"); FSO.CreateFolder(base_dir+"\\ext\\grpc\\third_party\\boringssl-with-bazel\\src\\crypto\\x509"); + FSO.CreateFolder(base_dir+"\\ext\\grpc\\third_party\\boringssl-with-bazel\\src\\gen"); + FSO.CreateFolder(base_dir+"\\ext\\grpc\\third_party\\boringssl-with-bazel\\src\\gen\\crypto"); FSO.CreateFolder(base_dir+"\\ext\\grpc\\third_party\\boringssl-with-bazel\\src\\ssl"); FSO.CreateFolder(base_dir+"\\ext\\grpc\\third_party\\re2"); FSO.CreateFolder(base_dir+"\\ext\\grpc\\third_party\\re2\\re2"); diff --git a/doc/g_stands_for.md b/doc/g_stands_for.md index 22b7bcd7443..2557a2f352e 100644 --- a/doc/g_stands_for.md +++ b/doc/g_stands_for.md @@ -63,4 +63,5 @@ - 1.61 'g' stands for ['grand'](https://github.com/grpc/grpc/tree/v1.61.x) - 1.62 'g' stands for ['guardian'](https://github.com/grpc/grpc/tree/v1.62.x) - 1.63 'g' stands for ['giggle'](https://github.com/grpc/grpc/tree/v1.63.x) -- 1.64 'g' stands for ['grateful'](https://github.com/grpc/grpc/tree/master) +- 1.64 'g' stands for ['grateful'](https://github.com/grpc/grpc/tree/v1.64.x) +- 1.65 'g' stands for ['gnarly'](https://github.com/grpc/grpc/tree/master) diff --git a/examples/cpp/otel/BUILD b/examples/cpp/otel/BUILD index 0a9b75c5464..561ce270df2 100644 --- a/examples/cpp/otel/BUILD +++ b/examples/cpp/otel/BUILD @@ -14,11 +14,22 @@ licenses(["notice"]) +cc_library( + name = "util", + srcs = ["util.cc"], + hdrs = ["util.h"], + deps = [ + "//:grpc++", + "@io_opentelemetry_cpp//sdk/src/metrics", + ], +) + cc_binary( name = "greeter_callback_client", srcs = ["greeter_callback_client.cc"], defines = ["BAZEL_BUILD"], deps = [ + "util", "//:grpc++", "//:grpcpp_otel_plugin", "//examples/protos:helloworld_cc_grpc", @@ -34,6 +45,7 @@ cc_binary( srcs = ["greeter_callback_server.cc"], defines = ["BAZEL_BUILD"], deps = [ + "util", "//:grpc++", "//:grpc++_reflection", "//:grpcpp_otel_plugin", diff --git a/examples/cpp/otel/CMakeLists.txt b/examples/cpp/otel/CMakeLists.txt index 5a3ecaa1767..e4028a214f9 100644 --- a/examples/cpp/otel/CMakeLists.txt +++ b/examples/cpp/otel/CMakeLists.txt @@ -50,6 +50,7 @@ add_custom_command( # Include generated *.pb.h files include_directories("${CMAKE_CURRENT_BINARY_DIR}") +include_directories("${CMAKE_SOURCE_DIR}") # hw_grpc_proto add_library(hw_grpc_proto @@ -62,6 +63,13 @@ target_link_libraries(hw_grpc_proto ${_GRPC_GRPCPP} ${_PROTOBUF_LIBPROTOBUF}) +# util +add_library(util + "util.cc") +target_link_libraries(util + opentelemetry-cpp::metrics + ${_GRPC_GRPCPP}) + # Targets greeter_callback_(client|server) foreach(_target greeter_callback_client greeter_callback_server) @@ -75,5 +83,6 @@ foreach(_target ${_REFLECTION} ${_GRPC_GRPCPP} gRPC::grpcpp_otel_plugin + util ${_PROTOBUF_LIBPROTOBUF}) endforeach() diff --git a/examples/cpp/otel/greeter_callback_client.cc b/examples/cpp/otel/greeter_callback_client.cc index 653d68971c8..32a2049b4cf 100644 --- a/examples/cpp/otel/greeter_callback_client.cc +++ b/examples/cpp/otel/greeter_callback_client.cc @@ -33,9 +33,11 @@ #include #ifdef BAZEL_BUILD +#include "examples/cpp/otel/util.h" #include "examples/protos/helloworld.grpc.pb.h" #else #include "helloworld.grpc.pb.h" +#include "util.h" #endif ABSL_FLAG(std::string, target, "localhost:50051", "Server address"); @@ -110,6 +112,10 @@ int main(int argc, char** argv) { opentelemetry::exporter::metrics::PrometheusExporterFactory::Create(opts); auto meter_provider = std::make_shared(); + // The default histogram boundaries are not granular enough for RPCs. Override + // the "grpc.client.attempt.duration" view as recommended by + // https://github.com/grpc/proposal/blob/master/A66-otel-stats.md. + AddLatencyView(meter_provider.get(), "grpc.client.attempt.duration", "s"); meter_provider->AddMetricReader(std::move(prometheus_exporter)); auto status = grpc::OpenTelemetryPluginBuilder() .SetMeterProvider(std::move(meter_provider)) diff --git a/examples/cpp/otel/greeter_callback_server.cc b/examples/cpp/otel/greeter_callback_server.cc index 0e5f1a1b9e4..8e7e7cda052 100644 --- a/examples/cpp/otel/greeter_callback_server.cc +++ b/examples/cpp/otel/greeter_callback_server.cc @@ -33,9 +33,11 @@ #include #ifdef BAZEL_BUILD +#include "examples/cpp/otel/util.h" #include "examples/protos/helloworld.grpc.pb.h" #else #include "helloworld.grpc.pb.h" +#include "util.h" #endif ABSL_FLAG(uint16_t, port, 50051, "Server port for the service"); @@ -96,6 +98,10 @@ int main(int argc, char** argv) { opentelemetry::exporter::metrics::PrometheusExporterFactory::Create(opts); auto meter_provider = std::make_shared(); + // The default histogram boundaries are not granular enough for RPCs. Override + // the "grpc.server.call.duration" view as recommended by + // https://github.com/grpc/proposal/blob/master/A66-otel-stats.md. + AddLatencyView(meter_provider.get(), "grpc.server.call.duration", "s"); meter_provider->AddMetricReader(std::move(prometheus_exporter)); auto status = grpc::OpenTelemetryPluginBuilder() .SetMeterProvider(std::move(meter_provider)) diff --git a/examples/cpp/otel/util.cc b/examples/cpp/otel/util.cc new file mode 100644 index 00000000000..8777481ea00 --- /dev/null +++ b/examples/cpp/otel/util.cc @@ -0,0 +1,50 @@ +// +// +// Copyright 2024 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. +// +// + +#ifdef BAZEL_BUILD +#include "examples/cpp/otel/util.h" +#else +#include "util.h" +#endif + +#include "opentelemetry/sdk/metrics/view/instrument_selector_factory.h" +#include "opentelemetry/sdk/metrics/view/meter_selector_factory.h" +#include "opentelemetry/sdk/metrics/view/view_factory.h" + +#include + +void AddLatencyView(opentelemetry::sdk::metrics::MeterProvider* provider, + const std::string& name, const std::string& unit) { + auto histogram_config = std::make_shared< + opentelemetry::sdk::metrics::HistogramAggregationConfig>(); + histogram_config->boundaries_ = { + 0, 0.00001, 0.00005, 0.0001, 0.0003, 0.0006, 0.0008, 0.001, 0.002, + 0.003, 0.004, 0.005, 0.006, 0.008, 0.01, 0.013, 0.016, 0.02, + 0.025, 0.03, 0.04, 0.05, 0.065, 0.08, 0.1, 0.13, 0.16, + 0.2, 0.25, 0.3, 0.4, 0.5, 0.65, 0.8, 1, 2, + 5, 10, 20, 50, 100}; + provider->AddView( + opentelemetry::sdk::metrics::InstrumentSelectorFactory::Create( + opentelemetry::sdk::metrics::InstrumentType::kHistogram, name, unit), + opentelemetry::sdk::metrics::MeterSelectorFactory::Create( + "grpc-c++", grpc::Version(), ""), + opentelemetry::sdk::metrics::ViewFactory::Create( + name, "", unit, + opentelemetry::sdk::metrics::AggregationType::kHistogram, + std::move(histogram_config))); +} diff --git a/examples/cpp/otel/util.h b/examples/cpp/otel/util.h new file mode 100644 index 00000000000..4fe1681b4fa --- /dev/null +++ b/examples/cpp/otel/util.h @@ -0,0 +1,31 @@ +// +// +// Copyright 2024 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. +// +// + +#ifndef GRPCPP_EXAMPLES_CPP_OTEL_UTIL_H +#define GRPCPP_EXAMPLES_CPP_OTEL_UTIL_H + +#include + +#include "opentelemetry/sdk/metrics/meter_provider.h" + +// Helper function that adds view for gRPC latency instrument \a name with unit +// \a unit with bucket boundaries that are more useful for RPCs. +void AddLatencyView(opentelemetry::sdk::metrics::MeterProvider* provider, + const std::string& name, const std::string& unit); + +#endif // GRPCPP_EXAMPLES_CPP_OTEL_UTIL_H diff --git a/examples/python/helloworld/helloworld_pb2.py b/examples/python/helloworld/helloworld_pb2.py index 0e202a09116..88f8715f997 100644 --- a/examples/python/helloworld/helloworld_pb2.py +++ b/examples/python/helloworld/helloworld_pb2.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! # source: helloworld.proto -# Protobuf Python Version: 4.25.1 +# Protobuf Python Version: 5.26.1 """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool @@ -19,8 +19,8 @@ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x10helloworld.pro _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'helloworld_pb2', _globals) -if _descriptor._USE_C_DESCRIPTORS == False: - _globals['DESCRIPTOR']._options = None +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None _globals['DESCRIPTOR']._serialized_options = b'\n\033io.grpc.examples.helloworldB\017HelloWorldProtoP\001\242\002\003HLW' _globals['_HELLOREQUEST']._serialized_start=32 _globals['_HELLOREQUEST']._serialized_end=60 diff --git a/examples/python/helloworld/helloworld_pb2_grpc.py b/examples/python/helloworld/helloworld_pb2_grpc.py index 48ad1004f9b..a991c8fd3f3 100644 --- a/examples/python/helloworld/helloworld_pb2_grpc.py +++ b/examples/python/helloworld/helloworld_pb2_grpc.py @@ -5,7 +5,7 @@ import warnings import helloworld_pb2 as helloworld__pb2 -GRPC_GENERATED_VERSION = '1.63.0.dev0' +GRPC_GENERATED_VERSION = '1.64.0.dev0' GRPC_VERSION = grpc.__version__ EXPECTED_ERROR_RELEASE = '1.65.0' SCHEDULED_RELEASE_DATE = 'June 25, 2024' @@ -102,6 +102,7 @@ def add_GreeterServicer_to_server(servicer, server): generic_handler = grpc.method_handlers_generic_handler( 'helloworld.Greeter', rpc_method_handlers) server.add_generic_rpc_handlers((generic_handler,)) + server.add_registered_method_handlers('helloworld.Greeter', rpc_method_handlers) # This class is part of an EXPERIMENTAL API. diff --git a/examples/python/observability/requirements.txt b/examples/python/observability/requirements.txt index f7997817571..cb2d4d4b904 100644 --- a/examples/python/observability/requirements.txt +++ b/examples/python/observability/requirements.txt @@ -1,3 +1,3 @@ grpcio>=1.62.0 grpcio-observability>=1.62.0 -opentelemetry-sdk==1.21.0 +opentelemetry-sdk>=1.21.0 diff --git a/gRPC-C++.podspec b/gRPC-C++.podspec index 9114af3c0d9..457103324f9 100644 --- a/gRPC-C++.podspec +++ b/gRPC-C++.podspec @@ -22,7 +22,7 @@ Pod::Spec.new do |s| s.name = 'gRPC-C++' # TODO (mxyan): use version that match gRPC version when pod is stabilized - version = '1.64.0-dev' + version = '1.65.0-dev' s.version = version s.summary = 'gRPC C++ library' s.homepage = 'https://grpc.io' @@ -38,6 +38,7 @@ Pod::Spec.new do |s| s.osx.deployment_target = '10.12' s.tvos.deployment_target = '12.0' s.watchos.deployment_target = '6.0' + s.visionos.deployment_target = '1.0' s.requires_arc = false @@ -175,6 +176,7 @@ Pod::Spec.new do |s| 'include/grpcpp/impl/service_type.h', 'include/grpcpp/impl/status.h', 'include/grpcpp/impl/sync.h', + 'include/grpcpp/passive_listener.h', 'include/grpcpp/resource_quota.h', 'include/grpcpp/security/audit_logging.h', 'include/grpcpp/security/auth_context.h', @@ -225,7 +227,7 @@ Pod::Spec.new do |s| ss.dependency "#{s.name}/Privacy", version ss.dependency "#{s.name}/Interface", version ss.dependency 'gRPC-Core', version - abseil_version = '1.20240116.1' + abseil_version = '~> 1.20240116.2' ss.dependency 'abseil/algorithm/container', abseil_version ss.dependency 'abseil/base/base', abseil_version ss.dependency 'abseil/base/config', abseil_version @@ -242,6 +244,8 @@ Pod::Spec.new do |s| ss.dependency 'abseil/functional/bind_front', abseil_version ss.dependency 'abseil/functional/function_ref', abseil_version ss.dependency 'abseil/hash/hash', abseil_version + ss.dependency 'abseil/log/check', abseil_version + ss.dependency 'abseil/log/globals', abseil_version ss.dependency 'abseil/log/log', abseil_version ss.dependency 'abseil/memory/memory', abseil_version ss.dependency 'abseil/meta/type_traits', abseil_version @@ -260,8 +264,10 @@ Pod::Spec.new do |s| ss.dependency 'abseil/types/variant', abseil_version ss.dependency 'abseil/utility/utility', abseil_version - ss.source_files = 'src/core/client_channel/backup_poller.h', - 'src/core/client_channel/client_channel_channelz.h', + ss.source_files = 'src/core/channelz/channel_trace.h', + 'src/core/channelz/channelz.h', + 'src/core/channelz/channelz_registry.h', + 'src/core/client_channel/backup_poller.h', 'src/core/client_channel/client_channel_factory.h', 'src/core/client_channel/client_channel_filter.h', 'src/core/client_channel/client_channel_internal.h', @@ -270,7 +276,6 @@ Pod::Spec.new do |s| 'src/core/client_channel/connector.h', 'src/core/client_channel/dynamic_filters.h', 'src/core/client_channel/global_subchannel_pool.h', - 'src/core/client_channel/http_proxy_mapper.h', 'src/core/client_channel/local_subchannel_pool.h', 'src/core/client_channel/retry_filter.h', 'src/core/client_channel/retry_filter_legacy_call_data.h', @@ -284,7 +289,6 @@ Pod::Spec.new do |s| 'src/core/ext/filters/backend_metrics/backend_metric_provider.h', 'src/core/ext/filters/channel_idle/idle_filter_state.h', 'src/core/ext/filters/channel_idle/legacy_channel_idle_filter.h', - 'src/core/ext/filters/deadline/deadline_filter.h', 'src/core/ext/filters/fault_injection/fault_injection_filter.h', 'src/core/ext/filters/fault_injection/fault_injection_service_config_parser.h', 'src/core/ext/filters/http/client/http_client_filter.h', @@ -294,8 +298,6 @@ Pod::Spec.new do |s| 'src/core/ext/filters/message_size/message_size_filter.h', 'src/core/ext/filters/rbac/rbac_filter.h', 'src/core/ext/filters/rbac/rbac_service_config_parser.h', - 'src/core/ext/filters/server_config_selector/server_config_selector.h', - 'src/core/ext/filters/server_config_selector/server_config_selector_filter.h', 'src/core/ext/filters/stateful_session/stateful_session_filter.h', 'src/core/ext/filters/stateful_session/stateful_session_service_config_parser.h', 'src/core/ext/gcp/metadata_query.h', @@ -854,38 +856,18 @@ Pod::Spec.new do |s| 'src/core/ext/upbdefs-gen/xds/type/v3/cel.upbdefs.h', 'src/core/ext/upbdefs-gen/xds/type/v3/range.upbdefs.h', 'src/core/ext/upbdefs-gen/xds/type/v3/typed_struct.upbdefs.h', - 'src/core/ext/xds/certificate_provider_store.h', - 'src/core/ext/xds/file_watcher_certificate_provider_factory.h', - 'src/core/ext/xds/upb_utils.h', - 'src/core/ext/xds/xds_api.h', - 'src/core/ext/xds/xds_audit_logger_registry.h', - 'src/core/ext/xds/xds_bootstrap.h', - 'src/core/ext/xds/xds_bootstrap_grpc.h', - 'src/core/ext/xds/xds_certificate_provider.h', - 'src/core/ext/xds/xds_channel_args.h', - 'src/core/ext/xds/xds_channel_stack_modifier.h', - 'src/core/ext/xds/xds_client.h', - 'src/core/ext/xds/xds_client_grpc.h', - 'src/core/ext/xds/xds_client_stats.h', - 'src/core/ext/xds/xds_cluster.h', - 'src/core/ext/xds/xds_cluster_specifier_plugin.h', - 'src/core/ext/xds/xds_common_types.h', - 'src/core/ext/xds/xds_enabled_server.h', - 'src/core/ext/xds/xds_endpoint.h', - 'src/core/ext/xds/xds_health_status.h', - 'src/core/ext/xds/xds_http_fault_filter.h', - 'src/core/ext/xds/xds_http_filters.h', - 'src/core/ext/xds/xds_http_rbac_filter.h', - 'src/core/ext/xds/xds_http_stateful_session_filter.h', - 'src/core/ext/xds/xds_lb_policy_registry.h', - 'src/core/ext/xds/xds_listener.h', - 'src/core/ext/xds/xds_metrics.h', - 'src/core/ext/xds/xds_resource_type.h', - 'src/core/ext/xds/xds_resource_type_impl.h', - 'src/core/ext/xds/xds_route_config.h', - 'src/core/ext/xds/xds_routing.h', - 'src/core/ext/xds/xds_transport.h', - 'src/core/ext/xds/xds_transport_grpc.h', + 'src/core/handshaker/endpoint_info/endpoint_info_handshaker.h', + 'src/core/handshaker/handshaker.h', + 'src/core/handshaker/handshaker_factory.h', + 'src/core/handshaker/handshaker_registry.h', + 'src/core/handshaker/http_connect/http_connect_handshaker.h', + 'src/core/handshaker/http_connect/http_proxy_mapper.h', + 'src/core/handshaker/proxy_mapper.h', + 'src/core/handshaker/proxy_mapper_registry.h', + 'src/core/handshaker/security/secure_endpoint.h', + 'src/core/handshaker/security/security_handshaker.h', + 'src/core/handshaker/security/tsi_error.h', + 'src/core/handshaker/tcp_connect/tcp_connect_handshaker.h', 'src/core/lib/address_utils/parse_address.h', 'src/core/lib/address_utils/sockaddr_utils.h', 'src/core/lib/avl/avl.h', @@ -900,14 +882,10 @@ Pod::Spec.new do |s| 'src/core/lib/channel/channel_stack_builder.h', 'src/core/lib/channel/channel_stack_builder_impl.h', 'src/core/lib/channel/channel_stack_trace.h', - 'src/core/lib/channel/channel_trace.h', - 'src/core/lib/channel/channelz.h', - 'src/core/lib/channel/channelz_registry.h', 'src/core/lib/channel/connected_channel.h', 'src/core/lib/channel/context.h', 'src/core/lib/channel/metrics.h', 'src/core/lib/channel/promise_based_filter.h', - 'src/core/lib/channel/server_call_tracer_filter.h', 'src/core/lib/channel/status_util.h', 'src/core/lib/channel/tcp_tracer.h', 'src/core/lib/compression/compression_internal.h', @@ -986,13 +964,6 @@ Pod::Spec.new do |s| 'src/core/lib/event_engine/work_queue/work_queue.h', 'src/core/lib/experiments/config.h', 'src/core/lib/experiments/experiments.h', - 'src/core/lib/gpr/alloc.h', - 'src/core/lib/gpr/log_internal.h', - 'src/core/lib/gpr/spinlock.h', - 'src/core/lib/gpr/string.h', - 'src/core/lib/gpr/time_precise.h', - 'src/core/lib/gpr/tmpfile.h', - 'src/core/lib/gpr/useful.h', 'src/core/lib/gprpp/atomic_utils.h', 'src/core/lib/gprpp/bitset.h', 'src/core/lib/gprpp/chunked_vector.h', @@ -1040,8 +1011,6 @@ Pod::Spec.new do |s| 'src/core/lib/gprpp/validation_errors.h', 'src/core/lib/gprpp/work_serializer.h', 'src/core/lib/gprpp/xxhash_inline.h', - 'src/core/lib/handshaker/proxy_mapper.h', - 'src/core/lib/handshaker/proxy_mapper_registry.h', 'src/core/lib/http/format_request.h', 'src/core/lib/http/httpcli.h', 'src/core/lib/http/httpcli_ssl_credentials.h', @@ -1211,9 +1180,6 @@ Pod::Spec.new do |s| 'src/core/lib/security/security_connector/ssl_utils.h', 'src/core/lib/security/security_connector/tls/tls_security_connector.h', 'src/core/lib/security/transport/auth_filters.h', - 'src/core/lib/security/transport/secure_endpoint.h', - 'src/core/lib/security/transport/security_handshaker.h', - 'src/core/lib/security/transport/tsi_error.h', 'src/core/lib/security/util/json_util.h', 'src/core/lib/slice/percent_encoding.h', 'src/core/lib/slice/slice.h', @@ -1236,25 +1202,20 @@ Pod::Spec.new do |s| 'src/core/lib/surface/init_internally.h', 'src/core/lib/surface/lame_client.h', 'src/core/lib/surface/legacy_channel.h', - 'src/core/lib/surface/server.h', - 'src/core/lib/surface/server_interface.h', 'src/core/lib/surface/validate_metadata.h', 'src/core/lib/surface/wait_for_cq_end_op.h', 'src/core/lib/transport/batch_builder.h', 'src/core/lib/transport/bdp_estimator.h', + 'src/core/lib/transport/call_arena_allocator.h', + 'src/core/lib/transport/call_destination.h', 'src/core/lib/transport/call_filters.h', 'src/core/lib/transport/call_final_info.h', - 'src/core/lib/transport/call_size_estimator.h', 'src/core/lib/transport/call_spine.h', 'src/core/lib/transport/connectivity_state.h', 'src/core/lib/transport/custom_metadata.h', - 'src/core/lib/transport/endpoint_info_handshaker.h', 'src/core/lib/transport/error_utils.h', - 'src/core/lib/transport/handshaker.h', - 'src/core/lib/transport/handshaker_factory.h', - 'src/core/lib/transport/handshaker_registry.h', 'src/core/lib/transport/http2_errors.h', - 'src/core/lib/transport/http_connect_handshaker.h', + 'src/core/lib/transport/interception_chain.h', 'src/core/lib/transport/message.h', 'src/core/lib/transport/metadata.h', 'src/core/lib/transport/metadata_batch.h', @@ -1263,7 +1224,6 @@ Pod::Spec.new do |s| 'src/core/lib/transport/parsed_metadata.h', 'src/core/lib/transport/simple_slice_based_metadata.h', 'src/core/lib/transport/status_conversion.h', - 'src/core/lib/transport/tcp_connect_handshaker.h', 'src/core/lib/transport/timeout_encoding.h', 'src/core/lib/transport/transport.h', 'src/core/lib/transport/transport_fwd.h', @@ -1312,6 +1272,12 @@ Pod::Spec.new do |s| 'src/core/resolver/xds/xds_dependency_manager.h', 'src/core/resolver/xds/xds_resolver_attributes.h', 'src/core/resolver/xds/xds_resolver_trace.h', + 'src/core/server/server.h', + 'src/core/server/server_call_tracer_filter.h', + 'src/core/server/server_config_selector.h', + 'src/core/server/server_config_selector_filter.h', + 'src/core/server/server_interface.h', + 'src/core/server/xds_channel_stack_modifier.h', 'src/core/service_config/service_config.h', 'src/core/service_config/service_config_call_data.h', 'src/core/service_config/service_config_impl.h', @@ -1345,6 +1311,43 @@ Pod::Spec.new do |s| 'src/core/tsi/transport_security.h', 'src/core/tsi/transport_security_grpc.h', 'src/core/tsi/transport_security_interface.h', + 'src/core/util/alloc.h', + 'src/core/util/spinlock.h', + 'src/core/util/string.h', + 'src/core/util/time_precise.h', + 'src/core/util/tmpfile.h', + 'src/core/util/useful.h', + 'src/core/xds/grpc/certificate_provider_store.h', + 'src/core/xds/grpc/file_watcher_certificate_provider_factory.h', + 'src/core/xds/grpc/upb_utils.h', + 'src/core/xds/grpc/xds_audit_logger_registry.h', + 'src/core/xds/grpc/xds_bootstrap_grpc.h', + 'src/core/xds/grpc/xds_certificate_provider.h', + 'src/core/xds/grpc/xds_client_grpc.h', + 'src/core/xds/grpc/xds_cluster.h', + 'src/core/xds/grpc/xds_cluster_specifier_plugin.h', + 'src/core/xds/grpc/xds_common_types.h', + 'src/core/xds/grpc/xds_enabled_server.h', + 'src/core/xds/grpc/xds_endpoint.h', + 'src/core/xds/grpc/xds_health_status.h', + 'src/core/xds/grpc/xds_http_fault_filter.h', + 'src/core/xds/grpc/xds_http_filters.h', + 'src/core/xds/grpc/xds_http_rbac_filter.h', + 'src/core/xds/grpc/xds_http_stateful_session_filter.h', + 'src/core/xds/grpc/xds_lb_policy_registry.h', + 'src/core/xds/grpc/xds_listener.h', + 'src/core/xds/grpc/xds_route_config.h', + 'src/core/xds/grpc/xds_routing.h', + 'src/core/xds/grpc/xds_transport_grpc.h', + 'src/core/xds/xds_client/xds_api.h', + 'src/core/xds/xds_client/xds_bootstrap.h', + 'src/core/xds/xds_client/xds_channel_args.h', + 'src/core/xds/xds_client/xds_client.h', + 'src/core/xds/xds_client/xds_client_stats.h', + 'src/core/xds/xds_client/xds_metrics.h', + 'src/core/xds/xds_client/xds_resource_type.h', + 'src/core/xds/xds_client/xds_resource_type_impl.h', + 'src/core/xds/xds_client/xds_transport.h', 'src/cpp/client/call_credentials.cc', 'src/cpp/client/channel_cc.cc', 'src/cpp/client/channel_credentials.cc', @@ -1550,8 +1553,10 @@ Pod::Spec.new do |s| 'third_party/zlib/zlib.h', 'third_party/zlib/zutil.h' - ss.private_header_files = 'src/core/client_channel/backup_poller.h', - 'src/core/client_channel/client_channel_channelz.h', + ss.private_header_files = 'src/core/channelz/channel_trace.h', + 'src/core/channelz/channelz.h', + 'src/core/channelz/channelz_registry.h', + 'src/core/client_channel/backup_poller.h', 'src/core/client_channel/client_channel_factory.h', 'src/core/client_channel/client_channel_filter.h', 'src/core/client_channel/client_channel_internal.h', @@ -1560,7 +1565,6 @@ Pod::Spec.new do |s| 'src/core/client_channel/connector.h', 'src/core/client_channel/dynamic_filters.h', 'src/core/client_channel/global_subchannel_pool.h', - 'src/core/client_channel/http_proxy_mapper.h', 'src/core/client_channel/local_subchannel_pool.h', 'src/core/client_channel/retry_filter.h', 'src/core/client_channel/retry_filter_legacy_call_data.h', @@ -1574,7 +1578,6 @@ Pod::Spec.new do |s| 'src/core/ext/filters/backend_metrics/backend_metric_provider.h', 'src/core/ext/filters/channel_idle/idle_filter_state.h', 'src/core/ext/filters/channel_idle/legacy_channel_idle_filter.h', - 'src/core/ext/filters/deadline/deadline_filter.h', 'src/core/ext/filters/fault_injection/fault_injection_filter.h', 'src/core/ext/filters/fault_injection/fault_injection_service_config_parser.h', 'src/core/ext/filters/http/client/http_client_filter.h', @@ -1584,8 +1587,6 @@ Pod::Spec.new do |s| 'src/core/ext/filters/message_size/message_size_filter.h', 'src/core/ext/filters/rbac/rbac_filter.h', 'src/core/ext/filters/rbac/rbac_service_config_parser.h', - 'src/core/ext/filters/server_config_selector/server_config_selector.h', - 'src/core/ext/filters/server_config_selector/server_config_selector_filter.h', 'src/core/ext/filters/stateful_session/stateful_session_filter.h', 'src/core/ext/filters/stateful_session/stateful_session_service_config_parser.h', 'src/core/ext/gcp/metadata_query.h', @@ -2126,38 +2127,18 @@ Pod::Spec.new do |s| 'src/core/ext/upbdefs-gen/xds/type/v3/cel.upbdefs.h', 'src/core/ext/upbdefs-gen/xds/type/v3/range.upbdefs.h', 'src/core/ext/upbdefs-gen/xds/type/v3/typed_struct.upbdefs.h', - 'src/core/ext/xds/certificate_provider_store.h', - 'src/core/ext/xds/file_watcher_certificate_provider_factory.h', - 'src/core/ext/xds/upb_utils.h', - 'src/core/ext/xds/xds_api.h', - 'src/core/ext/xds/xds_audit_logger_registry.h', - 'src/core/ext/xds/xds_bootstrap.h', - 'src/core/ext/xds/xds_bootstrap_grpc.h', - 'src/core/ext/xds/xds_certificate_provider.h', - 'src/core/ext/xds/xds_channel_args.h', - 'src/core/ext/xds/xds_channel_stack_modifier.h', - 'src/core/ext/xds/xds_client.h', - 'src/core/ext/xds/xds_client_grpc.h', - 'src/core/ext/xds/xds_client_stats.h', - 'src/core/ext/xds/xds_cluster.h', - 'src/core/ext/xds/xds_cluster_specifier_plugin.h', - 'src/core/ext/xds/xds_common_types.h', - 'src/core/ext/xds/xds_enabled_server.h', - 'src/core/ext/xds/xds_endpoint.h', - 'src/core/ext/xds/xds_health_status.h', - 'src/core/ext/xds/xds_http_fault_filter.h', - 'src/core/ext/xds/xds_http_filters.h', - 'src/core/ext/xds/xds_http_rbac_filter.h', - 'src/core/ext/xds/xds_http_stateful_session_filter.h', - 'src/core/ext/xds/xds_lb_policy_registry.h', - 'src/core/ext/xds/xds_listener.h', - 'src/core/ext/xds/xds_metrics.h', - 'src/core/ext/xds/xds_resource_type.h', - 'src/core/ext/xds/xds_resource_type_impl.h', - 'src/core/ext/xds/xds_route_config.h', - 'src/core/ext/xds/xds_routing.h', - 'src/core/ext/xds/xds_transport.h', - 'src/core/ext/xds/xds_transport_grpc.h', + 'src/core/handshaker/endpoint_info/endpoint_info_handshaker.h', + 'src/core/handshaker/handshaker.h', + 'src/core/handshaker/handshaker_factory.h', + 'src/core/handshaker/handshaker_registry.h', + 'src/core/handshaker/http_connect/http_connect_handshaker.h', + 'src/core/handshaker/http_connect/http_proxy_mapper.h', + 'src/core/handshaker/proxy_mapper.h', + 'src/core/handshaker/proxy_mapper_registry.h', + 'src/core/handshaker/security/secure_endpoint.h', + 'src/core/handshaker/security/security_handshaker.h', + 'src/core/handshaker/security/tsi_error.h', + 'src/core/handshaker/tcp_connect/tcp_connect_handshaker.h', 'src/core/lib/address_utils/parse_address.h', 'src/core/lib/address_utils/sockaddr_utils.h', 'src/core/lib/avl/avl.h', @@ -2172,14 +2153,10 @@ Pod::Spec.new do |s| 'src/core/lib/channel/channel_stack_builder.h', 'src/core/lib/channel/channel_stack_builder_impl.h', 'src/core/lib/channel/channel_stack_trace.h', - 'src/core/lib/channel/channel_trace.h', - 'src/core/lib/channel/channelz.h', - 'src/core/lib/channel/channelz_registry.h', 'src/core/lib/channel/connected_channel.h', 'src/core/lib/channel/context.h', 'src/core/lib/channel/metrics.h', 'src/core/lib/channel/promise_based_filter.h', - 'src/core/lib/channel/server_call_tracer_filter.h', 'src/core/lib/channel/status_util.h', 'src/core/lib/channel/tcp_tracer.h', 'src/core/lib/compression/compression_internal.h', @@ -2258,13 +2235,6 @@ Pod::Spec.new do |s| 'src/core/lib/event_engine/work_queue/work_queue.h', 'src/core/lib/experiments/config.h', 'src/core/lib/experiments/experiments.h', - 'src/core/lib/gpr/alloc.h', - 'src/core/lib/gpr/log_internal.h', - 'src/core/lib/gpr/spinlock.h', - 'src/core/lib/gpr/string.h', - 'src/core/lib/gpr/time_precise.h', - 'src/core/lib/gpr/tmpfile.h', - 'src/core/lib/gpr/useful.h', 'src/core/lib/gprpp/atomic_utils.h', 'src/core/lib/gprpp/bitset.h', 'src/core/lib/gprpp/chunked_vector.h', @@ -2312,8 +2282,6 @@ Pod::Spec.new do |s| 'src/core/lib/gprpp/validation_errors.h', 'src/core/lib/gprpp/work_serializer.h', 'src/core/lib/gprpp/xxhash_inline.h', - 'src/core/lib/handshaker/proxy_mapper.h', - 'src/core/lib/handshaker/proxy_mapper_registry.h', 'src/core/lib/http/format_request.h', 'src/core/lib/http/httpcli.h', 'src/core/lib/http/httpcli_ssl_credentials.h', @@ -2483,9 +2451,6 @@ Pod::Spec.new do |s| 'src/core/lib/security/security_connector/ssl_utils.h', 'src/core/lib/security/security_connector/tls/tls_security_connector.h', 'src/core/lib/security/transport/auth_filters.h', - 'src/core/lib/security/transport/secure_endpoint.h', - 'src/core/lib/security/transport/security_handshaker.h', - 'src/core/lib/security/transport/tsi_error.h', 'src/core/lib/security/util/json_util.h', 'src/core/lib/slice/percent_encoding.h', 'src/core/lib/slice/slice.h', @@ -2508,25 +2473,20 @@ Pod::Spec.new do |s| 'src/core/lib/surface/init_internally.h', 'src/core/lib/surface/lame_client.h', 'src/core/lib/surface/legacy_channel.h', - 'src/core/lib/surface/server.h', - 'src/core/lib/surface/server_interface.h', 'src/core/lib/surface/validate_metadata.h', 'src/core/lib/surface/wait_for_cq_end_op.h', 'src/core/lib/transport/batch_builder.h', 'src/core/lib/transport/bdp_estimator.h', + 'src/core/lib/transport/call_arena_allocator.h', + 'src/core/lib/transport/call_destination.h', 'src/core/lib/transport/call_filters.h', 'src/core/lib/transport/call_final_info.h', - 'src/core/lib/transport/call_size_estimator.h', 'src/core/lib/transport/call_spine.h', 'src/core/lib/transport/connectivity_state.h', 'src/core/lib/transport/custom_metadata.h', - 'src/core/lib/transport/endpoint_info_handshaker.h', 'src/core/lib/transport/error_utils.h', - 'src/core/lib/transport/handshaker.h', - 'src/core/lib/transport/handshaker_factory.h', - 'src/core/lib/transport/handshaker_registry.h', 'src/core/lib/transport/http2_errors.h', - 'src/core/lib/transport/http_connect_handshaker.h', + 'src/core/lib/transport/interception_chain.h', 'src/core/lib/transport/message.h', 'src/core/lib/transport/metadata.h', 'src/core/lib/transport/metadata_batch.h', @@ -2535,7 +2495,6 @@ Pod::Spec.new do |s| 'src/core/lib/transport/parsed_metadata.h', 'src/core/lib/transport/simple_slice_based_metadata.h', 'src/core/lib/transport/status_conversion.h', - 'src/core/lib/transport/tcp_connect_handshaker.h', 'src/core/lib/transport/timeout_encoding.h', 'src/core/lib/transport/transport.h', 'src/core/lib/transport/transport_fwd.h', @@ -2584,6 +2543,12 @@ Pod::Spec.new do |s| 'src/core/resolver/xds/xds_dependency_manager.h', 'src/core/resolver/xds/xds_resolver_attributes.h', 'src/core/resolver/xds/xds_resolver_trace.h', + 'src/core/server/server.h', + 'src/core/server/server_call_tracer_filter.h', + 'src/core/server/server_config_selector.h', + 'src/core/server/server_config_selector_filter.h', + 'src/core/server/server_interface.h', + 'src/core/server/xds_channel_stack_modifier.h', 'src/core/service_config/service_config.h', 'src/core/service_config/service_config_call_data.h', 'src/core/service_config/service_config_impl.h', @@ -2617,6 +2582,43 @@ Pod::Spec.new do |s| 'src/core/tsi/transport_security.h', 'src/core/tsi/transport_security_grpc.h', 'src/core/tsi/transport_security_interface.h', + 'src/core/util/alloc.h', + 'src/core/util/spinlock.h', + 'src/core/util/string.h', + 'src/core/util/time_precise.h', + 'src/core/util/tmpfile.h', + 'src/core/util/useful.h', + 'src/core/xds/grpc/certificate_provider_store.h', + 'src/core/xds/grpc/file_watcher_certificate_provider_factory.h', + 'src/core/xds/grpc/upb_utils.h', + 'src/core/xds/grpc/xds_audit_logger_registry.h', + 'src/core/xds/grpc/xds_bootstrap_grpc.h', + 'src/core/xds/grpc/xds_certificate_provider.h', + 'src/core/xds/grpc/xds_client_grpc.h', + 'src/core/xds/grpc/xds_cluster.h', + 'src/core/xds/grpc/xds_cluster_specifier_plugin.h', + 'src/core/xds/grpc/xds_common_types.h', + 'src/core/xds/grpc/xds_enabled_server.h', + 'src/core/xds/grpc/xds_endpoint.h', + 'src/core/xds/grpc/xds_health_status.h', + 'src/core/xds/grpc/xds_http_fault_filter.h', + 'src/core/xds/grpc/xds_http_filters.h', + 'src/core/xds/grpc/xds_http_rbac_filter.h', + 'src/core/xds/grpc/xds_http_stateful_session_filter.h', + 'src/core/xds/grpc/xds_lb_policy_registry.h', + 'src/core/xds/grpc/xds_listener.h', + 'src/core/xds/grpc/xds_route_config.h', + 'src/core/xds/grpc/xds_routing.h', + 'src/core/xds/grpc/xds_transport_grpc.h', + 'src/core/xds/xds_client/xds_api.h', + 'src/core/xds/xds_client/xds_bootstrap.h', + 'src/core/xds/xds_client/xds_channel_args.h', + 'src/core/xds/xds_client/xds_client.h', + 'src/core/xds/xds_client/xds_client_stats.h', + 'src/core/xds/xds_client/xds_metrics.h', + 'src/core/xds/xds_client/xds_resource_type.h', + 'src/core/xds/xds_client/xds_resource_type_impl.h', + 'src/core/xds/xds_client/xds_transport.h', 'src/cpp/client/client_stats_interceptor.h', 'src/cpp/client/create_channel_internal.h', 'src/cpp/client/secure_credentials.h', diff --git a/gRPC-Core.podspec b/gRPC-Core.podspec index 1624bceaeb2..2d2af17efc5 100644 --- a/gRPC-Core.podspec +++ b/gRPC-Core.podspec @@ -21,7 +21,7 @@ Pod::Spec.new do |s| s.name = 'gRPC-Core' - version = '1.64.0-dev' + version = '1.65.0-dev' s.version = version s.summary = 'Core cross-platform gRPC library, written in C' s.homepage = 'https://grpc.io' @@ -42,11 +42,12 @@ Pod::Spec.new do |s| s.osx.deployment_target = '10.12' s.tvos.deployment_target = '12.0' s.watchos.deployment_target = '6.0' + s.visionos.deployment_target = '1.0' s.requires_arc = false name = 'grpc' - abseil_version = '1.20240116.1' + abseil_version = '~> 1.20240116.2' # When creating a dynamic framework, name it grpc.framework instead of gRPC-Core.framework. # This lets users write their includes like `#include ` as opposed to `#include @@ -81,7 +82,7 @@ Pod::Spec.new do |s| ' "$(PODS_TARGET_SRCROOT)/third_party/utf8_range"'\ ' "$(PODS_TARGET_SRCROOT)/third_party/xxhash"', # If we don't set these two settings, `include/grpc/support/time.h` and - # `src/core/lib/gpr/string.h` shadow the system `` and ``, breaking the + # `src/core/util/string.h` shadow the system `` and ``, breaking the # build. 'USE_HEADERMAP' => 'NO', 'ALWAYS_SEARCH_USER_PATHS' => 'NO', @@ -167,6 +168,7 @@ Pod::Spec.new do |s| 'include/grpc/impl/propagation_bits.h', 'include/grpc/impl/slice_type.h', 'include/grpc/load_reporting.h', + 'include/grpc/passive_listener.h', 'include/grpc/slice.h', 'include/grpc/slice_buffer.h', 'include/grpc/status.h', @@ -197,7 +199,7 @@ Pod::Spec.new do |s| ss.libraries = 'z' ss.dependency "#{s.name}/Interface", version ss.dependency "#{s.name}/Privacy", version - ss.dependency 'BoringSSL-GRPC', '0.0.33' + ss.dependency 'BoringSSL-GRPC', '0.0.34' ss.dependency 'abseil/algorithm/container', abseil_version ss.dependency 'abseil/base/base', abseil_version ss.dependency 'abseil/base/config', abseil_version @@ -214,6 +216,8 @@ Pod::Spec.new do |s| ss.dependency 'abseil/functional/bind_front', abseil_version ss.dependency 'abseil/functional/function_ref', abseil_version ss.dependency 'abseil/hash/hash', abseil_version + ss.dependency 'abseil/log/check', abseil_version + ss.dependency 'abseil/log/globals', abseil_version ss.dependency 'abseil/log/log', abseil_version ss.dependency 'abseil/memory/memory', abseil_version ss.dependency 'abseil/meta/type_traits', abseil_version @@ -233,10 +237,14 @@ Pod::Spec.new do |s| ss.dependency 'abseil/utility/utility', abseil_version ss.compiler_flags = '-DBORINGSSL_PREFIX=GRPC -Wno-unreachable-code -Wno-shorten-64-to-32' - ss.source_files = 'src/core/client_channel/backup_poller.cc', + ss.source_files = 'src/core/channelz/channel_trace.cc', + 'src/core/channelz/channel_trace.h', + 'src/core/channelz/channelz.cc', + 'src/core/channelz/channelz.h', + 'src/core/channelz/channelz_registry.cc', + 'src/core/channelz/channelz_registry.h', + 'src/core/client_channel/backup_poller.cc', 'src/core/client_channel/backup_poller.h', - 'src/core/client_channel/client_channel_channelz.cc', - 'src/core/client_channel/client_channel_channelz.h', 'src/core/client_channel/client_channel_factory.cc', 'src/core/client_channel/client_channel_factory.h', 'src/core/client_channel/client_channel_filter.cc', @@ -252,8 +260,6 @@ Pod::Spec.new do |s| 'src/core/client_channel/dynamic_filters.h', 'src/core/client_channel/global_subchannel_pool.cc', 'src/core/client_channel/global_subchannel_pool.h', - 'src/core/client_channel/http_proxy_mapper.cc', - 'src/core/client_channel/http_proxy_mapper.h', 'src/core/client_channel/local_subchannel_pool.cc', 'src/core/client_channel/local_subchannel_pool.h', 'src/core/client_channel/retry_filter.cc', @@ -279,8 +285,6 @@ Pod::Spec.new do |s| 'src/core/ext/filters/channel_idle/idle_filter_state.h', 'src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc', 'src/core/ext/filters/channel_idle/legacy_channel_idle_filter.h', - 'src/core/ext/filters/deadline/deadline_filter.cc', - 'src/core/ext/filters/deadline/deadline_filter.h', 'src/core/ext/filters/fault_injection/fault_injection_filter.cc', 'src/core/ext/filters/fault_injection/fault_injection_filter.h', 'src/core/ext/filters/fault_injection/fault_injection_service_config_parser.cc', @@ -300,9 +304,6 @@ Pod::Spec.new do |s| 'src/core/ext/filters/rbac/rbac_filter.h', 'src/core/ext/filters/rbac/rbac_service_config_parser.cc', 'src/core/ext/filters/rbac/rbac_service_config_parser.h', - 'src/core/ext/filters/server_config_selector/server_config_selector.h', - 'src/core/ext/filters/server_config_selector/server_config_selector_filter.cc', - 'src/core/ext/filters/server_config_selector/server_config_selector_filter.h', 'src/core/ext/filters/stateful_session/stateful_session_filter.cc', 'src/core/ext/filters/stateful_session/stateful_session_filter.h', 'src/core/ext/filters/stateful_session/stateful_session_service_config_parser.cc', @@ -1178,63 +1179,28 @@ Pod::Spec.new do |s| 'src/core/ext/upbdefs-gen/xds/type/v3/range.upbdefs.h', 'src/core/ext/upbdefs-gen/xds/type/v3/typed_struct.upbdefs.c', 'src/core/ext/upbdefs-gen/xds/type/v3/typed_struct.upbdefs.h', - 'src/core/ext/xds/certificate_provider_store.cc', - 'src/core/ext/xds/certificate_provider_store.h', - 'src/core/ext/xds/file_watcher_certificate_provider_factory.cc', - 'src/core/ext/xds/file_watcher_certificate_provider_factory.h', - 'src/core/ext/xds/upb_utils.h', - 'src/core/ext/xds/xds_api.cc', - 'src/core/ext/xds/xds_api.h', - 'src/core/ext/xds/xds_audit_logger_registry.cc', - 'src/core/ext/xds/xds_audit_logger_registry.h', - 'src/core/ext/xds/xds_bootstrap.cc', - 'src/core/ext/xds/xds_bootstrap.h', - 'src/core/ext/xds/xds_bootstrap_grpc.cc', - 'src/core/ext/xds/xds_bootstrap_grpc.h', - 'src/core/ext/xds/xds_certificate_provider.cc', - 'src/core/ext/xds/xds_certificate_provider.h', - 'src/core/ext/xds/xds_channel_args.h', - 'src/core/ext/xds/xds_channel_stack_modifier.cc', - 'src/core/ext/xds/xds_channel_stack_modifier.h', - 'src/core/ext/xds/xds_client.cc', - 'src/core/ext/xds/xds_client.h', - 'src/core/ext/xds/xds_client_grpc.cc', - 'src/core/ext/xds/xds_client_grpc.h', - 'src/core/ext/xds/xds_client_stats.cc', - 'src/core/ext/xds/xds_client_stats.h', - 'src/core/ext/xds/xds_cluster.cc', - 'src/core/ext/xds/xds_cluster.h', - 'src/core/ext/xds/xds_cluster_specifier_plugin.cc', - 'src/core/ext/xds/xds_cluster_specifier_plugin.h', - 'src/core/ext/xds/xds_common_types.cc', - 'src/core/ext/xds/xds_common_types.h', - 'src/core/ext/xds/xds_endpoint.cc', - 'src/core/ext/xds/xds_endpoint.h', - 'src/core/ext/xds/xds_health_status.cc', - 'src/core/ext/xds/xds_health_status.h', - 'src/core/ext/xds/xds_http_fault_filter.cc', - 'src/core/ext/xds/xds_http_fault_filter.h', - 'src/core/ext/xds/xds_http_filters.cc', - 'src/core/ext/xds/xds_http_filters.h', - 'src/core/ext/xds/xds_http_rbac_filter.cc', - 'src/core/ext/xds/xds_http_rbac_filter.h', - 'src/core/ext/xds/xds_http_stateful_session_filter.cc', - 'src/core/ext/xds/xds_http_stateful_session_filter.h', - 'src/core/ext/xds/xds_lb_policy_registry.cc', - 'src/core/ext/xds/xds_lb_policy_registry.h', - 'src/core/ext/xds/xds_listener.cc', - 'src/core/ext/xds/xds_listener.h', - 'src/core/ext/xds/xds_metrics.h', - 'src/core/ext/xds/xds_resource_type.h', - 'src/core/ext/xds/xds_resource_type_impl.h', - 'src/core/ext/xds/xds_route_config.cc', - 'src/core/ext/xds/xds_route_config.h', - 'src/core/ext/xds/xds_routing.cc', - 'src/core/ext/xds/xds_routing.h', - 'src/core/ext/xds/xds_server_config_fetcher.cc', - 'src/core/ext/xds/xds_transport.h', - 'src/core/ext/xds/xds_transport_grpc.cc', - 'src/core/ext/xds/xds_transport_grpc.h', + 'src/core/handshaker/endpoint_info/endpoint_info_handshaker.cc', + 'src/core/handshaker/endpoint_info/endpoint_info_handshaker.h', + 'src/core/handshaker/handshaker.cc', + 'src/core/handshaker/handshaker.h', + 'src/core/handshaker/handshaker_factory.h', + 'src/core/handshaker/handshaker_registry.cc', + 'src/core/handshaker/handshaker_registry.h', + 'src/core/handshaker/http_connect/http_connect_handshaker.cc', + 'src/core/handshaker/http_connect/http_connect_handshaker.h', + 'src/core/handshaker/http_connect/http_proxy_mapper.cc', + 'src/core/handshaker/http_connect/http_proxy_mapper.h', + 'src/core/handshaker/proxy_mapper.h', + 'src/core/handshaker/proxy_mapper_registry.cc', + 'src/core/handshaker/proxy_mapper_registry.h', + 'src/core/handshaker/security/secure_endpoint.cc', + 'src/core/handshaker/security/secure_endpoint.h', + 'src/core/handshaker/security/security_handshaker.cc', + 'src/core/handshaker/security/security_handshaker.h', + 'src/core/handshaker/security/tsi_error.cc', + 'src/core/handshaker/security/tsi_error.h', + 'src/core/handshaker/tcp_connect/tcp_connect_handshaker.cc', + 'src/core/handshaker/tcp_connect/tcp_connect_handshaker.h', 'src/core/lib/address_utils/parse_address.cc', 'src/core/lib/address_utils/parse_address.h', 'src/core/lib/address_utils/sockaddr_utils.cc', @@ -1260,12 +1226,6 @@ Pod::Spec.new do |s| 'src/core/lib/channel/channel_stack_builder_impl.h', 'src/core/lib/channel/channel_stack_trace.cc', 'src/core/lib/channel/channel_stack_trace.h', - 'src/core/lib/channel/channel_trace.cc', - 'src/core/lib/channel/channel_trace.h', - 'src/core/lib/channel/channelz.cc', - 'src/core/lib/channel/channelz.h', - 'src/core/lib/channel/channelz_registry.cc', - 'src/core/lib/channel/channelz_registry.h', 'src/core/lib/channel/connected_channel.cc', 'src/core/lib/channel/connected_channel.h', 'src/core/lib/channel/context.h', @@ -1273,8 +1233,6 @@ Pod::Spec.new do |s| 'src/core/lib/channel/metrics.h', 'src/core/lib/channel/promise_based_filter.cc', 'src/core/lib/channel/promise_based_filter.h', - 'src/core/lib/channel/server_call_tracer_filter.cc', - 'src/core/lib/channel/server_call_tracer_filter.h', 'src/core/lib/channel/status_util.cc', 'src/core/lib/channel/status_util.h', 'src/core/lib/channel/tcp_tracer.h', @@ -1416,39 +1374,6 @@ Pod::Spec.new do |s| 'src/core/lib/experiments/config.h', 'src/core/lib/experiments/experiments.cc', 'src/core/lib/experiments/experiments.h', - 'src/core/lib/gpr/alloc.cc', - 'src/core/lib/gpr/alloc.h', - 'src/core/lib/gpr/android/log.cc', - 'src/core/lib/gpr/atm.cc', - 'src/core/lib/gpr/iphone/cpu.cc', - 'src/core/lib/gpr/linux/cpu.cc', - 'src/core/lib/gpr/linux/log.cc', - 'src/core/lib/gpr/log.cc', - 'src/core/lib/gpr/log_internal.h', - 'src/core/lib/gpr/msys/tmpfile.cc', - 'src/core/lib/gpr/posix/cpu.cc', - 'src/core/lib/gpr/posix/log.cc', - 'src/core/lib/gpr/posix/string.cc', - 'src/core/lib/gpr/posix/sync.cc', - 'src/core/lib/gpr/posix/time.cc', - 'src/core/lib/gpr/posix/tmpfile.cc', - 'src/core/lib/gpr/spinlock.h', - 'src/core/lib/gpr/string.cc', - 'src/core/lib/gpr/string.h', - 'src/core/lib/gpr/sync.cc', - 'src/core/lib/gpr/sync_abseil.cc', - 'src/core/lib/gpr/time.cc', - 'src/core/lib/gpr/time_precise.cc', - 'src/core/lib/gpr/time_precise.h', - 'src/core/lib/gpr/tmpfile.h', - 'src/core/lib/gpr/useful.h', - 'src/core/lib/gpr/windows/cpu.cc', - 'src/core/lib/gpr/windows/log.cc', - 'src/core/lib/gpr/windows/string.cc', - 'src/core/lib/gpr/windows/string_util.cc', - 'src/core/lib/gpr/windows/sync.cc', - 'src/core/lib/gpr/windows/time.cc', - 'src/core/lib/gpr/windows/tmpfile.cc', 'src/core/lib/gprpp/atomic_utils.h', 'src/core/lib/gprpp/bitset.h', 'src/core/lib/gprpp/chunked_vector.h', @@ -1522,9 +1447,6 @@ Pod::Spec.new do |s| 'src/core/lib/gprpp/work_serializer.cc', 'src/core/lib/gprpp/work_serializer.h', 'src/core/lib/gprpp/xxhash_inline.h', - 'src/core/lib/handshaker/proxy_mapper.h', - 'src/core/lib/handshaker/proxy_mapper_registry.cc', - 'src/core/lib/handshaker/proxy_mapper_registry.h', 'src/core/lib/http/format_request.cc', 'src/core/lib/http/format_request.h', 'src/core/lib/http/httpcli.cc', @@ -1852,13 +1774,7 @@ Pod::Spec.new do |s| 'src/core/lib/security/security_connector/tls/tls_security_connector.h', 'src/core/lib/security/transport/auth_filters.h', 'src/core/lib/security/transport/client_auth_filter.cc', - 'src/core/lib/security/transport/secure_endpoint.cc', - 'src/core/lib/security/transport/secure_endpoint.h', - 'src/core/lib/security/transport/security_handshaker.cc', - 'src/core/lib/security/transport/security_handshaker.h', 'src/core/lib/security/transport/server_auth_filter.cc', - 'src/core/lib/security/transport/tsi_error.cc', - 'src/core/lib/security/transport/tsi_error.h', 'src/core/lib/security/util/json_util.cc', 'src/core/lib/security/util/json_util.h', 'src/core/lib/slice/percent_encoding.cc', @@ -1905,9 +1821,6 @@ Pod::Spec.new do |s| 'src/core/lib/surface/legacy_channel.cc', 'src/core/lib/surface/legacy_channel.h', 'src/core/lib/surface/metadata_array.cc', - 'src/core/lib/surface/server.cc', - 'src/core/lib/surface/server.h', - 'src/core/lib/surface/server_interface.h', 'src/core/lib/surface/validate_metadata.cc', 'src/core/lib/surface/validate_metadata.h', 'src/core/lib/surface/version.cc', @@ -1917,29 +1830,23 @@ Pod::Spec.new do |s| 'src/core/lib/transport/batch_builder.h', 'src/core/lib/transport/bdp_estimator.cc', 'src/core/lib/transport/bdp_estimator.h', + 'src/core/lib/transport/call_arena_allocator.cc', + 'src/core/lib/transport/call_arena_allocator.h', + 'src/core/lib/transport/call_destination.h', 'src/core/lib/transport/call_filters.cc', 'src/core/lib/transport/call_filters.h', 'src/core/lib/transport/call_final_info.cc', 'src/core/lib/transport/call_final_info.h', - 'src/core/lib/transport/call_size_estimator.cc', - 'src/core/lib/transport/call_size_estimator.h', 'src/core/lib/transport/call_spine.cc', 'src/core/lib/transport/call_spine.h', 'src/core/lib/transport/connectivity_state.cc', 'src/core/lib/transport/connectivity_state.h', 'src/core/lib/transport/custom_metadata.h', - 'src/core/lib/transport/endpoint_info_handshaker.cc', - 'src/core/lib/transport/endpoint_info_handshaker.h', 'src/core/lib/transport/error_utils.cc', 'src/core/lib/transport/error_utils.h', - 'src/core/lib/transport/handshaker.cc', - 'src/core/lib/transport/handshaker.h', - 'src/core/lib/transport/handshaker_factory.h', - 'src/core/lib/transport/handshaker_registry.cc', - 'src/core/lib/transport/handshaker_registry.h', 'src/core/lib/transport/http2_errors.h', - 'src/core/lib/transport/http_connect_handshaker.cc', - 'src/core/lib/transport/http_connect_handshaker.h', + 'src/core/lib/transport/interception_chain.cc', + 'src/core/lib/transport/interception_chain.h', 'src/core/lib/transport/message.cc', 'src/core/lib/transport/message.h', 'src/core/lib/transport/metadata.cc', @@ -1954,8 +1861,6 @@ Pod::Spec.new do |s| 'src/core/lib/transport/simple_slice_based_metadata.h', 'src/core/lib/transport/status_conversion.cc', 'src/core/lib/transport/status_conversion.h', - 'src/core/lib/transport/tcp_connect_handshaker.cc', - 'src/core/lib/transport/tcp_connect_handshaker.h', 'src/core/lib/transport/timeout_encoding.cc', 'src/core/lib/transport/timeout_encoding.h', 'src/core/lib/transport/transport.cc', @@ -2058,6 +1963,17 @@ Pod::Spec.new do |s| 'src/core/resolver/xds/xds_resolver_attributes.h', 'src/core/resolver/xds/xds_resolver_trace.cc', 'src/core/resolver/xds/xds_resolver_trace.h', + 'src/core/server/server.cc', + 'src/core/server/server.h', + 'src/core/server/server_call_tracer_filter.cc', + 'src/core/server/server_call_tracer_filter.h', + 'src/core/server/server_config_selector.h', + 'src/core/server/server_config_selector_filter.cc', + 'src/core/server/server_config_selector_filter.h', + 'src/core/server/server_interface.h', + 'src/core/server/xds_channel_stack_modifier.cc', + 'src/core/server/xds_channel_stack_modifier.h', + 'src/core/server/xds_server_config_fetcher.cc', 'src/core/service_config/service_config.h', 'src/core/service_config/service_config_call_data.h', 'src/core/service_config/service_config_channel_arg_filter.cc', @@ -2123,6 +2039,92 @@ Pod::Spec.new do |s| 'src/core/tsi/transport_security_grpc.cc', 'src/core/tsi/transport_security_grpc.h', 'src/core/tsi/transport_security_interface.h', + 'src/core/util/alloc.cc', + 'src/core/util/alloc.h', + 'src/core/util/android/log.cc', + 'src/core/util/atm.cc', + 'src/core/util/iphone/cpu.cc', + 'src/core/util/linux/cpu.cc', + 'src/core/util/linux/log.cc', + 'src/core/util/log.cc', + 'src/core/util/msys/tmpfile.cc', + 'src/core/util/posix/cpu.cc', + 'src/core/util/posix/log.cc', + 'src/core/util/posix/string.cc', + 'src/core/util/posix/sync.cc', + 'src/core/util/posix/time.cc', + 'src/core/util/posix/tmpfile.cc', + 'src/core/util/spinlock.h', + 'src/core/util/string.cc', + 'src/core/util/string.h', + 'src/core/util/sync.cc', + 'src/core/util/sync_abseil.cc', + 'src/core/util/time.cc', + 'src/core/util/time_precise.cc', + 'src/core/util/time_precise.h', + 'src/core/util/tmpfile.h', + 'src/core/util/useful.h', + 'src/core/util/windows/cpu.cc', + 'src/core/util/windows/log.cc', + 'src/core/util/windows/string.cc', + 'src/core/util/windows/string_util.cc', + 'src/core/util/windows/sync.cc', + 'src/core/util/windows/time.cc', + 'src/core/util/windows/tmpfile.cc', + 'src/core/xds/grpc/certificate_provider_store.cc', + 'src/core/xds/grpc/certificate_provider_store.h', + 'src/core/xds/grpc/file_watcher_certificate_provider_factory.cc', + 'src/core/xds/grpc/file_watcher_certificate_provider_factory.h', + 'src/core/xds/grpc/upb_utils.h', + 'src/core/xds/grpc/xds_audit_logger_registry.cc', + 'src/core/xds/grpc/xds_audit_logger_registry.h', + 'src/core/xds/grpc/xds_bootstrap_grpc.cc', + 'src/core/xds/grpc/xds_bootstrap_grpc.h', + 'src/core/xds/grpc/xds_certificate_provider.cc', + 'src/core/xds/grpc/xds_certificate_provider.h', + 'src/core/xds/grpc/xds_client_grpc.cc', + 'src/core/xds/grpc/xds_client_grpc.h', + 'src/core/xds/grpc/xds_cluster.cc', + 'src/core/xds/grpc/xds_cluster.h', + 'src/core/xds/grpc/xds_cluster_specifier_plugin.cc', + 'src/core/xds/grpc/xds_cluster_specifier_plugin.h', + 'src/core/xds/grpc/xds_common_types.cc', + 'src/core/xds/grpc/xds_common_types.h', + 'src/core/xds/grpc/xds_endpoint.cc', + 'src/core/xds/grpc/xds_endpoint.h', + 'src/core/xds/grpc/xds_health_status.cc', + 'src/core/xds/grpc/xds_health_status.h', + 'src/core/xds/grpc/xds_http_fault_filter.cc', + 'src/core/xds/grpc/xds_http_fault_filter.h', + 'src/core/xds/grpc/xds_http_filters.cc', + 'src/core/xds/grpc/xds_http_filters.h', + 'src/core/xds/grpc/xds_http_rbac_filter.cc', + 'src/core/xds/grpc/xds_http_rbac_filter.h', + 'src/core/xds/grpc/xds_http_stateful_session_filter.cc', + 'src/core/xds/grpc/xds_http_stateful_session_filter.h', + 'src/core/xds/grpc/xds_lb_policy_registry.cc', + 'src/core/xds/grpc/xds_lb_policy_registry.h', + 'src/core/xds/grpc/xds_listener.cc', + 'src/core/xds/grpc/xds_listener.h', + 'src/core/xds/grpc/xds_route_config.cc', + 'src/core/xds/grpc/xds_route_config.h', + 'src/core/xds/grpc/xds_routing.cc', + 'src/core/xds/grpc/xds_routing.h', + 'src/core/xds/grpc/xds_transport_grpc.cc', + 'src/core/xds/grpc/xds_transport_grpc.h', + 'src/core/xds/xds_client/xds_api.cc', + 'src/core/xds/xds_client/xds_api.h', + 'src/core/xds/xds_client/xds_bootstrap.cc', + 'src/core/xds/xds_client/xds_bootstrap.h', + 'src/core/xds/xds_client/xds_channel_args.h', + 'src/core/xds/xds_client/xds_client.cc', + 'src/core/xds/xds_client/xds_client.h', + 'src/core/xds/xds_client/xds_client_stats.cc', + 'src/core/xds/xds_client/xds_client_stats.h', + 'src/core/xds/xds_client/xds_metrics.h', + 'src/core/xds/xds_client/xds_resource_type.h', + 'src/core/xds/xds_client/xds_resource_type_impl.h', + 'src/core/xds/xds_client/xds_transport.h', 'third_party/re2/re2/bitmap256.h', 'third_party/re2/re2/bitstate.cc', 'third_party/re2/re2/compile.cc', @@ -2351,8 +2353,10 @@ Pod::Spec.new do |s| 'third_party/zlib/zlib.h', 'third_party/zlib/zutil.c', 'third_party/zlib/zutil.h' - ss.private_header_files = 'src/core/client_channel/backup_poller.h', - 'src/core/client_channel/client_channel_channelz.h', + ss.private_header_files = 'src/core/channelz/channel_trace.h', + 'src/core/channelz/channelz.h', + 'src/core/channelz/channelz_registry.h', + 'src/core/client_channel/backup_poller.h', 'src/core/client_channel/client_channel_factory.h', 'src/core/client_channel/client_channel_filter.h', 'src/core/client_channel/client_channel_internal.h', @@ -2361,7 +2365,6 @@ Pod::Spec.new do |s| 'src/core/client_channel/connector.h', 'src/core/client_channel/dynamic_filters.h', 'src/core/client_channel/global_subchannel_pool.h', - 'src/core/client_channel/http_proxy_mapper.h', 'src/core/client_channel/local_subchannel_pool.h', 'src/core/client_channel/retry_filter.h', 'src/core/client_channel/retry_filter_legacy_call_data.h', @@ -2375,7 +2378,6 @@ Pod::Spec.new do |s| 'src/core/ext/filters/backend_metrics/backend_metric_provider.h', 'src/core/ext/filters/channel_idle/idle_filter_state.h', 'src/core/ext/filters/channel_idle/legacy_channel_idle_filter.h', - 'src/core/ext/filters/deadline/deadline_filter.h', 'src/core/ext/filters/fault_injection/fault_injection_filter.h', 'src/core/ext/filters/fault_injection/fault_injection_service_config_parser.h', 'src/core/ext/filters/http/client/http_client_filter.h', @@ -2385,8 +2387,6 @@ Pod::Spec.new do |s| 'src/core/ext/filters/message_size/message_size_filter.h', 'src/core/ext/filters/rbac/rbac_filter.h', 'src/core/ext/filters/rbac/rbac_service_config_parser.h', - 'src/core/ext/filters/server_config_selector/server_config_selector.h', - 'src/core/ext/filters/server_config_selector/server_config_selector_filter.h', 'src/core/ext/filters/stateful_session/stateful_session_filter.h', 'src/core/ext/filters/stateful_session/stateful_session_service_config_parser.h', 'src/core/ext/gcp/metadata_query.h', @@ -2907,37 +2907,18 @@ Pod::Spec.new do |s| 'src/core/ext/upbdefs-gen/xds/type/v3/cel.upbdefs.h', 'src/core/ext/upbdefs-gen/xds/type/v3/range.upbdefs.h', 'src/core/ext/upbdefs-gen/xds/type/v3/typed_struct.upbdefs.h', - 'src/core/ext/xds/certificate_provider_store.h', - 'src/core/ext/xds/file_watcher_certificate_provider_factory.h', - 'src/core/ext/xds/upb_utils.h', - 'src/core/ext/xds/xds_api.h', - 'src/core/ext/xds/xds_audit_logger_registry.h', - 'src/core/ext/xds/xds_bootstrap.h', - 'src/core/ext/xds/xds_bootstrap_grpc.h', - 'src/core/ext/xds/xds_certificate_provider.h', - 'src/core/ext/xds/xds_channel_args.h', - 'src/core/ext/xds/xds_channel_stack_modifier.h', - 'src/core/ext/xds/xds_client.h', - 'src/core/ext/xds/xds_client_grpc.h', - 'src/core/ext/xds/xds_client_stats.h', - 'src/core/ext/xds/xds_cluster.h', - 'src/core/ext/xds/xds_cluster_specifier_plugin.h', - 'src/core/ext/xds/xds_common_types.h', - 'src/core/ext/xds/xds_endpoint.h', - 'src/core/ext/xds/xds_health_status.h', - 'src/core/ext/xds/xds_http_fault_filter.h', - 'src/core/ext/xds/xds_http_filters.h', - 'src/core/ext/xds/xds_http_rbac_filter.h', - 'src/core/ext/xds/xds_http_stateful_session_filter.h', - 'src/core/ext/xds/xds_lb_policy_registry.h', - 'src/core/ext/xds/xds_listener.h', - 'src/core/ext/xds/xds_metrics.h', - 'src/core/ext/xds/xds_resource_type.h', - 'src/core/ext/xds/xds_resource_type_impl.h', - 'src/core/ext/xds/xds_route_config.h', - 'src/core/ext/xds/xds_routing.h', - 'src/core/ext/xds/xds_transport.h', - 'src/core/ext/xds/xds_transport_grpc.h', + 'src/core/handshaker/endpoint_info/endpoint_info_handshaker.h', + 'src/core/handshaker/handshaker.h', + 'src/core/handshaker/handshaker_factory.h', + 'src/core/handshaker/handshaker_registry.h', + 'src/core/handshaker/http_connect/http_connect_handshaker.h', + 'src/core/handshaker/http_connect/http_proxy_mapper.h', + 'src/core/handshaker/proxy_mapper.h', + 'src/core/handshaker/proxy_mapper_registry.h', + 'src/core/handshaker/security/secure_endpoint.h', + 'src/core/handshaker/security/security_handshaker.h', + 'src/core/handshaker/security/tsi_error.h', + 'src/core/handshaker/tcp_connect/tcp_connect_handshaker.h', 'src/core/lib/address_utils/parse_address.h', 'src/core/lib/address_utils/sockaddr_utils.h', 'src/core/lib/avl/avl.h', @@ -2952,14 +2933,10 @@ Pod::Spec.new do |s| 'src/core/lib/channel/channel_stack_builder.h', 'src/core/lib/channel/channel_stack_builder_impl.h', 'src/core/lib/channel/channel_stack_trace.h', - 'src/core/lib/channel/channel_trace.h', - 'src/core/lib/channel/channelz.h', - 'src/core/lib/channel/channelz_registry.h', 'src/core/lib/channel/connected_channel.h', 'src/core/lib/channel/context.h', 'src/core/lib/channel/metrics.h', 'src/core/lib/channel/promise_based_filter.h', - 'src/core/lib/channel/server_call_tracer_filter.h', 'src/core/lib/channel/status_util.h', 'src/core/lib/channel/tcp_tracer.h', 'src/core/lib/compression/compression_internal.h', @@ -3038,13 +3015,6 @@ Pod::Spec.new do |s| 'src/core/lib/event_engine/work_queue/work_queue.h', 'src/core/lib/experiments/config.h', 'src/core/lib/experiments/experiments.h', - 'src/core/lib/gpr/alloc.h', - 'src/core/lib/gpr/log_internal.h', - 'src/core/lib/gpr/spinlock.h', - 'src/core/lib/gpr/string.h', - 'src/core/lib/gpr/time_precise.h', - 'src/core/lib/gpr/tmpfile.h', - 'src/core/lib/gpr/useful.h', 'src/core/lib/gprpp/atomic_utils.h', 'src/core/lib/gprpp/bitset.h', 'src/core/lib/gprpp/chunked_vector.h', @@ -3092,8 +3062,6 @@ Pod::Spec.new do |s| 'src/core/lib/gprpp/validation_errors.h', 'src/core/lib/gprpp/work_serializer.h', 'src/core/lib/gprpp/xxhash_inline.h', - 'src/core/lib/handshaker/proxy_mapper.h', - 'src/core/lib/handshaker/proxy_mapper_registry.h', 'src/core/lib/http/format_request.h', 'src/core/lib/http/httpcli.h', 'src/core/lib/http/httpcli_ssl_credentials.h', @@ -3263,9 +3231,6 @@ Pod::Spec.new do |s| 'src/core/lib/security/security_connector/ssl_utils.h', 'src/core/lib/security/security_connector/tls/tls_security_connector.h', 'src/core/lib/security/transport/auth_filters.h', - 'src/core/lib/security/transport/secure_endpoint.h', - 'src/core/lib/security/transport/security_handshaker.h', - 'src/core/lib/security/transport/tsi_error.h', 'src/core/lib/security/util/json_util.h', 'src/core/lib/slice/percent_encoding.h', 'src/core/lib/slice/slice.h', @@ -3288,25 +3253,20 @@ Pod::Spec.new do |s| 'src/core/lib/surface/init_internally.h', 'src/core/lib/surface/lame_client.h', 'src/core/lib/surface/legacy_channel.h', - 'src/core/lib/surface/server.h', - 'src/core/lib/surface/server_interface.h', 'src/core/lib/surface/validate_metadata.h', 'src/core/lib/surface/wait_for_cq_end_op.h', 'src/core/lib/transport/batch_builder.h', 'src/core/lib/transport/bdp_estimator.h', + 'src/core/lib/transport/call_arena_allocator.h', + 'src/core/lib/transport/call_destination.h', 'src/core/lib/transport/call_filters.h', 'src/core/lib/transport/call_final_info.h', - 'src/core/lib/transport/call_size_estimator.h', 'src/core/lib/transport/call_spine.h', 'src/core/lib/transport/connectivity_state.h', 'src/core/lib/transport/custom_metadata.h', - 'src/core/lib/transport/endpoint_info_handshaker.h', 'src/core/lib/transport/error_utils.h', - 'src/core/lib/transport/handshaker.h', - 'src/core/lib/transport/handshaker_factory.h', - 'src/core/lib/transport/handshaker_registry.h', 'src/core/lib/transport/http2_errors.h', - 'src/core/lib/transport/http_connect_handshaker.h', + 'src/core/lib/transport/interception_chain.h', 'src/core/lib/transport/message.h', 'src/core/lib/transport/metadata.h', 'src/core/lib/transport/metadata_batch.h', @@ -3315,7 +3275,6 @@ Pod::Spec.new do |s| 'src/core/lib/transport/parsed_metadata.h', 'src/core/lib/transport/simple_slice_based_metadata.h', 'src/core/lib/transport/status_conversion.h', - 'src/core/lib/transport/tcp_connect_handshaker.h', 'src/core/lib/transport/timeout_encoding.h', 'src/core/lib/transport/transport.h', 'src/core/lib/transport/transport_fwd.h', @@ -3364,6 +3323,12 @@ Pod::Spec.new do |s| 'src/core/resolver/xds/xds_dependency_manager.h', 'src/core/resolver/xds/xds_resolver_attributes.h', 'src/core/resolver/xds/xds_resolver_trace.h', + 'src/core/server/server.h', + 'src/core/server/server_call_tracer_filter.h', + 'src/core/server/server_config_selector.h', + 'src/core/server/server_config_selector_filter.h', + 'src/core/server/server_interface.h', + 'src/core/server/xds_channel_stack_modifier.h', 'src/core/service_config/service_config.h', 'src/core/service_config/service_config_call_data.h', 'src/core/service_config/service_config_impl.h', @@ -3397,6 +3362,42 @@ Pod::Spec.new do |s| 'src/core/tsi/transport_security.h', 'src/core/tsi/transport_security_grpc.h', 'src/core/tsi/transport_security_interface.h', + 'src/core/util/alloc.h', + 'src/core/util/spinlock.h', + 'src/core/util/string.h', + 'src/core/util/time_precise.h', + 'src/core/util/tmpfile.h', + 'src/core/util/useful.h', + 'src/core/xds/grpc/certificate_provider_store.h', + 'src/core/xds/grpc/file_watcher_certificate_provider_factory.h', + 'src/core/xds/grpc/upb_utils.h', + 'src/core/xds/grpc/xds_audit_logger_registry.h', + 'src/core/xds/grpc/xds_bootstrap_grpc.h', + 'src/core/xds/grpc/xds_certificate_provider.h', + 'src/core/xds/grpc/xds_client_grpc.h', + 'src/core/xds/grpc/xds_cluster.h', + 'src/core/xds/grpc/xds_cluster_specifier_plugin.h', + 'src/core/xds/grpc/xds_common_types.h', + 'src/core/xds/grpc/xds_endpoint.h', + 'src/core/xds/grpc/xds_health_status.h', + 'src/core/xds/grpc/xds_http_fault_filter.h', + 'src/core/xds/grpc/xds_http_filters.h', + 'src/core/xds/grpc/xds_http_rbac_filter.h', + 'src/core/xds/grpc/xds_http_stateful_session_filter.h', + 'src/core/xds/grpc/xds_lb_policy_registry.h', + 'src/core/xds/grpc/xds_listener.h', + 'src/core/xds/grpc/xds_route_config.h', + 'src/core/xds/grpc/xds_routing.h', + 'src/core/xds/grpc/xds_transport_grpc.h', + 'src/core/xds/xds_client/xds_api.h', + 'src/core/xds/xds_client/xds_bootstrap.h', + 'src/core/xds/xds_client/xds_channel_args.h', + 'src/core/xds/xds_client/xds_client.h', + 'src/core/xds/xds_client/xds_client_stats.h', + 'src/core/xds/xds_client/xds_metrics.h', + 'src/core/xds/xds_client/xds_resource_type.h', + 'src/core/xds/xds_client/xds_resource_type_impl.h', + 'src/core/xds/xds_client/xds_transport.h', 'third_party/re2/re2/bitmap256.h', 'third_party/re2/re2/filtered_re2.h', 'third_party/re2/re2/pod_array.h', diff --git a/gRPC-ProtoRPC.podspec b/gRPC-ProtoRPC.podspec index 38a01605115..1e9bab7d451 100644 --- a/gRPC-ProtoRPC.podspec +++ b/gRPC-ProtoRPC.podspec @@ -21,7 +21,7 @@ Pod::Spec.new do |s| s.name = 'gRPC-ProtoRPC' - version = '1.64.0-dev' + version = '1.65.0-dev' s.version = version s.summary = 'RPC library for Protocol Buffers, based on gRPC' s.homepage = 'https://grpc.io' @@ -37,6 +37,7 @@ Pod::Spec.new do |s| s.osx.deployment_target = '10.12' s.tvos.deployment_target = '12.0' s.watchos.deployment_target = '6.0' + s.visionos.deployment_target = '1.0' name = 'ProtoRPC' s.module_name = name diff --git a/gRPC-RxLibrary.podspec b/gRPC-RxLibrary.podspec index 36c6cac45e4..b1dd23fd87b 100644 --- a/gRPC-RxLibrary.podspec +++ b/gRPC-RxLibrary.podspec @@ -21,7 +21,7 @@ Pod::Spec.new do |s| s.name = 'gRPC-RxLibrary' - version = '1.64.0-dev' + version = '1.65.0-dev' s.version = version s.summary = 'Reactive Extensions library for iOS/OSX.' s.homepage = 'https://grpc.io' @@ -37,6 +37,7 @@ Pod::Spec.new do |s| s.osx.deployment_target = '10.12' s.tvos.deployment_target = '12.0' s.watchos.deployment_target = '6.0' + s.visionos.deployment_target = '1.0' name = 'RxLibrary' s.module_name = name diff --git a/gRPC.podspec b/gRPC.podspec index 9108c7d8eac..b016e73b775 100644 --- a/gRPC.podspec +++ b/gRPC.podspec @@ -20,7 +20,7 @@ Pod::Spec.new do |s| s.name = 'gRPC' - version = '1.64.0-dev' + version = '1.65.0-dev' s.version = version s.summary = 'gRPC client library for iOS/OSX' s.homepage = 'https://grpc.io' @@ -49,6 +49,7 @@ Pod::Spec.new do |s| s.osx.deployment_target = '10.12' s.tvos.deployment_target = '12.0' s.watchos.deployment_target = '6.0' + s.visionos.deployment_target = '1.0' # Exposes the privacy manifest. Depended on by any subspecs containing # non-interface files. @@ -83,6 +84,7 @@ Pod::Spec.new do |s| s.osx.deployment_target = '10.12' s.tvos.deployment_target = '12.0' s.watchos.deployment_target = '6.0' + s.visionos.deployment_target = '1.0' end s.subspec 'Interface' do |ss| @@ -118,6 +120,7 @@ Pod::Spec.new do |s| s.osx.deployment_target = '10.12' s.tvos.deployment_target = '12.0' s.watchos.deployment_target = '6.0' + s.visionos.deployment_target = '1.0' end s.subspec 'GRPCCore' do |ss| @@ -155,6 +158,7 @@ Pod::Spec.new do |s| s.osx.deployment_target = '10.12' s.tvos.deployment_target = '12.0' s.watchos.deployment_target = '6.0' + s.visionos.deployment_target = '1.0' end s.subspec 'GRPCCoreCronet' do |ss| @@ -179,6 +183,7 @@ Pod::Spec.new do |s| s.osx.deployment_target = '10.12' s.tvos.deployment_target = '12.0' s.watchos.deployment_target = '6.0' + s.visionos.deployment_target = '1.0' end s.subspec 'InternalTesting' do |ss| @@ -191,5 +196,6 @@ Pod::Spec.new do |s| s.osx.deployment_target = '10.12' s.tvos.deployment_target = '12.0' s.watchos.deployment_target = '6.0' + s.visionos.deployment_target = '1.0' end end diff --git a/grpc.gemspec b/grpc.gemspec index 3a986b6d65e..7104853d64f 100644 --- a/grpc.gemspec +++ b/grpc.gemspec @@ -99,6 +99,7 @@ Gem::Specification.new do |s| s.files += %w( include/grpc/impl/propagation_bits.h ) s.files += %w( include/grpc/impl/slice_type.h ) s.files += %w( include/grpc/load_reporting.h ) + s.files += %w( include/grpc/passive_listener.h ) s.files += %w( include/grpc/slice.h ) s.files += %w( include/grpc/slice_buffer.h ) s.files += %w( include/grpc/status.h ) @@ -123,10 +124,14 @@ Gem::Specification.new do |s| s.files += %w( include/grpc/support/thd_id.h ) s.files += %w( include/grpc/support/time.h ) s.files += %w( include/grpc/support/workaround_list.h ) + s.files += %w( src/core/channelz/channel_trace.cc ) + s.files += %w( src/core/channelz/channel_trace.h ) + s.files += %w( src/core/channelz/channelz.cc ) + s.files += %w( src/core/channelz/channelz.h ) + s.files += %w( src/core/channelz/channelz_registry.cc ) + s.files += %w( src/core/channelz/channelz_registry.h ) s.files += %w( src/core/client_channel/backup_poller.cc ) s.files += %w( src/core/client_channel/backup_poller.h ) - s.files += %w( src/core/client_channel/client_channel_channelz.cc ) - s.files += %w( src/core/client_channel/client_channel_channelz.h ) s.files += %w( src/core/client_channel/client_channel_factory.cc ) s.files += %w( src/core/client_channel/client_channel_factory.h ) s.files += %w( src/core/client_channel/client_channel_filter.cc ) @@ -142,8 +147,6 @@ Gem::Specification.new do |s| s.files += %w( src/core/client_channel/dynamic_filters.h ) s.files += %w( src/core/client_channel/global_subchannel_pool.cc ) s.files += %w( src/core/client_channel/global_subchannel_pool.h ) - s.files += %w( src/core/client_channel/http_proxy_mapper.cc ) - s.files += %w( src/core/client_channel/http_proxy_mapper.h ) s.files += %w( src/core/client_channel/local_subchannel_pool.cc ) s.files += %w( src/core/client_channel/local_subchannel_pool.h ) s.files += %w( src/core/client_channel/retry_filter.cc ) @@ -169,8 +172,6 @@ Gem::Specification.new do |s| s.files += %w( src/core/ext/filters/channel_idle/idle_filter_state.h ) s.files += %w( src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc ) s.files += %w( src/core/ext/filters/channel_idle/legacy_channel_idle_filter.h ) - s.files += %w( src/core/ext/filters/deadline/deadline_filter.cc ) - s.files += %w( src/core/ext/filters/deadline/deadline_filter.h ) s.files += %w( src/core/ext/filters/fault_injection/fault_injection_filter.cc ) s.files += %w( src/core/ext/filters/fault_injection/fault_injection_filter.h ) s.files += %w( src/core/ext/filters/fault_injection/fault_injection_service_config_parser.cc ) @@ -190,9 +191,6 @@ Gem::Specification.new do |s| s.files += %w( src/core/ext/filters/rbac/rbac_filter.h ) s.files += %w( src/core/ext/filters/rbac/rbac_service_config_parser.cc ) s.files += %w( src/core/ext/filters/rbac/rbac_service_config_parser.h ) - s.files += %w( src/core/ext/filters/server_config_selector/server_config_selector.h ) - s.files += %w( src/core/ext/filters/server_config_selector/server_config_selector_filter.cc ) - s.files += %w( src/core/ext/filters/server_config_selector/server_config_selector_filter.h ) s.files += %w( src/core/ext/filters/stateful_session/stateful_session_filter.cc ) s.files += %w( src/core/ext/filters/stateful_session/stateful_session_filter.h ) s.files += %w( src/core/ext/filters/stateful_session/stateful_session_service_config_parser.cc ) @@ -1068,63 +1066,28 @@ Gem::Specification.new do |s| s.files += %w( src/core/ext/upbdefs-gen/xds/type/v3/range.upbdefs.h ) s.files += %w( src/core/ext/upbdefs-gen/xds/type/v3/typed_struct.upbdefs.c ) s.files += %w( src/core/ext/upbdefs-gen/xds/type/v3/typed_struct.upbdefs.h ) - s.files += %w( src/core/ext/xds/certificate_provider_store.cc ) - s.files += %w( src/core/ext/xds/certificate_provider_store.h ) - s.files += %w( src/core/ext/xds/file_watcher_certificate_provider_factory.cc ) - s.files += %w( src/core/ext/xds/file_watcher_certificate_provider_factory.h ) - s.files += %w( src/core/ext/xds/upb_utils.h ) - s.files += %w( src/core/ext/xds/xds_api.cc ) - s.files += %w( src/core/ext/xds/xds_api.h ) - s.files += %w( src/core/ext/xds/xds_audit_logger_registry.cc ) - s.files += %w( src/core/ext/xds/xds_audit_logger_registry.h ) - s.files += %w( src/core/ext/xds/xds_bootstrap.cc ) - s.files += %w( src/core/ext/xds/xds_bootstrap.h ) - s.files += %w( src/core/ext/xds/xds_bootstrap_grpc.cc ) - s.files += %w( src/core/ext/xds/xds_bootstrap_grpc.h ) - s.files += %w( src/core/ext/xds/xds_certificate_provider.cc ) - s.files += %w( src/core/ext/xds/xds_certificate_provider.h ) - s.files += %w( src/core/ext/xds/xds_channel_args.h ) - s.files += %w( src/core/ext/xds/xds_channel_stack_modifier.cc ) - s.files += %w( src/core/ext/xds/xds_channel_stack_modifier.h ) - s.files += %w( src/core/ext/xds/xds_client.cc ) - s.files += %w( src/core/ext/xds/xds_client.h ) - s.files += %w( src/core/ext/xds/xds_client_grpc.cc ) - s.files += %w( src/core/ext/xds/xds_client_grpc.h ) - s.files += %w( src/core/ext/xds/xds_client_stats.cc ) - s.files += %w( src/core/ext/xds/xds_client_stats.h ) - s.files += %w( src/core/ext/xds/xds_cluster.cc ) - s.files += %w( src/core/ext/xds/xds_cluster.h ) - s.files += %w( src/core/ext/xds/xds_cluster_specifier_plugin.cc ) - s.files += %w( src/core/ext/xds/xds_cluster_specifier_plugin.h ) - s.files += %w( src/core/ext/xds/xds_common_types.cc ) - s.files += %w( src/core/ext/xds/xds_common_types.h ) - s.files += %w( src/core/ext/xds/xds_endpoint.cc ) - s.files += %w( src/core/ext/xds/xds_endpoint.h ) - s.files += %w( src/core/ext/xds/xds_health_status.cc ) - s.files += %w( src/core/ext/xds/xds_health_status.h ) - s.files += %w( src/core/ext/xds/xds_http_fault_filter.cc ) - s.files += %w( src/core/ext/xds/xds_http_fault_filter.h ) - s.files += %w( src/core/ext/xds/xds_http_filters.cc ) - s.files += %w( src/core/ext/xds/xds_http_filters.h ) - s.files += %w( src/core/ext/xds/xds_http_rbac_filter.cc ) - s.files += %w( src/core/ext/xds/xds_http_rbac_filter.h ) - s.files += %w( src/core/ext/xds/xds_http_stateful_session_filter.cc ) - s.files += %w( src/core/ext/xds/xds_http_stateful_session_filter.h ) - s.files += %w( src/core/ext/xds/xds_lb_policy_registry.cc ) - s.files += %w( src/core/ext/xds/xds_lb_policy_registry.h ) - s.files += %w( src/core/ext/xds/xds_listener.cc ) - s.files += %w( src/core/ext/xds/xds_listener.h ) - s.files += %w( src/core/ext/xds/xds_metrics.h ) - s.files += %w( src/core/ext/xds/xds_resource_type.h ) - s.files += %w( src/core/ext/xds/xds_resource_type_impl.h ) - s.files += %w( src/core/ext/xds/xds_route_config.cc ) - s.files += %w( src/core/ext/xds/xds_route_config.h ) - s.files += %w( src/core/ext/xds/xds_routing.cc ) - s.files += %w( src/core/ext/xds/xds_routing.h ) - s.files += %w( src/core/ext/xds/xds_server_config_fetcher.cc ) - s.files += %w( src/core/ext/xds/xds_transport.h ) - s.files += %w( src/core/ext/xds/xds_transport_grpc.cc ) - s.files += %w( src/core/ext/xds/xds_transport_grpc.h ) + s.files += %w( src/core/handshaker/endpoint_info/endpoint_info_handshaker.cc ) + s.files += %w( src/core/handshaker/endpoint_info/endpoint_info_handshaker.h ) + s.files += %w( src/core/handshaker/handshaker.cc ) + s.files += %w( src/core/handshaker/handshaker.h ) + s.files += %w( src/core/handshaker/handshaker_factory.h ) + s.files += %w( src/core/handshaker/handshaker_registry.cc ) + s.files += %w( src/core/handshaker/handshaker_registry.h ) + s.files += %w( src/core/handshaker/http_connect/http_connect_handshaker.cc ) + s.files += %w( src/core/handshaker/http_connect/http_connect_handshaker.h ) + s.files += %w( src/core/handshaker/http_connect/http_proxy_mapper.cc ) + s.files += %w( src/core/handshaker/http_connect/http_proxy_mapper.h ) + s.files += %w( src/core/handshaker/proxy_mapper.h ) + s.files += %w( src/core/handshaker/proxy_mapper_registry.cc ) + s.files += %w( src/core/handshaker/proxy_mapper_registry.h ) + s.files += %w( src/core/handshaker/security/secure_endpoint.cc ) + s.files += %w( src/core/handshaker/security/secure_endpoint.h ) + s.files += %w( src/core/handshaker/security/security_handshaker.cc ) + s.files += %w( src/core/handshaker/security/security_handshaker.h ) + s.files += %w( src/core/handshaker/security/tsi_error.cc ) + s.files += %w( src/core/handshaker/security/tsi_error.h ) + s.files += %w( src/core/handshaker/tcp_connect/tcp_connect_handshaker.cc ) + s.files += %w( src/core/handshaker/tcp_connect/tcp_connect_handshaker.h ) s.files += %w( src/core/lib/address_utils/parse_address.cc ) s.files += %w( src/core/lib/address_utils/parse_address.h ) s.files += %w( src/core/lib/address_utils/sockaddr_utils.cc ) @@ -1150,12 +1113,6 @@ Gem::Specification.new do |s| s.files += %w( src/core/lib/channel/channel_stack_builder_impl.h ) s.files += %w( src/core/lib/channel/channel_stack_trace.cc ) s.files += %w( src/core/lib/channel/channel_stack_trace.h ) - s.files += %w( src/core/lib/channel/channel_trace.cc ) - s.files += %w( src/core/lib/channel/channel_trace.h ) - s.files += %w( src/core/lib/channel/channelz.cc ) - s.files += %w( src/core/lib/channel/channelz.h ) - s.files += %w( src/core/lib/channel/channelz_registry.cc ) - s.files += %w( src/core/lib/channel/channelz_registry.h ) s.files += %w( src/core/lib/channel/connected_channel.cc ) s.files += %w( src/core/lib/channel/connected_channel.h ) s.files += %w( src/core/lib/channel/context.h ) @@ -1163,8 +1120,6 @@ Gem::Specification.new do |s| s.files += %w( src/core/lib/channel/metrics.h ) s.files += %w( src/core/lib/channel/promise_based_filter.cc ) s.files += %w( src/core/lib/channel/promise_based_filter.h ) - s.files += %w( src/core/lib/channel/server_call_tracer_filter.cc ) - s.files += %w( src/core/lib/channel/server_call_tracer_filter.h ) s.files += %w( src/core/lib/channel/status_util.cc ) s.files += %w( src/core/lib/channel/status_util.h ) s.files += %w( src/core/lib/channel/tcp_tracer.h ) @@ -1306,39 +1261,6 @@ Gem::Specification.new do |s| s.files += %w( src/core/lib/experiments/config.h ) s.files += %w( src/core/lib/experiments/experiments.cc ) s.files += %w( src/core/lib/experiments/experiments.h ) - s.files += %w( src/core/lib/gpr/alloc.cc ) - s.files += %w( src/core/lib/gpr/alloc.h ) - s.files += %w( src/core/lib/gpr/android/log.cc ) - s.files += %w( src/core/lib/gpr/atm.cc ) - s.files += %w( src/core/lib/gpr/iphone/cpu.cc ) - s.files += %w( src/core/lib/gpr/linux/cpu.cc ) - s.files += %w( src/core/lib/gpr/linux/log.cc ) - s.files += %w( src/core/lib/gpr/log.cc ) - s.files += %w( src/core/lib/gpr/log_internal.h ) - s.files += %w( src/core/lib/gpr/msys/tmpfile.cc ) - s.files += %w( src/core/lib/gpr/posix/cpu.cc ) - s.files += %w( src/core/lib/gpr/posix/log.cc ) - s.files += %w( src/core/lib/gpr/posix/string.cc ) - s.files += %w( src/core/lib/gpr/posix/sync.cc ) - s.files += %w( src/core/lib/gpr/posix/time.cc ) - s.files += %w( src/core/lib/gpr/posix/tmpfile.cc ) - s.files += %w( src/core/lib/gpr/spinlock.h ) - s.files += %w( src/core/lib/gpr/string.cc ) - s.files += %w( src/core/lib/gpr/string.h ) - s.files += %w( src/core/lib/gpr/sync.cc ) - s.files += %w( src/core/lib/gpr/sync_abseil.cc ) - s.files += %w( src/core/lib/gpr/time.cc ) - s.files += %w( src/core/lib/gpr/time_precise.cc ) - s.files += %w( src/core/lib/gpr/time_precise.h ) - s.files += %w( src/core/lib/gpr/tmpfile.h ) - s.files += %w( src/core/lib/gpr/useful.h ) - s.files += %w( src/core/lib/gpr/windows/cpu.cc ) - s.files += %w( src/core/lib/gpr/windows/log.cc ) - s.files += %w( src/core/lib/gpr/windows/string.cc ) - s.files += %w( src/core/lib/gpr/windows/string_util.cc ) - s.files += %w( src/core/lib/gpr/windows/sync.cc ) - s.files += %w( src/core/lib/gpr/windows/time.cc ) - s.files += %w( src/core/lib/gpr/windows/tmpfile.cc ) s.files += %w( src/core/lib/gprpp/atomic_utils.h ) s.files += %w( src/core/lib/gprpp/bitset.h ) s.files += %w( src/core/lib/gprpp/chunked_vector.h ) @@ -1412,9 +1334,6 @@ Gem::Specification.new do |s| s.files += %w( src/core/lib/gprpp/work_serializer.cc ) s.files += %w( src/core/lib/gprpp/work_serializer.h ) s.files += %w( src/core/lib/gprpp/xxhash_inline.h ) - s.files += %w( src/core/lib/handshaker/proxy_mapper.h ) - s.files += %w( src/core/lib/handshaker/proxy_mapper_registry.cc ) - s.files += %w( src/core/lib/handshaker/proxy_mapper_registry.h ) s.files += %w( src/core/lib/http/format_request.cc ) s.files += %w( src/core/lib/http/format_request.h ) s.files += %w( src/core/lib/http/httpcli.cc ) @@ -1742,13 +1661,7 @@ Gem::Specification.new do |s| s.files += %w( src/core/lib/security/security_connector/tls/tls_security_connector.h ) s.files += %w( src/core/lib/security/transport/auth_filters.h ) s.files += %w( src/core/lib/security/transport/client_auth_filter.cc ) - s.files += %w( src/core/lib/security/transport/secure_endpoint.cc ) - s.files += %w( src/core/lib/security/transport/secure_endpoint.h ) - s.files += %w( src/core/lib/security/transport/security_handshaker.cc ) - s.files += %w( src/core/lib/security/transport/security_handshaker.h ) s.files += %w( src/core/lib/security/transport/server_auth_filter.cc ) - s.files += %w( src/core/lib/security/transport/tsi_error.cc ) - s.files += %w( src/core/lib/security/transport/tsi_error.h ) s.files += %w( src/core/lib/security/util/json_util.cc ) s.files += %w( src/core/lib/security/util/json_util.h ) s.files += %w( src/core/lib/slice/percent_encoding.cc ) @@ -1795,9 +1708,6 @@ Gem::Specification.new do |s| s.files += %w( src/core/lib/surface/legacy_channel.cc ) s.files += %w( src/core/lib/surface/legacy_channel.h ) s.files += %w( src/core/lib/surface/metadata_array.cc ) - s.files += %w( src/core/lib/surface/server.cc ) - s.files += %w( src/core/lib/surface/server.h ) - s.files += %w( src/core/lib/surface/server_interface.h ) s.files += %w( src/core/lib/surface/validate_metadata.cc ) s.files += %w( src/core/lib/surface/validate_metadata.h ) s.files += %w( src/core/lib/surface/version.cc ) @@ -1807,29 +1717,23 @@ Gem::Specification.new do |s| s.files += %w( src/core/lib/transport/batch_builder.h ) s.files += %w( src/core/lib/transport/bdp_estimator.cc ) s.files += %w( src/core/lib/transport/bdp_estimator.h ) + s.files += %w( src/core/lib/transport/call_arena_allocator.cc ) + s.files += %w( src/core/lib/transport/call_arena_allocator.h ) + s.files += %w( src/core/lib/transport/call_destination.h ) s.files += %w( src/core/lib/transport/call_filters.cc ) s.files += %w( src/core/lib/transport/call_filters.h ) s.files += %w( src/core/lib/transport/call_final_info.cc ) s.files += %w( src/core/lib/transport/call_final_info.h ) - s.files += %w( src/core/lib/transport/call_size_estimator.cc ) - s.files += %w( src/core/lib/transport/call_size_estimator.h ) s.files += %w( src/core/lib/transport/call_spine.cc ) s.files += %w( src/core/lib/transport/call_spine.h ) s.files += %w( src/core/lib/transport/connectivity_state.cc ) s.files += %w( src/core/lib/transport/connectivity_state.h ) s.files += %w( src/core/lib/transport/custom_metadata.h ) - s.files += %w( src/core/lib/transport/endpoint_info_handshaker.cc ) - s.files += %w( src/core/lib/transport/endpoint_info_handshaker.h ) s.files += %w( src/core/lib/transport/error_utils.cc ) s.files += %w( src/core/lib/transport/error_utils.h ) - s.files += %w( src/core/lib/transport/handshaker.cc ) - s.files += %w( src/core/lib/transport/handshaker.h ) - s.files += %w( src/core/lib/transport/handshaker_factory.h ) - s.files += %w( src/core/lib/transport/handshaker_registry.cc ) - s.files += %w( src/core/lib/transport/handshaker_registry.h ) s.files += %w( src/core/lib/transport/http2_errors.h ) - s.files += %w( src/core/lib/transport/http_connect_handshaker.cc ) - s.files += %w( src/core/lib/transport/http_connect_handshaker.h ) + s.files += %w( src/core/lib/transport/interception_chain.cc ) + s.files += %w( src/core/lib/transport/interception_chain.h ) s.files += %w( src/core/lib/transport/message.cc ) s.files += %w( src/core/lib/transport/message.h ) s.files += %w( src/core/lib/transport/metadata.cc ) @@ -1844,8 +1748,6 @@ Gem::Specification.new do |s| s.files += %w( src/core/lib/transport/simple_slice_based_metadata.h ) s.files += %w( src/core/lib/transport/status_conversion.cc ) s.files += %w( src/core/lib/transport/status_conversion.h ) - s.files += %w( src/core/lib/transport/tcp_connect_handshaker.cc ) - s.files += %w( src/core/lib/transport/tcp_connect_handshaker.h ) s.files += %w( src/core/lib/transport/timeout_encoding.cc ) s.files += %w( src/core/lib/transport/timeout_encoding.h ) s.files += %w( src/core/lib/transport/transport.cc ) @@ -1948,6 +1850,17 @@ Gem::Specification.new do |s| s.files += %w( src/core/resolver/xds/xds_resolver_attributes.h ) s.files += %w( src/core/resolver/xds/xds_resolver_trace.cc ) s.files += %w( src/core/resolver/xds/xds_resolver_trace.h ) + s.files += %w( src/core/server/server.cc ) + s.files += %w( src/core/server/server.h ) + s.files += %w( src/core/server/server_call_tracer_filter.cc ) + s.files += %w( src/core/server/server_call_tracer_filter.h ) + s.files += %w( src/core/server/server_config_selector.h ) + s.files += %w( src/core/server/server_config_selector_filter.cc ) + s.files += %w( src/core/server/server_config_selector_filter.h ) + s.files += %w( src/core/server/server_interface.h ) + s.files += %w( src/core/server/xds_channel_stack_modifier.cc ) + s.files += %w( src/core/server/xds_channel_stack_modifier.h ) + s.files += %w( src/core/server/xds_server_config_fetcher.cc ) s.files += %w( src/core/service_config/service_config.h ) s.files += %w( src/core/service_config/service_config_call_data.h ) s.files += %w( src/core/service_config/service_config_channel_arg_filter.cc ) @@ -2013,6 +1926,92 @@ Gem::Specification.new do |s| s.files += %w( src/core/tsi/transport_security_grpc.cc ) s.files += %w( src/core/tsi/transport_security_grpc.h ) s.files += %w( src/core/tsi/transport_security_interface.h ) + s.files += %w( src/core/util/alloc.cc ) + s.files += %w( src/core/util/alloc.h ) + s.files += %w( src/core/util/android/log.cc ) + s.files += %w( src/core/util/atm.cc ) + s.files += %w( src/core/util/iphone/cpu.cc ) + s.files += %w( src/core/util/linux/cpu.cc ) + s.files += %w( src/core/util/linux/log.cc ) + s.files += %w( src/core/util/log.cc ) + s.files += %w( src/core/util/msys/tmpfile.cc ) + s.files += %w( src/core/util/posix/cpu.cc ) + s.files += %w( src/core/util/posix/log.cc ) + s.files += %w( src/core/util/posix/string.cc ) + s.files += %w( src/core/util/posix/sync.cc ) + s.files += %w( src/core/util/posix/time.cc ) + s.files += %w( src/core/util/posix/tmpfile.cc ) + s.files += %w( src/core/util/spinlock.h ) + s.files += %w( src/core/util/string.cc ) + s.files += %w( src/core/util/string.h ) + s.files += %w( src/core/util/sync.cc ) + s.files += %w( src/core/util/sync_abseil.cc ) + s.files += %w( src/core/util/time.cc ) + s.files += %w( src/core/util/time_precise.cc ) + s.files += %w( src/core/util/time_precise.h ) + s.files += %w( src/core/util/tmpfile.h ) + s.files += %w( src/core/util/useful.h ) + s.files += %w( src/core/util/windows/cpu.cc ) + s.files += %w( src/core/util/windows/log.cc ) + s.files += %w( src/core/util/windows/string.cc ) + s.files += %w( src/core/util/windows/string_util.cc ) + s.files += %w( src/core/util/windows/sync.cc ) + s.files += %w( src/core/util/windows/time.cc ) + s.files += %w( src/core/util/windows/tmpfile.cc ) + s.files += %w( src/core/xds/grpc/certificate_provider_store.cc ) + s.files += %w( src/core/xds/grpc/certificate_provider_store.h ) + s.files += %w( src/core/xds/grpc/file_watcher_certificate_provider_factory.cc ) + s.files += %w( src/core/xds/grpc/file_watcher_certificate_provider_factory.h ) + s.files += %w( src/core/xds/grpc/upb_utils.h ) + s.files += %w( src/core/xds/grpc/xds_audit_logger_registry.cc ) + s.files += %w( src/core/xds/grpc/xds_audit_logger_registry.h ) + s.files += %w( src/core/xds/grpc/xds_bootstrap_grpc.cc ) + s.files += %w( src/core/xds/grpc/xds_bootstrap_grpc.h ) + s.files += %w( src/core/xds/grpc/xds_certificate_provider.cc ) + s.files += %w( src/core/xds/grpc/xds_certificate_provider.h ) + s.files += %w( src/core/xds/grpc/xds_client_grpc.cc ) + s.files += %w( src/core/xds/grpc/xds_client_grpc.h ) + s.files += %w( src/core/xds/grpc/xds_cluster.cc ) + s.files += %w( src/core/xds/grpc/xds_cluster.h ) + s.files += %w( src/core/xds/grpc/xds_cluster_specifier_plugin.cc ) + s.files += %w( src/core/xds/grpc/xds_cluster_specifier_plugin.h ) + s.files += %w( src/core/xds/grpc/xds_common_types.cc ) + s.files += %w( src/core/xds/grpc/xds_common_types.h ) + s.files += %w( src/core/xds/grpc/xds_endpoint.cc ) + s.files += %w( src/core/xds/grpc/xds_endpoint.h ) + s.files += %w( src/core/xds/grpc/xds_health_status.cc ) + s.files += %w( src/core/xds/grpc/xds_health_status.h ) + s.files += %w( src/core/xds/grpc/xds_http_fault_filter.cc ) + s.files += %w( src/core/xds/grpc/xds_http_fault_filter.h ) + s.files += %w( src/core/xds/grpc/xds_http_filters.cc ) + s.files += %w( src/core/xds/grpc/xds_http_filters.h ) + s.files += %w( src/core/xds/grpc/xds_http_rbac_filter.cc ) + s.files += %w( src/core/xds/grpc/xds_http_rbac_filter.h ) + s.files += %w( src/core/xds/grpc/xds_http_stateful_session_filter.cc ) + s.files += %w( src/core/xds/grpc/xds_http_stateful_session_filter.h ) + s.files += %w( src/core/xds/grpc/xds_lb_policy_registry.cc ) + s.files += %w( src/core/xds/grpc/xds_lb_policy_registry.h ) + s.files += %w( src/core/xds/grpc/xds_listener.cc ) + s.files += %w( src/core/xds/grpc/xds_listener.h ) + s.files += %w( src/core/xds/grpc/xds_route_config.cc ) + s.files += %w( src/core/xds/grpc/xds_route_config.h ) + s.files += %w( src/core/xds/grpc/xds_routing.cc ) + s.files += %w( src/core/xds/grpc/xds_routing.h ) + s.files += %w( src/core/xds/grpc/xds_transport_grpc.cc ) + s.files += %w( src/core/xds/grpc/xds_transport_grpc.h ) + s.files += %w( src/core/xds/xds_client/xds_api.cc ) + s.files += %w( src/core/xds/xds_client/xds_api.h ) + s.files += %w( src/core/xds/xds_client/xds_bootstrap.cc ) + s.files += %w( src/core/xds/xds_client/xds_bootstrap.h ) + s.files += %w( src/core/xds/xds_client/xds_channel_args.h ) + s.files += %w( src/core/xds/xds_client/xds_client.cc ) + s.files += %w( src/core/xds/xds_client/xds_client.h ) + s.files += %w( src/core/xds/xds_client/xds_client_stats.cc ) + s.files += %w( src/core/xds/xds_client/xds_client_stats.h ) + s.files += %w( src/core/xds/xds_client/xds_metrics.h ) + s.files += %w( src/core/xds/xds_client/xds_resource_type.h ) + s.files += %w( src/core/xds/xds_client/xds_resource_type_impl.h ) + s.files += %w( src/core/xds/xds_client/xds_transport.h ) s.files += %w( third_party/abseil-cpp/absl/algorithm/algorithm.h ) s.files += %w( third_party/abseil-cpp/absl/algorithm/container.h ) s.files += %w( third_party/abseil-cpp/absl/base/attributes.h ) @@ -2180,9 +2179,13 @@ Gem::Specification.new do |s| s.files += %w( third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc ) s.files += %w( third_party/abseil-cpp/absl/hash/internal/low_level_hash.h ) s.files += %w( third_party/abseil-cpp/absl/log/absl_vlog_is_on.h ) + s.files += %w( third_party/abseil-cpp/absl/log/check.h ) s.files += %w( third_party/abseil-cpp/absl/log/globals.cc ) s.files += %w( third_party/abseil-cpp/absl/log/globals.h ) s.files += %w( third_party/abseil-cpp/absl/log/internal/append_truncated.h ) + s.files += %w( third_party/abseil-cpp/absl/log/internal/check_impl.h ) + s.files += %w( third_party/abseil-cpp/absl/log/internal/check_op.cc ) + s.files += %w( third_party/abseil-cpp/absl/log/internal/check_op.h ) s.files += %w( third_party/abseil-cpp/absl/log/internal/conditions.cc ) s.files += %w( third_party/abseil-cpp/absl/log/internal/conditions.h ) s.files += %w( third_party/abseil-cpp/absl/log/internal/config.h ) @@ -2448,7 +2451,6 @@ Gem::Specification.new do |s| s.files += %w( third_party/address_sorting/address_sorting_posix.c ) s.files += %w( third_party/address_sorting/address_sorting_windows.c ) s.files += %w( third_party/address_sorting/include/address_sorting/address_sorting.h ) - s.files += %w( third_party/boringssl-with-bazel/err_data.c ) s.files += %w( third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c ) s.files += %w( third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c ) s.files += %w( third_party/boringssl-with-bazel/src/crypto/asn1/a_d2i_fp.c ) @@ -2554,6 +2556,8 @@ Gem::Specification.new do |s| s.files += %w( third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c ) s.files += %w( third_party/boringssl-with-bazel/src/crypto/evp/evp_ctx.c ) s.files += %w( third_party/boringssl-with-bazel/src/crypto/evp/internal.h ) + s.files += %w( third_party/boringssl-with-bazel/src/crypto/evp/p_dh.c ) + s.files += %w( third_party/boringssl-with-bazel/src/crypto/evp/p_dh_asn1.c ) s.files += %w( third_party/boringssl-with-bazel/src/crypto/evp/p_dsa_asn1.c ) s.files += %w( third_party/boringssl-with-bazel/src/crypto/evp/p_ec.c ) s.files += %w( third_party/boringssl-with-bazel/src/crypto/evp/p_ec_asn1.c ) @@ -2724,7 +2728,6 @@ Gem::Specification.new do |s| s.files += %w( third_party/boringssl-with-bazel/src/crypto/spx/address.h ) s.files += %w( third_party/boringssl-with-bazel/src/crypto/spx/fors.c ) s.files += %w( third_party/boringssl-with-bazel/src/crypto/spx/fors.h ) - s.files += %w( third_party/boringssl-with-bazel/src/crypto/spx/internal.h ) s.files += %w( third_party/boringssl-with-bazel/src/crypto/spx/merkle.c ) s.files += %w( third_party/boringssl-with-bazel/src/crypto/spx/merkle.h ) s.files += %w( third_party/boringssl-with-bazel/src/crypto/spx/params.h ) @@ -2816,6 +2819,7 @@ Gem::Specification.new do |s| s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/x_val.c ) s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c ) s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c ) + s.files += %w( third_party/boringssl-with-bazel/src/gen/crypto/err_data.c ) s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/aead.h ) s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/aes.h ) s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h ) @@ -2856,13 +2860,14 @@ Gem::Specification.new do |s| s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/evp.h ) s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/evp_errors.h ) s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/ex_data.h ) + s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/experimental/kyber.h ) + s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/experimental/spx.h ) s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/hkdf.h ) s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/hmac.h ) s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/hpke.h ) s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/hrss.h ) s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/is_boringssl.h ) s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/kdf.h ) - s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/kyber.h ) s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/lhash.h ) s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/md4.h ) s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/md5.h ) @@ -2878,8 +2883,6 @@ Gem::Specification.new do |s| s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/pkcs12.h ) s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h ) s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h ) - s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/pki/certificate.h ) - s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/pki/signature_verify_cache.h ) s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/poly1305.h ) s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/pool.h ) s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/posix_time.h ) @@ -2928,6 +2931,7 @@ Gem::Specification.new do |s| s.files += %w( third_party/boringssl-with-bazel/src/ssl/ssl_buffer.cc ) s.files += %w( third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc ) s.files += %w( third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc ) + s.files += %w( third_party/boringssl-with-bazel/src/ssl/ssl_credential.cc ) s.files += %w( third_party/boringssl-with-bazel/src/ssl/ssl_file.cc ) s.files += %w( third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc ) s.files += %w( third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc ) diff --git a/include/grpc/impl/channel_arg_names.h b/include/grpc/impl/channel_arg_names.h index 7ba19bebb17..663e9620a34 100644 --- a/include/grpc/impl/channel_arg_names.h +++ b/include/grpc/impl/channel_arg_names.h @@ -67,9 +67,6 @@ application will see the compressed message in the byte buffer. */ #define GRPC_ARG_ENABLE_PER_MESSAGE_DECOMPRESSION \ "grpc.per_message_decompression" -/** Enable/disable support for deadline checking. Defaults to 1, unless - GRPC_ARG_MINIMAL_STACK is enabled, in which case it defaults to 0 */ -#define GRPC_ARG_ENABLE_DEADLINE_CHECKS "grpc.enable_deadline_checking" /** Initial stream ID for http2 transports. Int valued. */ #define GRPC_ARG_HTTP2_INITIAL_SEQUENCE_NUMBER \ "grpc.http2.initial_sequence_number" diff --git a/include/grpc/module.modulemap b/include/grpc/module.modulemap index c9219532826..30427e21d05 100644 --- a/include/grpc/module.modulemap +++ b/include/grpc/module.modulemap @@ -38,6 +38,7 @@ header "byte_buffer.h" header "impl/propagation_bits.h" header "impl/slice_type.h" header "load_reporting.h" + header "passive_listener.h" header "slice.h" header "slice_buffer.h" header "status.h" diff --git a/include/grpc/passive_listener.h b/include/grpc/passive_listener.h new file mode 100644 index 00000000000..fffc789dba0 --- /dev/null +++ b/include/grpc/passive_listener.h @@ -0,0 +1,62 @@ +// Copyright 2024 The 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. +#ifndef GRPC_PASSIVE_LISTENER_H +#define GRPC_PASSIVE_LISTENER_H + +#include + +#include +#include +// #include + +namespace grpc_core { +class Server; + +namespace experimental { +class PassiveListenerImpl; + +/// -- EXPERIMENTAL API -- +/// Interface for used for Server Endpoint injection. +class PassiveListener { + public: + virtual ~PassiveListener() = default; + /// -- EXPERIMENTAL API -- + /// + /// Takes an Endpoint for an established connection, and treats it as if the + /// connection had been accepted by the server. + /// + /// The server must be started before endpoints can be accepted. + virtual absl::Status AcceptConnectedEndpoint( + std::unique_ptr + endpoint) = 0; + + /// -- EXPERIMENTAL API -- + /// + /// Takes a connected file descriptor, and treats it as if the server had + /// accepted the connection itself. + /// + /// Returns a failure status if the server's active EventEngine does not + /// support Endpoint creation from fds. + virtual absl::Status AcceptConnectedFd(int fd) = 0; +}; + +} // namespace experimental +} // namespace grpc_core + +absl::Status grpc_server_add_passive_listener( + grpc_core::Server* server, grpc_server_credentials* credentials, + std::shared_ptr + passive_listener); + +#endif /* GRPC_PASSIVE_LISTENER_H */ diff --git a/include/grpc/support/log.h b/include/grpc/support/log.h index 6e5cf4b7157..2cba30164ff 100644 --- a/include/grpc/support/log.h +++ b/include/grpc/support/log.h @@ -99,12 +99,6 @@ GPRAPI void gpr_assertion_failed(const char* filename, int line, } \ } while (0) -#ifndef NDEBUG -#define GPR_DEBUG_ASSERT(x) GPR_ASSERT(x) -#else -#define GPR_DEBUG_ASSERT(x) GPR_ASSERT(true || (x)) -#endif - #ifdef __cplusplus } #endif diff --git a/include/grpcpp/client_context.h b/include/grpcpp/client_context.h index 7493f6a8601..2328e3e6fc6 100644 --- a/include/grpcpp/client_context.h +++ b/include/grpcpp/client_context.h @@ -38,6 +38,8 @@ #include #include +#include "absl/log/check.h" + #include #include #include @@ -246,7 +248,7 @@ class ClientContext { /// \return A multimap of initial metadata key-value pairs from the server. const std::multimap& GetServerInitialMetadata() const { - GPR_ASSERT(initial_metadata_received_); + CHECK(initial_metadata_received_); return *recv_initial_metadata_.map(); } diff --git a/include/grpcpp/completion_queue.h b/include/grpcpp/completion_queue.h index 23c98e09749..bfd138b5945 100644 --- a/include/grpcpp/completion_queue.h +++ b/include/grpcpp/completion_queue.h @@ -34,6 +34,8 @@ #include +#include "absl/log/check.h" + #include #include #include @@ -323,7 +325,7 @@ class CompletionQueue : private grpc::internal::GrpcLibrary { bool ok = ev.success != 0; void* ignored = tag; if (tag->FinalizeResult(&ignored, &ok)) { - GPR_ASSERT(ignored == tag); + CHECK(ignored == tag); return ok; } } @@ -344,7 +346,7 @@ class CompletionQueue : private grpc::internal::GrpcLibrary { bool ok = ev.success != 0; void* ignored = tag; // the tag must be swallowed if using TryPluck - GPR_ASSERT(!tag->FinalizeResult(&ignored, &ok)); + CHECK(!tag->FinalizeResult(&ignored, &ok)); } /// Performs a single polling pluck on \a tag. Calls tag->FinalizeResult if @@ -361,7 +363,7 @@ class CompletionQueue : private grpc::internal::GrpcLibrary { bool ok = ev.success != 0; void* ignored = tag; - GPR_ASSERT(!tag->FinalizeResult(&ignored, &ok)); + CHECK(!tag->FinalizeResult(&ignored, &ok)); } /// Manage state of avalanching operations : completion queue tags that diff --git a/include/grpcpp/ext/otel_plugin.h b/include/grpcpp/ext/otel_plugin.h index c9327d68d09..1b6bb9eb762 100644 --- a/include/grpcpp/ext/otel_plugin.h +++ b/include/grpcpp/ext/otel_plugin.h @@ -88,11 +88,25 @@ class OpenTelemetryPluginBuilder { /// If `SetMeterProvider()` is not called, no metrics are collected. OpenTelemetryPluginBuilder& SetMeterProvider( std::shared_ptr meter_provider); - /// If set, \a target_attribute_filter is called per channel to decide whether - /// to record the target attribute on client or to replace it with "other". - /// This helps reduce the cardinality on metrics in cases where many channels - /// are created with different targets in the same binary (which might happen - /// for example, if the channel target string uses IP addresses directly). + /// DEPRECATED: If set, \a target_attribute_filter is called per channel to + /// decide whether to record the target attribute on client or to replace it + /// with "other". This helps reduce the cardinality on metrics in cases where + /// many channels are created with different targets in the same binary (which + /// might happen for example, if the channel target string uses IP addresses + /// directly). + /// This filtration only works for the per-call metrics - + /// grpc.client.attempt.started + /// grpc.client.attempt.duration + /// grpc.client.attempt.sent_total_compressed_message_size + /// grpc.client.attempt.rcvd_total_compressed_message_size + /// For example, the grpc.target attribute on pick first lb policy metrics + /// defined in + /// https://github.com/grpc/proposal/blob/master/A78-grpc-metrics-wrr-pf-xds.md + /// will not be filtered. Please contact the grpc team if this filtration is + /// of interest to you. + GRPC_DEPRECATED( + "Does not work as expected. Please raise an issue on " + "https://github.com/grpc/grpc if this would be of use to you.") OpenTelemetryPluginBuilder& SetTargetAttributeFilter( absl::AnyInvocable target_attribute_filter); diff --git a/include/grpcpp/impl/call_op_set.h b/include/grpcpp/impl/call_op_set.h index 48c958a96f6..56ce6289082 100644 --- a/include/grpcpp/impl/call_op_set.h +++ b/include/grpcpp/impl/call_op_set.h @@ -23,6 +23,8 @@ #include #include +#include "absl/log/check.h" + #include #include #include @@ -316,7 +318,7 @@ class CallOpSendMessage { return; } if (msg_ != nullptr) { - GPR_ASSERT(serializer_(msg_).ok()); + CHECK(serializer_(msg_).ok()); } serializer_ = nullptr; grpc_op* op = &ops[(*nops)++]; @@ -795,7 +797,7 @@ class CallOpClientRecvStatus { if (recv_status_ == nullptr || hijacked_) return; if (static_cast(status_code_) == StatusCode::OK) { *recv_status_ = Status(); - GPR_DEBUG_ASSERT(debug_error_string_ == nullptr); + DCHECK_EQ(debug_error_string_, nullptr); } else { *recv_status_ = Status(static_cast(status_code_), @@ -974,7 +976,7 @@ class CallOpSet : public CallOpSetInterface, // WritesDone multiple times gpr_log(GPR_ERROR, "API misuse of type %s observed", grpc_call_error_to_string(err)); - GPR_ASSERT(false); + CHECK(false); } } @@ -984,8 +986,8 @@ class CallOpSet : public CallOpSetInterface, done_intercepting_ = true; // The following call_start_batch is internally-generated so no need for an // explanatory log on failure. - GPR_ASSERT(grpc_call_start_batch(call_.call(), nullptr, 0, core_cq_tag(), - nullptr) == GRPC_CALL_OK); + CHECK(grpc_call_start_batch(call_.call(), nullptr, 0, core_cq_tag(), + nullptr) == GRPC_CALL_OK); } private: diff --git a/include/grpcpp/impl/interceptor_common.h b/include/grpcpp/impl/interceptor_common.h index 81e66df4095..f8b104ba89c 100644 --- a/include/grpcpp/impl/interceptor_common.h +++ b/include/grpcpp/impl/interceptor_common.h @@ -22,6 +22,8 @@ #include #include +#include "absl/log/check.h" + #include #include #include @@ -56,16 +58,15 @@ class InterceptorBatchMethodsImpl if (call_->client_rpc_info() != nullptr) { return ProceedClient(); } - GPR_ASSERT(call_->server_rpc_info() != nullptr); + CHECK_NE(call_->server_rpc_info(), nullptr); ProceedServer(); } void Hijack() override { // Only the client can hijack when sending down initial metadata - GPR_ASSERT(!reverse_ && ops_ != nullptr && - call_->client_rpc_info() != nullptr); + CHECK(!reverse_ && ops_ != nullptr && call_->client_rpc_info() != nullptr); // It is illegal to call Hijack twice - GPR_ASSERT(!ran_hijacking_interceptor_); + CHECK(!ran_hijacking_interceptor_); auto* rpc_info = call_->client_rpc_info(); rpc_info->hijacked_ = true; rpc_info->hijacked_interceptor_ = current_interceptor_index_; @@ -80,21 +81,21 @@ class InterceptorBatchMethodsImpl } ByteBuffer* GetSerializedSendMessage() override { - GPR_ASSERT(orig_send_message_ != nullptr); + CHECK_NE(orig_send_message_, nullptr); if (*orig_send_message_ != nullptr) { - GPR_ASSERT(serializer_(*orig_send_message_).ok()); + CHECK(serializer_(*orig_send_message_).ok()); *orig_send_message_ = nullptr; } return send_message_; } const void* GetSendMessage() override { - GPR_ASSERT(orig_send_message_ != nullptr); + CHECK_NE(orig_send_message_, nullptr); return *orig_send_message_; } void ModifySendMessage(const void* message) override { - GPR_ASSERT(orig_send_message_ != nullptr); + CHECK_NE(orig_send_message_, nullptr); *orig_send_message_ = message; } @@ -129,7 +130,7 @@ class InterceptorBatchMethodsImpl Status* GetRecvStatus() override { return recv_status_; } void FailHijackedSendMessage() override { - GPR_ASSERT(hooks_[static_cast( + CHECK(hooks_[static_cast( experimental::InterceptionHookPoints::PRE_SEND_MESSAGE)]); *fail_send_message_ = true; } @@ -192,7 +193,7 @@ class InterceptorBatchMethodsImpl } void FailHijackedRecvMessage() override { - GPR_ASSERT(hooks_[static_cast( + CHECK(hooks_[static_cast( experimental::InterceptionHookPoints::PRE_RECV_MESSAGE)]); *hijacked_recv_message_failed_ = true; } @@ -236,7 +237,7 @@ class InterceptorBatchMethodsImpl // ContinueFinalizeOpsAfterInterception will be called. Note that neither of // them is invoked if there were no interceptors registered. bool RunInterceptors() { - GPR_ASSERT(ops_); + CHECK(ops_); auto* client_rpc_info = call_->client_rpc_info(); if (client_rpc_info != nullptr) { if (client_rpc_info->interceptors_.empty()) { @@ -261,8 +262,8 @@ class InterceptorBatchMethodsImpl // SyncRequest. bool RunInterceptors(std::function f) { // This is used only by the server for initial call request - GPR_ASSERT(reverse_ == true); - GPR_ASSERT(call_->client_rpc_info() == nullptr); + CHECK_EQ(reverse_, true); + CHECK_EQ(call_->client_rpc_info(), nullptr); auto* server_rpc_info = call_->server_rpc_info(); if (server_rpc_info == nullptr || server_rpc_info->interceptors_.empty()) { return true; @@ -356,7 +357,7 @@ class InterceptorBatchMethodsImpl return ops_->ContinueFinalizeResultAfterInterception(); } } - GPR_ASSERT(callback_); + CHECK(callback_); callback_(); } @@ -422,112 +423,98 @@ class CancelInterceptorBatchMethods void Hijack() override { // Only the client can hijack when sending down initial metadata - GPR_ASSERT(false && - "It is illegal to call Hijack on a method which has a " - "Cancel notification"); + CHECK(false) << "It is illegal to call Hijack on a method which has a " + "Cancel notification"; } ByteBuffer* GetSerializedSendMessage() override { - GPR_ASSERT(false && - "It is illegal to call GetSendMessage on a method which " - "has a Cancel notification"); + CHECK(false) << "It is illegal to call GetSendMessage on a method which " + "has a Cancel notification"; return nullptr; } bool GetSendMessageStatus() override { - GPR_ASSERT(false && - "It is illegal to call GetSendMessageStatus on a method which " - "has a Cancel notification"); + CHECK(false) + << "It is illegal to call GetSendMessageStatus on a method which " + "has a Cancel notification"; return false; } const void* GetSendMessage() override { - GPR_ASSERT(false && - "It is illegal to call GetOriginalSendMessage on a method which " - "has a Cancel notification"); + CHECK(false) + << "It is illegal to call GetOriginalSendMessage on a method which " + "has a Cancel notification"; return nullptr; } void ModifySendMessage(const void* /*message*/) override { - GPR_ASSERT(false && - "It is illegal to call ModifySendMessage on a method which " - "has a Cancel notification"); + CHECK(false) << "It is illegal to call ModifySendMessage on a method which " + "has a Cancel notification"; } std::multimap* GetSendInitialMetadata() override { - GPR_ASSERT(false && - "It is illegal to call GetSendInitialMetadata on a " - "method which has a Cancel notification"); + CHECK(false) << "It is illegal to call GetSendInitialMetadata on a " + "method which has a Cancel notification"; return nullptr; } Status GetSendStatus() override { - GPR_ASSERT(false && - "It is illegal to call GetSendStatus on a method which " - "has a Cancel notification"); + CHECK(false) << "It is illegal to call GetSendStatus on a method which " + "has a Cancel notification"; return Status(); } void ModifySendStatus(const Status& /*status*/) override { - GPR_ASSERT(false && - "It is illegal to call ModifySendStatus on a method " - "which has a Cancel notification"); + CHECK(false) << "It is illegal to call ModifySendStatus on a method " + "which has a Cancel notification"; } std::multimap* GetSendTrailingMetadata() override { - GPR_ASSERT(false && - "It is illegal to call GetSendTrailingMetadata on a " - "method which has a Cancel notification"); + CHECK(false) << "It is illegal to call GetSendTrailingMetadata on a " + "method which has a Cancel notification"; return nullptr; } void* GetRecvMessage() override { - GPR_ASSERT(false && - "It is illegal to call GetRecvMessage on a method which " - "has a Cancel notification"); + CHECK(false) << "It is illegal to call GetRecvMessage on a method which " + "has a Cancel notification"; return nullptr; } std::multimap* GetRecvInitialMetadata() override { - GPR_ASSERT(false && - "It is illegal to call GetRecvInitialMetadata on a " - "method which has a Cancel notification"); + CHECK(false) << "It is illegal to call GetRecvInitialMetadata on a " + "method which has a Cancel notification"; return nullptr; } Status* GetRecvStatus() override { - GPR_ASSERT(false && - "It is illegal to call GetRecvStatus on a method which " - "has a Cancel notification"); + CHECK(false) << "It is illegal to call GetRecvStatus on a method which " + "has a Cancel notification"; return nullptr; } std::multimap* GetRecvTrailingMetadata() override { - GPR_ASSERT(false && - "It is illegal to call GetRecvTrailingMetadata on a " - "method which has a Cancel notification"); + CHECK(false) << "It is illegal to call GetRecvTrailingMetadata on a " + "method which has a Cancel notification"; return nullptr; } std::unique_ptr GetInterceptedChannel() override { - GPR_ASSERT(false && - "It is illegal to call GetInterceptedChannel on a " - "method which has a Cancel notification"); + CHECK(false) << "It is illegal to call GetInterceptedChannel on a " + "method which has a Cancel notification"; return std::unique_ptr(nullptr); } void FailHijackedRecvMessage() override { - GPR_ASSERT(false && - "It is illegal to call FailHijackedRecvMessage on a " - "method which has a Cancel notification"); + CHECK(false) << "It is illegal to call FailHijackedRecvMessage on a " + "method which has a Cancel notification"; } void FailHijackedSendMessage() override { - GPR_ASSERT(false && - "It is illegal to call FailHijackedSendMessage on a " - "method which has a Cancel notification"); + CHECK(false) << "It is illegal to call FailHijackedSendMessage on a " + "method which has a Cancel notification"; } }; } // namespace internal diff --git a/include/grpcpp/impl/proto_utils.h b/include/grpcpp/impl/proto_utils.h index c6240ffa84d..0cd4d1bdb4b 100644 --- a/include/grpcpp/impl/proto_utils.h +++ b/include/grpcpp/impl/proto_utils.h @@ -21,6 +21,8 @@ #include +#include "absl/log/check.h" + #include #include #include @@ -51,8 +53,8 @@ Status GenericSerialize(const grpc::protobuf::MessageLite& msg, ByteBuffer* bb, if (static_cast(byte_size) <= GRPC_SLICE_INLINED_SIZE) { Slice slice(byte_size); // We serialize directly into the allocated slices memory - GPR_ASSERT(slice.end() == msg.SerializeWithCachedSizesToArray( - const_cast(slice.begin()))); + CHECK(slice.end() == msg.SerializeWithCachedSizesToArray( + const_cast(slice.begin()))); ByteBuffer tmp(&slice, 1); bb->Swap(&tmp); diff --git a/include/grpcpp/impl/rpc_service_method.h b/include/grpcpp/impl/rpc_service_method.h index 73694263cdd..0ce7d7b96fb 100644 --- a/include/grpcpp/impl/rpc_service_method.h +++ b/include/grpcpp/impl/rpc_service_method.h @@ -25,6 +25,8 @@ #include #include +#include "absl/log/check.h" + #include #include #include @@ -75,7 +77,7 @@ class MethodHandler { // retained by the handler. Returns nullptr if deserialization failed. virtual void* Deserialize(grpc_call* /*call*/, grpc_byte_buffer* req, Status* /*status*/, void** /*handler_data*/) { - GPR_ASSERT(req == nullptr); + CHECK_EQ(req, nullptr); return nullptr; } }; diff --git a/include/grpcpp/impl/server_callback_handlers.h b/include/grpcpp/impl/server_callback_handlers.h index b49e17a2c16..f9839973fe9 100644 --- a/include/grpcpp/impl/server_callback_handlers.h +++ b/include/grpcpp/impl/server_callback_handlers.h @@ -18,6 +18,8 @@ #ifndef GRPCPP_IMPL_SERVER_CALLBACK_HANDLERS_H #define GRPCPP_IMPL_SERVER_CALLBACK_HANDLERS_H +#include "absl/log/check.h" + #include #include #include @@ -147,7 +149,7 @@ class CallbackUnaryHandler : public grpc::internal::MethodHandler { } void SendInitialMetadata() override { - GPR_ASSERT(!ctx_->sent_initial_metadata_); + CHECK(!ctx_->sent_initial_metadata_); this->Ref(); // The callback for this function should not be marked inline because it // is directly invoking a user-controlled reaction @@ -335,7 +337,7 @@ class CallbackClientStreamingHandler : public grpc::internal::MethodHandler { } void SendInitialMetadata() override { - GPR_ASSERT(!ctx_->sent_initial_metadata_); + CHECK(!ctx_->sent_initial_metadata_); this->Ref(); // The callback for this function should not be inlined because it invokes // a user-controlled reaction, but any resulting OnDone can be inlined in @@ -539,7 +541,7 @@ class CallbackServerStreamingHandler : public grpc::internal::MethodHandler { } void SendInitialMetadata() override { - GPR_ASSERT(!ctx_->sent_initial_metadata_); + CHECK(!ctx_->sent_initial_metadata_); this->Ref(); // The callback for this function should not be inlined because it invokes // a user-controlled reaction, but any resulting OnDone can be inlined in @@ -577,7 +579,7 @@ class CallbackServerStreamingHandler : public grpc::internal::MethodHandler { ctx_->sent_initial_metadata_ = true; } // TODO(vjpai): don't assert - GPR_ASSERT(write_ops_.SendMessagePtr(resp, options).ok()); + CHECK(write_ops_.SendMessagePtr(resp, options).ok()); call_.PerformOps(&write_ops_); } @@ -585,7 +587,7 @@ class CallbackServerStreamingHandler : public grpc::internal::MethodHandler { grpc::Status s) override { // This combines the write into the finish callback // TODO(vjpai): don't assert - GPR_ASSERT(finish_ops_.SendMessagePtr(resp, options).ok()); + CHECK(finish_ops_.SendMessagePtr(resp, options).ok()); Finish(std::move(s)); } @@ -751,7 +753,7 @@ class CallbackBidiHandler : public grpc::internal::MethodHandler { } void SendInitialMetadata() override { - GPR_ASSERT(!ctx_->sent_initial_metadata_); + CHECK(!ctx_->sent_initial_metadata_); this->Ref(); // The callback for this function should not be inlined because it invokes // a user-controlled reaction, but any resulting OnDone can be inlined in @@ -789,14 +791,14 @@ class CallbackBidiHandler : public grpc::internal::MethodHandler { ctx_->sent_initial_metadata_ = true; } // TODO(vjpai): don't assert - GPR_ASSERT(write_ops_.SendMessagePtr(resp, options).ok()); + CHECK(write_ops_.SendMessagePtr(resp, options).ok()); call_.PerformOps(&write_ops_); } void WriteAndFinish(const ResponseType* resp, grpc::WriteOptions options, grpc::Status s) override { // TODO(vjpai): don't assert - GPR_ASSERT(finish_ops_.SendMessagePtr(resp, options).ok()); + CHECK(finish_ops_.SendMessagePtr(resp, options).ok()); Finish(std::move(s)); } diff --git a/include/grpcpp/impl/service_type.h b/include/grpcpp/impl/service_type.h index 9699e2328d4..c284026a0f6 100644 --- a/include/grpcpp/impl/service_type.h +++ b/include/grpcpp/impl/service_type.h @@ -19,6 +19,8 @@ #ifndef GRPCPP_IMPL_SERVICE_TYPE_H #define GRPCPP_IMPL_SERVICE_TYPE_H +#include "absl/log/check.h" + #include #include #include @@ -150,9 +152,9 @@ class Service { // This does not have to be a hard error, however no one has approached us // with a use case yet. Please file an issue if you believe you have one. size_t idx = static_cast(index); - GPR_ASSERT(methods_[idx].get() != nullptr && - "Cannot mark the method as 'async' because it has already been " - "marked as 'generic'."); + CHECK_NE(methods_[idx].get(), nullptr) + << "Cannot mark the method as 'async' because it has already been " + "marked as 'generic'."; methods_[idx]->SetServerApiType(internal::RpcServiceMethod::ApiType::ASYNC); } @@ -160,9 +162,9 @@ class Service { // This does not have to be a hard error, however no one has approached us // with a use case yet. Please file an issue if you believe you have one. size_t idx = static_cast(index); - GPR_ASSERT(methods_[idx].get() != nullptr && - "Cannot mark the method as 'raw' because it has already " - "been marked as 'generic'."); + CHECK_NE(methods_[idx].get(), nullptr) + << "Cannot mark the method as 'raw' because it has already " + "been marked as 'generic'."; methods_[idx]->SetServerApiType(internal::RpcServiceMethod::ApiType::RAW); } @@ -170,10 +172,9 @@ class Service { // This does not have to be a hard error, however no one has approached us // with a use case yet. Please file an issue if you believe you have one. size_t idx = static_cast(index); - GPR_ASSERT( - methods_[idx]->handler() != nullptr && - "Cannot mark the method as 'generic' because it has already been " - "marked as 'async' or 'raw'."); + CHECK_NE(methods_[idx]->handler(), nullptr) + << "Cannot mark the method as 'generic' because it has already been " + "marked as 'async' or 'raw'."; methods_[idx].reset(); } @@ -181,8 +182,8 @@ class Service { // This does not have to be a hard error, however no one has approached us // with a use case yet. Please file an issue if you believe you have one. size_t idx = static_cast(index); - GPR_ASSERT(methods_[idx] && methods_[idx]->handler() && - "Cannot mark an async or generic method Streamed"); + CHECK(methods_[idx] && methods_[idx]->handler()) + << "Cannot mark an async or generic method Streamed"; methods_[idx]->SetHandler(streamed_method); // From the server's point of view, streamed unary is a special @@ -196,10 +197,9 @@ class Service { // This does not have to be a hard error, however no one has approached us // with a use case yet. Please file an issue if you believe you have one. size_t idx = static_cast(index); - GPR_ASSERT( - methods_[idx].get() != nullptr && - "Cannot mark the method as 'callback' because it has already been " - "marked as 'generic'."); + CHECK_NE(methods_[idx].get(), nullptr) + << "Cannot mark the method as 'callback' because it has already been " + "marked as 'generic'."; methods_[idx]->SetHandler(handler); methods_[idx]->SetServerApiType( internal::RpcServiceMethod::ApiType::CALL_BACK); @@ -209,10 +209,9 @@ class Service { // This does not have to be a hard error, however no one has approached us // with a use case yet. Please file an issue if you believe you have one. size_t idx = static_cast(index); - GPR_ASSERT( - methods_[idx].get() != nullptr && - "Cannot mark the method as 'raw callback' because it has already " - "been marked as 'generic'."); + CHECK_NE(methods_[idx].get(), nullptr) + << "Cannot mark the method as 'raw callback' because it has already " + "been marked as 'generic'."; methods_[idx]->SetHandler(handler); methods_[idx]->SetServerApiType( internal::RpcServiceMethod::ApiType::RAW_CALL_BACK); diff --git a/include/grpcpp/impl/sync.h b/include/grpcpp/impl/sync.h index 2fadf6fab1c..9288459196a 100644 --- a/include/grpcpp/impl/sync.h +++ b/include/grpcpp/impl/sync.h @@ -27,6 +27,7 @@ #include +#include "absl/log/check.h" #include "absl/synchronization/mutex.h" #include @@ -105,7 +106,7 @@ class ABSL_SCOPED_LOCKABLE ReleasableMutexLock { ReleasableMutexLock& operator=(const ReleasableMutexLock&) = delete; void Release() ABSL_UNLOCK_FUNCTION() { - GPR_DEBUG_ASSERT(!released_); + DCHECK(!released_); released_ = true; mu_->Unlock(); } diff --git a/test/core/util/mock_endpoint.h b/include/grpcpp/passive_listener.h similarity index 55% rename from test/core/util/mock_endpoint.h rename to include/grpcpp/passive_listener.h index 3485a96d409..8def9592b5e 100644 --- a/test/core/util/mock_endpoint.h +++ b/include/grpcpp/passive_listener.h @@ -1,6 +1,4 @@ -// -// -// Copyright 2016 gRPC authors. +// Copyright 2024 The gRPC Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -13,18 +11,17 @@ // 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. -// -// +#ifndef GRPCPP_PASSIVE_LISTENER_H +#define GRPCPP_PASSIVE_LISTENER_H -#ifndef GRPC_TEST_CORE_UTIL_MOCK_ENDPOINT_H -#define GRPC_TEST_CORE_UTIL_MOCK_ENDPOINT_H +#include -#include +namespace grpc { +namespace experimental { -#include "src/core/lib/iomgr/endpoint.h" +using grpc_core::experimental::PassiveListener; -grpc_endpoint* grpc_mock_endpoint_create(void (*on_write)(grpc_slice slice)); -void grpc_mock_endpoint_put_read(grpc_endpoint* ep, grpc_slice slice); -void grpc_mock_endpoint_finish_put_reads(grpc_endpoint* ep); +} // namespace experimental +} // namespace grpc -#endif // GRPC_TEST_CORE_UTIL_MOCK_ENDPOINT_H +#endif // GRPCPP_PASSIVE_LISTENER_H diff --git a/include/grpcpp/security/server_credentials.h b/include/grpcpp/security/server_credentials.h index fe8c546190d..e3f5c2bbbfe 100644 --- a/include/grpcpp/security/server_credentials.h +++ b/include/grpcpp/security/server_credentials.h @@ -84,6 +84,7 @@ class ServerCredentials : private grpc::internal::GrpcLibrary { // Needed for access to AddPortToServer. friend class Server; // Needed for access to c_creds_. + friend class ServerBuilder; friend std::shared_ptr grpc::XdsServerCredentials( const std::shared_ptr& fallback_credentials); diff --git a/include/grpcpp/security/tls_credentials_options.h b/include/grpcpp/security/tls_credentials_options.h index 6adf9faac64..11c40f04086 100644 --- a/include/grpcpp/security/tls_credentials_options.h +++ b/include/grpcpp/security/tls_credentials_options.h @@ -103,6 +103,8 @@ class TlsCredentialsOptions { // call is covered by the cert that the peer presented. // We will perform such checks by default. This should be disabled if // verifiers other than the host name verifier is used. + // Deprecated: This function will be removed in the 1.66 release. This will be + // replaced by and handled within the custom verifier settings. void set_check_call_host(bool check_call_host); // Deprecated in favor of set_crl_provider. The @@ -111,6 +113,8 @@ class TlsCredentialsOptions { // If set, gRPC will read all hashed x.509 CRL files in the directory and // enforce the CRL files on all TLS handshakes. Only supported for OpenSSL // version > 1.1. + // Deprecated: This function will be removed in the 1.66 release. Use the + // set_crl_provider function instead. void set_crl_directory(const std::string& path); void set_crl_provider(std::shared_ptr crl_provider); @@ -184,6 +188,7 @@ class TlsServerCredentialsOptions final : public TlsCredentialsOptions { // WARNING: This API is extremely dangerous and should not be used. If the // server's trust bundle is too large, then the TLS server will be unable to // form a ServerHello, and hence will be unusable. + // Deprecated: This function will be removed in the 1.66 release. void set_send_client_ca_list(bool send_client_ca_list); private: diff --git a/include/grpcpp/server_builder.h b/include/grpcpp/server_builder.h index e6266a90d98..e66ca4301cd 100644 --- a/include/grpcpp/server_builder.h +++ b/include/grpcpp/server_builder.h @@ -25,13 +25,17 @@ #include #include +#include +#include #include #include #include #include #include #include +#include #include +#include #include #include #include @@ -291,6 +295,18 @@ class ServerBuilder { void EnableCallMetricRecording( experimental::ServerMetricRecorder* server_metric_recorder = nullptr); + // Creates a passive listener for Server Endpoint injection. + /// + /// \a PasiveListener lets applications provide pre-established connections + /// to gRPC Servers. The server will behave as if it accepted the connection + /// itself on its own listening addresses. + /// + /// This can be called multiple times to create passive listeners with + /// different server credentials. + ServerBuilder& AddPassiveListener( + std::shared_ptr creds, + std::unique_ptr& passive_listener); + private: ServerBuilder* builder_; }; @@ -364,6 +380,17 @@ class ServerBuilder { private: friend class grpc::testing::ServerBuilderPluginTest; + struct UnstartedPassiveListener { + std::weak_ptr + passive_listener; + std::shared_ptr credentials; + UnstartedPassiveListener( + std::weak_ptr listener, + std::shared_ptr creds) + : passive_listener(std::move(listener)), + credentials(std::move(creds)) {} + }; + struct SyncServerSettings { SyncServerSettings() : num_cqs(1), min_pollers(1), max_pollers(2), cq_timeout_msec(10000) {} @@ -388,6 +415,7 @@ class ServerBuilder { std::vector> options_; std::vector> services_; std::vector ports_; + std::vector unstarted_passive_listeners_; SyncServerSettings sync_server_settings_; diff --git a/include/grpcpp/server_interface.h b/include/grpcpp/server_interface.h index 5f8f8b54b0f..129562016ac 100644 --- a/include/grpcpp/server_interface.h +++ b/include/grpcpp/server_interface.h @@ -19,6 +19,8 @@ #ifndef GRPCPP_SERVER_INTERFACE_H #define GRPCPP_SERVER_INTERFACE_H +#include "absl/log/check.h" + #include #include #include @@ -318,7 +320,7 @@ class ServerInterface : public internal::CallHook { grpc::CompletionQueue* call_cq, grpc::ServerCompletionQueue* notification_cq, void* tag, Message* message) { - GPR_ASSERT(method); + CHECK(method); new PayloadAsyncRequest(method, this, context, stream, call_cq, notification_cq, tag, message); } @@ -329,7 +331,7 @@ class ServerInterface : public internal::CallHook { grpc::CompletionQueue* call_cq, grpc::ServerCompletionQueue* notification_cq, void* tag) { - GPR_ASSERT(method); + CHECK(method); new NoPayloadAsyncRequest(method, this, context, stream, call_cq, notification_cq, tag); } diff --git a/include/grpcpp/support/async_stream.h b/include/grpcpp/support/async_stream.h index 1bf67d301d5..ebc7aebcf51 100644 --- a/include/grpcpp/support/async_stream.h +++ b/include/grpcpp/support/async_stream.h @@ -19,6 +19,8 @@ #ifndef GRPCPP_SUPPORT_ASYNC_STREAM_H #define GRPCPP_SUPPORT_ASYNC_STREAM_H +#include "absl/log/check.h" + #include #include #include @@ -200,7 +202,7 @@ class ClientAsyncReader final : public ClientAsyncReaderInterface { public: // always allocated against a call arena, no memory free required static void operator delete(void* /*ptr*/, std::size_t size) { - GPR_ASSERT(size == sizeof(ClientAsyncReader)); + CHECK_EQ(size, sizeof(ClientAsyncReader)); } // This operator should never be called as the memory should be freed as part @@ -208,10 +210,10 @@ class ClientAsyncReader final : public ClientAsyncReaderInterface { // delete to the operator new so that some compilers will not complain (see // https://github.com/grpc/grpc/issues/11301) Note at the time of adding this // there are no tests catching the compiler warning. - static void operator delete(void*, void*) { GPR_ASSERT(false); } + static void operator delete(void*, void*) { CHECK(false); } void StartCall(void* tag) override { - GPR_ASSERT(!started_); + CHECK(!started_); started_ = true; StartCallInternal(tag); } @@ -225,8 +227,8 @@ class ClientAsyncReader final : public ClientAsyncReaderInterface { /// calling code can access the received metadata through the /// \a ClientContext. void ReadInitialMetadata(void* tag) override { - GPR_ASSERT(started_); - GPR_ASSERT(!context_->initial_metadata_received_); + CHECK(started_); + CHECK(!context_->initial_metadata_received_); meta_ops_.set_output_tag(tag); meta_ops_.RecvInitialMetadata(context_); @@ -234,7 +236,7 @@ class ClientAsyncReader final : public ClientAsyncReaderInterface { } void Read(R* msg, void* tag) override { - GPR_ASSERT(started_); + CHECK(started_); read_ops_.set_output_tag(tag); if (!context_->initial_metadata_received_) { read_ops_.RecvInitialMetadata(context_); @@ -249,7 +251,7 @@ class ClientAsyncReader final : public ClientAsyncReaderInterface { /// - the \a ClientContext associated with this call is updated with /// possible initial and trailing metadata received from the server. void Finish(grpc::Status* status, void* tag) override { - GPR_ASSERT(started_); + CHECK(started_); finish_ops_.set_output_tag(tag); if (!context_->initial_metadata_received_) { finish_ops_.RecvInitialMetadata(context_); @@ -265,12 +267,12 @@ class ClientAsyncReader final : public ClientAsyncReaderInterface { const W& request, bool start, void* tag) : context_(context), call_(call), started_(start) { // TODO(ctiller): don't assert - GPR_ASSERT(init_ops_.SendMessage(request).ok()); + CHECK(init_ops_.SendMessage(request).ok()); init_ops_.ClientSendClose(); if (start) { StartCallInternal(tag); } else { - GPR_ASSERT(tag == nullptr); + CHECK(tag == nullptr); } } @@ -348,7 +350,7 @@ class ClientAsyncWriter final : public ClientAsyncWriterInterface { public: // always allocated against a call arena, no memory free required static void operator delete(void* /*ptr*/, std::size_t size) { - GPR_ASSERT(size == sizeof(ClientAsyncWriter)); + CHECK_EQ(size, sizeof(ClientAsyncWriter)); } // This operator should never be called as the memory should be freed as part @@ -356,10 +358,10 @@ class ClientAsyncWriter final : public ClientAsyncWriterInterface { // delete to the operator new so that some compilers will not complain (see // https://github.com/grpc/grpc/issues/11301) Note at the time of adding this // there are no tests catching the compiler warning. - static void operator delete(void*, void*) { GPR_ASSERT(false); } + static void operator delete(void*, void*) { CHECK(false); } void StartCall(void* tag) override { - GPR_ASSERT(!started_); + CHECK(!started_); started_ = true; StartCallInternal(tag); } @@ -372,8 +374,8 @@ class ClientAsyncWriter final : public ClientAsyncWriterInterface { /// associated with this call is updated, and the calling code can access /// the received metadata through the \a ClientContext. void ReadInitialMetadata(void* tag) override { - GPR_ASSERT(started_); - GPR_ASSERT(!context_->initial_metadata_received_); + CHECK(started_); + CHECK(!context_->initial_metadata_received_); meta_ops_.set_output_tag(tag); meta_ops_.RecvInitialMetadata(context_); @@ -381,27 +383,27 @@ class ClientAsyncWriter final : public ClientAsyncWriterInterface { } void Write(const W& msg, void* tag) override { - GPR_ASSERT(started_); + CHECK(started_); write_ops_.set_output_tag(tag); // TODO(ctiller): don't assert - GPR_ASSERT(write_ops_.SendMessage(msg).ok()); + CHECK(write_ops_.SendMessage(msg).ok()); call_.PerformOps(&write_ops_); } void Write(const W& msg, grpc::WriteOptions options, void* tag) override { - GPR_ASSERT(started_); + CHECK(started_); write_ops_.set_output_tag(tag); if (options.is_last_message()) { options.set_buffer_hint(); write_ops_.ClientSendClose(); } // TODO(ctiller): don't assert - GPR_ASSERT(write_ops_.SendMessage(msg, options).ok()); + CHECK(write_ops_.SendMessage(msg, options).ok()); call_.PerformOps(&write_ops_); } void WritesDone(void* tag) override { - GPR_ASSERT(started_); + CHECK(started_); write_ops_.set_output_tag(tag); write_ops_.ClientSendClose(); call_.PerformOps(&write_ops_); @@ -415,7 +417,7 @@ class ClientAsyncWriter final : public ClientAsyncWriterInterface { /// - attempts to fill in the \a response parameter passed to this class's /// constructor with the server's response message. void Finish(grpc::Status* status, void* tag) override { - GPR_ASSERT(started_); + CHECK(started_); finish_ops_.set_output_tag(tag); if (!context_->initial_metadata_received_) { finish_ops_.RecvInitialMetadata(context_); @@ -435,7 +437,7 @@ class ClientAsyncWriter final : public ClientAsyncWriterInterface { if (start) { StartCallInternal(tag); } else { - GPR_ASSERT(tag == nullptr); + CHECK(tag == nullptr); } } @@ -515,7 +517,7 @@ class ClientAsyncReaderWriter final public: // always allocated against a call arena, no memory free required static void operator delete(void* /*ptr*/, std::size_t size) { - GPR_ASSERT(size == sizeof(ClientAsyncReaderWriter)); + CHECK_EQ(size, sizeof(ClientAsyncReaderWriter)); } // This operator should never be called as the memory should be freed as part @@ -523,10 +525,10 @@ class ClientAsyncReaderWriter final // delete to the operator new so that some compilers will not complain (see // https://github.com/grpc/grpc/issues/11301) Note at the time of adding this // there are no tests catching the compiler warning. - static void operator delete(void*, void*) { GPR_ASSERT(false); } + static void operator delete(void*, void*) { CHECK(false); } void StartCall(void* tag) override { - GPR_ASSERT(!started_); + CHECK(!started_); started_ = true; StartCallInternal(tag); } @@ -539,8 +541,8 @@ class ClientAsyncReaderWriter final /// is updated with it, and then the receiving initial metadata can /// be accessed through this \a ClientContext. void ReadInitialMetadata(void* tag) override { - GPR_ASSERT(started_); - GPR_ASSERT(!context_->initial_metadata_received_); + CHECK(started_); + CHECK(!context_->initial_metadata_received_); meta_ops_.set_output_tag(tag); meta_ops_.RecvInitialMetadata(context_); @@ -548,7 +550,7 @@ class ClientAsyncReaderWriter final } void Read(R* msg, void* tag) override { - GPR_ASSERT(started_); + CHECK(started_); read_ops_.set_output_tag(tag); if (!context_->initial_metadata_received_) { read_ops_.RecvInitialMetadata(context_); @@ -558,27 +560,27 @@ class ClientAsyncReaderWriter final } void Write(const W& msg, void* tag) override { - GPR_ASSERT(started_); + CHECK(started_); write_ops_.set_output_tag(tag); // TODO(ctiller): don't assert - GPR_ASSERT(write_ops_.SendMessage(msg).ok()); + CHECK(write_ops_.SendMessage(msg).ok()); call_.PerformOps(&write_ops_); } void Write(const W& msg, grpc::WriteOptions options, void* tag) override { - GPR_ASSERT(started_); + CHECK(started_); write_ops_.set_output_tag(tag); if (options.is_last_message()) { options.set_buffer_hint(); write_ops_.ClientSendClose(); } // TODO(ctiller): don't assert - GPR_ASSERT(write_ops_.SendMessage(msg, options).ok()); + CHECK(write_ops_.SendMessage(msg, options).ok()); call_.PerformOps(&write_ops_); } void WritesDone(void* tag) override { - GPR_ASSERT(started_); + CHECK(started_); write_ops_.set_output_tag(tag); write_ops_.ClientSendClose(); call_.PerformOps(&write_ops_); @@ -589,7 +591,7 @@ class ClientAsyncReaderWriter final /// - the \a ClientContext associated with this call is updated with /// possible initial and trailing metadata sent from the server. void Finish(grpc::Status* status, void* tag) override { - GPR_ASSERT(started_); + CHECK(started_); finish_ops_.set_output_tag(tag); if (!context_->initial_metadata_received_) { finish_ops_.RecvInitialMetadata(context_); @@ -606,7 +608,7 @@ class ClientAsyncReaderWriter final if (start) { StartCallInternal(tag); } else { - GPR_ASSERT(tag == nullptr); + CHECK(tag == nullptr); } } @@ -706,7 +708,7 @@ class ServerAsyncReader final : public ServerAsyncReaderInterface { /// - The initial metadata that will be sent to the client from this op will /// be taken from the \a ServerContext associated with the call. void SendInitialMetadata(void* tag) override { - GPR_ASSERT(!ctx_->sent_initial_metadata_); + CHECK(!ctx_->sent_initial_metadata_); meta_ops_.set_output_tag(tag); meta_ops_.SendInitialMetadata(&ctx_->initial_metadata_, @@ -765,7 +767,7 @@ class ServerAsyncReader final : public ServerAsyncReaderInterface { /// gRPC doesn't take ownership or a reference to \a status, so it is safe to /// to deallocate once FinishWithError returns. void FinishWithError(const grpc::Status& status, void* tag) override { - GPR_ASSERT(!status.ok()); + CHECK(!status.ok()); finish_ops_.set_output_tag(tag); if (!ctx_->sent_initial_metadata_) { finish_ops_.SendInitialMetadata(&ctx_->initial_metadata_, @@ -855,7 +857,7 @@ class ServerAsyncWriter final : public ServerAsyncWriterInterface { /// /// \param[in] tag Tag identifying this request. void SendInitialMetadata(void* tag) override { - GPR_ASSERT(!ctx_->sent_initial_metadata_); + CHECK(!ctx_->sent_initial_metadata_); meta_ops_.set_output_tag(tag); meta_ops_.SendInitialMetadata(&ctx_->initial_metadata_, @@ -871,7 +873,7 @@ class ServerAsyncWriter final : public ServerAsyncWriterInterface { write_ops_.set_output_tag(tag); EnsureInitialMetadataSent(&write_ops_); // TODO(ctiller): don't assert - GPR_ASSERT(write_ops_.SendMessage(msg).ok()); + CHECK(write_ops_.SendMessage(msg).ok()); call_.PerformOps(&write_ops_); } @@ -883,7 +885,7 @@ class ServerAsyncWriter final : public ServerAsyncWriterInterface { EnsureInitialMetadataSent(&write_ops_); // TODO(ctiller): don't assert - GPR_ASSERT(write_ops_.SendMessage(msg, options).ok()); + CHECK(write_ops_.SendMessage(msg, options).ok()); call_.PerformOps(&write_ops_); } @@ -902,7 +904,7 @@ class ServerAsyncWriter final : public ServerAsyncWriterInterface { write_ops_.set_output_tag(tag); EnsureInitialMetadataSent(&write_ops_); options.set_buffer_hint(); - GPR_ASSERT(write_ops_.SendMessage(msg, options).ok()); + CHECK(write_ops_.SendMessage(msg, options).ok()); write_ops_.ServerSendStatus(&ctx_->trailing_metadata_, status); call_.PerformOps(&write_ops_); } @@ -1021,7 +1023,7 @@ class ServerAsyncReaderWriter final /// /// \param[in] tag Tag identifying this request. void SendInitialMetadata(void* tag) override { - GPR_ASSERT(!ctx_->sent_initial_metadata_); + CHECK(!ctx_->sent_initial_metadata_); meta_ops_.set_output_tag(tag); meta_ops_.SendInitialMetadata(&ctx_->initial_metadata_, @@ -1043,7 +1045,7 @@ class ServerAsyncReaderWriter final write_ops_.set_output_tag(tag); EnsureInitialMetadataSent(&write_ops_); // TODO(ctiller): don't assert - GPR_ASSERT(write_ops_.SendMessage(msg).ok()); + CHECK(write_ops_.SendMessage(msg).ok()); call_.PerformOps(&write_ops_); } @@ -1053,7 +1055,7 @@ class ServerAsyncReaderWriter final options.set_buffer_hint(); } EnsureInitialMetadataSent(&write_ops_); - GPR_ASSERT(write_ops_.SendMessage(msg, options).ok()); + CHECK(write_ops_.SendMessage(msg, options).ok()); call_.PerformOps(&write_ops_); } @@ -1073,7 +1075,7 @@ class ServerAsyncReaderWriter final write_ops_.set_output_tag(tag); EnsureInitialMetadataSent(&write_ops_); options.set_buffer_hint(); - GPR_ASSERT(write_ops_.SendMessage(msg, options).ok()); + CHECK(write_ops_.SendMessage(msg, options).ok()); write_ops_.ServerSendStatus(&ctx_->trailing_metadata_, status); call_.PerformOps(&write_ops_); } diff --git a/include/grpcpp/support/async_unary_call.h b/include/grpcpp/support/async_unary_call.h index a831d73f72f..787d3a56e3d 100644 --- a/include/grpcpp/support/async_unary_call.h +++ b/include/grpcpp/support/async_unary_call.h @@ -19,6 +19,8 @@ #ifndef GRPCPP_SUPPORT_ASYNC_UNARY_CALL_H #define GRPCPP_SUPPORT_ASYNC_UNARY_CALL_H +#include "absl/log/check.h" + #include #include #include @@ -130,7 +132,7 @@ class ClientAsyncResponseReaderHelper { new (grpc_call_arena_alloc(call, sizeof(SingleBufType))) SingleBufType; *single_buf_ptr = single_buf; // TODO(ctiller): don't assert - GPR_ASSERT(single_buf->SendMessage(request).ok()); + CHECK(single_buf->SendMessage(request).ok()); single_buf->ClientSendClose(); // The purpose of the following functions is to type-erase the actual @@ -220,7 +222,7 @@ class ClientAsyncResponseReader final public: // always allocated against a call arena, no memory free required static void operator delete(void* /*ptr*/, std::size_t size) { - GPR_ASSERT(size == sizeof(ClientAsyncResponseReader)); + CHECK_EQ(size, sizeof(ClientAsyncResponseReader)); } // This operator should never be called as the memory should be freed as part @@ -228,10 +230,10 @@ class ClientAsyncResponseReader final // delete to the operator new so that some compilers will not complain (see // https://github.com/grpc/grpc/issues/11301) Note at the time of adding this // there are no tests catching the compiler warning. - static void operator delete(void*, void*) { GPR_ASSERT(false); } + static void operator delete(void*, void*) { CHECK(false); } void StartCall() override { - GPR_DEBUG_ASSERT(!started_); + DCHECK(!started_); started_ = true; internal::ClientAsyncResponseReaderHelper::StartCall(context_, single_buf_); } @@ -243,8 +245,8 @@ class ClientAsyncResponseReader final /// - the \a ClientContext associated with this call is updated with /// possible initial and trailing metadata sent from the server. void ReadInitialMetadata(void* tag) override { - GPR_DEBUG_ASSERT(started_); - GPR_DEBUG_ASSERT(!context_->initial_metadata_received_); + DCHECK(started_); + DCHECK(!context_->initial_metadata_received_); read_initial_metadata_(context_, &call_, single_buf_, tag); initial_metadata_read_ = true; } @@ -255,7 +257,7 @@ class ClientAsyncResponseReader final /// - the \a ClientContext associated with this call is updated with /// possible initial and trailing metadata sent from the server. void Finish(R* msg, grpc::Status* status, void* tag) override { - GPR_DEBUG_ASSERT(started_); + DCHECK(started_); finish_(context_, &call_, initial_metadata_read_, single_buf_, &finish_buf_, static_cast(msg), status, tag); } @@ -304,7 +306,7 @@ class ServerAsyncResponseWriter final /// /// \param[in] tag Tag identifying this request. void SendInitialMetadata(void* tag) override { - GPR_ASSERT(!ctx_->sent_initial_metadata_); + CHECK(!ctx_->sent_initial_metadata_); meta_buf_.set_output_tag(tag); meta_buf_.SendInitialMetadata(&ctx_->initial_metadata_, @@ -373,7 +375,7 @@ class ServerAsyncResponseWriter final /// deallocate them once the Finish operation is complete (i.e. a result /// arrives in the completion queue). void FinishWithError(const grpc::Status& status, void* tag) { - GPR_ASSERT(!status.ok()); + CHECK(!status.ok()); finish_buf_.set_output_tag(tag); if (!ctx_->sent_initial_metadata_) { finish_buf_.SendInitialMetadata(&ctx_->initial_metadata_, diff --git a/include/grpcpp/support/callback_common.h b/include/grpcpp/support/callback_common.h index 6ae8cfb946a..2868de0bd4d 100644 --- a/include/grpcpp/support/callback_common.h +++ b/include/grpcpp/support/callback_common.h @@ -21,6 +21,8 @@ #include +#include "absl/log/check.h" + #include #include #include @@ -71,7 +73,7 @@ class CallbackWithStatusTag : public grpc_completion_queue_functor { public: // always allocated against a call arena, no memory free required static void operator delete(void* /*ptr*/, std::size_t size) { - GPR_ASSERT(size == sizeof(CallbackWithStatusTag)); + CHECK_EQ(size, sizeof(CallbackWithStatusTag)); } // This operator should never be called as the memory should be freed as part @@ -79,7 +81,7 @@ class CallbackWithStatusTag : public grpc_completion_queue_functor { // delete to the operator new so that some compilers will not complain (see // https://github.com/grpc/grpc/issues/11301) Note at the time of adding this // there are no tests catching the compiler warning. - static void operator delete(void*, void*) { GPR_ASSERT(false); } + static void operator delete(void*, void*) { CHECK(false); } CallbackWithStatusTag(grpc_call* call, std::function f, CompletionQueueTag* ops) @@ -118,7 +120,7 @@ class CallbackWithStatusTag : public grpc_completion_queue_functor { // The tag was swallowed return; } - GPR_ASSERT(ignored == ops_); + CHECK(ignored == ops_); // Last use of func_ or status_, so ok to move them out auto func = std::move(func_); @@ -137,7 +139,7 @@ class CallbackWithSuccessTag : public grpc_completion_queue_functor { public: // always allocated against a call arena, no memory free required static void operator delete(void* /*ptr*/, std::size_t size) { - GPR_ASSERT(size == sizeof(CallbackWithSuccessTag)); + CHECK_EQ(size, sizeof(CallbackWithSuccessTag)); } // This operator should never be called as the memory should be freed as part @@ -145,7 +147,7 @@ class CallbackWithSuccessTag : public grpc_completion_queue_functor { // delete to the operator new so that some compilers will not complain (see // https://github.com/grpc/grpc/issues/11301) Note at the time of adding this // there are no tests catching the compiler warning. - static void operator delete(void*, void*) { GPR_ASSERT(false); } + static void operator delete(void*, void*) { CHECK(false); } CallbackWithSuccessTag() : call_(nullptr) {} @@ -162,7 +164,7 @@ class CallbackWithSuccessTag : public grpc_completion_queue_functor { // callbacks. void Set(grpc_call* call, std::function f, CompletionQueueTag* ops, bool can_inline) { - GPR_ASSERT(call_ == nullptr); + CHECK_EQ(call_, nullptr); grpc_call_ref(call); call_ = call; func_ = std::move(f); @@ -208,7 +210,7 @@ class CallbackWithSuccessTag : public grpc_completion_queue_functor { #endif bool do_callback = ops_->FinalizeResult(&ignored, &ok); #ifndef NDEBUG - GPR_DEBUG_ASSERT(ignored == ops); + DCHECK(ignored == ops); #endif if (do_callback) { diff --git a/include/grpcpp/support/client_callback.h b/include/grpcpp/support/client_callback.h index 1c420815de4..49e52bb37aa 100644 --- a/include/grpcpp/support/client_callback.h +++ b/include/grpcpp/support/client_callback.h @@ -22,6 +22,8 @@ #include #include +#include "absl/log/check.h" + #include #include #include @@ -70,7 +72,7 @@ class CallbackUnaryCallImpl { const InputMessage* request, OutputMessage* result, std::function on_completion) { grpc::CompletionQueue* cq = channel->CallbackCQ(); - GPR_ASSERT(cq != nullptr); + CHECK_NE(cq, nullptr); grpc::internal::Call call(channel->CreateCall(method, context, cq)); using FullCallOpSet = grpc::internal::CallOpSet< @@ -304,7 +306,7 @@ class ClientBidiReactor : public internal::ClientReactor { /// The argument to AddMultipleHolds must be positive. void AddHold() { AddMultipleHolds(1); } void AddMultipleHolds(int holds) { - GPR_DEBUG_ASSERT(holds > 0); + DCHECK_GT(holds, 0); stream_->AddHold(holds); } void RemoveHold() { stream_->RemoveHold(); } @@ -368,7 +370,7 @@ class ClientReadReactor : public internal::ClientReactor { void AddHold() { AddMultipleHolds(1); } void AddMultipleHolds(int holds) { - GPR_DEBUG_ASSERT(holds > 0); + DCHECK_GT(holds, 0); reader_->AddHold(holds); } void RemoveHold() { reader_->RemoveHold(); } @@ -400,7 +402,7 @@ class ClientWriteReactor : public internal::ClientReactor { void AddHold() { AddMultipleHolds(1); } void AddMultipleHolds(int holds) { - GPR_DEBUG_ASSERT(holds > 0); + DCHECK_GT(holds, 0); writer_->AddHold(holds); } void RemoveHold() { writer_->RemoveHold(); } @@ -461,7 +463,7 @@ class ClientCallbackReaderWriterImpl public: // always allocated against a call arena, no memory free required static void operator delete(void* /*ptr*/, std::size_t size) { - GPR_ASSERT(size == sizeof(ClientCallbackReaderWriterImpl)); + CHECK_EQ(size, sizeof(ClientCallbackReaderWriterImpl)); } // This operator should never be called as the memory should be freed as part @@ -469,7 +471,7 @@ class ClientCallbackReaderWriterImpl // delete to the operator new so that some compilers will not complain (see // https://github.com/grpc/grpc/issues/11301) Note at the time of adding this // there are no tests catching the compiler warning. - static void operator delete(void*, void*) { GPR_ASSERT(false); } + static void operator delete(void*, void*) { CHECK(false); } void StartCall() ABSL_LOCKS_EXCLUDED(start_mu_) override { // This call initiates two batches, plus any backlog, each with a callback @@ -527,7 +529,7 @@ class ClientCallbackReaderWriterImpl write_ops_.ClientSendClose(); } // TODO(vjpai): don't assert - GPR_ASSERT(write_ops_.SendMessagePtr(msg, options).ok()); + CHECK(write_ops_.SendMessagePtr(msg, options).ok()); callbacks_outstanding_.fetch_add(1, std::memory_order_relaxed); if (GPR_UNLIKELY(corked_write_needed_)) { write_ops_.SendInitialMetadata(&context_->send_initial_metadata_, @@ -719,7 +721,7 @@ class ClientCallbackReaderImpl : public ClientCallbackReader { public: // always allocated against a call arena, no memory free required static void operator delete(void* /*ptr*/, std::size_t size) { - GPR_ASSERT(size == sizeof(ClientCallbackReaderImpl)); + CHECK_EQ(size, sizeof(ClientCallbackReaderImpl)); } // This operator should never be called as the memory should be freed as part @@ -727,7 +729,7 @@ class ClientCallbackReaderImpl : public ClientCallbackReader { // delete to the operator new so that some compilers will not complain (see // https://github.com/grpc/grpc/issues/11301) Note at the time of adding this // there are no tests catching the compiler warning. - static void operator delete(void*, void*) { GPR_ASSERT(false); } + static void operator delete(void*, void*) { CHECK(false); } void StartCall() override { // This call initiates two batches, plus any backlog, each with a callback @@ -804,7 +806,7 @@ class ClientCallbackReaderImpl : public ClientCallbackReader { : context_(context), call_(call), reactor_(reactor) { this->BindReactor(reactor); // TODO(vjpai): don't assert - GPR_ASSERT(start_ops_.SendMessagePtr(request).ok()); + CHECK(start_ops_.SendMessagePtr(request).ok()); start_ops_.ClientSendClose(); } @@ -880,7 +882,7 @@ class ClientCallbackWriterImpl : public ClientCallbackWriter { public: // always allocated against a call arena, no memory free required static void operator delete(void* /*ptr*/, std::size_t size) { - GPR_ASSERT(size == sizeof(ClientCallbackWriterImpl)); + CHECK_EQ(size, sizeof(ClientCallbackWriterImpl)); } // This operator should never be called as the memory should be freed as part @@ -888,7 +890,7 @@ class ClientCallbackWriterImpl : public ClientCallbackWriter { // delete to the operator new so that some compilers will not complain (see // https://github.com/grpc/grpc/issues/11301) Note at the time of adding this // there are no tests catching the compiler warning. - static void operator delete(void*, void*) { GPR_ASSERT(false); } + static void operator delete(void*, void*) { CHECK(false); } void StartCall() ABSL_LOCKS_EXCLUDED(start_mu_) override { // This call initiates two batches, plus any backlog, each with a callback @@ -929,7 +931,7 @@ class ClientCallbackWriterImpl : public ClientCallbackWriter { write_ops_.ClientSendClose(); } // TODO(vjpai): don't assert - GPR_ASSERT(write_ops_.SendMessagePtr(msg, options).ok()); + CHECK(write_ops_.SendMessagePtr(msg, options).ok()); callbacks_outstanding_.fetch_add(1, std::memory_order_relaxed); if (GPR_UNLIKELY(corked_write_needed_)) { @@ -1110,7 +1112,7 @@ class ClientCallbackUnaryImpl final : public ClientCallbackUnary { public: // always allocated against a call arena, no memory free required static void operator delete(void* /*ptr*/, std::size_t size) { - GPR_ASSERT(size == sizeof(ClientCallbackUnaryImpl)); + CHECK_EQ(size, sizeof(ClientCallbackUnaryImpl)); } // This operator should never be called as the memory should be freed as part @@ -1118,7 +1120,7 @@ class ClientCallbackUnaryImpl final : public ClientCallbackUnary { // delete to the operator new so that some compilers will not complain (see // https://github.com/grpc/grpc/issues/11301) Note at the time of adding this // there are no tests catching the compiler warning. - static void operator delete(void*, void*) { GPR_ASSERT(false); } + static void operator delete(void*, void*) { CHECK(false); } void StartCall() override { // This call initiates two batches, each with a callback @@ -1157,7 +1159,7 @@ class ClientCallbackUnaryImpl final : public ClientCallbackUnary { : context_(context), call_(call), reactor_(reactor) { this->BindReactor(reactor); // TODO(vjpai): don't assert - GPR_ASSERT(start_ops_.SendMessagePtr(request).ok()); + CHECK(start_ops_.SendMessagePtr(request).ok()); start_ops_.ClientSendClose(); finish_ops_.RecvMessage(response); finish_ops_.AllowNoMessage(); diff --git a/include/grpcpp/support/client_interceptor.h b/include/grpcpp/support/client_interceptor.h index b2b9dc76917..3bcb2f16256 100644 --- a/include/grpcpp/support/client_interceptor.h +++ b/include/grpcpp/support/client_interceptor.h @@ -22,6 +22,8 @@ #include #include +#include "absl/log/check.h" + #include #include #include @@ -139,7 +141,7 @@ class ClientRpcInfo { // Runs interceptor at pos \a pos. void RunInterceptor( experimental::InterceptorBatchMethods* interceptor_methods, size_t pos) { - GPR_ASSERT(pos < interceptors_.size()); + CHECK_LT(pos, interceptors_.size()); interceptors_[pos]->Intercept(interceptor_methods); } diff --git a/include/grpcpp/support/method_handler.h b/include/grpcpp/support/method_handler.h index def30a0ad8c..51821c6da38 100644 --- a/include/grpcpp/support/method_handler.h +++ b/include/grpcpp/support/method_handler.h @@ -19,6 +19,8 @@ #ifndef GRPCPP_SUPPORT_METHOD_HANDLER_H #define GRPCPP_SUPPORT_METHOD_HANDLER_H +#include "absl/log/check.h" + #include #include #include @@ -57,7 +59,7 @@ template template void UnaryRunHandlerHelper(const MethodHandler::HandlerParameter& param, ResponseType* rsp, grpc::Status& status) { - GPR_ASSERT(!param.server_context->sent_initial_metadata_); + CHECK(!param.server_context->sent_initial_metadata_); grpc::internal::CallOpSet diff --git a/include/grpcpp/support/proto_buffer_reader.h b/include/grpcpp/support/proto_buffer_reader.h index ffec8d76416..f5431d462e4 100644 --- a/include/grpcpp/support/proto_buffer_reader.h +++ b/include/grpcpp/support/proto_buffer_reader.h @@ -21,6 +21,7 @@ #include +#include "absl/log/check.h" #include "absl/strings/cord.h" #include @@ -75,7 +76,7 @@ class ProtoBufferReader : public grpc::protobuf::io::ZeroCopyInputStream { if (backup_count_ > 0) { *data = GRPC_SLICE_START_PTR(*slice_) + GRPC_SLICE_LENGTH(*slice_) - backup_count_; - GPR_ASSERT(backup_count_ <= INT_MAX); + CHECK_LE(backup_count_, INT_MAX); *size = static_cast(backup_count_); backup_count_ = 0; return true; @@ -86,7 +87,7 @@ class ProtoBufferReader : public grpc::protobuf::io::ZeroCopyInputStream { } *data = GRPC_SLICE_START_PTR(*slice_); // On win x64, int is only 32bit - GPR_ASSERT(GRPC_SLICE_LENGTH(*slice_) <= INT_MAX); + CHECK_LE(GRPC_SLICE_LENGTH(*slice_), static_cast(INT_MAX)); byte_count_ += * size = static_cast(GRPC_SLICE_LENGTH(*slice_)); return true; } @@ -98,7 +99,7 @@ class ProtoBufferReader : public grpc::protobuf::io::ZeroCopyInputStream { /// bytes that have already been returned by the last call of Next. /// So do the backup and have that ready for a later Next. void BackUp(int count) override { - GPR_ASSERT(count <= static_cast(GRPC_SLICE_LENGTH(*slice_))); + CHECK_LE(count, static_cast(GRPC_SLICE_LENGTH(*slice_))); backup_count_ = count; } @@ -174,7 +175,7 @@ class ProtoBufferReader : public grpc::protobuf::io::ZeroCopyInputStream { return true; } } - GPR_ASSERT(count == 0); + CHECK_EQ(count, 0); return true; } #endif // GRPC_PROTOBUF_CORD_SUPPORT_ENABLED diff --git a/include/grpcpp/support/proto_buffer_writer.h b/include/grpcpp/support/proto_buffer_writer.h index 83d81060e87..351b2b826d9 100644 --- a/include/grpcpp/support/proto_buffer_writer.h +++ b/include/grpcpp/support/proto_buffer_writer.h @@ -21,6 +21,7 @@ #include +#include "absl/log/check.h" #include "absl/strings/cord.h" #include @@ -64,7 +65,7 @@ class ProtoBufferWriter : public grpc::protobuf::io::ZeroCopyOutputStream { total_size_(total_size), byte_count_(0), have_backup_(false) { - GPR_ASSERT(!byte_buffer->Valid()); + CHECK(!byte_buffer->Valid()); /// Create an empty raw byte buffer and look at its underlying slice buffer grpc_byte_buffer* bp = grpc_raw_byte_buffer_create(nullptr, 0); byte_buffer->set_buffer(bp); @@ -81,7 +82,7 @@ class ProtoBufferWriter : public grpc::protobuf::io::ZeroCopyOutputStream { /// safe for the caller to write from data[0, size - 1]. bool Next(void** data, int* size) override { // Protobuf should not ask for more memory than total_size_. - GPR_ASSERT(byte_count_ < total_size_); + CHECK_LT(byte_count_, total_size_); // 1. Use the remaining backup slice if we have one // 2. Otherwise allocate a slice, up to the remaining length needed // or our maximum allocation size @@ -106,7 +107,7 @@ class ProtoBufferWriter : public grpc::protobuf::io::ZeroCopyOutputStream { } *data = GRPC_SLICE_START_PTR(slice_); // On win x64, int is only 32bit - GPR_ASSERT(GRPC_SLICE_LENGTH(slice_) <= INT_MAX); + CHECK(GRPC_SLICE_LENGTH(slice_) <= static_cast(INT_MAX)); byte_count_ += * size = static_cast(GRPC_SLICE_LENGTH(slice_)); // Using grpc_slice_buffer_add could modify slice_ and merge it with the // previous slice. Therefore, use grpc_slice_buffer_add_indexed method to @@ -131,7 +132,7 @@ class ProtoBufferWriter : public grpc::protobuf::io::ZeroCopyOutputStream { /// 2. Split it into the needed (if any) and unneeded part /// 3. Add the needed part back to the slice buffer /// 4. Mark that we still have the remaining part (for later use/unref) - GPR_ASSERT(count <= static_cast(GRPC_SLICE_LENGTH(slice_))); + CHECK_LE(count, static_cast(GRPC_SLICE_LENGTH(slice_))); grpc_slice_buffer_pop(slice_buffer_); if (static_cast(count) == GRPC_SLICE_LENGTH(slice_)) { backup_slice_ = slice_; diff --git a/include/grpcpp/support/server_interceptor.h b/include/grpcpp/support/server_interceptor.h index ecb4e342598..c30d0aee495 100644 --- a/include/grpcpp/support/server_interceptor.h +++ b/include/grpcpp/support/server_interceptor.h @@ -22,6 +22,8 @@ #include #include +#include "absl/log/check.h" + #include #include #include @@ -100,7 +102,7 @@ class ServerRpcInfo { // Runs interceptor at pos \a pos. void RunInterceptor( experimental::InterceptorBatchMethods* interceptor_methods, size_t pos) { - GPR_ASSERT(pos < interceptors_.size()); + CHECK_LT(pos, interceptors_.size()); interceptors_[pos]->Intercept(interceptor_methods); } diff --git a/include/grpcpp/support/sync_stream.h b/include/grpcpp/support/sync_stream.h index ce583f6ed7c..ab6ced7343b 100644 --- a/include/grpcpp/support/sync_stream.h +++ b/include/grpcpp/support/sync_stream.h @@ -19,6 +19,8 @@ #ifndef GRPCPP_SUPPORT_SYNC_STREAM_H #define GRPCPP_SUPPORT_SYNC_STREAM_H +#include "absl/log/check.h" + #include #include #include @@ -184,7 +186,7 @@ class ClientReader final : public ClientReaderInterface { /// the server will be accessible through the \a ClientContext used to /// construct this object. void WaitForInitialMetadata() override { - GPR_ASSERT(!context_->initial_metadata_received_); + CHECK(!context_->initial_metadata_received_); grpc::internal::CallOpSet ops; ops.RecvInitialMetadata(context_); @@ -230,7 +232,7 @@ class ClientReader final : public ClientReaderInterface { grpc::Status status; ops.ClientRecvStatus(context_, &status); call_.PerformOps(&ops); - GPR_ASSERT(cq_.Pluck(&ops)); + CHECK(cq_.Pluck(&ops)); return status; } @@ -259,7 +261,7 @@ class ClientReader final : public ClientReaderInterface { ops.SendInitialMetadata(&context->send_initial_metadata_, context->initial_metadata_flags()); // TODO(ctiller): don't assert - GPR_ASSERT(ops.SendMessagePtr(&request).ok()); + CHECK(ops.SendMessagePtr(&request).ok()); ops.ClientSendClose(); call_.PerformOps(&ops); cq_.Pluck(&ops); @@ -306,7 +308,7 @@ class ClientWriter : public ClientWriterInterface { /// Once complete, the initial metadata read from the server will be /// accessible through the \a ClientContext used to construct this object. void WaitForInitialMetadata() { - GPR_ASSERT(!context_->initial_metadata_received_); + CHECK(!context_->initial_metadata_received_); grpc::internal::CallOpSet ops; ops.RecvInitialMetadata(context_); @@ -364,7 +366,7 @@ class ClientWriter : public ClientWriterInterface { } finish_ops_.ClientRecvStatus(context_, &status); call_.PerformOps(&finish_ops_); - GPR_ASSERT(cq_.Pluck(&finish_ops_)); + CHECK(cq_.Pluck(&finish_ops_)); return status; } @@ -455,7 +457,7 @@ class ClientReaderWriter final : public ClientReaderWriterInterface { /// Once complete, the initial metadata read from the server will be /// accessible through the \a ClientContext used to construct this object. void WaitForInitialMetadata() override { - GPR_ASSERT(!context_->initial_metadata_received_); + CHECK(!context_->initial_metadata_received_); grpc::internal::CallOpSet ops; ops.RecvInitialMetadata(context_); @@ -536,7 +538,7 @@ class ClientReaderWriter final : public ClientReaderWriterInterface { grpc::Status status; ops.ClientRecvStatus(context_, &status); call_.PerformOps(&ops); - GPR_ASSERT(cq_.Pluck(&ops)); + CHECK(cq_.Pluck(&ops)); return status; } @@ -583,7 +585,7 @@ class ServerReader final : public ServerReaderInterface { /// for semantics. Note that initial metadata will be affected by the /// \a ServerContext associated with this call. void SendInitialMetadata() override { - GPR_ASSERT(!ctx_->sent_initial_metadata_); + CHECK(!ctx_->sent_initial_metadata_); grpc::internal::CallOpSet ops; ops.SendInitialMetadata(&ctx_->initial_metadata_, @@ -640,7 +642,7 @@ class ServerWriter final : public ServerWriterInterface { /// Note that initial metadata will be affected by the /// \a ServerContext associated with this call. void SendInitialMetadata() override { - GPR_ASSERT(!ctx_->sent_initial_metadata_); + CHECK(!ctx_->sent_initial_metadata_); grpc::internal::CallOpSet ops; ops.SendInitialMetadata(&ctx_->initial_metadata_, @@ -713,7 +715,7 @@ class ServerReaderWriterBody final { : call_(call), ctx_(ctx) {} void SendInitialMetadata() { - GPR_ASSERT(!ctx_->sent_initial_metadata_); + CHECK(!ctx_->sent_initial_metadata_); grpc::internal::CallOpSet ops; ops.SendInitialMetadata(&ctx_->initial_metadata_, diff --git a/include/grpcpp/version_info.h b/include/grpcpp/version_info.h index 5c2787ab227..0860a237de6 100644 --- a/include/grpcpp/version_info.h +++ b/include/grpcpp/version_info.h @@ -19,9 +19,9 @@ #define GRPCPP_VERSION_INFO_H #define GRPC_CPP_VERSION_MAJOR 1 -#define GRPC_CPP_VERSION_MINOR 64 +#define GRPC_CPP_VERSION_MINOR 65 #define GRPC_CPP_VERSION_PATCH 0 #define GRPC_CPP_VERSION_TAG "dev" -#define GRPC_CPP_VERSION_STRING "1.64.0-dev" +#define GRPC_CPP_VERSION_STRING "1.65.0-dev" #endif // GRPCPP_VERSION_INFO_H diff --git a/package.xml b/package.xml index 6a184f74d73..3cd01a87805 100644 --- a/package.xml +++ b/package.xml @@ -13,8 +13,8 @@ 2019-09-24 - 1.64.0dev - 1.64.0dev + 1.65.0dev + 1.65.0dev beta @@ -22,7 +22,7 @@ Apache 2.0 -- gRPC Core 1.64.0 update +- gRPC Core 1.65.0 update @@ -81,6 +81,7 @@ + @@ -105,10 +106,14 @@ + + + + + + - - @@ -124,8 +129,6 @@ - - @@ -151,8 +154,6 @@ - - @@ -172,9 +173,6 @@ - - - @@ -1050,63 +1048,28 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + @@ -1132,12 +1095,6 @@ - - - - - - @@ -1145,8 +1102,6 @@ - - @@ -1288,39 +1243,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -1394,9 +1316,6 @@ - - - @@ -1724,13 +1643,7 @@ - - - - - - @@ -1777,9 +1690,6 @@ - - - @@ -1789,29 +1699,23 @@ + + + - - - - - - - - - - - + + @@ -1826,8 +1730,6 @@ - - @@ -1930,6 +1832,17 @@ + + + + + + + + + + + @@ -1995,6 +1908,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2184,9 +2183,13 @@ + + + + @@ -2452,7 +2455,6 @@ - @@ -2558,6 +2560,8 @@ + + @@ -2728,7 +2732,6 @@ - @@ -2820,6 +2823,7 @@ + @@ -2860,13 +2864,14 @@ + + - @@ -2882,8 +2887,6 @@ - - @@ -2932,6 +2935,7 @@ + diff --git a/src/android/test/interop/app/CMakeLists.txt b/src/android/test/interop/app/CMakeLists.txt index e19c79e2674..403f1e518d8 100644 --- a/src/android/test/interop/app/CMakeLists.txt +++ b/src/android/test/interop/app/CMakeLists.txt @@ -114,10 +114,10 @@ add_library(grpc-interop ${GRPC_SRC_DIR}/test/cpp/interop/backend_metrics_lb_policy.cc ${GRPC_SRC_DIR}/test/cpp/interop/interop_client.h ${GRPC_SRC_DIR}/test/cpp/interop/interop_client.cc - ${GRPC_SRC_DIR}/test/core/util/histogram.h - ${GRPC_SRC_DIR}/test/core/util/histogram.cc - ${GRPC_SRC_DIR}/test/core/util/test_lb_policies.h - ${GRPC_SRC_DIR}/test/core/util/test_lb_policies.cc) + ${GRPC_SRC_DIR}/test/core/test_util/histogram.h + ${GRPC_SRC_DIR}/test/core/test_util/histogram.cc + ${GRPC_SRC_DIR}/test/core/test_util/test_lb_policies.h + ${GRPC_SRC_DIR}/test/core/test_util/test_lb_policies.cc) target_link_libraries(grpc-interop messages_proto_lib diff --git a/src/boringssl/boringssl_prefix_symbols.h b/src/boringssl/boringssl_prefix_symbols.h index 827f1b0ed1c..3255f889966 100644 --- a/src/boringssl/boringssl_prefix_symbols.h +++ b/src/boringssl/boringssl_prefix_symbols.h @@ -1,4 +1,4 @@ -// generated by generate_boringssl_prefix_header.sh on BoringSSL commit: e14d29f68c2d1b02e06f10c83b9b8ea4d061f8df +// generated by generate_boringssl_prefix_header.sh on BoringSSL commit: 5a2bca2124800f2861263959b72bc35cdf18949b // Copyright (c) 2018, Google Inc. // @@ -21,6 +21,9 @@ #define BIO_f_ssl BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BIO_f_ssl) #define BIO_set_ssl BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BIO_set_ssl) +#define CBS_data BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBS_data) +#define CBS_init BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBS_init) +#define CBS_len BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBS_len) #define DTLS_client_method BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, DTLS_client_method) #define DTLS_method BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, DTLS_method) #define DTLS_server_method BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, DTLS_server_method) @@ -66,8 +69,23 @@ #define SSL_COMP_get_compression_methods BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_COMP_get_compression_methods) #define SSL_COMP_get_id BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_COMP_get_id) #define SSL_COMP_get_name BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_COMP_get_name) +#define SSL_CREDENTIAL_free BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_CREDENTIAL_free) +#define SSL_CREDENTIAL_get_ex_data BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_CREDENTIAL_get_ex_data) +#define SSL_CREDENTIAL_get_ex_new_index BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_CREDENTIAL_get_ex_new_index) +#define SSL_CREDENTIAL_new_delegated BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_CREDENTIAL_new_delegated) +#define SSL_CREDENTIAL_new_x509 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_CREDENTIAL_new_x509) +#define SSL_CREDENTIAL_set1_cert_chain BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_CREDENTIAL_set1_cert_chain) +#define SSL_CREDENTIAL_set1_delegated_credential BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_CREDENTIAL_set1_delegated_credential) +#define SSL_CREDENTIAL_set1_ocsp_response BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_CREDENTIAL_set1_ocsp_response) +#define SSL_CREDENTIAL_set1_private_key BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_CREDENTIAL_set1_private_key) +#define SSL_CREDENTIAL_set1_signed_cert_timestamp_list BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_CREDENTIAL_set1_signed_cert_timestamp_list) +#define SSL_CREDENTIAL_set1_signing_algorithm_prefs BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_CREDENTIAL_set1_signing_algorithm_prefs) +#define SSL_CREDENTIAL_set_ex_data BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_CREDENTIAL_set_ex_data) +#define SSL_CREDENTIAL_set_private_key_method BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_CREDENTIAL_set_private_key_method) +#define SSL_CREDENTIAL_up_ref BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_CREDENTIAL_up_ref) #define SSL_CTX_add0_chain_cert BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_CTX_add0_chain_cert) #define SSL_CTX_add1_chain_cert BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_CTX_add1_chain_cert) +#define SSL_CTX_add1_credential BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_CTX_add1_credential) #define SSL_CTX_add_cert_compression_alg BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_CTX_add_cert_compression_alg) #define SSL_CTX_add_client_CA BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_CTX_add_client_CA) #define SSL_CTX_add_extra_chain_cert BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_CTX_add_extra_chain_cert) @@ -282,6 +300,7 @@ #define SSL_accept BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_accept) #define SSL_add0_chain_cert BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_add0_chain_cert) #define SSL_add1_chain_cert BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_add1_chain_cert) +#define SSL_add1_credential BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_add1_credential) #define SSL_add_application_settings BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_add_application_settings) #define SSL_add_bio_cert_subjects_to_stack BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_add_bio_cert_subjects_to_stack) #define SSL_add_client_CA BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_add_client_CA) @@ -301,7 +320,6 @@ #define SSL_clear_options BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_clear_options) #define SSL_connect BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_connect) #define SSL_cutthrough_complete BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_cutthrough_complete) -#define SSL_delegated_credential_used BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_delegated_credential_used) #define SSL_do_handshake BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_do_handshake) #define SSL_dup_CA_list BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_dup_CA_list) #define SSL_early_callback_ctx_extension_get BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_early_callback_ctx_extension_get) @@ -328,6 +346,7 @@ #define SSL_get0_peer_certificates BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_get0_peer_certificates) #define SSL_get0_peer_delegation_algorithms BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_get0_peer_delegation_algorithms) #define SSL_get0_peer_verify_algorithms BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_get0_peer_verify_algorithms) +#define SSL_get0_selected_credential BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_get0_selected_credential) #define SSL_get0_server_requested_CAs BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_get0_server_requested_CAs) #define SSL_get0_session_id_context BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_get0_session_id_context) #define SSL_get0_signed_cert_timestamp_list BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_get0_signed_cert_timestamp_list) @@ -457,7 +476,6 @@ #define SSL_set1_chain BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_set1_chain) #define SSL_set1_curves BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_set1_curves) #define SSL_set1_curves_list BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_set1_curves_list) -#define SSL_set1_delegated_credential BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_set1_delegated_credential) #define SSL_set1_ech_config_list BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_set1_ech_config_list) #define SSL_set1_group_ids BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_set1_group_ids) #define SSL_set1_groups BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_set1_groups) @@ -475,6 +493,8 @@ #define SSL_set_bio BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_set_bio) #define SSL_set_cert_cb BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_set_cert_cb) #define SSL_set_chain_and_key BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_set_chain_and_key) +#define SSL_set_check_client_certificate_type BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_set_check_client_certificate_type) +#define SSL_set_check_ecdsa_curve BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_set_check_ecdsa_curve) #define SSL_set_cipher_list BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_set_cipher_list) #define SSL_set_client_CA_list BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_set_client_CA_list) #define SSL_set_compliance_policy BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_set_compliance_policy) @@ -582,6 +602,7 @@ #define sk_CRYPTO_BUFFER_deep_copy BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, sk_CRYPTO_BUFFER_deep_copy) #define sk_CRYPTO_BUFFER_new_null BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, sk_CRYPTO_BUFFER_new_null) #define sk_CRYPTO_BUFFER_num BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, sk_CRYPTO_BUFFER_num) +#define sk_CRYPTO_BUFFER_pop BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, sk_CRYPTO_BUFFER_pop) #define sk_CRYPTO_BUFFER_push BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, sk_CRYPTO_BUFFER_push) #define sk_CRYPTO_BUFFER_set BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, sk_CRYPTO_BUFFER_set) #define sk_CRYPTO_BUFFER_value BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, sk_CRYPTO_BUFFER_value) @@ -1118,7 +1139,6 @@ #define CBS_asn1_oid_to_text BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBS_asn1_oid_to_text) #define CBS_contains_zero_byte BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBS_contains_zero_byte) #define CBS_copy_bytes BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBS_copy_bytes) -#define CBS_data BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBS_data) #define CBS_get_any_asn1 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBS_get_any_asn1) #define CBS_get_any_asn1_element BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBS_get_any_asn1_element) #define CBS_get_any_ber_asn1_element BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBS_get_any_ber_asn1_element) @@ -1151,12 +1171,10 @@ #define CBS_get_until_first BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBS_get_until_first) #define CBS_get_utf32_be BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBS_get_utf32_be) #define CBS_get_utf8 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBS_get_utf8) -#define CBS_init BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBS_init) #define CBS_is_unsigned_asn1_integer BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBS_is_unsigned_asn1_integer) #define CBS_is_valid_asn1_bitstring BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBS_is_valid_asn1_bitstring) #define CBS_is_valid_asn1_integer BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBS_is_valid_asn1_integer) #define CBS_is_valid_asn1_oid BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBS_is_valid_asn1_oid) -#define CBS_len BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBS_len) #define CBS_mem_equal BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBS_mem_equal) #define CBS_parse_generalized_time BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBS_parse_generalized_time) #define CBS_parse_utc_time BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBS_parse_utc_time) @@ -1231,7 +1249,7 @@ #define CRYPTO_get_dynlock_destroy_callback BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_get_dynlock_destroy_callback) #define CRYPTO_get_dynlock_lock_callback BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_get_dynlock_lock_callback) #define CRYPTO_get_ex_data BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_get_ex_data) -#define CRYPTO_get_ex_new_index BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_get_ex_new_index) +#define CRYPTO_get_ex_new_index_ex BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_get_ex_new_index_ex) #define CRYPTO_get_fork_generation BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_get_fork_generation) #define CRYPTO_get_lock_name BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_get_lock_name) #define CRYPTO_get_locking_callback BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_get_locking_callback) @@ -1517,6 +1535,7 @@ #define ERR_get_error_line_data BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ERR_get_error_line_data) #define ERR_get_next_error_library BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ERR_get_next_error_library) #define ERR_lib_error_string BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ERR_lib_error_string) +#define ERR_lib_symbol_name BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ERR_lib_symbol_name) #define ERR_load_BIO_strings BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ERR_load_BIO_strings) #define ERR_load_ERR_strings BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ERR_load_ERR_strings) #define ERR_load_RAND_strings BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ERR_load_RAND_strings) @@ -1533,6 +1552,7 @@ #define ERR_print_errors_fp BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ERR_print_errors_fp) #define ERR_put_error BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ERR_put_error) #define ERR_reason_error_string BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ERR_reason_error_string) +#define ERR_reason_symbol_name BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ERR_reason_symbol_name) #define ERR_remove_state BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ERR_remove_state) #define ERR_remove_thread_state BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ERR_remove_thread_state) #define ERR_restore_state BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ERR_restore_state) @@ -1705,6 +1725,7 @@ #define EVP_PKEY_CTX_set0_rsa_oaep_label BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, EVP_PKEY_CTX_set0_rsa_oaep_label) #define EVP_PKEY_CTX_set1_hkdf_key BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, EVP_PKEY_CTX_set1_hkdf_key) #define EVP_PKEY_CTX_set1_hkdf_salt BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, EVP_PKEY_CTX_set1_hkdf_salt) +#define EVP_PKEY_CTX_set_dh_pad BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, EVP_PKEY_CTX_set_dh_pad) #define EVP_PKEY_CTX_set_dsa_paramgen_bits BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, EVP_PKEY_CTX_set_dsa_paramgen_bits) #define EVP_PKEY_CTX_set_dsa_paramgen_q_bits BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, EVP_PKEY_CTX_set_dsa_paramgen_q_bits) #define EVP_PKEY_CTX_set_ec_param_enc BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, EVP_PKEY_CTX_set_ec_param_enc) @@ -1721,6 +1742,7 @@ #define EVP_PKEY_CTX_set_rsa_pss_saltlen BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, EVP_PKEY_CTX_set_rsa_pss_saltlen) #define EVP_PKEY_CTX_set_signature_md BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, EVP_PKEY_CTX_set_signature_md) #define EVP_PKEY_assign BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, EVP_PKEY_assign) +#define EVP_PKEY_assign_DH BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, EVP_PKEY_assign_DH) #define EVP_PKEY_assign_DSA BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, EVP_PKEY_assign_DSA) #define EVP_PKEY_assign_EC_KEY BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, EVP_PKEY_assign_EC_KEY) #define EVP_PKEY_assign_RSA BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, EVP_PKEY_assign_RSA) @@ -1762,6 +1784,7 @@ #define EVP_PKEY_print_params BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, EVP_PKEY_print_params) #define EVP_PKEY_print_private BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, EVP_PKEY_print_private) #define EVP_PKEY_print_public BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, EVP_PKEY_print_public) +#define EVP_PKEY_set1_DH BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, EVP_PKEY_set1_DH) #define EVP_PKEY_set1_DSA BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, EVP_PKEY_set1_DSA) #define EVP_PKEY_set1_EC_KEY BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, EVP_PKEY_set1_EC_KEY) #define EVP_PKEY_set1_RSA BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, EVP_PKEY_set1_RSA) @@ -2342,6 +2365,10 @@ #define SPAKE2_CTX_new BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SPAKE2_CTX_new) #define SPAKE2_generate_msg BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SPAKE2_generate_msg) #define SPAKE2_process_msg BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SPAKE2_process_msg) +#define SPX_generate_key BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SPX_generate_key) +#define SPX_generate_key_from_seed BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SPX_generate_key_from_seed) +#define SPX_sign BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SPX_sign) +#define SPX_verify BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SPX_verify) #define SSLeay BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSLeay) #define SSLeay_version BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSLeay_version) #define TRUST_TOKEN_CLIENT_add_key BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, TRUST_TOKEN_CLIENT_add_key) @@ -2832,45 +2859,6 @@ #define X509v3_get_ext_count BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509v3_get_ext_count) #define a2i_IPADDRESS BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, a2i_IPADDRESS) #define a2i_IPADDRESS_NC BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, a2i_IPADDRESS_NC) -#define abi_test_bad_unwind_temporary BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, abi_test_bad_unwind_temporary) -#define abi_test_bad_unwind_wrong_register BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, abi_test_bad_unwind_wrong_register) -#define abi_test_clobber_r10 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, abi_test_clobber_r10) -#define abi_test_clobber_r11 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, abi_test_clobber_r11) -#define abi_test_clobber_r12 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, abi_test_clobber_r12) -#define abi_test_clobber_r13 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, abi_test_clobber_r13) -#define abi_test_clobber_r14 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, abi_test_clobber_r14) -#define abi_test_clobber_r15 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, abi_test_clobber_r15) -#define abi_test_clobber_r8 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, abi_test_clobber_r8) -#define abi_test_clobber_r9 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, abi_test_clobber_r9) -#define abi_test_clobber_rax BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, abi_test_clobber_rax) -#define abi_test_clobber_rbp BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, abi_test_clobber_rbp) -#define abi_test_clobber_rbx BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, abi_test_clobber_rbx) -#define abi_test_clobber_rcx BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, abi_test_clobber_rcx) -#define abi_test_clobber_rdi BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, abi_test_clobber_rdi) -#define abi_test_clobber_rdx BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, abi_test_clobber_rdx) -#define abi_test_clobber_rsi BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, abi_test_clobber_rsi) -#define abi_test_clobber_xmm0 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, abi_test_clobber_xmm0) -#define abi_test_clobber_xmm1 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, abi_test_clobber_xmm1) -#define abi_test_clobber_xmm10 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, abi_test_clobber_xmm10) -#define abi_test_clobber_xmm11 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, abi_test_clobber_xmm11) -#define abi_test_clobber_xmm12 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, abi_test_clobber_xmm12) -#define abi_test_clobber_xmm13 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, abi_test_clobber_xmm13) -#define abi_test_clobber_xmm14 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, abi_test_clobber_xmm14) -#define abi_test_clobber_xmm15 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, abi_test_clobber_xmm15) -#define abi_test_clobber_xmm2 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, abi_test_clobber_xmm2) -#define abi_test_clobber_xmm3 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, abi_test_clobber_xmm3) -#define abi_test_clobber_xmm4 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, abi_test_clobber_xmm4) -#define abi_test_clobber_xmm5 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, abi_test_clobber_xmm5) -#define abi_test_clobber_xmm6 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, abi_test_clobber_xmm6) -#define abi_test_clobber_xmm7 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, abi_test_clobber_xmm7) -#define abi_test_clobber_xmm8 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, abi_test_clobber_xmm8) -#define abi_test_clobber_xmm9 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, abi_test_clobber_xmm9) -#define abi_test_get_and_clear_direction_flag BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, abi_test_get_and_clear_direction_flag) -#define abi_test_set_direction_flag BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, abi_test_set_direction_flag) -#define abi_test_trampoline BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, abi_test_trampoline) -#define abi_test_unwind_return BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, abi_test_unwind_return) -#define abi_test_unwind_start BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, abi_test_unwind_start) -#define abi_test_unwind_stop BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, abi_test_unwind_stop) #define aes128gcmsiv_aes_ks BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, aes128gcmsiv_aes_ks) #define aes128gcmsiv_aes_ks_enc_x1 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, aes128gcmsiv_aes_ks_enc_x1) #define aes128gcmsiv_dec BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, aes128gcmsiv_dec) @@ -3018,7 +3006,6 @@ #define chacha20_poly1305_open BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, chacha20_poly1305_open) #define chacha20_poly1305_seal BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, chacha20_poly1305_seal) #define crypto_gcm_clmul_enabled BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, crypto_gcm_clmul_enabled) -#define d2i_ACCESS_DESCRIPTION BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_ACCESS_DESCRIPTION) #define d2i_ASN1_BIT_STRING BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_ASN1_BIT_STRING) #define d2i_ASN1_BMPSTRING BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_ASN1_BMPSTRING) #define d2i_ASN1_BOOLEAN BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_ASN1_BOOLEAN) @@ -3051,8 +3038,6 @@ #define d2i_DHparams_bio BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_DHparams_bio) #define d2i_DIRECTORYSTRING BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_DIRECTORYSTRING) #define d2i_DISPLAYTEXT BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_DISPLAYTEXT) -#define d2i_DIST_POINT BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_DIST_POINT) -#define d2i_DIST_POINT_NAME BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_DIST_POINT_NAME) #define d2i_DSAPrivateKey BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_DSAPrivateKey) #define d2i_DSAPrivateKey_bio BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_DSAPrivateKey_bio) #define d2i_DSAPrivateKey_fp BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_DSAPrivateKey_fp) @@ -3076,7 +3061,6 @@ #define d2i_ISSUING_DIST_POINT BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_ISSUING_DIST_POINT) #define d2i_NETSCAPE_SPKAC BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_NETSCAPE_SPKAC) #define d2i_NETSCAPE_SPKI BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_NETSCAPE_SPKI) -#define d2i_NOTICEREF BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_NOTICEREF) #define d2i_PKCS12 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_PKCS12) #define d2i_PKCS12_bio BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_PKCS12_bio) #define d2i_PKCS12_fp BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_PKCS12_fp) @@ -3089,8 +3073,6 @@ #define d2i_PKCS8_PRIV_KEY_INFO_fp BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_PKCS8_PRIV_KEY_INFO_fp) #define d2i_PKCS8_bio BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_PKCS8_bio) #define d2i_PKCS8_fp BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_PKCS8_fp) -#define d2i_POLICYINFO BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_POLICYINFO) -#define d2i_POLICYQUALINFO BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_POLICYQUALINFO) #define d2i_PUBKEY BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_PUBKEY) #define d2i_PUBKEY_bio BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_PUBKEY_bio) #define d2i_PUBKEY_fp BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_PUBKEY_fp) @@ -3108,7 +3090,6 @@ #define d2i_RSA_PUBKEY BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_RSA_PUBKEY) #define d2i_RSA_PUBKEY_bio BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_RSA_PUBKEY_bio) #define d2i_RSA_PUBKEY_fp BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_RSA_PUBKEY_fp) -#define d2i_USERNOTICE BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_USERNOTICE) #define d2i_X509 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_X509) #define d2i_X509_ALGOR BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_X509_ALGOR) #define d2i_X509_ATTRIBUTE BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_X509_ATTRIBUTE) @@ -3132,8 +3113,10 @@ #define d2i_X509_VAL BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_X509_VAL) #define d2i_X509_bio BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_X509_bio) #define d2i_X509_fp BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_X509_fp) +#define dh_asn1_meth BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, dh_asn1_meth) #define dh_check_params_fast BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, dh_check_params_fast) #define dh_compute_key_padded_no_self_test BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, dh_compute_key_padded_no_self_test) +#define dh_pkey_meth BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, dh_pkey_meth) #define dsa_asn1_meth BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, dsa_asn1_meth) #define dsa_check_key BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, dsa_check_key) #define ec_GFp_mont_add BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_GFp_mont_add) @@ -3238,6 +3221,7 @@ #define ecp_nistz256_sqr_mont BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ecp_nistz256_sqr_mont) #define ed25519_asn1_meth BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ed25519_asn1_meth) #define ed25519_pkey_meth BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ed25519_pkey_meth) +#define evp_pkey_set_method BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, evp_pkey_set_method) #define fiat_curve25519_adx_mul BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, fiat_curve25519_adx_mul) #define fiat_curve25519_adx_square BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, fiat_curve25519_adx_square) #define fiat_p256_adx_mul BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, fiat_p256_adx_mul) @@ -3261,7 +3245,6 @@ #define i2a_ASN1_STRING BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2a_ASN1_STRING) #define i2c_ASN1_BIT_STRING BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2c_ASN1_BIT_STRING) #define i2c_ASN1_INTEGER BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2c_ASN1_INTEGER) -#define i2d_ACCESS_DESCRIPTION BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_ACCESS_DESCRIPTION) #define i2d_ASN1_BIT_STRING BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_ASN1_BIT_STRING) #define i2d_ASN1_BMPSTRING BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_ASN1_BMPSTRING) #define i2d_ASN1_BOOLEAN BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_ASN1_BOOLEAN) @@ -3293,8 +3276,6 @@ #define i2d_DHparams_bio BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_DHparams_bio) #define i2d_DIRECTORYSTRING BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_DIRECTORYSTRING) #define i2d_DISPLAYTEXT BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_DISPLAYTEXT) -#define i2d_DIST_POINT BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_DIST_POINT) -#define i2d_DIST_POINT_NAME BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_DIST_POINT_NAME) #define i2d_DSAPrivateKey BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_DSAPrivateKey) #define i2d_DSAPrivateKey_bio BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_DSAPrivateKey_bio) #define i2d_DSAPrivateKey_fp BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_DSAPrivateKey_fp) @@ -3318,7 +3299,6 @@ #define i2d_ISSUING_DIST_POINT BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_ISSUING_DIST_POINT) #define i2d_NETSCAPE_SPKAC BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_NETSCAPE_SPKAC) #define i2d_NETSCAPE_SPKI BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_NETSCAPE_SPKI) -#define i2d_NOTICEREF BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_NOTICEREF) #define i2d_PKCS12 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_PKCS12) #define i2d_PKCS12_bio BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_PKCS12_bio) #define i2d_PKCS12_fp BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_PKCS12_fp) @@ -3335,8 +3315,6 @@ #define i2d_PKCS8_PRIV_KEY_INFO_fp BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_PKCS8_PRIV_KEY_INFO_fp) #define i2d_PKCS8_bio BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_PKCS8_bio) #define i2d_PKCS8_fp BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_PKCS8_fp) -#define i2d_POLICYINFO BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_POLICYINFO) -#define i2d_POLICYQUALINFO BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_POLICYQUALINFO) #define i2d_PUBKEY BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_PUBKEY) #define i2d_PUBKEY_bio BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_PUBKEY_bio) #define i2d_PUBKEY_fp BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_PUBKEY_fp) @@ -3354,7 +3332,6 @@ #define i2d_RSA_PUBKEY BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_RSA_PUBKEY) #define i2d_RSA_PUBKEY_bio BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_RSA_PUBKEY_bio) #define i2d_RSA_PUBKEY_fp BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_RSA_PUBKEY_fp) -#define i2d_USERNOTICE BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_USERNOTICE) #define i2d_X509 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_X509) #define i2d_X509_ALGOR BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_X509_ALGOR) #define i2d_X509_ATTRIBUTE BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_X509_ATTRIBUTE) @@ -3479,8 +3456,6 @@ #define spx_fors_sign BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_fors_sign) #define spx_fors_sk_gen BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_fors_sk_gen) #define spx_fors_treehash BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_fors_treehash) -#define spx_generate_key BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_generate_key) -#define spx_generate_key_from_seed BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_generate_key_from_seed) #define spx_get_tree_index BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_get_tree_index) #define spx_ht_sign BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_ht_sign) #define spx_ht_verify BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_ht_verify) @@ -3492,7 +3467,6 @@ #define spx_set_tree_height BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_set_tree_height) #define spx_set_tree_index BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_set_tree_index) #define spx_set_type BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_set_type) -#define spx_sign BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_sign) #define spx_thash_f BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_thash_f) #define spx_thash_h BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_thash_h) #define spx_thash_hmsg BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_thash_hmsg) @@ -3503,7 +3477,6 @@ #define spx_to_uint64 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_to_uint64) #define spx_treehash BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_treehash) #define spx_uint64_to_len_bytes BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_uint64_to_len_bytes) -#define spx_verify BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_verify) #define spx_wots_pk_from_sig BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_wots_pk_from_sig) #define spx_wots_pk_gen BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_wots_pk_gen) #define spx_wots_sign BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_wots_sign) diff --git a/src/compiler/python_generator.cc b/src/compiler/python_generator.cc index e968fedcbad..bb3b0ab84aa 100644 --- a/src/compiler/python_generator.cc +++ b/src/compiler/python_generator.cc @@ -574,6 +574,9 @@ bool PrivateGenerator::PrintAddServicerToServer( "'$PackageQualifiedServiceName$', rpc_method_handlers)\n"); } out->Print("server.add_generic_rpc_handlers((generic_handler,))\n"); + out->Print(method_dict, + "server.add_registered_method_handlers('$" + "PackageQualifiedServiceName$', rpc_method_handlers)\n"); } return true; } diff --git a/src/core/BUILD b/src/core/BUILD index 23040cc5fe8..53457328bfd 100644 --- a/src/core/BUILD +++ b/src/core/BUILD @@ -48,6 +48,25 @@ grpc_cc_library( language = "c++", ) +grpc_cc_library( + name = "dump_args", + srcs = [ + "lib/gprpp/dump_args.cc", + ], + hdrs = [ + "lib/gprpp/dump_args.h", + ], + external_deps = [ + "absl/functional:any_invocable", + "absl/log:check", + "absl/strings", + ], + language = "c++", + deps = [ + "//:gpr_platform", + ], +) + grpc_cc_library( name = "slice_cast", hdrs = [ @@ -92,6 +111,7 @@ grpc_cc_library( external_deps = [ "absl/container:flat_hash_set", "absl/hash", + "absl/log:check", "absl/strings", "absl/utility", ], @@ -118,10 +138,10 @@ grpc_cc_library( grpc_cc_library( name = "server_call_tracer_filter", srcs = [ - "lib/channel/server_call_tracer_filter.cc", + "server/server_call_tracer_filter.cc", ], hdrs = [ - "lib/channel/server_call_tracer_filter.h", + "server/server_call_tracer_filter.h", ], external_deps = [ "absl/status", @@ -195,6 +215,8 @@ grpc_cc_library( ), external_deps = [ "absl/functional:any_invocable", + "absl/log:check", + "absl/log:log", "absl/strings", ], language = "c++", @@ -216,7 +238,7 @@ grpc_cc_library( grpc_cc_library( name = "useful", - hdrs = ["lib/gpr/useful.h"], + hdrs = ["util/useful.h"], external_deps = [ "absl/strings", "absl/types:variant", @@ -241,7 +263,7 @@ grpc_cc_library( grpc_cc_library( name = "gpr_atm", srcs = [ - "lib/gpr/atm.cc", + "util/atm.cc", ], language = "c++", public_hdrs = [ @@ -277,7 +299,7 @@ grpc_cc_library( name = "gpr_spinlock", srcs = [], hdrs = [ - "lib/gpr/spinlock.h", + "util/spinlock.h", ], language = "c++", deps = [ @@ -286,15 +308,6 @@ grpc_cc_library( ], ) -grpc_cc_library( - name = "gpr_log_internal", - hdrs = [ - "lib/gpr/log_internal.h", - ], - language = "c++", - deps = ["//:gpr_platform"], -) - grpc_cc_library( name = "env", srcs = [ @@ -336,6 +349,9 @@ grpc_cc_library( grpc_cc_library( name = "chunked_vector", hdrs = ["lib/gprpp/chunked_vector.h"], + external_deps = [ + "absl/log:check", + ], deps = [ "arena", "gpr_manual_constructor", @@ -359,6 +375,7 @@ grpc_cc_library( "lib/gprpp/status_helper.h", ], external_deps = [ + "absl/log:check", "absl/status", "absl/strings", "absl/strings:cord", @@ -398,11 +415,12 @@ grpc_cc_library( "lib/gprpp/validation_errors.h", ], external_deps = [ + "absl/log:log", "absl/status", "absl/strings", ], language = "c++", - deps = ["//:gpr_platform"], + deps = ["//:gpr"], ) grpc_cc_library( @@ -481,6 +499,7 @@ grpc_cc_library( grpc_cc_library( name = "poll", + external_deps = ["absl/log:check"], language = "c++", public_hdrs = [ "lib/promise/poll.h", @@ -495,6 +514,7 @@ grpc_cc_library( grpc_cc_library( name = "status_flag", external_deps = [ + "absl/log:check", "absl/status", "absl/status:statusor", "absl/types:optional", @@ -512,7 +532,10 @@ grpc_cc_library( grpc_cc_library( name = "map_pipe", - external_deps = ["absl/status"], + external_deps = [ + "absl/log:log", + "absl/status", + ], language = "c++", public_hdrs = [ "lib/promise/map_pipe.h", @@ -540,6 +563,8 @@ grpc_cc_library( ], external_deps = [ "absl/base:core_headers", + "absl/log:check", + "absl/log:log", "absl/strings", "absl/strings:str_format", ], @@ -562,7 +587,10 @@ grpc_cc_library( grpc_cc_library( name = "context", - external_deps = ["absl/meta:type_traits"], + external_deps = [ + "absl/log:check", + "absl/meta:type_traits", + ], language = "c++", public_hdrs = [ "lib/promise/context.h", @@ -636,7 +664,10 @@ grpc_cc_library( grpc_cc_library( name = "promise_like", - external_deps = ["absl/meta:type_traits"], + external_deps = [ + "absl/functional:any_invocable", + "absl/meta:type_traits", + ], language = "c++", public_hdrs = [ "lib/promise/detail/promise_like.h", @@ -703,6 +734,7 @@ grpc_cc_library( grpc_cc_library( name = "promise_status", external_deps = [ + "absl/log:check", "absl/status", "absl/status:statusor", ], @@ -748,6 +780,10 @@ grpc_cc_library( grpc_cc_library( name = "join_state", + external_deps = [ + "absl/log:check", + "absl/log:log", + ], language = "c++", public_hdrs = [ "lib/promise/detail/join_state.h", @@ -780,6 +816,7 @@ grpc_cc_library( grpc_cc_library( name = "try_join", external_deps = [ + "absl/log:check", "absl/meta:type_traits", "absl/status", "absl/status:statusor", @@ -834,6 +871,8 @@ grpc_cc_library( name = "seq_state", external_deps = [ "absl/base:core_headers", + "absl/log:check", + "absl/log:log", "absl/strings", ], language = "c++", @@ -870,6 +909,7 @@ grpc_cc_library( grpc_cc_library( name = "try_seq", external_deps = [ + "absl/log:check", "absl/meta:type_traits", "absl/status", "absl/status:statusor", @@ -897,6 +937,7 @@ grpc_cc_library( ], external_deps = [ "absl/base:core_headers", + "absl/log:check", "absl/status", "absl/strings", "absl/strings:str_format", @@ -941,6 +982,7 @@ grpc_cc_library( hdrs = [ "lib/promise/event_engine_wakeup_scheduler.h", ], + external_deps = ["absl/log:check"], language = "c++", deps = [ "//:event_engine_base_hdrs", @@ -968,7 +1010,11 @@ grpc_cc_library( grpc_cc_library( name = "latch", - external_deps = ["absl/strings"], + external_deps = [ + "absl/log:check", + "absl/log:log", + "absl/strings", + ], language = "c++", public_hdrs = [ "lib/promise/latch.h", @@ -985,6 +1031,7 @@ grpc_cc_library( name = "inter_activity_latch", external_deps = [ "absl/base:core_headers", + "absl/log:log", "absl/strings", ], language = "c++", @@ -1006,6 +1053,8 @@ grpc_cc_library( "lib/promise/interceptor_list.h", ], external_deps = [ + "absl/log:check", + "absl/log:log", "absl/strings", "absl/strings:str_format", "absl/types:optional", @@ -1028,6 +1077,8 @@ grpc_cc_library( "lib/promise/pipe.h", ], external_deps = [ + "absl/log:check", + "absl/log:log", "absl/strings", "absl/types:optional", "absl/types:variant", @@ -1054,6 +1105,7 @@ grpc_cc_library( hdrs = [ "lib/promise/promise_mutex.h", ], + external_deps = ["absl/log:check"], language = "c++", deps = [ "activity", @@ -1101,7 +1153,10 @@ grpc_cc_library( hdrs = [ "lib/promise/mpsc.h", ], - external_deps = ["absl/base:core_headers"], + external_deps = [ + "absl/base:core_headers", + "absl/log:check", + ], language = "c++", deps = [ "activity", @@ -1121,6 +1176,7 @@ grpc_cc_library( external_deps = [ "absl/container:flat_hash_set", "absl/functional:any_invocable", + "absl/log:check", ], language = "c++", deps = [ @@ -1133,6 +1189,8 @@ grpc_cc_library( grpc_cc_library( name = "for_each", external_deps = [ + "absl/log:check", + "absl/log:log", "absl/status", "absl/strings", ], @@ -1153,6 +1211,10 @@ grpc_cc_library( grpc_cc_library( name = "ref_counted", + external_deps = [ + "absl/log:check", + "absl/log:log", + ], language = "c++", public_hdrs = ["lib/gprpp/ref_counted.h"], deps = [ @@ -1166,6 +1228,10 @@ grpc_cc_library( grpc_cc_library( name = "dual_ref_counted", + external_deps = [ + "absl/log:check", + "absl/log:log", + ], language = "c++", public_hdrs = ["lib/gprpp/dual_ref_counted.h"], deps = [ @@ -1207,7 +1273,7 @@ grpc_cc_library( name = "handshaker_factory", language = "c++", public_hdrs = [ - "lib/transport/handshaker_factory.h", + "handshaker/handshaker_factory.h", ], visibility = ["@grpc:alt_grpc_base_legacy"], deps = [ @@ -1220,11 +1286,11 @@ grpc_cc_library( grpc_cc_library( name = "handshaker_registry", srcs = [ - "lib/transport/handshaker_registry.cc", + "handshaker/handshaker_registry.cc", ], language = "c++", public_hdrs = [ - "lib/transport/handshaker_registry.h", + "handshaker/handshaker_registry.h", ], visibility = ["@grpc:alt_grpc_base_legacy"], deps = [ @@ -1238,17 +1304,18 @@ grpc_cc_library( grpc_cc_library( name = "tcp_connect_handshaker", srcs = [ - "lib/transport/tcp_connect_handshaker.cc", + "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 = [ - "lib/transport/tcp_connect_handshaker.h", + "handshaker/tcp_connect/tcp_connect_handshaker.h", ], deps = [ "channel_args", @@ -1277,10 +1344,10 @@ grpc_cc_library( grpc_cc_library( name = "endpoint_info_handshaker", srcs = [ - "lib/transport/endpoint_info_handshaker.cc", + "handshaker/endpoint_info/endpoint_info_handshaker.cc", ], hdrs = [ - "lib/transport/endpoint_info_handshaker.h", + "handshaker/endpoint_info/endpoint_info_handshaker.h", ], external_deps = [ "absl/status", @@ -1358,6 +1425,8 @@ grpc_cc_library( external_deps = [ "absl/base:core_headers", "absl/container:flat_hash_set", + "absl/log:check", + "absl/log:log", "absl/status", "absl/strings", "absl/types:optional", @@ -1408,6 +1477,9 @@ grpc_cc_library( hdrs = [ "lib/resource_quota/arena.h", ], + external_deps = [ + "absl/log:log", + ], visibility = [ "@grpc:alt_grpc_base_legacy", ], @@ -1428,7 +1500,10 @@ grpc_cc_library( hdrs = [ "lib/resource_quota/thread_quota.h", ], - external_deps = ["absl/base:core_headers"], + external_deps = [ + "absl/base:core_headers", + "absl/log:check", + ], deps = [ "ref_counted", "//:gpr", @@ -1444,7 +1519,10 @@ grpc_cc_library( hdrs = [ "lib/resource_quota/connection_quota.h", ], - external_deps = ["absl/base:core_headers"], + external_deps = [ + "absl/base:core_headers", + "absl/log:check", + ], deps = [ "memory_quota", "ref_counted", @@ -1501,6 +1579,9 @@ grpc_cc_library( hdrs = [ "lib/slice/slice_refcount.h", ], + external_deps = [ + "absl/log:log", + ], public_hdrs = [ "//:include/grpc/slice.h", ], @@ -1526,6 +1607,7 @@ grpc_cc_library( ], external_deps = [ "absl/hash", + "absl/log:check", "absl/strings", ], visibility = ["@grpc:alt_grpc_base_legacy"], @@ -1547,6 +1629,9 @@ grpc_cc_library( "lib/slice/slice_buffer.h", "//:include/grpc/slice_buffer.h", ], + external_deps = [ + "absl/log:check", + ], deps = [ "slice", "slice_refcount", @@ -1563,6 +1648,8 @@ grpc_cc_library( "lib/iomgr/error.h", ], external_deps = [ + "absl/log:check", + "absl/log:log", "absl/status", "absl/strings:str_format", ], @@ -1588,7 +1675,11 @@ grpc_cc_library( hdrs = [ "lib/iomgr/closure.h", ], - external_deps = ["absl/strings:str_format"], + external_deps = [ + "absl/log:check", + "absl/log:log", + "absl/strings:str_format", + ], visibility = ["@grpc:alt_grpc_base_legacy"], deps = [ "error", @@ -1607,6 +1698,8 @@ grpc_cc_library( "lib/gprpp/time.h", ], external_deps = [ + "absl/log:check", + "absl/log:log", "absl/strings:str_format", "absl/types:optional", ], @@ -1647,6 +1740,9 @@ grpc_cc_library( "lib/iomgr/sockaddr_windows.h", "lib/iomgr/socket_utils.h", ], + external_deps = [ + "absl/log:check", + ], deps = [ "iomgr_port", "//:gpr", @@ -1683,6 +1779,10 @@ grpc_cc_library( hdrs = [ "lib/event_engine/forkable.h", ], + external_deps = [ + "absl/log:check", + "absl/log:log", + ], deps = [ "//:config_vars", "//:gpr", @@ -1830,6 +1930,8 @@ grpc_cc_library( "absl/base:core_headers", "absl/container:flat_hash_set", "absl/functional:any_invocable", + "absl/log:check", + "absl/log:log", "absl/time", "absl/types:optional", ], @@ -1879,6 +1981,8 @@ grpc_cc_library( ], external_deps = [ "absl/base:core_headers", + "absl/log:check", + "absl/log:log", "absl/time", "absl/types:optional", ], @@ -1938,7 +2042,10 @@ grpc_cc_library( hdrs = [ "lib/event_engine/posix_engine/lockfree_event.h", ], - external_deps = ["absl/status"], + external_deps = [ + "absl/log:check", + "absl/status", + ], deps = [ "gpr_atm", "posix_event_engine_closure", @@ -2032,6 +2139,8 @@ grpc_cc_library( "absl/base:core_headers", "absl/container:inlined_vector", "absl/functional:function_ref", + "absl/log:check", + "absl/log:log", "absl/status", "absl/status:statusor", "absl/strings", @@ -2068,6 +2177,7 @@ grpc_cc_library( "absl/container:inlined_vector", "absl/functional:any_invocable", "absl/functional:function_ref", + "absl/log:check", "absl/status", "absl/status:statusor", "absl/strings", @@ -2137,6 +2247,7 @@ grpc_cc_library( ], external_deps = [ "absl/functional:any_invocable", + "absl/log:log", "absl/status", "absl/types:optional", ], @@ -2160,6 +2271,8 @@ grpc_cc_library( "absl/container:flat_hash_map", "absl/functional:any_invocable", "absl/hash", + "absl/log:check", + "absl/log:log", "absl/status", "absl/status:statusor", "absl/strings", @@ -2199,7 +2312,10 @@ grpc_cc_library( name = "event_engine_utils", srcs = ["lib/event_engine/utils.cc"], hdrs = ["lib/event_engine/utils.h"], - external_deps = ["absl/strings"], + external_deps = [ + "absl/log:check", + "absl/strings", + ], deps = [ "time", "//:event_engine_base_hdrs", @@ -2217,6 +2333,8 @@ grpc_cc_library( ], external_deps = [ "absl/cleanup", + "absl/log:check", + "absl/log:log", "absl/status", "absl/status:statusor", "absl/strings", @@ -2248,6 +2366,8 @@ grpc_cc_library( ], external_deps = [ "absl/cleanup", + "absl/log:check", + "absl/log:log", "absl/status", "absl/status:statusor", "absl/strings", @@ -2274,6 +2394,8 @@ grpc_cc_library( external_deps = [ "absl/base:core_headers", "absl/functional:any_invocable", + "absl/log:check", + "absl/log:log", "absl/status", "absl/status:statusor", "absl/strings", @@ -2309,6 +2431,8 @@ grpc_cc_library( "absl/container:flat_hash_map", "absl/functional:any_invocable", "absl/hash", + "absl/log:check", + "absl/log:log", "absl/status", "absl/status:statusor", "absl/strings", @@ -2350,6 +2474,8 @@ grpc_cc_library( srcs = ["lib/event_engine/windows/windows_engine.cc"], hdrs = ["lib/event_engine/windows/windows_engine.h"], external_deps = [ + "absl/log:check", + "absl/log:log", "absl/status", "absl/status:statusor", "absl/strings", @@ -2403,6 +2529,8 @@ grpc_cc_library( external_deps = [ "absl/base:core_headers", "absl/functional:any_invocable", + "absl/log:check", + "absl/log:log", "absl/status", "absl/strings:str_format", ], @@ -2431,6 +2559,8 @@ grpc_cc_library( external_deps = [ "absl/cleanup", "absl/functional:any_invocable", + "absl/log:check", + "absl/log:log", "absl/status", "absl/strings:str_format", ], @@ -2458,6 +2588,8 @@ grpc_cc_library( ], external_deps = [ "absl/base:core_headers", + "absl/log:check", + "absl/log:log", "absl/status", "absl/status:statusor", "absl/strings:str_format", @@ -2491,6 +2623,8 @@ grpc_cc_library( ], external_deps = [ "absl/container:flat_hash_map", + "absl/log:check", + "absl/log:log", "absl/strings", "absl/strings:str_format", ], @@ -2524,6 +2658,8 @@ grpc_cc_library( "lib/event_engine/tcp_socket_utils.h", ], external_deps = [ + "absl/log:check", + "absl/log:log", "absl/status", "absl/status:statusor", "absl/strings", @@ -2550,6 +2686,9 @@ grpc_cc_library( hdrs = [ "lib/event_engine/trace.h", ], + external_deps = [ + "absl/log:log", + ], deps = [ "//:gpr", "//:gpr_platform", @@ -2599,6 +2738,7 @@ grpc_cc_library( ], "//:ios": ["cf_event_engine"], "//:tvos": ["cf_event_engine"], + "//:visionos": ["cf_event_engine"], "//:watchos": ["cf_event_engine"], "//conditions:default": ["posix_event_engine"], }, @@ -2738,6 +2878,8 @@ grpc_cc_library( "absl/container:flat_hash_map", "absl/functional:any_invocable", "absl/hash", + "absl/log:check", + "absl/log:log", "absl/status", "absl/status:statusor", "absl/strings", @@ -2792,7 +2934,11 @@ grpc_cc_library( "lib/transport/bdp_estimator.cc", ], hdrs = ["lib/transport/bdp_estimator.h"], - external_deps = ["absl/strings"], + external_deps = [ + "absl/log:check", + "absl/log:log", + "absl/strings", + ], deps = [ "time", "//:gpr", @@ -2808,6 +2954,9 @@ grpc_cc_library( hdrs = [ "lib/slice/percent_encoding.h", ], + external_deps = [ + "absl/log:check", + ], deps = [ "bitset", "slice", @@ -2897,6 +3046,7 @@ grpc_cc_library( ], external_deps = [ "absl/base:core_headers", + "absl/log:check", "absl/strings", "absl/types:span", ], @@ -2971,6 +3121,8 @@ grpc_cc_library( ], external_deps = [ "absl/functional:any_invocable", + "absl/log:check", + "absl/log:log", "absl/strings", "absl/types:optional", ], @@ -2981,6 +3133,7 @@ grpc_cc_library( "channel_fwd", "channel_stack_trace", "channel_stack_type", + "interception_chain", "//:channel_stack_builder", "//:debug_location", "//:gpr", @@ -2992,12 +3145,13 @@ grpc_cc_library( grpc_cc_library( name = "server_interface", hdrs = [ - "lib/surface/server_interface.h", + "server/server_interface.h", ], language = "c++", deps = [ "channel_args", "//:channelz", + "//:event_engine_base_hdrs", "//:gpr_platform", ], ) @@ -3007,6 +3161,9 @@ grpc_cc_library( hdrs = [ "lib/gprpp/single_set_ptr.h", ], + external_deps = [ + "absl/log:check", + ], language = "c++", deps = ["//:gpr"], ) @@ -3017,7 +3174,10 @@ grpc_cc_library( "service_config/service_config.h", "service_config/service_config_call_data.h", ], - external_deps = ["absl/strings"], + external_deps = [ + "absl/log:check", + "absl/strings", + ], language = "c++", deps = [ "arena", @@ -3041,7 +3201,10 @@ grpc_cc_library( hdrs = [ "service_config/service_config_parser.h", ], - external_deps = ["absl/strings"], + external_deps = [ + "absl/log:log", + "absl/strings", + ], language = "c++", deps = [ "channel_args", @@ -3069,6 +3232,8 @@ grpc_cc_library( "lib/channel/channel_args.h", ], external_deps = [ + "absl/log:check", + "absl/log:log", "absl/meta:type_traits", "absl/strings", "absl/strings:str_format", @@ -3111,6 +3276,7 @@ grpc_cc_library( ], external_deps = [ "absl/functional:any_invocable", + "absl/log:check", ], language = "c++", deps = [ @@ -3182,6 +3348,7 @@ grpc_cc_library( "client_channel/config_selector.h", ], external_deps = [ + "absl/log:check", "absl/status", "absl/strings", ], @@ -3242,6 +3409,7 @@ grpc_cc_library( "client_channel/retry_service_config.h", ], external_deps = [ + "absl/log:log", "absl/strings", "absl/types:optional", ], @@ -3292,6 +3460,7 @@ grpc_cc_library( "client_channel/backup_poller.h", ], external_deps = [ + "absl/log:log", "absl/status", ], language = "c++", @@ -3309,35 +3478,13 @@ grpc_cc_library( ], ) -grpc_cc_library( - name = "client_channel_channelz", - srcs = [ - "client_channel/client_channel_channelz.cc", - ], - hdrs = [ - "client_channel/client_channel_channelz.h", - ], - external_deps = [ - "absl/base:core_headers", - "absl/strings", - ], - language = "c++", - deps = [ - "connectivity_state", - "json", - "//:channelz", - "//:gpr", - "//:grpc_public_hdrs", - "//:ref_counted_ptr", - ], -) - grpc_cc_library( name = "service_config_channel_arg_filter", srcs = [ "service_config/service_config_channel_arg_filter.cc", ], external_deps = [ + "absl/log:log", "absl/status", "absl/status:statusor", "absl/types:optional", @@ -3423,6 +3570,8 @@ grpc_cc_library( srcs = ["load_balancing/lb_policy_registry.cc"], hdrs = ["load_balancing/lb_policy_registry.h"], external_deps = [ + "absl/log:check", + "absl/log:log", "absl/status", "absl/status:statusor", "absl/strings", @@ -3495,7 +3644,7 @@ grpc_cc_library( grpc_cc_library( name = "proxy_mapper", - hdrs = ["lib/handshaker/proxy_mapper.h"], + hdrs = ["handshaker/proxy_mapper.h"], external_deps = [ "absl/strings", "absl/types:optional", @@ -3509,8 +3658,8 @@ grpc_cc_library( grpc_cc_library( name = "proxy_mapper_registry", - srcs = ["lib/handshaker/proxy_mapper_registry.cc"], - hdrs = ["lib/handshaker/proxy_mapper_registry.h"], + srcs = ["handshaker/proxy_mapper_registry.cc"], + hdrs = ["handshaker/proxy_mapper_registry.h"], external_deps = [ "absl/strings", "absl/types:optional", @@ -3526,12 +3675,14 @@ grpc_cc_library( grpc_cc_library( name = "http_proxy_mapper", srcs = [ - "client_channel/http_proxy_mapper.cc", + "handshaker/http_connect/http_proxy_mapper.cc", ], hdrs = [ - "client_channel/http_proxy_mapper.h", + "handshaker/http_connect/http_proxy_mapper.h", ], external_deps = [ + "absl/log:check", + "absl/log:log", "absl/status", "absl/status:statusor", "absl/strings", @@ -3559,7 +3710,7 @@ grpc_cc_library( grpc_cc_library( name = "grpc_server_config_selector", hdrs = [ - "ext/filters/server_config_selector/server_config_selector.h", + "server/server_config_selector.h", ], external_deps = [ "absl/status:statusor", @@ -3582,13 +3733,14 @@ grpc_cc_library( grpc_cc_library( name = "grpc_server_config_selector_filter", srcs = [ - "ext/filters/server_config_selector/server_config_selector_filter.cc", + "server/server_config_selector_filter.cc", ], hdrs = [ - "ext/filters/server_config_selector/server_config_selector_filter.h", + "server/server_config_selector_filter.h", ], external_deps = [ "absl/base:core_headers", + "absl/log:check", "absl/status", "absl/status:statusor", "absl/types:optional", @@ -3668,7 +3820,11 @@ grpc_cc_library( hdrs = [ "lib/security/certificate_provider/certificate_provider_registry.h", ], - external_deps = ["absl/strings"], + external_deps = [ + "absl/log:check", + "absl/log:log", + "absl/strings", + ], deps = [ "certificate_provider_factory", "//:gpr", @@ -3687,6 +3843,7 @@ grpc_cc_library( ], external_deps = [ "absl/base:core_headers", + "absl/log:check", "absl/status", "absl/status:statusor", "absl/strings", @@ -3713,6 +3870,7 @@ grpc_cc_library( "lib/security/authorization/grpc_server_authz_filter.h", ], external_deps = [ + "absl/log:log", "absl/status", "absl/status:statusor", "absl/strings", @@ -3755,6 +3913,7 @@ grpc_cc_library( external_deps = [ "absl/base:core_headers", "absl/container:flat_hash_map", + "absl/log:log", "absl/status", "absl/status:statusor", "absl/strings", @@ -3787,6 +3946,8 @@ grpc_cc_library( "load_balancing/grpclb/grpclb.h", ], external_deps = [ + "absl/log:check", + "absl/log:log", "absl/status", "absl/status:statusor", "absl/strings", @@ -3832,6 +3993,7 @@ grpc_cc_library( "lib/security/security_connector/insecure/insecure_security_connector.h", ], external_deps = [ + "absl/log:check", "absl/status", "absl/strings", ], @@ -3866,6 +4028,9 @@ grpc_cc_library( hdrs = [ "tsi/local_transport_security.h", ], + external_deps = [ + "absl/log:log", + ], language = "c++", deps = [ "//:event_engine_base_hdrs", @@ -3886,6 +4051,8 @@ grpc_cc_library( "lib/security/security_connector/local/local_security_connector.h", ], external_deps = [ + "absl/log:check", + "absl/log:log", "absl/status", "absl/status:statusor", "absl/strings", @@ -3932,6 +4099,8 @@ grpc_cc_library( "lib/security/security_connector/ssl/ssl_security_connector.h", ], external_deps = [ + "absl/log:check", + "absl/log:log", "absl/status", "absl/strings", "absl/strings:str_format", @@ -3976,6 +4145,8 @@ grpc_cc_library( "load_balancing/grpclb/grpclb.h", ], external_deps = [ + "absl/log:check", + "absl/log:log", "absl/status:statusor", "absl/strings", "absl/types:optional", @@ -4057,6 +4228,8 @@ grpc_cc_library( "absl/base:core_headers", "absl/container:inlined_vector", "absl/functional:bind_front", + "absl/log:check", + "absl/log:log", "absl/status", "absl/status:statusor", "absl/strings", @@ -4108,6 +4281,7 @@ grpc_cc_library( "lib/security/credentials/iam/iam_credentials.h", ], external_deps = [ + "absl/log:check", "absl/status:statusor", "absl/strings", "absl/strings:str_format", @@ -4141,6 +4315,8 @@ grpc_cc_library( "lib/security/credentials/oauth2/oauth2_credentials.h", ], external_deps = [ + "absl/log:check", + "absl/log:log", "absl/status", "absl/status:statusor", "absl/strings", @@ -4202,6 +4378,8 @@ grpc_cc_library( "lib/security/credentials/external/url_external_account_credentials.h", ], external_deps = [ + "absl/log:check", + "absl/log:log", "absl/status", "absl/status:statusor", "absl/strings", @@ -4248,6 +4426,7 @@ grpc_cc_library( "lib/http/httpcli_ssl_credentials.h", ], external_deps = [ + "absl/log:log", "absl/status", "absl/strings", "absl/types:optional", @@ -4321,6 +4500,8 @@ grpc_cc_library( "lib/security/authorization/rbac_policy.h", ], external_deps = [ + "absl/log:check", + "absl/log:log", "absl/status", "absl/status:statusor", "absl/strings", @@ -4358,6 +4539,7 @@ grpc_cc_library( ], external_deps = [ "absl/base:core_headers", + "absl/log:check", "absl/status", "absl/status:statusor", "absl/strings", @@ -4469,6 +4651,8 @@ grpc_cc_library( ], external_deps = [ "absl/base:core_headers", + "absl/log:check", + "absl/log:log", "absl/meta:type_traits", "absl/random", "absl/status", @@ -4511,42 +4695,6 @@ grpc_cc_library( ], ) -grpc_cc_library( - name = "grpc_deadline_filter", - srcs = [ - "ext/filters/deadline/deadline_filter.cc", - ], - hdrs = [ - "ext/filters/deadline/deadline_filter.h", - ], - external_deps = [ - "absl/status", - "absl/types:optional", - ], - language = "c++", - deps = [ - "arena", - "arena_promise", - "channel_fwd", - "channel_stack_type", - "closure", - "context", - "error", - "metadata_batch", - "status_helper", - "time", - "//:call_combiner", - "//:channel_arg_names", - "//:config", - "//:debug_location", - "//:exec_ctx", - "//:gpr", - "//:grpc_base", - "//:grpc_public_hdrs", - "//:iomgr_timer", - ], -) - grpc_cc_library( name = "grpc_client_authority_filter", srcs = [ @@ -4586,6 +4734,7 @@ grpc_cc_library( "ext/filters/message_size/message_size_filter.h", ], external_deps = [ + "absl/log:log", "absl/status:statusor", "absl/strings", "absl/strings:str_format", @@ -4600,7 +4749,6 @@ grpc_cc_library( "channel_fwd", "channel_stack_type", "context", - "grpc_deadline_filter", "grpc_service_config", "json", "json_args", @@ -4635,6 +4783,7 @@ grpc_cc_library( ], external_deps = [ "absl/base:core_headers", + "absl/log:log", "absl/meta:type_traits", "absl/random", "absl/status", @@ -4721,6 +4870,7 @@ grpc_cc_library( "ext/filters/stateful_session/stateful_session_service_config_parser.h", ], external_deps = [ + "absl/log:check", "absl/status:statusor", "absl/strings", "absl/types:optional", @@ -4772,6 +4922,8 @@ grpc_cc_library( "absl/base:core_headers", "absl/container:inlined_vector", "absl/functional:function_ref", + "absl/log:check", + "absl/log:log", "absl/status", "absl/status:statusor", "absl/strings", @@ -4888,6 +5040,8 @@ grpc_cc_library( external_deps = [ "absl/base:core_headers", "absl/hash", + "absl/log:check", + "absl/log:log", "absl/random", "absl/status", "absl/status:statusor", @@ -4951,7 +5105,7 @@ grpc_cc_library( grpc_cc_library( name = "upb_utils", hdrs = [ - "ext/xds/upb_utils.h", + "xds/grpc/upb_utils.h", ], external_deps = [ "absl/strings", @@ -4964,7 +5118,7 @@ grpc_cc_library( grpc_cc_library( name = "xds_enabled_server", hdrs = [ - "ext/xds/xds_enabled_server.h", + "xds/grpc/xds_enabled_server.h", ], language = "c++", ) @@ -4972,55 +5126,57 @@ grpc_cc_library( 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", + "xds/grpc/certificate_provider_store.cc", + "xds/grpc/file_watcher_certificate_provider_factory.cc", + "xds/grpc/xds_audit_logger_registry.cc", + "xds/grpc/xds_bootstrap_grpc.cc", + "xds/grpc/xds_certificate_provider.cc", + "xds/grpc/xds_client_grpc.cc", + "xds/grpc/xds_cluster.cc", + "xds/grpc/xds_cluster_specifier_plugin.cc", + "xds/grpc/xds_common_types.cc", + "xds/grpc/xds_endpoint.cc", + "xds/grpc/xds_health_status.cc", + "xds/grpc/xds_http_fault_filter.cc", + "xds/grpc/xds_http_filters.cc", + "xds/grpc/xds_http_rbac_filter.cc", + "xds/grpc/xds_http_stateful_session_filter.cc", + "xds/grpc/xds_lb_policy_registry.cc", + "xds/grpc/xds_listener.cc", + "xds/grpc/xds_route_config.cc", + "xds/grpc/xds_routing.cc", + "xds/grpc/xds_transport_grpc.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", + "xds/grpc/certificate_provider_store.h", + "xds/grpc/file_watcher_certificate_provider_factory.h", + "xds/grpc/xds_audit_logger_registry.h", + "xds/grpc/xds_bootstrap_grpc.h", + "xds/grpc/xds_certificate_provider.h", + "xds/grpc/xds_client_grpc.h", + "xds/grpc/xds_cluster.h", + "xds/grpc/xds_cluster_specifier_plugin.h", + "xds/grpc/xds_common_types.h", + "xds/grpc/xds_endpoint.h", + "xds/grpc/xds_health_status.h", + "xds/grpc/xds_http_fault_filter.h", + "xds/grpc/xds_http_filters.h", + "xds/grpc/xds_http_rbac_filter.h", + "xds/grpc/xds_http_stateful_session_filter.h", + "xds/grpc/xds_lb_policy_registry.h", + "xds/grpc/xds_listener.h", + "xds/grpc/xds_route_config.h", + "xds/grpc/xds_routing.h", + "xds/grpc/xds_transport_grpc.h", ], external_deps = [ "absl/base:core_headers", "absl/cleanup", "absl/functional:bind_front", + "absl/log:check", + "absl/log:log", "absl/memory", "absl/random", "absl/status", @@ -5175,10 +5331,10 @@ grpc_cc_library( grpc_cc_library( name = "grpc_xds_channel_stack_modifier", srcs = [ - "ext/xds/xds_channel_stack_modifier.cc", + "server/xds_channel_stack_modifier.cc", ], hdrs = [ - "ext/xds/xds_channel_stack_modifier.h", + "server/xds_channel_stack_modifier.h", ], external_deps = ["absl/strings"], language = "c++", @@ -5200,10 +5356,12 @@ grpc_cc_library( grpc_cc_library( name = "grpc_xds_server_config_fetcher", srcs = [ - "ext/xds/xds_server_config_fetcher.cc", + "server/xds_server_config_fetcher.cc", ], external_deps = [ "absl/base:core_headers", + "absl/log:check", + "absl/log:log", "absl/status", "absl/status:statusor", "absl/strings", @@ -5281,6 +5439,8 @@ grpc_cc_library( "load_balancing/xds/cds.cc", ], external_deps = [ + "absl/log:check", + "absl/log:log", "absl/status", "absl/status:statusor", "absl/strings", @@ -5340,6 +5500,8 @@ grpc_cc_library( ], external_deps = [ "absl/base:core_headers", + "absl/log:check", + "absl/log:log", "absl/status", "absl/status:statusor", "absl/strings", @@ -5390,6 +5552,7 @@ grpc_cc_library( "load_balancing/xds/xds_cluster_manager.cc", ], external_deps = [ + "absl/log:log", "absl/status", "absl/status:statusor", "absl/strings", @@ -5433,6 +5596,7 @@ grpc_cc_library( "load_balancing/xds/xds_wrr_locality.cc", ], external_deps = [ + "absl/log:log", "absl/status", "absl/status:statusor", "absl/strings", @@ -5501,6 +5665,8 @@ grpc_cc_library( ], external_deps = [ "absl/base:core_headers", + "absl/log:check", + "absl/log:log", "absl/status", "absl/status:statusor", "absl/strings", @@ -5511,7 +5677,6 @@ grpc_cc_library( language = "c++", deps = [ "channel_args", - "client_channel_channelz", "client_channel_internal_header", "closure", "connectivity_state", @@ -5548,6 +5713,8 @@ grpc_cc_library( ], external_deps = [ "absl/functional:function_ref", + "absl/log:check", + "absl/log:log", "absl/status", "absl/status:statusor", "absl/types:optional", @@ -5584,6 +5751,8 @@ grpc_cc_library( ], external_deps = [ "absl/algorithm:container", + "absl/log:check", + "absl/log:log", "absl/random", "absl/status", "absl/status:statusor", @@ -5625,7 +5794,10 @@ grpc_cc_library( grpc_cc_library( name = "down_cast", hdrs = ["lib/gprpp/down_cast.h"], - external_deps = ["absl/base:config"], + external_deps = [ + "absl/base:config", + "absl/log:check", + ], deps = ["//:gpr"], ) @@ -5667,7 +5839,10 @@ grpc_cc_library( hdrs = [ "lib/transport/connectivity_state.h", ], - external_deps = ["absl/status"], + external_deps = [ + "absl/log:log", + "absl/status", + ], deps = [ "closure", "error", @@ -5701,6 +5876,8 @@ grpc_cc_library( external_deps = [ "absl/base:core_headers", "absl/container:inlined_vector", + "absl/log:check", + "absl/log:log", "absl/status", "absl/status:statusor", "absl/strings", @@ -5750,6 +5927,8 @@ grpc_cc_library( "load_balancing/round_robin/round_robin.cc", ], external_deps = [ + "absl/log:check", + "absl/log:log", "absl/meta:type_traits", "absl/random", "absl/status", @@ -5787,6 +5966,7 @@ grpc_cc_library( ], external_deps = [ "absl/functional:any_invocable", + "absl/log:check", "absl/types:optional", "absl/types:span", ], @@ -5801,6 +5981,8 @@ grpc_cc_library( ], external_deps = [ "absl/base:core_headers", + "absl/log:check", + "absl/log:log", "absl/meta:type_traits", "absl/random", "absl/status", @@ -5870,6 +6052,8 @@ grpc_cc_library( ], external_deps = [ "absl/base:core_headers", + "absl/log:check", + "absl/log:log", "absl/meta:type_traits", "absl/random", "absl/status", @@ -5918,6 +6102,8 @@ grpc_cc_library( "load_balancing/priority/priority.cc", ], external_deps = [ + "absl/log:check", + "absl/log:log", "absl/status", "absl/status:statusor", "absl/strings", @@ -5965,6 +6151,8 @@ grpc_cc_library( ], external_deps = [ "absl/base:core_headers", + "absl/log:check", + "absl/log:log", "absl/meta:type_traits", "absl/random", "absl/status", @@ -6013,6 +6201,8 @@ grpc_cc_library( external_deps = [ "absl/base:core_headers", "absl/functional:function_ref", + "absl/log:check", + "absl/log:log", "absl/status", "absl/status:statusor", "absl/strings", @@ -6074,6 +6264,7 @@ grpc_cc_library( ], external_deps = [ "absl/container:inlined_vector", + "absl/log:log", "absl/status", "absl/status:statusor", "absl/strings", @@ -6118,6 +6309,7 @@ grpc_cc_library( "ext/filters/backend_metrics/backend_metric_filter.h", ], external_deps = [ + "absl/log:log", "absl/status:statusor", "absl/strings", "absl/types:optional", @@ -6157,6 +6349,8 @@ grpc_cc_library( "resolver/polling_resolver.h", ], external_deps = [ + "absl/log:check", + "absl/log:log", "absl/status", "absl/status:statusor", "absl/strings", @@ -6220,6 +6414,8 @@ grpc_cc_library( external_deps = [ "absl/base:core_headers", "absl/cleanup", + "absl/log:check", + "absl/log:log", "absl/status", "absl/status:statusor", "absl/strings", @@ -6261,7 +6457,10 @@ grpc_cc_library( hdrs = [ "resolver/dns/dns_resolver_plugin.h", ], - external_deps = ["absl/strings"], + external_deps = [ + "absl/log:log", + "absl/strings", + ], language = "c++", deps = [ "experiments", @@ -6285,6 +6484,7 @@ grpc_cc_library( ], external_deps = [ "absl/functional:bind_front", + "absl/log:log", "absl/status", "absl/status:statusor", "absl/strings", @@ -6318,6 +6518,7 @@ grpc_cc_library( "resolver/sockaddr/sockaddr_resolver.cc", ], external_deps = [ + "absl/log:log", "absl/status:statusor", "absl/strings", ], @@ -6342,6 +6543,7 @@ grpc_cc_library( "resolver/binder/binder_resolver.cc", ], external_deps = [ + "absl/log:log", "absl/status", "absl/status:statusor", "absl/strings", @@ -6402,6 +6604,8 @@ grpc_cc_library( external_deps = [ "absl/container:flat_hash_map", "absl/container:flat_hash_set", + "absl/log:check", + "absl/log:log", "absl/strings", ], language = "c++", @@ -6424,6 +6628,8 @@ grpc_cc_library( "resolver/xds/xds_resolver.cc", ], external_deps = [ + "absl/log:check", + "absl/log:log", "absl/meta:type_traits", "absl/random", "absl/status", @@ -6484,6 +6690,8 @@ grpc_cc_library( "resolver/google_c2p/google_c2p_resolver.cc", ], external_deps = [ + "absl/log:check", + "absl/log:log", "absl/status:statusor", "absl/strings", "absl/types:optional", @@ -6530,6 +6738,9 @@ grpc_cc_library( hdrs = [ "ext/transport/chttp2/transport/hpack_encoder_table.h", ], + external_deps = [ + "absl/log:check", + ], language = "c++", deps = [ "hpack_constants", @@ -6547,6 +6758,8 @@ grpc_cc_library( ], external_deps = [ "absl/functional:function_ref", + "absl/log:check", + "absl/log:log", "absl/status", "absl/strings", "absl/strings:str_format", @@ -6596,6 +6809,7 @@ grpc_cc_library( "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", @@ -6618,6 +6832,9 @@ grpc_cc_library( hdrs = [ "ext/transport/chttp2/transport/write_size_policy.h", ], + external_deps = [ + "absl/log:check", + ], deps = [ "time", "//:gpr", @@ -6656,6 +6873,9 @@ grpc_cc_library( hdrs = [ "ext/transport/chttp2/transport/max_concurrent_streams_policy.h", ], + external_deps = [ + "absl/log:check", + ], deps = [ "//:gpr", "//:gpr_platform", @@ -6713,6 +6933,9 @@ grpc_cc_library( hdrs = [ "ext/transport/chttp2/alpn/alpn.h", ], + external_deps = [ + "absl/log:check", + ], language = "c++", deps = [ "useful", @@ -6730,6 +6953,8 @@ grpc_cc_library( ], external_deps = [ "absl/base:core_headers", + "absl/log:check", + "absl/log:log", "absl/status", "absl/status:statusor", "absl/strings:str_format", @@ -6786,6 +7011,8 @@ grpc_cc_library( ], external_deps = [ "absl/base:core_headers", + "absl/log:check", + "absl/log:log", "absl/status", "absl/status:statusor", "absl/strings", @@ -6800,6 +7027,8 @@ grpc_cc_library( "connection_quota", "error", "error_utils", + "event_engine_extensions", + "event_engine_query_extensions", "grpc_insecure_credentials", "handshaker_registry", "iomgr_fwd", @@ -6844,6 +7073,8 @@ grpc_cc_library( "ext/transport/inproc/legacy_inproc_transport.h", ], external_deps = [ + "absl/log:check", + "absl/log:log", "absl/status", "absl/status:statusor", "absl/strings", @@ -6861,6 +7092,7 @@ grpc_cc_library( "experiments", "iomgr_fwd", "metadata_batch", + "resource_quota", "slice", "slice_buffer", "status_helper", @@ -6894,6 +7126,7 @@ grpc_cc_library( "ext/transport/chaotic_good/frame.h", ], external_deps = [ + "absl/log:check", "absl/random:bit_gen_ref", "absl/status", "absl/status:statusor", @@ -6967,6 +7200,8 @@ grpc_cc_library( ], external_deps = [ "absl/functional:any_invocable", + "absl/log:check", + "absl/log:log", "absl/status", "absl/status:statusor", "absl/strings", @@ -7020,6 +7255,7 @@ grpc_cc_library( "ext/filters/logging/logging_filter.h", ], external_deps = [ + "absl/log:log", "absl/numeric:int128", "absl/random", "absl/random:distributions", @@ -7064,6 +7300,7 @@ grpc_cc_library( ], external_deps = [ "absl/base:core_headers", + "absl/log:check", "absl/status", "absl/status:statusor", "absl/types:optional", @@ -7097,7 +7334,10 @@ grpc_cc_library( hdrs = [ "ext/transport/chaotic_good/chaotic_good_transport.h", ], - external_deps = ["absl/random"], + external_deps = [ + "absl/log:log", + "absl/random", + ], language = "c++", deps = [ "chaotic_good_frame", @@ -7125,6 +7365,8 @@ grpc_cc_library( external_deps = [ "absl/base:core_headers", "absl/container:flat_hash_map", + "absl/log:check", + "absl/log:log", "absl/random", "absl/random:bit_gen_ref", "absl/status", @@ -7182,6 +7424,8 @@ grpc_cc_library( "absl/base:core_headers", "absl/container:flat_hash_map", "absl/functional:any_invocable", + "absl/log:check", + "absl/log:log", "absl/random", "absl/random:bit_gen_ref", "absl/status", @@ -7265,6 +7509,10 @@ grpc_cc_library( hdrs = [ "lib/transport/call_filters.h", ], + external_deps = [ + "absl/log:check", + "absl/log:log", + ], deps = [ "call_final_info", "latch", @@ -7279,6 +7527,25 @@ grpc_cc_library( ], ) +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 = [ @@ -7353,19 +7620,25 @@ grpc_cc_library( hdrs = [ "lib/transport/call_spine.h", ], + external_deps = [ + "absl/log:check", + "absl/log:log", + ], deps = [ "1999", + "call_arena_allocator", + "call_filters", "for_each", "if", "latch", "message", "metadata", "pipe", - "prioritized_race", "promise_status", "status_flag", "try_seq", "//:gpr", + "//:legacy_context", "//:promise", ], ) @@ -7385,6 +7658,7 @@ grpc_cc_library( "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", @@ -7419,6 +7693,7 @@ grpc_cc_library( ], external_deps = [ "absl/base:core_headers", + "absl/log:check", "absl/types:optional", ], deps = [ @@ -7429,14 +7704,19 @@ grpc_cc_library( ) grpc_cc_library( - name = "call_size_estimator", + name = "call_arena_allocator", srcs = [ - "lib/transport/call_size_estimator.cc", + "lib/transport/call_arena_allocator.cc", ], hdrs = [ - "lib/transport/call_size_estimator.h", + "lib/transport/call_arena_allocator.h", + ], + deps = [ + "arena", + "memory_quota", + "ref_counted", + "//:gpr_platform", ], - deps = ["//:gpr_platform"], ) grpc_cc_library( @@ -7450,6 +7730,7 @@ grpc_cc_library( ], external_deps = [ "absl/container:inlined_vector", + "absl/log:check", "absl/strings", "absl/strings:str_format", "absl/types:optional", @@ -7478,6 +7759,8 @@ grpc_cc_library( ], external_deps = [ "absl/container:flat_hash_map", + "absl/log:check", + "absl/log:log", "absl/random", "absl/random:bit_gen_ref", "absl/status", @@ -7542,6 +7825,8 @@ grpc_cc_library( "ext/transport/chaotic_good/client/chaotic_good_connector.h", ], external_deps = [ + "absl/log:check", + "absl/log:log", "absl/random", "absl/random:bit_gen_ref", "absl/status", @@ -7611,6 +7896,7 @@ grpc_cc_library( "absl/container:flat_hash_map", "absl/functional:any_invocable", "absl/functional:function_ref", + "absl/log:check", "absl/strings", "absl/types:span", ], diff --git a/src/core/lib/channel/channel_trace.cc b/src/core/channelz/channel_trace.cc similarity index 82% rename from src/core/lib/channel/channel_trace.cc rename to src/core/channelz/channel_trace.cc index 783a2f3b4b1..6e6884cd703 100644 --- a/src/core/lib/channel/channel_trace.cc +++ b/src/core/channelz/channel_trace.cc @@ -16,7 +16,7 @@ // // -#include "src/core/lib/channel/channel_trace.h" +#include "src/core/channelz/channel_trace.h" #include #include @@ -27,46 +27,77 @@ #include #include -#include "src/core/lib/channel/channelz.h" -#include "src/core/lib/gpr/string.h" +#include "src/core/channelz/channelz.h" #include "src/core/lib/gprpp/time.h" #include "src/core/lib/slice/slice.h" #include "src/core/lib/slice/slice_internal.h" +#include "src/core/util/string.h" namespace grpc_core { namespace channelz { +// +// ChannelTrace::TraceEvent +// + ChannelTrace::TraceEvent::TraceEvent(Severity severity, const grpc_slice& data, RefCountedPtr referenced_entity) - : severity_(severity), + : timestamp_(Timestamp::Now().as_timespec(GPR_CLOCK_REALTIME)), + severity_(severity), data_(data), - timestamp_(Timestamp::Now().as_timespec(GPR_CLOCK_REALTIME)), - next_(nullptr), - referenced_entity_(std::move(referenced_entity)), - memory_usage_(sizeof(TraceEvent) + grpc_slice_memory_usage(data)) {} + memory_usage_(sizeof(TraceEvent) + grpc_slice_memory_usage(data)), + referenced_entity_(std::move(referenced_entity)) {} ChannelTrace::TraceEvent::TraceEvent(Severity severity, const grpc_slice& data) - : severity_(severity), - data_(data), - timestamp_(Timestamp::Now().as_timespec(GPR_CLOCK_REALTIME)), - next_(nullptr), - memory_usage_(sizeof(TraceEvent) + grpc_slice_memory_usage(data)) {} + : TraceEvent(severity, data, nullptr) {} ChannelTrace::TraceEvent::~TraceEvent() { CSliceUnref(data_); } -ChannelTrace::ChannelTrace(size_t max_event_memory) - : num_events_logged_(0), - event_list_memory_usage_(0), - max_event_memory_(max_event_memory), - head_trace_(nullptr), - tail_trace_(nullptr) { - if (max_event_memory_ == 0) { - return; // tracing is disabled if max_event_memory_ == 0 +namespace { + +const char* SeverityString(ChannelTrace::Severity severity) { + switch (severity) { + case ChannelTrace::Severity::Info: + return "CT_INFO"; + case ChannelTrace::Severity::Warning: + return "CT_WARNING"; + case ChannelTrace::Severity::Error: + return "CT_ERROR"; + default: + GPR_UNREACHABLE_CODE(return "CT_UNKNOWN"); + } +} + +} // anonymous namespace + +Json ChannelTrace::TraceEvent::RenderTraceEvent() const { + char* description = grpc_slice_to_c_string(data_); + Json::Object object = { + {"description", Json::FromString(description)}, + {"severity", Json::FromString(SeverityString(severity_))}, + {"timestamp", Json::FromString(gpr_format_timespec(timestamp_))}, + }; + gpr_free(description); + if (referenced_entity_ != nullptr) { + const bool is_channel = + (referenced_entity_->type() == BaseNode::EntityType::kTopLevelChannel || + referenced_entity_->type() == BaseNode::EntityType::kInternalChannel); + object[is_channel ? "channelRef" : "subchannelRef"] = Json::FromObject({ + {(is_channel ? "channelId" : "subchannelId"), + Json::FromString(absl::StrCat(referenced_entity_->uuid()))}, + }); } - gpr_mu_init(&tracer_mu_); - time_created_ = Timestamp::Now().as_timespec(GPR_CLOCK_REALTIME); + return Json::FromObject(std::move(object)); } +// +// ChannelTrace +// + +ChannelTrace::ChannelTrace(size_t max_event_memory) + : max_event_memory_(max_event_memory), + time_created_(Timestamp::Now().as_timespec(GPR_CLOCK_REALTIME)) {} + ChannelTrace::~ChannelTrace() { if (max_event_memory_ == 0) { return; // tracing is disabled if max_event_memory_ == 0 @@ -77,10 +108,10 @@ ChannelTrace::~ChannelTrace() { it = it->next(); delete to_free; } - gpr_mu_destroy(&tracer_mu_); } void ChannelTrace::AddTraceEventHelper(TraceEvent* new_trace_event) { + MutexLock lock(&mu_); ++num_events_logged_; // first event case if (head_trace_ == nullptr) { @@ -121,43 +152,6 @@ void ChannelTrace::AddTraceEventWithReference( new TraceEvent(severity, data, std::move(referenced_entity))); } -namespace { - -const char* severity_string(ChannelTrace::Severity severity) { - switch (severity) { - case ChannelTrace::Severity::Info: - return "CT_INFO"; - case ChannelTrace::Severity::Warning: - return "CT_WARNING"; - case ChannelTrace::Severity::Error: - return "CT_ERROR"; - default: - GPR_UNREACHABLE_CODE(return "CT_UNKNOWN"); - } -} - -} // anonymous namespace - -Json ChannelTrace::TraceEvent::RenderTraceEvent() const { - char* description = grpc_slice_to_c_string(data_); - Json::Object object = { - {"description", Json::FromString(description)}, - {"severity", Json::FromString(severity_string(severity_))}, - {"timestamp", Json::FromString(gpr_format_timespec(timestamp_))}, - }; - gpr_free(description); - if (referenced_entity_ != nullptr) { - const bool is_channel = - (referenced_entity_->type() == BaseNode::EntityType::kTopLevelChannel || - referenced_entity_->type() == BaseNode::EntityType::kInternalChannel); - object[is_channel ? "channelRef" : "subchannelRef"] = Json::FromObject({ - {(is_channel ? "channelId" : "subchannelId"), - Json::FromString(absl::StrCat(referenced_entity_->uuid()))}, - }); - } - return Json::FromObject(std::move(object)); -} - Json ChannelTrace::RenderJson() const { // Tracing is disabled if max_event_memory_ == 0. if (max_event_memory_ == 0) { @@ -167,6 +161,7 @@ Json ChannelTrace::RenderJson() const { {"creationTimestamp", Json::FromString(gpr_format_timespec(time_created_))}, }; + MutexLock lock(&mu_); if (num_events_logged_ > 0) { object["numEventsLogged"] = Json::FromString(absl::StrCat(num_events_logged_)); diff --git a/src/core/lib/channel/channel_trace.h b/src/core/channelz/channel_trace.h similarity index 83% rename from src/core/lib/channel/channel_trace.h rename to src/core/channelz/channel_trace.h index b4f40a68d38..b0465b5861a 100644 --- a/src/core/lib/channel/channel_trace.h +++ b/src/core/channelz/channel_trace.h @@ -16,18 +16,20 @@ // // -#ifndef GRPC_SRC_CORE_LIB_CHANNEL_CHANNEL_TRACE_H -#define GRPC_SRC_CORE_LIB_CHANNEL_CHANNEL_TRACE_H +#ifndef GRPC_SRC_CORE_CHANNELZ_CHANNEL_TRACE_H +#define GRPC_SRC_CORE_CHANNELZ_CHANNEL_TRACE_H #include #include +#include "absl/base/thread_annotations.h" + #include #include -#include #include #include "src/core/lib/gprpp/ref_counted_ptr.h" +#include "src/core/lib/gprpp/sync.h" #include "src/core/lib/json/json.h" namespace grpc_core { @@ -110,28 +112,29 @@ class ChannelTrace { size_t memory_usage() const { return memory_usage_; } private: - Severity severity_; - grpc_slice data_; - gpr_timespec timestamp_; - TraceEvent* next_; + const gpr_timespec timestamp_; + const Severity severity_; + const grpc_slice data_; + const size_t memory_usage_; // the tracer object for the (sub)channel that this trace event refers to. - RefCountedPtr referenced_entity_; - size_t memory_usage_; + const RefCountedPtr referenced_entity_; + TraceEvent* next_ = nullptr; }; // TraceEvent // Internal helper to add and link in a trace event void AddTraceEventHelper(TraceEvent* new_trace_event); - gpr_mu tracer_mu_; - uint64_t num_events_logged_; - size_t event_list_memory_usage_; - size_t max_event_memory_; - TraceEvent* head_trace_; - TraceEvent* tail_trace_; - gpr_timespec time_created_; + const size_t max_event_memory_; + const gpr_timespec time_created_; + + mutable Mutex mu_; + uint64_t num_events_logged_ ABSL_GUARDED_BY(mu_) = 0; + size_t event_list_memory_usage_ ABSL_GUARDED_BY(mu_) = 0; + TraceEvent* head_trace_ ABSL_GUARDED_BY(mu_) = nullptr; + TraceEvent* tail_trace_ ABSL_GUARDED_BY(mu_) = nullptr; }; } // namespace channelz } // namespace grpc_core -#endif // GRPC_SRC_CORE_LIB_CHANNEL_CHANNEL_TRACE_H +#endif // GRPC_SRC_CORE_CHANNELZ_CHANNEL_TRACE_H diff --git a/src/core/lib/channel/channelz.cc b/src/core/channelz/channelz.cc similarity index 89% rename from src/core/lib/channel/channelz.cc rename to src/core/channelz/channelz.cc index d7ae044578e..699ee188af6 100644 --- a/src/core/lib/channel/channelz.cc +++ b/src/core/channelz/channelz.cc @@ -16,12 +16,13 @@ // // -#include "src/core/lib/channel/channelz.h" +#include "src/core/channelz/channelz.h" #include #include #include +#include "absl/log/check.h" #include "absl/status/statusor.h" #include "absl/strings/escaping.h" #include "absl/strings/str_cat.h" @@ -32,16 +33,16 @@ #include #include +#include "src/core/channelz/channelz_registry.h" #include "src/core/lib/address_utils/parse_address.h" #include "src/core/lib/address_utils/sockaddr_utils.h" #include "src/core/lib/channel/channel_args.h" -#include "src/core/lib/channel/channelz_registry.h" -#include "src/core/lib/gpr/string.h" -#include "src/core/lib/gpr/useful.h" #include "src/core/lib/iomgr/resolved_address.h" #include "src/core/lib/json/json_writer.h" #include "src/core/lib/transport/connectivity_state.h" #include "src/core/lib/uri/uri_parser.h" +#include "src/core/util/string.h" +#include "src/core/util/useful.h" namespace grpc_core { namespace channelz { @@ -262,6 +263,68 @@ void ChannelNode::RemoveChildSubchannel(intptr_t child_uuid) { child_subchannels_.erase(child_uuid); } +// +// SubchannelNode +// + +SubchannelNode::SubchannelNode(std::string target_address, + size_t channel_tracer_max_nodes) + : BaseNode(EntityType::kSubchannel, target_address), + target_(std::move(target_address)), + trace_(channel_tracer_max_nodes) {} + +SubchannelNode::~SubchannelNode() {} + +void SubchannelNode::UpdateConnectivityState(grpc_connectivity_state state) { + connectivity_state_.store(state, std::memory_order_relaxed); +} + +void SubchannelNode::SetChildSocket(RefCountedPtr socket) { + MutexLock lock(&socket_mu_); + child_socket_ = std::move(socket); +} + +Json SubchannelNode::RenderJson() { + // Create and fill the data child. + grpc_connectivity_state state = + connectivity_state_.load(std::memory_order_relaxed); + Json::Object data = { + {"state", Json::FromObject({ + {"state", Json::FromString(ConnectivityStateName(state))}, + })}, + {"target", Json::FromString(target_)}, + }; + // Fill in the channel trace if applicable + Json trace_json = trace_.RenderJson(); + if (trace_json.type() != Json::Type::kNull) { + data["trace"] = std::move(trace_json); + } + // Ask CallCountingHelper to populate call count data. + call_counter_.PopulateCallCounts(&data); + // Construct top-level object. + Json::Object object{ + {"ref", Json::FromObject({ + {"subchannelId", Json::FromString(absl::StrCat(uuid()))}, + })}, + {"data", Json::FromObject(std::move(data))}, + }; + // Populate the child socket. + RefCountedPtr child_socket; + { + MutexLock lock(&socket_mu_); + child_socket = child_socket_; + } + if (child_socket != nullptr && child_socket->uuid() != 0) { + object["socketRef"] = Json::FromArray({ + Json::FromObject({ + {"socketId", Json::FromString(absl::StrCat(child_socket->uuid()))}, + {"name", Json::FromString(child_socket->name())}, + }), + }); + } + return Json::FromObject(object); +} + // // ServerNode // @@ -293,8 +356,8 @@ void ServerNode::RemoveChildListenSocket(intptr_t child_uuid) { std::string ServerNode::RenderServerSockets(intptr_t start_socket_id, intptr_t max_results) { - GPR_ASSERT(start_socket_id >= 0); - GPR_ASSERT(max_results >= 0); + CHECK_GE(start_socket_id, 0); + CHECK_GE(max_results, 0); // If user does not set max_results, we choose 500. size_t pagination_limit = max_results == 0 ? 500 : max_results; Json::Object object; diff --git a/src/core/lib/channel/channelz.h b/src/core/channelz/channelz.h similarity index 86% rename from src/core/lib/channel/channelz.h rename to src/core/channelz/channelz.h index cc83387c194..5ecf702c845 100644 --- a/src/core/lib/channel/channelz.h +++ b/src/core/channelz/channelz.h @@ -16,8 +16,8 @@ // // -#ifndef GRPC_SRC_CORE_LIB_CHANNEL_CHANNELZ_H -#define GRPC_SRC_CORE_LIB_CHANNEL_CHANNELZ_H +#ifndef GRPC_SRC_CORE_CHANNELZ_CHANNELZ_H +#define GRPC_SRC_CORE_CHANNELZ_CHANNELZ_H #include @@ -28,6 +28,7 @@ #include #include +#include "absl/base/thread_annotations.h" #include "absl/strings/string_view.h" #include "absl/types/optional.h" @@ -36,14 +37,14 @@ #include #include -#include "src/core/lib/channel/channel_trace.h" -#include "src/core/lib/gpr/time_precise.h" -#include "src/core/lib/gpr/useful.h" +#include "src/core/channelz/channel_trace.h" #include "src/core/lib/gprpp/per_cpu.h" #include "src/core/lib/gprpp/ref_counted.h" #include "src/core/lib/gprpp/ref_counted_ptr.h" #include "src/core/lib/gprpp/sync.h" #include "src/core/lib/json/json.h" +#include "src/core/util/time_precise.h" +#include "src/core/util/useful.h" // Channel arg key for channelz node. #define GRPC_ARG_CHANNELZ_CHANNEL_NODE "grpc.internal.channelz_channel_node" @@ -71,7 +72,7 @@ class ListenSocketNode; namespace testing { class CallCountingHelperPeer; -class ChannelNodePeer; +class SubchannelNodePeer; } // namespace testing // base class for all channelz entities @@ -227,9 +228,6 @@ class ChannelNode final : public BaseNode { void RemoveChildSubchannel(intptr_t child_uuid); private: - // Allows the channel trace test to access trace_. - friend class testing::ChannelNodePeer; - void PopulateChildRefs(Json::Object* json); std::string target_; @@ -245,6 +243,48 @@ class ChannelNode final : public BaseNode { std::set child_subchannels_; }; +// Handles channelz bookkeeping for subchannels +class SubchannelNode final : public BaseNode { + public: + SubchannelNode(std::string target_address, size_t channel_tracer_max_nodes); + ~SubchannelNode() override; + + // Sets the subchannel's connectivity state without health checking. + void UpdateConnectivityState(grpc_connectivity_state state); + + // Used when the subchannel's child socket changes. This should be set when + // the subchannel's transport is created and set to nullptr when the + // subchannel unrefs the transport. + void SetChildSocket(RefCountedPtr socket); + + Json RenderJson() override; + + // proxy methods to composed classes. + void AddTraceEvent(ChannelTrace::Severity severity, const grpc_slice& data) { + trace_.AddTraceEvent(severity, data); + } + void AddTraceEventWithReference(ChannelTrace::Severity severity, + const grpc_slice& data, + RefCountedPtr referenced_channel) { + trace_.AddTraceEventWithReference(severity, data, + std::move(referenced_channel)); + } + void RecordCallStarted() { call_counter_.RecordCallStarted(); } + void RecordCallFailed() { call_counter_.RecordCallFailed(); } + void RecordCallSucceeded() { call_counter_.RecordCallSucceeded(); } + + private: + // Allows the channel trace test to access trace_. + friend class testing::SubchannelNodePeer; + + std::atomic connectivity_state_{GRPC_CHANNEL_IDLE}; + Mutex socket_mu_; + RefCountedPtr child_socket_ ABSL_GUARDED_BY(socket_mu_); + std::string target_; + CallCountingHelper call_counter_; + ChannelTrace trace_; +}; + // Handles channelz bookkeeping for servers class ServerNode final : public BaseNode { public: @@ -380,4 +420,4 @@ class ListenSocketNode final : public BaseNode { } // namespace channelz } // namespace grpc_core -#endif // GRPC_SRC_CORE_LIB_CHANNEL_CHANNELZ_H +#endif // GRPC_SRC_CORE_CHANNELZ_CHANNELZ_H diff --git a/src/core/lib/channel/channelz_registry.cc b/src/core/channelz/channelz_registry.cc similarity index 97% rename from src/core/lib/channel/channelz_registry.cc rename to src/core/channelz/channelz_registry.cc index e451b187d6b..0ba7a2ac438 100644 --- a/src/core/lib/channel/channelz_registry.cc +++ b/src/core/channelz/channelz_registry.cc @@ -16,7 +16,7 @@ // // -#include "src/core/lib/channel/channelz_registry.h" +#include "src/core/channelz/channelz_registry.h" #include #include @@ -24,13 +24,16 @@ #include #include +#include "absl/log/check.h" +#include "absl/log/log.h" + #include #include #include #include #include -#include "src/core/lib/channel/channelz.h" +#include "src/core/channelz/channelz.h" #include "src/core/lib/gprpp/sync.h" #include "src/core/lib/iomgr/exec_ctx.h" #include "src/core/lib/json/json.h" @@ -56,9 +59,9 @@ void ChannelzRegistry::InternalRegister(BaseNode* node) { } void ChannelzRegistry::InternalUnregister(intptr_t uuid) { - GPR_ASSERT(uuid >= 1); + CHECK_GE(uuid, 1); MutexLock lock(&mu_); - GPR_ASSERT(uuid <= uuid_generator_); + CHECK(uuid <= uuid_generator_); node_map_.erase(uuid); } @@ -169,7 +172,7 @@ void ChannelzRegistry::InternalLogAllEntities() { } for (size_t i = 0; i < nodes.size(); ++i) { std::string json = nodes[i]->RenderJsonString(); - gpr_log(GPR_INFO, "%s", json.c_str()); + LOG(INFO) << json; } } diff --git a/src/core/lib/channel/channelz_registry.h b/src/core/channelz/channelz_registry.h similarity index 93% rename from src/core/lib/channel/channelz_registry.h rename to src/core/channelz/channelz_registry.h index b183d1690bf..39525597b4f 100644 --- a/src/core/lib/channel/channelz_registry.h +++ b/src/core/channelz/channelz_registry.h @@ -16,8 +16,8 @@ // // -#ifndef GRPC_SRC_CORE_LIB_CHANNEL_CHANNELZ_REGISTRY_H -#define GRPC_SRC_CORE_LIB_CHANNEL_CHANNELZ_REGISTRY_H +#ifndef GRPC_SRC_CORE_CHANNELZ_CHANNELZ_REGISTRY_H +#define GRPC_SRC_CORE_CHANNELZ_CHANNELZ_REGISTRY_H #include #include @@ -27,7 +27,7 @@ #include -#include "src/core/lib/channel/channelz.h" +#include "src/core/channelz/channelz.h" #include "src/core/lib/gprpp/ref_counted_ptr.h" #include "src/core/lib/gprpp/sync.h" @@ -99,4 +99,4 @@ class ChannelzRegistry final { } // namespace channelz } // namespace grpc_core -#endif // GRPC_SRC_CORE_LIB_CHANNEL_CHANNELZ_REGISTRY_H +#endif // GRPC_SRC_CORE_CHANNELZ_CHANNELZ_REGISTRY_H diff --git a/src/core/client_channel/client_channel_channelz.cc b/src/core/client_channel/client_channel_channelz.cc deleted file mode 100644 index 29be8b0a29b..00000000000 --- a/src/core/client_channel/client_channel_channelz.cc +++ /dev/null @@ -1,93 +0,0 @@ -// -// -// Copyright 2018 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. -// -// - -#include - -#include "src/core/client_channel/client_channel_channelz.h" - -#include "absl/strings/str_cat.h" - -#include - -#include "src/core/lib/transport/connectivity_state.h" - -// IWYU pragma: no_include - -namespace grpc_core { -namespace channelz { - -SubchannelNode::SubchannelNode(std::string target_address, - size_t channel_tracer_max_nodes) - : BaseNode(EntityType::kSubchannel, target_address), - target_(std::move(target_address)), - trace_(channel_tracer_max_nodes) {} - -SubchannelNode::~SubchannelNode() {} - -void SubchannelNode::UpdateConnectivityState(grpc_connectivity_state state) { - connectivity_state_.store(state, std::memory_order_relaxed); -} - -void SubchannelNode::SetChildSocket(RefCountedPtr socket) { - MutexLock lock(&socket_mu_); - child_socket_ = std::move(socket); -} - -Json SubchannelNode::RenderJson() { - // Create and fill the data child. - grpc_connectivity_state state = - connectivity_state_.load(std::memory_order_relaxed); - Json::Object data = { - {"state", Json::FromObject({ - {"state", Json::FromString(ConnectivityStateName(state))}, - })}, - {"target", Json::FromString(target_)}, - }; - // Fill in the channel trace if applicable - Json trace_json = trace_.RenderJson(); - if (trace_json.type() != Json::Type::kNull) { - data["trace"] = std::move(trace_json); - } - // Ask CallCountingHelper to populate call count data. - call_counter_.PopulateCallCounts(&data); - // Construct top-level object. - Json::Object object{ - {"ref", Json::FromObject({ - {"subchannelId", Json::FromString(absl::StrCat(uuid()))}, - })}, - {"data", Json::FromObject(std::move(data))}, - }; - // Populate the child socket. - RefCountedPtr child_socket; - { - MutexLock lock(&socket_mu_); - child_socket = child_socket_; - } - if (child_socket != nullptr && child_socket->uuid() != 0) { - object["socketRef"] = Json::FromArray({ - Json::FromObject({ - {"socketId", Json::FromString(absl::StrCat(child_socket->uuid()))}, - {"name", Json::FromString(child_socket->name())}, - }), - }); - } - return Json::FromObject(object); -} - -} // namespace channelz -} // namespace grpc_core diff --git a/src/core/client_channel/client_channel_channelz.h b/src/core/client_channel/client_channel_channelz.h deleted file mode 100644 index 8311b61356d..00000000000 --- a/src/core/client_channel/client_channel_channelz.h +++ /dev/null @@ -1,85 +0,0 @@ -// -// -// Copyright 2018 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. -// -// - -#ifndef GRPC_SRC_CORE_CLIENT_CHANNEL_CLIENT_CHANNEL_CHANNELZ_H -#define GRPC_SRC_CORE_CLIENT_CHANNEL_CLIENT_CHANNEL_CHANNELZ_H - -#include - -#include - -#include -#include -#include - -#include "absl/base/thread_annotations.h" - -#include -#include - -#include "src/core/lib/channel/channel_trace.h" -#include "src/core/lib/channel/channelz.h" -#include "src/core/lib/gprpp/ref_counted_ptr.h" -#include "src/core/lib/gprpp/sync.h" -#include "src/core/lib/json/json.h" - -namespace grpc_core { -namespace channelz { - -class SubchannelNode final : public BaseNode { - public: - SubchannelNode(std::string target_address, size_t channel_tracer_max_nodes); - ~SubchannelNode() override; - - // Sets the subchannel's connectivity state without health checking. - void UpdateConnectivityState(grpc_connectivity_state state); - - // Used when the subchannel's child socket changes. This should be set when - // the subchannel's transport is created and set to nullptr when the - // subchannel unrefs the transport. - void SetChildSocket(RefCountedPtr socket); - - Json RenderJson() override; - - // proxy methods to composed classes. - void AddTraceEvent(ChannelTrace::Severity severity, const grpc_slice& data) { - trace_.AddTraceEvent(severity, data); - } - void AddTraceEventWithReference(ChannelTrace::Severity severity, - const grpc_slice& data, - RefCountedPtr referenced_channel) { - trace_.AddTraceEventWithReference(severity, data, - std::move(referenced_channel)); - } - void RecordCallStarted() { call_counter_.RecordCallStarted(); } - void RecordCallFailed() { call_counter_.RecordCallFailed(); } - void RecordCallSucceeded() { call_counter_.RecordCallSucceeded(); } - - private: - std::atomic connectivity_state_{GRPC_CHANNEL_IDLE}; - Mutex socket_mu_; - RefCountedPtr child_socket_ ABSL_GUARDED_BY(socket_mu_); - std::string target_; - CallCountingHelper call_counter_; - ChannelTrace trace_; -}; - -} // namespace channelz -} // namespace grpc_core - -#endif // GRPC_SRC_CORE_CLIENT_CHANNEL_CLIENT_CHANNEL_CHANNELZ_H diff --git a/src/core/client_channel/client_channel_filter.cc b/src/core/client_channel/client_channel_filter.cc index b7d4d6d4952..10918a8cba7 100644 --- a/src/core/client_channel/client_channel_filter.cc +++ b/src/core/client_channel/client_channel_filter.cc @@ -30,6 +30,7 @@ #include #include "absl/cleanup/cleanup.h" +#include "absl/log/check.h" #include "absl/status/status.h" #include "absl/status/statusor.h" #include "absl/strings/cord.h" @@ -49,8 +50,8 @@ #include #include +#include "src/core/channelz/channel_trace.h" #include "src/core/client_channel/backup_poller.h" -#include "src/core/client_channel/client_channel_channelz.h" #include "src/core/client_channel/client_channel_internal.h" #include "src/core/client_channel/client_channel_service_config.h" #include "src/core/client_channel/config_selector.h" @@ -60,15 +61,13 @@ #include "src/core/client_channel/retry_filter.h" #include "src/core/client_channel/subchannel.h" #include "src/core/client_channel/subchannel_interface_internal.h" -#include "src/core/ext/filters/deadline/deadline_filter.h" +#include "src/core/handshaker/proxy_mapper_registry.h" #include "src/core/lib/channel/channel_args.h" #include "src/core/lib/channel/channel_stack.h" -#include "src/core/lib/channel/channel_trace.h" #include "src/core/lib/channel/status_util.h" #include "src/core/lib/config/core_configuration.h" #include "src/core/lib/debug/trace.h" #include "src/core/lib/experiments/experiments.h" -#include "src/core/lib/gpr/useful.h" #include "src/core/lib/gprpp/crash.h" #include "src/core/lib/gprpp/debug_location.h" #include "src/core/lib/gprpp/manual_constructor.h" @@ -76,7 +75,6 @@ #include "src/core/lib/gprpp/sync.h" #include "src/core/lib/gprpp/unique_type_name.h" #include "src/core/lib/gprpp/work_serializer.h" -#include "src/core/lib/handshaker/proxy_mapper_registry.h" #include "src/core/lib/iomgr/exec_ctx.h" #include "src/core/lib/iomgr/polling_entity.h" #include "src/core/lib/iomgr/pollset_set.h" @@ -105,6 +103,7 @@ #include "src/core/resolver/resolver_registry.h" #include "src/core/service_config/service_config_call_data.h" #include "src/core/service_config/service_config_impl.h" +#include "src/core/util/useful.h" // // Client channel filter @@ -210,14 +209,14 @@ class ClientChannelFilter::FilterBasedCallData final const grpc_call_element_args& args); ~FilterBasedCallData() override; - grpc_call_element* elem() const { return deadline_state_.elem; } - grpc_call_stack* owning_call() const { return deadline_state_.call_stack; } - CallCombiner* call_combiner() const { return deadline_state_.call_combiner; } + grpc_call_element* elem() const { return elem_; } + grpc_call_stack* owning_call() const { return owning_call_; } + CallCombiner* call_combiner() const { return call_combiner_; } ClientChannelFilter* chand() const override { return static_cast(elem()->channel_data); } - Arena* arena() const override { return deadline_state_.arena; } + Arena* arena() const override { return arena_; } grpc_polling_entity* pollent() override { return pollent_; } grpc_metadata_batch* send_initial_metadata() override { return pending_batches_[0] @@ -270,10 +269,8 @@ class ClientChannelFilter::FilterBasedCallData final void ResetDeadline(Duration timeout) override { const Timestamp per_method_deadline = Timestamp::FromCycleCounterRoundUp(call_start_time_) + timeout; - if (per_method_deadline < deadline_) { - deadline_ = per_method_deadline; - grpc_deadline_state_reset(&deadline_state_, deadline_); - } + static_cast(call_context_[GRPC_CONTEXT_CALL].value) + ->UpdateDeadline(per_method_deadline); } void CreateDynamicCall(); @@ -286,8 +283,10 @@ class ClientChannelFilter::FilterBasedCallData final gpr_cycle_counter call_start_time_; Timestamp deadline_; - // State for handling deadlines. - grpc_deadline_state deadline_state_; + Arena* const arena_; + grpc_call_element* const elem_; + grpc_call_stack* const owning_call_; + CallCombiner* const call_combiner_; grpc_polling_entity* pollent_ = nullptr; @@ -387,11 +386,12 @@ class ClientChannelFilter::PromiseBasedCallData final } void ResetDeadline(Duration timeout) override { + Call* call = GetContext(); CallContext* call_context = GetContext(); const Timestamp per_method_deadline = Timestamp::FromCycleCounterRoundUp(call_context->call_start_time()) + timeout; - call_context->UpdateDeadline(per_method_deadline); + call->UpdateDeadline(per_method_deadline); } ClientChannelFilter* chand_; @@ -459,8 +459,8 @@ class DynamicTerminationFilter final { static grpc_error_handle Init(grpc_channel_element* elem, grpc_channel_element_args* args) { - GPR_ASSERT(args->is_last); - GPR_ASSERT(elem->filter == &kFilterVtable); + CHECK(args->is_last); + CHECK(elem->filter == &kFilterVtable); new (elem->channel_data) DynamicTerminationFilter(args->channel_args); return absl::OkStatus(); } @@ -645,7 +645,7 @@ class ClientChannelFilter::SubchannelWrapper final } GRPC_CHANNEL_STACK_REF(chand_->owning_stack_, "SubchannelWrapper"); #ifndef NDEBUG - GPR_DEBUG_ASSERT(chand_->work_serializer_->RunningInWorkSerializer()); + DCHECK(chand_->work_serializer_->RunningInWorkSerializer()); #endif if (chand_->channelz_node_ != nullptr) { auto* subchannel_node = subchannel_->channelz_node(); @@ -674,7 +674,7 @@ class ClientChannelFilter::SubchannelWrapper final auto* subchannel_node = subchannel_->channelz_node(); if (subchannel_node != nullptr) { auto it = chand_->subchannel_refcount_map_.find(subchannel_.get()); - GPR_ASSERT(it != chand_->subchannel_refcount_map_.end()); + CHECK(it != chand_->subchannel_refcount_map_.end()); --it->second; if (it->second == 0) { chand_->channelz_node_->RemoveChildSubchannel( @@ -701,7 +701,7 @@ class ClientChannelFilter::SubchannelWrapper final if (subchannel_node != nullptr) { auto it = chand_->subchannel_refcount_map_.find(subchannel_.get()); - GPR_ASSERT(it != chand_->subchannel_refcount_map_.end()); + CHECK(it != chand_->subchannel_refcount_map_.end()); --it->second; if (it->second == 0) { chand_->channelz_node_->RemoveChildSubchannel( @@ -719,7 +719,7 @@ class ClientChannelFilter::SubchannelWrapper final std::unique_ptr watcher) override ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) { auto& watcher_wrapper = watcher_map_[watcher.get()]; - GPR_ASSERT(watcher_wrapper == nullptr); + CHECK_EQ(watcher_wrapper, nullptr); watcher_wrapper = new WatcherWrapper( std::move(watcher), RefAsSubclass(DEBUG_LOCATION, "WatcherWrapper")); @@ -731,7 +731,7 @@ class ClientChannelFilter::SubchannelWrapper final void CancelConnectivityStateWatch(ConnectivityStateWatcherInterface* watcher) override ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) { auto it = watcher_map_.find(watcher); - GPR_ASSERT(it != watcher_map_.end()); + CHECK(it != watcher_map_.end()); subchannel_->CancelConnectivityStateWatch(it->second); watcher_map_.erase(it); } @@ -748,7 +748,7 @@ class ClientChannelFilter::SubchannelWrapper final ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) { static_cast(watcher.get()) ->SetSubchannel(subchannel_.get()); - GPR_ASSERT(data_watchers_.insert(std::move(watcher)).second); + CHECK(data_watchers_.insert(std::move(watcher)).second); } void CancelDataWatcher(DataWatcherInterface* watcher) override @@ -924,7 +924,7 @@ ClientChannelFilter::ExternalConnectivityWatcher::ExternalConnectivityWatcher( { MutexLock lock(&chand_->external_watchers_mu_); // Will be deleted when the watch is complete. - GPR_ASSERT(chand->external_watchers_[on_complete] == nullptr); + CHECK(chand->external_watchers_[on_complete] == nullptr); // Store a ref to the watcher in the external_watchers_ map. chand->external_watchers_[on_complete] = RefAsSubclass( @@ -1202,9 +1202,9 @@ class ClientChannelFilter::ClientChannelControlHelper final grpc_error_handle ClientChannelFilter::Init(grpc_channel_element* elem, grpc_channel_element_args* args) { - GPR_ASSERT(args->is_last); - GPR_ASSERT(elem->filter == &kFilterVtableWithPromises || - elem->filter == &kFilterVtableWithoutPromises); + CHECK(args->is_last); + CHECK(elem->filter == &kFilterVtableWithPromises || + elem->filter == &kFilterVtableWithoutPromises); grpc_error_handle error; new (elem->channel_data) ClientChannelFilter(args, &error); return error; @@ -1230,9 +1230,6 @@ RefCountedPtr GetSubchannelPool( ClientChannelFilter::ClientChannelFilter(grpc_channel_element_args* args, grpc_error_handle* error) : channel_args_(args->channel_args), - deadline_checking_enabled_( - channel_args_.GetBool(GRPC_ARG_ENABLE_DEADLINE_CHECKS) - .value_or(!channel_args_.WantMinimalStack())), owning_stack_(args->channel_stack), client_channel_factory_(channel_args_.GetObject()), channelz_node_(channel_args_.GetObject()), @@ -1450,7 +1447,7 @@ RefCountedPtr ChooseLbPolicy( // - A channel arg, in which case we check that the specified policy exists // and accepts an empty config. If not, we revert to using pick_first // lb_policy - GPR_ASSERT(lb_policy_config.ok()); + CHECK(lb_policy_config.ok()); return std::move(*lb_policy_config); } @@ -1730,7 +1727,7 @@ void ClientChannelFilter::UpdateServiceConfigInDataPlaneLocked() { } RefCountedPtr dynamic_filters = DynamicFilters::Create(new_args, std::move(filters)); - GPR_ASSERT(dynamic_filters != nullptr); + CHECK(dynamic_filters != nullptr); // Grab data plane lock to update service config. // // We defer unreffing the old values (and deallocating memory) until @@ -1761,7 +1758,7 @@ void ClientChannelFilter::CreateResolverLocked() { std::make_unique(this)); // Since the validity of the args was checked when the channel was created, // CreateResolver() must return a non-null result. - GPR_ASSERT(resolver_ != nullptr); + CHECK(resolver_ != nullptr); UpdateStateLocked(GRPC_CHANNEL_CONNECTING, absl::Status(), "started resolving"); resolver_->StartLocked(); @@ -1870,7 +1867,7 @@ T HandlePickResult( } auto* drop_pick = absl::get_if(&result->result); - GPR_ASSERT(drop_pick != nullptr); + CHECK_NE(drop_pick, nullptr); return drop_func(drop_pick); } @@ -1964,7 +1961,7 @@ void ClientChannelFilter::StartTransportOpLocked(grpc_transport_op* op) { } } else { // Disconnect. - GPR_ASSERT(disconnect_error_.ok()); + CHECK(disconnect_error_.ok()); disconnect_error_ = op->disconnect_with_error; UpdateStateAndPickerLocked( GRPC_CHANNEL_SHUTDOWN, absl::Status(), "shutdown from API", @@ -1982,7 +1979,7 @@ void ClientChannelFilter::StartTransportOpLocked(grpc_transport_op* op) { void ClientChannelFilter::StartTransportOp(grpc_channel_element* elem, grpc_transport_op* op) { auto* chand = static_cast(elem->channel_data); - GPR_ASSERT(op->set_accept_stream == false); + CHECK(op->set_accept_stream == false); // Handle bind_pollset. if (op->bind_pollset != nullptr) { grpc_pollset_set_add_pollset(chand->interested_parties_, op->bind_pollset); @@ -2112,8 +2109,7 @@ grpc_error_handle ClientChannelFilter::CallData::ApplyServiceConfigToCallLocked( if (method_params != nullptr) { // If the deadline from the service config is shorter than the one // from the client API, reset the deadline timer. - if (chand()->deadline_checking_enabled_ && - method_params->timeout() != Duration::Zero()) { + if (method_params->timeout() != Duration::Zero()) { ResetDeadline(method_params->timeout()); } // If the service config set wait_for_ready and the application @@ -2213,12 +2209,10 @@ ClientChannelFilter::FilterBasedCallData::FilterBasedCallData( call_context_(args.context), call_start_time_(args.start_time), deadline_(args.deadline), - deadline_state_( - elem, args, - GPR_LIKELY(static_cast(elem->channel_data) - ->deadline_checking_enabled_) - ? args.deadline - : Timestamp::InfFuture()) { + arena_(args.arena), + elem_(elem), + owning_call_(args.call_stack), + call_combiner_(args.call_combiner) { if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) { gpr_log(GPR_INFO, "chand=%p calld=%p: created call", chand(), this); } @@ -2228,7 +2222,7 @@ ClientChannelFilter::FilterBasedCallData::~FilterBasedCallData() { CSliceUnref(path_); // Make sure there are no remaining pending batches. for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) { - GPR_ASSERT(pending_batches_[i] == nullptr); + CHECK_EQ(pending_batches_[i], nullptr); } } @@ -2262,10 +2256,6 @@ void ClientChannelFilter::FilterBasedCallData::StartTransportStreamOpBatch( gpr_log(GPR_INFO, "chand=%p calld=%p: batch started from above: %s", chand, calld, grpc_transport_stream_op_batch_string(batch, false).c_str()); } - if (GPR_LIKELY(chand->deadline_checking_enabled_)) { - grpc_deadline_state_client_start_transport_stream_op_batch( - &calld->deadline_state_, batch); - } // Intercept recv_trailing_metadata to commit the call, in case we wind up // failing the call before we get down to the retry or LB call layer. if (batch->recv_trailing_metadata) { @@ -2390,7 +2380,7 @@ void ClientChannelFilter::FilterBasedCallData::PendingBatchesAdd( chand(), this, idx); } grpc_transport_stream_op_batch*& pending = pending_batches_[idx]; - GPR_ASSERT(pending == nullptr); + CHECK_EQ(pending, nullptr); pending = batch; } @@ -2410,7 +2400,7 @@ void ClientChannelFilter::FilterBasedCallData::FailPendingBatchInCallCombiner( void ClientChannelFilter::FilterBasedCallData::PendingBatchesFail( grpc_error_handle error, YieldCallCombinerPredicate yield_call_combiner_predicate) { - GPR_ASSERT(!error.ok()); + CHECK(!error.ok()); if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) { size_t num_batches = 0; for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) { @@ -2959,11 +2949,11 @@ ClientChannelFilter::LoadBalancedCall::PickSubchannel(bool was_queued) { bool ClientChannelFilter::LoadBalancedCall::PickSubchannelImpl( LoadBalancingPolicy::SubchannelPicker* picker, grpc_error_handle* error) { - GPR_ASSERT(connected_subchannel_ == nullptr); + CHECK(connected_subchannel_ == nullptr); // Perform LB pick. LoadBalancingPolicy::PickArgs pick_args; Slice* path = send_initial_metadata()->get_pointer(HttpPathMetadata()); - GPR_ASSERT(path != nullptr); + CHECK_NE(path, nullptr); pick_args.path = path->as_string_view(); LbCallState lb_call_state(this); pick_args.call_state = &lb_call_state; @@ -2979,7 +2969,7 @@ bool ClientChannelFilter::LoadBalancedCall::PickSubchannelImpl( "chand=%p lb_call=%p: LB pick succeeded: subchannel=%p", chand_, this, complete_pick->subchannel.get()); } - GPR_ASSERT(complete_pick->subchannel != nullptr); + CHECK(complete_pick->subchannel != nullptr); // Grab a ref to the connected subchannel while we're still // holding the data plane mutex. SubchannelWrapper* subchannel = @@ -3056,7 +3046,6 @@ ClientChannelFilter::FilterBasedLoadBalancedCall::FilterBasedLoadBalancedCall( absl::AnyInvocable on_commit, bool is_transparent_retry) : LoadBalancedCall(chand, args.context, std::move(on_commit), is_transparent_retry), - deadline_(args.deadline), arena_(args.arena), owning_call_(args.call_stack), call_combiner_(args.call_combiner), @@ -3067,7 +3056,7 @@ ClientChannelFilter::FilterBasedLoadBalancedCall:: ~FilterBasedLoadBalancedCall() { // Make sure there are no remaining pending batches. for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) { - GPR_ASSERT(pending_batches_[i] == nullptr); + CHECK_EQ(pending_batches_[i], nullptr); } if (on_call_destruction_complete_ != nullptr) { ExecCtx::Run(DEBUG_LOCATION, on_call_destruction_complete_, @@ -3110,7 +3099,7 @@ void ClientChannelFilter::FilterBasedLoadBalancedCall::PendingBatchesAdd( "chand=%p lb_call=%p: adding pending batch at index %" PRIuPTR, chand(), this, idx); } - GPR_ASSERT(pending_batches_[idx] == nullptr); + CHECK_EQ(pending_batches_[idx], nullptr); pending_batches_[idx] = batch; } @@ -3130,7 +3119,7 @@ void ClientChannelFilter::FilterBasedLoadBalancedCall:: void ClientChannelFilter::FilterBasedLoadBalancedCall::PendingBatchesFail( grpc_error_handle error, YieldCallCombinerPredicate yield_call_combiner_predicate) { - GPR_ASSERT(!error.ok()); + CHECK(!error.ok()); failure_error_ = error; if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) { size_t num_batches = 0; @@ -3356,8 +3345,12 @@ void ClientChannelFilter::FilterBasedLoadBalancedCall:: // Get status from error. grpc_status_code code; std::string message; - grpc_error_get_status(error, self->deadline_, &code, &message, - /*http_error=*/nullptr, /*error_string=*/nullptr); + grpc_error_get_status( + error, + static_cast(self->call_context()[GRPC_CONTEXT_CALL].value) + ->deadline(), + &code, &message, + /*http_error=*/nullptr, /*error_string=*/nullptr); status = absl::Status(static_cast(code), message); } else { // Get status from headers. @@ -3492,10 +3485,11 @@ void ClientChannelFilter::FilterBasedLoadBalancedCall::RetryPickLocked() { void ClientChannelFilter::FilterBasedLoadBalancedCall::CreateSubchannelCall() { Slice* path = send_initial_metadata()->get_pointer(HttpPathMetadata()); - GPR_ASSERT(path != nullptr); + CHECK_NE(path, nullptr); SubchannelCall::Args call_args = { connected_subchannel()->Ref(), pollent_, path->Ref(), /*start_time=*/0, - deadline_, arena_, + static_cast(call_context()[GRPC_CONTEXT_CALL].value)->deadline(), + arena_, // TODO(roth): When we implement hedging support, we will probably // need to use a separate call context for each subchannel call. call_context(), call_combiner_}; diff --git a/src/core/client_channel/client_channel_filter.h b/src/core/client_channel/client_channel_filter.h index 23819b33073..9e11e12d223 100644 --- a/src/core/client_channel/client_channel_filter.h +++ b/src/core/client_channel/client_channel_filter.h @@ -37,6 +37,7 @@ #include #include +#include "src/core/channelz/channelz.h" #include "src/core/client_channel/client_channel_factory.h" #include "src/core/client_channel/config_selector.h" #include "src/core/client_channel/dynamic_filters.h" @@ -46,9 +47,7 @@ #include "src/core/lib/channel/channel_args.h" #include "src/core/lib/channel/channel_fwd.h" #include "src/core/lib/channel/channel_stack.h" -#include "src/core/lib/channel/channelz.h" #include "src/core/lib/channel/context.h" -#include "src/core/lib/gpr/time_precise.h" #include "src/core/lib/gprpp/orphanable.h" #include "src/core/lib/gprpp/ref_counted.h" #include "src/core/lib/gprpp/ref_counted_ptr.h" @@ -71,6 +70,7 @@ #include "src/core/load_balancing/lb_policy.h" #include "src/core/resolver/resolver.h" #include "src/core/service_config/service_config.h" +#include "src/core/util/time_precise.h" // // Client channel filter @@ -287,7 +287,6 @@ class ClientChannelFilter final { // Fields set at construction and never modified. // ChannelArgs channel_args_; - const bool deadline_checking_enabled_; grpc_channel_stack* owning_stack_; ClientChannelFactory* client_channel_factory_; RefCountedPtr default_service_config_; @@ -558,7 +557,6 @@ class ClientChannelFilter::FilterBasedLoadBalancedCall final // TODO(roth): Instead of duplicating these fields in every filter // that uses any one of them, we should store them in the call // context. This will save per-call memory overhead. - Timestamp deadline_; Arena* arena_; grpc_call_stack* owning_call_; CallCombiner* call_combiner_; diff --git a/src/core/client_channel/client_channel_internal.h b/src/core/client_channel/client_channel_internal.h index 8d849277f79..adc09a81172 100644 --- a/src/core/client_channel/client_channel_internal.h +++ b/src/core/client_channel/client_channel_internal.h @@ -22,6 +22,7 @@ #include #include "absl/functional/any_invocable.h" +#include "absl/log/check.h" #include @@ -61,7 +62,7 @@ class ClientChannelServiceConfigCallData final : public ServiceConfigCallData { : ServiceConfigCallData(arena, call_context) {} void SetOnCommit(absl::AnyInvocable on_commit) { - GPR_ASSERT(on_commit_ == nullptr); + CHECK(on_commit_ == nullptr); on_commit_ = std::move(on_commit); } diff --git a/src/core/client_channel/config_selector.cc b/src/core/client_channel/config_selector.cc index 2cba7a1a215..9264e4c1618 100644 --- a/src/core/client_channel/config_selector.cc +++ b/src/core/client_channel/config_selector.cc @@ -19,7 +19,7 @@ #include "src/core/client_channel/config_selector.h" #include "src/core/lib/channel/channel_args.h" -#include "src/core/lib/gpr/useful.h" +#include "src/core/util/useful.h" namespace grpc_core { diff --git a/src/core/client_channel/config_selector.h b/src/core/client_channel/config_selector.h index 4f657e974ef..0a0a6d54c80 100644 --- a/src/core/client_channel/config_selector.h +++ b/src/core/client_channel/config_selector.h @@ -24,6 +24,7 @@ #include #include +#include "absl/log/check.h" #include "absl/status/status.h" #include "absl/strings/string_view.h" @@ -32,13 +33,13 @@ #include "src/core/client_channel/client_channel_internal.h" #include "src/core/lib/channel/channel_fwd.h" -#include "src/core/lib/gpr/useful.h" #include "src/core/lib/gprpp/ref_counted.h" #include "src/core/lib/gprpp/ref_counted_ptr.h" #include "src/core/lib/resource_quota/arena.h" #include "src/core/lib/slice/slice.h" #include "src/core/lib/transport/metadata_batch.h" #include "src/core/service_config/service_config.h" +#include "src/core/util/useful.h" // Channel arg key for ConfigSelector. #define GRPC_ARG_CONFIG_SELECTOR "grpc.internal.config_selector" @@ -97,14 +98,14 @@ class DefaultConfigSelector final : public ConfigSelector { // The client channel code ensures that this will never be null. // If neither the resolver nor the client application provide a // config, a default empty config will be used. - GPR_DEBUG_ASSERT(service_config_ != nullptr); + DCHECK(service_config_ != nullptr); } const char* name() const override { return "default"; } absl::Status GetCallConfig(GetCallConfigArgs args) override { Slice* path = args.initial_metadata->get_pointer(HttpPathMetadata()); - GPR_ASSERT(path != nullptr); + CHECK_NE(path, nullptr); auto* parsed_method_configs = service_config_->GetMethodParsedConfigVector(path->c_slice()); args.service_config_call_data->SetServiceConfig(service_config_, diff --git a/src/core/client_channel/connector.h b/src/core/client_channel/connector.h index 7b1e73f63fb..5c218dd7d41 100644 --- a/src/core/client_channel/connector.h +++ b/src/core/client_channel/connector.h @@ -19,8 +19,8 @@ #include +#include "src/core/channelz/channelz.h" #include "src/core/lib/channel/channel_args.h" -#include "src/core/lib/channel/channelz.h" #include "src/core/lib/gprpp/orphanable.h" #include "src/core/lib/gprpp/ref_counted_ptr.h" #include "src/core/lib/gprpp/time.h" diff --git a/src/core/client_channel/dynamic_filters.cc b/src/core/client_channel/dynamic_filters.cc index 3d035bbf20b..c589f860807 100644 --- a/src/core/client_channel/dynamic_filters.cc +++ b/src/core/client_channel/dynamic_filters.cc @@ -23,6 +23,8 @@ #include #include +#include "absl/log/check.h" +#include "absl/log/log.h" #include "absl/status/statusor.h" #include @@ -31,10 +33,10 @@ #include "src/core/lib/channel/channel_stack.h" #include "src/core/lib/channel/channel_stack_builder_impl.h" #include "src/core/lib/debug/trace.h" -#include "src/core/lib/gpr/alloc.h" #include "src/core/lib/gprpp/status_helper.h" #include "src/core/lib/surface/channel_stack_type.h" #include "src/core/lib/surface/lame_client.h" +#include "src/core/util/alloc.h" // Conversion between call and call stack. #define CALL_TO_CALL_STACK(call) \ @@ -67,7 +69,7 @@ DynamicFilters::Call::Call(Args args, grpc_error_handle* error) *error = grpc_call_stack_init(channel_stack_->channel_stack_.get(), 1, Destroy, this, &call_args); if (GPR_UNLIKELY(!error->ok())) { - gpr_log(GPR_ERROR, "error: %s", StatusToString(*error).c_str()); + LOG(ERROR) << "error: " << StatusToString(*error); return; } grpc_call_stack_set_pollset_or_pollset_set(call_stack, args.pollent); @@ -82,8 +84,8 @@ void DynamicFilters::Call::StartTransportStreamOpBatch( } void DynamicFilters::Call::SetAfterCallStackDestroy(grpc_closure* closure) { - GPR_ASSERT(after_call_stack_destroy_ == nullptr); - GPR_ASSERT(closure != nullptr); + CHECK_EQ(after_call_stack_destroy_, nullptr); + CHECK_NE(closure, nullptr); after_call_stack_destroy_ = closure; } diff --git a/src/core/client_channel/dynamic_filters.h b/src/core/client_channel/dynamic_filters.h index 5db94fa672f..d6aa9b4cf7e 100644 --- a/src/core/client_channel/dynamic_filters.h +++ b/src/core/client_channel/dynamic_filters.h @@ -28,7 +28,6 @@ #include "src/core/lib/channel/channel_fwd.h" #include "src/core/lib/channel/channel_stack.h" #include "src/core/lib/channel/context.h" -#include "src/core/lib/gpr/time_precise.h" #include "src/core/lib/gprpp/debug_location.h" #include "src/core/lib/gprpp/ref_counted.h" #include "src/core/lib/gprpp/ref_counted_ptr.h" @@ -39,6 +38,7 @@ #include "src/core/lib/iomgr/polling_entity.h" #include "src/core/lib/resource_quota/arena.h" #include "src/core/lib/transport/transport.h" +#include "src/core/util/time_precise.h" namespace grpc_core { diff --git a/src/core/client_channel/local_subchannel_pool.cc b/src/core/client_channel/local_subchannel_pool.cc index 2297fb365ff..f3aa73d7bd7 100644 --- a/src/core/client_channel/local_subchannel_pool.cc +++ b/src/core/client_channel/local_subchannel_pool.cc @@ -22,6 +22,8 @@ #include +#include "absl/log/check.h" + #include #include "src/core/client_channel/subchannel.h" @@ -34,7 +36,7 @@ RefCountedPtr LocalSubchannelPool::RegisterSubchannel( // Because this pool is only accessed under the client channel's work // serializer, and because FindSubchannel is checked before invoking // RegisterSubchannel, no such subchannel should exist in the map. - GPR_ASSERT(it == subchannel_map_.end()); + CHECK(it == subchannel_map_.end()); subchannel_map_[key] = constructed.get(); return constructed; } @@ -45,8 +47,8 @@ void LocalSubchannelPool::UnregisterSubchannel(const SubchannelKey& key, // Because this subchannel pool is accessed only under the client // channel's work serializer, any subchannel created by RegisterSubchannel // will be deleted from the map in UnregisterSubchannel. - GPR_ASSERT(it != subchannel_map_.end()); - GPR_ASSERT(it->second == subchannel); + CHECK(it != subchannel_map_.end()); + CHECK(it->second == subchannel); subchannel_map_.erase(it); } diff --git a/src/core/client_channel/retry_filter.h b/src/core/client_channel/retry_filter.h index 733130a30ce..0da23f845b2 100644 --- a/src/core/client_channel/retry_filter.h +++ b/src/core/client_channel/retry_filter.h @@ -24,6 +24,7 @@ #include +#include "absl/log/check.h" #include "absl/types/optional.h" #include @@ -39,10 +40,10 @@ #include "src/core/lib/channel/channel_stack.h" #include "src/core/lib/channel/context.h" #include "src/core/lib/debug/trace.h" -#include "src/core/lib/gpr/useful.h" #include "src/core/lib/gprpp/ref_counted_ptr.h" #include "src/core/lib/iomgr/error.h" #include "src/core/lib/transport/transport.h" +#include "src/core/util/useful.h" extern grpc_core::TraceFlag grpc_retry_trace; @@ -92,8 +93,8 @@ class RetryFilter final { static grpc_error_handle Init(grpc_channel_element* elem, grpc_channel_element_args* args) { - GPR_ASSERT(args->is_last); - GPR_ASSERT(elem->filter == &kVtable); + CHECK(args->is_last); + CHECK(elem->filter == &kVtable); grpc_error_handle error; new (elem->channel_data) RetryFilter(args->channel_args, &error); return error; diff --git a/src/core/client_channel/retry_filter_legacy_call_data.cc b/src/core/client_channel/retry_filter_legacy_call_data.cc index ef5996c4b1f..8f1d48d48ae 100644 --- a/src/core/client_channel/retry_filter_legacy_call_data.cc +++ b/src/core/client_channel/retry_filter_legacy_call_data.cc @@ -21,6 +21,7 @@ #include #include +#include "absl/log/check.h" #include "absl/status/status.h" #include "absl/strings/str_cat.h" @@ -34,7 +35,6 @@ #include "src/core/lib/channel/context.h" #include "src/core/lib/channel/status_util.h" #include "src/core/lib/debug/trace.h" -#include "src/core/lib/gpr/useful.h" #include "src/core/lib/gprpp/construct_destruct.h" #include "src/core/lib/gprpp/debug_location.h" #include "src/core/lib/gprpp/orphanable.h" @@ -53,6 +53,7 @@ #include "src/core/lib/transport/error_utils.h" #include "src/core/lib/transport/metadata_batch.h" #include "src/core/lib/transport/transport.h" +#include "src/core/util/useful.h" namespace grpc_core { @@ -1577,7 +1578,7 @@ RetryFilter::LegacyCallData::~LegacyCallData() { CSliceUnref(path_); // Make sure there are no remaining pending batches. for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) { - GPR_ASSERT(pending_batches_[i].batch == nullptr); + CHECK_EQ(pending_batches_[i].batch, nullptr); } } @@ -1826,7 +1827,7 @@ RetryFilter::LegacyCallData::PendingBatchesAdd( chand_, this, idx); } PendingBatch* pending = &pending_batches_[idx]; - GPR_ASSERT(pending->batch == nullptr); + CHECK_EQ(pending->batch, nullptr); pending->batch = batch; pending->send_ops_cached = false; // Update state in calld about pending batches. @@ -1910,7 +1911,7 @@ void RetryFilter::LegacyCallData::FailPendingBatchInCallCombiner( // This is called via the call combiner, so access to calld is synchronized. void RetryFilter::LegacyCallData::PendingBatchesFail(grpc_error_handle error) { - GPR_ASSERT(!error.ok()); + CHECK(!error.ok()); if (GRPC_TRACE_FLAG_ENABLED(grpc_retry_trace)) { size_t num_batches = 0; for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) { @@ -1991,7 +1992,7 @@ void RetryFilter::LegacyCallData::StartRetryTimer( // Compute backoff delay. Duration next_attempt_timeout; if (server_pushback.has_value()) { - GPR_ASSERT(*server_pushback >= Duration::Zero()); + CHECK(*server_pushback >= Duration::Zero()); next_attempt_timeout = *server_pushback; retry_backoff_.Reset(); } else { diff --git a/src/core/client_channel/subchannel.cc b/src/core/client_channel/subchannel.cc index 6e8d1c41507..d0f9edefeab 100644 --- a/src/core/client_channel/subchannel.cc +++ b/src/core/client_channel/subchannel.cc @@ -26,6 +26,8 @@ #include #include +#include "absl/log/check.h" +#include "absl/log/log.h" #include "absl/status/statusor.h" #include "absl/strings/cord.h" #include "absl/strings/str_cat.h" @@ -37,25 +39,23 @@ #include #include +#include "src/core/channelz/channel_trace.h" +#include "src/core/channelz/channelz.h" #include "src/core/client_channel/subchannel_pool_interface.h" +#include "src/core/handshaker/proxy_mapper_registry.h" #include "src/core/lib/address_utils/sockaddr_utils.h" #include "src/core/lib/backoff/backoff.h" #include "src/core/lib/channel/channel_args.h" #include "src/core/lib/channel/channel_stack.h" #include "src/core/lib/channel/channel_stack_builder_impl.h" -#include "src/core/lib/channel/channel_trace.h" -#include "src/core/lib/channel/channelz.h" #include "src/core/lib/config/core_configuration.h" #include "src/core/lib/debug/stats.h" #include "src/core/lib/debug/stats_data.h" #include "src/core/lib/debug/trace.h" -#include "src/core/lib/gpr/alloc.h" -#include "src/core/lib/gpr/useful.h" #include "src/core/lib/gprpp/debug_location.h" #include "src/core/lib/gprpp/ref_counted_ptr.h" #include "src/core/lib/gprpp/status_helper.h" #include "src/core/lib/gprpp/sync.h" -#include "src/core/lib/handshaker/proxy_mapper_registry.h" #include "src/core/lib/iomgr/exec_ctx.h" #include "src/core/lib/iomgr/pollset_set.h" #include "src/core/lib/promise/cancel_callback.h" @@ -67,6 +67,8 @@ #include "src/core/lib/transport/connectivity_state.h" #include "src/core/lib/transport/error_utils.h" #include "src/core/lib/transport/transport.h" +#include "src/core/util/alloc.h" +#include "src/core/util/useful.h" // Backoff parameters. #define GRPC_SUBCHANNEL_INITIAL_CONNECT_BACKOFF_SECONDS 1 @@ -148,7 +150,7 @@ ArenaPromise ConnectedSubchannel::MakeCallPromise( [self = Ref()](ServerMetadataHandle metadata) { channelz::SubchannelNode* channelz_subchannel = self->channelz_subchannel(); - GPR_ASSERT(channelz_subchannel != nullptr); + CHECK_NE(channelz_subchannel, nullptr); if (metadata->get(GrpcStatusMetadata()) .value_or(GRPC_STATUS_UNKNOWN) != GRPC_STATUS_OK) { channelz_subchannel->RecordCallFailed(); @@ -160,7 +162,7 @@ ArenaPromise ConnectedSubchannel::MakeCallPromise( [self = Ref()]() { channelz::SubchannelNode* channelz_subchannel = self->channelz_subchannel(); - GPR_ASSERT(channelz_subchannel != nullptr); + CHECK_NE(channelz_subchannel, nullptr); channelz_subchannel->RecordCallFailed(); }); } @@ -195,7 +197,7 @@ SubchannelCall::SubchannelCall(Args args, grpc_error_handle* error) *error = grpc_call_stack_init(connected_subchannel_->channel_stack(), 1, SubchannelCall::Destroy, this, &call_args); if (GPR_UNLIKELY(!error->ok())) { - gpr_log(GPR_ERROR, "error: %s", StatusToString(*error).c_str()); + LOG(ERROR) << "error: " << StatusToString(*error); return; } grpc_call_stack_set_pollset_or_pollset_set(callstk, args.pollent); @@ -219,8 +221,8 @@ grpc_call_stack* SubchannelCall::GetCallStack() { } void SubchannelCall::SetAfterCallStackDestroy(grpc_closure* closure) { - GPR_ASSERT(after_call_stack_destroy_ == nullptr); - GPR_ASSERT(closure != nullptr); + CHECK_EQ(after_call_stack_destroy_, nullptr); + CHECK_NE(closure, nullptr); after_call_stack_destroy_ = closure; } @@ -275,7 +277,7 @@ void SubchannelCall::MaybeInterceptRecvTrailingMetadata( GRPC_CLOSURE_INIT(&recv_trailing_metadata_ready_, RecvTrailingMetadataReady, this, grpc_schedule_on_exec_ctx); // save some state needed for the interception callback. - GPR_ASSERT(recv_trailing_metadata_ == nullptr); + CHECK_EQ(recv_trailing_metadata_, nullptr); recv_trailing_metadata_ = batch->payload->recv_trailing_metadata.recv_trailing_metadata; original_recv_trailing_metadata_ = @@ -301,12 +303,12 @@ void GetCallStatus(grpc_status_code* status, Timestamp deadline, void SubchannelCall::RecvTrailingMetadataReady(void* arg, grpc_error_handle error) { SubchannelCall* call = static_cast(arg); - GPR_ASSERT(call->recv_trailing_metadata_ != nullptr); + CHECK_NE(call->recv_trailing_metadata_, nullptr); grpc_status_code status = GRPC_STATUS_OK; GetCallStatus(&status, call->deadline_, call->recv_trailing_metadata_, error); channelz::SubchannelNode* channelz_subchannel = call->connected_subchannel_->channelz_subchannel(); - GPR_ASSERT(channelz_subchannel != nullptr); + CHECK_NE(channelz_subchannel, nullptr); if (status == GRPC_STATUS_OK) { channelz_subchannel->RecordCallSucceeded(); } else { @@ -520,7 +522,7 @@ RefCountedPtr Subchannel::Create( const grpc_resolved_address& address, const ChannelArgs& args) { SubchannelKey key(address, args); auto* subchannel_pool = args.GetObject(); - GPR_ASSERT(subchannel_pool != nullptr); + CHECK_NE(subchannel_pool, nullptr); RefCountedPtr c = subchannel_pool->FindSubchannel(key); if (c != nullptr) { return c; @@ -628,7 +630,7 @@ void Subchannel::Orphaned() { } { MutexLock lock(&mu_); - GPR_ASSERT(!shutdown_); + CHECK(!shutdown_); shutdown_ = true; connector_.reset(); connected_subchannel_.reset(); diff --git a/src/core/client_channel/subchannel.h b/src/core/client_channel/subchannel.h index 174e48df403..f59a3810208 100644 --- a/src/core/client_channel/subchannel.h +++ b/src/core/client_channel/subchannel.h @@ -31,14 +31,12 @@ #include #include -#include "src/core/client_channel/client_channel_channelz.h" #include "src/core/client_channel/connector.h" #include "src/core/client_channel/subchannel_pool_interface.h" #include "src/core/lib/backoff/backoff.h" #include "src/core/lib/channel/channel_args.h" #include "src/core/lib/channel/channel_fwd.h" #include "src/core/lib/channel/context.h" -#include "src/core/lib/gpr/time_precise.h" #include "src/core/lib/gprpp/debug_location.h" #include "src/core/lib/gprpp/dual_ref_counted.h" #include "src/core/lib/gprpp/orphanable.h" @@ -60,6 +58,7 @@ #include "src/core/lib/transport/connectivity_state.h" #include "src/core/lib/transport/metadata_batch.h" #include "src/core/lib/transport/transport.h" +#include "src/core/util/time_precise.h" namespace grpc_core { diff --git a/src/core/client_channel/subchannel_pool_interface.h b/src/core/client_channel/subchannel_pool_interface.h index fa8e828c393..6c02214ccdc 100644 --- a/src/core/client_channel/subchannel_pool_interface.h +++ b/src/core/client_channel/subchannel_pool_interface.h @@ -27,10 +27,10 @@ #include "src/core/lib/channel/channel_args.h" #include "src/core/lib/debug/trace.h" -#include "src/core/lib/gpr/useful.h" #include "src/core/lib/gprpp/ref_counted.h" #include "src/core/lib/gprpp/ref_counted_ptr.h" #include "src/core/lib/iomgr/resolved_address.h" +#include "src/core/util/useful.h" namespace grpc_core { diff --git a/src/core/client_channel/subchannel_stream_client.cc b/src/core/client_channel/subchannel_stream_client.cc index 34c5d2c6bb9..2ee082ef1fa 100644 --- a/src/core/client_channel/subchannel_stream_client.cc +++ b/src/core/client_channel/subchannel_stream_client.cc @@ -23,11 +23,12 @@ #include +#include "absl/log/check.h" + #include #include #include "src/core/lib/channel/channel_args.h" -#include "src/core/lib/gpr/time_precise.h" #include "src/core/lib/gprpp/debug_location.h" #include "src/core/lib/gprpp/status_helper.h" #include "src/core/lib/gprpp/sync.h" @@ -35,6 +36,7 @@ #include "src/core/lib/iomgr/exec_ctx.h" #include "src/core/lib/resource_quota/resource_quota.h" #include "src/core/lib/transport/error_utils.h" +#include "src/core/util/time_precise.h" #define SUBCHANNEL_STREAM_INITIAL_CONNECT_BACKOFF_SECONDS 1 #define SUBCHANNEL_STREAM_RECONNECT_BACKOFF_MULTIPLIER 1.6 @@ -110,7 +112,7 @@ void SubchannelStreamClient::StartCall() { void SubchannelStreamClient::StartCallLocked() { if (event_handler_ == nullptr) return; - GPR_ASSERT(call_state_ == nullptr); + CHECK(call_state_ == nullptr); if (event_handler_ != nullptr) { event_handler_->OnCallStartLocked(this); } @@ -235,7 +237,7 @@ void SubchannelStreamClient::CallState::StartCallLocked() { send_initial_metadata_.Set( HttpPathMetadata(), subchannel_stream_client_->event_handler_->GetPathLocked()); - GPR_ASSERT(error.ok()); + CHECK(error.ok()); payload_.send_initial_metadata.send_initial_metadata = &send_initial_metadata_; batch_.send_initial_metadata = true; @@ -444,7 +446,7 @@ void SubchannelStreamClient::CallState::CallEndedLocked(bool retry) { if (this == subchannel_stream_client_->call_state_.get()) { subchannel_stream_client_->call_state_.reset(); if (retry) { - GPR_ASSERT(subchannel_stream_client_->event_handler_ != nullptr); + CHECK(subchannel_stream_client_->event_handler_ != nullptr); if (seen_response_.load(std::memory_order_acquire)) { // If the call fails after we've gotten a successful response, reset // the backoff and restart the call immediately. diff --git a/src/core/ext/filters/backend_metrics/backend_metric_filter.cc b/src/core/ext/filters/backend_metrics/backend_metric_filter.cc index c3ce55921d8..d9f02b41bf7 100644 --- a/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +++ b/src/core/ext/filters/backend_metrics/backend_metric_filter.cc @@ -52,6 +52,7 @@ TraceFlag grpc_backend_metric_filter_trace(false, "backend_metric_filter"); const NoInterceptor BackendMetricFilter::Call::OnClientInitialMetadata; const NoInterceptor BackendMetricFilter::Call::OnServerInitialMetadata; const NoInterceptor BackendMetricFilter::Call::OnClientToServerMessage; +const NoInterceptor BackendMetricFilter::Call::OnClientToServerHalfClose; const NoInterceptor BackendMetricFilter::Call::OnServerToClientMessage; const NoInterceptor BackendMetricFilter::Call::OnFinalize; diff --git a/src/core/ext/filters/backend_metrics/backend_metric_filter.h b/src/core/ext/filters/backend_metrics/backend_metric_filter.h index d97b0c8cb65..114fc3cc7bc 100644 --- a/src/core/ext/filters/backend_metrics/backend_metric_filter.h +++ b/src/core/ext/filters/backend_metrics/backend_metric_filter.h @@ -44,6 +44,7 @@ class BackendMetricFilter : public ImplementChannelFilter { static const NoInterceptor OnServerInitialMetadata; void OnServerTrailingMetadata(ServerMetadata& md); static const NoInterceptor OnClientToServerMessage; + static const NoInterceptor OnClientToServerHalfClose; static const NoInterceptor OnServerToClientMessage; static const NoInterceptor OnFinalize; }; diff --git a/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc b/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc index d189d4080a7..fd48d034d38 100644 --- a/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc +++ b/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc @@ -307,13 +307,15 @@ void RegisterLegacyChannelIdleFilters(CoreConfiguration::Builder* builder) { .If([](const ChannelArgs& channel_args) { return GetClientIdleTimeout(channel_args) != Duration::Infinity(); }); - builder->channel_init() - ->RegisterV2Filter(GRPC_SERVER_CHANNEL) - .ExcludeFromMinimalStack() - .If([](const ChannelArgs& channel_args) { - return LegacyMaxAgeFilter::Config::FromChannelArgs(channel_args) - .enable(); - }); + if (!IsChaoticGoodEnabled()) { + builder->channel_init() + ->RegisterV2Filter(GRPC_SERVER_CHANNEL) + .ExcludeFromMinimalStack() + .If([](const ChannelArgs& channel_args) { + return LegacyMaxAgeFilter::Config::FromChannelArgs(channel_args) + .enable(); + }); + } } LegacyMaxAgeFilter::LegacyMaxAgeFilter(grpc_channel_stack* channel_stack, diff --git a/src/core/ext/filters/deadline/deadline_filter.cc b/src/core/ext/filters/deadline/deadline_filter.cc deleted file mode 100644 index a2dc24594e2..00000000000 --- a/src/core/ext/filters/deadline/deadline_filter.cc +++ /dev/null @@ -1,408 +0,0 @@ -// -// Copyright 2016 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. -// - -#include - -#include "src/core/ext/filters/deadline/deadline_filter.h" - -#include -#include -#include -#include - -#include "absl/status/status.h" -#include "absl/types/optional.h" - -#include -#include -#include - -#include "src/core/lib/config/core_configuration.h" -#include "src/core/lib/gprpp/debug_location.h" -#include "src/core/lib/gprpp/status_helper.h" -#include "src/core/lib/iomgr/error.h" -#include "src/core/lib/iomgr/exec_ctx.h" -#include "src/core/lib/iomgr/timer.h" -#include "src/core/lib/promise/arena_promise.h" -#include "src/core/lib/promise/context.h" -#include "src/core/lib/surface/call.h" -#include "src/core/lib/surface/channel_stack_type.h" -#include "src/core/lib/transport/metadata_batch.h" - -namespace grpc_core { - -// A fire-and-forget class representing a pending deadline timer. -// Allocated on the call arena. -class TimerState { - public: - TimerState(grpc_deadline_state* deadline_state, Timestamp deadline) - : deadline_state_(deadline_state) { - GRPC_CALL_STACK_REF(deadline_state->call_stack, "DeadlineTimerState"); - GRPC_CLOSURE_INIT(&closure_, TimerCallback, this, nullptr); - grpc_timer_init(&timer_, deadline, &closure_); - } - - void Cancel() { grpc_timer_cancel(&timer_); } - - private: - // The on_complete callback used when sending a cancel_error batch down the - // filter stack. Yields the call combiner when the batch returns. - static void YieldCallCombiner(void* arg, grpc_error_handle /*ignored*/) { - TimerState* self = static_cast(arg); - GRPC_CALL_COMBINER_STOP(self->deadline_state_->call_combiner, - "got on_complete from cancel_stream batch"); - GRPC_CALL_STACK_UNREF(self->deadline_state_->call_stack, - "DeadlineTimerState"); - } - - // This is called via the call combiner, so access to deadline_state is - // synchronized. - static void SendCancelOpInCallCombiner(void* arg, grpc_error_handle error) { - TimerState* self = static_cast(arg); - grpc_transport_stream_op_batch* batch = grpc_make_transport_stream_op( - GRPC_CLOSURE_INIT(&self->closure_, YieldCallCombiner, self, nullptr)); - batch->cancel_stream = true; - batch->payload->cancel_stream.cancel_error = error; - grpc_call_element* elem = self->deadline_state_->elem; - elem->filter->start_transport_stream_op_batch(elem, batch); - } - - // Timer callback. - static void TimerCallback(void* arg, grpc_error_handle error) { - TimerState* self = static_cast(arg); - if (error != absl::CancelledError()) { - error = grpc_error_set_int(GRPC_ERROR_CREATE("Deadline Exceeded"), - StatusIntProperty::kRpcStatus, - GRPC_STATUS_DEADLINE_EXCEEDED); - self->deadline_state_->call_combiner->Cancel(error); - GRPC_CLOSURE_INIT(&self->closure_, SendCancelOpInCallCombiner, self, - nullptr); - GRPC_CALL_COMBINER_START(self->deadline_state_->call_combiner, - &self->closure_, error, - "deadline exceeded -- sending cancel_stream op"); - } else { - GRPC_CALL_STACK_UNREF(self->deadline_state_->call_stack, - "DeadlineTimerState"); - } - } - - // NOTE: This object's dtor is never called, so do not add any data - // members that require destruction! - // TODO(roth): We should ideally call this object's dtor somewhere, - // but that would require adding more synchronization, because we'd - // need to call the dtor only after both (a) the timer callback - // finishes and (b) the filter sees the call completion and attempts - // to cancel the timer. - grpc_deadline_state* deadline_state_; - grpc_timer timer_; - grpc_closure closure_; -}; - -} // namespace grpc_core - -// -// grpc_deadline_state -// - -// Starts the deadline timer. -// This is called via the call combiner, so access to deadline_state is -// synchronized. -static void start_timer_if_needed(grpc_deadline_state* deadline_state, - grpc_core::Timestamp deadline) { - if (deadline == grpc_core::Timestamp::InfFuture()) return; - GPR_ASSERT(deadline_state->timer_state == nullptr); - deadline_state->timer_state = - deadline_state->arena->New(deadline_state, - deadline); -} - -// Cancels the deadline timer. -// This is called via the call combiner, so access to deadline_state is -// synchronized. -static void cancel_timer_if_needed(grpc_deadline_state* deadline_state) { - if (deadline_state->timer_state != nullptr) { - deadline_state->timer_state->Cancel(); - deadline_state->timer_state = nullptr; - } -} - -// Callback run when we receive trailing metadata. -static void recv_trailing_metadata_ready(void* arg, grpc_error_handle error) { - grpc_deadline_state* deadline_state = static_cast(arg); - cancel_timer_if_needed(deadline_state); - // Invoke the original callback. - grpc_core::Closure::Run(DEBUG_LOCATION, - deadline_state->original_recv_trailing_metadata_ready, - error); -} - -// Inject our own recv_trailing_metadata_ready callback into op. -static void inject_recv_trailing_metadata_ready( - grpc_deadline_state* deadline_state, grpc_transport_stream_op_batch* op) { - deadline_state->original_recv_trailing_metadata_ready = - op->payload->recv_trailing_metadata.recv_trailing_metadata_ready; - GRPC_CLOSURE_INIT(&deadline_state->recv_trailing_metadata_ready, - recv_trailing_metadata_ready, deadline_state, - grpc_schedule_on_exec_ctx); - op->payload->recv_trailing_metadata.recv_trailing_metadata_ready = - &deadline_state->recv_trailing_metadata_ready; -} - -// Callback and associated state for starting the timer after call stack -// initialization has been completed. -struct start_timer_after_init_state { - start_timer_after_init_state(grpc_deadline_state* deadline_state, - grpc_core::Timestamp deadline) - : deadline_state(deadline_state), deadline(deadline) {} - ~start_timer_after_init_state() { - start_timer_if_needed(deadline_state, deadline); - } - - bool in_call_combiner = false; - grpc_deadline_state* deadline_state; - grpc_core::Timestamp deadline; - grpc_closure closure; -}; -static void start_timer_after_init(void* arg, grpc_error_handle error) { - struct start_timer_after_init_state* state = - static_cast(arg); - grpc_deadline_state* deadline_state = state->deadline_state; - if (!state->in_call_combiner) { - // We are initially called without holding the call combiner, so we - // need to bounce ourselves into it. - state->in_call_combiner = true; - GRPC_CALL_COMBINER_START(deadline_state->call_combiner, &state->closure, - error, "scheduling deadline timer"); - return; - } - delete state; - GRPC_CALL_COMBINER_STOP(deadline_state->call_combiner, - "done scheduling deadline timer"); -} - -grpc_deadline_state::grpc_deadline_state(grpc_call_element* elem, - const grpc_call_element_args& args, - grpc_core::Timestamp deadline) - : elem(elem), - call_stack(args.call_stack), - call_combiner(args.call_combiner), - arena(args.arena) { - // Deadline will always be infinite on servers, so the timer will only be - // set on clients with a finite deadline. - if (deadline != grpc_core::Timestamp::InfFuture()) { - // When the deadline passes, we indicate the failure by sending down - // an op with cancel_error set. However, we can't send down any ops - // until after the call stack is fully initialized. If we start the - // timer here, we have no guarantee that the timer won't pop before - // call stack initialization is finished. To avoid that problem, we - // create a closure to start the timer, and we schedule that closure - // to be run after call stack initialization is done. - struct start_timer_after_init_state* state = - new start_timer_after_init_state(this, deadline); - GRPC_CLOSURE_INIT(&state->closure, start_timer_after_init, state, - grpc_schedule_on_exec_ctx); - grpc_core::ExecCtx::Run(DEBUG_LOCATION, &state->closure, absl::OkStatus()); - } -} - -grpc_deadline_state::~grpc_deadline_state() { cancel_timer_if_needed(this); } - -void grpc_deadline_state_reset(grpc_deadline_state* deadline_state, - grpc_core::Timestamp new_deadline) { - cancel_timer_if_needed(deadline_state); - start_timer_if_needed(deadline_state, new_deadline); -} - -void grpc_deadline_state_client_start_transport_stream_op_batch( - grpc_deadline_state* deadline_state, grpc_transport_stream_op_batch* op) { - if (op->cancel_stream) { - cancel_timer_if_needed(deadline_state); - } else { - // Make sure we know when the call is complete, so that we can cancel - // the timer. - if (op->recv_trailing_metadata) { - inject_recv_trailing_metadata_ready(deadline_state, op); - } - } -} - -// -// filter code -// - -// Constructor for channel_data. Used for both client and server filters. -static grpc_error_handle deadline_init_channel_elem( - grpc_channel_element* /*elem*/, grpc_channel_element_args* args) { - GPR_ASSERT(!args->is_last); - return absl::OkStatus(); -} - -// Destructor for channel_data. Used for both client and server filters. -static void deadline_destroy_channel_elem(grpc_channel_element* /*elem*/) {} - -// Additional call data used only for the server filter. -struct server_call_data { - grpc_deadline_state deadline_state; // Must be first. - // The closure for receiving initial metadata. - grpc_closure recv_initial_metadata_ready; - // Received initial metadata batch. - grpc_metadata_batch* recv_initial_metadata; - // The original recv_initial_metadata_ready closure, which we chain to - // after our own closure is invoked. - grpc_closure* next_recv_initial_metadata_ready; -}; - -// Constructor for call_data. Used for both client and server filters. -static grpc_error_handle deadline_init_call_elem( - grpc_call_element* elem, const grpc_call_element_args* args) { - new (elem->call_data) grpc_deadline_state(elem, *args, args->deadline); - return absl::OkStatus(); -} - -// Destructor for call_data. Used for both client and server filters. -static void deadline_destroy_call_elem( - grpc_call_element* elem, const grpc_call_final_info* /*final_info*/, - grpc_closure* /*ignored*/) { - grpc_deadline_state* deadline_state = - static_cast(elem->call_data); - deadline_state->~grpc_deadline_state(); -} - -// Method for starting a call op for client filter. -static void deadline_client_start_transport_stream_op_batch( - grpc_call_element* elem, grpc_transport_stream_op_batch* op) { - grpc_deadline_state_client_start_transport_stream_op_batch( - static_cast(elem->call_data), op); - // Chain to next filter. - grpc_call_next_op(elem, op); -} - -// Callback for receiving initial metadata on the server. -static void recv_initial_metadata_ready(void* arg, grpc_error_handle error) { - grpc_call_element* elem = static_cast(arg); - server_call_data* calld = static_cast(elem->call_data); - start_timer_if_needed( - &calld->deadline_state, - calld->recv_initial_metadata->get(grpc_core::GrpcTimeoutMetadata()) - .value_or(grpc_core::Timestamp::InfFuture())); - // Invoke the next callback. - grpc_core::Closure::Run(DEBUG_LOCATION, - calld->next_recv_initial_metadata_ready, error); -} - -// Method for starting a call op for server filter. -static void deadline_server_start_transport_stream_op_batch( - grpc_call_element* elem, grpc_transport_stream_op_batch* op) { - server_call_data* calld = static_cast(elem->call_data); - if (op->cancel_stream) { - cancel_timer_if_needed(&calld->deadline_state); - } else { - // If we're receiving initial metadata, we need to get the deadline - // from the recv_initial_metadata_ready callback. So we inject our - // own callback into that hook. - if (op->recv_initial_metadata) { - calld->next_recv_initial_metadata_ready = - op->payload->recv_initial_metadata.recv_initial_metadata_ready; - calld->recv_initial_metadata = - op->payload->recv_initial_metadata.recv_initial_metadata; - GRPC_CLOSURE_INIT(&calld->recv_initial_metadata_ready, - recv_initial_metadata_ready, elem, - grpc_schedule_on_exec_ctx); - op->payload->recv_initial_metadata.recv_initial_metadata_ready = - &calld->recv_initial_metadata_ready; - } - // Make sure we know when the call is complete, so that we can cancel - // the timer. - // Note that we trigger this on recv_trailing_metadata, even though - // the client never sends trailing metadata, because this is the - // hook that tells us when the call is complete on the server side. - if (op->recv_trailing_metadata) { - inject_recv_trailing_metadata_ready(&calld->deadline_state, op); - } - } - // Chain to next filter. - grpc_call_next_op(elem, op); -} - -const grpc_channel_filter grpc_client_deadline_filter = { - deadline_client_start_transport_stream_op_batch, - [](grpc_channel_element*, grpc_core::CallArgs call_args, - grpc_core::NextPromiseFactory next_promise_factory) { - return next_promise_factory(std::move(call_args)); - }, - /* init_call: */ nullptr, - grpc_channel_next_op, - sizeof(grpc_deadline_state), - deadline_init_call_elem, - grpc_call_stack_ignore_set_pollset_or_pollset_set, - deadline_destroy_call_elem, - 0, // sizeof(channel_data) - deadline_init_channel_elem, - grpc_channel_stack_no_post_init, - deadline_destroy_channel_elem, - grpc_channel_next_get_info, - "deadline", -}; - -const grpc_channel_filter grpc_server_deadline_filter = { - deadline_server_start_transport_stream_op_batch, - [](grpc_channel_element*, grpc_core::CallArgs call_args, - grpc_core::NextPromiseFactory next_promise_factory) { - auto deadline = call_args.client_initial_metadata->get( - grpc_core::GrpcTimeoutMetadata()); - if (deadline.has_value()) { - grpc_core::GetContext()->UpdateDeadline( - *deadline); - } - return next_promise_factory(std::move(call_args)); - }, - [](grpc_channel_element*, grpc_core::CallSpineInterface* spine) { - grpc_core::DownCast(spine) - ->client_initial_metadata() - .receiver.InterceptAndMap([](grpc_core::ClientMetadataHandle md) { - auto deadline = md->get(grpc_core::GrpcTimeoutMetadata()); - if (deadline.has_value()) { - grpc_core::GetContext()->UpdateDeadline( - *deadline); - } - return md; - }); - }, - grpc_channel_next_op, - sizeof(server_call_data), - deadline_init_call_elem, - grpc_call_stack_ignore_set_pollset_or_pollset_set, - deadline_destroy_call_elem, - 0, // sizeof(channel_data) - deadline_init_channel_elem, - grpc_channel_stack_no_post_init, - deadline_destroy_channel_elem, - grpc_channel_next_get_info, - "deadline", -}; - -namespace grpc_core { -void RegisterDeadlineFilter(CoreConfiguration::Builder* builder) { - builder->channel_init() - ->RegisterFilter(GRPC_CLIENT_DIRECT_CHANNEL, &grpc_client_deadline_filter) - .ExcludeFromMinimalStack() - .IfChannelArg(GRPC_ARG_ENABLE_DEADLINE_CHECKS, true); - builder->channel_init() - ->RegisterFilter(GRPC_SERVER_CHANNEL, &grpc_server_deadline_filter) - .ExcludeFromMinimalStack() - .IfChannelArg(GRPC_ARG_ENABLE_DEADLINE_CHECKS, true); -} -} // namespace grpc_core diff --git a/src/core/ext/filters/deadline/deadline_filter.h b/src/core/ext/filters/deadline/deadline_filter.h deleted file mode 100644 index 131f49d2473..00000000000 --- a/src/core/ext/filters/deadline/deadline_filter.h +++ /dev/null @@ -1,85 +0,0 @@ -// -// Copyright 2016 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. -// - -#ifndef GRPC_SRC_CORE_EXT_FILTERS_DEADLINE_DEADLINE_FILTER_H -#define GRPC_SRC_CORE_EXT_FILTERS_DEADLINE_DEADLINE_FILTER_H - -#include - -#include "src/core/lib/channel/channel_fwd.h" -#include "src/core/lib/channel/channel_stack.h" -#include "src/core/lib/gprpp/time.h" -#include "src/core/lib/iomgr/call_combiner.h" -#include "src/core/lib/iomgr/closure.h" -#include "src/core/lib/resource_quota/arena.h" -#include "src/core/lib/transport/transport.h" - -namespace grpc_core { -class TimerState; -} // namespace grpc_core - -// State used for filters that enforce call deadlines. -// Must be the first field in the filter's call_data. -struct grpc_deadline_state { - grpc_deadline_state(grpc_call_element* elem, - const grpc_call_element_args& args, - grpc_core::Timestamp deadline); - ~grpc_deadline_state(); - - // We take a reference to the call stack for the timer callback. - grpc_call_element* elem; - grpc_call_stack* call_stack; - grpc_core::CallCombiner* call_combiner; - grpc_core::Arena* arena; - grpc_core::TimerState* timer_state = nullptr; - // Closure to invoke when we receive trailing metadata. - // We use this to cancel the timer. - grpc_closure recv_trailing_metadata_ready; - // The original recv_trailing_metadata_ready closure, which we chain to - // after our own closure is invoked. - grpc_closure* original_recv_trailing_metadata_ready; -}; - -// Cancels the existing timer and starts a new one with new_deadline. -// -// Note: It is generally safe to call this with an earlier deadline -// value than the current one, but not the reverse. No checks are done -// to ensure that the timer callback is not invoked while it is in the -// process of being reset, which means that attempting to increase the -// deadline may result in the timer being called twice. -// -// Note: Must be called while holding the call combiner. -void grpc_deadline_state_reset(grpc_deadline_state* deadline_state, - grpc_core::Timestamp new_deadline); - -// To be called from the client-side filter's start_transport_stream_op_batch() -// method. Ensures that the deadline timer is cancelled when the call -// is completed. -// -// Note: It is the caller's responsibility to chain to the next filter if -// necessary after this function returns. -// -// Note: Must be called while holding the call combiner. -void grpc_deadline_state_client_start_transport_stream_op_batch( - grpc_deadline_state* deadline_state, grpc_transport_stream_op_batch* op); - -// Deadline filters for direct client channels and server channels. -// Note: Deadlines for non-direct client channels are handled by the -// client_channel filter. -extern const grpc_channel_filter grpc_client_deadline_filter; -extern const grpc_channel_filter grpc_server_deadline_filter; - -#endif // GRPC_SRC_CORE_EXT_FILTERS_DEADLINE_DEADLINE_FILTER_H diff --git a/src/core/ext/filters/fault_injection/fault_injection_filter.cc b/src/core/ext/filters/fault_injection/fault_injection_filter.cc index 87d5a4d2f1f..ae64f83ddc8 100644 --- a/src/core/ext/filters/fault_injection/fault_injection_filter.cc +++ b/src/core/ext/filters/fault_injection/fault_injection_filter.cc @@ -58,6 +58,7 @@ TraceFlag grpc_fault_injection_filter_trace(false, "fault_injection_filter"); const NoInterceptor FaultInjectionFilter::Call::OnServerInitialMetadata; const NoInterceptor FaultInjectionFilter::Call::OnServerTrailingMetadata; const NoInterceptor FaultInjectionFilter::Call::OnClientToServerMessage; +const NoInterceptor FaultInjectionFilter::Call::OnClientToServerHalfClose; const NoInterceptor FaultInjectionFilter::Call::OnServerToClientMessage; const NoInterceptor FaultInjectionFilter::Call::OnFinalize; diff --git a/src/core/ext/filters/fault_injection/fault_injection_filter.h b/src/core/ext/filters/fault_injection/fault_injection_filter.h index b6b1b811cde..515df16a853 100644 --- a/src/core/ext/filters/fault_injection/fault_injection_filter.h +++ b/src/core/ext/filters/fault_injection/fault_injection_filter.h @@ -58,6 +58,7 @@ class FaultInjectionFilter static const NoInterceptor OnServerInitialMetadata; static const NoInterceptor OnServerTrailingMetadata; static const NoInterceptor OnClientToServerMessage; + static const NoInterceptor OnClientToServerHalfClose; static const NoInterceptor OnServerToClientMessage; static const NoInterceptor OnFinalize; }; diff --git a/src/core/ext/filters/http/client/http_client_filter.cc b/src/core/ext/filters/http/client/http_client_filter.cc index 390df545efe..6af2b959be3 100644 --- a/src/core/ext/filters/http/client/http_client_filter.cc +++ b/src/core/ext/filters/http/client/http_client_filter.cc @@ -54,6 +54,7 @@ namespace grpc_core { const NoInterceptor HttpClientFilter::Call::OnServerToClientMessage; const NoInterceptor HttpClientFilter::Call::OnClientToServerMessage; +const NoInterceptor HttpClientFilter::Call::OnClientToServerHalfClose; const NoInterceptor HttpClientFilter::Call::OnFinalize; const grpc_channel_filter HttpClientFilter::kFilter = diff --git a/src/core/ext/filters/http/client/http_client_filter.h b/src/core/ext/filters/http/client/http_client_filter.h index f5d7875da5e..f985337f2ca 100644 --- a/src/core/ext/filters/http/client/http_client_filter.h +++ b/src/core/ext/filters/http/client/http_client_filter.h @@ -47,6 +47,7 @@ class HttpClientFilter : public ImplementChannelFilter { absl::Status OnServerInitialMetadata(ServerMetadata& md); absl::Status OnServerTrailingMetadata(ServerMetadata& md); static const NoInterceptor OnClientToServerMessage; + static const NoInterceptor OnClientToServerHalfClose; static const NoInterceptor OnServerToClientMessage; static const NoInterceptor OnFinalize; }; diff --git a/src/core/ext/filters/http/client_authority_filter.cc b/src/core/ext/filters/http/client_authority_filter.cc index 1d5258493e4..b6970d9ecb5 100644 --- a/src/core/ext/filters/http/client_authority_filter.cc +++ b/src/core/ext/filters/http/client_authority_filter.cc @@ -40,6 +40,7 @@ namespace grpc_core { const NoInterceptor ClientAuthorityFilter::Call::OnServerInitialMetadata; const NoInterceptor ClientAuthorityFilter::Call::OnServerTrailingMetadata; const NoInterceptor ClientAuthorityFilter::Call::OnClientToServerMessage; +const NoInterceptor ClientAuthorityFilter::Call::OnClientToServerHalfClose; const NoInterceptor ClientAuthorityFilter::Call::OnServerToClientMessage; const NoInterceptor ClientAuthorityFilter::Call::OnFinalize; diff --git a/src/core/ext/filters/http/client_authority_filter.h b/src/core/ext/filters/http/client_authority_filter.h index 44229c6cdde..da154fbac5d 100644 --- a/src/core/ext/filters/http/client_authority_filter.h +++ b/src/core/ext/filters/http/client_authority_filter.h @@ -52,6 +52,7 @@ class ClientAuthorityFilter final static const NoInterceptor OnServerInitialMetadata; static const NoInterceptor OnServerTrailingMetadata; static const NoInterceptor OnClientToServerMessage; + static const NoInterceptor OnClientToServerHalfClose; static const NoInterceptor OnServerToClientMessage; static const NoInterceptor OnFinalize; }; diff --git a/src/core/ext/filters/http/message_compress/compression_filter.cc b/src/core/ext/filters/http/message_compress/compression_filter.cc index 1ad6081ffac..ed077de6e70 100644 --- a/src/core/ext/filters/http/message_compress/compression_filter.cc +++ b/src/core/ext/filters/http/message_compress/compression_filter.cc @@ -22,6 +22,7 @@ #include #include +#include "absl/log/check.h" #include "absl/status/status.h" #include "absl/strings/str_cat.h" #include "absl/strings/str_format.h" @@ -56,8 +57,10 @@ namespace grpc_core { +const NoInterceptor ServerCompressionFilter::Call::OnClientToServerHalfClose; const NoInterceptor ServerCompressionFilter::Call::OnServerTrailingMetadata; const NoInterceptor ServerCompressionFilter::Call::OnFinalize; +const NoInterceptor ClientCompressionFilter::Call::OnClientToServerHalfClose; const NoInterceptor ClientCompressionFilter::Call::OnServerTrailingMetadata; const NoInterceptor ClientCompressionFilter::Call::OnFinalize; @@ -144,7 +147,7 @@ MessageHandle ChannelCompression::CompressMessage( const size_t after_size = tmp.Length(); const float savings_ratio = 1.0f - static_cast(after_size) / static_cast(before_size); - GPR_ASSERT(grpc_compression_algorithm_name(algorithm, &algo_name)); + CHECK(grpc_compression_algorithm_name(algorithm, &algo_name)); gpr_log(GPR_INFO, "Compressed[%s] %" PRIuPTR " bytes vs. %" PRIuPTR " bytes (%.2f%% savings)", @@ -158,7 +161,7 @@ MessageHandle ChannelCompression::CompressMessage( } else { if (GRPC_TRACE_FLAG_ENABLED(grpc_compression_trace)) { const char* algo_name; - GPR_ASSERT(grpc_compression_algorithm_name(algorithm, &algo_name)); + CHECK(grpc_compression_algorithm_name(algorithm, &algo_name)); gpr_log(GPR_INFO, "Algorithm '%s' enabled but decided not to compress. Input size: " "%" PRIuPTR, diff --git a/src/core/ext/filters/http/message_compress/compression_filter.h b/src/core/ext/filters/http/message_compress/compression_filter.h index 99e57a0ac1d..5d82846d01d 100644 --- a/src/core/ext/filters/http/message_compress/compression_filter.h +++ b/src/core/ext/filters/http/message_compress/compression_filter.h @@ -129,6 +129,7 @@ class ClientCompressionFilter final absl::StatusOr OnServerToClientMessage( MessageHandle message, ClientCompressionFilter* filter); + static const NoInterceptor OnClientToServerHalfClose; static const NoInterceptor OnServerTrailingMetadata; static const NoInterceptor OnFinalize; @@ -165,6 +166,7 @@ class ServerCompressionFilter final MessageHandle OnServerToClientMessage(MessageHandle message, ServerCompressionFilter* filter); + static const NoInterceptor OnClientToServerHalfClose; static const NoInterceptor OnServerTrailingMetadata; static const NoInterceptor OnFinalize; diff --git a/src/core/ext/filters/http/server/http_server_filter.cc b/src/core/ext/filters/http/server/http_server_filter.cc index 925cc73c23e..4d92cef6eaa 100644 --- a/src/core/ext/filters/http/server/http_server_filter.cc +++ b/src/core/ext/filters/http/server/http_server_filter.cc @@ -50,6 +50,7 @@ namespace grpc_core { const NoInterceptor HttpServerFilter::Call::OnClientToServerMessage; +const NoInterceptor HttpServerFilter::Call::OnClientToServerHalfClose; const NoInterceptor HttpServerFilter::Call::OnServerToClientMessage; const NoInterceptor HttpServerFilter::Call::OnFinalize; diff --git a/src/core/ext/filters/http/server/http_server_filter.h b/src/core/ext/filters/http/server/http_server_filter.h index 282973ddecd..a1f330e58bb 100644 --- a/src/core/ext/filters/http/server/http_server_filter.h +++ b/src/core/ext/filters/http/server/http_server_filter.h @@ -50,6 +50,7 @@ class HttpServerFilter : public ImplementChannelFilter { void OnServerInitialMetadata(ServerMetadata& md); void OnServerTrailingMetadata(ServerMetadata& md); static const NoInterceptor OnClientToServerMessage; + static const NoInterceptor OnClientToServerHalfClose; static const NoInterceptor OnServerToClientMessage; static const NoInterceptor OnFinalize; }; diff --git a/src/core/ext/filters/load_reporting/server_load_reporting_filter.cc b/src/core/ext/filters/load_reporting/server_load_reporting_filter.cc index 7937ab6fe74..100584f5ba1 100644 --- a/src/core/ext/filters/load_reporting/server_load_reporting_filter.cc +++ b/src/core/ext/filters/load_reporting/server_load_reporting_filter.cc @@ -74,6 +74,7 @@ constexpr char kEmptyAddressLengthString[] = "00"; const NoInterceptor ServerLoadReportingFilter::Call::OnServerInitialMetadata; const NoInterceptor ServerLoadReportingFilter::Call::OnClientToServerMessage; +const NoInterceptor ServerLoadReportingFilter::Call::OnClientToServerHalfClose; const NoInterceptor ServerLoadReportingFilter::Call::OnServerToClientMessage; absl::StatusOr> diff --git a/src/core/ext/filters/load_reporting/server_load_reporting_filter.h b/src/core/ext/filters/load_reporting/server_load_reporting_filter.h index f11c8c38bcf..76684093a0b 100644 --- a/src/core/ext/filters/load_reporting/server_load_reporting_filter.h +++ b/src/core/ext/filters/load_reporting/server_load_reporting_filter.h @@ -54,6 +54,7 @@ class ServerLoadReportingFilter void OnServerTrailingMetadata(ServerMetadata& md, ServerLoadReportingFilter* filter); static const NoInterceptor OnClientToServerMessage; + static const NoInterceptor OnClientToServerHalfClose; static const NoInterceptor OnServerToClientMessage; void OnFinalize(const grpc_call_final_info* final_info, ServerLoadReportingFilter* filter); diff --git a/src/core/ext/filters/logging/logging_filter.cc b/src/core/ext/filters/logging/logging_filter.cc index 1c76e64b06a..a89cca9c657 100644 --- a/src/core/ext/filters/logging/logging_filter.cc +++ b/src/core/ext/filters/logging/logging_filter.cc @@ -31,6 +31,7 @@ #include #include +#include "absl/log/log.h" #include "absl/numeric/int128.h" #include "absl/random/random.h" #include "absl/random/uniform_int_distribution.h" @@ -73,6 +74,9 @@ namespace grpc_core { +const NoInterceptor ClientLoggingFilter::Call::OnFinalize; +const NoInterceptor ServerLoggingFilter::Call::OnFinalize; + namespace { LoggingSink* g_logging_sink = nullptr; @@ -157,7 +161,7 @@ LoggingSink::Entry::Address PeerStringToAddress(const Slice& peer_string) { LoggingSink::Entry::Address address; absl::StatusOr uri = URI::Parse(peer_string.as_string_view()); if (!uri.ok()) { - gpr_log(GPR_DEBUG, "peer_string is in invalid format and cannot be logged"); + VLOG(2) << "peer_string is in invalid format and cannot be logged"; return address; } @@ -195,152 +199,148 @@ void EncodeMessageToPayload(const SliceBuffer* message, uint32_t log_len, } } -class CallData { - public: - CallData(bool is_client, const CallArgs& call_args, - const std::string& authority) - : call_id_(GetCallId()) { - absl::string_view path; - if (auto* value = call_args.client_initial_metadata->get_pointer( - HttpPathMetadata())) { - path = value->as_string_view(); - } - std::vector parts = - absl::StrSplit(path, '/', absl::SkipEmpty()); - if (parts.size() == 2) { - service_name_ = std::move(parts[0]); - method_name_ = std::move(parts[1]); +} // namespace + +namespace logging_filter_detail { + +CallData::CallData(bool is_client, + const ClientMetadata& client_initial_metadata, + const std::string& authority) + : call_id_(GetCallId()) { + absl::string_view path; + if (auto* value = client_initial_metadata.get_pointer(HttpPathMetadata())) { + path = value->as_string_view(); + } + std::vector parts = absl::StrSplit(path, '/', absl::SkipEmpty()); + if (parts.size() == 2) { + service_name_ = std::move(parts[0]); + method_name_ = std::move(parts[1]); + } + config_ = g_logging_sink->FindMatch(is_client, service_name_, method_name_); + if (config_.ShouldLog()) { + if (auto* value = + client_initial_metadata.get_pointer(HttpAuthorityMetadata())) { + authority_ = std::string(value->as_string_view()); + } else { + authority_ = authority; } - config_ = g_logging_sink->FindMatch(is_client, service_name_, method_name_); - if (config_.ShouldLog()) { - if (auto* value = call_args.client_initial_metadata->get_pointer( - HttpAuthorityMetadata())) { - authority_ = std::string(value->as_string_view()); - } else { - authority_ = authority; - } + } +} + +void CallData::LogClientHeader(bool is_client, + CallTracerAnnotationInterface* tracer, + const ClientMetadata& metadata) { + LoggingSink::Entry entry; + if (!is_client) { + if (auto* value = metadata.get_pointer(PeerString())) { + peer_ = PeerStringToAddress(*value); } } + SetCommonEntryFields(&entry, is_client, tracer, + LoggingSink::Entry::EventType::kClientHeader); + MetadataEncoder encoder(&entry.payload, nullptr, + config_.max_metadata_bytes()); + metadata.Encode(&encoder); + entry.payload_truncated = encoder.truncated(); + g_logging_sink->LogEntry(std::move(entry)); +} - bool ShouldLog() { return config_.ShouldLog(); } +void CallData::LogClientHalfClose(bool is_client, + CallTracerAnnotationInterface* tracer) { + LoggingSink::Entry entry; + SetCommonEntryFields(&entry, is_client, tracer, + LoggingSink::Entry::EventType::kClientHalfClose); + g_logging_sink->LogEntry(std::move(entry)); +} - void LogClientHeader(bool is_client, CallTracerAnnotationInterface* tracer, - const ClientMetadataHandle& metadata) { - LoggingSink::Entry entry; - if (!is_client) { +void CallData::LogServerHeader(bool is_client, + CallTracerAnnotationInterface* tracer, + const ServerMetadata* metadata) { + LoggingSink::Entry entry; + if (metadata != nullptr) { + entry.is_trailer_only = metadata->get(GrpcTrailersOnly()).value_or(false); + if (is_client) { if (auto* value = metadata->get_pointer(PeerString())) { peer_ = PeerStringToAddress(*value); } } - SetCommonEntryFields(&entry, is_client, tracer, - LoggingSink::Entry::EventType::kClientHeader); + } + SetCommonEntryFields(&entry, is_client, tracer, + LoggingSink::Entry::EventType::kServerHeader); + if (metadata != nullptr) { MetadataEncoder encoder(&entry.payload, nullptr, config_.max_metadata_bytes()); metadata->Encode(&encoder); entry.payload_truncated = encoder.truncated(); - g_logging_sink->LogEntry(std::move(entry)); - } - - void LogClientHalfClose(bool is_client, - CallTracerAnnotationInterface* tracer) { - LoggingSink::Entry entry; - SetCommonEntryFields(&entry, is_client, tracer, - LoggingSink::Entry::EventType::kClientHalfClose); - g_logging_sink->LogEntry(std::move(entry)); - } - - void LogServerHeader(bool is_client, CallTracerAnnotationInterface* tracer, - const ServerMetadata* metadata) { - LoggingSink::Entry entry; - if (metadata != nullptr) { - entry.is_trailer_only = metadata->get(GrpcTrailersOnly()).value_or(false); - if (is_client) { - if (auto* value = metadata->get_pointer(PeerString())) { - peer_ = PeerStringToAddress(*value); - } - } - } - SetCommonEntryFields(&entry, is_client, tracer, - LoggingSink::Entry::EventType::kServerHeader); - if (metadata != nullptr) { - MetadataEncoder encoder(&entry.payload, nullptr, - config_.max_metadata_bytes()); - metadata->Encode(&encoder); - entry.payload_truncated = encoder.truncated(); - } - g_logging_sink->LogEntry(std::move(entry)); } + g_logging_sink->LogEntry(std::move(entry)); +} - void LogServerTrailer(bool is_client, CallTracerAnnotationInterface* tracer, - const ServerMetadata* metadata) { - LoggingSink::Entry entry; - SetCommonEntryFields(&entry, is_client, tracer, - LoggingSink::Entry::EventType::kServerTrailer); - if (metadata != nullptr) { - entry.is_trailer_only = metadata->get(GrpcTrailersOnly()).value_or(false); - MetadataEncoder encoder(&entry.payload, &entry.payload.status_details, - config_.max_metadata_bytes()); - metadata->Encode(&encoder); - entry.payload_truncated = encoder.truncated(); - } - g_logging_sink->LogEntry(std::move(entry)); +void CallData::LogServerTrailer(bool is_client, + CallTracerAnnotationInterface* tracer, + const ServerMetadata* metadata) { + LoggingSink::Entry entry; + SetCommonEntryFields(&entry, is_client, tracer, + LoggingSink::Entry::EventType::kServerTrailer); + if (metadata != nullptr) { + entry.is_trailer_only = metadata->get(GrpcTrailersOnly()).value_or(false); + MetadataEncoder encoder(&entry.payload, &entry.payload.status_details, + config_.max_metadata_bytes()); + metadata->Encode(&encoder); + entry.payload_truncated = encoder.truncated(); } + g_logging_sink->LogEntry(std::move(entry)); +} - void LogClientMessage(bool is_client, CallTracerAnnotationInterface* tracer, - const SliceBuffer* message) { - LoggingSink::Entry entry; - SetCommonEntryFields(&entry, is_client, tracer, - LoggingSink::Entry::EventType::kClientMessage); - EncodeMessageToPayload(message, config_.max_message_bytes(), &entry); - g_logging_sink->LogEntry(std::move(entry)); - } +void CallData::LogClientMessage(bool is_client, + CallTracerAnnotationInterface* tracer, + const SliceBuffer* message) { + LoggingSink::Entry entry; + SetCommonEntryFields(&entry, is_client, tracer, + LoggingSink::Entry::EventType::kClientMessage); + EncodeMessageToPayload(message, config_.max_message_bytes(), &entry); + g_logging_sink->LogEntry(std::move(entry)); +} - void LogServerMessage(bool is_client, CallTracerAnnotationInterface* tracer, - const SliceBuffer* message) { - LoggingSink::Entry entry; - SetCommonEntryFields(&entry, is_client, tracer, - LoggingSink::Entry::EventType::kServerMessage); - EncodeMessageToPayload(message, config_.max_message_bytes(), &entry); - g_logging_sink->LogEntry(std::move(entry)); - } +void CallData::LogServerMessage(bool is_client, + CallTracerAnnotationInterface* tracer, + const SliceBuffer* message) { + LoggingSink::Entry entry; + SetCommonEntryFields(&entry, is_client, tracer, + LoggingSink::Entry::EventType::kServerMessage); + EncodeMessageToPayload(message, config_.max_message_bytes(), &entry); + g_logging_sink->LogEntry(std::move(entry)); +} - void LogCancel(bool is_client, CallTracerAnnotationInterface* tracer) { - LoggingSink::Entry entry; - SetCommonEntryFields(&entry, is_client, tracer, - LoggingSink::Entry::EventType::kCancel); - g_logging_sink->LogEntry(std::move(entry)); - } +void CallData::LogCancel(bool is_client, + CallTracerAnnotationInterface* tracer) { + LoggingSink::Entry entry; + SetCommonEntryFields(&entry, is_client, tracer, + LoggingSink::Entry::EventType::kCancel); + g_logging_sink->LogEntry(std::move(entry)); +} - private: - void SetCommonEntryFields(LoggingSink::Entry* entry, bool is_client, - CallTracerAnnotationInterface* tracer, - LoggingSink::Entry::EventType event_type) { - entry->call_id = call_id_; - entry->sequence_id = sequence_id_++; - entry->type = event_type; - entry->logger = is_client ? LoggingSink::Entry::Logger::kClient - : LoggingSink::Entry::Logger::kServer; - entry->authority = authority_; - entry->peer = peer_; - entry->service_name = service_name_; - entry->method_name = method_name_; - entry->timestamp = Timestamp::Now(); - if (tracer != nullptr) { - entry->trace_id = tracer->TraceId(); - entry->span_id = tracer->SpanId(); - entry->is_sampled = tracer->IsSampled(); - } +void CallData::SetCommonEntryFields(LoggingSink::Entry* entry, bool is_client, + CallTracerAnnotationInterface* tracer, + LoggingSink::Entry::EventType event_type) { + entry->call_id = call_id_; + entry->sequence_id = sequence_id_++; + entry->type = event_type; + entry->logger = is_client ? LoggingSink::Entry::Logger::kClient + : LoggingSink::Entry::Logger::kServer; + entry->authority = authority_; + entry->peer = peer_; + entry->service_name = service_name_; + entry->method_name = method_name_; + entry->timestamp = Timestamp::Now(); + if (tracer != nullptr) { + entry->trace_id = tracer->TraceId(); + entry->span_id = tracer->SpanId(); + entry->is_sampled = tracer->IsSampled(); } - absl::uint128 call_id_; - uint32_t sequence_id_ = 0; - std::string service_name_; - std::string method_name_; - std::string authority_; - LoggingSink::Entry::Address peer_; - LoggingSink::Config config_; -}; +} -} // namespace +} // namespace logging_filter_detail absl::StatusOr> ClientLoggingFilter::Create(const ChannelArgs& args, @@ -361,84 +361,55 @@ ClientLoggingFilter::Create(const ChannelArgs& args, return std::make_unique(""); } -// Construct a promise for one call. -ArenaPromise ClientLoggingFilter::MakeCallPromise( - CallArgs call_args, NextPromiseFactory next_promise_factory) { - CallData* calld = GetContext()->ManagedNew( - true, call_args, default_authority_); - if (!calld->ShouldLog()) { - return next_promise_factory(std::move(call_args)); +void ClientLoggingFilter::Call::OnClientInitialMetadata( + ClientMetadata& md, ClientLoggingFilter* filter) { + call_data_.emplace(true, md, filter->default_authority_); + if (!call_data_->ShouldLog()) { + call_data_.reset(); + return; + } + call_data_->LogClientHeader( + /*is_client=*/true, GetContext(), md); +} + +void ClientLoggingFilter::Call::OnServerInitialMetadata(ServerMetadata& md) { + if (!call_data_.has_value()) return; + call_data_->LogServerHeader( + /*is_client=*/true, GetContext(), &md); +} + +void ClientLoggingFilter::Call::OnServerTrailingMetadata(ServerMetadata& md) { + if (!call_data_.has_value()) return; + if (md.get(GrpcCallWasCancelled()).value_or(false) && + md.get(GrpcStatusMetadata()) == GRPC_STATUS_CANCELLED) { + call_data_->LogCancel( + /*is_client=*/true, GetContext()); + return; } - calld->LogClientHeader( - /*is_client=*/true, - static_cast( - GetContext() - [GRPC_CONTEXT_CALL_TRACER_ANNOTATION_INTERFACE] - .value), - call_args.client_initial_metadata); - call_args.server_initial_metadata->InterceptAndMap( - [calld](ServerMetadataHandle metadata) { - calld->LogServerHeader( - /*is_client=*/true, - static_cast( - GetContext() - [GRPC_CONTEXT_CALL_TRACER_ANNOTATION_INTERFACE] - .value), - metadata.get()); - return metadata; - }); - call_args.client_to_server_messages->InterceptAndMapWithHalfClose( - [calld](MessageHandle message) { - calld->LogClientMessage( - /*is_client=*/true, - static_cast( - GetContext() - [GRPC_CONTEXT_CALL_TRACER_ANNOTATION_INTERFACE] - .value), - message->payload()); - return message; - }, - [calld] { - calld->LogClientHalfClose( - /*is_client=*/true, - static_cast( - GetContext() - [GRPC_CONTEXT_CALL_TRACER_ANNOTATION_INTERFACE] - .value)); - }); - call_args.server_to_client_messages->InterceptAndMap( - [calld](MessageHandle message) { - calld->LogServerMessage( - /*is_client=*/true, - static_cast( - GetContext() - [GRPC_CONTEXT_CALL_TRACER_ANNOTATION_INTERFACE] - .value), - message->payload()); - return message; - }); - return OnCancel( - Map(next_promise_factory(std::move(call_args)), - [calld](ServerMetadataHandle md) { - calld->LogServerTrailer( - /*is_client=*/true, - static_cast( - GetContext() - [GRPC_CONTEXT_CALL_TRACER_ANNOTATION_INTERFACE] - .value), - md.get()); - return md; - }), - // TODO(yashykt/ctiller): GetContext is not - // valid for the cancellation function requiring us to capture it here. - // This ought to be easy to fix once client side promises are completely - // rolled out. - [calld, ctx = GetContext()]() { - calld->LogCancel( - /*is_client=*/true, - static_cast( - ctx[GRPC_CONTEXT_CALL_TRACER_ANNOTATION_INTERFACE].value)); - }); + call_data_->LogServerTrailer( + /*is_client=*/true, GetContext(), &md); +} + +void ClientLoggingFilter::Call::OnClientToServerMessage( + const Message& message) { + if (!call_data_.has_value()) return; + call_data_->LogClientMessage( + /*is_client=*/true, GetContext(), + message.payload()); +} + +void ClientLoggingFilter::Call::OnClientToServerHalfClose() { + if (!call_data_.has_value()) return; + call_data_->LogClientHalfClose( + /*is_client=*/true, GetContext()); +} + +void ClientLoggingFilter::Call::OnServerToClientMessage( + const Message& message) { + if (!call_data_.has_value()) return; + call_data_->LogServerMessage( + /*is_client=*/true, GetContext(), + message.payload()); } const grpc_channel_filter ClientLoggingFilter::kFilter = @@ -454,79 +425,54 @@ ServerLoggingFilter::Create(const ChannelArgs& /*args*/, } // Construct a promise for one call. -ArenaPromise ServerLoggingFilter::MakeCallPromise( - CallArgs call_args, NextPromiseFactory next_promise_factory) { - CallData* calld = GetContext()->ManagedNew( - false, call_args, /*default_authority=*/""); - if (!calld->ShouldLog()) { - return next_promise_factory(std::move(call_args)); +void ServerLoggingFilter::Call::OnClientInitialMetadata(ClientMetadata& md) { + call_data_.emplace(false, md, ""); + if (!call_data_->ShouldLog()) { + call_data_.reset(); + return; } - auto* call_tracer = static_cast( - GetContext() - [GRPC_CONTEXT_CALL_TRACER_ANNOTATION_INTERFACE] - .value); - calld->LogClientHeader( - /*is_client=*/false, call_tracer, call_args.client_initial_metadata); - call_args.server_initial_metadata->InterceptAndMap( - [calld](ServerMetadataHandle metadata) { - calld->LogServerHeader( - /*is_client=*/false, - static_cast( - GetContext() - [GRPC_CONTEXT_CALL_TRACER_ANNOTATION_INTERFACE] - .value), - metadata.get()); - return metadata; - }); - call_args.client_to_server_messages->InterceptAndMapWithHalfClose( - [calld](MessageHandle message) { - calld->LogClientMessage( - /*is_client=*/false, - static_cast( - GetContext() - [GRPC_CONTEXT_CALL_TRACER_ANNOTATION_INTERFACE] - .value), - message->payload()); - return message; - }, - [calld] { - calld->LogClientHalfClose( - /*is_client=*/false, - static_cast( - GetContext() - [GRPC_CONTEXT_CALL_TRACER_ANNOTATION_INTERFACE] - .value)); - }); - call_args.server_to_client_messages->InterceptAndMap( - [calld](MessageHandle message) { - calld->LogServerMessage( - /*is_client=*/false, - static_cast( - GetContext() - [GRPC_CONTEXT_CALL_TRACER_ANNOTATION_INTERFACE] - .value), - message->payload()); - return message; - }); - return OnCancel( - Map(next_promise_factory(std::move(call_args)), - [calld](ServerMetadataHandle md) { - calld->LogServerTrailer( - /*is_client=*/false, - static_cast( - GetContext() - [GRPC_CONTEXT_CALL_TRACER_ANNOTATION_INTERFACE] - .value), - md.get()); - return md; - }), - // TODO(yashykt/ctiller): GetContext is not - // valid for the cancellation function requiring us to capture - // call_tracer. - [calld, call_tracer]() { - calld->LogCancel( - /*is_client=*/false, call_tracer); - }); + call_data_->LogClientHeader( + /*is_client=*/false, GetContext(), md); +} + +void ServerLoggingFilter::Call::OnServerInitialMetadata(ServerMetadata& md) { + if (!call_data_.has_value()) return; + call_data_->LogServerHeader( + /*is_client=*/false, GetContext(), &md); +} + +void ServerLoggingFilter::Call::OnServerTrailingMetadata(ServerMetadata& md) { + if (!call_data_.has_value()) return; + if (md.get(GrpcCallWasCancelled()).value_or(false) && + md.get(GrpcStatusMetadata()) == GRPC_STATUS_CANCELLED) { + call_data_->LogCancel( + /*is_client=*/false, GetContext()); + return; + } + call_data_->LogServerTrailer( + /*is_client=*/false, GetContext(), &md); +} + +void ServerLoggingFilter::Call::OnClientToServerMessage( + const Message& message) { + if (!call_data_.has_value()) return; + call_data_->LogClientMessage( + /*is_client=*/false, GetContext(), + message.payload()); +} + +void ServerLoggingFilter::Call::OnClientToServerHalfClose() { + if (!call_data_.has_value()) return; + call_data_->LogClientHalfClose( + /*is_client=*/false, GetContext()); +} + +void ServerLoggingFilter::Call::OnServerToClientMessage( + const Message& message) { + if (!call_data_.has_value()) return; + call_data_->LogServerMessage( + /*is_client=*/false, GetContext(), + message.payload()); } const grpc_channel_filter ServerLoggingFilter::kFilter = @@ -539,11 +485,11 @@ void RegisterLoggingFilter(LoggingSink* sink) { g_logging_sink = sink; CoreConfiguration::RegisterBuilder([](CoreConfiguration::Builder* builder) { builder->channel_init() - ->RegisterFilter(GRPC_SERVER_CHANNEL) + ->RegisterV2Filter(GRPC_SERVER_CHANNEL) // TODO(yashykt) : Figure out a good place to place this channel arg .IfChannelArg("grpc.experimental.enable_observability", true); builder->channel_init() - ->RegisterFilter(GRPC_CLIENT_CHANNEL) + ->RegisterV2Filter(GRPC_CLIENT_CHANNEL) // TODO(yashykt) : Figure out a good place to place this channel arg .IfChannelArg("grpc.experimental.enable_observability", true); }); diff --git a/src/core/ext/filters/logging/logging_filter.h b/src/core/ext/filters/logging/logging_filter.h index 7d42abbc337..30c28a5b57a 100644 --- a/src/core/ext/filters/logging/logging_filter.h +++ b/src/core/ext/filters/logging/logging_filter.h @@ -35,7 +35,46 @@ namespace grpc_core { -class ClientLoggingFilter final : public ChannelFilter { +namespace logging_filter_detail { + +class CallData { + public: + CallData(bool is_client, const ClientMetadata& client_initial_metadata, + const std::string& authority); + + bool ShouldLog() { return config_.ShouldLog(); } + + void LogClientHeader(bool is_client, CallTracerAnnotationInterface* tracer, + const ClientMetadata& metadata); + void LogClientHalfClose(bool is_client, + CallTracerAnnotationInterface* tracer); + void LogServerHeader(bool is_client, CallTracerAnnotationInterface* tracer, + const ServerMetadata* metadata); + void LogServerTrailer(bool is_client, CallTracerAnnotationInterface* tracer, + const ServerMetadata* metadata); + void LogClientMessage(bool is_client, CallTracerAnnotationInterface* tracer, + const SliceBuffer* message); + void LogServerMessage(bool is_client, CallTracerAnnotationInterface* tracer, + const SliceBuffer* message); + void LogCancel(bool is_client, CallTracerAnnotationInterface* tracer); + + private: + void SetCommonEntryFields(LoggingSink::Entry* entry, bool is_client, + CallTracerAnnotationInterface* tracer, + LoggingSink::Entry::EventType event_type); + absl::uint128 call_id_; + uint32_t sequence_id_ = 0; + std::string service_name_; + std::string method_name_; + std::string authority_; + LoggingSink::Entry::Address peer_; + LoggingSink::Config config_; +}; + +} // namespace logging_filter_detail + +class ClientLoggingFilter final + : public ImplementChannelFilter { public: static const grpc_channel_filter kFilter; @@ -45,24 +84,46 @@ class ClientLoggingFilter final : public ChannelFilter { explicit ClientLoggingFilter(std::string default_authority) : default_authority_(std::move(default_authority)) {} - // Construct a promise for one call. - ArenaPromise MakeCallPromise( - CallArgs call_args, NextPromiseFactory next_promise_factory) override; + class Call { + public: + void OnClientInitialMetadata(ClientMetadata& md, + ClientLoggingFilter* filter); + void OnServerInitialMetadata(ServerMetadata& md); + void OnServerTrailingMetadata(ServerMetadata& md); + void OnClientToServerMessage(const Message& message); + void OnClientToServerHalfClose(); + void OnServerToClientMessage(const Message& message); + static const NoInterceptor OnFinalize; + + private: + absl::optional call_data_; + }; private: const std::string default_authority_; }; -class ServerLoggingFilter final : public ChannelFilter { +class ServerLoggingFilter final + : public ImplementChannelFilter { public: static const grpc_channel_filter kFilter; static absl::StatusOr> Create( const ChannelArgs& args, ChannelFilter::Args /*filter_args*/); - // Construct a promise for one call. - ArenaPromise MakeCallPromise( - CallArgs call_args, NextPromiseFactory next_promise_factory) override; + class Call { + public: + void OnClientInitialMetadata(ClientMetadata& md); + void OnServerInitialMetadata(ServerMetadata& md); + void OnServerTrailingMetadata(ServerMetadata& md); + void OnClientToServerMessage(const Message& message); + void OnClientToServerHalfClose(); + void OnServerToClientMessage(const Message& message); + static const NoInterceptor OnFinalize; + + private: + absl::optional call_data_; + }; }; void RegisterLoggingFilter(LoggingSink* sink); diff --git a/src/core/ext/filters/logging/logging_sink.h b/src/core/ext/filters/logging/logging_sink.h index b4bf47b3c8c..b013cd9072e 100644 --- a/src/core/ext/filters/logging/logging_sink.h +++ b/src/core/ext/filters/logging/logging_sink.h @@ -27,6 +27,7 @@ #include #include "absl/numeric/int128.h" +#include "absl/strings/str_cat.h" #include "absl/strings/string_view.h" #include "src/core/lib/gprpp/time.h" @@ -73,8 +74,42 @@ class LoggingSink { kCancel }; + static std::string EventTypeString(EventType type) { + switch (type) { + case EventType::kUnknown: + return "UNKNOWN"; + case EventType::kClientHeader: + return "CLIENT_HEADER"; + case EventType::kServerHeader: + return "SERVER_HEADER"; + case EventType::kClientMessage: + return "CLIENT_MESSAGE"; + case EventType::kServerMessage: + return "SERVER_MESSAGE"; + case EventType::kClientHalfClose: + return "CLIENT_HALF_CLOSE"; + case EventType::kServerTrailer: + return "SERVER_TRAILER"; + case EventType::kCancel: + return "CANCEL"; + } + return absl::StrCat("INVALID(", static_cast(type), ")"); + } + enum class Logger { kUnknown = 0, kClient, kServer }; + static std::string LoggerString(Logger logger) { + switch (logger) { + case Logger::kUnknown: + return "UNKNOWN"; + case Logger::kClient: + return "CLIENT"; + case Logger::kServer: + return "SERVER"; + } + return absl::StrCat("INVALID(", static_cast(logger), ")"); + } + struct Payload { std::map metadata; Duration timeout; @@ -118,6 +153,16 @@ class LoggingSink { virtual void LogEntry(Entry entry) = 0; }; +inline std::ostream& operator<<(std::ostream& out, + const LoggingSink::Entry::EventType& type) { + return out << LoggingSink::Entry::EventTypeString(type); +} + +inline std::ostream& operator<<(std::ostream& out, + const LoggingSink::Entry::Logger& logger) { + return out << LoggingSink::Entry::LoggerString(logger); +} + } // namespace grpc_core #endif // GRPC_SRC_CORE_EXT_FILTERS_LOGGING_LOGGING_SINK_H diff --git a/src/core/ext/filters/message_size/message_size_filter.cc b/src/core/ext/filters/message_size/message_size_filter.cc index 379d4944788..2c73c63a370 100644 --- a/src/core/ext/filters/message_size/message_size_filter.cc +++ b/src/core/ext/filters/message_size/message_size_filter.cc @@ -29,7 +29,6 @@ #include #include -#include "src/core/ext/filters/deadline/deadline_filter.h" #include "src/core/lib/channel/channel_args.h" #include "src/core/lib/channel/channel_stack.h" #include "src/core/lib/config/core_configuration.h" @@ -52,10 +51,12 @@ namespace grpc_core { const NoInterceptor ClientMessageSizeFilter::Call::OnClientInitialMetadata; const NoInterceptor ClientMessageSizeFilter::Call::OnServerInitialMetadata; const NoInterceptor ClientMessageSizeFilter::Call::OnServerTrailingMetadata; +const NoInterceptor ClientMessageSizeFilter::Call::OnClientToServerHalfClose; const NoInterceptor ClientMessageSizeFilter::Call::OnFinalize; const NoInterceptor ServerMessageSizeFilter::Call::OnClientInitialMetadata; const NoInterceptor ServerMessageSizeFilter::Call::OnServerInitialMetadata; const NoInterceptor ServerMessageSizeFilter::Call::OnServerTrailingMetadata; +const NoInterceptor ServerMessageSizeFilter::Call::OnClientToServerHalfClose; const NoInterceptor ServerMessageSizeFilter::Call::OnFinalize; // @@ -250,18 +251,10 @@ void RegisterMessageSizeFilter(CoreConfiguration::Builder* builder) { builder->channel_init() ->RegisterFilter(GRPC_CLIENT_DIRECT_CHANNEL) .ExcludeFromMinimalStack() - .If(HasMessageSizeLimits) - // TODO(ctiller): ordering constraint is here to match the ordering that - // existed prior to ordering constraints did. Re-examine the ordering of - // filters from first principles. - .Before({&grpc_client_deadline_filter}); + .If(HasMessageSizeLimits); builder->channel_init() ->RegisterFilter(GRPC_SERVER_CHANNEL) .ExcludeFromMinimalStack() - .If(HasMessageSizeLimits) - // TODO(ctiller): ordering constraint is here to match the ordering that - // existed prior to ordering constraints did. Re-examine the ordering of - // filters from first principles. - .Before({&grpc_server_deadline_filter}); + .If(HasMessageSizeLimits); } } // namespace grpc_core diff --git a/src/core/ext/filters/message_size/message_size_filter.h b/src/core/ext/filters/message_size/message_size_filter.h index 89d21201a5c..1637bfe3561 100644 --- a/src/core/ext/filters/message_size/message_size_filter.h +++ b/src/core/ext/filters/message_size/message_size_filter.h @@ -105,6 +105,7 @@ class ServerMessageSizeFilter final static const NoInterceptor OnFinalize; ServerMetadataHandle OnClientToServerMessage( const Message& message, ServerMessageSizeFilter* filter); + static const NoInterceptor OnClientToServerHalfClose; ServerMetadataHandle OnServerToClientMessage( const Message& message, ServerMessageSizeFilter* filter); }; @@ -133,6 +134,7 @@ class ClientMessageSizeFilter final static const NoInterceptor OnServerTrailingMetadata; static const NoInterceptor OnFinalize; ServerMetadataHandle OnClientToServerMessage(const Message& message); + static const NoInterceptor OnClientToServerHalfClose; ServerMetadataHandle OnServerToClientMessage(const Message& message); private: diff --git a/src/core/ext/filters/rbac/rbac_filter.cc b/src/core/ext/filters/rbac/rbac_filter.cc index 7c75f46ae7d..c89c6962e19 100644 --- a/src/core/ext/filters/rbac/rbac_filter.cc +++ b/src/core/ext/filters/rbac/rbac_filter.cc @@ -46,6 +46,7 @@ namespace grpc_core { const NoInterceptor RbacFilter::Call::OnServerInitialMetadata; const NoInterceptor RbacFilter::Call::OnServerTrailingMetadata; const NoInterceptor RbacFilter::Call::OnClientToServerMessage; +const NoInterceptor RbacFilter::Call::OnClientToServerHalfClose; const NoInterceptor RbacFilter::Call::OnServerToClientMessage; const NoInterceptor RbacFilter::Call::OnFinalize; diff --git a/src/core/ext/filters/rbac/rbac_filter.h b/src/core/ext/filters/rbac/rbac_filter.h index a4c41cbdd0b..d033b799d5f 100644 --- a/src/core/ext/filters/rbac/rbac_filter.h +++ b/src/core/ext/filters/rbac/rbac_filter.h @@ -55,6 +55,7 @@ class RbacFilter : public ImplementChannelFilter { static const NoInterceptor OnServerInitialMetadata; static const NoInterceptor OnServerTrailingMetadata; static const NoInterceptor OnClientToServerMessage; + static const NoInterceptor OnClientToServerHalfClose; static const NoInterceptor OnServerToClientMessage; static const NoInterceptor OnFinalize; }; diff --git a/src/core/ext/filters/stateful_session/stateful_session_filter.cc b/src/core/ext/filters/stateful_session/stateful_session_filter.cc index b64affbb61f..f383f3fb9ed 100644 --- a/src/core/ext/filters/stateful_session/stateful_session_filter.cc +++ b/src/core/ext/filters/stateful_session/stateful_session_filter.cc @@ -27,6 +27,7 @@ #include #include +#include "absl/log/check.h" #include "absl/strings/escaping.h" #include "absl/strings/match.h" #include "absl/strings/str_cat.h" @@ -59,6 +60,7 @@ namespace grpc_core { TraceFlag grpc_stateful_session_filter_trace(false, "stateful_session_filter"); const NoInterceptor StatefulSessionFilter::Call::OnClientToServerMessage; +const NoInterceptor StatefulSessionFilter::Call::OnClientToServerHalfClose; const NoInterceptor StatefulSessionFilter::Call::OnServerToClientMessage; const NoInterceptor StatefulSessionFilter::Call::OnFinalize; @@ -143,7 +145,7 @@ absl::string_view GetClusterToUse( // Get cluster assigned by the XdsConfigSelector. auto cluster_attribute = service_config_call_data->GetCallAttribute(); - GPR_ASSERT(cluster_attribute != nullptr); + CHECK_NE(cluster_attribute, nullptr); auto current_cluster = cluster_attribute->cluster(); static constexpr absl::string_view kClusterPrefix = "cluster:"; // If prefix is not "cluster:", then we can't use cluster override. @@ -157,7 +159,7 @@ absl::string_view GetClusterToUse( // Use cluster from the cookie if it is configured for the route. auto route_data = service_config_call_data->GetCallAttribute(); - GPR_ASSERT(route_data != nullptr); + CHECK_NE(route_data, nullptr); // Cookie cluster was not configured for route - use the one from the // attribute if (!route_data->HasClusterForRoute(cluster_from_cookie)) { @@ -202,7 +204,7 @@ bool IsConfiguredPath(absl::string_view configured_path, // Check to see if the configured path matches the request path. const Slice* path_slice = client_initial_metadata.get_pointer(HttpPathMetadata()); - GPR_ASSERT(path_slice != nullptr); + CHECK_NE(path_slice, nullptr); absl::string_view path = path_slice->as_string_view(); // Matching criteria from // https://www.rfc-editor.org/rfc/rfc6265#section-5.1.4. @@ -227,13 +229,13 @@ void StatefulSessionFilter::Call::OnClientInitialMetadata( GetContext< grpc_call_context_element>()[GRPC_CONTEXT_SERVICE_CONFIG_CALL_DATA] .value); - GPR_ASSERT(service_config_call_data != nullptr); + CHECK_NE(service_config_call_data, nullptr); auto* method_params = static_cast( service_config_call_data->GetMethodParsedConfig( filter->service_config_parser_index_)); - GPR_ASSERT(method_params != nullptr); + CHECK_NE(method_params, nullptr); cookie_config_ = method_params->GetConfig(filter->index_); - GPR_ASSERT(cookie_config_ != nullptr); + CHECK_NE(cookie_config_, nullptr); if (!cookie_config_->name.has_value() || !IsConfiguredPath(cookie_config_->path, md)) { return; diff --git a/src/core/ext/filters/stateful_session/stateful_session_filter.h b/src/core/ext/filters/stateful_session/stateful_session_filter.h index 5cd534843aa..64c488bce33 100644 --- a/src/core/ext/filters/stateful_session/stateful_session_filter.h +++ b/src/core/ext/filters/stateful_session/stateful_session_filter.h @@ -86,6 +86,7 @@ class StatefulSessionFilter void OnServerInitialMetadata(ServerMetadata& md); void OnServerTrailingMetadata(ServerMetadata& md); static const NoInterceptor OnClientToServerMessage; + static const NoInterceptor OnClientToServerHalfClose; static const NoInterceptor OnServerToClientMessage; static const NoInterceptor OnFinalize; diff --git a/src/core/ext/gcp/metadata_query.cc b/src/core/ext/gcp/metadata_query.cc index 212a7639a03..dd2e0603641 100644 --- a/src/core/ext/gcp/metadata_query.cc +++ b/src/core/ext/gcp/metadata_query.cc @@ -23,6 +23,8 @@ #include #include +#include "absl/log/check.h" +#include "absl/log/log.h" #include "absl/status/status.h" #include "absl/status/statusor.h" #include "absl/strings/str_format.h" @@ -73,7 +75,7 @@ MetadataQuery::MetadataQuery( GRPC_CLOSURE_INIT(&on_done_, OnDone, this, nullptr); auto uri = URI::Create("http", std::move(metadata_server_name), attribute_, {} /* query params */, "" /* fragment */); - GPR_ASSERT(uri.ok()); // params are hardcoded + CHECK(uri.ok()); // params are hardcoded grpc_http_request request; memset(&request, 0, sizeof(grpc_http_request)); grpc_http_header header = {const_cast("Metadata-Flavor"), @@ -119,7 +121,7 @@ void MetadataQuery::OnDone(void* arg, grpc_error_handle error) { absl::StrFormat("MetadataServer Could not parse zone: %s", std::string(body).c_str())); if (GRPC_TRACE_FLAG_ENABLED(grpc_metadata_query_trace)) { - gpr_log(GPR_INFO, "%s", result.status().ToString().c_str()); + LOG(INFO) << result.status().ToString(); } } else { result = std::string(body.substr(pos + 1)); diff --git a/src/core/ext/transport/binder/.clang-format b/src/core/ext/transport/binder/.clang-format index 64387e9e515..5f150ef6edb 100644 --- a/src/core/ext/transport/binder/.clang-format +++ b/src/core/ext/transport/binder/.clang-format @@ -5,9 +5,6 @@ DerivePointerAlignment: false PointerAlignment: Left IncludeBlocks: Regroup IncludeCategories: - # port_platform.h is before almost everything - - Regex: '^' - Priority: -100 # ruby.h is even more first if it's included - Regex: '^' Priority: -200 diff --git a/src/core/ext/transport/binder/client/binder_connector.cc b/src/core/ext/transport/binder/client/binder_connector.cc index 0c3db89927c..2dcb0e03746 100644 --- a/src/core/ext/transport/binder/client/binder_connector.cc +++ b/src/core/ext/transport/binder/client/binder_connector.cc @@ -33,6 +33,8 @@ #include #include +#include "absl/log/check.h" + #include #include "src/core/client_channel/connector.h" @@ -60,21 +62,21 @@ class BinderConnector : public grpc_core::SubchannelConnector { size_t id_length = args.address->len - sizeof(un->sun_family); // The c-style string at least will have a null terminator, and the // connection id itself should not be empty - GPR_ASSERT(id_length >= 2); + CHECK_GE(id_length, 2u); // Make sure there is null terminator at the expected location before // reading from it - GPR_ASSERT(un->sun_path[id_length - 1] == '\0'); + CHECK_EQ(un->sun_path[id_length - 1], '\0'); conn_id_ = un->sun_path; } #else - GPR_ASSERT(0); + CHECK(0); #endif gpr_log(GPR_INFO, "BinderConnector %p conn_id_ = %s", this, conn_id_.c_str()); args_ = args; - GPR_ASSERT(notify_ == nullptr); - GPR_ASSERT(notify != nullptr); + CHECK_EQ(notify_, nullptr); + CHECK_NE(notify, nullptr); notify_ = notify; result_ = result; @@ -86,15 +88,15 @@ class BinderConnector : public grpc_core::SubchannelConnector { } void OnConnected(std::unique_ptr endpoint_binder) { - GPR_ASSERT(endpoint_binder != nullptr); + CHECK(endpoint_binder != nullptr); grpc_core::Transport* transport = grpc_create_binder_transport_client( std::move(endpoint_binder), grpc_binder::GetSecurityPolicySetting()->Get(conn_id_)); - GPR_ASSERT(transport != nullptr); + CHECK_NE(transport, nullptr); result_->channel_args = args_.channel_args; result_->transport = transport; - GPR_ASSERT(notify_ != nullptr); + CHECK_NE(notify_, nullptr); // ExecCtx is required here for running grpc_closure because this callback // might be invoked from non-gRPC code if (grpc_core::ExecCtx::Get() == nullptr) { diff --git a/src/core/ext/transport/binder/client/binder_connector.h b/src/core/ext/transport/binder/client/binder_connector.h index 4a350251677..e054e3555c5 100644 --- a/src/core/ext/transport/binder/client/binder_connector.h +++ b/src/core/ext/transport/binder/client/binder_connector.h @@ -15,8 +15,6 @@ #ifndef GRPC_SRC_CORE_EXT_TRANSPORT_BINDER_CLIENT_BINDER_CONNECTOR_H #define GRPC_SRC_CORE_EXT_TRANSPORT_BINDER_CLIENT_BINDER_CONNECTOR_H -#include - #include #include @@ -24,6 +22,7 @@ #include "absl/strings/strip.h" #include +#include #include #include diff --git a/src/core/ext/transport/binder/client/channel_create.cc b/src/core/ext/transport/binder/client/channel_create.cc index efae0104b28..9f757f69bc7 100644 --- a/src/core/ext/transport/binder/client/channel_create.cc +++ b/src/core/ext/transport/binder/client/channel_create.cc @@ -34,13 +34,14 @@ #ifdef GPR_SUPPORT_BINDER_TRANSPORT -#include - +#include "absl/log/check.h" +#include "absl/log/log.h" #include "absl/memory/memory.h" #include "absl/strings/substitute.h" #include "absl/time/clock.h" #include "absl/time/time.h" +#include #include #include "src/core/client_channel/client_channel_filter.h" @@ -103,15 +104,15 @@ std::shared_ptr CreateCustomBinderChannel( const ChannelArguments& args) { grpc_init(); - GPR_ASSERT(jni_env_void != nullptr); - GPR_ASSERT(security_policy != nullptr); + CHECK_NE(jni_env_void, nullptr); + CHECK_NE(security_policy, nullptr); // Generate an unique connection ID that identifies this connection (Useful // for mapping connection between Java and C++ code). std::string connection_id = grpc_binder::GetConnectionIdGenerator()->Generate(uri); - gpr_log(GPR_ERROR, "connection id is %s", connection_id.c_str()); + LOG(ERROR) << "connection id is " << connection_id; // After invoking this Java method, Java code will put endpoint binder into // `EndpointBinderPool` after the connection succeeds @@ -164,7 +165,7 @@ std::shared_ptr CreateBinderChannel( "This APK is compiled with Android API level = %d, which is not " "supported. See port_platform.h for supported versions.", __ANDROID_API__); - GPR_ASSERT(0); + CHECK(0); return {}; } @@ -176,7 +177,7 @@ std::shared_ptr CreateCustomBinderChannel( "This APK is compiled with Android API level = %d, which is not " "supported. See port_platform.h for supported versions.", __ANDROID_API__); - GPR_ASSERT(0); + CHECK(0); return {}; } @@ -187,7 +188,7 @@ std::shared_ptr CreateBinderChannel( "This APK is compiled with Android API level = %d, which is not " "supported. See port_platform.h for supported versions.", __ANDROID_API__); - GPR_ASSERT(0); + CHECK(0); return {}; } @@ -199,7 +200,7 @@ std::shared_ptr CreateCustomBinderChannel( "This APK is compiled with Android API level = %d, which is not " "supported. See port_platform.h for supported versions.", __ANDROID_API__); - GPR_ASSERT(0); + CHECK(0); return {}; } @@ -208,7 +209,7 @@ bool InitializeBinderChannelJavaClass(void* jni_env_void) { "This APK is compiled with Android API level = %d, which is not " "supported. See port_platform.h for supported versions.", __ANDROID_API__); - GPR_ASSERT(0); + CHECK(0); return {}; } @@ -218,7 +219,7 @@ bool InitializeBinderChannelJavaClass( "This APK is compiled with Android API level = %d, which is not " "supported. See port_platform.h for supported versions.", __ANDROID_API__); - GPR_ASSERT(0); + CHECK(0); return {}; } diff --git a/src/core/ext/transport/binder/client/channel_create_impl.cc b/src/core/ext/transport/binder/client/channel_create_impl.cc index d9d5208f9a9..197361104b2 100644 --- a/src/core/ext/transport/binder/client/channel_create_impl.cc +++ b/src/core/ext/transport/binder/client/channel_create_impl.cc @@ -12,15 +12,17 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include - #include "src/core/ext/transport/binder/client/channel_create_impl.h" +#include + #ifndef GRPC_NO_BINDER #include #include +#include "absl/log/check.h" + #include "src/core/ext/transport/binder/client/binder_connector.h" #include "src/core/ext/transport/binder/transport/binder_transport.h" #include "src/core/ext/transport/binder/wire_format/binder.h" @@ -50,7 +52,7 @@ grpc_channel* CreateDirectBinderChannelImplForTesting( grpc_core::Transport* transport = grpc_create_binder_transport_client( std::move(endpoint_binder), security_policy); - GPR_ASSERT(transport != nullptr); + CHECK_NE(transport, nullptr); auto channel_args = grpc_core::CoreConfiguration::Get() .channel_args_preconditioning() @@ -60,7 +62,7 @@ grpc_channel* CreateDirectBinderChannelImplForTesting( grpc_core::ChannelCreate("binder_target_placeholder", channel_args, GRPC_CLIENT_DIRECT_CHANNEL, transport); // TODO(mingcl): Handle error properly - GPR_ASSERT(channel.ok()); + CHECK(channel.ok()); grpc_channel_args_destroy(args); return channel->release()->c_ptr(); } diff --git a/src/core/ext/transport/binder/client/channel_create_impl.h b/src/core/ext/transport/binder/client/channel_create_impl.h index 7f00a5e1e09..0cc87a5a62e 100644 --- a/src/core/ext/transport/binder/client/channel_create_impl.h +++ b/src/core/ext/transport/binder/client/channel_create_impl.h @@ -16,7 +16,6 @@ #define GRPC_SRC_CORE_EXT_TRANSPORT_BINDER_CLIENT_CHANNEL_CREATE_IMPL_H #include - #include #include "src/core/ext/transport/binder/wire_format/binder.h" diff --git a/src/core/ext/transport/binder/client/connection_id_generator.cc b/src/core/ext/transport/binder/client/connection_id_generator.cc index f4b4954d8a4..60cba34e31b 100644 --- a/src/core/ext/transport/binder/client/connection_id_generator.cc +++ b/src/core/ext/transport/binder/client/connection_id_generator.cc @@ -12,12 +12,13 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include - #include "src/core/ext/transport/binder/client/connection_id_generator.h" +#include + #ifndef GRPC_NO_BINDER +#include "absl/log/check.h" #include "absl/strings/str_cat.h" namespace { @@ -55,7 +56,7 @@ std::string ConnectionIdGenerator::Generate(absl::string_view uri) { // Insert a hyphen before serial number ret = absl::StrCat(s, "-", ++count_); } - GPR_ASSERT(ret.length() < kPathLengthLimit); + CHECK_LT(ret.length(), kPathLengthLimit); return ret; } diff --git a/src/core/ext/transport/binder/client/connection_id_generator.h b/src/core/ext/transport/binder/client/connection_id_generator.h index de8c780a0a3..d756ec1ced3 100644 --- a/src/core/ext/transport/binder/client/connection_id_generator.h +++ b/src/core/ext/transport/binder/client/connection_id_generator.h @@ -15,12 +15,12 @@ #ifndef GRPC_SRC_CORE_EXT_TRANSPORT_BINDER_CLIENT_CONNECTION_ID_GENERATOR_H #define GRPC_SRC_CORE_EXT_TRANSPORT_BINDER_CLIENT_CONNECTION_ID_GENERATOR_H -#include - #include #include "absl/strings/string_view.h" +#include + #include "src/core/lib/gprpp/sync.h" namespace grpc_binder { diff --git a/src/core/ext/transport/binder/client/endpoint_binder_pool.cc b/src/core/ext/transport/binder/client/endpoint_binder_pool.cc index 6ed85621339..012d7f03063 100644 --- a/src/core/ext/transport/binder/client/endpoint_binder_pool.cc +++ b/src/core/ext/transport/binder/client/endpoint_binder_pool.cc @@ -12,10 +12,13 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include - #include "src/core/ext/transport/binder/client/endpoint_binder_pool.h" +#include "absl/log/check.h" +#include "absl/log/log.h" + +#include + #ifndef GRPC_NO_BINDER #include "src/core/ext/transport/binder/client/jni_utils.h" @@ -34,13 +37,13 @@ Java_io_grpc_binder_cpp_GrpcBinderConnection_notifyConnected__Ljava_lang_String_ JNIEnv* jni_env, jobject, jstring conn_id_jstring, jobject ibinder) { jboolean isCopy; const char* conn_id = jni_env->GetStringUTFChars(conn_id_jstring, &isCopy); - gpr_log(GPR_INFO, "%s invoked with conn_id = %s", __func__, conn_id); - GPR_ASSERT(ibinder != nullptr); + LOG(INFO) << __func__ << " invoked with conn_id = " << conn_id; + CHECK_NE(ibinder, nullptr); grpc_binder::ndk_util::SpAIBinder aibinder = grpc_binder::FromJavaBinder(jni_env, ibinder); - gpr_log(GPR_INFO, "%s got aibinder = %p", __func__, aibinder.get()); + LOG(INFO) << __func__ << " got aibinder = " << aibinder.get(); auto b = std::make_unique(aibinder); - GPR_ASSERT(b != nullptr); + CHECK(b != nullptr); grpc_binder::GetEndpointBinderPool()->AddEndpointBinder(conn_id, std::move(b)); if (isCopy == JNI_TRUE) { @@ -56,40 +59,38 @@ namespace grpc_binder { void EndpointBinderPool::GetEndpointBinder( std::string conn_id, std::function)> cb) { - gpr_log(GPR_INFO, "EndpointBinder requested. conn_id = %s", conn_id.c_str()); + LOG(INFO) << "EndpointBinder requested. conn_id = " << conn_id; std::unique_ptr b; { grpc_core::MutexLock l(&m_); if (binder_map_.count(conn_id)) { b = std::move(binder_map_[conn_id]); binder_map_.erase(conn_id); - GPR_ASSERT(b != nullptr); + CHECK(b != nullptr); } else { if (pending_requests_.count(conn_id) != 0) { - gpr_log(GPR_ERROR, - "Duplicate GetEndpointBinder requested. conn_id = %s", - conn_id.c_str()); + LOG(ERROR) << "Duplicate GetEndpointBinder requested. conn_id = " + << conn_id; return; } pending_requests_[conn_id] = std::move(cb); return; } } - GPR_ASSERT(b != nullptr); + CHECK(b != nullptr); cb(std::move(b)); } void EndpointBinderPool::AddEndpointBinder( std::string conn_id, std::unique_ptr b) { - gpr_log(GPR_INFO, "EndpointBinder added. conn_id = %s", conn_id.c_str()); - GPR_ASSERT(b != nullptr); + LOG(INFO) << "EndpointBinder added. conn_id = " << conn_id; + CHECK(b != nullptr); // cb will be set in the following block if there is a pending callback std::function)> cb = nullptr; { grpc_core::MutexLock l(&m_); if (binder_map_.count(conn_id) != 0) { - gpr_log(GPR_ERROR, "EndpointBinder already in the pool. conn_id = %s", - conn_id.c_str()); + LOG(ERROR) << "EndpointBinder already in the pool. conn_id = " << conn_id; return; } if (pending_requests_.count(conn_id)) { diff --git a/src/core/ext/transport/binder/client/endpoint_binder_pool.h b/src/core/ext/transport/binder/client/endpoint_binder_pool.h index 8b1f27bd421..f3452009b67 100644 --- a/src/core/ext/transport/binder/client/endpoint_binder_pool.h +++ b/src/core/ext/transport/binder/client/endpoint_binder_pool.h @@ -15,13 +15,13 @@ #ifndef GRPC_SRC_CORE_EXT_TRANSPORT_BINDER_CLIENT_ENDPOINT_BINDER_POOL_H #define GRPC_SRC_CORE_EXT_TRANSPORT_BINDER_CLIENT_ENDPOINT_BINDER_POOL_H -#include - #include #include #include "absl/container/flat_hash_map.h" +#include + #include "src/core/ext/transport/binder/wire_format/binder.h" #include "src/core/lib/gprpp/sync.h" diff --git a/src/core/ext/transport/binder/client/jni_utils.cc b/src/core/ext/transport/binder/client/jni_utils.cc index e0e3f59582b..1133604a175 100644 --- a/src/core/ext/transport/binder/client/jni_utils.cc +++ b/src/core/ext/transport/binder/client/jni_utils.cc @@ -12,10 +12,13 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include - #include "src/core/ext/transport/binder/client/jni_utils.h" +#include "absl/log/check.h" +#include "absl/log/log.h" // IWYU pragma: keep + +#include + #ifndef GRPC_NO_BINDER #include @@ -41,7 +44,7 @@ jclass FindNativeConnectionHelper( } jclass global_cl = static_cast(env->NewGlobalRef(cl)); env->DeleteLocalRef(cl); - GPR_ASSERT(global_cl != nullptr); + CHECK_NE(global_cl, nullptr); return global_cl; }; static jclass connection_helper_class = do_find(); @@ -81,7 +84,7 @@ void TryEstablishConnection(JNIEnv* env, jobject application, jmethodID mid = env->GetStaticMethodID(cl, method.c_str(), type.c_str()); if (mid == nullptr) { - gpr_log(GPR_ERROR, "No method id %s", method.c_str()); + LOG(ERROR) << "No method id " << method; } env->CallStaticVoidMethod(cl, mid, application, @@ -105,7 +108,7 @@ void TryEstablishConnectionWithUri(JNIEnv* env, jobject application, jmethodID mid = env->GetStaticMethodID(cl, method.c_str(), type.c_str()); if (mid == nullptr) { - gpr_log(GPR_ERROR, "No method id %s", method.c_str()); + LOG(ERROR) << "No method id " << method; } env->CallStaticVoidMethod(cl, mid, application, @@ -124,7 +127,7 @@ bool IsSignatureMatch(JNIEnv* env, jobject context, int uid1, int uid2) { jmethodID mid = env->GetStaticMethodID(cl, method.c_str(), type.c_str()); if (mid == nullptr) { - gpr_log(GPR_ERROR, "No method id %s", method.c_str()); + LOG(ERROR) << "No method id " << method; } jboolean result = env->CallStaticBooleanMethod(cl, mid, context, uid1, uid2); diff --git a/src/core/ext/transport/binder/client/jni_utils.h b/src/core/ext/transport/binder/client/jni_utils.h index 40c76693d7d..1c809b127c8 100644 --- a/src/core/ext/transport/binder/client/jni_utils.h +++ b/src/core/ext/transport/binder/client/jni_utils.h @@ -17,8 +17,6 @@ #if defined(ANDROID) || defined(__ANDROID__) -#include - #include #include @@ -26,6 +24,8 @@ #include "absl/strings/string_view.h" +#include + namespace grpc_binder { // Finds NativeConnectionHelper Java class and caches it. This is useful because diff --git a/src/core/ext/transport/binder/client/security_policy_setting.cc b/src/core/ext/transport/binder/client/security_policy_setting.cc index d8739142b4e..318b434e6fa 100644 --- a/src/core/ext/transport/binder/client/security_policy_setting.cc +++ b/src/core/ext/transport/binder/client/security_policy_setting.cc @@ -12,6 +12,8 @@ // See the License for the specific language governing permissions and // limitations under the License. +#include "absl/log/check.h" + #include #ifndef GRPC_NO_BINDER @@ -25,14 +27,14 @@ void SecurityPolicySetting::Set( std::shared_ptr security_policy) { grpc_core::MutexLock l(&m_); - GPR_ASSERT(security_policy_map_.count(std::string(connection_id)) == 0); + CHECK_EQ(security_policy_map_.count(std::string(connection_id)), 0u); security_policy_map_[std::string(connection_id)] = security_policy; } std::shared_ptr SecurityPolicySetting::Get(absl::string_view connection_id) { grpc_core::MutexLock l(&m_); - GPR_ASSERT(security_policy_map_.count(std::string(connection_id)) != 0); + CHECK_NE(security_policy_map_.count(std::string(connection_id)), 0u); return security_policy_map_[std::string(connection_id)]; } diff --git a/src/core/ext/transport/binder/client/security_policy_setting.h b/src/core/ext/transport/binder/client/security_policy_setting.h index d7621ff70f1..212603744b9 100644 --- a/src/core/ext/transport/binder/client/security_policy_setting.h +++ b/src/core/ext/transport/binder/client/security_policy_setting.h @@ -15,11 +15,10 @@ #ifndef GRPC_SRC_CORE_EXT_TRANSPORT_BINDER_CLIENT_SECURITY_POLICY_SETTING_H #define GRPC_SRC_CORE_EXT_TRANSPORT_BINDER_CLIENT_SECURITY_POLICY_SETTING_H -#include - #include "absl/container/flat_hash_map.h" #include "absl/strings/string_view.h" +#include #include #include "src/core/lib/gprpp/sync.h" diff --git a/src/core/ext/transport/binder/security_policy/binder_security_policy.cc b/src/core/ext/transport/binder/security_policy/binder_security_policy.cc index a97bb6c9459..bd05a038113 100644 --- a/src/core/ext/transport/binder/security_policy/binder_security_policy.cc +++ b/src/core/ext/transport/binder/security_policy/binder_security_policy.cc @@ -23,6 +23,8 @@ #include #include +#include "absl/log/check.h" + #include #include "src/core/ext/transport/binder/client/jni_utils.h" @@ -61,8 +63,8 @@ JNIEnv* GetEnv(JavaVM* vm) { JNIEnv* result = nullptr; jint attach = vm->AttachCurrentThread(&result, nullptr); - GPR_ASSERT(JNI_OK == attach); - GPR_ASSERT(nullptr != result); + CHECK(JNI_OK == attach); + CHECK_NE(result, nullptr); return result; } } // namespace @@ -70,14 +72,14 @@ JNIEnv* GetEnv(JavaVM* vm) { SameSignatureSecurityPolicy::SameSignatureSecurityPolicy(JavaVM* jvm, jobject context) : jvm_(jvm) { - GPR_ASSERT(jvm != nullptr); - GPR_ASSERT(context != nullptr); + CHECK_NE(jvm, nullptr); + CHECK_NE(context, nullptr); JNIEnv* env = GetEnv(jvm_); // Make sure the context is still valid when IsAuthorized() is called context_ = env->NewGlobalRef(context); - GPR_ASSERT(context_ != nullptr); + CHECK_NE(context_, nullptr); } SameSignatureSecurityPolicy::~SameSignatureSecurityPolicy() { diff --git a/src/core/ext/transport/binder/server/binder_server.cc b/src/core/ext/transport/binder/server/binder_server.cc index 994d8f82cb8..6f4d932f436 100644 --- a/src/core/ext/transport/binder/server/binder_server.cc +++ b/src/core/ext/transport/binder/server/binder_server.cc @@ -12,16 +12,17 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include - #include "src/core/ext/transport/binder/server/binder_server.h" +#include + #ifndef GRPC_NO_BINDER #include #include #include +#include "absl/log/check.h" #include "absl/memory/memory.h" #include @@ -30,8 +31,8 @@ #include "src/core/ext/transport/binder/utils/ndk_binder.h" #include "src/core/ext/transport/binder/wire_format/binder_android.h" #include "src/core/lib/iomgr/exec_ctx.h" -#include "src/core/lib/surface/server.h" #include "src/core/lib/transport/error_utils.h" +#include "src/core/server/server.h" #ifdef GPR_SUPPORT_BINDER_TRANSPORT @@ -159,7 +160,7 @@ class BinderServerListener : public Server::ListenerInterface { on_destroy_done_ = on_destroy_done; } - void Orphan() override { delete this; } + void Orphan() override { Unref(); } ~BinderServerListener() override { ExecCtx::Get()->Flush(); @@ -212,7 +213,7 @@ class BinderServerListener : public Server::ListenerInterface { // grpc_create_binder_transport_server(). Transport* server_transport = grpc_create_binder_transport_server( std::move(client_binder), security_policy_); - GPR_ASSERT(server_transport); + CHECK(server_transport); grpc_error_handle error = server_->SetupTransport( server_transport, nullptr, server_->channel_args(), nullptr); return grpc_error_to_absl_status(error); @@ -239,9 +240,8 @@ bool AddBinderPort(const std::string& addr, grpc_server* server, } std::string conn_id = addr.substr(kBinderUriScheme.size()); Server* core_server = Server::FromC(server); - core_server->AddListener( - OrphanablePtr(new BinderServerListener( - core_server, conn_id, std::move(factory), security_policy))); + core_server->AddListener(MakeOrphanable( + core_server, conn_id, std::move(factory), security_policy)); return true; } diff --git a/src/core/ext/transport/binder/server/binder_server.h b/src/core/ext/transport/binder/server/binder_server.h index c5330d474ed..34f25090c59 100644 --- a/src/core/ext/transport/binder/server/binder_server.h +++ b/src/core/ext/transport/binder/server/binder_server.h @@ -15,20 +15,19 @@ #ifndef GRPC_SRC_CORE_EXT_TRANSPORT_BINDER_SERVER_BINDER_SERVER_H #define GRPC_SRC_CORE_EXT_TRANSPORT_BINDER_SERVER_BINDER_SERVER_H -#include - #include #include "absl/container/flat_hash_map.h" #include "absl/status/status.h" +#include #include #include "src/core/ext/transport/binder/transport/binder_transport.h" #include "src/core/ext/transport/binder/wire_format/binder.h" #include "src/core/lib/iomgr/exec_ctx.h" -#include "src/core/lib/surface/server.h" #include "src/core/lib/transport/error_utils.h" +#include "src/core/server/server.h" // TODO(waynetu): This is part of the public API and should be moved to the // include/ folder. diff --git a/src/core/ext/transport/binder/server/binder_server_credentials.cc b/src/core/ext/transport/binder/server/binder_server_credentials.cc index 03bbe6229e1..0d8f3dd63af 100644 --- a/src/core/ext/transport/binder/server/binder_server_credentials.cc +++ b/src/core/ext/transport/binder/server/binder_server_credentials.cc @@ -12,6 +12,8 @@ // See the License for the specific language governing permissions and // limitations under the License. +#include "absl/log/check.h" + #include #ifndef GRPC_NO_BINDER @@ -59,7 +61,7 @@ class BinderServerCredentialsImpl final : public ServerCredentials { std::shared_ptr BinderServerCredentials( std::shared_ptr security_policy) { - GPR_ASSERT(security_policy != nullptr); + CHECK_NE(security_policy, nullptr); return std::shared_ptr( new BinderServerCredentialsImpl(security_policy)); } diff --git a/src/core/ext/transport/binder/transport/binder_transport.cc b/src/core/ext/transport/binder/transport/binder_transport.cc index aad7b43f213..7c832505d9d 100644 --- a/src/core/ext/transport/binder/transport/binder_transport.cc +++ b/src/core/ext/transport/binder/transport/binder_transport.cc @@ -12,10 +12,10 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include - #include "src/core/ext/transport/binder/transport/binder_transport.h" +#include + #ifndef GRPC_NO_BINDER #include @@ -23,6 +23,8 @@ #include #include +#include "absl/log/check.h" +#include "absl/log/log.h" #include "absl/memory/memory.h" #include "absl/strings/str_cat.h" #include "absl/strings/substitute.h" @@ -140,9 +142,9 @@ static void AssignMetadata(grpc_metadata_batch* mb, static void cancel_stream_locked(grpc_binder_transport* transport, grpc_binder_stream* stream, grpc_error_handle error) { - gpr_log(GPR_INFO, "cancel_stream_locked"); + LOG(INFO) << "cancel_stream_locked"; if (!stream->is_closed) { - GPR_ASSERT(stream->cancel_self_error.ok()); + CHECK(stream->cancel_self_error.ok()); stream->is_closed = true; stream->cancel_self_error = error; transport->transport_stream_receiver->CancelStream(stream->tx_code); @@ -196,10 +198,10 @@ static void recv_initial_metadata_locked(void* arg, if (!stream->is_closed) { grpc_error_handle error = [&] { - GPR_ASSERT(stream->recv_initial_metadata); - GPR_ASSERT(stream->recv_initial_metadata_ready); + CHECK(stream->recv_initial_metadata); + CHECK(stream->recv_initial_metadata_ready); if (!args->initial_metadata.ok()) { - gpr_log(GPR_ERROR, "Failed to parse initial metadata"); + LOG(ERROR) << "Failed to parse initial metadata"; return absl_status_to_grpc_error(args->initial_metadata.status()); } if (!stream->is_client) { @@ -233,14 +235,14 @@ static void recv_message_locked(void* arg, grpc_error_handle /*error*/) { if (!stream->is_closed) { grpc_error_handle error = [&] { - GPR_ASSERT(stream->recv_message); - GPR_ASSERT(stream->recv_message_ready); + CHECK(stream->recv_message); + CHECK(stream->recv_message_ready); if (!args->message.ok()) { - gpr_log(GPR_ERROR, "Failed to receive message"); + LOG(ERROR) << "Failed to receive message"; if (args->message.status().message() == grpc_binder::TransportStreamReceiver:: kGrpcBinderTransportCancelledGracefully) { - gpr_log(GPR_ERROR, "message cancelled gracefully"); + LOG(ERROR) << "message cancelled gracefully"; // Cancelled because we've already received trailing metadata. // It's not an error in this case. return absl::OkStatus(); @@ -277,16 +279,16 @@ static void recv_trailing_metadata_locked(void* arg, if (!stream->is_closed) { grpc_error_handle error = [&] { - GPR_ASSERT(stream->recv_trailing_metadata); - GPR_ASSERT(stream->recv_trailing_metadata_finished); + CHECK(stream->recv_trailing_metadata); + CHECK(stream->recv_trailing_metadata_finished); if (!args->trailing_metadata.ok()) { - gpr_log(GPR_ERROR, "Failed to receive trailing metadata"); + LOG(ERROR) << "Failed to receive trailing metadata"; return absl_status_to_grpc_error(args->trailing_metadata.status()); } if (!stream->is_client) { // Client will not send non-empty trailing metadata. if (!args->trailing_metadata.value().empty()) { - gpr_log(GPR_ERROR, "Server receives non-empty trailing metadata."); + LOG(ERROR) << "Server receives non-empty trailing metadata."; return absl::CancelledError(); } } else { @@ -295,7 +297,7 @@ static void recv_trailing_metadata_locked(void* arg, // Append status to metadata // TODO(b/192208695): See if we can avoid to manually put status // code into the header - gpr_log(GPR_INFO, "status = %d", args->status); + LOG(INFO) << "status = " << args->status; stream->recv_trailing_metadata->Set( grpc_core::GrpcStatusMetadata(), static_cast(args->status)); @@ -339,16 +341,16 @@ class MetadataEncoder { void Encode(grpc_core::HttpPathMetadata, const grpc_core::Slice& value) { // TODO(b/192208403): Figure out if it is correct to simply drop '/' // prefix and treat it as rpc method name - GPR_ASSERT(value[0] == '/'); + CHECK(value[0] == '/'); std::string path = std::string(value.as_string_view().substr(1)); // Only client send method ref. - GPR_ASSERT(is_client_); + CHECK(is_client_); tx_->SetMethodRef(path); } void Encode(grpc_core::GrpcStatusMetadata, grpc_status_code status) { - gpr_log(GPR_INFO, "send trailing metadata status = %d", status); + LOG(INFO) << "send trailing metadata status = " << status; tx_->SetStatus(status); } @@ -370,7 +372,7 @@ class MetadataEncoder { static void accept_stream_locked(void* gt, grpc_error_handle /*error*/) { grpc_binder_transport* transport = static_cast(gt); if (transport->accept_stream_fn) { - gpr_log(GPR_INFO, "Accepting a stream"); + LOG(INFO) << "Accepting a stream"; // must pass in a non-null value. (*transport->accept_stream_fn)(transport->accept_stream_user_data, transport, transport); @@ -390,10 +392,10 @@ static void perform_stream_op_locked(void* stream_op, grpc_binder_transport* transport = stream->t; if (op->cancel_stream) { // TODO(waynetu): Is this true? - GPR_ASSERT(!op->send_initial_metadata && !op->send_message && - !op->send_trailing_metadata && !op->recv_initial_metadata && - !op->recv_message && !op->recv_trailing_metadata); - gpr_log(GPR_INFO, "cancel_stream is_client = %d", stream->is_client); + CHECK(!op->send_initial_metadata && !op->send_message && + !op->send_trailing_metadata && !op->recv_initial_metadata && + !op->recv_message && !op->recv_trailing_metadata); + LOG(INFO) << "cancel_stream is_client = " << stream->is_client; if (!stream->is_client) { // Send trailing metadata to inform the other end about the cancellation, // regardless if we'd already done that or not. @@ -448,7 +450,7 @@ static void perform_stream_op_locked(void* stream_op, std::make_unique(tx_code, transport->is_client); if (op->send_initial_metadata) { - gpr_log(GPR_INFO, "send_initial_metadata"); + LOG(INFO) << "send_initial_metadata"; grpc_binder::Metadata init_md; auto batch = op->payload->send_initial_metadata.send_initial_metadata; @@ -458,12 +460,12 @@ static void perform_stream_op_locked(void* stream_op, tx->SetPrefix(init_md); } if (op->send_message) { - gpr_log(GPR_INFO, "send_message"); + LOG(INFO) << "send_message"; tx->SetData(op->payload->send_message.send_message->JoinIntoString()); } if (op->send_trailing_metadata) { - gpr_log(GPR_INFO, "send_trailing_metadata"); + LOG(INFO) << "send_trailing_metadata"; auto batch = op->payload->send_trailing_metadata.send_trailing_metadata; grpc_binder::Metadata trailing_metadata; @@ -476,7 +478,7 @@ static void perform_stream_op_locked(void* stream_op, tx->SetSuffix(trailing_metadata); } if (op->recv_initial_metadata) { - gpr_log(GPR_INFO, "recv_initial_metadata"); + LOG(INFO) << "recv_initial_metadata"; stream->recv_initial_metadata_ready = op->payload->recv_initial_metadata.recv_initial_metadata_ready; stream->recv_initial_metadata = @@ -499,7 +501,7 @@ static void perform_stream_op_locked(void* stream_op, }); } if (op->recv_message) { - gpr_log(GPR_INFO, "recv_message"); + LOG(INFO) << "recv_message"; stream->recv_message_ready = op->payload->recv_message.recv_message_ready; stream->recv_message = op->payload->recv_message.recv_message; stream->call_failed_before_recv_message = @@ -522,7 +524,7 @@ static void perform_stream_op_locked(void* stream_op, }); } if (op->recv_trailing_metadata) { - gpr_log(GPR_INFO, "recv_trailing_metadata"); + LOG(INFO) << "recv_trailing_metadata"; stream->recv_trailing_metadata_finished = op->payload->recv_trailing_metadata.recv_trailing_metadata_ready; stream->recv_trailing_metadata = @@ -570,7 +572,7 @@ static void perform_stream_op_locked(void* stream_op, if (op->on_complete != nullptr) { grpc_core::ExecCtx::Run(DEBUG_LOCATION, op->on_complete, absl_status_to_grpc_error(status)); - gpr_log(GPR_INFO, "on_complete closure scheduled"); + LOG(INFO) << "on_complete closure scheduled"; } GRPC_BINDER_STREAM_UNREF(stream, "perform_stream_op"); } @@ -741,8 +743,8 @@ grpc_core::Transport* grpc_create_binder_transport_client( security_policy) { gpr_log(GPR_INFO, __func__); - GPR_ASSERT(endpoint_binder != nullptr); - GPR_ASSERT(security_policy != nullptr); + CHECK(endpoint_binder != nullptr); + CHECK_NE(security_policy, nullptr); grpc_binder_transport* t = new grpc_binder_transport( std::move(endpoint_binder), /*is_client=*/true, security_policy); @@ -756,8 +758,8 @@ grpc_core::Transport* grpc_create_binder_transport_server( security_policy) { gpr_log(GPR_INFO, __func__); - GPR_ASSERT(client_binder != nullptr); - GPR_ASSERT(security_policy != nullptr); + CHECK(client_binder != nullptr); + CHECK_NE(security_policy, nullptr); grpc_binder_transport* t = new grpc_binder_transport( std::move(client_binder), /*is_client=*/false, security_policy); diff --git a/src/core/ext/transport/binder/transport/binder_transport.h b/src/core/ext/transport/binder/transport/binder_transport.h index fe219ba98e9..d800bcee676 100644 --- a/src/core/ext/transport/binder/transport/binder_transport.h +++ b/src/core/ext/transport/binder/transport/binder_transport.h @@ -15,8 +15,6 @@ #ifndef GRPC_SRC_CORE_EXT_TRANSPORT_BINDER_TRANSPORT_BINDER_TRANSPORT_H #define GRPC_SRC_CORE_EXT_TRANSPORT_BINDER_TRANSPORT_BINDER_TRANSPORT_H -#include - #include #include #include @@ -24,8 +22,10 @@ #include #include "absl/container/flat_hash_map.h" +#include "absl/log/check.h" #include +#include #include #include "src/core/ext/transport/binder/utils/transport_stream_receiver.h" @@ -42,8 +42,7 @@ struct grpc_binder_stream; // depends on what style we want to follow) // TODO(mingcl): Decide casing for this class name. Should we use C-style class // name here or just go with C++ style? -struct grpc_binder_transport final : public grpc_core::Transport, - public grpc_core::FilterStackTransport { +struct grpc_binder_transport final : public grpc_core::FilterStackTransport { explicit grpc_binder_transport( std::unique_ptr binder, bool is_client, std::shared_ptr @@ -76,7 +75,7 @@ struct grpc_binder_transport final : public grpc_core::Transport, // TODO(mingcl): Wrap around when all tx codes are used. "If we do detect a // collision however, we will fail the new call with UNAVAILABLE, and shut // down the transport gracefully." - GPR_ASSERT(next_free_tx_code <= LAST_CALL_TRANSACTION); + CHECK(next_free_tx_code <= LAST_CALL_TRANSACTION); return next_free_tx_code++; } diff --git a/src/core/ext/transport/binder/utils/ndk_binder.cc b/src/core/ext/transport/binder/utils/ndk_binder.cc index 20dd4908320..08b0c824cb8 100644 --- a/src/core/ext/transport/binder/utils/ndk_binder.cc +++ b/src/core/ext/transport/binder/utils/ndk_binder.cc @@ -12,16 +12,19 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include - #include "src/core/ext/transport/binder/utils/ndk_binder.h" +#include + #ifndef GRPC_NO_BINDER #ifdef GPR_SUPPORT_BINDER_TRANSPORT #include +#include "absl/log/check.h" +#include "absl/log/log.h" + #include #include "src/core/lib/gprpp/crash.h" @@ -36,7 +39,7 @@ void* GetNdkBinderHandle() { gpr_log( GPR_ERROR, "Cannot open libbinder_ndk.so. Does this device support API level 29?"); - GPR_ASSERT(0); + CHECK(0); } return handle; } @@ -58,10 +61,10 @@ void SetJvm(JNIEnv* env) { JavaVM* jvm = nullptr; jint error = env->GetJavaVM(&jvm); if (error != JNI_OK) { - gpr_log(GPR_ERROR, "Failed to get JVM"); + LOG(ERROR) << "Failed to get JVM"; } g_jvm = jvm; - gpr_log(GPR_INFO, "JVM cached"); + LOG(INFO) << "JVM cached"; } // `SetJvm` need to be called in the process before `AttachJvm`. This is always @@ -75,14 +78,14 @@ bool AttachJvm() { // Note: The following code would be run at most once per thread. grpc_core::MutexLock lock(&g_jvm_mu); if (g_jvm == nullptr) { - gpr_log(GPR_ERROR, "JVM not cached yet"); + LOG(ERROR) << "JVM not cached yet"; return false; } JNIEnv* env_unused; // Note that attach a thread that is already attached is a no-op, so it is // fine to call this again if the thread has already been attached by other. g_jvm->AttachCurrentThread(&env_unused, /* thr_args= */ nullptr); - gpr_log(GPR_INFO, "JVM attached successfully"); + LOG(INFO) << "JVM attached successfully"; g_is_jvm_attached = true; return true; } @@ -102,7 +105,7 @@ namespace ndk_util { "dlsym failed. Cannot find %s in libbinder_ndk.so. " \ "BinderTransport requires API level >= 33", \ #name); \ - GPR_ASSERT(0); \ + CHECK(0); \ } \ return ptr @@ -149,7 +152,7 @@ binder_status_t AIBinder_transact(AIBinder* binder, transaction_code_t code, AParcel** in, AParcel** out, binder_flags_t flags) { if (!AttachJvm()) { - gpr_log(GPR_ERROR, "failed to attach JVM. AIBinder_transact might fail."); + LOG(ERROR) << "failed to attach JVM. AIBinder_transact might fail."; } FORWARD(AIBinder_transact)(binder, code, in, out, flags); } diff --git a/src/core/ext/transport/binder/utils/transport_stream_receiver.h b/src/core/ext/transport/binder/utils/transport_stream_receiver.h index cbd6f6ae247..fa7dd21472d 100644 --- a/src/core/ext/transport/binder/utils/transport_stream_receiver.h +++ b/src/core/ext/transport/binder/utils/transport_stream_receiver.h @@ -15,14 +15,14 @@ #ifndef GRPC_SRC_CORE_EXT_TRANSPORT_BINDER_UTILS_TRANSPORT_STREAM_RECEIVER_H #define GRPC_SRC_CORE_EXT_TRANSPORT_BINDER_UTILS_TRANSPORT_STREAM_RECEIVER_H -#include - #include #include #include #include "absl/status/statusor.h" +#include + #include "src/core/ext/transport/binder/wire_format/transaction.h" namespace grpc_binder { diff --git a/src/core/ext/transport/binder/utils/transport_stream_receiver_impl.cc b/src/core/ext/transport/binder/utils/transport_stream_receiver_impl.cc index d569d1fb614..9546109aa61 100644 --- a/src/core/ext/transport/binder/utils/transport_stream_receiver_impl.cc +++ b/src/core/ext/transport/binder/utils/transport_stream_receiver_impl.cc @@ -12,17 +12,18 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include - #include "src/core/ext/transport/binder/utils/transport_stream_receiver_impl.h" +#include + #ifndef GRPC_NO_BINDER #include #include #include -#include +#include "absl/log/check.h" +#include "absl/log/log.h" #include "src/core/lib/gprpp/crash.h" @@ -34,11 +35,11 @@ const absl::string_view void TransportStreamReceiverImpl::RegisterRecvInitialMetadata( StreamIdentifier id, InitialMetadataCallbackType cb) { - gpr_log(GPR_INFO, "%s id = %d is_client = %d", __func__, id, is_client_); + LOG(INFO) << __func__ << " id = " << id << " is_client = " << is_client_; absl::StatusOr initial_metadata{}; { grpc_core::MutexLock l(&m_); - GPR_ASSERT(initial_metadata_cbs_.count(id) == 0); + CHECK_EQ(initial_metadata_cbs_.count(id), 0u); auto iter = pending_initial_metadata_.find(id); if (iter == pending_initial_metadata_.end()) { if (trailing_metadata_recvd_.count(id)) { @@ -62,11 +63,11 @@ void TransportStreamReceiverImpl::RegisterRecvInitialMetadata( void TransportStreamReceiverImpl::RegisterRecvMessage( StreamIdentifier id, MessageDataCallbackType cb) { - gpr_log(GPR_INFO, "%s id = %d is_client = %d", __func__, id, is_client_); + LOG(INFO) << __func__ << " id = " << id << " is_client = " << is_client_; absl::StatusOr message{}; { grpc_core::MutexLock l(&m_); - GPR_ASSERT(message_cbs_.count(id) == 0); + CHECK_EQ(message_cbs_.count(id), 0u); auto iter = pending_message_.find(id); if (iter == pending_message_.end()) { // If we'd already received trailing-metadata and there's no pending @@ -96,11 +97,11 @@ void TransportStreamReceiverImpl::RegisterRecvMessage( void TransportStreamReceiverImpl::RegisterRecvTrailingMetadata( StreamIdentifier id, TrailingMetadataCallbackType cb) { - gpr_log(GPR_INFO, "%s id = %d is_client = %d", __func__, id, is_client_); + LOG(INFO) << __func__ << " id = " << id << " is_client = " << is_client_; std::pair, int> trailing_metadata{}; { grpc_core::MutexLock l(&m_); - GPR_ASSERT(trailing_metadata_cbs_.count(id) == 0); + CHECK_EQ(trailing_metadata_cbs_.count(id), 0u); auto iter = pending_trailing_metadata_.find(id); if (iter == pending_trailing_metadata_.end()) { trailing_metadata_cbs_[id] = std::move(cb); @@ -120,7 +121,7 @@ void TransportStreamReceiverImpl::RegisterRecvTrailingMetadata( void TransportStreamReceiverImpl::NotifyRecvInitialMetadata( StreamIdentifier id, absl::StatusOr initial_metadata) { - gpr_log(GPR_INFO, "%s id = %d is_client = %d", __func__, id, is_client_); + LOG(INFO) << __func__ << " id = " << id << " is_client = " << is_client_; if (!is_client_ && accept_stream_callback_ && initial_metadata.ok()) { accept_stream_callback_(); } @@ -141,7 +142,7 @@ void TransportStreamReceiverImpl::NotifyRecvInitialMetadata( void TransportStreamReceiverImpl::NotifyRecvMessage( StreamIdentifier id, absl::StatusOr message) { - gpr_log(GPR_INFO, "%s id = %d is_client = %d", __func__, id, is_client_); + LOG(INFO) << __func__ << " id = " << id << " is_client = " << is_client_; MessageDataCallbackType cb; { grpc_core::MutexLock l(&m_); @@ -164,7 +165,7 @@ void TransportStreamReceiverImpl::NotifyRecvTrailingMetadata( // assumes in-order commitments of transactions and that trailing metadata is // parsed after message data, we can safely cancel all upcoming callbacks of // recv_message. - gpr_log(GPR_INFO, "%s id = %d is_client = %d", __func__, id, is_client_); + LOG(INFO) << __func__ << " id = " << id << " is_client = " << is_client_; OnRecvTrailingMetadata(id); TrailingMetadataCallbackType cb; { @@ -231,7 +232,7 @@ void TransportStreamReceiverImpl::CancelTrailingMetadataCallback( } void TransportStreamReceiverImpl::OnRecvTrailingMetadata(StreamIdentifier id) { - gpr_log(GPR_INFO, "%s id = %d is_client = %d", __func__, id, is_client_); + LOG(INFO) << __func__ << " id = " << id << " is_client = " << is_client_; m_.Lock(); trailing_metadata_recvd_.insert(id); m_.Unlock(); @@ -243,7 +244,7 @@ void TransportStreamReceiverImpl::OnRecvTrailingMetadata(StreamIdentifier id) { } void TransportStreamReceiverImpl::CancelStream(StreamIdentifier id) { - gpr_log(GPR_INFO, "%s id = %d is_client = %d", __func__, id, is_client_); + LOG(INFO) << __func__ << " id = " << id << " is_client = " << is_client_; CancelInitialMetadataCallback(id, absl::CancelledError("Stream cancelled")); CancelMessageCallback(id, absl::CancelledError("Stream cancelled")); CancelTrailingMetadataCallback(id, absl::CancelledError("Stream cancelled")); diff --git a/src/core/ext/transport/binder/utils/transport_stream_receiver_impl.h b/src/core/ext/transport/binder/utils/transport_stream_receiver_impl.h index be2676a56f9..6fe22df4692 100644 --- a/src/core/ext/transport/binder/utils/transport_stream_receiver_impl.h +++ b/src/core/ext/transport/binder/utils/transport_stream_receiver_impl.h @@ -15,8 +15,6 @@ #ifndef GRPC_SRC_CORE_EXT_TRANSPORT_BINDER_UTILS_TRANSPORT_STREAM_RECEIVER_IMPL_H #define GRPC_SRC_CORE_EXT_TRANSPORT_BINDER_UTILS_TRANSPORT_STREAM_RECEIVER_IMPL_H -#include - #include #include #include @@ -24,6 +22,8 @@ #include #include +#include + #include "src/core/ext/transport/binder/utils/transport_stream_receiver.h" #include "src/core/lib/gprpp/sync.h" diff --git a/src/core/ext/transport/binder/wire_format/binder.h b/src/core/ext/transport/binder/wire_format/binder.h index 2dce384e102..ce79c1332e8 100644 --- a/src/core/ext/transport/binder/wire_format/binder.h +++ b/src/core/ext/transport/binder/wire_format/binder.h @@ -15,8 +15,6 @@ #ifndef GRPC_SRC_CORE_EXT_TRANSPORT_BINDER_WIRE_FORMAT_BINDER_H #define GRPC_SRC_CORE_EXT_TRANSPORT_BINDER_WIRE_FORMAT_BINDER_H -#include - #include #include #include @@ -25,6 +23,8 @@ #include "absl/status/status.h" #include "absl/strings/string_view.h" +#include + #include "src/core/ext/transport/binder/wire_format/binder_constants.h" #include "src/core/lib/gprpp/orphanable.h" diff --git a/src/core/ext/transport/binder/wire_format/binder_android.cc b/src/core/ext/transport/binder/wire_format/binder_android.cc index 21e32f2da7c..6ca9b6dcecd 100644 --- a/src/core/ext/transport/binder/wire_format/binder_android.cc +++ b/src/core/ext/transport/binder/wire_format/binder_android.cc @@ -20,6 +20,8 @@ #include +#include "absl/log/check.h" +#include "absl/log/log.h" #include "absl/memory/memory.h" #include "absl/strings/str_cat.h" @@ -64,7 +66,7 @@ ndk_util::binder_status_t f_onTransact(ndk_util::AIBinder* binder, const ndk_util::AParcel* in, ndk_util::AParcel* /*out*/) { gpr_log(GPR_INFO, __func__); - gpr_log(GPR_INFO, "tx code = %u", code); + LOG(INFO) << "tx code = " << code; auto* user_data = static_cast(ndk_util::AIBinder_getUserData(binder)); @@ -78,7 +80,7 @@ ndk_util::binder_status_t f_onTransact(ndk_util::AIBinder* binder, if (status.ok()) { return ndk_util::STATUS_OK; } else { - gpr_log(GPR_ERROR, "Callback failed: %s", status.ToString().c_str()); + LOG(ERROR) << "Callback failed: " << status.ToString(); return ndk_util::STATUS_UNKNOWN_ERROR; } } @@ -152,7 +154,7 @@ TransactionReceiverAndroid::TransactionReceiverAndroid( args.wire_reader_ref = wire_reader_ref; args.callback = &transact_cb_; binder_ = ndk_util::AIBinder_new(aibinder_class, &args); - GPR_ASSERT(binder_); + CHECK(binder_); gpr_log(GPR_INFO, "ndk_util::AIBinder_associateClass = %d", static_cast( ndk_util::AIBinder_associateClass(binder_, aibinder_class))); diff --git a/src/core/ext/transport/binder/wire_format/binder_constants.h b/src/core/ext/transport/binder/wire_format/binder_constants.h index 0dacaa742c0..562f248ec0d 100644 --- a/src/core/ext/transport/binder/wire_format/binder_constants.h +++ b/src/core/ext/transport/binder/wire_format/binder_constants.h @@ -15,12 +15,12 @@ #ifndef GRPC_SRC_CORE_EXT_TRANSPORT_BINDER_WIRE_FORMAT_BINDER_CONSTANTS_H #define GRPC_SRC_CORE_EXT_TRANSPORT_BINDER_WIRE_FORMAT_BINDER_CONSTANTS_H -#include - #include #include "absl/base/attributes.h" +#include + using transaction_code_t = uint32_t; ABSL_CONST_INIT extern const int FIRST_CALL_TRANSACTION; diff --git a/src/core/ext/transport/binder/wire_format/transaction.h b/src/core/ext/transport/binder/wire_format/transaction.h index 93e0883c3f1..30f4af67ee1 100644 --- a/src/core/ext/transport/binder/wire_format/transaction.h +++ b/src/core/ext/transport/binder/wire_format/transaction.h @@ -15,14 +15,14 @@ #ifndef GRPC_SRC_CORE_EXT_TRANSPORT_BINDER_WIRE_FORMAT_TRANSACTION_H #define GRPC_SRC_CORE_EXT_TRANSPORT_BINDER_WIRE_FORMAT_TRANSACTION_H -#include - #include #include +#include "absl/log/check.h" #include "absl/strings/string_view.h" #include +#include #include "src/core/lib/gprpp/crash.h" @@ -46,33 +46,33 @@ class Transaction { // TODO(mingcl): Consider using string_view void SetPrefix(Metadata prefix_metadata) { prefix_metadata_ = prefix_metadata; - GPR_ASSERT((flags_ & kFlagPrefix) == 0); + CHECK_EQ((flags_ & kFlagPrefix), 0); flags_ |= kFlagPrefix; } void SetMethodRef(std::string method_ref) { - GPR_ASSERT(is_client_); + CHECK(is_client_); method_ref_ = method_ref; } void SetData(std::string message_data) { message_data_ = message_data; - GPR_ASSERT((flags_ & kFlagMessageData) == 0); + CHECK_EQ((flags_ & kFlagMessageData), 0); flags_ |= kFlagMessageData; } void SetSuffix(Metadata suffix_metadata) { - if (is_client_) GPR_ASSERT(suffix_metadata.empty()); + if (is_client_) CHECK(suffix_metadata.empty()); suffix_metadata_ = suffix_metadata; - GPR_ASSERT((flags_ & kFlagSuffix) == 0); + CHECK_EQ((flags_ & kFlagSuffix), 0); flags_ |= kFlagSuffix; } void SetStatusDescription(std::string status_desc) { - GPR_ASSERT(!is_client_); - GPR_ASSERT((flags_ & kFlagStatusDescription) == 0); + CHECK(!is_client_); + CHECK_EQ((flags_ & kFlagStatusDescription), 0); status_desc_ = status_desc; } void SetStatus(int status) { - GPR_ASSERT(!is_client_); - GPR_ASSERT((flags_ >> 16) == 0); - GPR_ASSERT(status < (1 << 16)); + CHECK(!is_client_); + CHECK_EQ((flags_ >> 16), 0); + CHECK(status < (1 << 16)); flags_ |= (status << 16); } diff --git a/src/core/ext/transport/binder/wire_format/wire_reader.h b/src/core/ext/transport/binder/wire_format/wire_reader.h index 5fa98512cca..2a4092d29d9 100644 --- a/src/core/ext/transport/binder/wire_format/wire_reader.h +++ b/src/core/ext/transport/binder/wire_format/wire_reader.h @@ -15,11 +15,11 @@ #ifndef GRPC_SRC_CORE_EXT_TRANSPORT_BINDER_WIRE_FORMAT_WIRE_READER_H #define GRPC_SRC_CORE_EXT_TRANSPORT_BINDER_WIRE_FORMAT_WIRE_READER_H -#include - #include #include +#include + #include "src/core/ext/transport/binder/wire_format/binder.h" #include "src/core/ext/transport/binder/wire_format/wire_writer.h" #include "src/core/lib/gprpp/orphanable.h" diff --git a/src/core/ext/transport/binder/wire_format/wire_reader_impl.cc b/src/core/ext/transport/binder/wire_format/wire_reader_impl.cc index 3a9860a8ef1..02cd6cf09cd 100644 --- a/src/core/ext/transport/binder/wire_format/wire_reader_impl.cc +++ b/src/core/ext/transport/binder/wire_format/wire_reader_impl.cc @@ -12,10 +12,10 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include - #include "src/core/ext/transport/binder/wire_format/wire_reader_impl.h" +#include + #ifndef GRPC_NO_BINDER #include @@ -25,6 +25,8 @@ #include #include "absl/functional/any_invocable.h" +#include "absl/log/check.h" +#include "absl/log/log.h" #include "absl/memory/memory.h" #include "absl/status/statusor.h" @@ -135,9 +137,9 @@ void WireReaderImpl::SendSetupTransport(Binder* binder) { std::unique_ptr WireReaderImpl::RecvSetupTransport() { // TODO(b/191941760): avoid blocking, handle wire_writer_noti lifetime // better - gpr_log(GPR_DEBUG, "start waiting for noti"); + VLOG(2) << "start waiting for noti"; connection_noti_.WaitForNotification(); - gpr_log(GPR_DEBUG, "end waiting for noti"); + VLOG(2) << "end waiting for noti"; return std::move(other_end_binder_); } @@ -152,8 +154,8 @@ absl::Status WireReaderImpl::ProcessTransaction(transaction_code_t code, BinderTransportTxCode::SETUP_TRANSPORT) && code <= static_cast( BinderTransportTxCode::PING_RESPONSE))) { - gpr_log(GPR_INFO, - "Received unknown control message. Shutdown transport gracefully."); + LOG(INFO) + << "Received unknown control message. Shutdown transport gracefully."; // TODO(waynetu): Shutdown transport gracefully. return absl::OkStatus(); } @@ -209,8 +211,8 @@ absl::Status WireReaderImpl::ProcessTransaction(transaction_code_t code, break; } case BinderTransportTxCode::SHUTDOWN_TRANSPORT: { - gpr_log(GPR_ERROR, - "Received SHUTDOWN_TRANSPORT request but not implemented yet."); + LOG(ERROR) + << "Received SHUTDOWN_TRANSPORT request but not implemented yet."; return absl::UnimplementedError("SHUTDOWN_TRANSPORT"); } case BinderTransportTxCode::ACKNOWLEDGE_BYTES: { @@ -285,16 +287,16 @@ absl::Status WireReaderImpl::ProcessStreamingTransaction( tx_process_result.ToString().c_str()); // Something went wrong when receiving transaction. Cancel failed requests. if (cancellation_flags & kFlagPrefix) { - gpr_log(GPR_INFO, "cancelling initial metadata"); + LOG(INFO) << "cancelling initial metadata"; transport_stream_receiver_->NotifyRecvInitialMetadata(code, tx_process_result); } if (cancellation_flags & kFlagMessageData) { - gpr_log(GPR_INFO, "cancelling message data"); + LOG(INFO) << "cancelling message data"; transport_stream_receiver_->NotifyRecvMessage(code, tx_process_result); } if (cancellation_flags & kFlagSuffix) { - gpr_log(GPR_INFO, "cancelling trailing metadata"); + LOG(INFO) << "cancelling trailing metadata"; transport_stream_receiver_->NotifyRecvTrailingMetadata( code, tx_process_result, 0); } @@ -305,7 +307,7 @@ absl::Status WireReaderImpl::ProcessStreamingTransaction( absl::Seconds(5))) { return absl::DeadlineExceededError("wire_writer_ is not ready in time!"); } - GPR_ASSERT(wire_writer_); + CHECK(wire_writer_); // wire_writer_ should not be accessed while holding mu_! // Otherwise, it is possible that // 1. wire_writer_::mu_ is acquired before mu_ (NDK call back during @@ -323,7 +325,7 @@ absl::Status WireReaderImpl::ProcessStreamingTransaction( absl::Status WireReaderImpl::ProcessStreamingTransactionImpl( transaction_code_t code, ReadableParcel* parcel, int* cancellation_flags, std::queue>& deferred_func_queue) { - GPR_ASSERT(cancellation_flags); + CHECK(cancellation_flags); num_incoming_bytes_ += parcel->GetDataSize(); gpr_log(GPR_INFO, "Total incoming bytes: %" PRId64, num_incoming_bytes_); @@ -337,7 +339,7 @@ absl::Status WireReaderImpl::ProcessStreamingTransactionImpl( // intended behavior. // TODO(waynetu): What should be returned here? if (flags == 0) { - gpr_log(GPR_INFO, "[WARNING] Receive empty transaction. Ignored."); + LOG(INFO) << "[WARNING] Receive empty transaction. Ignored."; return absl::OkStatus(); } @@ -360,8 +362,8 @@ absl::Status WireReaderImpl::ProcessStreamingTransactionImpl( // TODO(waynetu): According to the protocol, "The sequence number will wrap // around to 0 if more than 2^31 messages are sent." For now we'll just // assert that it never reach such circumstances. - GPR_ASSERT(expectation < std::numeric_limits::max() && - "Sequence number too large"); + CHECK(expectation < std::numeric_limits::max()) + << "Sequence number too large"; expectation++; gpr_log(GPR_DEBUG, "sequence number = %d", seq_num); if (flags & kFlagPrefix) { diff --git a/src/core/ext/transport/binder/wire_format/wire_reader_impl.h b/src/core/ext/transport/binder/wire_format/wire_reader_impl.h index 23f0235cede..48e80f718f6 100644 --- a/src/core/ext/transport/binder/wire_format/wire_reader_impl.h +++ b/src/core/ext/transport/binder/wire_format/wire_reader_impl.h @@ -15,8 +15,6 @@ #ifndef GRPC_SRC_CORE_EXT_TRANSPORT_BINDER_WIRE_FORMAT_WIRE_READER_IMPL_H #define GRPC_SRC_CORE_EXT_TRANSPORT_BINDER_WIRE_FORMAT_WIRE_READER_IMPL_H -#include - #include #include #include @@ -24,6 +22,7 @@ #include "absl/container/flat_hash_map.h" #include "absl/functional/any_invocable.h" +#include #include #include "src/core/ext/transport/binder/utils/transport_stream_receiver.h" diff --git a/src/core/ext/transport/binder/wire_format/wire_writer.cc b/src/core/ext/transport/binder/wire_format/wire_writer.cc index f1bfd19eb9a..6379bd17ff4 100644 --- a/src/core/ext/transport/binder/wire_format/wire_writer.cc +++ b/src/core/ext/transport/binder/wire_format/wire_writer.cc @@ -12,15 +12,17 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include - #include "src/core/ext/transport/binder/wire_format/wire_writer.h" +#include + #ifndef GRPC_NO_BINDER #include #include "absl/cleanup/cleanup.h" +#include "absl/log/check.h" +#include "absl/log/log.h" #include "absl/types/variant.h" #include @@ -77,7 +79,7 @@ absl::Status WriteTrailingMetadata(const Transaction& tx, } else { // client suffix currently is always empty according to the wireformat if (!tx.GetSuffixMetadata().empty()) { - gpr_log(GPR_ERROR, "Got non-empty suffix metadata from client."); + LOG(ERROR) << "Got non-empty suffix metadata from client."; } } return absl::OkStatus(); @@ -122,7 +124,7 @@ absl::Status WireWriterImpl::MakeBinderTransaction( gpr_log(GPR_INFO, "Total outgoing bytes: %" PRId64, num_outgoing_bytes_.load()); } - GPR_ASSERT(!is_transacting_); + CHECK(!is_transacting_); is_transacting_ = true; absl::Status result = binder_->Transact(tx_code); is_transacting_ = false; @@ -155,10 +157,10 @@ absl::Status WireWriterImpl::RunStreamTx( bool* is_last_chunk) { Transaction* tx = stream_tx->tx.get(); // Transaction without data flag should go to fast path. - GPR_ASSERT(tx->GetFlags() & kFlagMessageData); + CHECK(tx->GetFlags() & kFlagMessageData); absl::string_view data = tx->GetMessageData(); - GPR_ASSERT(stream_tx->bytes_sent <= static_cast(data.size())); + CHECK(stream_tx->bytes_sent <= static_cast(data.size())); int flags = kFlagMessageData; @@ -206,7 +208,7 @@ absl::Status WireWriterImpl::RunStreamTx( } void WireWriterImpl::RunScheduledTxInternal(RunScheduledTxArgs* args) { - GPR_ASSERT(args->writer == this); + CHECK(args->writer == this); if (absl::holds_alternative(args->tx)) { int64_t num_bytes = absl::get(args->tx).num_bytes; @@ -217,13 +219,12 @@ void WireWriterImpl::RunScheduledTxInternal(RunScheduledTxArgs* args) { return absl::OkStatus(); }); if (!result.ok()) { - gpr_log(GPR_ERROR, "Failed to make binder transaction %s", - result.ToString().c_str()); + LOG(ERROR) << "Failed to make binder transaction " << result; } delete args; return; } - GPR_ASSERT(absl::holds_alternative(args->tx)); + CHECK(absl::holds_alternative(args->tx)); RunScheduledTxArgs::StreamTx* stream_tx = &absl::get(args->tx); // Be reservative. Decrease CombinerTxCount after the data size of this @@ -232,7 +233,7 @@ void WireWriterImpl::RunScheduledTxInternal(RunScheduledTxArgs* args) { auto decrease_combiner_tx_count = absl::MakeCleanup([this]() { { grpc_core::MutexLock lock(&flow_control_mu_); - GPR_ASSERT(num_non_acked_tx_in_combiner_ > 0); + CHECK_GT(num_non_acked_tx_in_combiner_, 0); num_non_acked_tx_in_combiner_--; } // New transaction might be ready to be scheduled. @@ -241,8 +242,7 @@ void WireWriterImpl::RunScheduledTxInternal(RunScheduledTxArgs* args) { if (CanBeSentInOneTransaction(*stream_tx->tx.get())) { // NOLINT absl::Status result = RpcCallFastPath(std::move(stream_tx->tx)); if (!result.ok()) { - gpr_log(GPR_ERROR, "Failed to handle non-chunked RPC call %s", - result.ToString().c_str()); + LOG(ERROR) << "Failed to handle non-chunked RPC call " << result; } delete args; return; @@ -255,8 +255,7 @@ void WireWriterImpl::RunScheduledTxInternal(RunScheduledTxArgs* args) { return RunStreamTx(stream_tx, parcel, &is_last_chunk); }); if (!result.ok()) { - gpr_log(GPR_ERROR, "Failed to make binder transaction %s", - result.ToString().c_str()); + LOG(ERROR) << "Failed to make binder transaction " << result; } if (!is_last_chunk) { { @@ -271,7 +270,7 @@ void WireWriterImpl::RunScheduledTxInternal(RunScheduledTxArgs* args) { absl::Status WireWriterImpl::RpcCall(std::unique_ptr tx) { // TODO(mingcl): check tx_code <= last call id - GPR_ASSERT(tx->GetTxCode() >= kFirstCallId); + CHECK(tx->GetTxCode() >= kFirstCallId); auto args = new RunScheduledTxArgs(); args->writer = this; args->tx = RunScheduledTxArgs::StreamTx(); @@ -289,7 +288,7 @@ absl::Status WireWriterImpl::SendAck(int64_t num_bytes) { // Ensure combiner will be run if this is not called from top-level gRPC API // entrypoint. grpc_core::ExecCtx exec_ctx; - gpr_log(GPR_INFO, "Ack %" PRId64 " bytes received", num_bytes); + LOG(INFO) << "Ack " << num_bytes << " bytes received"; if (is_transacting_) { // This can happen because NDK might call our registered callback function // in the same thread while we are telling it to send a transaction @@ -297,10 +296,8 @@ absl::Status WireWriterImpl::SendAck(int64_t num_bytes) { // the same thread or the other thread. We are currently in the call stack // of other transaction, Liveness of ACK is still guaranteed even if this is // a race with another thread. - gpr_log( - GPR_INFO, - "Scheduling ACK transaction instead of directly execute it to avoid " - "deadlock."); + LOG(INFO) << "Scheduling ACK transaction instead of directly execute it to " + "avoid deadlock."; auto args = new RunScheduledTxArgs(); args->writer = this; args->tx = RunScheduledTxArgs::AckTx(); @@ -317,8 +314,7 @@ absl::Status WireWriterImpl::SendAck(int64_t num_bytes) { return absl::OkStatus(); }); if (!result.ok()) { - gpr_log(GPR_ERROR, "Failed to make binder transaction %s", - result.ToString().c_str()); + LOG(ERROR) << "Failed to make binder transaction " << result; } return result; } @@ -327,7 +323,7 @@ void WireWriterImpl::OnAckReceived(int64_t num_bytes) { // Ensure combiner will be run if this is not called from top-level gRPC API // entrypoint. grpc_core::ExecCtx exec_ctx; - gpr_log(GPR_INFO, "OnAckReceived %" PRId64, num_bytes); + LOG(INFO) << "OnAckReceived " << num_bytes; // Do not try to obtain `write_mu_` in this function. NDKBinder might invoke // the callback to notify us about new incoming binder transaction when we are // sending transaction. i.e. `write_mu_` might have already been acquired by diff --git a/src/core/ext/transport/binder/wire_format/wire_writer.h b/src/core/ext/transport/binder/wire_format/wire_writer.h index eb00e9387cc..bb52c7385cc 100644 --- a/src/core/ext/transport/binder/wire_format/wire_writer.h +++ b/src/core/ext/transport/binder/wire_format/wire_writer.h @@ -15,14 +15,14 @@ #ifndef GRPC_SRC_CORE_EXT_TRANSPORT_BINDER_WIRE_FORMAT_WIRE_WRITER_H #define GRPC_SRC_CORE_EXT_TRANSPORT_BINDER_WIRE_FORMAT_WIRE_WRITER_H -#include - #include #include #include #include "absl/container/flat_hash_map.h" +#include + #include "src/core/ext/transport/binder/wire_format/binder.h" #include "src/core/ext/transport/binder/wire_format/transaction.h" #include "src/core/lib/gprpp/sync.h" diff --git a/src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc b/src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc index 95caa424eeb..d22d3bbb02c 100644 --- a/src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc +++ b/src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc @@ -18,6 +18,7 @@ #include #include +#include "absl/log/check.h" #include "absl/random/bit_gen_ref.h" #include "absl/status/status.h" #include "absl/status/statusor.h" @@ -31,6 +32,7 @@ #include "src/core/ext/transport/chaotic_good/frame.h" #include "src/core/ext/transport/chaotic_good/frame_header.h" #include "src/core/ext/transport/chaotic_good/settings_metadata.h" +#include "src/core/handshaker/handshaker.h" #include "src/core/lib/channel/channel_args.h" #include "src/core/lib/config/core_configuration.h" #include "src/core/lib/event_engine/channel_args_endpoint_config.h" @@ -61,7 +63,6 @@ #include "src/core/lib/surface/channel.h" #include "src/core/lib/surface/channel_create.h" #include "src/core/lib/transport/error_utils.h" -#include "src/core/lib/transport/handshaker.h" #include "src/core/lib/transport/promise_endpoint.h" namespace grpc_core { @@ -78,7 +79,7 @@ ChaoticGoodConnector::ChaoticGoodConnector( handshake_mgr_(std::make_shared()) {} ChaoticGoodConnector::~ChaoticGoodConnector() { - GPR_ASSERT(notify_ == nullptr); + CHECK_EQ(notify_, nullptr); if (connect_activity_ != nullptr) { connect_activity_.reset(); } @@ -224,7 +225,7 @@ void ChaoticGoodConnector::Connect(const Args& args, Result* result, MutexLock lock(&mu_); result_ = result; if (is_shutdown_) { - GPR_ASSERT(notify_ == nullptr); + CHECK_EQ(notify_, nullptr); ExecCtx::Run(DEBUG_LOCATION, notify, GRPC_ERROR_CREATE("connector shutdown")); return; @@ -235,7 +236,7 @@ void ChaoticGoodConnector::Connect(const Args& args, Result* result, resolved_addr_ = EventEngine::ResolvedAddress( reinterpret_cast(args_.address->addr), args_.address->len); - GPR_ASSERT(resolved_addr_.value().address() != nullptr); + CHECK_NE(resolved_addr_.value().address(), nullptr); grpc_event_engine::experimental::EventEngine::OnConnectCallback on_connect = [self = RefAsSubclass()]( absl::StatusOr> @@ -299,7 +300,7 @@ void ChaoticGoodConnector::OnHandshakeDone(void* arg, grpc_error_handle error) { } } if (args->endpoint != nullptr) { - GPR_ASSERT(grpc_event_engine::experimental::grpc_is_event_engine_endpoint( + CHECK(grpc_event_engine::experimental::grpc_is_event_engine_endpoint( args->endpoint)); self->control_endpoint_ = PromiseEndpoint( grpc_event_engine::experimental:: diff --git a/src/core/ext/transport/chaotic_good/client/chaotic_good_connector.h b/src/core/ext/transport/chaotic_good/client/chaotic_good_connector.h index 826b6365e6f..90b4abff267 100644 --- a/src/core/ext/transport/chaotic_good/client/chaotic_good_connector.h +++ b/src/core/ext/transport/chaotic_good/client/chaotic_good_connector.h @@ -28,6 +28,7 @@ #include "src/core/client_channel/connector.h" #include "src/core/ext/transport/chttp2/transport/hpack_encoder.h" #include "src/core/ext/transport/chttp2/transport/hpack_parser.h" +#include "src/core/handshaker/handshaker.h" #include "src/core/lib/channel/channel_args.h" #include "src/core/lib/event_engine/channel_args_endpoint_config.h" #include "src/core/lib/gprpp/notification.h" @@ -43,7 +44,6 @@ #include "src/core/lib/resource_quota/arena.h" #include "src/core/lib/resource_quota/memory_quota.h" #include "src/core/lib/resource_quota/resource_quota.h" -#include "src/core/lib/transport/handshaker.h" #include "src/core/lib/transport/promise_endpoint.h" namespace grpc_core { diff --git a/src/core/ext/transport/chaotic_good/client_transport.cc b/src/core/ext/transport/chaotic_good/client_transport.cc index 6b3160e8182..cc1fd8b9a18 100644 --- a/src/core/ext/transport/chaotic_good/client_transport.cc +++ b/src/core/ext/transport/chaotic_good/client_transport.cc @@ -21,6 +21,7 @@ #include #include +#include "absl/log/check.h" #include "absl/random/bit_gen_ref.h" #include "absl/random/random.h" #include "absl/status/statusor.h" @@ -279,7 +280,7 @@ auto ChaoticGoodClientTransport::CallOutboundLoop(uint32_t stream_id, message_length % aligned_bytes == 0 ? 0 : aligned_bytes - message_length % aligned_bytes; - GPR_ASSERT((message_length + padding) % aligned_bytes == 0); + CHECK_EQ((message_length + padding) % aligned_bytes, 0u); frame.message = FragmentMessage(std::move(message), padding, message_length); return send_fragment(std::move(frame)); diff --git a/src/core/ext/transport/chaotic_good/client_transport.h b/src/core/ext/transport/chaotic_good/client_transport.h index 89acb5f8d47..f07099e296f 100644 --- a/src/core/ext/transport/chaotic_good/client_transport.h +++ b/src/core/ext/transport/chaotic_good/client_transport.h @@ -65,8 +65,7 @@ namespace grpc_core { namespace chaotic_good { -class ChaoticGoodClientTransport final : public Transport, - public ClientTransport { +class ChaoticGoodClientTransport final : public ClientTransport { public: ChaoticGoodClientTransport( PromiseEndpoint control_endpoint, PromiseEndpoint data_endpoint, @@ -86,7 +85,7 @@ class ChaoticGoodClientTransport final : public Transport, grpc_endpoint* GetEndpoint() override { return nullptr; } void Orphan() override { AbortWithError(); - delete this; + Unref(); } void StartCall(CallHandler call_handler) override; diff --git a/src/core/ext/transport/chaotic_good/frame.cc b/src/core/ext/transport/chaotic_good/frame.cc index a8aa5f18cad..e54465c29d3 100644 --- a/src/core/ext/transport/chaotic_good/frame.cc +++ b/src/core/ext/transport/chaotic_good/frame.cc @@ -20,6 +20,7 @@ #include #include +#include "absl/log/check.h" #include "absl/status/status.h" #include "absl/status/statusor.h" @@ -152,7 +153,7 @@ absl::StatusOr> ReadMetadata( Arena* arena) { if (!maybe_slices.ok()) return maybe_slices.status(); auto& slices = *maybe_slices; - GPR_ASSERT(arena != nullptr); + CHECK_NE(arena, nullptr); Arena::PoolPtr metadata = Arena::MakePooled(); parser->BeginFrame( metadata.get(), std::numeric_limits::max(), @@ -275,7 +276,7 @@ absl::Status ClientFragmentFrame::Deserialize(HPackParser* parser, } BufferPair ClientFragmentFrame::Serialize(HPackCompressor* encoder) const { - GPR_ASSERT(stream_id != 0); + CHECK_NE(stream_id, 0u); FrameSerializer serializer(FrameType::kFragment, stream_id); if (headers.get() != nullptr) { encoder->EncodeRawHeaders(*headers.get(), serializer.AddHeaders()); @@ -354,7 +355,7 @@ absl::Status ServerFragmentFrame::Deserialize(HPackParser* parser, } BufferPair ServerFragmentFrame::Serialize(HPackCompressor* encoder) const { - GPR_ASSERT(stream_id != 0); + CHECK_NE(stream_id, 0u); FrameSerializer serializer(FrameType::kFragment, stream_id); if (headers.get() != nullptr) { encoder->EncodeRawHeaders(*headers.get(), serializer.AddHeaders()); @@ -399,7 +400,7 @@ absl::Status CancelFrame::Deserialize(HPackParser*, const FrameHeader& header, } BufferPair CancelFrame::Serialize(HPackCompressor*) const { - GPR_ASSERT(stream_id != 0); + CHECK_NE(stream_id, 0u); FrameSerializer serializer(FrameType::kCancel, stream_id); return serializer.Finish(); } diff --git a/src/core/ext/transport/chaotic_good/server/chaotic_good_server.cc b/src/core/ext/transport/chaotic_good/server/chaotic_good_server.cc index c1022e95c43..8af652a292c 100644 --- a/src/core/ext/transport/chaotic_good/server/chaotic_good_server.cc +++ b/src/core/ext/transport/chaotic_good/server/chaotic_good_server.cc @@ -21,6 +21,8 @@ #include #include +#include "absl/log/check.h" +#include "absl/log/log.h" #include "absl/random/bit_gen_ref.h" #include "absl/status/status.h" #include "absl/status/statusor.h" @@ -35,6 +37,7 @@ #include "src/core/ext/transport/chaotic_good/frame_header.h" #include "src/core/ext/transport/chaotic_good/server_transport.h" #include "src/core/ext/transport/chaotic_good/settings_metadata.h" +#include "src/core/handshaker/handshaker.h" #include "src/core/lib/channel/channel_args.h" #include "src/core/lib/event_engine/channel_args_endpoint_config.h" #include "src/core/lib/event_engine/event_engine_context.h" @@ -61,12 +64,11 @@ #include "src/core/lib/resource_quota/resource_quota.h" #include "src/core/lib/slice/slice.h" #include "src/core/lib/slice/slice_buffer.h" -#include "src/core/lib/surface/server.h" #include "src/core/lib/transport/error_utils.h" -#include "src/core/lib/transport/handshaker.h" #include "src/core/lib/transport/metadata.h" #include "src/core/lib/transport/metadata_batch.h" #include "src/core/lib/transport/promise_endpoint.h" +#include "src/core/server/server.h" namespace grpc_core { namespace chaotic_good { @@ -98,12 +100,12 @@ absl::StatusOr ChaoticGoodServerListener::Bind( grpc_event_engine::experimental::EventEngine::ResolvedAddress addr) { if (grpc_chaotic_good_trace.enabled()) { auto str = grpc_event_engine::experimental::ResolvedAddressToString(addr); - gpr_log(GPR_INFO, "CHAOTIC_GOOD: Listen on %s", - str.ok() ? str->c_str() : str.status().ToString().c_str()); + LOG(INFO) << "CHAOTIC_GOOD: Listen on " + << (str.ok() ? str->c_str() : str.status().ToString()); } EventEngine::Listener::AcceptCallback accept_cb = - [self = Ref()](std::unique_ptr ep, - MemoryAllocator) { + [self = RefAsSubclass()]( + std::unique_ptr ep, MemoryAllocator) { ExecCtx exec_ctx; MutexLock lock(&self->mu_); if (self->shutdown_) return; @@ -116,14 +118,13 @@ absl::StatusOr ChaoticGoodServerListener::Bind( StatusToString(status).c_str()); } }; - GPR_ASSERT(event_engine_ != nullptr); + CHECK_NE(event_engine_, nullptr); auto ee_listener = event_engine_->CreateListener( std::move(accept_cb), std::move(shutdown_cb), grpc_event_engine::experimental::ChannelArgsEndpointConfig(args_), std::make_unique("chaotic_good_server_listener")); if (!ee_listener.ok()) { - gpr_log(GPR_ERROR, "Bind failed: %s", - ee_listener.status().ToString().c_str()); + LOG(ERROR) << "Bind failed: " << ee_listener.status().ToString(); return ee_listener.status(); } ee_listener_ = std::move(ee_listener.value()); @@ -135,12 +136,12 @@ absl::StatusOr ChaoticGoodServerListener::Bind( } absl::Status ChaoticGoodServerListener::StartListening() { - GPR_ASSERT(ee_listener_ != nullptr); + CHECK(ee_listener_ != nullptr); auto status = ee_listener_->Start(); if (!status.ok()) { - gpr_log(GPR_ERROR, "Start listening failed: %s", status.ToString().c_str()); + LOG(ERROR) << "Start listening failed: " << status.ToString(); } else if (grpc_chaotic_good_trace.enabled()) { - gpr_log(GPR_INFO, "CHAOTIC_GOOD: Started listening"); + LOG(INFO) << "CHAOTIC_GOOD: Started listening"; } return status; } @@ -148,7 +149,8 @@ absl::Status ChaoticGoodServerListener::StartListening() { ChaoticGoodServerListener::ActiveConnection::ActiveConnection( RefCountedPtr listener, std::unique_ptr endpoint) - : memory_allocator_(listener->memory_allocator_), listener_(listener) { + : memory_allocator_(listener->memory_allocator_), + listener_(std::move(listener)) { handshaking_state_ = MakeRefCounted(Ref()); handshaking_state_->Start(std::move(endpoint)); } @@ -159,7 +161,7 @@ ChaoticGoodServerListener::ActiveConnection::~ActiveConnection() { void ChaoticGoodServerListener::ActiveConnection::Orphan() { if (grpc_chaotic_good_trace.enabled()) { - gpr_log(GPR_INFO, "ActiveConnection::Orphan() %p", this); + LOG(INFO) << "ActiveConnection::Orphan() " << this; } if (handshaking_state_ != nullptr) { handshaking_state_->Shutdown(); @@ -191,8 +193,7 @@ void ChaoticGoodServerListener::ActiveConnection::NewConnectionID() { void ChaoticGoodServerListener::ActiveConnection::Done( absl::optional error) { if (error.has_value()) { - gpr_log(GPR_ERROR, "ActiveConnection::Done:%p %s", this, - std::string(*error).c_str()); + LOG(ERROR) << "ActiveConnection::Done:" << this << " " << *error; } // Can easily be holding various locks here: bounce through EE to ensure no // deadlocks. @@ -383,7 +384,7 @@ auto ChaoticGoodServerListener::ActiveConnection::HandshakingState:: void ChaoticGoodServerListener::ActiveConnection::HandshakingState:: OnHandshakeDone(void* arg, grpc_error_handle error) { auto* args = static_cast(arg); - GPR_ASSERT(args != nullptr); + CHECK_NE(args, nullptr); RefCountedPtr self( static_cast(args->user_data)); grpc_slice_buffer_destroy(args->read_buffer); @@ -397,7 +398,7 @@ void ChaoticGoodServerListener::ActiveConnection::HandshakingState:: self->connection_->Done("Server handshake done but has empty endpoint."); return; } - GPR_ASSERT(grpc_event_engine::experimental::grpc_is_event_engine_endpoint( + CHECK(grpc_event_engine::experimental::grpc_is_event_engine_endpoint( args->endpoint)); auto ee_endpoint = grpc_event_engine::experimental::grpc_take_wrapped_event_engine_endpoint( @@ -457,7 +458,7 @@ Timestamp ChaoticGoodServerListener::ActiveConnection::HandshakingState:: void ChaoticGoodServerListener::Orphan() { if (grpc_chaotic_good_trace.enabled()) { - gpr_log(GPR_INFO, "ChaoticGoodServerListener::Orphan()"); + LOG(INFO) << "ChaoticGoodServerListener::Orphan()"; } { absl::flat_hash_set> connection_list; @@ -479,8 +480,8 @@ int grpc_server_add_chaotic_good_port(grpc_server* server, const char* addr) { const auto resolved_or = grpc_core::GetDNSResolver()->LookupHostnameBlocking( parsed_addr, absl::StrCat(0xd20)); if (!resolved_or.ok()) { - gpr_log(GPR_ERROR, "Failed to resolve %s: %s", addr, - resolved_or.status().ToString().c_str()); + LOG(ERROR) << "Failed to resolve " << addr << ": " + << resolved_or.status().ToString(); return 0; } int port_num = 0; @@ -495,14 +496,14 @@ int grpc_server_add_chaotic_good_port(grpc_server* server, const char* addr) { ->c_str()); auto bind_result = listener->Bind(ee_addr); if (!bind_result.ok()) { - gpr_log(GPR_ERROR, "Failed to bind to %s: %s", addr, - bind_result.status().ToString().c_str()); + LOG(ERROR) << "Failed to bind to " << addr << ": " + << bind_result.status().ToString(); return 0; } if (port_num == 0) { port_num = bind_result.value(); } else { - GPR_ASSERT(port_num == bind_result.value()); + CHECK(port_num == bind_result.value()); } core_server->AddListener(std::move(listener)); } diff --git a/src/core/ext/transport/chaotic_good/server/chaotic_good_server.h b/src/core/ext/transport/chaotic_good/server/chaotic_good_server.h index ed90dd45d1d..0479016c15b 100644 --- a/src/core/ext/transport/chaotic_good/server/chaotic_good_server.h +++ b/src/core/ext/transport/chaotic_good/server/chaotic_good_server.h @@ -29,10 +29,11 @@ #include #include +#include "src/core/channelz/channelz.h" #include "src/core/ext/transport/chttp2/transport/hpack_encoder.h" #include "src/core/ext/transport/chttp2/transport/hpack_parser.h" +#include "src/core/handshaker/handshaker.h" #include "src/core/lib/channel/channel_args.h" -#include "src/core/lib/channel/channelz.h" #include "src/core/lib/gprpp/sync.h" #include "src/core/lib/gprpp/time.h" #include "src/core/lib/iomgr/closure.h" @@ -43,15 +44,12 @@ #include "src/core/lib/resource_quota/memory_quota.h" #include "src/core/lib/resource_quota/resource_quota.h" #include "src/core/lib/slice/slice.h" -#include "src/core/lib/surface/server.h" -#include "src/core/lib/transport/handshaker.h" #include "src/core/lib/transport/promise_endpoint.h" +#include "src/core/server/server.h" namespace grpc_core { namespace chaotic_good { -class ChaoticGoodServerListener final - : public Server::ListenerInterface, - public RefCounted { +class ChaoticGoodServerListener final : public Server::ListenerInterface { public: static absl::AnyInvocable DefaultConnectionIDGenerator() { return [bitgen = absl::BitGen()]() mutable { diff --git a/src/core/ext/transport/chaotic_good/server_transport.cc b/src/core/ext/transport/chaotic_good/server_transport.cc index 7975975203c..98fbf4e915e 100644 --- a/src/core/ext/transport/chaotic_good/server_transport.cc +++ b/src/core/ext/transport/chaotic_good/server_transport.cc @@ -18,6 +18,7 @@ #include #include +#include "absl/log/check.h" #include "absl/random/bit_gen_ref.h" #include "absl/random/random.h" #include "absl/status/status.h" @@ -72,7 +73,7 @@ auto ChaoticGoodServerTransport::TransportWriteLoop( auto ChaoticGoodServerTransport::PushFragmentIntoCall( CallInitiator call_initiator, ClientFragmentFrame frame, uint32_t stream_id) { - GPR_DEBUG_ASSERT(frame.headers == nullptr); + DCHECK(frame.headers == nullptr); if (grpc_chaotic_good_trace.enabled()) { gpr_log(GPR_INFO, "CHAOTIC_GOOD: PushFragmentIntoCall: frame=%s", frame.ToString().c_str()); @@ -167,7 +168,7 @@ auto ChaoticGoodServerTransport::SendCallBody( message_length % aligned_bytes == 0 ? 0 : aligned_bytes - message_length % aligned_bytes; - GPR_ASSERT((message_length + padding) % aligned_bytes == 0); + CHECK_EQ((message_length + padding) % aligned_bytes, 0u); frame.message = FragmentMessage(std::move(message), padding, message_length); frame.stream_id = stream_id; @@ -234,37 +235,27 @@ auto ChaoticGoodServerTransport::DeserializeAndPushFragmentToNewCall( FrameHeader frame_header, BufferPair buffers, ChaoticGoodTransport& transport) { ClientFragmentFrame fragment_frame; - ScopedArenaPtr arena(acceptor_->CreateArena()); + ScopedArenaPtr arena(call_arena_allocator_->MakeArena()); absl::Status status = transport.DeserializeFrame( frame_header, std::move(buffers), arena.get(), fragment_frame, FrameLimits{1024 * 1024 * 1024, aligned_bytes_ - 1}); absl::optional call_initiator; if (status.ok()) { - auto create_call_result = acceptor_->CreateCall( - std::move(fragment_frame.headers), arena.release()); - if (grpc_chaotic_good_trace.enabled()) { - gpr_log(GPR_INFO, - "CHAOTIC_GOOD: DeserializeAndPushFragmentToNewCall: " - "create_call_result=%s", - create_call_result.ok() - ? "ok" - : create_call_result.status().ToString().c_str()); - } - if (create_call_result.ok()) { - call_initiator.emplace(std::move(*create_call_result)); - auto add_result = NewStream(frame_header.stream_id, *call_initiator); - if (add_result.ok()) { - call_initiator->SpawnGuarded( - "server-write", [this, stream_id = frame_header.stream_id, - call_initiator = *call_initiator]() { - return CallOutboundLoop(stream_id, call_initiator); - }); - } else { - call_initiator.reset(); - status = add_result; - } + auto call = + MakeCallPair(std::move(fragment_frame.headers), event_engine_.get(), + arena.release(), call_arena_allocator_, nullptr); + call_initiator.emplace(std::move(call.initiator)); + auto add_result = NewStream(frame_header.stream_id, *call_initiator); + if (add_result.ok()) { + call_destination_->StartCall(std::move(call.handler)); + call_initiator->SpawnGuarded( + "server-write", [this, stream_id = frame_header.stream_id, + call_initiator = *call_initiator]() { + return CallOutboundLoop(stream_id, call_initiator); + }); } else { - status = create_call_result.status(); + call_initiator.reset(); + status = add_result; } } return MaybePushFragmentIntoCall(std::move(call_initiator), std::move(status), @@ -365,10 +356,13 @@ ChaoticGoodServerTransport::ChaoticGoodServerTransport( PromiseEndpoint data_endpoint, std::shared_ptr event_engine, HPackParser hpack_parser, HPackCompressor hpack_encoder) - : outgoing_frames_(4), - allocator_(args.GetObject() - ->memory_quota() - ->CreateMemoryAllocator("chaotic-good")) { + : call_arena_allocator_(MakeRefCounted( + args.GetObject() + ->memory_quota() + ->CreateMemoryAllocator("chaotic-good"), + 1024)), + event_engine_(event_engine), + outgoing_frames_(4) { auto transport = MakeRefCounted( std::move(control_endpoint), std::move(data_endpoint), std::move(hpack_parser), std::move(hpack_encoder)); @@ -380,20 +374,25 @@ ChaoticGoodServerTransport::ChaoticGoodServerTransport( OnTransportActivityDone("reader")); } -void ChaoticGoodServerTransport::SetAcceptor(Acceptor* acceptor) { - GPR_ASSERT(acceptor_ == nullptr); - GPR_ASSERT(acceptor != nullptr); - acceptor_ = acceptor; +void ChaoticGoodServerTransport::SetCallDestination( + RefCountedPtr call_destination) { + CHECK(call_destination_ == nullptr); + CHECK(call_destination != nullptr); + call_destination_ = call_destination; got_acceptor_.Set(); } -ChaoticGoodServerTransport::~ChaoticGoodServerTransport() { - if (writer_ != nullptr) { - writer_.reset(); - } - if (reader_ != nullptr) { - reader_.reset(); +void ChaoticGoodServerTransport::Orphan() { + ActivityPtr writer; + ActivityPtr reader; + { + MutexLock lock(&mu_); + writer = std::move(writer_); + reader = std::move(reader_); } + writer.reset(); + reader.reset(); + Unref(); } void ChaoticGoodServerTransport::AbortWithError() { diff --git a/src/core/ext/transport/chaotic_good/server_transport.h b/src/core/ext/transport/chaotic_good/server_transport.h index 94b6d5b4aae..140641abcf6 100644 --- a/src/core/ext/transport/chaotic_good/server_transport.h +++ b/src/core/ext/transport/chaotic_good/server_transport.h @@ -78,8 +78,7 @@ namespace grpc_core { namespace chaotic_good { -class ChaoticGoodServerTransport final : public Transport, - public ServerTransport { +class ChaoticGoodServerTransport final : public ServerTransport { public: ChaoticGoodServerTransport( const ChannelArgs& args, PromiseEndpoint control_endpoint, @@ -87,7 +86,6 @@ class ChaoticGoodServerTransport final : public Transport, std::shared_ptr event_engine, HPackParser hpack_parser, HPackCompressor hpack_encoder); - ~ChaoticGoodServerTransport() override; FilterStackTransport* filter_stack_transport() override { return nullptr; } ClientTransport* client_transport() override { return nullptr; } @@ -97,9 +95,10 @@ class ChaoticGoodServerTransport final : public Transport, void SetPollsetSet(grpc_stream*, grpc_pollset_set*) override {} void PerformOp(grpc_transport_op*) override; grpc_endpoint* GetEndpoint() override { return nullptr; } - void Orphan() override { delete this; } + void Orphan() override; - void SetAcceptor(Acceptor* acceptor) override; + void SetCallDestination( + RefCountedPtr call_destination) override; void AbortWithError(); private: @@ -138,7 +137,10 @@ class ChaoticGoodServerTransport final : public Transport, auto PushFragmentIntoCall(CallInitiator call_initiator, ClientFragmentFrame frame, uint32_t stream_id); - Acceptor* acceptor_ = nullptr; + RefCountedPtr call_destination_; + const RefCountedPtr call_arena_allocator_; + const std::shared_ptr + event_engine_; InterActivityLatch got_acceptor_; MpscReceiver outgoing_frames_; // Assigned aligned bytes from setting frame. @@ -147,7 +149,6 @@ class ChaoticGoodServerTransport final : public Transport, // Map of stream incoming server frames, key is stream_id. StreamMap stream_map_ ABSL_GUARDED_BY(mu_); uint32_t last_seen_new_stream_id_ = 0; - grpc_event_engine::experimental::MemoryAllocator allocator_; ActivityPtr writer_ ABSL_GUARDED_BY(mu_); ActivityPtr reader_ ABSL_GUARDED_BY(mu_); ConnectivityStateTracker state_tracker_ ABSL_GUARDED_BY(mu_){ diff --git a/src/core/ext/transport/chttp2/alpn/alpn.cc b/src/core/ext/transport/chttp2/alpn/alpn.cc index 1525e0b26c6..cb9c2d6e34d 100644 --- a/src/core/ext/transport/chttp2/alpn/alpn.cc +++ b/src/core/ext/transport/chttp2/alpn/alpn.cc @@ -18,10 +18,12 @@ #include "src/core/ext/transport/chttp2/alpn/alpn.h" +#include "absl/log/check.h" + #include #include -#include "src/core/lib/gpr/useful.h" +#include "src/core/util/useful.h" // in order of preference static const char* const supported_versions[] = {"h2"}; @@ -42,6 +44,6 @@ size_t grpc_chttp2_num_alpn_versions(void) { } const char* grpc_chttp2_get_alpn_version_index(size_t i) { - GPR_ASSERT(i < GPR_ARRAY_SIZE(supported_versions)); + CHECK_LT(i, GPR_ARRAY_SIZE(supported_versions)); return supported_versions[i]; } diff --git a/src/core/ext/transport/chttp2/client/chttp2_connector.cc b/src/core/ext/transport/chttp2/client/chttp2_connector.cc index 4914ea75a78..37f1a565736 100644 --- a/src/core/ext/transport/chttp2/client/chttp2_connector.cc +++ b/src/core/ext/transport/chttp2/client/chttp2_connector.cc @@ -24,6 +24,8 @@ #include #include +#include "absl/log/check.h" +#include "absl/log/log.h" #include "absl/status/status.h" #include "absl/status/statusor.h" #include "absl/strings/str_format.h" @@ -38,15 +40,18 @@ #include #include +#include "src/core/channelz/channelz.h" #include "src/core/client_channel/client_channel_factory.h" #include "src/core/client_channel/client_channel_filter.h" #include "src/core/client_channel/connector.h" #include "src/core/client_channel/subchannel.h" #include "src/core/ext/transport/chttp2/transport/chttp2_transport.h" +#include "src/core/handshaker/handshaker.h" +#include "src/core/handshaker/handshaker_registry.h" +#include "src/core/handshaker/tcp_connect/tcp_connect_handshaker.h" #include "src/core/lib/address_utils/sockaddr_utils.h" #include "src/core/lib/channel/channel_args.h" #include "src/core/lib/channel/channel_args_preconditioning.h" -#include "src/core/lib/channel/channelz.h" #include "src/core/lib/config/core_configuration.h" #include "src/core/lib/debug/trace.h" #include "src/core/lib/event_engine/channel_args_endpoint_config.h" @@ -66,9 +71,6 @@ #include "src/core/lib/surface/channel_create.h" #include "src/core/lib/surface/channel_stack_type.h" #include "src/core/lib/transport/error_utils.h" -#include "src/core/lib/transport/handshaker.h" -#include "src/core/lib/transport/handshaker_registry.h" -#include "src/core/lib/transport/tcp_connect_handshaker.h" #include "src/core/lib/transport/transport.h" #include "src/core/resolver/resolver_registry.h" @@ -104,11 +106,11 @@ void Chttp2Connector::Connect(const Args& args, Result* result, grpc_closure* notify) { { MutexLock lock(&mu_); - GPR_ASSERT(notify_ == nullptr); + CHECK_EQ(notify_, nullptr); args_ = args; result_ = result; notify_ = notify; - GPR_ASSERT(endpoint_ == nullptr); + CHECK_EQ(endpoint_, nullptr); event_engine_ = args_.channel_args.GetObject(); } absl::StatusOr address = grpc_sockaddr_to_uri(args.address); @@ -166,7 +168,7 @@ void Chttp2Connector::OnHandshakeDone(void* arg, grpc_error_handle error) { } else if (args->endpoint != nullptr) { self->result_->transport = grpc_create_chttp2_transport(args->args, args->endpoint, true); - GPR_ASSERT(self->result_->transport != nullptr); + CHECK_NE(self->result_->transport, nullptr); self->result_->socket_node = grpc_chttp2_transport_get_socket_node(self->result_->transport); self->result_->channel_args = args->args; @@ -188,7 +190,7 @@ void Chttp2Connector::OnHandshakeDone(void* arg, grpc_error_handle error) { // If the handshaking succeeded but there is no endpoint, then the // handshaker may have handed off the connection to some external // code. Just verify that exit_early flag is set. - GPR_DEBUG_ASSERT(args->exit_early); + DCHECK(args->exit_early); NullThenSchedClosure(DEBUG_LOCATION, &self->notify_, error); } self->handshake_mgr_.reset(); @@ -310,7 +312,7 @@ class Chttp2SecureClientChannelFactory : public ClientChannelFactory { absl::StatusOr> CreateChannel(const char* target, const ChannelArgs& args) { if (target == nullptr) { - gpr_log(GPR_ERROR, "cannot create channel with NULL target name"); + LOG(ERROR) << "cannot create channel with NULL target name"; return absl::InvalidArgumentError("channel target is NULL"); } return ChannelCreate(target, args, GRPC_CLIENT_CHANNEL, nullptr); @@ -396,14 +398,14 @@ grpc_channel* grpc_channel_create_from_fd(const char* target, int fd, .SetObject(creds->Ref()); int flags = fcntl(fd, F_GETFL, 0); - GPR_ASSERT(fcntl(fd, F_SETFL, flags | O_NONBLOCK) == 0); + CHECK_EQ(fcntl(fd, F_SETFL, flags | O_NONBLOCK), 0); grpc_endpoint* client = grpc_tcp_create_from_fd( grpc_fd_create(fd, "client", true), grpc_event_engine::experimental::ChannelArgsEndpointConfig(final_args), "fd-client"); grpc_core::Transport* transport = grpc_create_chttp2_transport(final_args, client, true); - GPR_ASSERT(transport); + CHECK(transport); auto channel = grpc_core::ChannelCreate( target, final_args, GRPC_CLIENT_DIRECT_CHANNEL, transport); if (channel.ok()) { @@ -424,7 +426,7 @@ grpc_channel* grpc_channel_create_from_fd(const char* /* target */, int /* fd */, grpc_channel_credentials* /* creds*/, const grpc_channel_args* /* args */) { - GPR_ASSERT(0); + CHECK(0); return nullptr; } diff --git a/src/core/ext/transport/chttp2/client/chttp2_connector.h b/src/core/ext/transport/chttp2/client/chttp2_connector.h index f12090b01bc..ffc90228655 100644 --- a/src/core/ext/transport/chttp2/client/chttp2_connector.h +++ b/src/core/ext/transport/chttp2/client/chttp2_connector.h @@ -26,12 +26,12 @@ #include #include "src/core/client_channel/connector.h" +#include "src/core/handshaker/handshaker.h" #include "src/core/lib/gprpp/ref_counted_ptr.h" #include "src/core/lib/gprpp/sync.h" #include "src/core/lib/iomgr/closure.h" #include "src/core/lib/iomgr/endpoint.h" #include "src/core/lib/iomgr/error.h" -#include "src/core/lib/transport/handshaker.h" namespace grpc_core { diff --git a/src/core/ext/transport/chttp2/server/chttp2_server.cc b/src/core/ext/transport/chttp2/server/chttp2_server.cc index 2e97b207ed2..3388e234fd9 100644 --- a/src/core/ext/transport/chttp2/server/chttp2_server.cc +++ b/src/core/ext/transport/chttp2/server/chttp2_server.cc @@ -29,6 +29,8 @@ #include #include "absl/base/thread_annotations.h" +#include "absl/log/check.h" +#include "absl/log/log.h" #include "absl/status/status.h" #include "absl/status/statusor.h" #include "absl/strings/str_cat.h" @@ -41,20 +43,24 @@ #include #include #include +#include #include #include -#include #include +#include "src/core/channelz/channelz.h" #include "src/core/ext/transport/chttp2/transport/chttp2_transport.h" #include "src/core/ext/transport/chttp2/transport/internal.h" #include "src/core/ext/transport/chttp2/transport/legacy_frame.h" +#include "src/core/handshaker/handshaker.h" +#include "src/core/handshaker/handshaker_registry.h" #include "src/core/lib/address_utils/sockaddr_utils.h" #include "src/core/lib/channel/channel_args.h" -#include "src/core/lib/channel/channelz.h" #include "src/core/lib/config/core_configuration.h" #include "src/core/lib/debug/trace.h" #include "src/core/lib/event_engine/channel_args_endpoint_config.h" +#include "src/core/lib/event_engine/extensions/supports_fd.h" +#include "src/core/lib/event_engine/query_extensions.h" #include "src/core/lib/gprpp/debug_location.h" #include "src/core/lib/gprpp/orphanable.h" #include "src/core/lib/gprpp/ref_counted_ptr.h" @@ -64,6 +70,7 @@ #include "src/core/lib/gprpp/unique_type_name.h" #include "src/core/lib/iomgr/closure.h" #include "src/core/lib/iomgr/endpoint.h" +#include "src/core/lib/iomgr/event_engine_shims/endpoint.h" #include "src/core/lib/iomgr/iomgr_fwd.h" #include "src/core/lib/iomgr/pollset_set.h" #include "src/core/lib/iomgr/resolve_address.h" @@ -78,12 +85,10 @@ #include "src/core/lib/security/credentials/insecure/insecure_credentials.h" #include "src/core/lib/security/security_connector/security_connector.h" #include "src/core/lib/surface/api_trace.h" -#include "src/core/lib/surface/server.h" #include "src/core/lib/transport/error_utils.h" -#include "src/core/lib/transport/handshaker.h" -#include "src/core/lib/transport/handshaker_registry.h" #include "src/core/lib/transport/transport.h" #include "src/core/lib/uri/uri_parser.h" +#include "src/core/server/server.h" #ifdef GPR_SUPPORT_CHANNELS_FROM_FD #include "src/core/lib/iomgr/ev_posix.h" @@ -92,9 +97,11 @@ #endif // GPR_SUPPORT_CHANNELS_FROM_FD namespace grpc_core { -namespace { -using ::grpc_event_engine::experimental::EventEngine; +using grpc_event_engine::experimental::ChannelArgsEndpointConfig; +using grpc_event_engine::experimental::EventEngine; +using grpc_event_engine::experimental::EventEngineSupportsFdExtension; +using grpc_event_engine::experimental::QueryExtension; const char kUnixUriPrefix[] = "unix:"; const char kUnixAbstractUriPrefix[] = "unix-abstract:"; @@ -111,14 +118,23 @@ class Chttp2ServerListener : public Server::ListenerInterface { Server* server, const char* name, const ChannelArgs& args, Chttp2ServerArgsModifier args_modifier); + static Chttp2ServerListener* CreateForPassiveListener( + Server* server, const ChannelArgs& args, + std::shared_ptr passive_listener); + // Do not instantiate directly. Use one of the factory methods above. Chttp2ServerListener(Server* server, const ChannelArgs& args, - Chttp2ServerArgsModifier args_modifier); + Chttp2ServerArgsModifier args_modifier, + grpc_server_config_fetcher* config_fetcher, + std::shared_ptr + passive_listener = nullptr); ~Chttp2ServerListener() override; void Start(Server* server, const std::vector* pollsets) override; + void AcceptConnectedEndpoint(std::unique_ptr endpoint); + channelz::ListenSocketNode* channelz_listen_socket_node() const override { return channelz_listen_socket_.get(); } @@ -128,6 +144,8 @@ class Chttp2ServerListener : public Server::ListenerInterface { void Orphan() override; private: + friend class experimental::PassiveListenerImpl; + class ConfigFetcherWatcher : public grpc_server_config_fetcher::WatcherInterface { public: @@ -234,34 +252,8 @@ class Chttp2ServerListener : public Server::ListenerInterface { static void DestroyListener(Server* /*server*/, void* arg, grpc_closure* destroy_done); - // The interface required by RefCountedPtr<> has been manually implemented - // here to take a ref on tcp_server_ instead. Note that, the handshaker - // needs tcp_server_ to exist for the lifetime of the handshake since it's - // needed by acceptor. Sharing refs between the listener and tcp_server_ is - // just an optimization to avoid taking additional refs on the listener, - // since TcpServerShutdownComplete already holds a ref to the listener. - void IncrementRefCount() { grpc_tcp_server_ref(tcp_server_); } - void IncrementRefCount(const DebugLocation& /* location */, - const char* /* reason */) { - IncrementRefCount(); - } - - GRPC_MUST_USE_RESULT RefCountedPtr Ref() { - IncrementRefCount(); - return RefCountedPtr(this); - } - GRPC_MUST_USE_RESULT RefCountedPtr Ref( - const DebugLocation& /* location */, const char* /* reason */) { - return Ref(); - } - - void Unref() { grpc_tcp_server_unref(tcp_server_); } - void Unref(const DebugLocation& /* location */, const char* /* reason */) { - Unref(); - } - - Server* const server_; - grpc_tcp_server* tcp_server_; + Server* const server_ = nullptr; + grpc_tcp_server* tcp_server_ = nullptr; grpc_resolved_address resolved_address_; Chttp2ServerArgsModifier const args_modifier_; ConfigFetcherWatcher* config_fetcher_watcher_ = nullptr; @@ -284,6 +276,10 @@ class Chttp2ServerListener : public Server::ListenerInterface { RefCountedPtr channelz_listen_socket_; MemoryQuotaRefPtr memory_quota_; ConnectionQuotaRefPtr connection_quota_; + grpc_server_config_fetcher* config_fetcher_ = nullptr; + // TODO(yashykt): consider using absl::variant<> to minimize memory usage for + // disjoint cases where different fields are used. + std::shared_ptr passive_listener_; }; // @@ -308,7 +304,7 @@ void Chttp2ServerListener::ConfigFetcherWatcher::UpdateConnectionManager( void set_connections( std::map> connections) { - GPR_ASSERT(connections_.empty()); + CHECK(connections_.empty()); connections_ = std::move(connections); } @@ -330,11 +326,10 @@ void Chttp2ServerListener::ConfigFetcherWatcher::UpdateConnectionManager( grpc_error_handle error = grpc_tcp_server_add_port( listener_->tcp_server_, &listener_->resolved_address_, &port_temp); if (!error.ok()) { - gpr_log(GPR_ERROR, "Error adding port to server: %s", - StatusToString(error).c_str()); + LOG(ERROR) << "Error adding port to server: " << StatusToString(error); // TODO(yashykt): We wouldn't need to assert here if we bound to the // port earlier during AddPort. - GPR_ASSERT(0); + CHECK(0); } listener_->StartListening(); { @@ -380,13 +375,17 @@ Chttp2ServerListener::ActiveConnection::HandshakingState::HandshakingState( handshake_mgr_(MakeRefCounted()), deadline_(GetConnectionDeadline(args)), interested_parties_(grpc_pollset_set_create()) { - grpc_pollset_set_add_pollset(interested_parties_, accepting_pollset_); + if (accepting_pollset != nullptr) { + grpc_pollset_set_add_pollset(interested_parties_, accepting_pollset_); + } CoreConfiguration::Get().handshaker_registry().AddHandshakers( HANDSHAKER_SERVER, args, interested_parties_, handshake_mgr_.get()); } Chttp2ServerListener::ActiveConnection::HandshakingState::~HandshakingState() { - grpc_pollset_set_del_pollset(interested_parties_, accepting_pollset_); + if (accepting_pollset_ != nullptr) { + grpc_pollset_set_del_pollset(interested_parties_, accepting_pollset_); + } grpc_pollset_set_destroy(interested_parties_); gpr_free(acceptor_); } @@ -535,8 +534,8 @@ void Chttp2ServerListener::ActiveConnection::HandshakingState::OnHandshakeDone( }); } else { // Failed to create channel from transport. Clean up. - gpr_log(GPR_ERROR, "Failed to create channel: %s", - StatusToString(channel_init_err).c_str()); + LOG(ERROR) << "Failed to create channel: " + << StatusToString(channel_init_err); transport->Orphan(); grpc_slice_buffer_destroy(args->read_buffer); gpr_free(args->read_buffer); @@ -588,7 +587,11 @@ Chttp2ServerListener::ActiveConnection::ActiveConnection( grpc_schedule_on_exec_ctx); } -Chttp2ServerListener::ActiveConnection::~ActiveConnection() {} +Chttp2ServerListener::ActiveConnection::~ActiveConnection() { + if (listener_ != nullptr && listener_->tcp_server_ != nullptr) { + grpc_tcp_server_unref(listener_->tcp_server_); + } +} void Chttp2ServerListener::ActiveConnection::Orphan() { OrphanablePtr handshaking_state; @@ -636,6 +639,9 @@ void Chttp2ServerListener::ActiveConnection::Start( const ChannelArgs& args) { RefCountedPtr handshaking_state_ref; listener_ = std::move(listener); + if (listener_->tcp_server_ != nullptr) { + grpc_tcp_server_ref(listener_->tcp_server_); + } { ReleasableMutexLock lock(&mu_); if (shutdown_) { @@ -708,83 +714,82 @@ void Chttp2ServerListener::ActiveConnection::OnDrainGraceTimeExpiry() { grpc_error_handle Chttp2ServerListener::Create( Server* server, grpc_resolved_address* addr, const ChannelArgs& args, Chttp2ServerArgsModifier args_modifier, int* port_num) { - Chttp2ServerListener* listener = nullptr; - // The bulk of this method is inside of a lambda to make cleanup - // easier without using goto. - grpc_error_handle error = [&]() { - grpc_error_handle error; - // Create Chttp2ServerListener. - listener = new Chttp2ServerListener(server, args, args_modifier); - error = grpc_tcp_server_create( - &listener->tcp_server_shutdown_complete_, - grpc_event_engine::experimental::ChannelArgsEndpointConfig(args), - OnAccept, listener, &listener->tcp_server_); + // Create Chttp2ServerListener. + OrphanablePtr listener = + MakeOrphanable(server, args, args_modifier, + server->config_fetcher()); + // The tcp_server will be unreffed when the listener is orphaned, which could + // be at the end of this function if the listener was not added to the + // server's set of listeners. + grpc_error_handle error = grpc_tcp_server_create( + &listener->tcp_server_shutdown_complete_, ChannelArgsEndpointConfig(args), + OnAccept, listener.get(), &listener->tcp_server_); + if (!error.ok()) return error; + if (listener->config_fetcher_ != nullptr) { + listener->resolved_address_ = *addr; + // TODO(yashykt): Consider binding so as to be able to return the port + // number. + } else { + error = grpc_tcp_server_add_port(listener->tcp_server_, addr, port_num); if (!error.ok()) return error; - if (server->config_fetcher() != nullptr) { - listener->resolved_address_ = *addr; - // TODO(yashykt): Consider binding so as to be able to return the port - // number. - } else { - error = grpc_tcp_server_add_port(listener->tcp_server_, addr, port_num); - if (!error.ok()) return error; - } - // Create channelz node. - if (args.GetBool(GRPC_ARG_ENABLE_CHANNELZ) - .value_or(GRPC_ENABLE_CHANNELZ_DEFAULT)) { - auto string_address = grpc_sockaddr_to_uri(addr); - if (!string_address.ok()) { - return GRPC_ERROR_CREATE(string_address.status().ToString()); - } - listener->channelz_listen_socket_ = - MakeRefCounted( - *string_address, - absl::StrCat("chttp2 listener ", *string_address)); - } - // Register with the server only upon success - server->AddListener(OrphanablePtr(listener)); - return absl::OkStatus(); - }(); - if (!error.ok()) { - if (listener != nullptr) { - if (listener->tcp_server_ != nullptr) { - // listener is deleted when tcp_server_ is shutdown. - grpc_tcp_server_unref(listener->tcp_server_); - } else { - delete listener; - } + } + // Create channelz node. + if (args.GetBool(GRPC_ARG_ENABLE_CHANNELZ) + .value_or(GRPC_ENABLE_CHANNELZ_DEFAULT)) { + auto string_address = grpc_sockaddr_to_uri(addr); + if (!string_address.ok()) { + return GRPC_ERROR_CREATE(string_address.status().ToString()); } + listener->channelz_listen_socket_ = + MakeRefCounted( + *string_address, absl::StrCat("chttp2 listener ", *string_address)); } - return error; + // Register with the server only upon success + server->AddListener(std::move(listener)); + return absl::OkStatus(); } grpc_error_handle Chttp2ServerListener::CreateWithAcceptor( Server* server, const char* name, const ChannelArgs& args, Chttp2ServerArgsModifier args_modifier) { - Chttp2ServerListener* listener = - new Chttp2ServerListener(server, args, args_modifier); + auto listener = MakeOrphanable( + server, args, args_modifier, server->config_fetcher()); grpc_error_handle error = grpc_tcp_server_create( - &listener->tcp_server_shutdown_complete_, - grpc_event_engine::experimental::ChannelArgsEndpointConfig(args), - OnAccept, listener, &listener->tcp_server_); - if (!error.ok()) { - delete listener; - return error; - } + &listener->tcp_server_shutdown_complete_, ChannelArgsEndpointConfig(args), + OnAccept, listener.get(), &listener->tcp_server_); + if (!error.ok()) return error; // TODO(yangg) channelz TcpServerFdHandler** arg_val = args.GetPointer(name); *arg_val = grpc_tcp_server_create_fd_handler(listener->tcp_server_); - server->AddListener(OrphanablePtr(listener)); + server->AddListener(std::move(listener)); return absl::OkStatus(); } +Chttp2ServerListener* Chttp2ServerListener::CreateForPassiveListener( + Server* server, const ChannelArgs& args, + std::shared_ptr passive_listener) { + // TODO(hork): figure out how to handle channelz in this case + auto listener = MakeOrphanable( + server, args, /*args_modifier=*/ + [](const ChannelArgs& args, grpc_error_handle*) { return args; }, nullptr, + std::move(passive_listener)); + auto listener_ptr = listener.get(); + server->AddListener(std::move(listener)); + return listener_ptr; +} + Chttp2ServerListener::Chttp2ServerListener( Server* server, const ChannelArgs& args, - Chttp2ServerArgsModifier args_modifier) + Chttp2ServerArgsModifier args_modifier, + grpc_server_config_fetcher* config_fetcher, + std::shared_ptr passive_listener) : server_(server), args_modifier_(args_modifier), args_(args), memory_quota_(args.GetObject()->memory_quota()), - connection_quota_(MakeRefCounted()) { + connection_quota_(MakeRefCounted()), + config_fetcher_(config_fetcher), + passive_listener_(std::move(passive_listener)) { auto max_allowed_incoming_connections = args.GetInt(GRPC_ARG_MAX_ALLOWED_INCOMING_CONNECTIONS); if (max_allowed_incoming_connections.has_value()) { @@ -799,6 +804,9 @@ Chttp2ServerListener::~Chttp2ServerListener() { // Flush queued work before destroying handshaker factory, since that // may do a synchronous unref. ExecCtx::Get()->Flush(); + if (passive_listener_ != nullptr) { + passive_listener_->ListenerDestroyed(); + } if (on_destroy_done_ != nullptr) { ExecCtx::Run(DEBUG_LOCATION, on_destroy_done_, absl::OkStatus()); ExecCtx::Get()->Flush(); @@ -808,10 +816,11 @@ Chttp2ServerListener::~Chttp2ServerListener() { // Server callback: start listening on our ports void Chttp2ServerListener::Start( Server* /*server*/, const std::vector* /* pollsets */) { - if (server_->config_fetcher() != nullptr) { - auto watcher = std::make_unique(Ref()); + if (config_fetcher_ != nullptr) { + auto watcher = std::make_unique( + RefAsSubclass()); config_fetcher_watcher_ = watcher.get(); - server_->config_fetcher()->StartWatch( + config_fetcher_->StartWatch( grpc_sockaddr_to_string(&resolved_address_, false).value(), std::move(watcher)); } else { @@ -825,7 +834,9 @@ void Chttp2ServerListener::Start( } void Chttp2ServerListener::StartListening() { - grpc_tcp_server_start(tcp_server_, &server_->pollsets()); + if (tcp_server_ != nullptr) { + grpc_tcp_server_start(tcp_server_, &server_->pollsets()); + } } void Chttp2ServerListener::SetOnDestroyDone(grpc_closure* on_destroy_done) { @@ -833,6 +844,12 @@ void Chttp2ServerListener::SetOnDestroyDone(grpc_closure* on_destroy_done) { on_destroy_done_ = on_destroy_done; } +void Chttp2ServerListener::AcceptConnectedEndpoint( + std::unique_ptr endpoint) { + OnAccept(this, grpc_event_engine_endpoint_create(std::move(endpoint)), + /*accepting_pollset=*/nullptr, /*acceptor=*/nullptr); +} + void Chttp2ServerListener::OnAccept(void* arg, grpc_endpoint* tcp, grpc_pollset* accepting_pollset, grpc_tcp_server_acceptor* acceptor) { @@ -857,7 +874,7 @@ void Chttp2ServerListener::OnAccept(void* arg, grpc_endpoint* tcp, endpoint_cleanup(error); return; } - if (self->server_->config_fetcher() != nullptr) { + if (self->config_fetcher_ != nullptr) { if (connection_manager == nullptr) { grpc_error_handle error = GRPC_ERROR_CREATE( "No ConnectionManager configured. Closing connection."); @@ -898,7 +915,7 @@ void Chttp2ServerListener::OnAccept(void* arg, grpc_endpoint* tcp, // heap-use-after-free issues where `Ref()` is invoked when the ref of // tcp_server_ has already reached 0. (Ref() implementation of // Chttp2ServerListener is grpc_tcp_server_ref().) - listener_ref = self->Ref(); + listener_ref = self->RefAsSubclass(); self->connections_.emplace(connection.get(), std::move(connection)); } } @@ -913,7 +930,7 @@ void Chttp2ServerListener::TcpServerShutdownComplete( void* arg, grpc_error_handle /*error*/) { Chttp2ServerListener* self = static_cast(arg); self->channelz_listen_socket_.reset(); - delete self; + self->Unref(); } // Server callback: destroy the tcp listener (so we don't generate further @@ -922,7 +939,8 @@ void Chttp2ServerListener::Orphan() { // Cancel the watch before shutting down so as to avoid holding a ref to the // listener in the watcher. if (config_fetcher_watcher_ != nullptr) { - server_->config_fetcher()->CancelWatch(config_fetcher_watcher_); + CHECK_NE(config_fetcher_, nullptr); + config_fetcher_->CancelWatch(config_fetcher_watcher_); } std::map> connections; grpc_tcp_server* tcp_server; @@ -940,12 +958,14 @@ void Chttp2ServerListener::Orphan() { } tcp_server = tcp_server_; } - grpc_tcp_server_shutdown_listeners(tcp_server); - grpc_tcp_server_unref(tcp_server); + if (tcp_server != nullptr) { + grpc_tcp_server_shutdown_listeners(tcp_server); + grpc_tcp_server_unref(tcp_server); + } else { + Unref(); + } } -} // namespace - // // Chttp2ServerAddPort() // @@ -1000,7 +1020,7 @@ grpc_error_handle Chttp2ServerAddPort(Server* server, const char* addr, if (*port_num == -1) { *port_num = port_temp; } else { - GPR_ASSERT(*port_num == port_temp); + CHECK(*port_num == port_temp); } } } @@ -1017,7 +1037,7 @@ grpc_error_handle Chttp2ServerAddPort(Server* server, const char* addr, resolved_or->size() - error_list.size(), resolved_or->size()); error = GRPC_ERROR_CREATE_REFERENCING(msg.c_str(), error_list.data(), error_list.size()); - gpr_log(GPR_INFO, "WARNING: %s", StatusToString(error).c_str()); + LOG(INFO) << "WARNING: " << StatusToString(error); // we managed to bind some addresses: continue without error } return absl::OkStatus(); @@ -1046,6 +1066,50 @@ ChannelArgs ModifyArgsForConnection(const ChannelArgs& args, } } // namespace + +namespace experimental { + +absl::Status PassiveListenerImpl::AcceptConnectedEndpoint( + std::unique_ptr endpoint) { + CHECK_NE(server_.get(), nullptr); + RefCountedPtr listener; + { + MutexLock lock(&mu_); + if (listener_ != nullptr) { + listener = + listener_->RefIfNonZero().TakeAsSubclass(); + } + } + if (listener == nullptr) { + return absl::UnavailableError("passive listener already shut down"); + } + ExecCtx exec_ctx; + listener->AcceptConnectedEndpoint(std::move(endpoint)); + return absl::OkStatus(); +} + +absl::Status PassiveListenerImpl::AcceptConnectedFd(int fd) { + CHECK_NE(server_.get(), nullptr); + ExecCtx exec_ctx; + auto& args = server_->channel_args(); + auto* supports_fd = QueryExtension( + /*engine=*/args.GetObjectRef().get()); + if (supports_fd == nullptr) { + return absl::UnimplementedError( + "The server's EventEngine does not support adding endpoints from " + "connected file descriptors."); + } + auto endpoint = + supports_fd->CreateEndpointFromFd(fd, ChannelArgsEndpointConfig(args)); + return AcceptConnectedEndpoint(std::move(endpoint)); +} + +void PassiveListenerImpl::ListenerDestroyed() { + MutexLock lock(&mu_); + listener_ = nullptr; +} + +} // namespace experimental } // namespace grpc_core int grpc_server_add_http2_port(grpc_server* server, const char* addr, @@ -1093,7 +1157,7 @@ int grpc_server_add_http2_port(grpc_server* server, const char* addr, done: sc.reset(DEBUG_LOCATION, "server"); if (!err.ok()) { - gpr_log(GPR_ERROR, "%s", grpc_core::StatusToString(err).c_str()); + LOG(ERROR) << grpc_core::StatusToString(err); } return port_num; } @@ -1104,7 +1168,7 @@ void grpc_server_add_channel_from_fd(grpc_server* server, int fd, // For now, we only support insecure server credentials if (creds == nullptr || creds->type() != grpc_core::InsecureServerCredentials::Type()) { - gpr_log(GPR_ERROR, "Failed to create channel due to invalid creds"); + LOG(ERROR) << "Failed to create channel due to invalid creds"; return; } grpc_core::ExecCtx exec_ctx; @@ -1129,8 +1193,8 @@ void grpc_server_add_channel_from_fd(grpc_server* server, int fd, } grpc_chttp2_transport_start_reading(transport, nullptr, nullptr, nullptr); } else { - gpr_log(GPR_ERROR, "Failed to create channel: %s", - grpc_core::StatusToString(error).c_str()); + LOG(ERROR) << "Failed to create channel: " + << grpc_core::StatusToString(error); transport->Orphan(); } } @@ -1139,7 +1203,35 @@ void grpc_server_add_channel_from_fd(grpc_server* server, int fd, void grpc_server_add_channel_from_fd(grpc_server* /* server */, int /* fd */, grpc_server_credentials* /* creds */) { - GPR_ASSERT(0); + CHECK(0); } #endif // GPR_SUPPORT_CHANNELS_FROM_FD + +absl::Status grpc_server_add_passive_listener( + grpc_core::Server* server, grpc_server_credentials* credentials, + std::shared_ptr + passive_listener) { + grpc_core::ExecCtx exec_ctx; + GRPC_API_TRACE("grpc_server_add_passive_listener(server=%p, credentials=%p)", + 2, (server, credentials)); + // Create security context. + if (credentials == nullptr) { + return absl::UnavailableError( + "No credentials specified for passive listener"); + } + auto sc = credentials->create_security_connector(grpc_core::ChannelArgs()); + if (sc == nullptr) { + return absl::UnavailableError( + absl::StrCat("Unable to create secure server with credentials of type ", + credentials->type().name())); + } + auto args = server->channel_args() + .SetObject(credentials->Ref()) + .SetObject(std::move(sc)); + passive_listener->listener_ = + grpc_core::Chttp2ServerListener::CreateForPassiveListener( + server, args, passive_listener); + passive_listener->server_ = server->Ref(); + return absl::OkStatus(); +} diff --git a/src/core/ext/transport/chttp2/server/chttp2_server.h b/src/core/ext/transport/chttp2/server/chttp2_server.h index f7eb7a23c66..25d38236aed 100644 --- a/src/core/ext/transport/chttp2/server/chttp2_server.h +++ b/src/core/ext/transport/chttp2/server/chttp2_server.h @@ -21,11 +21,12 @@ #include +#include #include #include "src/core/lib/channel/channel_args.h" #include "src/core/lib/iomgr/error.h" -#include "src/core/lib/surface/server.h" +#include "src/core/server/server.h" namespace grpc_core { @@ -42,6 +43,38 @@ grpc_error_handle Chttp2ServerAddPort( Server* server, const char* addr, const ChannelArgs& args, Chttp2ServerArgsModifier connection_args_modifier, int* port_num); +class Chttp2ServerListener; +namespace experimental { + +// An implementation of the public C++ passive listener interface. +// The server builder holds a weak_ptr to one of these objects, and the +// application owns the instance. +class PassiveListenerImpl final : public PassiveListener { + public: + absl::Status AcceptConnectedEndpoint( + std::unique_ptr + endpoint) override ABSL_LOCKS_EXCLUDED(mu_); + + absl::Status AcceptConnectedFd(GRPC_UNUSED int fd) override + ABSL_LOCKS_EXCLUDED(mu_); + + void ListenerDestroyed() ABSL_LOCKS_EXCLUDED(mu_); + + private: + // note: the grpc_core::Server redundant namespace qualification is + // required for older gcc versions. + friend absl::Status(::grpc_server_add_passive_listener)( + grpc_core::Server* server, grpc_server_credentials* credentials, + std::shared_ptr + passive_listener); + + Mutex mu_; + // Data members will be populated when initialized. + RefCountedPtr server_; + Chttp2ServerListener* listener_; +}; + +} // namespace experimental } // namespace grpc_core #endif // GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_SERVER_CHTTP2_SERVER_H diff --git a/src/core/ext/transport/chttp2/transport/.clang-format b/src/core/ext/transport/chttp2/transport/.clang-format index 64387e9e515..5f150ef6edb 100644 --- a/src/core/ext/transport/chttp2/transport/.clang-format +++ b/src/core/ext/transport/chttp2/transport/.clang-format @@ -5,9 +5,6 @@ DerivePointerAlignment: false PointerAlignment: Left IncludeBlocks: Regroup IncludeCategories: - # port_platform.h is before almost everything - - Regex: '^' - Priority: -100 # ruby.h is even more first if it's included - Regex: '^' Priority: -200 diff --git a/src/core/ext/transport/chttp2/transport/bin_decoder.cc b/src/core/ext/transport/chttp2/transport/bin_decoder.cc index be22231b074..ff23af19c33 100644 --- a/src/core/ext/transport/chttp2/transport/bin_decoder.cc +++ b/src/core/ext/transport/chttp2/transport/bin_decoder.cc @@ -16,14 +16,14 @@ // // -#include - #include "src/core/ext/transport/chttp2/transport/bin_decoder.h" #include "absl/base/attributes.h" +#include "absl/log/check.h" #include #include +#include #include "src/core/lib/slice/slice.h" @@ -199,8 +199,8 @@ grpc_slice grpc_chttp2_base64_decode(const grpc_slice& input) { grpc_core::CSliceUnref(output); return grpc_empty_slice(); } - GPR_ASSERT(ctx.output_cur == GRPC_SLICE_END_PTR(output)); - GPR_ASSERT(ctx.input_cur == GRPC_SLICE_END_PTR(input)); + CHECK(ctx.output_cur == GRPC_SLICE_END_PTR(output)); + CHECK(ctx.input_cur == GRPC_SLICE_END_PTR(input)); return output; } @@ -246,7 +246,7 @@ grpc_slice grpc_chttp2_base64_decode_with_length(const grpc_slice& input, grpc_core::CSliceUnref(output); return grpc_empty_slice(); } - GPR_ASSERT(ctx.output_cur == GRPC_SLICE_END_PTR(output)); - GPR_ASSERT(ctx.input_cur <= GRPC_SLICE_END_PTR(input)); + CHECK(ctx.output_cur == GRPC_SLICE_END_PTR(output)); + CHECK(ctx.input_cur <= GRPC_SLICE_END_PTR(input)); return output; } diff --git a/src/core/ext/transport/chttp2/transport/bin_decoder.h b/src/core/ext/transport/chttp2/transport/bin_decoder.h index a8eacc134fa..fc87450d365 100644 --- a/src/core/ext/transport/chttp2/transport/bin_decoder.h +++ b/src/core/ext/transport/chttp2/transport/bin_decoder.h @@ -19,12 +19,11 @@ #ifndef GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_BIN_DECODER_H #define GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_BIN_DECODER_H -#include - #include #include #include +#include struct grpc_base64_decode_context { // input/output: diff --git a/src/core/ext/transport/chttp2/transport/bin_encoder.cc b/src/core/ext/transport/chttp2/transport/bin_encoder.cc index 033b4cb2252..cf024f03d49 100644 --- a/src/core/ext/transport/chttp2/transport/bin_encoder.cc +++ b/src/core/ext/transport/chttp2/transport/bin_encoder.cc @@ -16,14 +16,15 @@ // // -#include - #include "src/core/ext/transport/chttp2/transport/bin_encoder.h" #include #include +#include "absl/log/check.h" + #include +#include #include "src/core/ext/transport/chttp2/transport/huffsyms.h" @@ -88,8 +89,8 @@ grpc_slice grpc_chttp2_base64_encode(const grpc_slice& input) { break; } - GPR_ASSERT(out == (char*)GRPC_SLICE_END_PTR(output)); - GPR_ASSERT(in == GRPC_SLICE_END_PTR(input)); + CHECK(out == (char*)GRPC_SLICE_END_PTR(output)); + CHECK(in == GRPC_SLICE_END_PTR(input)); return output; } @@ -132,7 +133,7 @@ grpc_slice grpc_chttp2_huffman_compress(const grpc_slice& input) { static_cast(0xffu >> temp_length)); } - GPR_ASSERT(out == GRPC_SLICE_END_PTR(output)); + CHECK(out == GRPC_SLICE_END_PTR(output)); return output; } @@ -228,9 +229,9 @@ grpc_slice grpc_chttp2_base64_encode_and_huffman_compress( static_cast(0xffu >> out.temp_length)); } - GPR_ASSERT(out.out <= GRPC_SLICE_END_PTR(output)); + CHECK(out.out <= GRPC_SLICE_END_PTR(output)); GRPC_SLICE_SET_LENGTH(output, out.out - start_out); - GPR_ASSERT(in == GRPC_SLICE_END_PTR(input)); + CHECK(in == GRPC_SLICE_END_PTR(input)); return output; } diff --git a/src/core/ext/transport/chttp2/transport/bin_encoder.h b/src/core/ext/transport/chttp2/transport/bin_encoder.h index 1b43d017055..fbada017abc 100644 --- a/src/core/ext/transport/chttp2/transport/bin_encoder.h +++ b/src/core/ext/transport/chttp2/transport/bin_encoder.h @@ -19,11 +19,10 @@ #ifndef GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_BIN_ENCODER_H #define GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_BIN_ENCODER_H -#include - #include #include +#include // base64 encode a slice. Returns a new slice, does not take ownership of the // input diff --git a/src/core/ext/transport/chttp2/transport/chttp2_transport.cc b/src/core/ext/transport/chttp2/transport/chttp2_transport.cc index a1e490e44b6..dd677809492 100644 --- a/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +++ b/src/core/ext/transport/chttp2/transport/chttp2_transport.cc @@ -14,8 +14,6 @@ // limitations under the License. // -#include - #include "src/core/ext/transport/chttp2/transport/chttp2_transport.h" #include @@ -36,6 +34,8 @@ #include "absl/base/attributes.h" #include "absl/container/flat_hash_map.h" #include "absl/hash/hash.h" +#include "absl/log/check.h" +#include "absl/log/log.h" #include "absl/meta/type_traits.h" #include "absl/random/random.h" #include "absl/status/status.h" @@ -54,6 +54,7 @@ #include #include #include +#include #include #include "src/core/ext/transport/chttp2/transport/context_list_entry.h" @@ -79,8 +80,6 @@ #include "src/core/lib/debug/stats.h" #include "src/core/lib/debug/stats_data.h" #include "src/core/lib/experiments/experiments.h" -#include "src/core/lib/gpr/string.h" -#include "src/core/lib/gpr/useful.h" #include "src/core/lib/gprpp/bitset.h" #include "src/core/lib/gprpp/crash.h" #include "src/core/lib/gprpp/debug_location.h" @@ -109,6 +108,8 @@ #include "src/core/lib/transport/metadata_info.h" #include "src/core/lib/transport/status_conversion.h" #include "src/core/lib/transport/transport.h" +#include "src/core/util/string.h" +#include "src/core/util/useful.h" #ifdef GRPC_POSIX_SOCKET_TCP #include "src/core/lib/iomgr/ev_posix.h" @@ -143,8 +144,6 @@ static bool g_default_server_keepalive_permit_without_calls = false; #define MAX_CLIENT_STREAM_ID 0x7fffffffu grpc_core::TraceFlag grpc_keepalive_trace(false, "http_keepalive"); -grpc_core::DebugOnlyTraceFlag grpc_trace_chttp2_refcount(false, - "chttp2_refcount"); // forward declarations of various callbacks that we'll build closures around static void write_action_begin_locked( @@ -401,11 +400,11 @@ grpc_chttp2_transport::~grpc_chttp2_transport() { grpc_chttp2_goaway_parser_destroy(&goaway_parser); for (i = 0; i < STREAM_LIST_COUNT; i++) { - GPR_ASSERT(lists[i].head == nullptr); - GPR_ASSERT(lists[i].tail == nullptr); + CHECK_EQ(lists[i].head, nullptr); + CHECK_EQ(lists[i].tail, nullptr); } - GPR_ASSERT(stream_map.empty()); + CHECK(stream_map.empty()); GRPC_COMBINER_UNREF(combiner, "chttp2_transport"); while (write_cb_pool) { @@ -576,7 +575,7 @@ static void read_channel_args(grpc_chttp2_transport* t, static void init_keepalive_pings_if_enabled_locked( grpc_core::RefCountedPtr t, GRPC_UNUSED grpc_error_handle error) { - GPR_DEBUG_ASSERT(error.ok()); + DCHECK(error.ok()); if (t->keepalive_time != grpc_core::Duration::Infinity()) { t->keepalive_state = GRPC_CHTTP2_KEEPALIVE_STATE_WAITING; t->keepalive_ping_timer_handle = @@ -595,12 +594,7 @@ static void init_keepalive_pings_if_enabled_locked( grpc_chttp2_transport::grpc_chttp2_transport( const grpc_core::ChannelArgs& channel_args, grpc_endpoint* ep, bool is_client) - : grpc_core::RefCounted( - GRPC_TRACE_FLAG_ENABLED(grpc_trace_chttp2_refcount) - ? "chttp2_refcount" - : nullptr), - ep(ep), + : ep(ep), peer_string( grpc_core::Slice::FromCopiedString(grpc_endpoint_get_peer(ep))), memory_owner(channel_args.GetObject() @@ -624,8 +618,8 @@ grpc_chttp2_transport::grpc_chttp2_transport( deframe_state(is_client ? GRPC_DTS_FH_0 : GRPC_DTS_CLIENT_PREFIX_0), is_client(is_client) { cl = new grpc_core::ContextList(); - GPR_ASSERT(strlen(GRPC_CHTTP2_CLIENT_CONNECT_STRING) == - GRPC_CHTTP2_CLIENT_CONNECT_STRLEN); + CHECK(strlen(GRPC_CHTTP2_CLIENT_CONNECT_STRING) == + GRPC_CHTTP2_CLIENT_CONNECT_STRLEN); grpc_slice_buffer_init(&read_buffer); if (is_client) { @@ -714,7 +708,7 @@ static void close_transport_locked(grpc_chttp2_transport* t, grpc_error_add_child(t->close_transport_on_writes_finished, error); return; } - GPR_ASSERT(!error.ok()); + CHECK(!error.ok()); t->closed_with_error = error; connectivity_state_set(t, GRPC_CHANNEL_SHUTDOWN, absl::Status(), "close_transport"); @@ -758,7 +752,7 @@ static void close_transport_locked(grpc_chttp2_transport* t, while (grpc_chttp2_list_pop_writable_stream(t, &s)) { GRPC_CHTTP2_STREAM_UNREF(s, "chttp2_writing:close"); } - GPR_ASSERT(t->write_state == GRPC_CHTTP2_WRITE_STATE_IDLE); + CHECK(t->write_state == GRPC_CHTTP2_WRITE_STATE_IDLE); grpc_endpoint_shutdown(t->ep, error); } if (t->notify_on_receive_settings != nullptr) { @@ -809,8 +803,8 @@ grpc_chttp2_stream::grpc_chttp2_stream(grpc_chttp2_transport* t, if (server_data) { id = static_cast(reinterpret_cast(server_data)); if (grpc_http_trace.enabled()) { - gpr_log(GPR_DEBUG, "HTTP:%p/%p creating accept stream %d [from %p]", t, - this, id, server_data); + VLOG(2) << "HTTP:" << t << "/" << this << " creating accept stream " << id + << " [from " << server_data << "]"; } *t->accepting_stream = this; t->stream_map.emplace(id, this); @@ -834,9 +828,9 @@ grpc_chttp2_stream::~grpc_chttp2_stream() { } } - GPR_ASSERT((write_closed && read_closed) || id == 0); + CHECK((write_closed && read_closed) || id == 0); if (id != 0) { - GPR_ASSERT(t->stream_map.count(id) == 0); + CHECK_EQ(t->stream_map.count(id), 0u); } grpc_slice_buffer_destroy(&frame_storage); @@ -849,11 +843,11 @@ grpc_chttp2_stream::~grpc_chttp2_stream() { } } - GPR_ASSERT(send_initial_metadata_finished == nullptr); - GPR_ASSERT(send_trailing_metadata_finished == nullptr); - GPR_ASSERT(recv_initial_metadata_ready == nullptr); - GPR_ASSERT(recv_message_ready == nullptr); - GPR_ASSERT(recv_trailing_metadata_finished == nullptr); + CHECK_EQ(send_initial_metadata_finished, nullptr); + CHECK_EQ(send_trailing_metadata_finished, nullptr); + CHECK_EQ(recv_initial_metadata_ready, nullptr); + CHECK_EQ(recv_message_ready, nullptr); + CHECK_EQ(recv_trailing_metadata_finished, nullptr); grpc_slice_buffer_destroy(&flow_controlled_buffer); grpc_core::ExecCtx::Run(DEBUG_LOCATION, destroy_stream_arg, absl::OkStatus()); } @@ -886,7 +880,7 @@ grpc_chttp2_stream* grpc_chttp2_parsing_accept_stream(grpc_chttp2_transport* t, return nullptr; } grpc_chttp2_stream* accepting = nullptr; - GPR_ASSERT(t->accepting_stream == nullptr); + CHECK_EQ(t->accepting_stream, nullptr); t->accepting_stream = &accepting; t->accept_stream_cb(t->accept_stream_cb_user_data, t, reinterpret_cast(id)); @@ -988,7 +982,7 @@ static const char* begin_writing_desc(bool partial) { static void write_action_begin_locked( grpc_core::RefCountedPtr t, grpc_error_handle /*error_ignored*/) { - GPR_ASSERT(t->write_state != GRPC_CHTTP2_WRITE_STATE_IDLE); + CHECK(t->write_state != GRPC_CHTTP2_WRITE_STATE_IDLE); grpc_chttp2_begin_write_result r; if (!t->closed_with_error.ok()) { r.writing = false; @@ -1002,7 +996,7 @@ static void write_action_begin_locked( begin_writing_desc(r.partial)); write_action(t.get()); if (t->reading_paused_on_pending_induced_frames) { - GPR_ASSERT(t->num_pending_induced_frames == 0); + CHECK_EQ(t->num_pending_induced_frames, 0u); // We had paused reading, because we had many induced frames (SETTINGS // ACK, PINGS ACK and RST_STREAMS) pending in t->qbuf. Now that we have // been able to flush qbuf, we can resume reading. @@ -1043,8 +1037,8 @@ static void write_action(grpc_chttp2_transport* t) { max_frame_size = INT_MAX; } if (GRPC_TRACE_FLAG_ENABLED(grpc_ping_trace)) { - gpr_log(GPR_INFO, "%s[%p]: Write %" PRIdPTR " bytes", - t->is_client ? "CLIENT" : "SERVER", t, t->outbuf.Length()); + LOG(INFO) << (t->is_client ? "CLIENT" : "SERVER") << "[" << t << "]: Write " + << t->outbuf.Length() << " bytes"; } t->write_size_policy.BeginWrite(t->outbuf.Length()); grpc_endpoint_write(t->ep, t->outbuf.c_slice_buffer(), @@ -1057,8 +1051,8 @@ static void write_action_end(grpc_core::RefCountedPtr t, grpc_error_handle error) { auto* tp = t.get(); if (GRPC_TRACE_FLAG_ENABLED(grpc_ping_trace)) { - gpr_log(GPR_INFO, "%s[%p]: Finish write", - t->is_client ? "CLIENT" : "SERVER", t.get()); + LOG(INFO) << (t->is_client ? "CLIENT" : "SERVER") << "[" << t.get() + << "]: Finish write"; } tp->combiner->Run(grpc_core::InitTransportClosure( std::move(t), &tp->write_action_end_locked), @@ -1219,7 +1213,7 @@ static void maybe_start_some_streams(grpc_chttp2_transport* t) { "HTTP:%s: Transport %p allocating new grpc_chttp2_stream %p to id %d", t->is_client ? "CLI" : "SVR", t, s, t->next_stream_id)); - GPR_ASSERT(s->id == 0); + CHECK_EQ(s->id, 0u); s->id = t->next_stream_id; t->next_stream_id += 2; @@ -1331,11 +1325,11 @@ static bool contains_non_ok_status(grpc_metadata_batch* batch) { static void log_metadata(const grpc_metadata_batch* md_batch, uint32_t id, bool is_client, bool is_initial) { - gpr_log(GPR_INFO, "--metadata--"); + LOG(INFO) << "--metadata--"; const std::string prefix = absl::StrCat( "HTTP:", id, is_initial ? ":HDR" : ":TRL", is_client ? ":CLI:" : ":SVR:"); md_batch->Log([&prefix](absl::string_view key, absl::string_view value) { - gpr_log(GPR_INFO, "%s", absl::StrCat(prefix, key, ": ", value).c_str()); + LOG(INFO) << absl::StrCat(prefix, key, ": ", value); }); } @@ -1392,7 +1386,7 @@ static void perform_stream_op_locked(void* stream_op, if (t->is_client && t->channelz_socket != nullptr) { t->channelz_socket->RecordStreamStartedFromLocal(); } - GPR_ASSERT(s->send_initial_metadata_finished == nullptr); + CHECK_EQ(s->send_initial_metadata_finished, nullptr); on_complete->next_data.scratch |= t->closure_barrier_may_cover_write; s->send_initial_metadata_finished = add_closure_barrier(on_complete); @@ -1410,7 +1404,7 @@ static void perform_stream_op_locked(void* stream_op, if (!s->write_closed) { if (t->is_client) { if (t->closed_with_error.ok()) { - GPR_ASSERT(s->id == 0); + CHECK_EQ(s->id, 0u); grpc_chttp2_list_add_waiting_for_concurrency(t, s); maybe_start_some_streams(t); } else { @@ -1427,7 +1421,7 @@ static void perform_stream_op_locked(void* stream_op, false); } } else { - GPR_ASSERT(s->id != 0); + CHECK_NE(s->id, 0u); grpc_chttp2_mark_stream_writable(t, s); if (!(op->send_message && (op->payload->send_message.flags & GRPC_WRITE_BUFFER_HINT))) { @@ -1528,7 +1522,7 @@ static void perform_stream_op_locked(void* stream_op, } if (op->send_trailing_metadata) { - GPR_ASSERT(s->send_trailing_metadata_finished == nullptr); + CHECK_EQ(s->send_trailing_metadata_finished, nullptr); on_complete->next_data.scratch |= t->closure_barrier_may_cover_write; s->send_trailing_metadata_finished = add_closure_barrier(on_complete); s->send_trailing_metadata = @@ -1558,7 +1552,7 @@ static void perform_stream_op_locked(void* stream_op, } if (op->recv_initial_metadata) { - GPR_ASSERT(s->recv_initial_metadata_ready == nullptr); + CHECK_EQ(s->recv_initial_metadata_ready, nullptr); s->recv_initial_metadata_ready = op_payload->recv_initial_metadata.recv_initial_metadata_ready; s->recv_initial_metadata = @@ -1572,7 +1566,7 @@ static void perform_stream_op_locked(void* stream_op, } if (op->recv_message) { - GPR_ASSERT(s->recv_message_ready == nullptr); + CHECK_EQ(s->recv_message_ready, nullptr); s->recv_message_ready = op_payload->recv_message.recv_message_ready; s->recv_message = op_payload->recv_message.recv_message; s->recv_message->emplace(); @@ -1583,9 +1577,9 @@ static void perform_stream_op_locked(void* stream_op, } if (op->recv_trailing_metadata) { - GPR_ASSERT(s->collecting_stats == nullptr); + CHECK_EQ(s->collecting_stats, nullptr); s->collecting_stats = op_payload->recv_trailing_metadata.collect_stats; - GPR_ASSERT(s->recv_trailing_metadata_finished == nullptr); + CHECK_EQ(s->recv_trailing_metadata_finished, nullptr); s->recv_trailing_metadata_finished = op_payload->recv_trailing_metadata.recv_trailing_metadata_ready; s->recv_trailing_metadata = @@ -1608,14 +1602,14 @@ void grpc_chttp2_transport::PerformStreamOp( if (!is_client) { if (op->send_initial_metadata) { - GPR_ASSERT(!op->payload->send_initial_metadata.send_initial_metadata - ->get(grpc_core::GrpcTimeoutMetadata()) - .has_value()); + CHECK(!op->payload->send_initial_metadata.send_initial_metadata + ->get(grpc_core::GrpcTimeoutMetadata()) + .has_value()); } if (op->send_trailing_metadata) { - GPR_ASSERT(!op->payload->send_trailing_metadata.send_trailing_metadata - ->get(grpc_core::GrpcTimeoutMetadata()) - .has_value()); + CHECK(!op->payload->send_trailing_metadata.send_trailing_metadata + ->get(grpc_core::GrpcTimeoutMetadata()) + .has_value()); } } @@ -1707,8 +1701,8 @@ void grpc_chttp2_retry_initiate_ping( static void retry_initiate_ping_locked( grpc_core::RefCountedPtr t, GRPC_UNUSED grpc_error_handle error) { - GPR_DEBUG_ASSERT(error.ok()); - GPR_ASSERT(t->delayed_ping_timer_handle != TaskHandle::kInvalid); + DCHECK(error.ok()); + CHECK(t->delayed_ping_timer_handle != TaskHandle::kInvalid); t->delayed_ping_timer_handle = TaskHandle::kInvalid; grpc_chttp2_initiate_write(t.get(), GRPC_CHTTP2_INITIATE_WRITE_RETRY_SEND_PING); @@ -2028,7 +2022,7 @@ void grpc_chttp2_maybe_complete_recv_message(grpc_chttp2_transport* t, } else { if (s->frame_storage.length != 0) { while (true) { - GPR_ASSERT(s->frame_storage.length > 0); + CHECK_GT(s->frame_storage.length, 0u); int64_t min_progress_size; auto r = grpc_deframe_unprocessed_incoming_frames( s, &min_progress_size, &**s->recv_message, s->recv_message_flags); @@ -2114,7 +2108,7 @@ void grpc_chttp2_maybe_complete_recv_trailing_metadata(grpc_chttp2_transport* t, static grpc_chttp2_transport::RemovedStreamHandle remove_stream( grpc_chttp2_transport* t, uint32_t id, grpc_error_handle error) { grpc_chttp2_stream* s = t->stream_map.extract(id).mapped(); - GPR_DEBUG_ASSERT(s); + DCHECK(s); if (t->incoming_stream == s) { t->incoming_stream = nullptr; grpc_chttp2_parsing_become_skip_parser(t); @@ -2366,7 +2360,8 @@ static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s, grpc_error_get_status(error, s->deadline, &grpc_status, &message, nullptr, nullptr); - GPR_ASSERT(grpc_status >= 0 && (int)grpc_status < 100); + CHECK_GE(grpc_status, 0); + CHECK_LT((int)grpc_status, 100); auto remove_stream_handle = grpc_chttp2_mark_stream_closed(t, s, 1, 1, error); grpc_core::MaybeTarpit( @@ -2407,7 +2402,7 @@ static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s, *p++ = '2'; *p++ = '0'; *p++ = '0'; - GPR_ASSERT(p == GRPC_SLICE_END_PTR(http_status_hdr)); + CHECK(p == GRPC_SLICE_END_PTR(http_status_hdr)); len += static_cast GRPC_SLICE_LENGTH(http_status_hdr); content_type_hdr = GRPC_SLICE_MALLOC(31); @@ -2443,7 +2438,7 @@ static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s, *p++ = 'r'; *p++ = 'p'; *p++ = 'c'; - GPR_ASSERT(p == GRPC_SLICE_END_PTR(content_type_hdr)); + CHECK(p == GRPC_SLICE_END_PTR(content_type_hdr)); len += static_cast GRPC_SLICE_LENGTH(content_type_hdr); } @@ -2470,11 +2465,11 @@ static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s, *p++ = static_cast('0' + (grpc_status / 10)); *p++ = static_cast('0' + (grpc_status % 10)); } - GPR_ASSERT(p == GRPC_SLICE_END_PTR(status_hdr)); + CHECK(p == GRPC_SLICE_END_PTR(status_hdr)); len += static_cast GRPC_SLICE_LENGTH(status_hdr); size_t msg_len = message.length(); - GPR_ASSERT(msg_len <= UINT32_MAX); + CHECK(msg_len <= UINT32_MAX); grpc_core::VarintWriter<1> msg_len_writer( static_cast(msg_len)); message_pfx = GRPC_SLICE_MALLOC(14 + msg_len_writer.length()); @@ -2495,7 +2490,7 @@ static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s, *p++ = 'e'; msg_len_writer.Write(0, p); p += msg_len_writer.length(); - GPR_ASSERT(p == GRPC_SLICE_END_PTR(message_pfx)); + CHECK(p == GRPC_SLICE_END_PTR(message_pfx)); len += static_cast GRPC_SLICE_LENGTH(message_pfx); len += static_cast(msg_len); @@ -2511,7 +2506,7 @@ static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s, *p++ = static_cast(id >> 16); *p++ = static_cast(id >> 8); *p++ = static_cast(id); - GPR_ASSERT(p == GRPC_SLICE_END_PTR(hdr)); + CHECK(p == GRPC_SLICE_END_PTR(hdr)); grpc_slice_buffer_add(&t->qbuf, hdr); if (!sent_initial_metadata) { @@ -2829,7 +2824,7 @@ static void finish_bdp_ping_locked( t->flow_control.bdp_estimator()->CompletePing(); grpc_chttp2_act_on_flowctl_action(t->flow_control.PeriodicUpdate(), t.get(), nullptr); - GPR_ASSERT(t->next_bdp_ping_timer_handle == TaskHandle::kInvalid); + CHECK(t->next_bdp_ping_timer_handle == TaskHandle::kInvalid); t->next_bdp_ping_timer_handle = t->event_engine->RunAfter(next_ping - grpc_core::Timestamp::Now(), [t] { grpc_core::ApplicationCallbackExecCtx callback_exec_ctx; @@ -2848,7 +2843,7 @@ static void next_bdp_ping_timer_expired(grpc_chttp2_transport* t) { static void next_bdp_ping_timer_expired_locked( grpc_core::RefCountedPtr t, GRPC_UNUSED grpc_error_handle error) { - GPR_DEBUG_ASSERT(error.ok()); + DCHECK(error.ok()); t->next_bdp_ping_timer_handle = TaskHandle::kInvalid; if (t->flow_control.bdp_estimator()->accumulator() == 0) { // Block the bdp ping till we receive more data. @@ -2916,9 +2911,9 @@ static void init_keepalive_ping( static void init_keepalive_ping_locked( grpc_core::RefCountedPtr t, GRPC_UNUSED grpc_error_handle error) { - GPR_DEBUG_ASSERT(error.ok()); - GPR_ASSERT(t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_WAITING); - GPR_ASSERT(t->keepalive_ping_timer_handle != TaskHandle::kInvalid); + DCHECK(error.ok()); + CHECK(t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_WAITING); + CHECK(t->keepalive_ping_timer_handle != TaskHandle::kInvalid); t->keepalive_ping_timer_handle = TaskHandle::kInvalid; if (t->destroying || !t->closed_with_error.ok()) { t->keepalive_state = GRPC_CHTTP2_KEEPALIVE_STATE_DYING; @@ -2960,7 +2955,7 @@ static void finish_keepalive_ping_locked( std::string(t->peer_string.as_string_view()).c_str()); } t->keepalive_state = GRPC_CHTTP2_KEEPALIVE_STATE_WAITING; - GPR_ASSERT(t->keepalive_ping_timer_handle == TaskHandle::kInvalid); + CHECK(t->keepalive_ping_timer_handle == TaskHandle::kInvalid); t->keepalive_ping_timer_handle = t->event_engine->RunAfter(t->keepalive_time, [t] { grpc_core::ApplicationCallbackExecCtx callback_exec_ctx; diff --git a/src/core/ext/transport/chttp2/transport/chttp2_transport.h b/src/core/ext/transport/chttp2/transport/chttp2_transport.h index 5388c4a4737..d83b38e8c5c 100644 --- a/src/core/ext/transport/chttp2/transport/chttp2_transport.h +++ b/src/core/ext/transport/chttp2/transport/chttp2_transport.h @@ -19,19 +19,18 @@ #ifndef GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_CHTTP2_TRANSPORT_H #define GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_CHTTP2_TRANSPORT_H -#include - #include #include #include "absl/types/optional.h" #include +#include +#include "src/core/channelz/channelz.h" #include "src/core/ext/transport/chttp2/transport/flow_control.h" #include "src/core/lib/channel/call_tracer.h" #include "src/core/lib/channel/channel_args.h" -#include "src/core/lib/channel/channelz.h" #include "src/core/lib/debug/trace.h" #include "src/core/lib/gprpp/ref_counted_ptr.h" #include "src/core/lib/gprpp/time.h" diff --git a/src/core/ext/transport/chttp2/transport/context_list_entry.h b/src/core/ext/transport/chttp2/transport/context_list_entry.h index 8368d807a99..cf080874fe7 100644 --- a/src/core/ext/transport/chttp2/transport/context_list_entry.h +++ b/src/core/ext/transport/chttp2/transport/context_list_entry.h @@ -19,8 +19,6 @@ #ifndef GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_CONTEXT_LIST_ENTRY_H #define GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_CONTEXT_LIST_ENTRY_H -#include - #include #include @@ -28,6 +26,8 @@ #include #include +#include + #include "src/core/lib/channel/tcp_tracer.h" namespace grpc_core { diff --git a/src/core/ext/transport/chttp2/transport/decode_huff.cc b/src/core/ext/transport/chttp2/transport/decode_huff.cc index cdbab5a4e12..8a2300dac4b 100644 --- a/src/core/ext/transport/chttp2/transport/decode_huff.cc +++ b/src/core/ext/transport/chttp2/transport/decode_huff.cc @@ -15,9 +15,9 @@ // This file is autogenerated: see // tools/codegen/core/gen_huffman_decompressor.cc -#include - #include "src/core/ext/transport/chttp2/transport/decode_huff.h" + +#include namespace grpc_core { const uint8_t HuffDecoderCommon::table2_0_emit_[10] = { 0x30, 0x31, 0x32, 0x61, 0x63, 0x65, 0x69, 0x6f, 0x73, 0x74}; diff --git a/src/core/ext/transport/chttp2/transport/decode_huff.h b/src/core/ext/transport/chttp2/transport/decode_huff.h index 21f087585c0..2562f9d0d97 100644 --- a/src/core/ext/transport/chttp2/transport/decode_huff.h +++ b/src/core/ext/transport/chttp2/transport/decode_huff.h @@ -17,10 +17,10 @@ #ifndef GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_DECODE_HUFF_H #define GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_DECODE_HUFF_H -#include - #include #include + +#include namespace grpc_core { class HuffDecoderCommon { protected: diff --git a/src/core/ext/transport/chttp2/transport/flow_control.cc b/src/core/ext/transport/chttp2/transport/flow_control.cc index a24828e7a11..ea633e03a88 100644 --- a/src/core/ext/transport/chttp2/transport/flow_control.cc +++ b/src/core/ext/transport/chttp2/transport/flow_control.cc @@ -16,8 +16,6 @@ // // -#include - #include "src/core/ext/transport/chttp2/transport/flow_control.h" #include @@ -29,16 +27,18 @@ #include #include +#include "absl/log/check.h" #include "absl/strings/str_cat.h" #include "absl/strings/str_format.h" #include "absl/strings/str_join.h" #include +#include #include "src/core/ext/transport/chttp2/transport/http2_settings.h" #include "src/core/lib/experiments/experiments.h" -#include "src/core/lib/gpr/useful.h" #include "src/core/lib/resource_quota/memory_quota.h" +#include "src/core/util/useful.h" grpc_core::TraceFlag grpc_flowctl_trace(false, "flowctl"); @@ -337,7 +337,7 @@ void StreamFlowControl::SentUpdate(uint32_t announce) { TransportFlowControl::IncomingUpdateContext tfc_upd(tfc_); pending_size_ = absl::nullopt; tfc_upd.UpdateAnnouncedWindowDelta(&announced_window_delta_, announce); - GPR_ASSERT(DesiredAnnounceSize() == 0); + CHECK_EQ(DesiredAnnounceSize(), 0u); std::ignore = tfc_upd.MakeAction(); } @@ -387,7 +387,7 @@ FlowControlAction StreamFlowControl::UpdateAction(FlowControlAction action) { void StreamFlowControl::IncomingUpdateContext::SetPendingSize( int64_t pending_size) { - GPR_ASSERT(pending_size >= 0); + CHECK_GE(pending_size, 0); sfc_->pending_size_ = pending_size; } diff --git a/src/core/ext/transport/chttp2/transport/flow_control.h b/src/core/ext/transport/chttp2/transport/flow_control.h index 82dde68754f..3891845a4bd 100644 --- a/src/core/ext/transport/chttp2/transport/flow_control.h +++ b/src/core/ext/transport/chttp2/transport/flow_control.h @@ -19,8 +19,6 @@ #ifndef GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_FLOW_CONTROL_H #define GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_FLOW_CONTROL_H -#include - #include #include @@ -29,11 +27,13 @@ #include #include "absl/functional/function_ref.h" +#include "absl/log/check.h" #include "absl/status/status.h" #include "absl/strings/string_view.h" #include "absl/types/optional.h" #include +#include #include "src/core/ext/transport/chttp2/transport/http2_settings.h" #include "src/core/lib/debug/trace.h" @@ -133,7 +133,7 @@ class GRPC_MUST_USE_RESULT FlowControlAction { static const char* UrgencyString(Urgency u); std::string DebugString() const; - void AssertEmpty() { GPR_ASSERT(*this == FlowControlAction()); } + void AssertEmpty() { CHECK(*this == FlowControlAction()); } bool operator==(const FlowControlAction& other) const { return send_stream_update_ == other.send_stream_update_ && @@ -196,7 +196,7 @@ class TransportFlowControl final { class IncomingUpdateContext { public: explicit IncomingUpdateContext(TransportFlowControl* tfc) : tfc_(tfc) {} - ~IncomingUpdateContext() { GPR_ASSERT(tfc_ == nullptr); } + ~IncomingUpdateContext() { CHECK_EQ(tfc_, nullptr); } IncomingUpdateContext(const IncomingUpdateContext&) = delete; IncomingUpdateContext& operator=(const IncomingUpdateContext&) = delete; diff --git a/src/core/ext/transport/chttp2/transport/frame.cc b/src/core/ext/transport/chttp2/transport/frame.cc index 4a297d546d1..9e05cf6d854 100644 --- a/src/core/ext/transport/chttp2/transport/frame.cc +++ b/src/core/ext/transport/chttp2/transport/frame.cc @@ -12,8 +12,6 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include - #include "src/core/ext/transport/chttp2/transport/frame.h" #include @@ -21,10 +19,12 @@ #include #include +#include "absl/log/check.h" #include "absl/status/status.h" #include "absl/strings/str_cat.h" #include +#include #include "src/core/lib/gprpp/crash.h" @@ -60,7 +60,7 @@ uint16_t Read2b(const uint8_t* input) { } void Write3b(uint32_t x, uint8_t* output) { - GPR_ASSERT(x < 16777216); + CHECK_LT(x, 16777216u); output[0] = static_cast(x >> 16); output[1] = static_cast(x >> 8); output[2] = static_cast(x); @@ -476,7 +476,7 @@ void Serialize(absl::Span frames, SliceBuffer& out) { absl::StatusOr ParseFramePayload(const Http2FrameHeader& hdr, SliceBuffer payload) { - GPR_ASSERT(payload.Length() == hdr.length); + CHECK(payload.Length() == hdr.length); switch (hdr.type) { case kFrameTypeData: return ParseDataFrame(hdr, payload); diff --git a/src/core/ext/transport/chttp2/transport/frame.h b/src/core/ext/transport/chttp2/transport/frame.h index be20ef4a0c0..ac6b9e771dd 100644 --- a/src/core/ext/transport/chttp2/transport/frame.h +++ b/src/core/ext/transport/chttp2/transport/frame.h @@ -15,8 +15,6 @@ #ifndef GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_FRAME_H #define GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_FRAME_H -#include - #include #include #include @@ -26,6 +24,8 @@ #include "absl/types/span.h" #include "absl/types/variant.h" +#include + #include "src/core/lib/slice/slice.h" #include "src/core/lib/slice/slice_buffer.h" diff --git a/src/core/ext/transport/chttp2/transport/frame_data.cc b/src/core/ext/transport/chttp2/transport/frame_data.cc index e10dea34134..3476ab12481 100644 --- a/src/core/ext/transport/chttp2/transport/frame_data.cc +++ b/src/core/ext/transport/chttp2/transport/frame_data.cc @@ -16,17 +16,17 @@ // // -#include - #include "src/core/ext/transport/chttp2/transport/frame_data.h" #include +#include "absl/log/check.h" #include "absl/status/status.h" #include "absl/strings/str_format.h" #include #include +#include #include "src/core/ext/transport/chttp2/transport/internal.h" #include "src/core/lib/experiments/experiments.h" @@ -63,7 +63,7 @@ void grpc_chttp2_encode_data(uint32_t id, grpc_slice_buffer* inbuf, hdr = GRPC_SLICE_MALLOC(header_size); p = GRPC_SLICE_START_PTR(hdr); - GPR_ASSERT(write_bytes < (1 << 24)); + CHECK(write_bytes < (1 << 24)); *p++ = static_cast(write_bytes >> 16); *p++ = static_cast(write_bytes >> 8); *p++ = static_cast(write_bytes); diff --git a/src/core/ext/transport/chttp2/transport/frame_data.h b/src/core/ext/transport/chttp2/transport/frame_data.h index a3327d38343..1e628d48ddf 100644 --- a/src/core/ext/transport/chttp2/transport/frame_data.h +++ b/src/core/ext/transport/chttp2/transport/frame_data.h @@ -21,13 +21,12 @@ // Parser for GRPC streams embedded in DATA frames -#include - #include #include "absl/status/status.h" #include +#include #include "src/core/ext/transport/chttp2/transport/legacy_frame.h" #include "src/core/lib/iomgr/error.h" diff --git a/src/core/ext/transport/chttp2/transport/frame_goaway.cc b/src/core/ext/transport/chttp2/transport/frame_goaway.cc index e7d1c558d4f..fadce901392 100644 --- a/src/core/ext/transport/chttp2/transport/frame_goaway.cc +++ b/src/core/ext/transport/chttp2/transport/frame_goaway.cc @@ -16,13 +16,12 @@ // // -#include - #include "src/core/ext/transport/chttp2/transport/frame_goaway.h" #include #include "absl/base/attributes.h" +#include "absl/log/check.h" #include "absl/status/status.h" #include "absl/strings/str_format.h" #include "absl/strings/string_view.h" @@ -30,6 +29,7 @@ #include #include #include +#include #include "src/core/ext/transport/chttp2/transport/internal.h" @@ -137,7 +137,7 @@ grpc_error_handle grpc_chttp2_goaway_parser_parse(void* parser, memcpy(p->debug_data + p->debug_pos, cur, static_cast(end - cur)); } - GPR_ASSERT((size_t)(end - cur) < UINT32_MAX - p->debug_pos); + CHECK((size_t)(end - cur) < UINT32_MAX - p->debug_pos); p->debug_pos += static_cast(end - cur); p->state = GRPC_CHTTP2_GOAWAY_DEBUG; if (is_last) { @@ -158,7 +158,7 @@ void grpc_chttp2_goaway_append(uint32_t last_stream_id, uint32_t error_code, grpc_slice header = GRPC_SLICE_MALLOC(9 + 4 + 4); uint8_t* p = GRPC_SLICE_START_PTR(header); uint32_t frame_length; - GPR_ASSERT(GRPC_SLICE_LENGTH(debug_data) < UINT32_MAX - 4 - 4); + CHECK(GRPC_SLICE_LENGTH(debug_data) < UINT32_MAX - 4 - 4); frame_length = 4 + 4 + static_cast GRPC_SLICE_LENGTH(debug_data); // frame header: length @@ -184,7 +184,7 @@ void grpc_chttp2_goaway_append(uint32_t last_stream_id, uint32_t error_code, *p++ = static_cast(error_code >> 16); *p++ = static_cast(error_code >> 8); *p++ = static_cast(error_code); - GPR_ASSERT(p == GRPC_SLICE_END_PTR(header)); + CHECK(p == GRPC_SLICE_END_PTR(header)); grpc_slice_buffer_add(slice_buffer, header); grpc_slice_buffer_add(slice_buffer, debug_data); } diff --git a/src/core/ext/transport/chttp2/transport/frame_goaway.h b/src/core/ext/transport/chttp2/transport/frame_goaway.h index e4384049df1..40f132721e7 100644 --- a/src/core/ext/transport/chttp2/transport/frame_goaway.h +++ b/src/core/ext/transport/chttp2/transport/frame_goaway.h @@ -19,11 +19,10 @@ #ifndef GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_FRAME_GOAWAY_H #define GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_FRAME_GOAWAY_H -#include - #include #include +#include #include "src/core/ext/transport/chttp2/transport/legacy_frame.h" #include "src/core/lib/iomgr/error.h" diff --git a/src/core/ext/transport/chttp2/transport/frame_ping.cc b/src/core/ext/transport/chttp2/transport/frame_ping.cc index f2e92a2829d..e57f9f02622 100644 --- a/src/core/ext/transport/chttp2/transport/frame_ping.cc +++ b/src/core/ext/transport/chttp2/transport/frame_ping.cc @@ -16,8 +16,6 @@ // // -#include - #include "src/core/ext/transport/chttp2/transport/frame_ping.h" #include @@ -26,11 +24,13 @@ #include #include "absl/container/flat_hash_map.h" +#include "absl/log/check.h" #include "absl/status/status.h" #include "absl/strings/str_format.h" #include #include +#include #include "src/core/ext/transport/chttp2/transport/internal.h" #include "src/core/ext/transport/chttp2/transport/ping_abuse_policy.h" @@ -94,7 +94,7 @@ grpc_error_handle grpc_chttp2_ping_parser_parse(void* parser, } if (p->byte == 8) { - GPR_ASSERT(is_last); + CHECK(is_last); if (p->is_ack) { if (grpc_ping_trace.enabled()) { gpr_log(GPR_INFO, "%s[%p]: received ping ack %" PRIx64, diff --git a/src/core/ext/transport/chttp2/transport/frame_ping.h b/src/core/ext/transport/chttp2/transport/frame_ping.h index 82c477de2e8..6f4cd55ff41 100644 --- a/src/core/ext/transport/chttp2/transport/frame_ping.h +++ b/src/core/ext/transport/chttp2/transport/frame_ping.h @@ -19,11 +19,10 @@ #ifndef GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_FRAME_PING_H #define GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_FRAME_PING_H -#include - #include #include +#include #include "src/core/ext/transport/chttp2/transport/legacy_frame.h" #include "src/core/lib/iomgr/error.h" diff --git a/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc b/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc index 71e5cd7098f..22563924a07 100644 --- a/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +++ b/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc @@ -16,12 +16,11 @@ // // -#include - #include "src/core/ext/transport/chttp2/transport/frame_rst_stream.h" #include +#include "absl/log/check.h" #include "absl/random/distributions.h" #include "absl/status/status.h" #include "absl/strings/str_cat.h" @@ -29,6 +28,7 @@ #include #include +#include #include "src/core/ext/transport/chttp2/transport/http_trace.h" #include "src/core/ext/transport/chttp2/transport/internal.h" @@ -106,7 +106,7 @@ grpc_error_handle grpc_chttp2_rst_stream_parser_parse(void* parser, s->stats.incoming.framing_bytes += static_cast(end - cur); if (p->byte == 4) { - GPR_ASSERT(is_last); + CHECK(is_last); uint32_t reason = ((static_cast(p->reason_bytes[0])) << 24) | ((static_cast(p->reason_bytes[1])) << 16) | ((static_cast(p->reason_bytes[2])) << 8) | diff --git a/src/core/ext/transport/chttp2/transport/frame_rst_stream.h b/src/core/ext/transport/chttp2/transport/frame_rst_stream.h index 6c7f3b95d30..1da9c0e457a 100644 --- a/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +++ b/src/core/ext/transport/chttp2/transport/frame_rst_stream.h @@ -19,11 +19,10 @@ #ifndef GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_FRAME_RST_STREAM_H #define GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_FRAME_RST_STREAM_H -#include - #include #include +#include #include "src/core/ext/transport/chttp2/transport/legacy_frame.h" #include "src/core/lib/iomgr/error.h" diff --git a/src/core/ext/transport/chttp2/transport/frame_settings.cc b/src/core/ext/transport/chttp2/transport/frame_settings.cc index c0e24c336ee..2d8227057ad 100644 --- a/src/core/ext/transport/chttp2/transport/frame_settings.cc +++ b/src/core/ext/transport/chttp2/transport/frame_settings.cc @@ -16,8 +16,6 @@ // // -#include - #include "src/core/ext/transport/chttp2/transport/frame_settings.h" #include @@ -30,6 +28,7 @@ #include #include +#include #include "src/core/ext/transport/chttp2/transport/flow_control.h" #include "src/core/ext/transport/chttp2/transport/frame_goaway.h" @@ -38,10 +37,10 @@ #include "src/core/ext/transport/chttp2/transport/internal.h" #include "src/core/ext/transport/chttp2/transport/legacy_frame.h" #include "src/core/lib/debug/trace.h" -#include "src/core/lib/gpr/useful.h" #include "src/core/lib/gprpp/debug_location.h" #include "src/core/lib/iomgr/exec_ctx.h" #include "src/core/lib/slice/slice.h" +#include "src/core/util/useful.h" static uint8_t* fill_header(uint8_t* out, uint32_t length, uint8_t flags) { *out++ = static_cast(length >> 16); diff --git a/src/core/ext/transport/chttp2/transport/frame_settings.h b/src/core/ext/transport/chttp2/transport/frame_settings.h index 56dc5baae6a..ba653c6a11c 100644 --- a/src/core/ext/transport/chttp2/transport/frame_settings.h +++ b/src/core/ext/transport/chttp2/transport/frame_settings.h @@ -19,12 +19,11 @@ #ifndef GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_FRAME_SETTINGS_H #define GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_FRAME_SETTINGS_H -#include - #include #include #include +#include #include "src/core/ext/transport/chttp2/transport/http2_settings.h" #include "src/core/ext/transport/chttp2/transport/legacy_frame.h" diff --git a/src/core/ext/transport/chttp2/transport/frame_window_update.cc b/src/core/ext/transport/chttp2/transport/frame_window_update.cc index 45c122065f3..f9824f7e035 100644 --- a/src/core/ext/transport/chttp2/transport/frame_window_update.cc +++ b/src/core/ext/transport/chttp2/transport/frame_window_update.cc @@ -16,17 +16,17 @@ // // -#include - #include "src/core/ext/transport/chttp2/transport/frame_window_update.h" #include +#include "absl/log/check.h" #include "absl/status/status.h" #include "absl/strings/str_cat.h" #include "absl/strings/str_format.h" #include +#include #include "src/core/ext/transport/chttp2/transport/flow_control.h" #include "src/core/ext/transport/chttp2/transport/internal.h" @@ -38,7 +38,7 @@ grpc_slice grpc_chttp2_window_update_create( stats->framing_bytes += frame_size; uint8_t* p = GRPC_SLICE_START_PTR(slice); - GPR_ASSERT(window_delta); + CHECK(window_delta); *p++ = 0; *p++ = 0; @@ -94,7 +94,7 @@ grpc_error_handle grpc_chttp2_window_update_parser_parse( return GRPC_ERROR_CREATE( absl::StrCat("invalid window update bytes: ", p->amount)); } - GPR_ASSERT(is_last); + CHECK(is_last); if (t->incoming_stream_id != 0) { if (s != nullptr) { diff --git a/src/core/ext/transport/chttp2/transport/frame_window_update.h b/src/core/ext/transport/chttp2/transport/frame_window_update.h index 66f1843befa..92ea1587010 100644 --- a/src/core/ext/transport/chttp2/transport/frame_window_update.h +++ b/src/core/ext/transport/chttp2/transport/frame_window_update.h @@ -19,11 +19,10 @@ #ifndef GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_FRAME_WINDOW_UPDATE_H #define GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_FRAME_WINDOW_UPDATE_H -#include - #include #include +#include #include "src/core/ext/transport/chttp2/transport/legacy_frame.h" #include "src/core/lib/iomgr/error.h" diff --git a/src/core/ext/transport/chttp2/transport/hpack_constants.h b/src/core/ext/transport/chttp2/transport/hpack_constants.h index d709e0ba278..739c57ba3e3 100644 --- a/src/core/ext/transport/chttp2/transport/hpack_constants.h +++ b/src/core/ext/transport/chttp2/transport/hpack_constants.h @@ -15,11 +15,11 @@ #ifndef GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_HPACK_CONSTANTS_H #define GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_HPACK_CONSTANTS_H -#include - #include #include +#include + namespace grpc_core { namespace hpack_constants { // Per entry overhead bytes as per the spec diff --git a/src/core/ext/transport/chttp2/transport/hpack_encoder.cc b/src/core/ext/transport/chttp2/transport/hpack_encoder.cc index ed615d5acd6..1d7ece76303 100644 --- a/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +++ b/src/core/ext/transport/chttp2/transport/hpack_encoder.cc @@ -16,16 +16,17 @@ // // -#include - #include "src/core/ext/transport/chttp2/transport/hpack_encoder.h" #include #include +#include "absl/log/check.h" + #include #include #include +#include #include "src/core/ext/transport/chttp2/transport/bin_encoder.h" #include "src/core/ext/transport/chttp2/transport/hpack_constants.h" @@ -62,7 +63,7 @@ static void FillHeader(uint8_t* p, uint8_t type, uint32_t id, size_t len, // max_frame_size is derived from GRPC_CHTTP2_SETTINGS_MAX_FRAME_SIZE, // which has a max allowable value of 16777215 (see chttp_transport.cc). // Thus, the following assert can be a debug assert. - GPR_DEBUG_ASSERT(len <= 16777216); + DCHECK_LE(len, 16777216u); *p++ = static_cast(len >> 16); *p++ = static_cast(len >> 8); *p++ = static_cast(len); diff --git a/src/core/ext/transport/chttp2/transport/hpack_encoder.h b/src/core/ext/transport/chttp2/transport/hpack_encoder.h index 1ec60140151..94c520ae55b 100644 --- a/src/core/ext/transport/chttp2/transport/hpack_encoder.h +++ b/src/core/ext/transport/chttp2/transport/hpack_encoder.h @@ -19,8 +19,6 @@ #ifndef GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_HPACK_ENCODER_H #define GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_HPACK_ENCODER_H -#include - #include #include @@ -33,6 +31,7 @@ #include #include +#include #include "src/core/ext/transport/chttp2/transport/hpack_constants.h" #include "src/core/ext/transport/chttp2/transport/hpack_encoder_table.h" diff --git a/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc b/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc index 55d2e444dda..3492fd5982b 100644 --- a/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +++ b/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc @@ -12,21 +12,22 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include - #include "src/core/ext/transport/chttp2/transport/hpack_encoder_table.h" #include +#include "absl/log/check.h" + #include +#include namespace grpc_core { uint32_t HPackEncoderTable::AllocateIndex(size_t element_size) { - GPR_DEBUG_ASSERT(element_size >= 32); + DCHECK_GE(element_size, 32u); uint32_t new_index = tail_remote_index_ + table_elems_ + 1; - GPR_DEBUG_ASSERT(element_size <= MaxEntrySize()); + DCHECK(element_size <= MaxEntrySize()); if (element_size > max_table_size_) { while (table_size_ > 0) { @@ -41,7 +42,7 @@ uint32_t HPackEncoderTable::AllocateIndex(size_t element_size) { while (table_size_ + element_size > max_table_size_) { EvictOne(); } - GPR_ASSERT(table_elems_ < elem_size_.size()); + CHECK(table_elems_ < elem_size_.size()); elem_size_[new_index % elem_size_.size()] = static_cast(element_size); table_size_ += element_size; @@ -70,17 +71,17 @@ bool HPackEncoderTable::SetMaxSize(uint32_t max_table_size) { void HPackEncoderTable::EvictOne() { tail_remote_index_++; - GPR_ASSERT(tail_remote_index_ > 0); - GPR_ASSERT(table_elems_ > 0); + CHECK_GT(tail_remote_index_, 0u); + CHECK_GT(table_elems_, 0u); auto removing_size = elem_size_[tail_remote_index_ % elem_size_.size()]; - GPR_ASSERT(table_size_ >= removing_size); + CHECK(table_size_ >= removing_size); table_size_ -= removing_size; table_elems_--; } void HPackEncoderTable::Rebuild(uint32_t capacity) { decltype(elem_size_) new_elem_size(capacity); - GPR_ASSERT(table_elems_ <= capacity); + CHECK_LE(table_elems_, capacity); for (uint32_t i = 0; i < table_elems_; i++) { uint32_t ofs = tail_remote_index_ + i + 1; new_elem_size[ofs % capacity] = elem_size_[ofs % elem_size_.size()]; diff --git a/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h b/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h index 9716333773d..1bde664d0fd 100644 --- a/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +++ b/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h @@ -15,14 +15,14 @@ #ifndef GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_HPACK_ENCODER_TABLE_H #define GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_HPACK_ENCODER_TABLE_H -#include - #include #include #include #include +#include + #include "src/core/ext/transport/chttp2/transport/hpack_constants.h" namespace grpc_core { diff --git a/src/core/ext/transport/chttp2/transport/hpack_parse_result.cc b/src/core/ext/transport/chttp2/transport/hpack_parse_result.cc index 4e87d291d8c..c8a93a6a0ee 100644 --- a/src/core/ext/transport/chttp2/transport/hpack_parse_result.cc +++ b/src/core/ext/transport/chttp2/transport/hpack_parse_result.cc @@ -12,14 +12,15 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include - #include "src/core/ext/transport/chttp2/transport/hpack_parse_result.h" #include +#include "absl/log/check.h" #include "absl/strings/str_format.h" +#include + #include "src/core/ext/transport/chttp2/transport/hpack_constants.h" #include "src/core/lib/gprpp/status_helper.h" #include "src/core/lib/iomgr/error.h" @@ -53,7 +54,7 @@ class MetadataSizeLimitExceededEncoder { }; absl::Status MakeStreamError(absl::Status error) { - GPR_DEBUG_ASSERT(!error.ok()); + DCHECK(!error.ok()); return grpc_error_set_int(std::move(error), StatusIntProperty::kStreamId, 0); } } // namespace diff --git a/src/core/ext/transport/chttp2/transport/hpack_parse_result.h b/src/core/ext/transport/chttp2/transport/hpack_parse_result.h index 4a551e94475..0d3a57ad3df 100644 --- a/src/core/ext/transport/chttp2/transport/hpack_parse_result.h +++ b/src/core/ext/transport/chttp2/transport/hpack_parse_result.h @@ -15,20 +15,20 @@ #ifndef GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_HPACK_PARSE_RESULT_H #define GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_HPACK_PARSE_RESULT_H -#include - #include #include #include #include +#include "absl/log/check.h" #include "absl/status/status.h" #include "absl/strings/str_cat.h" #include "absl/strings/string_view.h" #include "absl/types/optional.h" #include +#include #include "src/core/lib/gprpp/crash.h" #include "src/core/lib/gprpp/ref_counted.h" @@ -194,7 +194,7 @@ class HpackParseResult { static HpackParseResult InvalidMetadataError(ValidateMetadataResult result, absl::string_view key) { - GPR_DEBUG_ASSERT(result != ValidateMetadataResult::kOk); + DCHECK(result != ValidateMetadataResult::kOk); HpackParseResult p{HpackParseStatus::kInvalidMetadata}; p.state_->key = std::string(key); p.state_->validate_metadata_result = result; diff --git a/src/core/ext/transport/chttp2/transport/hpack_parser.cc b/src/core/ext/transport/chttp2/transport/hpack_parser.cc index 9cc98d7e204..4c4500dc280 100644 --- a/src/core/ext/transport/chttp2/transport/hpack_parser.cc +++ b/src/core/ext/transport/chttp2/transport/hpack_parser.cc @@ -16,8 +16,6 @@ // // -#include - #include "src/core/ext/transport/chttp2/transport/hpack_parser.h" #include @@ -29,6 +27,7 @@ #include #include "absl/base/attributes.h" +#include "absl/log/check.h" #include "absl/status/status.h" #include "absl/strings/match.h" #include "absl/strings/str_cat.h" @@ -39,6 +38,7 @@ #include #include +#include #include "src/core/ext/transport/chttp2/transport/decode_huff.h" #include "src/core/ext/transport/chttp2/transport/hpack_constants.h" @@ -195,7 +195,7 @@ class HPackParser::Input { absl::optional ParseStringPrefix() { auto cur = Next(); if (!cur.has_value()) { - GPR_DEBUG_ASSERT(eof_error()); + DCHECK(eof_error()); return {}; } // Huffman if the top bit is 1 @@ -206,7 +206,7 @@ class HPackParser::Input { // all ones ==> varint string length auto v = ParseVarint(0x7f); if (!v.has_value()) { - GPR_DEBUG_ASSERT(eof_error()); + DCHECK(eof_error()); return {}; } strlen = *v; @@ -229,7 +229,7 @@ class HPackParser::Input { // Intended for errors that are specific to a stream and recoverable. // Callers should ensure that any hpack table updates happen. void SetErrorAndContinueParsing(HpackParseResult error) { - GPR_DEBUG_ASSERT(error.stream_error()); + DCHECK(error.stream_error()); SetError(std::move(error)); } @@ -237,7 +237,7 @@ class HPackParser::Input { // Intended for unrecoverable errors, with the expectation that they will // close the connection on return to chttp2. void SetErrorAndStopParsing(HpackParseResult error) { - GPR_DEBUG_ASSERT(error.connection_error()); + DCHECK(error.connection_error()); SetError(std::move(error)); begin_ = end_; } @@ -246,20 +246,20 @@ class HPackParser::Input { // min_progress_size: how many bytes beyond the current frontier do we need to // read prior to being able to get further in this parse. void UnexpectedEOF(size_t min_progress_size) { - GPR_ASSERT(min_progress_size > 0); + CHECK_GT(min_progress_size, 0u); if (min_progress_size_ != 0 || error_.connection_error()) { - GPR_DEBUG_ASSERT(eof_error()); + DCHECK(eof_error()); return; } // Set min progress size, taking into account bytes parsed already but not // consumed. min_progress_size_ = min_progress_size + (begin_ - frontier_); - GPR_DEBUG_ASSERT(eof_error()); + DCHECK(eof_error()); } // Update the frontier - signifies we've successfully parsed another element void UpdateFrontier() { - GPR_DEBUG_ASSERT(skip_bytes_ == 0); + DCHECK_EQ(skip_bytes_, 0u); frontier_ = begin_; } @@ -376,7 +376,7 @@ HPackParser::String::StringResult HPackParser::String::ParseUncompressed( // Check there's enough bytes if (input->remaining() < length) { input->UnexpectedEOF(/*min_progress_size=*/length); - GPR_DEBUG_ASSERT(input->eof_error()); + DCHECK(input->eof_error()); return StringResult{HpackParseStatus::kEof, wire_size, String{}}; } auto* refcount = input->slice_refcount(); @@ -596,7 +596,7 @@ class HPackParser::Parser { private: bool ParseTop() { - GPR_DEBUG_ASSERT(state_.parse_state == ParseState::kTop); + DCHECK(state_.parse_state == ParseState::kTop); auto cur = *input_->Next(); switch (cur >> 4) { // Literal header not indexed - First byte format: 0000xxxx @@ -766,7 +766,7 @@ class HPackParser::Parser { // Parse an index encoded key and a string encoded value bool StartIdxKey(uint32_t index, bool add_to_table) { - GPR_DEBUG_ASSERT(state_.parse_state == ParseState::kTop); + DCHECK(state_.parse_state == ParseState::kTop); input_->UpdateFrontier(); const auto* elem = state_.hpack_table.Lookup(index); if (GPR_UNLIKELY(elem == nullptr)) { @@ -782,14 +782,14 @@ class HPackParser::Parser { // Parse a varint index encoded key and a string encoded value bool StartVarIdxKey(uint32_t offset, bool add_to_table) { - GPR_DEBUG_ASSERT(state_.parse_state == ParseState::kTop); + DCHECK(state_.parse_state == ParseState::kTop); auto index = input_->ParseVarint(offset); if (GPR_UNLIKELY(!index.has_value())) return false; return StartIdxKey(*index, add_to_table); } bool StartParseLiteralKey(bool add_to_table) { - GPR_DEBUG_ASSERT(state_.parse_state == ParseState::kTop); + DCHECK(state_.parse_state == ParseState::kTop); state_.add_to_table = add_to_table; state_.parse_state = ParseState::kParsingKeyLength; input_->UpdateFrontier(); @@ -824,7 +824,7 @@ class HPackParser::Parser { } bool ParseKeyLength() { - GPR_DEBUG_ASSERT(state_.parse_state == ParseState::kParsingKeyLength); + DCHECK(state_.parse_state == ParseState::kParsingKeyLength); auto pfx = input_->ParseStringPrefix(); if (!pfx.has_value()) return false; state_.is_string_huff_compressed = pfx->huff; @@ -845,14 +845,14 @@ class HPackParser::Parser { } bool ParseKeyBody() { - GPR_DEBUG_ASSERT(state_.parse_state == ParseState::kParsingKeyBody); + DCHECK(state_.parse_state == ParseState::kParsingKeyBody); auto key = String::Parse(input_, state_.is_string_huff_compressed, state_.string_length); switch (key.status) { case HpackParseStatus::kOk: break; case HpackParseStatus::kEof: - GPR_DEBUG_ASSERT(input_->eof_error()); + DCHECK(input_->eof_error()); return false; default: input_->SetErrorAndStopParsing( @@ -892,7 +892,7 @@ class HPackParser::Parser { } bool SkipKeyBody() { - GPR_DEBUG_ASSERT(state_.parse_state == ParseState::kSkippingKeyBody); + DCHECK(state_.parse_state == ParseState::kSkippingKeyBody); if (!SkipStringBody()) return false; input_->UpdateFrontier(); state_.parse_state = ParseState::kSkippingValueLength; @@ -900,7 +900,7 @@ class HPackParser::Parser { } bool SkipValueLength() { - GPR_DEBUG_ASSERT(state_.parse_state == ParseState::kSkippingValueLength); + DCHECK(state_.parse_state == ParseState::kSkippingValueLength); auto pfx = input_->ParseStringPrefix(); if (!pfx.has_value()) return false; state_.string_length = pfx->length; @@ -910,7 +910,7 @@ class HPackParser::Parser { } bool SkipValueBody() { - GPR_DEBUG_ASSERT(state_.parse_state == ParseState::kSkippingValueBody); + DCHECK(state_.parse_state == ParseState::kSkippingValueBody); if (!SkipStringBody()) return false; input_->UpdateFrontier(); state_.parse_state = ParseState::kTop; @@ -921,7 +921,7 @@ class HPackParser::Parser { } bool ParseValueLength() { - GPR_DEBUG_ASSERT(state_.parse_state == ParseState::kParsingValueLength); + DCHECK(state_.parse_state == ParseState::kParsingValueLength); auto pfx = input_->ParseStringPrefix(); if (!pfx.has_value()) return false; state_.is_string_huff_compressed = pfx->huff; @@ -945,7 +945,7 @@ class HPackParser::Parser { } bool ParseValueBody() { - GPR_DEBUG_ASSERT(state_.parse_state == ParseState::kParsingValueBody); + DCHECK(state_.parse_state == ParseState::kParsingValueBody); auto value = state_.is_binary_header ? String::ParseBinary(input_, state_.is_string_huff_compressed, @@ -974,7 +974,7 @@ class HPackParser::Parser { case HpackParseStatus::kOk: break; case HpackParseStatus::kEof: - GPR_DEBUG_ASSERT(input_->eof_error()); + DCHECK(input_->eof_error()); return false; default: { auto result = diff --git a/src/core/ext/transport/chttp2/transport/hpack_parser.h b/src/core/ext/transport/chttp2/transport/hpack_parser.h index fe13dd7b4f1..95f752c3ba8 100644 --- a/src/core/ext/transport/chttp2/transport/hpack_parser.h +++ b/src/core/ext/transport/chttp2/transport/hpack_parser.h @@ -19,8 +19,6 @@ #ifndef GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_HPACK_PARSER_H #define GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_HPACK_PARSER_H -#include - #include #include @@ -36,6 +34,7 @@ #include "absl/types/variant.h" #include +#include #include "src/core/ext/transport/chttp2/transport/hpack_parse_result.h" #include "src/core/ext/transport/chttp2/transport/hpack_parser_table.h" diff --git a/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc b/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc index c5479186e5a..41d7d27c343 100644 --- a/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +++ b/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc @@ -16,8 +16,6 @@ // // -#include - #include "src/core/ext/transport/chttp2/transport/hpack_parser_table.h" #include @@ -27,11 +25,13 @@ #include #include +#include "absl/log/check.h" +#include "absl/log/log.h" #include "absl/status/status.h" #include "absl/strings/str_cat.h" #include "absl/strings/string_view.h" -#include +#include #include "src/core/ext/transport/chttp2/transport/hpack_constants.h" #include "src/core/ext/transport/chttp2/transport/hpack_parse_result.h" @@ -42,7 +42,7 @@ namespace grpc_core { void HPackTable::MementoRingBuffer::Put(Memento m) { - GPR_ASSERT(num_entries_ < max_entries_); + CHECK_LT(num_entries_, max_entries_); if (entries_.size() < max_entries_) { ++num_entries_; return entries_.push_back(std::move(m)); @@ -53,7 +53,7 @@ void HPackTable::MementoRingBuffer::Put(Memento m) { } auto HPackTable::MementoRingBuffer::PopOne() -> Memento { - GPR_ASSERT(num_entries_ > 0); + CHECK_GT(num_entries_, 0u); size_t index = first_entry_ % max_entries_; ++first_entry_; --num_entries_; @@ -91,7 +91,7 @@ void HPackTable::MementoRingBuffer::ForEach( // Evict one element from the table void HPackTable::EvictOne() { auto first_entry = entries_.PopOne(); - GPR_ASSERT(first_entry.md.transport_size() <= mem_used_); + CHECK(first_entry.md.transport_size() <= mem_used_); mem_used_ -= first_entry.md.transport_size(); } @@ -100,7 +100,7 @@ void HPackTable::SetMaxBytes(uint32_t max_bytes) { return; } if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) { - gpr_log(GPR_INFO, "Update hpack parser max size to %d", max_bytes); + LOG(INFO) << "Update hpack parser max size to " << max_bytes; } while (mem_used_ > max_bytes) { EvictOne(); @@ -112,7 +112,7 @@ bool HPackTable::SetCurrentTableSize(uint32_t bytes) { if (current_table_bytes_ == bytes) return true; if (bytes > max_bytes_) return false; if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) { - gpr_log(GPR_INFO, "Update hpack parser table size to %d", bytes); + LOG(INFO) << "Update hpack parser table size to " << bytes; } while (mem_used_ > bytes) { EvictOne(); diff --git a/src/core/ext/transport/chttp2/transport/hpack_parser_table.h b/src/core/ext/transport/chttp2/transport/hpack_parser_table.h index f8684511f5f..d126b3eeb43 100644 --- a/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +++ b/src/core/ext/transport/chttp2/transport/hpack_parser_table.h @@ -19,8 +19,6 @@ #ifndef GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_HPACK_PARSER_TABLE_H #define GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_HPACK_PARSER_TABLE_H -#include - #include #include @@ -29,6 +27,8 @@ #include "absl/functional/function_ref.h" +#include + #include "src/core/ext/transport/chttp2/transport/hpack_constants.h" #include "src/core/ext/transport/chttp2/transport/hpack_parse_result.h" #include "src/core/lib/gprpp/no_destruct.h" diff --git a/src/core/ext/transport/chttp2/transport/http2_settings.cc b/src/core/ext/transport/chttp2/transport/http2_settings.cc index d9e43412502..ac9c1553301 100644 --- a/src/core/ext/transport/chttp2/transport/http2_settings.cc +++ b/src/core/ext/transport/chttp2/transport/http2_settings.cc @@ -18,15 +18,15 @@ // Automatically generated by tools/codegen/core/gen_settings_ids.py // -#include - #include "src/core/ext/transport/chttp2/transport/http2_settings.h" #include "absl/strings/str_cat.h" +#include + #include "src/core/ext/transport/chttp2/transport/frame.h" -#include "src/core/lib/gpr/useful.h" #include "src/core/lib/transport/http2_errors.h" +#include "src/core/util/useful.h" namespace grpc_core { diff --git a/src/core/ext/transport/chttp2/transport/http2_settings.h b/src/core/ext/transport/chttp2/transport/http2_settings.h index 8578d913407..b5debf96c7e 100644 --- a/src/core/ext/transport/chttp2/transport/http2_settings.h +++ b/src/core/ext/transport/chttp2/transport/http2_settings.h @@ -17,8 +17,6 @@ #ifndef GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_HTTP2_SETTINGS_H #define GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_HTTP2_SETTINGS_H -#include - #include #include @@ -27,9 +25,11 @@ #include "absl/strings/string_view.h" #include "absl/types/optional.h" +#include + #include "src/core/ext/transport/chttp2/transport/frame.h" -#include "src/core/lib/gpr/useful.h" #include "src/core/lib/transport/http2_errors.h" +#include "src/core/util/useful.h" namespace grpc_core { diff --git a/src/core/ext/transport/chttp2/transport/http_trace.cc b/src/core/ext/transport/chttp2/transport/http_trace.cc index 1033102373f..41c17a33d34 100644 --- a/src/core/ext/transport/chttp2/transport/http_trace.cc +++ b/src/core/ext/transport/chttp2/transport/http_trace.cc @@ -12,8 +12,8 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include - #include "src/core/ext/transport/chttp2/transport/http_trace.h" +#include + grpc_core::TraceFlag grpc_http_trace(false, "http"); diff --git a/src/core/ext/transport/chttp2/transport/huffsyms.cc b/src/core/ext/transport/chttp2/transport/huffsyms.cc index 32f451e3913..e6ef22056d6 100644 --- a/src/core/ext/transport/chttp2/transport/huffsyms.cc +++ b/src/core/ext/transport/chttp2/transport/huffsyms.cc @@ -16,10 +16,10 @@ // // -#include - #include "src/core/ext/transport/chttp2/transport/huffsyms.h" +#include + // Constants pulled from the HPACK spec, and converted to C using the vim // command: // :%s/.* \([0-9a-f]\+\) \[ *\([0-9]\+\)\]/{0x\1, \2},/g diff --git a/src/core/ext/transport/chttp2/transport/internal.h b/src/core/ext/transport/chttp2/transport/internal.h index 250de698f4c..058928a596d 100644 --- a/src/core/ext/transport/chttp2/transport/internal.h +++ b/src/core/ext/transport/chttp2/transport/internal.h @@ -19,8 +19,6 @@ #ifndef GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_INTERNAL_H #define GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_INTERNAL_H -#include - #include #include @@ -39,8 +37,10 @@ #include #include #include +#include #include +#include "src/core/channelz/channelz.h" #include "src/core/ext/transport/chttp2/transport/context_list_entry.h" #include "src/core/ext/transport/chttp2/transport/flow_control.h" #include "src/core/ext/transport/chttp2/transport/frame_goaway.h" @@ -59,7 +59,6 @@ #include "src/core/ext/transport/chttp2/transport/write_size_policy.h" #include "src/core/lib/channel/call_tracer.h" #include "src/core/lib/channel/channel_args.h" -#include "src/core/lib/channel/channelz.h" #include "src/core/lib/channel/tcp_tracer.h" #include "src/core/lib/debug/trace.h" #include "src/core/lib/gprpp/bitset.h" @@ -224,18 +223,19 @@ typedef enum { GRPC_CHTTP2_KEEPALIVE_STATE_DISABLED, } grpc_chttp2_keepalive_state; -struct grpc_chttp2_transport final - : public grpc_core::Transport, - public grpc_core::FilterStackTransport, - public grpc_core::RefCounted, - public grpc_core::KeepsGrpcInitialized { +struct grpc_chttp2_transport final : public grpc_core::FilterStackTransport, + public grpc_core::KeepsGrpcInitialized { grpc_chttp2_transport(const grpc_core::ChannelArgs& channel_args, grpc_endpoint* ep, bool is_client); ~grpc_chttp2_transport() override; void Orphan() override; + grpc_core::RefCountedPtr Ref() { + return grpc_core::FilterStackTransport::RefAsSubclass< + grpc_chttp2_transport>(); + } + size_t SizeOfStream() const override; bool HackyDisableStreamOpBatchCoalescingInConnectedChannel() const override; void PerformStreamOp(grpc_stream* gs, diff --git a/src/core/ext/transport/chttp2/transport/max_concurrent_streams_policy.cc b/src/core/ext/transport/chttp2/transport/max_concurrent_streams_policy.cc index efe4c31011e..355e40898a6 100644 --- a/src/core/ext/transport/chttp2/transport/max_concurrent_streams_policy.cc +++ b/src/core/ext/transport/chttp2/transport/max_concurrent_streams_policy.cc @@ -12,13 +12,14 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include - #include "src/core/ext/transport/chttp2/transport/max_concurrent_streams_policy.h" #include +#include "absl/log/check.h" + #include +#include namespace grpc_core { @@ -32,7 +33,7 @@ void Chttp2MaxConcurrentStreamsPolicy::FlushedSettings() { } void Chttp2MaxConcurrentStreamsPolicy::AckLastSend() { - GPR_ASSERT(unacked_demerits_ >= sent_demerits_); + CHECK(unacked_demerits_ >= sent_demerits_); unacked_demerits_ -= std::exchange(sent_demerits_, 0); } diff --git a/src/core/ext/transport/chttp2/transport/max_concurrent_streams_policy.h b/src/core/ext/transport/chttp2/transport/max_concurrent_streams_policy.h index e8ec52eeef1..a2a56d2bfe5 100644 --- a/src/core/ext/transport/chttp2/transport/max_concurrent_streams_policy.h +++ b/src/core/ext/transport/chttp2/transport/max_concurrent_streams_policy.h @@ -15,11 +15,11 @@ #ifndef GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_MAX_CONCURRENT_STREAMS_POLICY_H #define GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_MAX_CONCURRENT_STREAMS_POLICY_H -#include - #include #include +#include + namespace grpc_core { class Chttp2MaxConcurrentStreamsPolicy { diff --git a/src/core/ext/transport/chttp2/transport/parsing.cc b/src/core/ext/transport/chttp2/transport/parsing.cc index 8f0757c053e..a49d91263e5 100644 --- a/src/core/ext/transport/chttp2/transport/parsing.cc +++ b/src/core/ext/transport/chttp2/transport/parsing.cc @@ -16,8 +16,6 @@ // // -#include - #include #include @@ -30,6 +28,8 @@ #include "absl/base/attributes.h" #include "absl/container/flat_hash_map.h" +#include "absl/log/check.h" +#include "absl/log/log.h" #include "absl/random/bit_gen_ref.h" #include "absl/status/status.h" #include "absl/strings/str_cat.h" @@ -41,7 +41,9 @@ #include #include #include +#include +#include "src/core/channelz/channelz.h" #include "src/core/ext/transport/chttp2/transport/flow_control.h" #include "src/core/ext/transport/chttp2/transport/frame_data.h" #include "src/core/ext/transport/chttp2/transport/frame_goaway.h" @@ -59,7 +61,6 @@ #include "src/core/ext/transport/chttp2/transport/ping_rate_policy.h" #include "src/core/lib/backoff/random_early_detection.h" #include "src/core/lib/channel/call_tracer.h" -#include "src/core/lib/channel/channelz.h" #include "src/core/lib/channel/context.h" #include "src/core/lib/debug/trace.h" #include "src/core/lib/experiments/experiments.h" @@ -268,7 +269,7 @@ absl::variant grpc_chttp2_perform_read( } ABSL_FALLTHROUGH_INTENDED; case GRPC_DTS_FH_0: - GPR_DEBUG_ASSERT(cur < end); + DCHECK_LT(cur, end); t->incoming_frame_size = (static_cast(*cur)) << 16; if (++cur == end) { t->deframe_state = GRPC_DTS_FH_1; @@ -276,7 +277,7 @@ absl::variant grpc_chttp2_perform_read( } ABSL_FALLTHROUGH_INTENDED; case GRPC_DTS_FH_1: - GPR_DEBUG_ASSERT(cur < end); + DCHECK_LT(cur, end); t->incoming_frame_size |= (static_cast(*cur)) << 8; if (++cur == end) { t->deframe_state = GRPC_DTS_FH_2; @@ -284,7 +285,7 @@ absl::variant grpc_chttp2_perform_read( } ABSL_FALLTHROUGH_INTENDED; case GRPC_DTS_FH_2: - GPR_DEBUG_ASSERT(cur < end); + DCHECK_LT(cur, end); t->incoming_frame_size |= *cur; if (++cur == end) { t->deframe_state = GRPC_DTS_FH_3; @@ -292,7 +293,7 @@ absl::variant grpc_chttp2_perform_read( } ABSL_FALLTHROUGH_INTENDED; case GRPC_DTS_FH_3: - GPR_DEBUG_ASSERT(cur < end); + DCHECK_LT(cur, end); t->incoming_frame_type = *cur; if (++cur == end) { t->deframe_state = GRPC_DTS_FH_4; @@ -300,7 +301,7 @@ absl::variant grpc_chttp2_perform_read( } ABSL_FALLTHROUGH_INTENDED; case GRPC_DTS_FH_4: - GPR_DEBUG_ASSERT(cur < end); + DCHECK_LT(cur, end); t->incoming_frame_flags = *cur; if (++cur == end) { t->deframe_state = GRPC_DTS_FH_5; @@ -308,7 +309,7 @@ absl::variant grpc_chttp2_perform_read( } ABSL_FALLTHROUGH_INTENDED; case GRPC_DTS_FH_5: - GPR_DEBUG_ASSERT(cur < end); + DCHECK_LT(cur, end); t->incoming_stream_id = ((static_cast(*cur)) & 0x7f) << 24; if (++cur == end) { t->deframe_state = GRPC_DTS_FH_6; @@ -316,7 +317,7 @@ absl::variant grpc_chttp2_perform_read( } ABSL_FALLTHROUGH_INTENDED; case GRPC_DTS_FH_6: - GPR_DEBUG_ASSERT(cur < end); + DCHECK_LT(cur, end); t->incoming_stream_id |= (static_cast(*cur)) << 16; if (++cur == end) { t->deframe_state = GRPC_DTS_FH_7; @@ -324,7 +325,7 @@ absl::variant grpc_chttp2_perform_read( } ABSL_FALLTHROUGH_INTENDED; case GRPC_DTS_FH_7: - GPR_DEBUG_ASSERT(cur < end); + DCHECK_LT(cur, end); t->incoming_stream_id |= (static_cast(*cur)) << 8; if (++cur == end) { t->deframe_state = GRPC_DTS_FH_8; @@ -332,7 +333,7 @@ absl::variant grpc_chttp2_perform_read( } ABSL_FALLTHROUGH_INTENDED; case GRPC_DTS_FH_8: - GPR_DEBUG_ASSERT(cur < end); + DCHECK_LT(cur, end); t->incoming_stream_id |= (static_cast(*cur)); if (grpc_http_trace.enabled()) { gpr_log(GPR_INFO, "INCOMING[%p]: %s len:%d id:0x%08x", t, @@ -367,7 +368,7 @@ absl::variant grpc_chttp2_perform_read( } ABSL_FALLTHROUGH_INTENDED; case GRPC_DTS_FRAME: - GPR_DEBUG_ASSERT(cur < end); + DCHECK_LT(cur, end); if (static_cast(end - cur) == t->incoming_frame_size) { err = parse_frame_slice( t, @@ -730,7 +731,7 @@ static grpc_error_handle init_header_frame_parser(grpc_chttp2_transport* t, } else { t->incoming_stream = s; } - GPR_DEBUG_ASSERT(s != nullptr); + DCHECK_NE(s, nullptr); s->stats.incoming.framing_bytes += 9; if (GPR_UNLIKELY(s->read_closed)) { GRPC_CHTTP2_IF_TRACING(gpr_log( @@ -769,7 +770,7 @@ static grpc_error_handle init_header_frame_parser(grpc_chttp2_transport* t, frame_type = HPackParser::LogInfo::kTrailers; break; case 2: - gpr_log(GPR_ERROR, "too many header frames received"); + LOG(ERROR) << "too many header frames received"; return init_header_skip_frame_parser(t, priority_type, is_eoh); } if (frame_type == HPackParser::LogInfo::kTrailers && !t->header_eof) { @@ -889,10 +890,9 @@ static grpc_error_handle parse_frame_slice(grpc_chttp2_transport* t, int is_last) { grpc_chttp2_stream* s = t->incoming_stream; if (grpc_http_trace.enabled()) { - gpr_log(GPR_DEBUG, - "INCOMING[%p;%p]: Parse %" PRIdPTR "b %sframe fragment with %s", t, - s, GRPC_SLICE_LENGTH(slice), is_last ? "last " : "", - t->parser.name); + VLOG(2) << "INCOMING[" << t << ";" << s << "]: Parse " + << GRPC_SLICE_LENGTH(slice) << "b " << (is_last ? "last " : "") + << "frame fragment with " << t->parser.name; } grpc_error_handle err = t->parser.parser(t->parser.user_data, t, s, slice, is_last); diff --git a/src/core/ext/transport/chttp2/transport/ping_abuse_policy.cc b/src/core/ext/transport/chttp2/transport/ping_abuse_policy.cc index 48e7b43586d..d1f371537f7 100644 --- a/src/core/ext/transport/chttp2/transport/ping_abuse_policy.cc +++ b/src/core/ext/transport/chttp2/transport/ping_abuse_policy.cc @@ -12,8 +12,6 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include - #include "src/core/ext/transport/chttp2/transport/ping_abuse_policy.h" #include @@ -22,6 +20,7 @@ #include "absl/types/optional.h" #include +#include namespace grpc_core { diff --git a/src/core/ext/transport/chttp2/transport/ping_abuse_policy.h b/src/core/ext/transport/chttp2/transport/ping_abuse_policy.h index 9663d23bb32..3d834a8665e 100644 --- a/src/core/ext/transport/chttp2/transport/ping_abuse_policy.h +++ b/src/core/ext/transport/chttp2/transport/ping_abuse_policy.h @@ -15,10 +15,10 @@ #ifndef GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_PING_ABUSE_POLICY_H #define GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_PING_ABUSE_POLICY_H -#include - #include +#include + #include "src/core/lib/channel/channel_args.h" #include "src/core/lib/gprpp/time.h" diff --git a/src/core/ext/transport/chttp2/transport/ping_callbacks.cc b/src/core/ext/transport/chttp2/transport/ping_callbacks.cc index 4081f22af79..49adbe27fe0 100644 --- a/src/core/ext/transport/chttp2/transport/ping_callbacks.cc +++ b/src/core/ext/transport/chttp2/transport/ping_callbacks.cc @@ -12,16 +12,16 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include - #include "src/core/ext/transport/chttp2/transport/ping_callbacks.h" #include +#include "absl/log/check.h" #include "absl/meta/type_traits.h" #include "absl/random/distributions.h" #include +#include grpc_core::TraceFlag grpc_ping_trace(false, "http2_ping"); @@ -96,7 +96,7 @@ absl::optional Chttp2PingCallbacks::OnPingTimeout( Duration ping_timeout, grpc_event_engine::experimental::EventEngine* event_engine, Callback callback) { - GPR_ASSERT(started_new_ping_without_setting_timeout_); + CHECK(started_new_ping_without_setting_timeout_); started_new_ping_without_setting_timeout_ = false; auto it = inflight_.find(most_recent_inflight_); if (it == inflight_.end()) return absl::nullopt; diff --git a/src/core/ext/transport/chttp2/transport/ping_callbacks.h b/src/core/ext/transport/chttp2/transport/ping_callbacks.h index f1d8b826725..58a762aa013 100644 --- a/src/core/ext/transport/chttp2/transport/ping_callbacks.h +++ b/src/core/ext/transport/chttp2/transport/ping_callbacks.h @@ -15,8 +15,6 @@ #ifndef GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_PING_CALLBACKS_H #define GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_PING_CALLBACKS_H -#include - #include #include @@ -30,6 +28,7 @@ #include "absl/types/optional.h" #include +#include #include "src/core/lib/debug/trace.h" #include "src/core/lib/gprpp/time.h" diff --git a/src/core/ext/transport/chttp2/transport/ping_rate_policy.cc b/src/core/ext/transport/chttp2/transport/ping_rate_policy.cc index 3bf1cf634bc..fed8ca20371 100644 --- a/src/core/ext/transport/chttp2/transport/ping_rate_policy.cc +++ b/src/core/ext/transport/chttp2/transport/ping_rate_policy.cc @@ -12,8 +12,6 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include - #include "src/core/ext/transport/chttp2/transport/ping_rate_policy.h" #include @@ -23,6 +21,7 @@ #include "absl/types/optional.h" #include +#include #include "src/core/lib/experiments/experiments.h" #include "src/core/lib/gprpp/match.h" diff --git a/src/core/ext/transport/chttp2/transport/ping_rate_policy.h b/src/core/ext/transport/chttp2/transport/ping_rate_policy.h index bf95315c94f..b9501686d95 100644 --- a/src/core/ext/transport/chttp2/transport/ping_rate_policy.h +++ b/src/core/ext/transport/chttp2/transport/ping_rate_policy.h @@ -15,8 +15,6 @@ #ifndef GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_PING_RATE_POLICY_H #define GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_PING_RATE_POLICY_H -#include - #include #include @@ -24,6 +22,8 @@ #include "absl/types/variant.h" +#include + #include "src/core/lib/channel/channel_args.h" #include "src/core/lib/gprpp/time.h" diff --git a/src/core/ext/transport/chttp2/transport/stream_lists.cc b/src/core/ext/transport/chttp2/transport/stream_lists.cc index 36c09e773b5..424666044e6 100644 --- a/src/core/ext/transport/chttp2/transport/stream_lists.cc +++ b/src/core/ext/transport/chttp2/transport/stream_lists.cc @@ -16,9 +16,10 @@ // // -#include +#include "absl/log/check.h" #include +#include #include "src/core/ext/transport/chttp2/transport/internal.h" #include "src/core/ext/transport/chttp2/transport/legacy_frame.h" @@ -58,7 +59,7 @@ static bool stream_list_pop(grpc_chttp2_transport* t, grpc_chttp2_stream* s = t->lists[id].head; if (s) { grpc_chttp2_stream* new_head = s->links[id].next; - GPR_ASSERT(s->included.is_set(id)); + CHECK(s->included.is_set(id)); if (new_head) { t->lists[id].head = new_head; new_head->links[id].prev = nullptr; @@ -78,12 +79,12 @@ static bool stream_list_pop(grpc_chttp2_transport* t, static void stream_list_remove(grpc_chttp2_transport* t, grpc_chttp2_stream* s, grpc_chttp2_stream_list_id id) { - GPR_ASSERT(s->included.is_set(id)); + CHECK(s->included.is_set(id)); s->included.clear(id); if (s->links[id].prev) { s->links[id].prev->links[id].next = s->links[id].next; } else { - GPR_ASSERT(t->lists[id].head == s); + CHECK(t->lists[id].head == s); t->lists[id].head = s->links[id].next; } if (s->links[id].next) { @@ -112,7 +113,7 @@ static void stream_list_add_tail(grpc_chttp2_transport* t, grpc_chttp2_stream* s, grpc_chttp2_stream_list_id id) { grpc_chttp2_stream* old_tail; - GPR_ASSERT(!s->included.is_set(id)); + CHECK(!s->included.is_set(id)); old_tail = t->lists[id].tail; s->links[id].next = nullptr; s->links[id].prev = old_tail; @@ -142,7 +143,7 @@ static bool stream_list_add(grpc_chttp2_transport* t, grpc_chttp2_stream* s, bool grpc_chttp2_list_add_writable_stream(grpc_chttp2_transport* t, grpc_chttp2_stream* s) { - GPR_ASSERT(s->id != 0); + CHECK_NE(s->id, 0u); return stream_list_add(t, s, GRPC_CHTTP2_LIST_WRITABLE); } diff --git a/src/core/ext/transport/chttp2/transport/varint.cc b/src/core/ext/transport/chttp2/transport/varint.cc index db08fe054bf..7af77e772be 100644 --- a/src/core/ext/transport/chttp2/transport/varint.cc +++ b/src/core/ext/transport/chttp2/transport/varint.cc @@ -16,12 +16,12 @@ // // -#include - #include "src/core/ext/transport/chttp2/transport/varint.h" #include "absl/base/attributes.h" +#include + namespace grpc_core { size_t VarintLength(size_t tail_value) { diff --git a/src/core/ext/transport/chttp2/transport/varint.h b/src/core/ext/transport/chttp2/transport/varint.h index 72c151022fe..c02d5d10313 100644 --- a/src/core/ext/transport/chttp2/transport/varint.h +++ b/src/core/ext/transport/chttp2/transport/varint.h @@ -19,12 +19,13 @@ #ifndef GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_VARINT_H #define GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_VARINT_H -#include - #include #include +#include "absl/log/check.h" + #include +#include // Helpers for hpack varint encoding @@ -50,7 +51,7 @@ class VarintWriter { explicit VarintWriter(size_t value) : value_(value), length_(value < kMaxInPrefix ? 1 : VarintLength(value - kMaxInPrefix)) { - GPR_ASSERT(value <= UINT32_MAX); + CHECK(value <= UINT32_MAX); } size_t value() const { return value_; } diff --git a/src/core/ext/transport/chttp2/transport/write_size_policy.cc b/src/core/ext/transport/chttp2/transport/write_size_policy.cc index 9aae5197e56..f8ec481d7fe 100644 --- a/src/core/ext/transport/chttp2/transport/write_size_policy.cc +++ b/src/core/ext/transport/chttp2/transport/write_size_policy.cc @@ -12,20 +12,21 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include - #include "src/core/ext/transport/chttp2/transport/write_size_policy.h" #include +#include "absl/log/check.h" + #include +#include namespace grpc_core { size_t Chttp2WriteSizePolicy::WriteTargetSize() { return current_target_; } void Chttp2WriteSizePolicy::BeginWrite(size_t size) { - GPR_ASSERT(experiment_start_time_ == Timestamp::InfFuture()); + CHECK(experiment_start_time_ == Timestamp::InfFuture()); if (size < current_target_ * 7 / 10) { // If we were trending fast but stopped getting enough data to verify, then // reset back to the default state. diff --git a/src/core/ext/transport/chttp2/transport/write_size_policy.h b/src/core/ext/transport/chttp2/transport/write_size_policy.h index a300dbd4c2e..a1eae8fec9e 100644 --- a/src/core/ext/transport/chttp2/transport/write_size_policy.h +++ b/src/core/ext/transport/chttp2/transport/write_size_policy.h @@ -15,11 +15,11 @@ #ifndef GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_WRITE_SIZE_POLICY_H #define GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_WRITE_SIZE_POLICY_H -#include - #include #include +#include + #include "src/core/lib/gprpp/time.h" namespace grpc_core { diff --git a/src/core/ext/transport/chttp2/transport/writing.cc b/src/core/ext/transport/chttp2/transport/writing.cc index 5357b2ccf22..6b99d9deee8 100644 --- a/src/core/ext/transport/chttp2/transport/writing.cc +++ b/src/core/ext/transport/chttp2/transport/writing.cc @@ -16,8 +16,6 @@ // // -#include - #include #include @@ -28,14 +26,17 @@ #include #include "absl/container/flat_hash_map.h" +#include "absl/log/check.h" #include "absl/status/status.h" #include "absl/types/optional.h" #include #include #include +#include #include +#include "src/core/channelz/channelz.h" #include "src/core/ext/transport/chttp2/transport/chttp2_transport.h" #include "src/core/ext/transport/chttp2/transport/context_list_entry.h" #include "src/core/ext/transport/chttp2/transport/flow_control.h" @@ -54,12 +55,10 @@ #include "src/core/ext/transport/chttp2/transport/ping_rate_policy.h" #include "src/core/ext/transport/chttp2/transport/write_size_policy.h" #include "src/core/lib/channel/call_tracer.h" -#include "src/core/lib/channel/channelz.h" #include "src/core/lib/debug/stats.h" #include "src/core/lib/debug/stats_data.h" #include "src/core/lib/debug/trace.h" #include "src/core/lib/experiments/experiments.h" -#include "src/core/lib/gpr/useful.h" #include "src/core/lib/gprpp/match.h" #include "src/core/lib/gprpp/ref_counted.h" #include "src/core/lib/gprpp/ref_counted_ptr.h" @@ -73,6 +72,7 @@ #include "src/core/lib/transport/http2_errors.h" #include "src/core/lib/transport/metadata_batch.h" #include "src/core/lib/transport/transport.h" +#include "src/core/util/useful.h" // IWYU pragma: no_include "src/core/lib/gprpp/orphanable.h" @@ -269,7 +269,7 @@ class WriteContext { grpc_core::Http2Frame frame(std::move(*update)); Serialize(absl::Span(&frame, 1), t_->outbuf); if (t_->keepalive_timeout != grpc_core::Duration::Infinity()) { - GPR_ASSERT( + CHECK( t_->settings_ack_watchdog == grpc_event_engine::experimental::EventEngine::TaskHandle::kInvalid); // We base settings timeout on keepalive timeout, but double it to allow @@ -291,7 +291,7 @@ class WriteContext { // simple writes are queued to qbuf, and flushed here grpc_slice_buffer_move_into(&t_->qbuf, t_->outbuf.c_slice_buffer()); t_->num_pending_induced_frames = 0; - GPR_ASSERT(t_->qbuf.count == 0); + CHECK_EQ(t_->qbuf.count, 0u); } void FlushWindowUpdates() { @@ -562,14 +562,6 @@ class StreamWriteContext { grpc_chttp2_encode_data(s_->id, &s_->flow_controlled_buffer, 0, true, &s_->stats.outgoing, t_->outbuf.c_slice_buffer()); } else { - if (send_status_.has_value()) { - s_->send_trailing_metadata->Set(grpc_core::HttpStatusMetadata(), - *send_status_); - } - if (send_content_type_.has_value()) { - s_->send_trailing_metadata->Set(grpc_core::ContentTypeMetadata(), - *send_content_type_); - } t_->hpack_compressor.EncodeHeaders( grpc_core::HPackCompressor::EncodeHeaderOptions{ s_->id, true, t_->settings.peer().allow_true_binary_metadata(), @@ -589,15 +581,39 @@ class StreamWriteContext { bool stream_became_writable() { return stream_became_writable_; } private: + class TrailersOnlyMetadataEncoder { + public: + explicit TrailersOnlyMetadataEncoder(grpc_metadata_batch* trailing_md) + : trailing_md_(trailing_md) {} + + template + void Encode(Which which, Value value) { + if (Which::kTransferOnTrailersOnly) { + trailing_md_->Set(which, value); + } + } + + template + void Encode(Which which, const grpc_core::Slice& value) { + if (Which::kTransferOnTrailersOnly) { + trailing_md_->Set(which, value.Ref()); + } + } + + // Non-grpc metadata should not be transferred. + void Encode(const grpc_core::Slice&, const grpc_core::Slice&) {} + + private: + grpc_metadata_batch* trailing_md_; + }; + void ConvertInitialMetadataToTrailingMetadata() { GRPC_CHTTP2_IF_TRACING( gpr_log(GPR_INFO, "not sending initial_metadata (Trailers-Only)")); - // When sending Trailers-Only, we need to move the :status and - // content-type headers to the trailers. - send_status_ = - s_->send_initial_metadata->get(grpc_core::HttpStatusMetadata()); - send_content_type_ = - s_->send_initial_metadata->get(grpc_core::ContentTypeMetadata()); + // When sending Trailers-Only, we need to move metadata from headers to + // trailers. + TrailersOnlyMetadataEncoder encoder(s_->send_trailing_metadata); + s_->send_initial_metadata->Encode(&encoder); } void SentLastFrame() { @@ -630,9 +646,6 @@ class StreamWriteContext { grpc_chttp2_transport* const t_; grpc_chttp2_stream* const s_; bool stream_became_writable_ = false; - absl::optional send_status_; - absl::optional send_content_type_ = - {}; }; } // namespace diff --git a/src/core/ext/transport/cronet/BUILD b/src/core/ext/transport/cronet/BUILD index 20bbbfc2907..1e7e8253e62 100644 --- a/src/core/ext/transport/cronet/BUILD +++ b/src/core/ext/transport/cronet/BUILD @@ -40,6 +40,8 @@ grpc_cc_library( "transport/cronet_transport.h", ], external_deps = [ + "absl/log:check", + "absl/log:log", "cronet_c_for_grpc", ], language = "c++", diff --git a/src/core/ext/transport/cronet/transport/cronet_api_phony.cc b/src/core/ext/transport/cronet/transport/cronet_api_phony.cc index c0f245c5a73..57afb811468 100644 --- a/src/core/ext/transport/cronet/transport/cronet_api_phony.cc +++ b/src/core/ext/transport/cronet/transport/cronet_api_phony.cc @@ -19,6 +19,7 @@ // This file has empty implementation of all the functions exposed by the cronet // library, so we can build it in all environments +#include "absl/log/check.h" #include "third_party/objective_c/Cronet/bidirectional_stream_c.h" #include @@ -31,12 +32,12 @@ bidirectional_stream* bidirectional_stream_create( stream_engine* /*engine*/, void* /*annotation*/, bidirectional_stream_callback* /*callback*/) { - GPR_ASSERT(0); + CHECK(0); return nullptr; } int bidirectional_stream_destroy(bidirectional_stream* /*stream*/) { - GPR_ASSERT(0); + CHECK(0); return 0; } @@ -45,39 +46,35 @@ int bidirectional_stream_start( const char* /*method*/, const bidirectional_stream_header_array* /*headers*/, bool /*end_of_stream*/) { - GPR_ASSERT(0); + CHECK(0); return 0; } int bidirectional_stream_read(bidirectional_stream* /*stream*/, char* /*buffer*/, int /*capacity*/) { - GPR_ASSERT(0); + CHECK(0); return 0; } int bidirectional_stream_write(bidirectional_stream* /*stream*/, const char* /*buffer*/, int /*count*/, bool /*end_of_stream*/) { - GPR_ASSERT(0); + CHECK(0); return 0; } -void bidirectional_stream_cancel(bidirectional_stream* /*stream*/) { - GPR_ASSERT(0); -} +void bidirectional_stream_cancel(bidirectional_stream* /*stream*/) { CHECK(0); } void bidirectional_stream_disable_auto_flush(bidirectional_stream* /*stream*/, bool /*disable_auto_flush*/) { - GPR_ASSERT(0); + CHECK(0); } void bidirectional_stream_delay_request_headers_until_flush( bidirectional_stream* /*stream*/, bool /*delay_headers_until_flush*/) { - GPR_ASSERT(0); + CHECK(0); } -void bidirectional_stream_flush(bidirectional_stream* /*stream*/) { - GPR_ASSERT(0); -} +void bidirectional_stream_flush(bidirectional_stream* /*stream*/) { CHECK(0); } #endif // GRPC_COMPILE_WITH_CRONET diff --git a/src/core/ext/transport/cronet/transport/cronet_transport.cc b/src/core/ext/transport/cronet/transport/cronet_transport.cc index d215ed860c5..bd6c4b411dc 100644 --- a/src/core/ext/transport/cronet/transport/cronet_transport.cc +++ b/src/core/ext/transport/cronet/transport/cronet_transport.cc @@ -26,6 +26,7 @@ #include #include +#include "absl/log/check.h" #include "absl/status/status.h" #include "absl/strings/match.h" #include "absl/strings/str_cat.h" @@ -119,8 +120,7 @@ static bidirectional_stream_callback cronet_callbacks = { on_canceled}; // Cronet transport object -struct grpc_cronet_transport final : public grpc_core::Transport, - public grpc_core::FilterStackTransport { +struct grpc_cronet_transport final : public grpc_core::FilterStackTransport { FilterStackTransport* filter_stack_transport() override { return this; } grpc_core::ClientTransport* client_transport() override { return nullptr; } grpc_core::ServerTransport* server_transport() override { return nullptr; } @@ -413,7 +413,7 @@ static void execute_from_storage(stream_obj* s) { gpr_mu_lock(&s->mu); for (struct op_and_state* curr = s->storage.head; curr != nullptr;) { CRONET_LOG(GPR_DEBUG, "calling op at %p. done = %d", curr, curr->done); - GPR_ASSERT(!curr->done); + CHECK(!curr->done); enum e_op_result result = execute_stream_op(curr); CRONET_LOG(GPR_DEBUG, "execute_stream_op[%p] returns %s", curr, op_result_string(result)); @@ -593,7 +593,7 @@ static void on_response_headers_received( s->state.state_callback_received[OP_FAILED])) { // Do an extra read to trigger on_succeeded() callback in case connection // is closed - GPR_ASSERT(s->state.rs.length_field_received == false); + CHECK(s->state.rs.length_field_received == false); read_grpc_header(s); } gpr_mu_unlock(&s->mu); @@ -795,7 +795,7 @@ class CronetMetadataEncoder { value = grpc_slice_to_c_string(value_slice.c_slice()); } CRONET_LOG(GPR_DEBUG, "header %s = %s", key, value); - GPR_ASSERT(count_ < capacity_); + CHECK_LT(count_, capacity_); headers_[count_].key = key; headers_[count_].value = value; ++count_; @@ -1058,8 +1058,8 @@ static enum e_op_result execute_stream_op(struct op_and_state* oas) { CRONET_LOG(GPR_DEBUG, "running: %p OP_SEND_INITIAL_METADATA", oas); // Start new cronet stream. It is destroyed in on_succeeded, on_canceled, // on_failed - GPR_ASSERT(s->cbs == nullptr); - GPR_ASSERT(!stream_state->state_op_done[OP_SEND_INITIAL_METADATA]); + CHECK_EQ(s->cbs, nullptr); + CHECK(!stream_state->state_op_done[OP_SEND_INITIAL_METADATA]); s->cbs = bidirectional_stream_create(t->engine, s->curr_gs, &cronet_callbacks); CRONET_LOG(GPR_DEBUG, "%p = bidirectional_stream_create()", s->cbs); @@ -1230,7 +1230,7 @@ static enum e_op_result execute_stream_op(struct op_and_state* oas) { if (stream_state->rs.length_field > 0) { stream_state->rs.read_buffer = static_cast( gpr_malloc(static_cast(stream_state->rs.length_field))); - GPR_ASSERT(stream_state->rs.read_buffer); + CHECK(stream_state->rs.read_buffer); stream_state->rs.remaining_bytes = stream_state->rs.length_field; stream_state->rs.received_bytes = 0; CRONET_LOG(GPR_DEBUG, "bidirectional_stream_read(%p)", s->cbs); diff --git a/src/core/ext/transport/inproc/inproc_transport.cc b/src/core/ext/transport/inproc/inproc_transport.cc index d49dce8daf6..dbbd3e63123 100644 --- a/src/core/ext/transport/inproc/inproc_transport.cc +++ b/src/core/ext/transport/inproc/inproc_transport.cc @@ -16,6 +16,8 @@ #include +#include "absl/log/check.h" + #include #include #include @@ -26,19 +28,30 @@ #include "src/core/lib/gprpp/crash.h" #include "src/core/lib/promise/promise.h" #include "src/core/lib/promise/try_seq.h" +#include "src/core/lib/resource_quota/resource_quota.h" #include "src/core/lib/surface/channel_create.h" -#include "src/core/lib/surface/server.h" #include "src/core/lib/transport/transport.h" +#include "src/core/server/server.h" namespace grpc_core { namespace { -class InprocServerTransport final : public RefCounted, - public Transport, - public ServerTransport { +class InprocClientTransport; + +class InprocServerTransport final : public ServerTransport { public: - void SetAcceptor(Acceptor* acceptor) override { - acceptor_ = acceptor; + explicit InprocServerTransport(const ChannelArgs& args) + : event_engine_( + args.GetObjectRef()), + call_arena_allocator_(MakeRefCounted( + args.GetObject() + ->memory_quota() + ->CreateMemoryAllocator("inproc_server"), + 1024)) {} + + void SetCallDestination( + RefCountedPtr unstarted_call_handler) override { + unstarted_call_handler_ = unstarted_call_handler; ConnectionState expect = ConnectionState::kInitial; state_.compare_exchange_strong(expect, ConnectionState::kReady, std::memory_order_acq_rel, @@ -93,43 +106,55 @@ class InprocServerTransport final : public RefCounted, case ConnectionState::kReady: break; } - return acceptor_->CreateCall(std::move(md), acceptor_->CreateArena()); + auto* arena = call_arena_allocator_->MakeArena(); + auto server_call = MakeCallPair(std::move(md), event_engine_.get(), arena, + call_arena_allocator_, nullptr); + unstarted_call_handler_->StartCall(std::move(server_call.handler)); + return std::move(server_call.initiator); } + OrphanablePtr MakeClientTransport(); + private: enum class ConnectionState : uint8_t { kInitial, kReady, kDisconnected }; std::atomic state_{ConnectionState::kInitial}; std::atomic disconnecting_{false}; - Acceptor* acceptor_; + RefCountedPtr unstarted_call_handler_; absl::Status disconnect_error_; Mutex state_tracker_mu_; ConnectivityStateTracker state_tracker_ ABSL_GUARDED_BY(state_tracker_mu_){ "inproc_server_transport", GRPC_CHANNEL_CONNECTING}; + const std::shared_ptr + event_engine_; + const RefCountedPtr call_arena_allocator_; }; -class InprocClientTransport final : public Transport, public ClientTransport { +class InprocClientTransport final : public ClientTransport { public: - void StartCall(CallHandler call_handler) override { - call_handler.SpawnGuarded( + explicit InprocClientTransport( + RefCountedPtr server_transport) + : server_transport_(std::move(server_transport)) {} + + void StartCall(CallHandler child_call_handler) override { + child_call_handler.SpawnGuarded( "pull_initial_metadata", - TrySeq(call_handler.PullClientInitialMetadata(), + TrySeq(child_call_handler.PullClientInitialMetadata(), [server_transport = server_transport_, - call_handler](ClientMetadataHandle md) { - auto call_initiator = + child_call_handler](ClientMetadataHandle md) { + auto server_call_initiator = server_transport->AcceptCall(std::move(md)); - if (!call_initiator.ok()) return call_initiator.status(); - ForwardCall(call_handler, std::move(*call_initiator)); + if (!server_call_initiator.ok()) { + return server_call_initiator.status(); + } + ForwardCall(child_call_handler, + std::move(*server_call_initiator)); return absl::OkStatus(); })); } void Orphan() override { delete this; } - OrphanablePtr GetServerTransport() { - return OrphanablePtr(server_transport_->Ref().release()); - } - FilterStackTransport* filter_stack_transport() override { return nullptr; } ClientTransport* client_transport() override { return this; } ServerTransport* server_transport() override { return nullptr; } @@ -145,17 +170,21 @@ class InprocClientTransport final : public Transport, public ClientTransport { absl::UnavailableError("Client transport closed")); } - RefCountedPtr server_transport_ = - MakeRefCounted(); + const RefCountedPtr server_transport_; }; bool UsePromiseBasedTransport() { if (!IsPromiseBasedInprocTransportEnabled()) return false; - GPR_ASSERT(IsPromiseBasedClientCallEnabled()); - GPR_ASSERT(IsPromiseBasedServerCallEnabled()); + CHECK(IsPromiseBasedClientCallEnabled()); return true; } +OrphanablePtr +InprocServerTransport::MakeClientTransport() { + return MakeOrphanable( + RefAsSubclass()); +} + OrphanablePtr MakeLameChannel(absl::string_view why, absl::Status error) { gpr_log(GPR_ERROR, "%s: %s", std::string(why).c_str(), @@ -171,7 +200,7 @@ OrphanablePtr MakeLameChannel(absl::string_view why, OrphanablePtr MakeInprocChannel(Server* server, ChannelArgs client_channel_args) { - auto transports = MakeInProcessTransportPair(); + auto transports = MakeInProcessTransportPair(server->channel_args()); auto client_transport = std::move(transports.first); auto server_transport = std::move(transports.second); auto error = @@ -196,9 +225,10 @@ OrphanablePtr MakeInprocChannel(Server* server, } // namespace std::pair, OrphanablePtr> -MakeInProcessTransportPair() { - auto client_transport = MakeOrphanable(); - auto server_transport = client_transport->GetServerTransport(); +MakeInProcessTransportPair(const ChannelArgs& server_channel_args) { + auto server_transport = + MakeOrphanable(server_channel_args); + auto client_transport = server_transport->MakeClientTransport(); return std::make_pair(std::move(client_transport), std::move(server_transport)); } diff --git a/src/core/ext/transport/inproc/inproc_transport.h b/src/core/ext/transport/inproc/inproc_transport.h index 676b5f1fa32..46dc9b540f1 100644 --- a/src/core/ext/transport/inproc/inproc_transport.h +++ b/src/core/ext/transport/inproc/inproc_transport.h @@ -30,7 +30,7 @@ extern grpc_core::TraceFlag grpc_inproc_trace; namespace grpc_core { std::pair, OrphanablePtr> -MakeInProcessTransportPair(); +MakeInProcessTransportPair(const ChannelArgs& server_channel_args); } diff --git a/src/core/ext/transport/inproc/legacy_inproc_transport.cc b/src/core/ext/transport/inproc/legacy_inproc_transport.cc index 4106c7ade7c..9412fe41e4e 100644 --- a/src/core/ext/transport/inproc/legacy_inproc_transport.cc +++ b/src/core/ext/transport/inproc/legacy_inproc_transport.cc @@ -27,6 +27,8 @@ #include #include +#include "absl/log/check.h" +#include "absl/log/log.h" #include "absl/status/status.h" #include "absl/status/statusor.h" #include "absl/strings/str_cat.h" @@ -42,9 +44,9 @@ #include #include +#include "src/core/channelz/channelz.h" #include "src/core/lib/channel/channel_args.h" #include "src/core/lib/channel/channel_args_preconditioning.h" -#include "src/core/lib/channel/channelz.h" #include "src/core/lib/config/core_configuration.h" #include "src/core/lib/gprpp/debug_location.h" #include "src/core/lib/gprpp/ref_counted_ptr.h" @@ -62,10 +64,10 @@ #include "src/core/lib/surface/channel.h" #include "src/core/lib/surface/channel_create.h" #include "src/core/lib/surface/channel_stack_type.h" -#include "src/core/lib/surface/server.h" #include "src/core/lib/transport/connectivity_state.h" #include "src/core/lib/transport/metadata_batch.h" #include "src/core/lib/transport/transport.h" +#include "src/core/server/server.h" #define INPROC_LOG(...) \ do { \ @@ -101,8 +103,7 @@ struct shared_mu { gpr_refcount refs; }; -struct inproc_transport final : public grpc_core::Transport, - public grpc_core::FilterStackTransport { +struct inproc_transport final : public grpc_core::FilterStackTransport { inproc_transport(shared_mu* mu, bool is_client) : mu(mu), is_client(is_client), @@ -319,7 +320,7 @@ void log_metadata(const grpc_metadata_batch* md_batch, bool is_client, std::string prefix = absl::StrCat( "INPROC:", is_initial ? "HDR:" : "TRL:", is_client ? "CLI:" : "SVR:"); md_batch->Log([&prefix](absl::string_view key, absl::string_view value) { - gpr_log(GPR_INFO, "%s", absl::StrCat(prefix, key, ": ", value).c_str()); + LOG(INFO) << absl::StrCat(prefix, key, ": ", value); }); } @@ -1267,9 +1268,9 @@ grpc_channel* grpc_legacy_inproc_channel_create(grpc_server* server, auto new_channel = grpc_core::ChannelCreate( "inproc", client_args, GRPC_CLIENT_DIRECT_CHANNEL, client_transport); if (!new_channel.ok()) { - GPR_ASSERT(!channel); - gpr_log(GPR_ERROR, "Failed to create client channel: %s", - grpc_core::StatusToString(error).c_str()); + CHECK(!channel); + LOG(ERROR) << "Failed to create client channel: " + << grpc_core::StatusToString(error); intptr_t integer; grpc_status_code status = GRPC_STATUS_INTERNAL; if (grpc_error_get_int(error, grpc_core::StatusIntProperty::kRpcStatus, @@ -1285,9 +1286,9 @@ grpc_channel* grpc_legacy_inproc_channel_create(grpc_server* server, channel = new_channel->release()->c_ptr(); } } else { - GPR_ASSERT(!channel); - gpr_log(GPR_ERROR, "Failed to create server channel: %s", - grpc_core::StatusToString(error).c_str()); + CHECK(!channel); + LOG(ERROR) << "Failed to create server channel: " + << grpc_core::StatusToString(error); intptr_t integer; grpc_status_code status = GRPC_STATUS_INTERNAL; if (grpc_error_get_int(error, grpc_core::StatusIntProperty::kRpcStatus, diff --git a/src/core/lib/transport/endpoint_info_handshaker.cc b/src/core/handshaker/endpoint_info/endpoint_info_handshaker.cc similarity index 92% rename from src/core/lib/transport/endpoint_info_handshaker.cc rename to src/core/handshaker/endpoint_info/endpoint_info_handshaker.cc index ce02279ca56..7db1842d5d8 100644 --- a/src/core/lib/transport/endpoint_info_handshaker.cc +++ b/src/core/handshaker/endpoint_info/endpoint_info_handshaker.cc @@ -14,7 +14,7 @@ // limitations under the License. // -#include "src/core/lib/transport/endpoint_info_handshaker.h" +#include "src/core/handshaker/endpoint_info/endpoint_info_handshaker.h" #include @@ -22,15 +22,15 @@ #include +#include "src/core/handshaker/handshaker.h" +#include "src/core/handshaker/handshaker_factory.h" +#include "src/core/handshaker/handshaker_registry.h" #include "src/core/lib/channel/channel_args.h" #include "src/core/lib/gprpp/debug_location.h" #include "src/core/lib/gprpp/ref_counted_ptr.h" #include "src/core/lib/iomgr/closure.h" #include "src/core/lib/iomgr/endpoint.h" #include "src/core/lib/iomgr/exec_ctx.h" -#include "src/core/lib/transport/handshaker.h" -#include "src/core/lib/transport/handshaker_factory.h" -#include "src/core/lib/transport/handshaker_registry.h" namespace grpc_core { diff --git a/src/core/lib/transport/endpoint_info_handshaker.h b/src/core/handshaker/endpoint_info/endpoint_info_handshaker.h similarity index 84% rename from src/core/lib/transport/endpoint_info_handshaker.h rename to src/core/handshaker/endpoint_info/endpoint_info_handshaker.h index 22efb96004d..a45105a62b6 100644 --- a/src/core/lib/transport/endpoint_info_handshaker.h +++ b/src/core/handshaker/endpoint_info/endpoint_info_handshaker.h @@ -14,8 +14,8 @@ // limitations under the License. // -#ifndef GRPC_SRC_CORE_LIB_TRANSPORT_ENDPOINT_INFO_HANDSHAKER_H -#define GRPC_SRC_CORE_LIB_TRANSPORT_ENDPOINT_INFO_HANDSHAKER_H +#ifndef GRPC_SRC_CORE_HANDSHAKER_ENDPOINT_INFO_ENDPOINT_INFO_HANDSHAKER_H +#define GRPC_SRC_CORE_HANDSHAKER_ENDPOINT_INFO_ENDPOINT_INFO_HANDSHAKER_H #include @@ -34,4 +34,4 @@ void RegisterEndpointInfoHandshaker(CoreConfiguration::Builder* builder); } // namespace grpc_core -#endif // GRPC_SRC_CORE_LIB_TRANSPORT_ENDPOINT_INFO_HANDSHAKER_H +#endif // GRPC_SRC_CORE_HANDSHAKER_ENDPOINT_INFO_ENDPOINT_INFO_HANDSHAKER_H diff --git a/src/core/lib/transport/handshaker.cc b/src/core/handshaker/handshaker.cc similarity index 97% rename from src/core/lib/transport/handshaker.cc rename to src/core/handshaker/handshaker.cc index 8288002bf4d..9be4fd4383f 100644 --- a/src/core/lib/transport/handshaker.cc +++ b/src/core/handshaker/handshaker.cc @@ -16,13 +16,14 @@ // // -#include "src/core/lib/transport/handshaker.h" +#include "src/core/handshaker/handshaker.h" #include #include #include +#include "absl/log/check.h" #include "absl/status/status.h" #include "absl/strings/str_format.h" @@ -100,7 +101,7 @@ bool HandshakeManager::CallNextHandshakerLocked(grpc_error_handle error) { this, StatusToString(error).c_str(), is_shutdown_, index_, HandshakerArgsString(&args_).c_str()); } - GPR_ASSERT(index_ <= handshakers_.size()); + CHECK(index_ <= handshakers_.size()); // If we got an error or we've been shut down or we're exiting early or // we've finished the last handshaker, invoke the on_handshake_done // callback. Otherwise, call the next handshaker. @@ -119,11 +120,13 @@ bool HandshakeManager::CallNextHandshakerLocked(grpc_error_handle error) { grpc_endpoint_shutdown(args_.endpoint, error); grpc_endpoint_destroy(args_.endpoint); args_.endpoint = nullptr; - args_.args = ChannelArgs(); + } + if (args_.read_buffer != nullptr) { grpc_slice_buffer_destroy(args_.read_buffer); gpr_free(args_.read_buffer); args_.read_buffer = nullptr; } + args_.args = ChannelArgs(); } if (GRPC_TRACE_FLAG_ENABLED(grpc_handshaker_trace)) { gpr_log(GPR_INFO, @@ -175,7 +178,7 @@ void HandshakeManager::DoHandshake(grpc_endpoint* endpoint, bool done; { MutexLock lock(&mu_); - GPR_ASSERT(index_ == 0); + CHECK_EQ(index_, 0u); // Construct handshaker args. These will be passed through all // handshakers and eventually be freed by the on_handshake_done callback. args_.endpoint = endpoint; diff --git a/src/core/lib/transport/handshaker.h b/src/core/handshaker/handshaker.h similarity index 97% rename from src/core/lib/transport/handshaker.h rename to src/core/handshaker/handshaker.h index 759cfb6798e..f5df3824081 100644 --- a/src/core/lib/transport/handshaker.h +++ b/src/core/handshaker/handshaker.h @@ -16,8 +16,8 @@ // // -#ifndef GRPC_SRC_CORE_LIB_TRANSPORT_HANDSHAKER_H -#define GRPC_SRC_CORE_LIB_TRANSPORT_HANDSHAKER_H +#ifndef GRPC_SRC_CORE_HANDSHAKER_HANDSHAKER_H +#define GRPC_SRC_CORE_HANDSHAKER_HANDSHAKER_H #include @@ -161,4 +161,4 @@ class HandshakeManager : public RefCounted { } // namespace grpc_core -#endif // GRPC_SRC_CORE_LIB_TRANSPORT_HANDSHAKER_H +#endif // GRPC_SRC_CORE_HANDSHAKER_HANDSHAKER_H diff --git a/src/core/lib/transport/handshaker_factory.h b/src/core/handshaker/handshaker_factory.h similarity index 95% rename from src/core/lib/transport/handshaker_factory.h rename to src/core/handshaker/handshaker_factory.h index 79c4b005f4e..5a6fd9703e8 100644 --- a/src/core/lib/transport/handshaker_factory.h +++ b/src/core/handshaker/handshaker_factory.h @@ -16,8 +16,8 @@ // // -#ifndef GRPC_SRC_CORE_LIB_TRANSPORT_HANDSHAKER_FACTORY_H -#define GRPC_SRC_CORE_LIB_TRANSPORT_HANDSHAKER_FACTORY_H +#ifndef GRPC_SRC_CORE_HANDSHAKER_HANDSHAKER_FACTORY_H +#define GRPC_SRC_CORE_HANDSHAKER_HANDSHAKER_FACTORY_H #include @@ -86,4 +86,4 @@ class HandshakerFactory { } // namespace grpc_core -#endif // GRPC_SRC_CORE_LIB_TRANSPORT_HANDSHAKER_FACTORY_H +#endif // GRPC_SRC_CORE_HANDSHAKER_HANDSHAKER_FACTORY_H diff --git a/src/core/lib/transport/handshaker_registry.cc b/src/core/handshaker/handshaker_registry.cc similarity index 97% rename from src/core/lib/transport/handshaker_registry.cc rename to src/core/handshaker/handshaker_registry.cc index 1f49d3bda42..750fdabfdc0 100644 --- a/src/core/lib/transport/handshaker_registry.cc +++ b/src/core/handshaker/handshaker_registry.cc @@ -16,7 +16,7 @@ // // -#include "src/core/lib/transport/handshaker_registry.h" +#include "src/core/handshaker/handshaker_registry.h" #include diff --git a/src/core/lib/transport/handshaker_registry.h b/src/core/handshaker/handshaker_registry.h similarity index 88% rename from src/core/lib/transport/handshaker_registry.h rename to src/core/handshaker/handshaker_registry.h index 22354603a43..1357686c6fb 100644 --- a/src/core/lib/transport/handshaker_registry.h +++ b/src/core/handshaker/handshaker_registry.h @@ -16,17 +16,17 @@ // // -#ifndef GRPC_SRC_CORE_LIB_TRANSPORT_HANDSHAKER_REGISTRY_H -#define GRPC_SRC_CORE_LIB_TRANSPORT_HANDSHAKER_REGISTRY_H +#ifndef GRPC_SRC_CORE_HANDSHAKER_HANDSHAKER_REGISTRY_H +#define GRPC_SRC_CORE_HANDSHAKER_HANDSHAKER_REGISTRY_H #include #include #include +#include "src/core/handshaker/handshaker_factory.h" #include "src/core/lib/channel/channel_args.h" #include "src/core/lib/iomgr/iomgr_fwd.h" -#include "src/core/lib/transport/handshaker_factory.h" namespace grpc_core { @@ -66,4 +66,4 @@ class HandshakerRegistry { } // namespace grpc_core -#endif // GRPC_SRC_CORE_LIB_TRANSPORT_HANDSHAKER_REGISTRY_H +#endif // GRPC_SRC_CORE_HANDSHAKER_HANDSHAKER_REGISTRY_H diff --git a/src/core/lib/transport/http_connect_handshaker.cc b/src/core/handshaker/http_connect/http_connect_handshaker.cc similarity index 98% rename from src/core/lib/transport/http_connect_handshaker.cc rename to src/core/handshaker/http_connect/http_connect_handshaker.cc index d401423d11a..32d218e06ea 100644 --- a/src/core/lib/transport/http_connect_handshaker.cc +++ b/src/core/handshaker/http_connect/http_connect_handshaker.cc @@ -16,7 +16,7 @@ // // -#include "src/core/lib/transport/http_connect_handshaker.h" +#include "src/core/handshaker/http_connect/http_connect_handshaker.h" #include #include @@ -36,9 +36,11 @@ #include #include +#include "src/core/handshaker/handshaker.h" +#include "src/core/handshaker/handshaker_factory.h" +#include "src/core/handshaker/handshaker_registry.h" #include "src/core/lib/channel/channel_args.h" #include "src/core/lib/config/core_configuration.h" -#include "src/core/lib/gpr/string.h" #include "src/core/lib/gprpp/debug_location.h" #include "src/core/lib/gprpp/ref_counted_ptr.h" #include "src/core/lib/gprpp/sync.h" @@ -50,9 +52,7 @@ #include "src/core/lib/iomgr/exec_ctx.h" #include "src/core/lib/iomgr/iomgr_fwd.h" #include "src/core/lib/iomgr/tcp_server.h" -#include "src/core/lib/transport/handshaker.h" -#include "src/core/lib/transport/handshaker_factory.h" -#include "src/core/lib/transport/handshaker_registry.h" +#include "src/core/util/string.h" namespace grpc_core { diff --git a/src/core/lib/transport/http_connect_handshaker.h b/src/core/handshaker/http_connect/http_connect_handshaker.h similarity index 85% rename from src/core/lib/transport/http_connect_handshaker.h rename to src/core/handshaker/http_connect/http_connect_handshaker.h index b392248fc2f..6d2fc0aed63 100644 --- a/src/core/lib/transport/http_connect_handshaker.h +++ b/src/core/handshaker/http_connect/http_connect_handshaker.h @@ -16,8 +16,8 @@ // // -#ifndef GRPC_SRC_CORE_LIB_TRANSPORT_HTTP_CONNECT_HANDSHAKER_H -#define GRPC_SRC_CORE_LIB_TRANSPORT_HTTP_CONNECT_HANDSHAKER_H +#ifndef GRPC_SRC_CORE_HANDSHAKER_HTTP_CONNECT_HTTP_CONNECT_HANDSHAKER_H +#define GRPC_SRC_CORE_HANDSHAKER_HTTP_CONNECT_HTTP_CONNECT_HANDSHAKER_H #include @@ -39,4 +39,4 @@ void RegisterHttpConnectHandshaker(CoreConfiguration::Builder* builder); } // namespace grpc_core -#endif // GRPC_SRC_CORE_LIB_TRANSPORT_HTTP_CONNECT_HANDSHAKER_H +#endif // GRPC_SRC_CORE_HANDSHAKER_HTTP_CONNECT_HTTP_CONNECT_HANDSHAKER_H diff --git a/src/core/client_channel/http_proxy_mapper.cc b/src/core/handshaker/http_connect/http_proxy_mapper.cc similarity index 96% rename from src/core/client_channel/http_proxy_mapper.cc rename to src/core/handshaker/http_connect/http_proxy_mapper.cc index a4ebf216404..c989d281360 100644 --- a/src/core/client_channel/http_proxy_mapper.cc +++ b/src/core/handshaker/http_connect/http_proxy_mapper.cc @@ -16,9 +16,7 @@ // // -#include - -#include "src/core/client_channel/http_proxy_mapper.h" +#include "src/core/handshaker/http_connect/http_proxy_mapper.h" #include #include @@ -27,6 +25,8 @@ #include #include +#include "absl/log/check.h" +#include "absl/log/log.h" #include "absl/status/status.h" #include "absl/status/statusor.h" #include "absl/strings/ascii.h" @@ -42,17 +42,18 @@ #include #include #include +#include +#include "src/core/handshaker/http_connect/http_connect_handshaker.h" #include "src/core/lib/address_utils/parse_address.h" #include "src/core/lib/address_utils/sockaddr_utils.h" #include "src/core/lib/channel/channel_args.h" -#include "src/core/lib/gpr/string.h" #include "src/core/lib/gprpp/env.h" #include "src/core/lib/gprpp/host_port.h" #include "src/core/lib/gprpp/memory.h" #include "src/core/lib/iomgr/resolve_address.h" -#include "src/core/lib/transport/http_connect_handshaker.h" #include "src/core/lib/uri/uri_parser.h" +#include "src/core/util/string.h" namespace grpc_core { namespace { @@ -107,7 +108,7 @@ bool AddressIncluded( /// absl::optional GetHttpProxyServer( const ChannelArgs& args, absl::optional* user_cred) { - GPR_ASSERT(user_cred != nullptr); + CHECK_NE(user_cred, nullptr); absl::StatusOr uri; // We check the following places to determine the HTTP proxy to use, stopping // at the first one that is set: @@ -141,7 +142,7 @@ absl::optional GetHttpProxyServer( size_t authority_nstrs; gpr_string_split(uri->authority().c_str(), "@", &authority_strs, &authority_nstrs); - GPR_ASSERT(authority_nstrs != 0); // should have at least 1 string + CHECK_NE(authority_nstrs, 0u); // should have at least 1 string absl::optional proxy_name; if (authority_nstrs == 1) { // User cred not present in authority @@ -150,7 +151,7 @@ absl::optional GetHttpProxyServer( // User cred found *user_cred = authority_strs[0]; proxy_name = authority_strs[1]; - gpr_log(GPR_DEBUG, "userinfo found in proxy URI"); + VLOG(2) << "userinfo found in proxy URI"; } else { // Bad authority proxy_name = absl::nullopt; diff --git a/src/core/client_channel/http_proxy_mapper.h b/src/core/handshaker/http_connect/http_proxy_mapper.h similarity index 86% rename from src/core/client_channel/http_proxy_mapper.h rename to src/core/handshaker/http_connect/http_proxy_mapper.h index 4ff58d73728..2a283833bd4 100644 --- a/src/core/client_channel/http_proxy_mapper.h +++ b/src/core/handshaker/http_connect/http_proxy_mapper.h @@ -16,19 +16,19 @@ // // -#ifndef GRPC_SRC_CORE_CLIENT_CHANNEL_HTTP_PROXY_MAPPER_H -#define GRPC_SRC_CORE_CLIENT_CHANNEL_HTTP_PROXY_MAPPER_H - -#include +#ifndef GRPC_SRC_CORE_HANDSHAKER_HTTP_CONNECT_HTTP_PROXY_MAPPER_H +#define GRPC_SRC_CORE_HANDSHAKER_HTTP_CONNECT_HTTP_PROXY_MAPPER_H #include #include "absl/strings/string_view.h" #include "absl/types/optional.h" +#include + +#include "src/core/handshaker/proxy_mapper.h" #include "src/core/lib/channel/channel_args.h" #include "src/core/lib/config/core_configuration.h" -#include "src/core/lib/handshaker/proxy_mapper.h" #include "src/core/lib/iomgr/resolved_address.h" namespace grpc_core { @@ -50,4 +50,4 @@ void RegisterHttpProxyMapper(CoreConfiguration::Builder* builder); } // namespace grpc_core -#endif // GRPC_SRC_CORE_CLIENT_CHANNEL_HTTP_PROXY_MAPPER_H +#endif // GRPC_SRC_CORE_HANDSHAKER_HTTP_CONNECT_HTTP_PROXY_MAPPER_H diff --git a/src/core/lib/handshaker/proxy_mapper.h b/src/core/handshaker/proxy_mapper.h similarity index 90% rename from src/core/lib/handshaker/proxy_mapper.h rename to src/core/handshaker/proxy_mapper.h index e2d63290925..8ba3f740394 100644 --- a/src/core/lib/handshaker/proxy_mapper.h +++ b/src/core/handshaker/proxy_mapper.h @@ -16,8 +16,8 @@ // // -#ifndef GRPC_SRC_CORE_LIB_HANDSHAKER_PROXY_MAPPER_H -#define GRPC_SRC_CORE_LIB_HANDSHAKER_PROXY_MAPPER_H +#ifndef GRPC_SRC_CORE_HANDSHAKER_PROXY_MAPPER_H +#define GRPC_SRC_CORE_HANDSHAKER_PROXY_MAPPER_H #include @@ -50,4 +50,4 @@ class ProxyMapperInterface { } // namespace grpc_core -#endif // GRPC_SRC_CORE_LIB_HANDSHAKER_PROXY_MAPPER_H +#endif // GRPC_SRC_CORE_HANDSHAKER_PROXY_MAPPER_H diff --git a/src/core/lib/handshaker/proxy_mapper_registry.cc b/src/core/handshaker/proxy_mapper_registry.cc similarity index 97% rename from src/core/lib/handshaker/proxy_mapper_registry.cc rename to src/core/handshaker/proxy_mapper_registry.cc index f696db235b1..f13e07cc334 100644 --- a/src/core/lib/handshaker/proxy_mapper_registry.cc +++ b/src/core/handshaker/proxy_mapper_registry.cc @@ -16,7 +16,7 @@ // // -#include "src/core/lib/handshaker/proxy_mapper_registry.h" +#include "src/core/handshaker/proxy_mapper_registry.h" #include #include diff --git a/src/core/lib/handshaker/proxy_mapper_registry.h b/src/core/handshaker/proxy_mapper_registry.h similarity index 89% rename from src/core/lib/handshaker/proxy_mapper_registry.h rename to src/core/handshaker/proxy_mapper_registry.h index 2ebbca0d806..fbc09f6152d 100644 --- a/src/core/lib/handshaker/proxy_mapper_registry.h +++ b/src/core/handshaker/proxy_mapper_registry.h @@ -16,8 +16,8 @@ // // -#ifndef GRPC_SRC_CORE_LIB_HANDSHAKER_PROXY_MAPPER_REGISTRY_H -#define GRPC_SRC_CORE_LIB_HANDSHAKER_PROXY_MAPPER_REGISTRY_H +#ifndef GRPC_SRC_CORE_HANDSHAKER_PROXY_MAPPER_REGISTRY_H +#define GRPC_SRC_CORE_HANDSHAKER_PROXY_MAPPER_REGISTRY_H #include #include @@ -29,8 +29,8 @@ #include +#include "src/core/handshaker/proxy_mapper.h" #include "src/core/lib/channel/channel_args.h" -#include "src/core/lib/handshaker/proxy_mapper.h" #include "src/core/lib/iomgr/resolved_address.h" namespace grpc_core { @@ -72,4 +72,4 @@ class ProxyMapperRegistry { } // namespace grpc_core -#endif // GRPC_SRC_CORE_LIB_HANDSHAKER_PROXY_MAPPER_REGISTRY_H +#endif // GRPC_SRC_CORE_HANDSHAKER_PROXY_MAPPER_REGISTRY_H diff --git a/src/core/lib/security/transport/secure_endpoint.cc b/src/core/handshaker/security/secure_endpoint.cc similarity index 99% rename from src/core/lib/security/transport/secure_endpoint.cc rename to src/core/handshaker/security/secure_endpoint.cc index b8323983a0e..922b111cab4 100644 --- a/src/core/lib/security/transport/secure_endpoint.cc +++ b/src/core/handshaker/security/secure_endpoint.cc @@ -16,7 +16,7 @@ // // -#include "src/core/lib/security/transport/secure_endpoint.h" +#include "src/core/handshaker/security/secure_endpoint.h" #include @@ -25,6 +25,7 @@ #include #include "absl/base/thread_annotations.h" +#include "absl/log/check.h" #include "absl/status/status.h" #include "absl/strings/string_view.h" #include "absl/types/optional.h" @@ -39,8 +40,8 @@ #include #include +#include "src/core/handshaker/security/tsi_error.h" #include "src/core/lib/debug/trace.h" -#include "src/core/lib/gpr/string.h" #include "src/core/lib/gprpp/debug_location.h" #include "src/core/lib/gprpp/ref_counted_ptr.h" #include "src/core/lib/gprpp/sync.h" @@ -52,11 +53,11 @@ #include "src/core/lib/resource_quota/memory_quota.h" #include "src/core/lib/resource_quota/resource_quota.h" #include "src/core/lib/resource_quota/trace.h" -#include "src/core/lib/security/transport/tsi_error.h" #include "src/core/lib/slice/slice.h" #include "src/core/lib/slice/slice_string_helpers.h" #include "src/core/tsi/transport_security_grpc.h" #include "src/core/tsi/transport_security_interface.h" +#include "src/core/util/string.h" #define STAGING_BUFFER_SIZE 8192 @@ -358,7 +359,7 @@ static void endpoint_read(grpc_endpoint* secure_ep, grpc_slice_buffer* slices, SECURE_ENDPOINT_REF(ep, "read"); if (ep->leftover_bytes.count) { grpc_slice_buffer_swap(&ep->leftover_bytes, &ep->source_buffer); - GPR_ASSERT(ep->leftover_bytes.count == 0); + CHECK_EQ(ep->leftover_bytes.count, 0u); on_read(ep, absl::OkStatus()); return; } diff --git a/src/core/lib/security/transport/secure_endpoint.h b/src/core/handshaker/security/secure_endpoint.h similarity index 87% rename from src/core/lib/security/transport/secure_endpoint.h rename to src/core/handshaker/security/secure_endpoint.h index bc987787b5b..c185c060e11 100644 --- a/src/core/lib/security/transport/secure_endpoint.h +++ b/src/core/handshaker/security/secure_endpoint.h @@ -16,8 +16,8 @@ // // -#ifndef GRPC_SRC_CORE_LIB_SECURITY_TRANSPORT_SECURE_ENDPOINT_H -#define GRPC_SRC_CORE_LIB_SECURITY_TRANSPORT_SECURE_ENDPOINT_H +#ifndef GRPC_SRC_CORE_HANDSHAKER_SECURITY_SECURE_ENDPOINT_H +#define GRPC_SRC_CORE_HANDSHAKER_SECURITY_SECURE_ENDPOINT_H #include @@ -39,4 +39,4 @@ grpc_endpoint* grpc_secure_endpoint_create( grpc_endpoint* to_wrap, grpc_slice* leftover_slices, const grpc_channel_args* channel_args, size_t leftover_nslices); -#endif // GRPC_SRC_CORE_LIB_SECURITY_TRANSPORT_SECURE_ENDPOINT_H +#endif // GRPC_SRC_CORE_HANDSHAKER_SECURITY_SECURE_ENDPOINT_H diff --git a/src/core/lib/security/transport/security_handshaker.cc b/src/core/handshaker/security/security_handshaker.cc similarity index 98% rename from src/core/lib/security/transport/security_handshaker.cc rename to src/core/handshaker/security/security_handshaker.cc index 0dbbf77d191..33b21f31d13 100644 --- a/src/core/lib/security/transport/security_handshaker.cc +++ b/src/core/handshaker/security/security_handshaker.cc @@ -16,7 +16,7 @@ // // -#include "src/core/lib/security/transport/security_handshaker.h" +#include "src/core/handshaker/security/security_handshaker.h" #include #include @@ -28,6 +28,7 @@ #include #include "absl/base/attributes.h" +#include "absl/log/check.h" #include "absl/status/status.h" #include "absl/strings/str_cat.h" #include "absl/strings/string_view.h" @@ -42,8 +43,13 @@ #include #include +#include "src/core/channelz/channelz.h" +#include "src/core/handshaker/handshaker.h" +#include "src/core/handshaker/handshaker_factory.h" +#include "src/core/handshaker/handshaker_registry.h" +#include "src/core/handshaker/security/secure_endpoint.h" +#include "src/core/handshaker/security/tsi_error.h" #include "src/core/lib/channel/channel_args.h" -#include "src/core/lib/channel/channelz.h" #include "src/core/lib/config/core_configuration.h" #include "src/core/lib/debug/stats.h" #include "src/core/lib/debug/stats_data.h" @@ -58,13 +64,8 @@ #include "src/core/lib/iomgr/iomgr_fwd.h" #include "src/core/lib/iomgr/tcp_server.h" #include "src/core/lib/security/context/security_context.h" -#include "src/core/lib/security/transport/secure_endpoint.h" -#include "src/core/lib/security/transport/tsi_error.h" #include "src/core/lib/slice/slice.h" #include "src/core/lib/slice/slice_internal.h" -#include "src/core/lib/transport/handshaker.h" -#include "src/core/lib/transport/handshaker_factory.h" -#include "src/core/lib/transport/handshaker_registry.h" #include "src/core/tsi/transport_security_grpc.h" #define GRPC_INITIAL_HANDSHAKE_BUFFER_SIZE 256 @@ -381,7 +382,7 @@ grpc_error_handle SecurityHandshaker::OnHandshakeNextDoneLocked( } // Read more if we need to. if (result == TSI_INCOMPLETE_DATA) { - GPR_ASSERT(bytes_to_send_size == 0); + CHECK_EQ(bytes_to_send_size, 0u); grpc_endpoint_read( args_->endpoint, args_->read_buffer, GRPC_CLOSURE_INIT( @@ -405,7 +406,7 @@ grpc_error_handle SecurityHandshaker::OnHandshakeNextDoneLocked( } // Update handshaker result. if (handshaker_result != nullptr) { - GPR_ASSERT(handshaker_result_ == nullptr); + CHECK_EQ(handshaker_result_, nullptr); handshaker_result_ = handshaker_result; } if (bytes_to_send_size > 0) { diff --git a/src/core/lib/security/transport/security_handshaker.h b/src/core/handshaker/security/security_handshaker.h similarity index 84% rename from src/core/lib/security/transport/security_handshaker.h rename to src/core/handshaker/security/security_handshaker.h index 02b826c7429..9aa3bcfabc0 100644 --- a/src/core/lib/security/transport/security_handshaker.h +++ b/src/core/handshaker/security/security_handshaker.h @@ -16,19 +16,19 @@ // // -#ifndef GRPC_SRC_CORE_LIB_SECURITY_TRANSPORT_SECURITY_HANDSHAKER_H -#define GRPC_SRC_CORE_LIB_SECURITY_TRANSPORT_SECURITY_HANDSHAKER_H +#ifndef GRPC_SRC_CORE_HANDSHAKER_SECURITY_SECURITY_HANDSHAKER_H +#define GRPC_SRC_CORE_HANDSHAKER_SECURITY_SECURITY_HANDSHAKER_H #include "absl/status/statusor.h" #include #include +#include "src/core/handshaker/handshaker.h" #include "src/core/lib/channel/channel_args.h" #include "src/core/lib/config/core_configuration.h" #include "src/core/lib/gprpp/ref_counted_ptr.h" #include "src/core/lib/security/security_connector/security_connector.h" -#include "src/core/lib/transport/handshaker.h" #include "src/core/tsi/transport_security_interface.h" namespace grpc_core { @@ -43,4 +43,4 @@ void SecurityRegisterHandshakerFactories(CoreConfiguration::Builder*); } // namespace grpc_core -#endif // GRPC_SRC_CORE_LIB_SECURITY_TRANSPORT_SECURITY_HANDSHAKER_H +#endif // GRPC_SRC_CORE_HANDSHAKER_SECURITY_SECURITY_HANDSHAKER_H diff --git a/src/core/lib/security/transport/tsi_error.cc b/src/core/handshaker/security/tsi_error.cc similarity index 94% rename from src/core/lib/security/transport/tsi_error.cc rename to src/core/handshaker/security/tsi_error.cc index fbfd9825b4a..06b816df6ee 100644 --- a/src/core/lib/security/transport/tsi_error.cc +++ b/src/core/handshaker/security/tsi_error.cc @@ -16,7 +16,7 @@ // // -#include "src/core/lib/security/transport/tsi_error.h" +#include "src/core/handshaker/security/tsi_error.h" #include diff --git a/src/core/lib/security/transport/tsi_error.h b/src/core/handshaker/security/tsi_error.h similarity index 83% rename from src/core/lib/security/transport/tsi_error.h rename to src/core/handshaker/security/tsi_error.h index 6921aa2af3b..f1a57dc78ab 100644 --- a/src/core/lib/security/transport/tsi_error.h +++ b/src/core/handshaker/security/tsi_error.h @@ -16,8 +16,8 @@ // // -#ifndef GRPC_SRC_CORE_LIB_SECURITY_TRANSPORT_TSI_ERROR_H -#define GRPC_SRC_CORE_LIB_SECURITY_TRANSPORT_TSI_ERROR_H +#ifndef GRPC_SRC_CORE_HANDSHAKER_SECURITY_TSI_ERROR_H +#define GRPC_SRC_CORE_HANDSHAKER_SECURITY_TSI_ERROR_H #include @@ -27,4 +27,4 @@ grpc_error_handle grpc_set_tsi_error_result(grpc_error_handle error, tsi_result result); -#endif // GRPC_SRC_CORE_LIB_SECURITY_TRANSPORT_TSI_ERROR_H +#endif // GRPC_SRC_CORE_HANDSHAKER_SECURITY_TSI_ERROR_H diff --git a/src/core/lib/transport/tcp_connect_handshaker.cc b/src/core/handshaker/tcp_connect/tcp_connect_handshaker.cc similarity index 96% rename from src/core/lib/transport/tcp_connect_handshaker.cc rename to src/core/handshaker/tcp_connect/tcp_connect_handshaker.cc index 6f5ee5017f9..fa10c544d05 100644 --- a/src/core/lib/transport/tcp_connect_handshaker.cc +++ b/src/core/handshaker/tcp_connect/tcp_connect_handshaker.cc @@ -16,11 +16,12 @@ // // -#include "src/core/lib/transport/tcp_connect_handshaker.h" +#include "src/core/handshaker/tcp_connect/tcp_connect_handshaker.h" #include #include "absl/base/thread_annotations.h" +#include "absl/log/check.h" #include "absl/status/status.h" #include "absl/status/statusor.h" #include "absl/types/optional.h" @@ -31,6 +32,9 @@ #include #include +#include "src/core/handshaker/handshaker.h" +#include "src/core/handshaker/handshaker_factory.h" +#include "src/core/handshaker/handshaker_registry.h" #include "src/core/lib/address_utils/parse_address.h" #include "src/core/lib/channel/channel_args.h" #include "src/core/lib/config/core_configuration.h" @@ -48,9 +52,6 @@ #include "src/core/lib/iomgr/resolved_address.h" #include "src/core/lib/iomgr/tcp_client.h" #include "src/core/lib/iomgr/tcp_server.h" -#include "src/core/lib/transport/handshaker.h" -#include "src/core/lib/transport/handshaker_factory.h" -#include "src/core/lib/transport/handshaker_registry.h" #include "src/core/lib/uri/uri_parser.h" namespace grpc_core { @@ -124,7 +125,7 @@ void TCPConnectHandshaker::DoHandshake(grpc_tcp_server_acceptor* /*acceptor*/, MutexLock lock(&mu_); on_handshake_done_ = on_handshake_done; } - GPR_ASSERT(args->endpoint == nullptr); + CHECK_EQ(args->endpoint, nullptr); args_ = args; absl::StatusOr uri = URI::Parse( args->args.GetString(GRPC_ARG_TCP_HANDSHAKER_RESOLVED_ADDRESS).value()); @@ -179,7 +180,7 @@ void TCPConnectHandshaker::Connected(void* arg, grpc_error_handle error) { } return; } - GPR_ASSERT(self->endpoint_to_destroy_ != nullptr); + CHECK_NE(self->endpoint_to_destroy_, nullptr); self->args_->endpoint = self->endpoint_to_destroy_; self->endpoint_to_destroy_ = nullptr; if (self->bind_endpoint_to_pollset_) { diff --git a/src/core/lib/transport/tcp_connect_handshaker.h b/src/core/handshaker/tcp_connect/tcp_connect_handshaker.h similarity index 85% rename from src/core/lib/transport/tcp_connect_handshaker.h rename to src/core/handshaker/tcp_connect/tcp_connect_handshaker.h index be0b4d6f19d..94e05bdc815 100644 --- a/src/core/lib/transport/tcp_connect_handshaker.h +++ b/src/core/handshaker/tcp_connect/tcp_connect_handshaker.h @@ -14,8 +14,8 @@ // limitations under the License. // -#ifndef GRPC_SRC_CORE_LIB_TRANSPORT_TCP_CONNECT_HANDSHAKER_H -#define GRPC_SRC_CORE_LIB_TRANSPORT_TCP_CONNECT_HANDSHAKER_H +#ifndef GRPC_SRC_CORE_HANDSHAKER_TCP_CONNECT_TCP_CONNECT_HANDSHAKER_H +#define GRPC_SRC_CORE_HANDSHAKER_TCP_CONNECT_TCP_CONNECT_HANDSHAKER_H #include @@ -36,4 +36,4 @@ void RegisterTCPConnectHandshaker(CoreConfiguration::Builder* builder); } // namespace grpc_core -#endif // GRPC_SRC_CORE_LIB_TRANSPORT_TCP_CONNECT_HANDSHAKER_H +#endif // GRPC_SRC_CORE_HANDSHAKER_TCP_CONNECT_TCP_CONNECT_HANDSHAKER_H diff --git a/src/core/lib/address_utils/parse_address.cc b/src/core/lib/address_utils/parse_address.cc index 8899aaf725f..1b677f5f6cb 100644 --- a/src/core/lib/address_utils/parse_address.cc +++ b/src/core/lib/address_utils/parse_address.cc @@ -18,6 +18,9 @@ #include "src/core/lib/address_utils/parse_address.h" +#include "absl/log/check.h" +#include "absl/log/log.h" + #include #include "src/core/lib/iomgr/port.h" // IWYU pragma: keep @@ -47,12 +50,12 @@ #include -#include "src/core/lib/gpr/string.h" #include "src/core/lib/gprpp/host_port.h" #include "src/core/lib/gprpp/status_helper.h" #include "src/core/lib/iomgr/grpc_if_nametoindex.h" #include "src/core/lib/iomgr/sockaddr.h" #include "src/core/lib/iomgr/socket_utils.h" +#include "src/core/util/string.h" // IWYU pragma: no_include @@ -68,7 +71,7 @@ bool grpc_parse_unix(const grpc_core::URI& uri, grpc_error_handle error = grpc_core::UnixSockaddrPopulate(uri.path(), resolved_addr); if (!error.ok()) { - gpr_log(GPR_ERROR, "%s", grpc_core::StatusToString(error).c_str()); + LOG(ERROR) << "" << grpc_core::StatusToString(error); return false; } return true; @@ -84,7 +87,7 @@ bool grpc_parse_unix_abstract(const grpc_core::URI& uri, grpc_error_handle error = grpc_core::UnixAbstractSockaddrPopulate(uri.path(), resolved_addr); if (!error.ok()) { - gpr_log(GPR_ERROR, "%s", grpc_core::StatusToString(error).c_str()); + LOG(ERROR) << "" << grpc_core::StatusToString(error); return false; } return true; @@ -168,7 +171,7 @@ bool grpc_parse_vsock(const grpc_core::URI& uri, grpc_error_handle error = grpc_core::VSockaddrPopulate(uri.path(), resolved_addr); if (!error.ok()) { - gpr_log(GPR_ERROR, "%s", grpc_core::StatusToString(error).c_str()); + LOG(ERROR) << "" << grpc_core::StatusToString(error); return false; } return true; @@ -236,7 +239,7 @@ bool grpc_parse_ipv4_hostport(absl::string_view hostport, } // Parse port. if (port.empty()) { - if (log_errors) gpr_log(GPR_ERROR, "no port given for ipv4 scheme"); + if (log_errors) LOG(ERROR) << "no port given for ipv4 scheme"; goto done; } int port_num; @@ -284,7 +287,7 @@ bool grpc_parse_ipv6_hostport(absl::string_view hostport, char* host_end = static_cast(gpr_memrchr(host.c_str(), '%', host.size())); if (host_end != nullptr) { - GPR_ASSERT(host_end >= host.c_str()); + CHECK(host_end >= host.c_str()); char host_without_scope[GRPC_INET6_ADDRSTRLEN + 1]; size_t host_without_scope_len = static_cast(host_end - host.c_str()); @@ -331,7 +334,7 @@ bool grpc_parse_ipv6_hostport(absl::string_view hostport, } // Parse port. if (port.empty()) { - if (log_errors) gpr_log(GPR_ERROR, "no port given for ipv6 scheme"); + if (log_errors) LOG(ERROR) << "no port given for ipv6 scheme"; goto done; } int port_num; diff --git a/src/core/lib/address_utils/sockaddr_utils.cc b/src/core/lib/address_utils/sockaddr_utils.cc index a48bad46c26..c33d2691ab5 100644 --- a/src/core/lib/address_utils/sockaddr_utils.cc +++ b/src/core/lib/address_utils/sockaddr_utils.cc @@ -21,6 +21,8 @@ #include #include +#include "absl/log/check.h" + #include #ifdef GRPC_HAVE_VSOCK #include @@ -110,7 +112,7 @@ static const uint8_t kV4MappedPrefix[] = {0, 0, 0, 0, 0, 0, int grpc_sockaddr_is_v4mapped(const grpc_resolved_address* resolved_addr, grpc_resolved_address* resolved_addr4_out) { - GPR_ASSERT(resolved_addr != resolved_addr4_out); + CHECK(resolved_addr != resolved_addr4_out); const grpc_sockaddr* addr = reinterpret_cast(resolved_addr->addr); grpc_sockaddr_in* addr4_out = @@ -140,7 +142,7 @@ int grpc_sockaddr_is_v4mapped(const grpc_resolved_address* resolved_addr, int grpc_sockaddr_to_v4mapped(const grpc_resolved_address* resolved_addr, grpc_resolved_address* resolved_addr6_out) { - GPR_ASSERT(resolved_addr != resolved_addr6_out); + CHECK(resolved_addr != resolved_addr6_out); const grpc_sockaddr* addr = reinterpret_cast(resolved_addr->addr); grpc_sockaddr_in6* addr6_out = @@ -203,7 +205,8 @@ void grpc_sockaddr_make_wildcard4(int port, grpc_resolved_address* resolved_wild_out) { grpc_sockaddr_in* wild_out = reinterpret_cast(resolved_wild_out->addr); - GPR_ASSERT(port >= 0 && port < 65536); + CHECK(port >= 0); + CHECK(port < 65536); memset(resolved_wild_out, 0, sizeof(*resolved_wild_out)); wild_out->sin_family = GRPC_AF_INET; wild_out->sin_port = grpc_htons(static_cast(port)); @@ -214,7 +217,8 @@ void grpc_sockaddr_make_wildcard6(int port, grpc_resolved_address* resolved_wild_out) { grpc_sockaddr_in6* wild_out = reinterpret_cast(resolved_wild_out->addr); - GPR_ASSERT(port >= 0 && port < 65536); + CHECK(port >= 0); + CHECK(port < 65536); memset(resolved_wild_out, 0, sizeof(*resolved_wild_out)); wild_out->sin6_family = GRPC_AF_INET6; wild_out->sin6_port = grpc_htons(static_cast(port)); @@ -378,12 +382,14 @@ int grpc_sockaddr_set_port(grpc_resolved_address* resolved_addr, int port) { grpc_sockaddr* addr = reinterpret_cast(resolved_addr->addr); switch (addr->sa_family) { case GRPC_AF_INET: - GPR_ASSERT(port >= 0 && port < 65536); + CHECK(port >= 0); + CHECK(port < 65536); (reinterpret_cast(addr))->sin_port = grpc_htons(static_cast(port)); return 1; case GRPC_AF_INET6: - GPR_ASSERT(port >= 0 && port < 65536); + CHECK(port >= 0); + CHECK(port < 65536); (reinterpret_cast(addr))->sin6_port = grpc_htons(static_cast(port)); return 1; @@ -437,7 +443,7 @@ void grpc_sockaddr_mask_bits(grpc_resolved_address* address, // We cannot use s6_addr32 since it is not defined on all platforms that we // need it on. uint32_t address_parts[4]; - GPR_ASSERT(sizeof(addr6->sin6_addr) == sizeof(address_parts)); + CHECK(sizeof(addr6->sin6_addr) == sizeof(address_parts)); memcpy(address_parts, &addr6->sin6_addr, sizeof(grpc_in6_addr)); if (mask_bits <= 32) { uint32_t mask_ip_addr = (~(uint32_t{0})) << (32 - mask_bits); diff --git a/src/core/lib/avl/avl.h b/src/core/lib/avl/avl.h index e8b9539bee2..928db42ac93 100644 --- a/src/core/lib/avl/avl.h +++ b/src/core/lib/avl/avl.h @@ -23,9 +23,9 @@ #include -#include "src/core/lib/gpr/useful.h" #include "src/core/lib/gprpp/ref_counted.h" #include "src/core/lib/gprpp/ref_counted_ptr.h" +#include "src/core/util/useful.h" namespace grpc_core { diff --git a/src/core/lib/channel/call_tracer.cc b/src/core/lib/channel/call_tracer.cc index 898cb5ab6b3..154bbdfbf06 100644 --- a/src/core/lib/channel/call_tracer.cc +++ b/src/core/lib/channel/call_tracer.cc @@ -22,6 +22,8 @@ #include #include +#include "absl/log/check.h" + #include #include @@ -76,7 +78,7 @@ class DelegatingClientCallTracer : public ClientCallTracer { explicit DelegatingClientCallAttemptTracer( std::vector tracers) : tracers_(std::move(tracers)) { - GPR_DEBUG_ASSERT(!tracers_.empty()); + DCHECK(!tracers_.empty()); } ~DelegatingClientCallAttemptTracer() override {} void RecordSendInitialMetadata( @@ -176,7 +178,7 @@ class DelegatingClientCallTracer : public ClientCallTracer { attempt_tracers.reserve(tracers_.size()); for (auto* tracer : tracers_) { auto* attempt_tracer = tracer->StartNewAttempt(is_transparent_retry); - GPR_DEBUG_ASSERT(attempt_tracer != nullptr); + DCHECK_NE(attempt_tracer, nullptr); attempt_tracers.push_back(attempt_tracer); } return GetContext()->ManagedNew( @@ -328,9 +330,8 @@ void AddClientCallTracerToContext(grpc_call_context_element* call_context, void AddServerCallTracerToContext(grpc_call_context_element* call_context, ServerCallTracer* tracer) { - GPR_DEBUG_ASSERT( - call_context[GRPC_CONTEXT_CALL_TRACER].value == - call_context[GRPC_CONTEXT_CALL_TRACER_ANNOTATION_INTERFACE].value); + DCHECK(call_context[GRPC_CONTEXT_CALL_TRACER].value == + call_context[GRPC_CONTEXT_CALL_TRACER_ANNOTATION_INTERFACE].value); if (call_context[GRPC_CONTEXT_CALL_TRACER_ANNOTATION_INTERFACE].value == nullptr) { // This is the first call tracer. Set it directly. diff --git a/src/core/lib/channel/channel_args.cc b/src/core/lib/channel/channel_args.cc index d02d5b369b3..1e63ae38f9e 100644 --- a/src/core/lib/channel/channel_args.cc +++ b/src/core/lib/channel/channel_args.cc @@ -28,6 +28,7 @@ #include #include +#include "absl/log/check.h" #include "absl/strings/match.h" #include "absl/strings/str_cat.h" #include "absl/strings/str_format.h" @@ -39,7 +40,7 @@ #include #include -#include "src/core/lib/gpr/useful.h" +#include "src/core/util/useful.h" namespace grpc_core { @@ -427,7 +428,7 @@ grpc_channel_args* grpc_channel_args_copy_and_add_and_remove( for (size_t i = 0; i < num_to_add; ++i) { dst->args[dst_idx++] = copy_arg(&to_add[i]); } - GPR_ASSERT(dst_idx == dst->num_args); + CHECK(dst_idx == dst->num_args); return dst; } @@ -699,7 +700,7 @@ grpc_channel_args_client_channel_creation_mutator g_mutator = nullptr; void grpc_channel_args_set_client_channel_creation_mutator( grpc_channel_args_client_channel_creation_mutator cb) { - GPR_DEBUG_ASSERT(g_mutator == nullptr); + DCHECK_EQ(g_mutator, nullptr); g_mutator = cb; } grpc_channel_args_client_channel_creation_mutator diff --git a/src/core/lib/channel/channel_args.h b/src/core/lib/channel/channel_args.h index 97197f43715..31e0430a7c6 100644 --- a/src/core/lib/channel/channel_args.h +++ b/src/core/lib/channel/channel_args.h @@ -38,7 +38,6 @@ #include #include "src/core/lib/avl/avl.h" -#include "src/core/lib/gpr/useful.h" #include "src/core/lib/gprpp/debug_location.h" #include "src/core/lib/gprpp/dual_ref_counted.h" #include "src/core/lib/gprpp/ref_counted.h" @@ -46,6 +45,7 @@ #include "src/core/lib/gprpp/ref_counted_string.h" #include "src/core/lib/gprpp/time.h" #include "src/core/lib/surface/channel_stack_type.h" +#include "src/core/util/useful.h" // TODO(hork): When we're ready to allow setting via a channel arg from the // application, replace this with a macro in diff --git a/src/core/lib/channel/channel_stack.cc b/src/core/lib/channel/channel_stack.cc index 4c4eaa2326d..59c80a2d42d 100644 --- a/src/core/lib/channel/channel_stack.cc +++ b/src/core/lib/channel/channel_stack.cc @@ -23,14 +23,17 @@ #include #include +#include "absl/log/check.h" +#include "absl/log/log.h" + #include #include #include "src/core/lib/channel/channel_args.h" #include "src/core/lib/channel/channel_fwd.h" #include "src/core/lib/channel/channel_stack_trace.h" -#include "src/core/lib/gpr/alloc.h" #include "src/core/lib/surface/channel_init.h" +#include "src/core/util/alloc.h" using grpc_event_engine::experimental::EventEngine; @@ -67,8 +70,8 @@ size_t grpc_channel_stack_size(const grpc_channel_filter** filters, sizeof(grpc_channel_element)); size_t i; - GPR_ASSERT((GPR_MAX_ALIGNMENT & (GPR_MAX_ALIGNMENT - 1)) == 0 && - "GPR_MAX_ALIGNMENT must be a power of two"); + CHECK((GPR_MAX_ALIGNMENT & (GPR_MAX_ALIGNMENT - 1)) == 0) + << "GPR_MAX_ALIGNMENT must be a power of two"; // add the size for each filter for (i = 0; i < filter_count; i++) { @@ -119,7 +122,7 @@ grpc_error_handle grpc_channel_stack_init( const grpc_core::ChannelArgs& channel_args, const char* name, grpc_channel_stack* stack) { if (grpc_trace_channel_stack.enabled()) { - gpr_log(GPR_INFO, "CHANNEL_STACK: init %s", name); + LOG(INFO) << "CHANNEL_STACK: init " << name; for (size_t i = 0; i < filter_count; i++) { gpr_log(GPR_INFO, "CHANNEL_STACK: filter %s%s", filters[i]->name, filters[i]->make_call_promise ? " [promise-capable]" : ""); @@ -167,9 +170,9 @@ grpc_error_handle grpc_channel_stack_init( call_size += GPR_ROUND_UP_TO_ALIGNMENT_SIZE(filters[i]->sizeof_call_data); } - GPR_ASSERT(user_data > (char*)stack); - GPR_ASSERT((uintptr_t)(user_data - (char*)stack) == - grpc_channel_stack_size(filters, filter_count)); + CHECK(user_data > (char*)stack); + CHECK((uintptr_t)(user_data - (char*)stack) == + grpc_channel_stack_size(filters, filter_count)); stack->call_stack_size = call_size; return first_error; @@ -303,13 +306,6 @@ grpc_core::NextPromiseFactory ClientNext(grpc_channel_element* elem) { }; } -grpc_core::NextPromiseFactory ServerNext(grpc_channel_element* elem) { - return [elem](grpc_core::CallArgs args) { - return elem->filter->make_call_promise(elem, std::move(args), - ServerNext(elem - 1)); - }; -} - } // namespace grpc_core::ArenaPromise @@ -317,12 +313,6 @@ grpc_channel_stack::MakeClientCallPromise(grpc_core::CallArgs call_args) { return ClientNext(grpc_channel_stack_element(this, 0))(std::move(call_args)); } -grpc_core::ArenaPromise -grpc_channel_stack::MakeServerCallPromise(grpc_core::CallArgs call_args) { - return ServerNext(grpc_channel_stack_element(this, this->count - 1))( - std::move(call_args)); -} - void grpc_channel_stack::InitClientCallSpine( grpc_core::CallSpineInterface* call) { for (size_t i = 0; i < count; i++) { @@ -336,19 +326,6 @@ void grpc_channel_stack::InitClientCallSpine( } } -void grpc_channel_stack::InitServerCallSpine( - grpc_core::CallSpineInterface* call) { - for (size_t i = 0; i < count; i++) { - auto* elem = grpc_channel_stack_element(this, count - 1 - i); - if (elem->filter->init_call == nullptr) { - grpc_core::Crash( - absl::StrCat("Filter '", elem->filter->name, - "' does not support the call-v3 interface")); - } - elem->filter->init_call(elem, call); - } -} - void grpc_call_log_op(const char* file, int line, gpr_log_severity severity, grpc_call_element* elem, grpc_transport_stream_op_batch* op) { diff --git a/src/core/lib/channel/channel_stack.h b/src/core/lib/channel/channel_stack.h index affd34a4191..10b326e88d3 100644 --- a/src/core/lib/channel/channel_stack.h +++ b/src/core/lib/channel/channel_stack.h @@ -62,7 +62,6 @@ #include "src/core/lib/channel/context.h" #include "src/core/lib/channel/metrics.h" #include "src/core/lib/debug/trace.h" -#include "src/core/lib/gpr/time_precise.h" #include "src/core/lib/gprpp/manual_constructor.h" #include "src/core/lib/gprpp/ref_counted_ptr.h" #include "src/core/lib/gprpp/time.h" @@ -74,6 +73,7 @@ #include "src/core/lib/resource_quota/arena.h" #include "src/core/lib/transport/call_final_info.h" #include "src/core/lib/transport/transport.h" +#include "src/core/util/time_precise.h" struct grpc_channel_element_args { grpc_channel_stack* channel_stack; @@ -241,7 +241,6 @@ struct grpc_channel_stack { MakeServerCallPromise(grpc_core::CallArgs call_args); void InitClientCallSpine(grpc_core::CallSpineInterface* call); - void InitServerCallSpine(grpc_core::CallSpineInterface* call); }; // A call stack tracks a set of related filters for one call, and guarantees diff --git a/src/core/lib/channel/connected_channel.cc b/src/core/lib/channel/connected_channel.cc index 6cbf9df086e..bf6fe94471b 100644 --- a/src/core/lib/channel/connected_channel.cc +++ b/src/core/lib/channel/connected_channel.cc @@ -26,6 +26,7 @@ #include #include +#include "absl/log/check.h" #include "absl/status/status.h" #include "absl/status/statusor.h" #include "absl/types/optional.h" @@ -43,7 +44,6 @@ #include "src/core/lib/config/core_configuration.h" #include "src/core/lib/debug/trace.h" #include "src/core/lib/experiments/experiments.h" -#include "src/core/lib/gpr/alloc.h" #include "src/core/lib/gprpp/debug_location.h" #include "src/core/lib/gprpp/orphanable.h" #include "src/core/lib/gprpp/ref_counted_ptr.h" @@ -78,6 +78,7 @@ #include "src/core/lib/transport/error_utils.h" #include "src/core/lib/transport/metadata_batch.h" #include "src/core/lib/transport/transport.h" +#include "src/core/util/alloc.h" typedef struct connected_channel_channel_data { grpc_core::Transport* transport; @@ -224,7 +225,7 @@ static void connected_channel_destroy_call_elem( static grpc_error_handle connected_channel_init_channel_elem( grpc_channel_element* elem, grpc_channel_element_args* args) { channel_data* cd = static_cast(elem->channel_data); - GPR_ASSERT(args->is_last); + CHECK(args->is_last); cd->transport = args->channel_args.GetObject(); return absl::OkStatus(); } diff --git a/src/core/lib/channel/context.h b/src/core/lib/channel/context.h index ac2e1aeda49..95ce62240bf 100644 --- a/src/core/lib/channel/context.h +++ b/src/core/lib/channel/context.h @@ -29,9 +29,12 @@ /// This enum represents the indexes into the array, where each index /// contains a different type of value. typedef enum { + /// grpc_call* associated with this context. + GRPC_CONTEXT_CALL = 0, + /// Value is either a \a grpc_client_security_context or a /// \a grpc_server_security_context. - GRPC_CONTEXT_SECURITY = 0, + GRPC_CONTEXT_SECURITY, /// Value is a \a census_context. GRPC_CONTEXT_TRACING, @@ -68,10 +71,42 @@ struct grpc_call_context_element { }; namespace grpc_core { +class Call; +class CallTracerAnnotationInterface; + // Bind the legacy context array into the new style structure // TODO(ctiller): remove as we migrate these contexts to the new system. template <> struct ContextType {}; + +// Also as a transition step allow exposing a GetContext that can peek into +// the legacy context array. +namespace promise_detail { +template +struct OldStyleContext; + +template <> +struct OldStyleContext { + static constexpr grpc_context_index kIndex = GRPC_CONTEXT_CALL; +}; + +template <> +struct OldStyleContext { + static constexpr grpc_context_index kIndex = + GRPC_CONTEXT_CALL_TRACER_ANNOTATION_INTERFACE; +}; + +template +class Context::kIndex)>> { + public: + static T* get() { + return static_cast( + GetContext()[OldStyleContext::kIndex] + .value); + } +}; + +} // namespace promise_detail } // namespace grpc_core #endif // GRPC_SRC_CORE_LIB_CHANNEL_CONTEXT_H diff --git a/src/core/lib/channel/metrics.cc b/src/core/lib/channel/metrics.cc index a28102f039b..c3b734fc44d 100644 --- a/src/core/lib/channel/metrics.cc +++ b/src/core/lib/channel/metrics.cc @@ -16,6 +16,8 @@ #include +#include "absl/log/check.h" + #include #include "src/core/lib/gprpp/crash.h" @@ -32,172 +34,14 @@ GlobalInstrumentsRegistry::GetInstrumentList() { return *instruments; } -GlobalInstrumentsRegistry::GlobalUInt64CounterHandle -GlobalInstrumentsRegistry::RegisterUInt64Counter( - absl::string_view name, absl::string_view description, - absl::string_view unit, absl::Span label_keys, - absl::Span optional_label_keys, - bool enable_by_default) { - auto& instruments = GetInstrumentList(); - for (const auto& descriptor : instruments) { - if (descriptor.name == name) { - Crash( - absl::StrFormat("Metric name %s has already been registered.", name)); - } - } - uint32_t index = instruments.size(); - GPR_ASSERT(index < std::numeric_limits::max()); - GlobalInstrumentDescriptor descriptor; - descriptor.value_type = ValueType::kUInt64; - descriptor.instrument_type = InstrumentType::kCounter; - descriptor.index = index; - descriptor.enable_by_default = enable_by_default; - descriptor.name = name; - descriptor.description = description; - descriptor.unit = unit; - descriptor.label_keys = {label_keys.begin(), label_keys.end()}; - descriptor.optional_label_keys = {optional_label_keys.begin(), - optional_label_keys.end()}; - instruments.push_back(std::move(descriptor)); - GlobalUInt64CounterHandle handle; - handle.index = index; - return handle; -} - -GlobalInstrumentsRegistry::GlobalDoubleCounterHandle -GlobalInstrumentsRegistry::RegisterDoubleCounter( - absl::string_view name, absl::string_view description, - absl::string_view unit, absl::Span label_keys, - absl::Span optional_label_keys, - bool enable_by_default) { - auto& instruments = GetInstrumentList(); - for (const auto& descriptor : instruments) { - if (descriptor.name == name) { - Crash( - absl::StrFormat("Metric name %s has already been registered.", name)); - } - } - uint32_t index = instruments.size(); - GPR_ASSERT(index < std::numeric_limits::max()); - GlobalInstrumentDescriptor descriptor; - descriptor.value_type = ValueType::kDouble; - descriptor.instrument_type = InstrumentType::kCounter; - descriptor.index = index; - descriptor.enable_by_default = enable_by_default; - descriptor.name = name; - descriptor.description = description; - descriptor.unit = unit; - descriptor.label_keys = {label_keys.begin(), label_keys.end()}; - descriptor.optional_label_keys = {optional_label_keys.begin(), - optional_label_keys.end()}; - instruments.push_back(std::move(descriptor)); - GlobalDoubleCounterHandle handle; - handle.index = index; - return handle; -} - -GlobalInstrumentsRegistry::GlobalUInt64HistogramHandle -GlobalInstrumentsRegistry::RegisterUInt64Histogram( - absl::string_view name, absl::string_view description, - absl::string_view unit, absl::Span label_keys, - absl::Span optional_label_keys, - bool enable_by_default) { - auto& instruments = GetInstrumentList(); - for (const auto& descriptor : instruments) { - if (descriptor.name == name) { - Crash( - absl::StrFormat("Metric name %s has already been registered.", name)); - } - } - uint32_t index = instruments.size(); - GPR_ASSERT(index < std::numeric_limits::max()); - GlobalInstrumentDescriptor descriptor; - descriptor.value_type = ValueType::kUInt64; - descriptor.instrument_type = InstrumentType::kHistogram; - descriptor.index = index; - descriptor.enable_by_default = enable_by_default; - descriptor.name = name; - descriptor.description = description; - descriptor.unit = unit; - descriptor.label_keys = {label_keys.begin(), label_keys.end()}; - descriptor.optional_label_keys = {optional_label_keys.begin(), - optional_label_keys.end()}; - instruments.push_back(std::move(descriptor)); - GlobalUInt64HistogramHandle handle; - handle.index = index; - return handle; -} - -GlobalInstrumentsRegistry::GlobalDoubleHistogramHandle -GlobalInstrumentsRegistry::RegisterDoubleHistogram( - absl::string_view name, absl::string_view description, - absl::string_view unit, absl::Span label_keys, - absl::Span optional_label_keys, - bool enable_by_default) { - auto& instruments = GetInstrumentList(); - for (const auto& descriptor : instruments) { - if (descriptor.name == name) { - Crash( - absl::StrFormat("Metric name %s has already been registered.", name)); - } - } - uint32_t index = instruments.size(); - GPR_ASSERT(index < std::numeric_limits::max()); - GlobalInstrumentDescriptor descriptor; - descriptor.value_type = ValueType::kDouble; - descriptor.instrument_type = InstrumentType::kHistogram; - descriptor.index = index; - descriptor.enable_by_default = enable_by_default; - descriptor.name = name; - descriptor.description = description; - descriptor.unit = unit; - descriptor.label_keys = {label_keys.begin(), label_keys.end()}; - descriptor.optional_label_keys = {optional_label_keys.begin(), - optional_label_keys.end()}; - instruments.push_back(std::move(descriptor)); - GlobalDoubleHistogramHandle handle; - handle.index = index; - return handle; -} - -GlobalInstrumentsRegistry::GlobalCallbackInt64GaugeHandle -GlobalInstrumentsRegistry::RegisterCallbackInt64Gauge( - absl::string_view name, absl::string_view description, - absl::string_view unit, absl::Span label_keys, - absl::Span optional_label_keys, - bool enable_by_default) { - auto& instruments = GetInstrumentList(); - for (const auto& descriptor : instruments) { - if (descriptor.name == name) { - Crash( - absl::StrFormat("Metric name %s has already been registered.", name)); - } - } - uint32_t index = instruments.size(); - GPR_ASSERT(index < std::numeric_limits::max()); - GlobalInstrumentDescriptor descriptor; - descriptor.value_type = ValueType::kInt64; - descriptor.instrument_type = InstrumentType::kCallbackGauge; - descriptor.index = index; - descriptor.enable_by_default = enable_by_default; - descriptor.name = name; - descriptor.description = description; - descriptor.unit = unit; - descriptor.label_keys = {label_keys.begin(), label_keys.end()}; - descriptor.optional_label_keys = {optional_label_keys.begin(), - optional_label_keys.end()}; - instruments.push_back(std::move(descriptor)); - GlobalCallbackInt64GaugeHandle handle; - handle.index = index; - return handle; -} - -GlobalInstrumentsRegistry::GlobalCallbackDoubleGaugeHandle -GlobalInstrumentsRegistry::RegisterCallbackDoubleGauge( +GlobalInstrumentsRegistry::InstrumentID +GlobalInstrumentsRegistry::RegisterInstrument( + GlobalInstrumentsRegistry::ValueType value_type, + GlobalInstrumentsRegistry::InstrumentType instrument_type, absl::string_view name, absl::string_view description, - absl::string_view unit, absl::Span label_keys, - absl::Span optional_label_keys, - bool enable_by_default) { + absl::string_view unit, bool enable_by_default, + absl::Span label_keys, + absl::Span optional_label_keys) { auto& instruments = GetInstrumentList(); for (const auto& descriptor : instruments) { if (descriptor.name == name) { @@ -205,11 +49,11 @@ GlobalInstrumentsRegistry::RegisterCallbackDoubleGauge( absl::StrFormat("Metric name %s has already been registered.", name)); } } - uint32_t index = instruments.size(); - GPR_ASSERT(index < std::numeric_limits::max()); + InstrumentID index = instruments.size(); + CHECK_LT(index, std::numeric_limits::max()); GlobalInstrumentDescriptor descriptor; - descriptor.value_type = ValueType::kDouble; - descriptor.instrument_type = InstrumentType::kCallbackGauge; + descriptor.value_type = value_type; + descriptor.instrument_type = instrument_type; descriptor.index = index; descriptor.enable_by_default = enable_by_default; descriptor.name = name; @@ -219,9 +63,7 @@ GlobalInstrumentsRegistry::RegisterCallbackDoubleGauge( descriptor.optional_label_keys = {optional_label_keys.begin(), optional_label_keys.end()}; instruments.push_back(std::move(descriptor)); - GlobalCallbackDoubleGaugeHandle handle; - handle.index = index; - return handle; + return index; } void GlobalInstrumentsRegistry::ForEach( @@ -240,7 +82,7 @@ GlobalInstrumentsRegistry::GetInstrumentDescriptor( RegisteredMetricCallback::RegisteredMetricCallback( GlobalStatsPluginRegistry::StatsPluginGroup& stats_plugin_group, absl::AnyInvocable callback, - std::vector metrics, + std::vector metrics, Duration min_interval) : stats_plugin_group_(stats_plugin_group), callback_(std::move(callback)), @@ -257,15 +99,6 @@ RegisteredMetricCallback::~RegisteredMetricCallback() { } } -std::unique_ptr -GlobalStatsPluginRegistry::StatsPluginGroup::RegisterCallback( - absl::AnyInvocable callback, - std::vector metrics, - Duration min_interval) { - return std::make_unique( - *this, std::move(callback), std::move(metrics), min_interval); -} - void GlobalStatsPluginRegistry::StatsPluginGroup::AddClientCallTracers( const Slice& path, bool registered_method, grpc_call_context_element* call_context) { diff --git a/src/core/lib/channel/metrics.h b/src/core/lib/channel/metrics.h index 7c161c80829..797be93fd7d 100644 --- a/src/core/lib/channel/metrics.h +++ b/src/core/lib/channel/metrics.h @@ -17,6 +17,7 @@ #include #include +#include #include #include "absl/functional/any_invocable.h" @@ -45,6 +46,27 @@ constexpr absl::string_view kMetricLabelTarget = "grpc.target"; // startup, before the execution of the main function (during dynamic // initialization time). Using this API after the main function begins may // result into missing instruments. This API is thread-unsafe. +// +// The registration of instruments is done through the templated +// RegistrationBuilder API and gets back a handle with an opaque type. At +// runtime, the handle should be used with the StatsPluginGroup API to record +// metrics for the instruments. +// +// At dynamic initialization time: +// const auto kMetricHandle = +// GlobalInstrumentsRegistry::RegisterUInt64Counter( +// "name", +// "description", +// "unit", /*enable_by_default=*/false) +// .Labels(kLabel1, kLabel2, kLabel3) +// .OptionalLabels(kOptionalLabel1, kOptionalLabel2) +// .Build(); +// +// At runtime time: +// stats_plugin_group.AddCounter(kMetricHandle, 1, +// {"label_value_1", "label_value_2", "label_value_3"}, +// {"optional_label_value_1", "optional_label_value_2"}); +// class GlobalInstrumentsRegistry { public: enum class ValueType { @@ -78,46 +100,113 @@ class GlobalInstrumentsRegistry { // runs or between different versions. InstrumentID index; }; - struct GlobalUInt64CounterHandle : public GlobalInstrumentHandle {}; - struct GlobalDoubleCounterHandle : public GlobalInstrumentHandle {}; - struct GlobalUInt64HistogramHandle : public GlobalInstrumentHandle {}; - struct GlobalDoubleHistogramHandle : public GlobalInstrumentHandle {}; - struct GlobalCallbackInt64GaugeHandle : public GlobalInstrumentHandle {}; - struct GlobalCallbackDoubleGaugeHandle : public GlobalInstrumentHandle {}; - using GlobalCallbackHandle = absl::variant; + + template + struct TypedGlobalInstrumentHandle : public GlobalInstrumentHandle {}; + + template + class RegistrationBuilder { + public: + template + RegistrationBuilder Labels(Args&&... args) { + return RegistrationBuilder( + name_, description_, unit_, enable_by_default_, + std::array({args...}), + optional_label_keys_); + } + + template + RegistrationBuilder OptionalLabels( + Args&&... args) { + return RegistrationBuilder( + name_, description_, unit_, enable_by_default_, label_keys_, + std::array({args...})); + } + + TypedGlobalInstrumentHandle Build() { + TypedGlobalInstrumentHandle handle; + handle.index = RegisterInstrument(V, I, name_, description_, unit_, + enable_by_default_, label_keys_, + optional_label_keys_); + return handle; + } + + private: + friend class GlobalInstrumentsRegistry; + + RegistrationBuilder(absl::string_view name, absl::string_view description, + absl::string_view unit, bool enable_by_default) + : name_(name), + description_(description), + unit_(unit), + enable_by_default_(enable_by_default) {} + + RegistrationBuilder(absl::string_view name, absl::string_view description, + absl::string_view unit, bool enable_by_default, + std::array label_keys, + std::array optional_label_keys) + : name_(name), + description_(description), + unit_(unit), + enable_by_default_(enable_by_default), + label_keys_(std::move(label_keys)), + optional_label_keys_(std::move(optional_label_keys)) {} + + absl::string_view name_; + absl::string_view description_; + absl::string_view unit_; + bool enable_by_default_; + std::array label_keys_; + std::array optional_label_keys_; + }; // Creates instrument in the GlobalInstrumentsRegistry. - static GlobalUInt64CounterHandle RegisterUInt64Counter( - absl::string_view name, absl::string_view description, - absl::string_view unit, absl::Span label_keys, - absl::Span optional_label_keys, - bool enable_by_default); - static GlobalDoubleCounterHandle RegisterDoubleCounter( - absl::string_view name, absl::string_view description, - absl::string_view unit, absl::Span label_keys, - absl::Span optional_label_keys, - bool enable_by_default); - static GlobalUInt64HistogramHandle RegisterUInt64Histogram( - absl::string_view name, absl::string_view description, - absl::string_view unit, absl::Span label_keys, - absl::Span optional_label_keys, - bool enable_by_default); - static GlobalDoubleHistogramHandle RegisterDoubleHistogram( - absl::string_view name, absl::string_view description, - absl::string_view unit, absl::Span label_keys, - absl::Span optional_label_keys, - bool enable_by_default); - static GlobalCallbackInt64GaugeHandle RegisterCallbackInt64Gauge( - absl::string_view name, absl::string_view description, - absl::string_view unit, absl::Span label_keys, - absl::Span optional_label_keys, - bool enable_by_default); - static GlobalCallbackDoubleGaugeHandle RegisterCallbackDoubleGauge( - absl::string_view name, absl::string_view description, - absl::string_view unit, absl::Span label_keys, - absl::Span optional_label_keys, - bool enable_by_default); + static RegistrationBuilder + RegisterUInt64Counter(absl::string_view name, absl::string_view description, + absl::string_view unit, bool enable_by_default) { + return RegistrationBuilder(name, description, unit, enable_by_default); + } + static RegistrationBuilder + RegisterDoubleCounter(absl::string_view name, absl::string_view description, + absl::string_view unit, bool enable_by_default) { + return RegistrationBuilder(name, description, unit, enable_by_default); + } + static RegistrationBuilder + RegisterUInt64Histogram(absl::string_view name, absl::string_view description, + absl::string_view unit, bool enable_by_default) { + return RegistrationBuilder(name, description, unit, + enable_by_default); + } + static RegistrationBuilder + RegisterDoubleHistogram(absl::string_view name, absl::string_view description, + absl::string_view unit, bool enable_by_default) { + return RegistrationBuilder(name, description, unit, + enable_by_default); + } + static RegistrationBuilder + RegisterCallbackInt64Gauge(absl::string_view name, + absl::string_view description, + absl::string_view unit, bool enable_by_default) { + return RegistrationBuilder( + name, description, unit, enable_by_default); + } + static RegistrationBuilder + RegisterCallbackDoubleGauge(absl::string_view name, + absl::string_view description, + absl::string_view unit, bool enable_by_default) { + return RegistrationBuilder( + name, description, unit, enable_by_default); + } static void ForEach( absl::FunctionRef f); @@ -131,6 +220,12 @@ class GlobalInstrumentsRegistry { static std::vector& GetInstrumentList(); + static InstrumentID RegisterInstrument( + ValueType value_type, InstrumentType instrument_type, + absl::string_view name, absl::string_view description, + absl::string_view unit, bool enable_by_default, + absl::Span label_keys, + absl::Span optional_label_keys); }; // An interface for implementing callback-style metrics. @@ -139,13 +234,35 @@ class CallbackMetricReporter { public: virtual ~CallbackMetricReporter() = default; - virtual void Report( - GlobalInstrumentsRegistry::GlobalCallbackInt64GaugeHandle handle, - int64_t value, absl::Span label_values, + template + void Report( + GlobalInstrumentsRegistry::TypedGlobalInstrumentHandle< + GlobalInstrumentsRegistry::ValueType::kInt64, + GlobalInstrumentsRegistry::InstrumentType::kCallbackGauge, M, N> + handle, + int64_t value, std::array label_values, + std::array optional_values) { + ReportInt64(handle, value, label_values, optional_values); + } + template + void Report( + GlobalInstrumentsRegistry::TypedGlobalInstrumentHandle< + GlobalInstrumentsRegistry::ValueType::kDouble, + GlobalInstrumentsRegistry::InstrumentType::kCallbackGauge, M, N> + handle, + double value, std::array label_values, + std::array optional_values) { + ReportDouble(handle, value, label_values, optional_values); + } + + private: + virtual void ReportInt64( + GlobalInstrumentsRegistry::GlobalInstrumentHandle handle, int64_t value, + absl::Span label_values, absl::Span optional_values) = 0; - virtual void Report( - GlobalInstrumentsRegistry::GlobalCallbackDoubleGaugeHandle handle, - double value, absl::Span label_values, + virtual void ReportDouble( + GlobalInstrumentsRegistry::GlobalInstrumentHandle handle, double value, + absl::Span label_values, absl::Span optional_values) = 0; }; @@ -179,15 +296,15 @@ class StatsPlugin { // this measurement and must match with their corresponding keys in // GlobalInstrumentsRegistry::RegisterUInt64Counter(). virtual void AddCounter( - GlobalInstrumentsRegistry::GlobalUInt64CounterHandle handle, - uint64_t value, absl::Span label_values, + GlobalInstrumentsRegistry::GlobalInstrumentHandle handle, uint64_t value, + absl::Span label_values, absl::Span optional_label_values) = 0; // Adds \a value to the double counter specified by \a handle. \a label_values // and \a optional_label_values specify attributes that are associated with // this measurement and must match with their corresponding keys in // GlobalInstrumentsRegistry::RegisterDoubleCounter(). virtual void AddCounter( - GlobalInstrumentsRegistry::GlobalDoubleCounterHandle handle, double value, + GlobalInstrumentsRegistry::GlobalInstrumentHandle handle, double value, absl::Span label_values, absl::Span optional_label_values) = 0; // Records a uint64 \a value to the histogram specified by \a handle. \a @@ -195,16 +312,16 @@ class StatsPlugin { // associated with this measurement and must match with their corresponding // keys in GlobalInstrumentsRegistry::RegisterUInt64Histogram(). virtual void RecordHistogram( - GlobalInstrumentsRegistry::GlobalUInt64HistogramHandle handle, - uint64_t value, absl::Span label_values, + GlobalInstrumentsRegistry::GlobalInstrumentHandle handle, uint64_t value, + absl::Span label_values, absl::Span optional_label_values) = 0; // Records a double \a value to the histogram specified by \a handle. \a // label_values and \a optional_label_values specify attributes that are // associated with this measurement and must match with their corresponding // keys in GlobalInstrumentsRegistry::RegisterDoubleHistogram(). virtual void RecordHistogram( - GlobalInstrumentsRegistry::GlobalDoubleHistogramHandle handle, - double value, absl::Span label_values, + GlobalInstrumentsRegistry::GlobalInstrumentHandle handle, double value, + absl::Span label_values, absl::Span optional_label_values) = 0; // Adds a callback to be invoked when the stats plugin wants to // populate the corresponding metrics (see callback->metrics() for list). @@ -255,20 +372,53 @@ class GlobalStatsPluginRegistry { } // Adds a counter in all stats plugins within the group. See the StatsPlugin // interface for more documentation and valid types. - template - void AddCounter(HandleType handle, ValueType value, - absl::Span label_values, - absl::Span optional_values) { + template + void AddCounter( + GlobalInstrumentsRegistry::TypedGlobalInstrumentHandle< + GlobalInstrumentsRegistry::ValueType::kUInt64, + GlobalInstrumentsRegistry::InstrumentType::kCounter, M, N> + handle, + uint64_t value, std::array label_values, + std::array optional_values) { + for (auto& state : plugins_state_) { + state.plugin->AddCounter(handle, value, label_values, optional_values); + } + } + template + void AddCounter( + GlobalInstrumentsRegistry::TypedGlobalInstrumentHandle< + GlobalInstrumentsRegistry::ValueType::kDouble, + GlobalInstrumentsRegistry::InstrumentType::kCounter, M, N> + handle, + double value, std::array label_values, + std::array optional_values) { for (auto& state : plugins_state_) { state.plugin->AddCounter(handle, value, label_values, optional_values); } } // Records a value to a histogram in all stats plugins within the group. See // the StatsPlugin interface for more documentation and valid types. - template - void RecordHistogram(HandleType handle, ValueType value, - absl::Span label_values, - absl::Span optional_values) { + template + void RecordHistogram( + GlobalInstrumentsRegistry::TypedGlobalInstrumentHandle< + GlobalInstrumentsRegistry::ValueType::kUInt64, + GlobalInstrumentsRegistry::InstrumentType::kHistogram, M, N> + handle, + uint64_t value, std::array label_values, + std::array optional_values) { + for (auto& state : plugins_state_) { + state.plugin->RecordHistogram(handle, value, label_values, + optional_values); + } + } + template + void RecordHistogram( + GlobalInstrumentsRegistry::TypedGlobalInstrumentHandle< + GlobalInstrumentsRegistry::ValueType::kDouble, + GlobalInstrumentsRegistry::InstrumentType::kHistogram, M, N> + handle, + double value, std::array label_values, + std::array optional_values) { for (auto& state : plugins_state_) { state.plugin->RecordHistogram(handle, value, label_values, optional_values); @@ -285,11 +435,17 @@ class GlobalStatsPluginRegistry { // the lifetime of the callback; when the returned object is // destroyed, the callback is de-registered. The returned object // must not outlive the StatsPluginGroup object that created it. + template GRPC_MUST_USE_RESULT std::unique_ptr - RegisterCallback( - absl::AnyInvocable callback, - std::vector metrics, - Duration min_interval = Duration::Seconds(5)); + RegisterCallback(absl::AnyInvocable callback, + Duration min_interval, Args... args) { + AssertIsCallbackGaugeHandle(args...); + return std::make_unique( + *this, std::move(callback), + std::vector{ + args...}, + min_interval); + } // Adds all available client call tracers associated with the stats plugins // within the group to \a call_context. @@ -307,6 +463,24 @@ class GlobalStatsPluginRegistry { std::shared_ptr plugin; }; + // C++17 has fold expression that may simplify this. + template + static constexpr void AssertIsCallbackGaugeHandle( + GlobalInstrumentsRegistry::TypedGlobalInstrumentHandle) { + static_assert(V == GlobalInstrumentsRegistry::ValueType::kInt64 || + V == GlobalInstrumentsRegistry::ValueType::kDouble, + "ValueType must be kInt64 or kDouble"); + static_assert( + I == GlobalInstrumentsRegistry::InstrumentType::kCallbackGauge, + "InstrumentType must be kCallbackGauge"); + } + template + static constexpr void AssertIsCallbackGaugeHandle(T t, Args&&... args) { + AssertIsCallbackGaugeHandle(t); + AssertIsCallbackGaugeHandle(args...); + } + std::vector plugins_state_; }; @@ -335,7 +509,7 @@ class RegisteredMetricCallback { RegisteredMetricCallback( GlobalStatsPluginRegistry::StatsPluginGroup& stats_plugin_group, absl::AnyInvocable callback, - std::vector metrics, + std::vector metrics, Duration min_interval); ~RegisteredMetricCallback(); @@ -344,8 +518,8 @@ class RegisteredMetricCallback { void Run(CallbackMetricReporter& reporter) { callback_(reporter); } // Returns the set of metrics that this callback will modify. - const std::vector& metrics() - const { + const std::vector& + metrics() const { return metrics_; } @@ -356,7 +530,7 @@ class RegisteredMetricCallback { private: GlobalStatsPluginRegistry::StatsPluginGroup& stats_plugin_group_; absl::AnyInvocable callback_; - std::vector metrics_; + std::vector metrics_; Duration min_interval_; }; diff --git a/src/core/lib/channel/promise_based_filter.cc b/src/core/lib/channel/promise_based_filter.cc index 9e47aacae55..da858ee8d4f 100644 --- a/src/core/lib/channel/promise_based_filter.cc +++ b/src/core/lib/channel/promise_based_filter.cc @@ -22,6 +22,7 @@ #include "absl/base/attributes.h" #include "absl/functional/function_ref.h" +#include "absl/log/check.h" #include "absl/status/status.h" #include "absl/strings/str_cat.h" #include "absl/strings/str_format.h" @@ -180,7 +181,7 @@ BaseCallData::CapturedBatch::~CapturedBatch() { uintptr_t& refcnt = *RefCountField(batch_); if (refcnt == 0) return; // refcnt==0 ==> cancelled --refcnt; - GPR_ASSERT(refcnt != 0); + CHECK_NE(refcnt, 0u); } BaseCallData::CapturedBatch::CapturedBatch(const CapturedBatch& rhs) @@ -211,7 +212,7 @@ BaseCallData::CapturedBatch& BaseCallData::CapturedBatch::operator=( void BaseCallData::CapturedBatch::ResumeWith(Flusher* releaser) { auto* batch = std::exchange(batch_, nullptr); - GPR_ASSERT(batch != nullptr); + CHECK_NE(batch, nullptr); uintptr_t& refcnt = *RefCountField(batch); if (refcnt == 0) { // refcnt==0 ==> cancelled @@ -228,7 +229,7 @@ void BaseCallData::CapturedBatch::ResumeWith(Flusher* releaser) { void BaseCallData::CapturedBatch::CompleteWith(Flusher* releaser) { auto* batch = std::exchange(batch_, nullptr); - GPR_ASSERT(batch != nullptr); + CHECK_NE(batch, nullptr); uintptr_t& refcnt = *RefCountField(batch); if (refcnt == 0) return; // refcnt==0 ==> cancelled if (--refcnt == 0) { @@ -239,7 +240,7 @@ void BaseCallData::CapturedBatch::CompleteWith(Flusher* releaser) { void BaseCallData::CapturedBatch::CancelWith(grpc_error_handle error, Flusher* releaser) { auto* batch = std::exchange(batch_, nullptr); - GPR_ASSERT(batch != nullptr); + CHECK_NE(batch, nullptr); uintptr_t& refcnt = *RefCountField(batch); if (refcnt == 0) { // refcnt==0 ==> cancelled @@ -369,7 +370,7 @@ void BaseCallData::SendMessage::GotPipe(T* pipe_end) { gpr_log(GPR_INFO, "%s SendMessage.GotPipe st=%s", base_->LogTag().c_str(), StateString(state_)); } - GPR_ASSERT(pipe_end != nullptr); + CHECK_NE(pipe_end, nullptr); switch (state_) { case State::kInitial: state_ = State::kIdle; @@ -518,7 +519,7 @@ void BaseCallData::SendMessage::WakeInsideCombiner(Flusher* flusher, } ABSL_FALLTHROUGH_INTENDED; case State::kPushedToPipe: { - GPR_ASSERT(push_.has_value()); + CHECK(push_.has_value()); auto r_push = (*push_)(); if (auto* p = r_push.value_if_ready()) { if (grpc_trace_channel.enabled()) { @@ -527,12 +528,12 @@ void BaseCallData::SendMessage::WakeInsideCombiner(Flusher* flusher, base_->LogTag().c_str(), *p ? "true" : "false"); } // We haven't pulled through yet, so this certainly shouldn't succeed. - GPR_ASSERT(!*p); + CHECK(!*p); state_ = State::kCancelled; batch_.CancelWith(absl::CancelledError(), flusher); break; } - GPR_ASSERT(next_.has_value()); + CHECK(next_.has_value()); auto r_next = (*next_)(); if (auto* p = r_next.value_if_ready()) { if (grpc_trace_channel.enabled()) { @@ -851,12 +852,12 @@ void BaseCallData::ReceiveMessage::WakeInsideCombiner(Flusher* flusher, completed_status_, "recv_message"); break; } - GPR_ASSERT(state_ == State::kPushedToPipe || - state_ == State::kCompletedWhilePushedToPipe); + CHECK(state_ == State::kPushedToPipe || + state_ == State::kCompletedWhilePushedToPipe); ABSL_FALLTHROUGH_INTENDED; case State::kCompletedWhilePushedToPipe: case State::kPushedToPipe: { - GPR_ASSERT(push_.has_value()); + CHECK(push_.has_value()); auto r_push = (*push_)(); if (auto* p = r_push.value_if_ready()) { if (grpc_trace_channel.enabled()) { @@ -865,11 +866,11 @@ void BaseCallData::ReceiveMessage::WakeInsideCombiner(Flusher* flusher, base_->LogTag().c_str(), *p ? "true" : "false"); } // We haven't pulled through yet, so this certainly shouldn't succeed. - GPR_ASSERT(!*p); + CHECK(!*p); state_ = State::kCancelled; break; } - GPR_ASSERT(next_.has_value()); + CHECK(next_.has_value()); auto r_next = (*next_)(); if (auto* p = r_next.value_if_ready()) { next_.reset(); @@ -907,7 +908,7 @@ void BaseCallData::ReceiveMessage::WakeInsideCombiner(Flusher* flusher, ABSL_FALLTHROUGH_INTENDED; case State::kCompletedWhilePulledFromPipe: case State::kPulledFromPipe: { - GPR_ASSERT(push_.has_value()); + CHECK(push_.has_value()); if ((*push_)().ready()) { if (grpc_trace_channel.enabled()) { gpr_log(GPR_INFO, @@ -1013,7 +1014,7 @@ class ClientCallData::PollContext { public: explicit PollContext(ClientCallData* self, Flusher* flusher) : self_(self), flusher_(flusher) { - GPR_ASSERT(self_->poll_ctx_ == nullptr); + CHECK_EQ(self_->poll_ctx_, nullptr); self_->poll_ctx_ = this; scoped_activity_.Init(self_); @@ -1024,12 +1025,12 @@ class ClientCallData::PollContext { PollContext& operator=(const PollContext&) = delete; void Run() { - GPR_DEBUG_ASSERT(HasContext()); + DCHECK(HasContext()); if (grpc_trace_channel.enabled()) { gpr_log(GPR_INFO, "%s ClientCallData.PollContext.Run %s", self_->LogTag().c_str(), self_->DebugString().c_str()); } - GPR_ASSERT(have_scoped_activity_); + CHECK(have_scoped_activity_); repoll_ = false; if (self_->send_message() != nullptr) { self_->send_message()->WakeInsideCombiner(flusher_, true); @@ -1064,10 +1065,8 @@ class ClientCallData::PollContext { case RecvInitialMetadata::kCompleteAndGotPipe: self_->recv_initial_metadata_->state = RecvInitialMetadata::kCompleteAndPushedToPipe; - GPR_ASSERT( - !self_->recv_initial_metadata_->metadata_push_.has_value()); - GPR_ASSERT( - !self_->recv_initial_metadata_->metadata_next_.has_value()); + CHECK(!self_->recv_initial_metadata_->metadata_push_.has_value()); + CHECK(!self_->recv_initial_metadata_->metadata_next_.has_value()); self_->recv_initial_metadata_->metadata_push_.emplace( self_->recv_initial_metadata_->server_initial_metadata_publisher ->Push(ServerMetadataHandle( @@ -1078,7 +1077,7 @@ class ClientCallData::PollContext { self_->server_initial_metadata_pipe()->receiver.Next()); ABSL_FALLTHROUGH_INTENDED; case RecvInitialMetadata::kCompleteAndPushedToPipe: { - GPR_ASSERT(self_->recv_initial_metadata_->metadata_next_.has_value()); + CHECK(self_->recv_initial_metadata_->metadata_next_.has_value()); Poll> p = (*self_->recv_initial_metadata_->metadata_next_)(); if (NextResult* nr = p.value_if_ready()) { @@ -1172,7 +1171,7 @@ class ClientCallData::PollContext { } } else { self_->cancelled_error_ = StatusFromMetadata(*md); - GPR_ASSERT(!self_->cancelled_error_.ok()); + CHECK(!self_->cancelled_error_.ok()); if (self_->recv_initial_metadata_ != nullptr) { switch (self_->recv_initial_metadata_->state) { case RecvInitialMetadata::kInitial: @@ -1210,7 +1209,7 @@ class ClientCallData::PollContext { self_->send_initial_metadata_batch_.CancelWith( self_->cancelled_error_, flusher_); } else { - GPR_ASSERT( + CHECK( self_->recv_trailing_state_ == RecvTrailingState::kInitial || self_->recv_trailing_state_ == RecvTrailingState::kForwarded); self_->call_combiner()->Cancel(self_->cancelled_error_); @@ -1314,7 +1313,7 @@ ClientCallData::ClientCallData(grpc_call_element* elem, ClientCallData::~ClientCallData() { ScopedActivity scoped_activity(this); - GPR_ASSERT(poll_ctx_ == nullptr); + CHECK_EQ(poll_ctx_, nullptr); if (recv_initial_metadata_ != nullptr) { recv_initial_metadata_->~RecvInitialMetadata(); } @@ -1328,7 +1327,7 @@ std::string ClientCallData::DebugTag() const { // Activity implementation. void ClientCallData::ForceImmediateRepoll(WakeupMask) { - GPR_ASSERT(poll_ctx_ != nullptr); + CHECK_NE(poll_ctx_, nullptr); poll_ctx_->Repoll(); } @@ -1399,10 +1398,9 @@ void ClientCallData::StartBatch(grpc_transport_stream_op_batch* b) { // If this is a cancel stream, cancel anything we have pending and propagate // the cancellation. if (batch->cancel_stream) { - GPR_ASSERT(!batch->send_initial_metadata && - !batch->send_trailing_metadata && !batch->send_message && - !batch->recv_initial_metadata && !batch->recv_message && - !batch->recv_trailing_metadata); + CHECK(!batch->send_initial_metadata && !batch->send_trailing_metadata && + !batch->send_message && !batch->recv_initial_metadata && + !batch->recv_message && !batch->recv_trailing_metadata); PollContext poll_ctx(this, &flusher); Cancel(batch->payload->cancel_stream.cancel_error, &flusher); poll_ctx.Run(); @@ -1473,12 +1471,12 @@ void ClientCallData::StartBatch(grpc_transport_stream_op_batch* b) { batch.CancelWith(cancelled_error_, &flusher); } else { // Otherwise, we should not have seen a send_initial_metadata op yet. - GPR_ASSERT(send_initial_state_ == SendInitialState::kInitial); + CHECK(send_initial_state_ == SendInitialState::kInitial); // Mark ourselves as queued. send_initial_state_ = SendInitialState::kQueued; if (batch->recv_trailing_metadata) { // If there's a recv_trailing_metadata op, we queue that too. - GPR_ASSERT(recv_trailing_state_ == RecvTrailingState::kInitial); + CHECK(recv_trailing_state_ == RecvTrailingState::kInitial); recv_trailing_state_ = RecvTrailingState::kQueued; } // This is the queuing! @@ -1493,7 +1491,7 @@ void ClientCallData::StartBatch(grpc_transport_stream_op_batch* b) { if (recv_trailing_state_ == RecvTrailingState::kCancelled) { batch.CancelWith(cancelled_error_, &flusher); } else { - GPR_ASSERT(recv_trailing_state_ == RecvTrailingState::kInitial); + CHECK(recv_trailing_state_ == RecvTrailingState::kInitial); recv_trailing_state_ = RecvTrailingState::kForwarded; HookRecvTrailingMetadata(batch); } @@ -1571,7 +1569,7 @@ void ClientCallData::Cancel(grpc_error_handle error, Flusher* flusher) { // Begin running the promise - which will ultimately take some initial // metadata and return some trailing metadata. void ClientCallData::StartPromise(Flusher* flusher) { - GPR_ASSERT(send_initial_state_ == SendInitialState::kQueued); + CHECK(send_initial_state_ == SendInitialState::kQueued); ChannelFilter* filter = promise_filter_detail::ChannelFilterFromElem(elem()); // Construct the promise. @@ -1684,8 +1682,8 @@ ArenaPromise ClientCallData::MakeNextPromise( gpr_log(GPR_INFO, "%s ClientCallData.MakeNextPromise %s", LogTag().c_str(), DebugString().c_str()); } - GPR_ASSERT(poll_ctx_ != nullptr); - GPR_ASSERT(send_initial_state_ == SendInitialState::kQueued); + CHECK_NE(poll_ctx_, nullptr); + CHECK(send_initial_state_ == SendInitialState::kQueued); send_initial_metadata_batch_->payload->send_initial_metadata .send_initial_metadata = call_args.client_initial_metadata.get(); if (recv_initial_metadata_ != nullptr) { @@ -1693,7 +1691,7 @@ ArenaPromise ClientCallData::MakeNextPromise( // It might be the one we passed in - in which case we know this filter // only wants to examine the metadata, or it might be a new instance, in // which case we know the filter wants to mutate. - GPR_ASSERT(call_args.server_initial_metadata != nullptr); + CHECK_NE(call_args.server_initial_metadata, nullptr); recv_initial_metadata_->server_initial_metadata_publisher = call_args.server_initial_metadata; switch (recv_initial_metadata_->state) { @@ -1722,17 +1720,17 @@ ArenaPromise ClientCallData::MakeNextPromise( recv_initial_metadata_->state))); // unreachable } } else { - GPR_ASSERT(call_args.server_initial_metadata == nullptr); + CHECK_EQ(call_args.server_initial_metadata, nullptr); } if (send_message() != nullptr) { send_message()->GotPipe(call_args.client_to_server_messages); } else { - GPR_ASSERT(call_args.client_to_server_messages == nullptr); + CHECK_EQ(call_args.client_to_server_messages, nullptr); } if (receive_message() != nullptr) { receive_message()->GotPipe(call_args.server_to_client_messages); } else { - GPR_ASSERT(call_args.server_to_client_messages == nullptr); + CHECK_EQ(call_args.server_to_client_messages, nullptr); } return ArenaPromise( [this]() { return PollTrailingMetadata(); }); @@ -1747,10 +1745,10 @@ Poll ClientCallData::PollTrailingMetadata() { gpr_log(GPR_INFO, "%s ClientCallData.PollTrailingMetadata %s", LogTag().c_str(), DebugString().c_str()); } - GPR_ASSERT(poll_ctx_ != nullptr); + CHECK_NE(poll_ctx_, nullptr); if (send_initial_state_ == SendInitialState::kQueued) { // First poll: pass the send_initial_metadata op down the stack. - GPR_ASSERT(send_initial_metadata_batch_.is_captured()); + CHECK(send_initial_metadata_batch_.is_captured()); send_initial_state_ = SendInitialState::kForwarded; if (recv_trailing_state_ == RecvTrailingState::kQueued) { // (and the recv_trailing_metadata op if it's part of the queuing) @@ -1820,7 +1818,7 @@ void ClientCallData::RecvTrailingMetadataReady(grpc_error_handle error) { SetStatusFromError(recv_trailing_metadata_, error); } // Record that we've got the callback. - GPR_ASSERT(recv_trailing_state_ == RecvTrailingState::kForwarded); + CHECK(recv_trailing_state_ == RecvTrailingState::kForwarded); recv_trailing_state_ = RecvTrailingState::kComplete; if (receive_message() != nullptr) { receive_message()->Done(*recv_trailing_metadata_, &flusher); @@ -1908,7 +1906,7 @@ class ServerCallData::PollContext { created_.line(), "; Old: ", self_->poll_ctx_->created_.file(), ":", self_->poll_ctx_->created_.line())); } - GPR_ASSERT(self_->poll_ctx_ == nullptr); + CHECK_EQ(self_->poll_ctx_, nullptr); self_->poll_ctx_ = this; scoped_activity_.Init(self_); have_scoped_activity_ = true; @@ -2016,7 +2014,7 @@ ServerCallData::~ServerCallData() { if (send_initial_metadata_ != nullptr) { send_initial_metadata_->~SendInitialMetadata(); } - GPR_ASSERT(poll_ctx_ == nullptr); + CHECK_EQ(poll_ctx_, nullptr); } std::string ServerCallData::DebugTag() const { @@ -2025,7 +2023,7 @@ std::string ServerCallData::DebugTag() const { // Activity implementation. void ServerCallData::ForceImmediateRepoll(WakeupMask) { - GPR_ASSERT(poll_ctx_ != nullptr); + CHECK_NE(poll_ctx_, nullptr); poll_ctx_->Repoll(); } @@ -2045,10 +2043,9 @@ void ServerCallData::StartBatch(grpc_transport_stream_op_batch* b) { // If this is a cancel stream, cancel anything we have pending and // propagate the cancellation. if (batch->cancel_stream) { - GPR_ASSERT(!batch->send_initial_metadata && - !batch->send_trailing_metadata && !batch->send_message && - !batch->recv_initial_metadata && !batch->recv_message && - !batch->recv_trailing_metadata); + CHECK(!batch->send_initial_metadata && !batch->send_trailing_metadata && + !batch->send_message && !batch->recv_initial_metadata && + !batch->recv_message && !batch->recv_trailing_metadata); PollContext poll_ctx(this, &flusher); Completed(batch->payload->cancel_stream.cancel_error, batch->payload->cancel_stream.tarpit, &flusher); @@ -2063,11 +2060,11 @@ void ServerCallData::StartBatch(grpc_transport_stream_op_batch* b) { // recv_initial_metadata: we hook the response of this so we can start the // promise at an appropriate time. if (batch->recv_initial_metadata) { - GPR_ASSERT(!batch->send_initial_metadata && - !batch->send_trailing_metadata && !batch->send_message && - !batch->recv_message && !batch->recv_trailing_metadata); + CHECK(!batch->send_initial_metadata && !batch->send_trailing_metadata && + !batch->send_message && !batch->recv_message && + !batch->recv_trailing_metadata); // Otherwise, we should not have seen a send_initial_metadata op yet. - GPR_ASSERT(recv_initial_state_ == RecvInitialState::kInitial); + CHECK(recv_initial_state_ == RecvInitialState::kInitial); // Hook the callback so we know when to start the promise. recv_initial_metadata_ = batch->payload->recv_initial_metadata.recv_initial_metadata; @@ -2249,14 +2246,13 @@ void ServerCallData::Completed(grpc_error_handle error, // - return a wrapper around PollTrailingMetadata as the promise. ArenaPromise ServerCallData::MakeNextPromise( CallArgs call_args) { - GPR_ASSERT(recv_initial_state_ == RecvInitialState::kComplete); - GPR_ASSERT(std::move(call_args.client_initial_metadata).get() == - recv_initial_metadata_); + CHECK(recv_initial_state_ == RecvInitialState::kComplete); + CHECK(std::move(call_args.client_initial_metadata).get() == + recv_initial_metadata_); forward_recv_initial_metadata_callback_ = true; if (send_initial_metadata_ != nullptr) { - GPR_ASSERT(send_initial_metadata_->server_initial_metadata_publisher == - nullptr); - GPR_ASSERT(call_args.server_initial_metadata != nullptr); + CHECK(send_initial_metadata_->server_initial_metadata_publisher == nullptr); + CHECK_NE(call_args.server_initial_metadata, nullptr); send_initial_metadata_->server_initial_metadata_publisher = call_args.server_initial_metadata; switch (send_initial_metadata_->state) { @@ -2279,17 +2275,17 @@ ArenaPromise ServerCallData::MakeNextPromise( break; } } else { - GPR_ASSERT(call_args.server_initial_metadata == nullptr); + CHECK_EQ(call_args.server_initial_metadata, nullptr); } if (send_message() != nullptr) { send_message()->GotPipe(call_args.server_to_client_messages); } else { - GPR_ASSERT(call_args.server_to_client_messages == nullptr); + CHECK_EQ(call_args.server_to_client_messages, nullptr); } if (receive_message() != nullptr) { receive_message()->GotPipe(call_args.client_to_server_messages); } else { - GPR_ASSERT(call_args.client_to_server_messages == nullptr); + CHECK_EQ(call_args.client_to_server_messages, nullptr); } return ArenaPromise( [this]() { return PollTrailingMetadata(); }); @@ -2354,7 +2350,7 @@ void ServerCallData::RecvInitialMetadataReady(grpc_error_handle error) { gpr_log(GPR_INFO, "%s: RecvInitialMetadataReady %s", LogTag().c_str(), error.ToString().c_str()); } - GPR_ASSERT(recv_initial_state_ == RecvInitialState::kForwarded); + CHECK(recv_initial_state_ == RecvInitialState::kForwarded); // If there was an error we just propagate that through if (!error.ok()) { recv_initial_state_ = RecvInitialState::kResponded; @@ -2425,8 +2421,8 @@ void ServerCallData::WakeInsideCombiner(Flusher* flusher) { SendInitialMetadata::kQueuedAndGotPipe) { send_initial_metadata_->state = SendInitialMetadata::kQueuedAndPushedToPipe; - GPR_ASSERT(!send_initial_metadata_->metadata_push_.has_value()); - GPR_ASSERT(!send_initial_metadata_->metadata_next_.has_value()); + CHECK(!send_initial_metadata_->metadata_push_.has_value()); + CHECK(!send_initial_metadata_->metadata_next_.has_value()); send_initial_metadata_->metadata_push_.emplace( send_initial_metadata_->server_initial_metadata_publisher->Push( ServerMetadataHandle( @@ -2508,7 +2504,7 @@ void ServerCallData::WakeInsideCombiner(Flusher* flusher) { if (send_initial_metadata_ != nullptr && send_initial_metadata_->state == SendInitialMetadata::kQueuedAndPushedToPipe) { - GPR_ASSERT(send_initial_metadata_->metadata_next_.has_value()); + CHECK(send_initial_metadata_->metadata_next_.has_value()); auto p = (*send_initial_metadata_->metadata_next_)(); if (grpc_trace_channel.enabled()) { gpr_log(GPR_INFO, @@ -2557,7 +2553,7 @@ void ServerCallData::WakeInsideCombiner(Flusher* flusher) { StateString(send_trailing_state_))); // unreachable break; case SendTrailingState::kInitial: { - GPR_ASSERT(*md->get_pointer(GrpcStatusMetadata()) != GRPC_STATUS_OK); + CHECK(*md->get_pointer(GrpcStatusMetadata()) != GRPC_STATUS_OK); Completed(StatusFromMetadata(*md), md->get(GrpcTarPit()).has_value(), flusher); } break; diff --git a/src/core/lib/channel/promise_based_filter.h b/src/core/lib/channel/promise_based_filter.h index 491cbe9c144..5379bb6f66a 100644 --- a/src/core/lib/channel/promise_based_filter.h +++ b/src/core/lib/channel/promise_based_filter.h @@ -31,6 +31,7 @@ #include "absl/container/inlined_vector.h" #include "absl/functional/function_ref.h" +#include "absl/log/check.h" #include "absl/meta/type_traits.h" #include "absl/status/status.h" #include "absl/strings/string_view.h" @@ -49,6 +50,7 @@ #include "src/core/lib/event_engine/default_event_engine.h" #include "src/core/lib/event_engine/event_engine_context.h" // IWYU pragma: keep #include "src/core/lib/gprpp/debug_location.h" +#include "src/core/lib/gprpp/match.h" #include "src/core/lib/gprpp/time.h" #include "src/core/lib/iomgr/call_combiner.h" #include "src/core/lib/iomgr/closure.h" @@ -57,6 +59,7 @@ #include "src/core/lib/iomgr/polling_entity.h" #include "src/core/lib/promise/activity.h" #include "src/core/lib/promise/arena_promise.h" +#include "src/core/lib/promise/cancel_callback.h" #include "src/core/lib/promise/context.h" #include "src/core/lib/promise/pipe.h" #include "src/core/lib/promise/poll.h" @@ -84,12 +87,21 @@ class ChannelFilter { class Args { public: Args() : Args(nullptr, nullptr) {} - explicit Args(grpc_channel_stack* channel_stack, - grpc_channel_element* channel_element) - : channel_stack_(channel_stack), channel_element_(channel_element) {} + Args(grpc_channel_stack* channel_stack, + grpc_channel_element* channel_element) + : impl_(ChannelStackBased{channel_stack, channel_element}) {} + // While we're moving to call-v3 we need to have access to + // grpc_channel_stack & friends here. That means that we can't rely on this + // type signature from interception_chain.h, which means that we need a way + // of constructing this object without naming it ===> implicit construction. + // TODO(ctiller): remove this once we're fully on call-v3 + // NOLINTNEXTLINE(google-explicit-constructor) + Args(size_t instance_id) : impl_(V3Based{instance_id}) {} ABSL_DEPRECATED("Direct access to channel stack is deprecated") - grpc_channel_stack* channel_stack() const { return channel_stack_; } + grpc_channel_stack* channel_stack() const { + return absl::get(impl_).channel_stack; + } // Get the instance id of this filter. // This id is unique amongst all filters /of the same type/ and densely @@ -99,14 +111,29 @@ class ChannelFilter { // This is useful for filters that need to store per-instance data in a // parallel data structure. size_t instance_id() const { - return grpc_channel_stack_filter_instance_number(channel_stack_, - channel_element_); + return Match( + impl_, + [](const ChannelStackBased& cs) { + return grpc_channel_stack_filter_instance_number( + cs.channel_stack, cs.channel_element); + }, + [](const V3Based& v3) { return v3.instance_id; }); } private: friend class ChannelFilter; - grpc_channel_stack* channel_stack_; - grpc_channel_element* channel_element_; + + struct ChannelStackBased { + grpc_channel_stack* channel_stack; + grpc_channel_element* channel_element; + }; + + struct V3Based { + size_t instance_id; + }; + + using Impl = absl::variant; + Impl impl_; }; // Perform post-initialization step (if any). @@ -327,32 +354,73 @@ auto MapResult(const NoInterceptor*, Promise x, void*) { template auto MapResult(absl::Status (Derived::Call::*fn)(ServerMetadata&), Promise x, FilterCallData* call_data) { - GPR_DEBUG_ASSERT(fn == &Derived::Call::OnServerTrailingMetadata); - return Map(std::move(x), [call_data](ServerMetadataHandle md) { - auto status = call_data->call.OnServerTrailingMetadata(*md); - if (!status.ok()) return ServerMetadataFromStatus(status); - return md; - }); + DCHECK(fn == &Derived::Call::OnServerTrailingMetadata); + return OnCancel( + Map(std::move(x), + [call_data](ServerMetadataHandle md) { + auto status = call_data->call.OnServerTrailingMetadata(*md); + if (!status.ok()) { + return ServerMetadataFromStatus(status); + } + return md; + }), + // TODO(yashykt/ctiller): GetContext is not + // valid for the cancellation function requiring us to capture it here. + // This ought to be easy to fix once client side promises are completely + // rolled out. + [call_data, ctx = GetContext()]() { + grpc_metadata_batch b; + b.Set(GrpcStatusMetadata(), GRPC_STATUS_CANCELLED); + b.Set(GrpcCallWasCancelled(), true); + promise_detail::Context context(ctx); + call_data->call.OnServerTrailingMetadata(b).IgnoreError(); + }); } template auto MapResult(void (Derived::Call::*fn)(ServerMetadata&), Promise x, FilterCallData* call_data) { - GPR_DEBUG_ASSERT(fn == &Derived::Call::OnServerTrailingMetadata); - return Map(std::move(x), [call_data](ServerMetadataHandle md) { - call_data->call.OnServerTrailingMetadata(*md); - return md; - }); + DCHECK(fn == &Derived::Call::OnServerTrailingMetadata); + return OnCancel( + Map(std::move(x), + [call_data](ServerMetadataHandle md) { + call_data->call.OnServerTrailingMetadata(*md); + return md; + }), + // TODO(yashykt/ctiller): GetContext is not + // valid for the cancellation function requiring us to capture it here. + // This ought to be easy to fix once client side promises are completely + // rolled out. + [call_data, ctx = GetContext()]() { + grpc_metadata_batch b; + b.Set(GrpcStatusMetadata(), GRPC_STATUS_CANCELLED); + b.Set(GrpcCallWasCancelled(), true); + promise_detail::Context context(ctx); + call_data->call.OnServerTrailingMetadata(b); + }); } template auto MapResult(void (Derived::Call::*fn)(ServerMetadata&, Derived*), Promise x, FilterCallData* call_data) { - GPR_DEBUG_ASSERT(fn == &Derived::Call::OnServerTrailingMetadata); - return Map(std::move(x), [call_data](ServerMetadataHandle md) { - call_data->call.OnServerTrailingMetadata(*md, call_data->channel); - return md; - }); + DCHECK(fn == &Derived::Call::OnServerTrailingMetadata); + return OnCancel( + Map(std::move(x), + [call_data](ServerMetadataHandle md) { + call_data->call.OnServerTrailingMetadata(*md, call_data->channel); + return md; + }), + // TODO(yashykt/ctiller): GetContext is not + // valid for the cancellation function requiring us to capture it here. + // This ought to be easy to fix once client side promises are completely + // rolled out. + [call_data, ctx = GetContext()]() { + grpc_metadata_batch b; + b.Set(GrpcStatusMetadata(), GRPC_STATUS_CANCELLED); + b.Set(GrpcCallWasCancelled(), true); + promise_detail::Context context(ctx); + call_data->call.OnServerTrailingMetadata(b, call_data->channel); + }); } template @@ -461,135 +529,198 @@ template auto RunCall(Interceptor interceptor, CallArgs call_args, NextPromiseFactory next_promise_factory, FilterCallData* call_data) { - GPR_DEBUG_ASSERT(interceptor == &Derived::Call::OnClientInitialMetadata); + DCHECK(interceptor == &Derived::Call::OnClientInitialMetadata); return RunCallImpl::Run( std::move(call_args), std::move(next_promise_factory), call_data); } -inline void InterceptClientToServerMessage(const NoInterceptor*, void*, - const CallArgs&) {} +template +inline auto InterceptClientToServerMessageHandler( + void (Derived::Call::*fn)(const Message&), + FilterCallData* call_data, const CallArgs&) { + DCHECK(fn == &Derived::Call::OnClientToServerMessage); + return [call_data](MessageHandle msg) -> absl::optional { + call_data->call.OnClientToServerMessage(*msg); + return std::move(msg); + }; +} template -inline void InterceptClientToServerMessage( +inline auto InterceptClientToServerMessageHandler( ServerMetadataHandle (Derived::Call::*fn)(const Message&), - FilterCallData* call_data, const CallArgs& call_args) { - GPR_DEBUG_ASSERT(fn == &Derived::Call::OnClientToServerMessage); - call_args.client_to_server_messages->InterceptAndMap( - [call_data](MessageHandle msg) -> absl::optional { - auto return_md = call_data->call.OnClientToServerMessage(*msg); - if (return_md == nullptr) return std::move(msg); - if (call_data->error_latch.is_set()) return absl::nullopt; - call_data->error_latch.Set(std::move(return_md)); - return absl::nullopt; - }); + FilterCallData* call_data, const CallArgs&) { + DCHECK(fn == &Derived::Call::OnClientToServerMessage); + return [call_data](MessageHandle msg) -> absl::optional { + auto return_md = call_data->call.OnClientToServerMessage(*msg); + if (return_md == nullptr) return std::move(msg); + if (call_data->error_latch.is_set()) return absl::nullopt; + call_data->error_latch.Set(std::move(return_md)); + return absl::nullopt; + }; } template -inline void InterceptClientToServerMessage( +inline auto InterceptClientToServerMessageHandler( ServerMetadataHandle (Derived::Call::*fn)(const Message&, Derived*), - FilterCallData* call_data, const CallArgs& call_args) { - GPR_DEBUG_ASSERT(fn == &Derived::Call::OnClientToServerMessage); - call_args.client_to_server_messages->InterceptAndMap( - [call_data](MessageHandle msg) -> absl::optional { - auto return_md = - call_data->call.OnClientToServerMessage(*msg, call_data->channel); - if (return_md == nullptr) return std::move(msg); - if (call_data->error_latch.is_set()) return absl::nullopt; - call_data->error_latch.Set(std::move(return_md)); - return absl::nullopt; - }); + FilterCallData* call_data, const CallArgs&) { + DCHECK(fn == &Derived::Call::OnClientToServerMessage); + return [call_data](MessageHandle msg) -> absl::optional { + auto return_md = + call_data->call.OnClientToServerMessage(*msg, call_data->channel); + if (return_md == nullptr) return std::move(msg); + if (call_data->error_latch.is_set()) return absl::nullopt; + call_data->error_latch.Set(std::move(return_md)); + return absl::nullopt; + }; } template -inline void InterceptClientToServerMessage( +inline auto InterceptClientToServerMessageHandler( MessageHandle (Derived::Call::*fn)(MessageHandle, Derived*), - FilterCallData* call_data, const CallArgs& call_args) { - GPR_DEBUG_ASSERT(fn == &Derived::Call::OnClientToServerMessage); - call_args.client_to_server_messages->InterceptAndMap( - [call_data](MessageHandle msg) -> absl::optional { - return call_data->call.OnClientToServerMessage(std::move(msg), - call_data->channel); - }); + FilterCallData* call_data, const CallArgs&) { + DCHECK(fn == &Derived::Call::OnClientToServerMessage); + return [call_data](MessageHandle msg) -> absl::optional { + return call_data->call.OnClientToServerMessage(std::move(msg), + call_data->channel); + }; } template -inline void InterceptClientToServerMessage( +inline auto InterceptClientToServerMessageHandler( absl::StatusOr (Derived::Call::*fn)(MessageHandle, Derived*), - FilterCallData* call_data, const CallArgs& call_args) { - GPR_DEBUG_ASSERT(fn == &Derived::Call::OnClientToServerMessage); + FilterCallData* call_data, const CallArgs&) { + DCHECK(fn == &Derived::Call::OnClientToServerMessage); + return [call_data](MessageHandle msg) -> absl::optional { + auto r = call_data->call.OnClientToServerMessage(std::move(msg), + call_data->channel); + if (r.ok()) return std::move(*r); + if (call_data->error_latch.is_set()) return absl::nullopt; + call_data->error_latch.Set(ServerMetadataFromStatus(r.status())); + return absl::nullopt; + }; +} + +template +inline void InterceptClientToServerMessage(HookFunction hook, + const NoInterceptor*, + FilterCallData* call_data, + const CallArgs& call_args) { call_args.client_to_server_messages->InterceptAndMap( - [call_data](MessageHandle msg) -> absl::optional { - auto r = call_data->call.OnClientToServerMessage(std::move(msg), - call_data->channel); - if (r.ok()) return std::move(*r); - if (call_data->error_latch.is_set()) return absl::nullopt; - call_data->error_latch.Set(ServerMetadataFromStatus(r.status())); - return absl::nullopt; - }); + InterceptClientToServerMessageHandler(hook, call_data, call_args)); } -inline void InterceptClientToServerMessage(const NoInterceptor*, void*, void*, - CallSpineInterface*) {} +template +inline void InterceptClientToServerMessage(HookFunction hook, + void (Derived::Call::*)(), + FilterCallData* call_data, + const CallArgs& call_args) { + call_args.client_to_server_messages->InterceptAndMapWithHalfClose( + InterceptClientToServerMessageHandler(hook, call_data, call_args), + [call_data]() { call_data->call.OnClientToServerHalfClose(); }); +} template -inline void InterceptClientToServerMessage( +inline void InterceptClientToServerMessage(const NoInterceptor*, + const NoInterceptor*, + FilterCallData*, + const CallArgs&) {} + +template +inline auto InterceptClientToServerMessageHandler( ServerMetadataHandle (Derived::Call::*fn)(const Message&), typename Derived::Call* call, Derived*, PipeBasedCallSpine* call_spine) { - GPR_DEBUG_ASSERT(fn == &Derived::Call::OnClientToServerMessage); - call_spine->client_to_server_messages().receiver.InterceptAndMap( + DCHECK(fn == &Derived::Call::OnClientToServerMessage); + return [call, call_spine](MessageHandle msg) -> absl::optional { auto return_md = call->OnClientToServerMessage(*msg); if (return_md == nullptr) return std::move(msg); call_spine->PushServerTrailingMetadata(std::move(return_md)); return absl::nullopt; - }); + }; } template -inline void InterceptClientToServerMessage( +inline auto InterceptClientToServerMessageHandler( + void (Derived::Call::*fn)(const Message&), typename Derived::Call* call, + Derived*, PipeBasedCallSpine*) { + DCHECK(fn == &Derived::Call::OnClientToServerMessage); + return [call](MessageHandle msg) -> absl::optional { + call->OnClientToServerMessage(*msg); + return std::move(msg); + }; +} + +template +inline auto InterceptClientToServerMessageHandler( ServerMetadataHandle (Derived::Call::*fn)(const Message&, Derived*), typename Derived::Call* call, Derived* channel, PipeBasedCallSpine* call_spine) { - GPR_DEBUG_ASSERT(fn == &Derived::Call::OnClientToServerMessage); - call_spine->client_to_server_messages().receiver.InterceptAndMap( - [call, call_spine, - channel](MessageHandle msg) -> absl::optional { - auto return_md = call->OnClientToServerMessage(*msg, channel); - if (return_md == nullptr) return std::move(msg); - call_spine->PushServerTrailingMetadata(std::move(return_md)); - return absl::nullopt; - }); + DCHECK(fn == &Derived::Call::OnClientToServerMessage); + return [call, call_spine, + channel](MessageHandle msg) -> absl::optional { + auto return_md = call->OnClientToServerMessage(*msg, channel); + if (return_md == nullptr) return std::move(msg); + call_spine->PushServerTrailingMetadata(std::move(return_md)); + return absl::nullopt; + }; } template -inline void InterceptClientToServerMessage( +inline auto InterceptClientToServerMessageHandler( MessageHandle (Derived::Call::*fn)(MessageHandle, Derived*), - typename Derived::Call* call, Derived* channel, - PipeBasedCallSpine* call_spine) { - GPR_DEBUG_ASSERT(fn == &Derived::Call::OnClientToServerMessage); - call_spine->client_to_server_messages().receiver.InterceptAndMap( - [call, channel](MessageHandle msg) { - return call->OnClientToServerMessage(std::move(msg), channel); - }); + typename Derived::Call* call, Derived* channel, PipeBasedCallSpine*) { + DCHECK(fn == &Derived::Call::OnClientToServerMessage); + return [call, channel](MessageHandle msg) { + return call->OnClientToServerMessage(std::move(msg), channel); + }; } template -inline void InterceptClientToServerMessage( +inline auto InterceptClientToServerMessageHandler( absl::StatusOr (Derived::Call::*fn)(MessageHandle, Derived*), typename Derived::Call* call, Derived* channel, PipeBasedCallSpine* call_spine) { - GPR_DEBUG_ASSERT(fn == &Derived::Call::OnClientToServerMessage); + DCHECK(fn == &Derived::Call::OnClientToServerMessage); + return [call, call_spine, + channel](MessageHandle msg) -> absl::optional { + auto r = call->OnClientToServerMessage(std::move(msg), channel); + if (r.ok()) return std::move(*r); + call_spine->PushServerTrailingMetadata( + ServerMetadataFromStatus(r.status())); + return absl::nullopt; + }; +} + +template +inline void InterceptClientToServerMessage(HookFunction fn, + const NoInterceptor*, + typename Derived::Call* call, + Derived* channel, + PipeBasedCallSpine* call_spine) { + DCHECK(fn == &Derived::Call::OnClientToServerMessage); call_spine->client_to_server_messages().receiver.InterceptAndMap( - [call, call_spine, - channel](MessageHandle msg) -> absl::optional { - auto r = call->OnClientToServerMessage(std::move(msg), channel); - if (r.ok()) return std::move(*r); - call_spine->PushServerTrailingMetadata( - ServerMetadataFromStatus(r.status())); - return absl::nullopt; - }); + InterceptClientToServerMessageHandler(fn, call, channel, call_spine)); } +template +inline void InterceptClientToServerMessage(HookFunction fn, + void (Derived::Call::*half_close)(), + typename Derived::Call* call, + Derived* channel, + PipeBasedCallSpine* call_spine) { + DCHECK(fn == &Derived::Call::OnClientToServerMessage); + DCHECK(half_close == &Derived::Call::OnClientToServerHalfClose); + call_spine->client_to_server_messages().receiver.InterceptAndMapWithHalfClose( + InterceptClientToServerMessageHandler(fn, call, channel, call_spine), + [call]() { call->OnClientToServerHalfClose(); }); +} + +template +inline void InterceptClientToServerMessage(const NoInterceptor*, + const NoInterceptor*, + typename Derived::Call*, Derived*, + PipeBasedCallSpine*) {} + inline void InterceptClientInitialMetadata(const NoInterceptor*, void*, void*, PipeBasedCallSpine*) {} @@ -597,7 +728,7 @@ template inline void InterceptClientInitialMetadata( void (Derived::Call::*fn)(ClientMetadata& md), typename Derived::Call* call, Derived*, PipeBasedCallSpine* call_spine) { - GPR_DEBUG_ASSERT(fn == &Derived::Call::OnClientInitialMetadata); + DCHECK(fn == &Derived::Call::OnClientInitialMetadata); call_spine->client_initial_metadata().receiver.InterceptAndMap( [call](ClientMetadataHandle md) { call->OnClientInitialMetadata(*md); @@ -610,7 +741,7 @@ inline void InterceptClientInitialMetadata( void (Derived::Call::*fn)(ClientMetadata& md, Derived* channel), typename Derived::Call* call, Derived* channel, PipeBasedCallSpine* call_spine) { - GPR_DEBUG_ASSERT(fn == &Derived::Call::OnClientInitialMetadata); + DCHECK(fn == &Derived::Call::OnClientInitialMetadata); call_spine->client_initial_metadata().receiver.InterceptAndMap( [call, channel](ClientMetadataHandle md) { call->OnClientInitialMetadata(*md, channel); @@ -622,7 +753,7 @@ template inline void InterceptClientInitialMetadata( ServerMetadataHandle (Derived::Call::*fn)(ClientMetadata& md), typename Derived::Call* call, Derived*, PipeBasedCallSpine* call_spine) { - GPR_DEBUG_ASSERT(fn == &Derived::Call::OnClientInitialMetadata); + DCHECK(fn == &Derived::Call::OnClientInitialMetadata); call_spine->client_initial_metadata().receiver.InterceptAndMap( [call_spine, call](ClientMetadataHandle md) -> absl::optional { @@ -639,7 +770,7 @@ inline void InterceptClientInitialMetadata( Derived* channel), typename Derived::Call* call, Derived* channel, PipeBasedCallSpine* call_spine) { - GPR_DEBUG_ASSERT(fn == &Derived::Call::OnClientInitialMetadata); + DCHECK(fn == &Derived::Call::OnClientInitialMetadata); call_spine->client_initial_metadata().receiver.InterceptAndMap( [call_spine, call, channel]( ClientMetadataHandle md) -> absl::optional { @@ -654,7 +785,7 @@ template inline void InterceptClientInitialMetadata( absl::Status (Derived::Call::*fn)(ClientMetadata& md), typename Derived::Call* call, Derived*, PipeBasedCallSpine* call_spine) { - GPR_DEBUG_ASSERT(fn == &Derived::Call::OnClientInitialMetadata); + DCHECK(fn == &Derived::Call::OnClientInitialMetadata); call_spine->client_initial_metadata().receiver.InterceptAndMap( [call_spine, call](ClientMetadataHandle md) -> absl::optional { @@ -671,7 +802,7 @@ inline void InterceptClientInitialMetadata( absl::Status (Derived::Call::*fn)(ClientMetadata& md, Derived* channel), typename Derived::Call* call, Derived* channel, PipeBasedCallSpine* call_spine) { - GPR_DEBUG_ASSERT(fn == &Derived::Call::OnClientInitialMetadata); + DCHECK(fn == &Derived::Call::OnClientInitialMetadata); call_spine->client_initial_metadata().receiver.InterceptAndMap( [call_spine, call, channel]( ClientMetadataHandle md) -> absl::optional { @@ -692,7 +823,7 @@ InterceptClientInitialMetadata(Promise (Derived::Call::*promise_factory)( ClientMetadata& md, Derived* channel), typename Derived::Call* call, Derived* channel, PipeBasedCallSpine* call_spine) { - GPR_DEBUG_ASSERT(promise_factory == &Derived::Call::OnClientInitialMetadata); + DCHECK(promise_factory == &Derived::Call::OnClientInitialMetadata); call_spine->client_initial_metadata().receiver.InterceptAndMap( [call, call_spine, channel](ClientMetadataHandle md) { ClientMetadata& md_ref = *md; @@ -716,7 +847,7 @@ template inline void InterceptServerInitialMetadata( void (Derived::Call::*fn)(ServerMetadata&), FilterCallData* call_data, const CallArgs& call_args) { - GPR_DEBUG_ASSERT(fn == &Derived::Call::OnServerInitialMetadata); + DCHECK(fn == &Derived::Call::OnServerInitialMetadata); call_args.server_initial_metadata->InterceptAndMap( [call_data](ServerMetadataHandle md) { call_data->call.OnServerInitialMetadata(*md); @@ -728,7 +859,7 @@ template inline void InterceptServerInitialMetadata( absl::Status (Derived::Call::*fn)(ServerMetadata&), FilterCallData* call_data, const CallArgs& call_args) { - GPR_DEBUG_ASSERT(fn == &Derived::Call::OnServerInitialMetadata); + DCHECK(fn == &Derived::Call::OnServerInitialMetadata); call_args.server_initial_metadata->InterceptAndMap( [call_data]( ServerMetadataHandle md) -> absl::optional { @@ -745,7 +876,7 @@ template inline void InterceptServerInitialMetadata( void (Derived::Call::*fn)(ServerMetadata&, Derived*), FilterCallData* call_data, const CallArgs& call_args) { - GPR_DEBUG_ASSERT(fn == &Derived::Call::OnServerInitialMetadata); + DCHECK(fn == &Derived::Call::OnServerInitialMetadata); call_args.server_initial_metadata->InterceptAndMap( [call_data](ServerMetadataHandle md) { call_data->call.OnServerInitialMetadata(*md, call_data->channel); @@ -757,7 +888,7 @@ template inline void InterceptServerInitialMetadata( absl::Status (Derived::Call::*fn)(ServerMetadata&, Derived*), FilterCallData* call_data, const CallArgs& call_args) { - GPR_DEBUG_ASSERT(fn == &Derived::Call::OnServerInitialMetadata); + DCHECK(fn == &Derived::Call::OnServerInitialMetadata); call_args.server_initial_metadata->InterceptAndMap( [call_data]( ServerMetadataHandle md) -> absl::optional { @@ -778,7 +909,7 @@ template inline void InterceptServerInitialMetadata( void (Derived::Call::*fn)(ServerMetadata&), typename Derived::Call* call, Derived*, PipeBasedCallSpine* call_spine) { - GPR_DEBUG_ASSERT(fn == &Derived::Call::OnServerInitialMetadata); + DCHECK(fn == &Derived::Call::OnServerInitialMetadata); call_spine->server_initial_metadata().sender.InterceptAndMap( [call](ServerMetadataHandle md) { call->OnServerInitialMetadata(*md); @@ -790,7 +921,7 @@ template inline void InterceptServerInitialMetadata( absl::Status (Derived::Call::*fn)(ServerMetadata&), typename Derived::Call* call, Derived*, PipeBasedCallSpine* call_spine) { - GPR_DEBUG_ASSERT(fn == &Derived::Call::OnServerInitialMetadata); + DCHECK(fn == &Derived::Call::OnServerInitialMetadata); call_spine->server_initial_metadata().sender.InterceptAndMap( [call, call_spine]( ServerMetadataHandle md) -> absl::optional { @@ -807,7 +938,7 @@ inline void InterceptServerInitialMetadata( void (Derived::Call::*fn)(ServerMetadata&, Derived*), typename Derived::Call* call, Derived* channel, PipeBasedCallSpine* call_spine) { - GPR_DEBUG_ASSERT(fn == &Derived::Call::OnServerInitialMetadata); + DCHECK(fn == &Derived::Call::OnServerInitialMetadata); call_spine->server_initial_metadata().sender.InterceptAndMap( [call, channel](ServerMetadataHandle md) { call->OnServerInitialMetadata(*md, channel); @@ -820,7 +951,7 @@ inline void InterceptServerInitialMetadata( absl::Status (Derived::Call::*fn)(ServerMetadata&, Derived*), typename Derived::Call* call, Derived* channel, PipeBasedCallSpine* call_spine) { - GPR_DEBUG_ASSERT(fn == &Derived::Call::OnServerInitialMetadata); + DCHECK(fn == &Derived::Call::OnServerInitialMetadata); call_spine->server_initial_metadata().sender.InterceptAndMap( [call, call_spine, channel]( ServerMetadataHandle md) -> absl::optional { @@ -835,11 +966,23 @@ inline void InterceptServerInitialMetadata( inline void InterceptServerToClientMessage(const NoInterceptor*, void*, const CallArgs&) {} +template +inline void InterceptServerToClientMessage( + void (Derived::Call::*fn)(const Message&), + FilterCallData* call_data, const CallArgs& call_args) { + DCHECK(fn == &Derived::Call::OnServerToClientMessage); + call_args.server_to_client_messages->InterceptAndMap( + [call_data](MessageHandle msg) -> absl::optional { + call_data->call.OnServerToClientMessage(*msg); + return std::move(msg); + }); +} + template inline void InterceptServerToClientMessage( ServerMetadataHandle (Derived::Call::*fn)(const Message&), FilterCallData* call_data, const CallArgs& call_args) { - GPR_DEBUG_ASSERT(fn == &Derived::Call::OnServerToClientMessage); + DCHECK(fn == &Derived::Call::OnServerToClientMessage); call_args.server_to_client_messages->InterceptAndMap( [call_data](MessageHandle msg) -> absl::optional { auto return_md = call_data->call.OnServerToClientMessage(*msg); @@ -854,7 +997,7 @@ template inline void InterceptServerToClientMessage( ServerMetadataHandle (Derived::Call::*fn)(const Message&, Derived*), FilterCallData* call_data, const CallArgs& call_args) { - GPR_DEBUG_ASSERT(fn == &Derived::Call::OnServerToClientMessage); + DCHECK(fn == &Derived::Call::OnServerToClientMessage); call_args.server_to_client_messages->InterceptAndMap( [call_data](MessageHandle msg) -> absl::optional { auto return_md = @@ -870,7 +1013,7 @@ template inline void InterceptServerToClientMessage( MessageHandle (Derived::Call::*fn)(MessageHandle, Derived*), FilterCallData* call_data, const CallArgs& call_args) { - GPR_DEBUG_ASSERT(fn == &Derived::Call::OnServerToClientMessage); + DCHECK(fn == &Derived::Call::OnServerToClientMessage); call_args.server_to_client_messages->InterceptAndMap( [call_data](MessageHandle msg) -> absl::optional { return call_data->call.OnServerToClientMessage(std::move(msg), @@ -882,7 +1025,7 @@ template inline void InterceptServerToClientMessage( absl::StatusOr (Derived::Call::*fn)(MessageHandle, Derived*), FilterCallData* call_data, const CallArgs& call_args) { - GPR_DEBUG_ASSERT(fn == &Derived::Call::OnServerToClientMessage); + DCHECK(fn == &Derived::Call::OnServerToClientMessage); call_args.server_to_client_messages->InterceptAndMap( [call_data](MessageHandle msg) -> absl::optional { auto r = call_data->call.OnServerToClientMessage(std::move(msg), @@ -897,11 +1040,23 @@ inline void InterceptServerToClientMessage( inline void InterceptServerToClientMessage(const NoInterceptor*, void*, void*, CallSpineInterface*) {} +template +inline void InterceptServerToClientMessage( + void (Derived::Call::*fn)(const Message&), typename Derived::Call* call, + Derived*, PipeBasedCallSpine* call_spine) { + DCHECK(fn == &Derived::Call::OnServerToClientMessage); + call_spine->server_to_client_messages().sender.InterceptAndMap( + [call](MessageHandle msg) -> absl::optional { + call->OnServerToClientMessage(*msg); + return std::move(msg); + }); +} + template inline void InterceptServerToClientMessage( ServerMetadataHandle (Derived::Call::*fn)(const Message&), typename Derived::Call* call, Derived*, PipeBasedCallSpine* call_spine) { - GPR_DEBUG_ASSERT(fn == &Derived::Call::OnServerToClientMessage); + DCHECK(fn == &Derived::Call::OnServerToClientMessage); call_spine->server_to_client_messages().sender.InterceptAndMap( [call, call_spine](MessageHandle msg) -> absl::optional { auto return_md = call->OnServerToClientMessage(*msg); @@ -916,7 +1071,7 @@ inline void InterceptServerToClientMessage( ServerMetadataHandle (Derived::Call::*fn)(const Message&, Derived*), typename Derived::Call* call, Derived* channel, PipeBasedCallSpine* call_spine) { - GPR_DEBUG_ASSERT(fn == &Derived::Call::OnServerToClientMessage); + DCHECK(fn == &Derived::Call::OnServerToClientMessage); call_spine->server_to_client_messages().sender.InterceptAndMap( [call, call_spine, channel](MessageHandle msg) -> absl::optional { @@ -932,7 +1087,7 @@ inline void InterceptServerToClientMessage( MessageHandle (Derived::Call::*fn)(MessageHandle, Derived*), typename Derived::Call* call, Derived* channel, PipeBasedCallSpine* call_spine) { - GPR_DEBUG_ASSERT(fn == &Derived::Call::OnServerToClientMessage); + DCHECK(fn == &Derived::Call::OnServerToClientMessage); call_spine->server_to_client_messages().sender.InterceptAndMap( [call, channel](MessageHandle msg) { return call->OnServerToClientMessage(std::move(msg), channel); @@ -944,7 +1099,7 @@ inline void InterceptServerToClientMessage( absl::StatusOr (Derived::Call::*fn)(MessageHandle, Derived*), typename Derived::Call* call, Derived* channel, PipeBasedCallSpine* call_spine) { - GPR_DEBUG_ASSERT(fn == &Derived::Call::OnServerToClientMessage); + DCHECK(fn == &Derived::Call::OnServerToClientMessage); call_spine->server_to_client_messages().sender.InterceptAndMap( [call, call_spine, channel](MessageHandle msg) -> absl::optional { @@ -987,7 +1142,7 @@ inline void InterceptFinalize(const NoInterceptor*, void*, void*) {} template inline void InterceptFinalize(void (Call::*fn)(const grpc_call_final_info*), void*, Call* call) { - GPR_DEBUG_ASSERT(fn == &Call::OnFinalize); + DCHECK(fn == &Call::OnFinalize); GetContext()->Add( [call](const grpc_call_final_info* final_info) { call->OnFinalize(final_info); @@ -998,7 +1153,7 @@ template inline void InterceptFinalize( void (Derived::Call::*fn)(const grpc_call_final_info*, Derived*), Derived* channel, typename Derived::Call* call) { - GPR_DEBUG_ASSERT(fn == &Derived::Call::OnFinalize); + DCHECK(fn == &Derived::Call::OnFinalize); GetContext()->Add( [call, channel](const grpc_call_final_info* final_info) { call->OnFinalize(final_info, channel); @@ -1094,7 +1249,8 @@ class ImplementChannelFilter : public ChannelFilter, promise_filter_detail::InterceptClientInitialMetadata( &Derived::Call::OnClientInitialMetadata, call, d, c); promise_filter_detail::InterceptClientToServerMessage( - &Derived::Call::OnClientToServerMessage, call, d, c); + &Derived::Call::OnClientToServerMessage, + &Derived::Call::OnClientToServerHalfClose, call, d, c); promise_filter_detail::InterceptServerInitialMetadata( &Derived::Call::OnServerInitialMetadata, call, d, c); promise_filter_detail::InterceptServerToClientMessage( @@ -1113,7 +1269,8 @@ class ImplementChannelFilter : public ChannelFilter, auto* call = promise_filter_detail::MakeFilterCall( static_cast(this)); promise_filter_detail::InterceptClientToServerMessage( - &Derived::Call::OnClientToServerMessage, call, call_args); + &Derived::Call::OnClientToServerMessage, + &Derived::Call::OnClientToServerHalfClose, call, call_args); promise_filter_detail::InterceptServerInitialMetadata( &Derived::Call::OnServerInitialMetadata, call, call_args); promise_filter_detail::InterceptServerToClientMessage( @@ -1187,8 +1344,7 @@ class BaseCallData : public Activity, private Wakeable { ~BaseCallData() override; void set_pollent(grpc_polling_entity* pollent) { - GPR_ASSERT(nullptr == - pollent_.exchange(pollent, std::memory_order_release)); + CHECK(nullptr == pollent_.exchange(pollent, std::memory_order_release)); } // Activity implementation (partial). @@ -1234,7 +1390,7 @@ class BaseCallData : public Activity, private Wakeable { ~Flusher(); void Resume(grpc_transport_stream_op_batch* batch) { - GPR_ASSERT(!call_->is_last()); + CHECK(!call_->is_last()); if (batch->HasOp()) { release_.push_back(batch); } else if (batch->on_complete != nullptr) { @@ -1313,7 +1469,7 @@ class BaseCallData : public Activity, private Wakeable { PipeSender* original_sender() override { abort(); } void GotPipe(PipeReceiver* receiver) override { - GPR_ASSERT(receiver_ == nullptr); + CHECK_EQ(receiver_, nullptr); receiver_ = receiver; } @@ -1321,7 +1477,7 @@ class BaseCallData : public Activity, private Wakeable { PipeSender* Push() override { return &pipe_.sender; } PipeReceiver* Pull() override { - GPR_ASSERT(receiver_ != nullptr); + CHECK_NE(receiver_, nullptr); return receiver_; } @@ -1342,12 +1498,12 @@ class BaseCallData : public Activity, private Wakeable { void GotPipe(PipeReceiver*) override { abort(); } void GotPipe(PipeSender* sender) override { - GPR_ASSERT(sender_ == nullptr); + CHECK_EQ(sender_, nullptr); sender_ = sender; } PipeSender* Push() override { - GPR_ASSERT(sender_ != nullptr); + CHECK_NE(sender_, nullptr); return sender_; } PipeReceiver* Pull() override { return &pipe_.receiver; } @@ -1865,7 +2021,7 @@ struct CallDataFilterWithFlagsMethods { if ((kFlags & kFilterIsLast) != 0) { ExecCtx::Run(DEBUG_LOCATION, then_schedule_closure, absl::OkStatus()); } else { - GPR_ASSERT(then_schedule_closure == nullptr); + CHECK_EQ(then_schedule_closure, nullptr); } } }; @@ -1902,7 +2058,7 @@ template struct ChannelFilterWithFlagsMethods { static absl::Status InitChannelElem(grpc_channel_element* elem, grpc_channel_element_args* args) { - GPR_ASSERT(args->is_last == ((kFlags & kFilterIsLast) != 0)); + CHECK(args->is_last == ((kFlags & kFilterIsLast) != 0)); auto status = F::Create(args->channel_args, ChannelFilter::Args(args->channel_stack, elem)); if (!status.ok()) { diff --git a/src/core/lib/channel/status_util.cc b/src/core/lib/channel/status_util.cc index f846e360edf..7c78ac5504a 100644 --- a/src/core/lib/channel/status_util.cc +++ b/src/core/lib/channel/status_util.cc @@ -27,7 +27,7 @@ #include -#include "src/core/lib/gpr/useful.h" +#include "src/core/util/useful.h" struct status_string_entry { const char* str; diff --git a/src/core/lib/compression/compression.cc b/src/core/lib/compression/compression.cc index c03c882fb9c..d3aa8878466 100644 --- a/src/core/lib/compression/compression.cc +++ b/src/core/lib/compression/compression.cc @@ -28,9 +28,9 @@ #include "src/core/lib/compression/compression_internal.h" #include "src/core/lib/debug/trace.h" -#include "src/core/lib/gpr/useful.h" #include "src/core/lib/slice/slice_internal.h" #include "src/core/lib/surface/api_trace.h" +#include "src/core/util/useful.h" int grpc_compression_algorithm_is_message(grpc_compression_algorithm) { return 1; diff --git a/src/core/lib/compression/compression_internal.cc b/src/core/lib/compression/compression_internal.cc index e1b13a2f1ff..6a2883f4883 100644 --- a/src/core/lib/compression/compression_internal.cc +++ b/src/core/lib/compression/compression_internal.cc @@ -23,6 +23,7 @@ #include #include "absl/container/inlined_vector.h" +#include "absl/log/check.h" #include "absl/strings/ascii.h" #include "absl/strings/str_format.h" #include "absl/strings/str_split.h" @@ -120,7 +121,7 @@ CompressionAlgorithmSet::CompressionAlgorithmForLevel( return GRPC_COMPRESS_NONE; } - GPR_ASSERT(level > 0); + CHECK_GT(level, 0); // Establish a "ranking" or compression algorithms in increasing order of // compression. diff --git a/src/core/lib/compression/message_compress.cc b/src/core/lib/compression/message_compress.cc index 59b5d9eee6d..bb806509286 100644 --- a/src/core/lib/compression/message_compress.cc +++ b/src/core/lib/compression/message_compress.cc @@ -23,6 +23,9 @@ #include #include +#include "absl/log/check.h" +#include "absl/log/log.h" + #include #include #include @@ -41,20 +44,20 @@ static int zlib_body(z_stream* zs, grpc_slice_buffer* input, grpc_slice outbuf = GRPC_SLICE_MALLOC(OUTPUT_BLOCK_SIZE); const uInt uint_max = ~uInt{0}; - GPR_ASSERT(GRPC_SLICE_LENGTH(outbuf) <= uint_max); + CHECK(GRPC_SLICE_LENGTH(outbuf) <= uint_max); zs->avail_out = static_cast GRPC_SLICE_LENGTH(outbuf); zs->next_out = GRPC_SLICE_START_PTR(outbuf); flush = Z_NO_FLUSH; for (i = 0; i < input->count; i++) { if (i == input->count - 1) flush = Z_FINISH; - GPR_ASSERT(GRPC_SLICE_LENGTH(input->slices[i]) <= uint_max); + CHECK(GRPC_SLICE_LENGTH(input->slices[i]) <= uint_max); zs->avail_in = static_cast GRPC_SLICE_LENGTH(input->slices[i]); zs->next_in = GRPC_SLICE_START_PTR(input->slices[i]); do { if (zs->avail_out == 0) { grpc_slice_buffer_add_indexed(output, outbuf); outbuf = GRPC_SLICE_MALLOC(OUTPUT_BLOCK_SIZE); - GPR_ASSERT(GRPC_SLICE_LENGTH(outbuf) <= uint_max); + CHECK(GRPC_SLICE_LENGTH(outbuf) <= uint_max); zs->avail_out = static_cast GRPC_SLICE_LENGTH(outbuf); zs->next_out = GRPC_SLICE_START_PTR(outbuf); } @@ -65,16 +68,16 @@ static int zlib_body(z_stream* zs, grpc_slice_buffer* input, } } while (zs->avail_out == 0); if (zs->avail_in) { - gpr_log(GPR_INFO, "zlib: not all input consumed"); + LOG(INFO) << "zlib: not all input consumed"; goto error; } } if (r != Z_STREAM_END) { - gpr_log(GPR_INFO, "zlib: Data error"); + LOG(INFO) << "zlib: Data error"; goto error; } - GPR_ASSERT(outbuf.refcount); + CHECK(outbuf.refcount); outbuf.data.refcounted.length -= zs->avail_out; grpc_slice_buffer_add_indexed(output, outbuf); @@ -104,7 +107,7 @@ static int zlib_compress(grpc_slice_buffer* input, grpc_slice_buffer* output, zs.zfree = zfree_gpr; r = deflateInit2(&zs, Z_DEFAULT_COMPRESSION, Z_DEFLATED, 15 | (gzip ? 16 : 0), 8, Z_DEFAULT_STRATEGY); - GPR_ASSERT(r == Z_OK); + CHECK(r == Z_OK); r = zlib_body(&zs, input, output, deflate) && output->length < input->length; if (!r) { for (i = count_before; i < output->count; i++) { @@ -128,7 +131,7 @@ static int zlib_decompress(grpc_slice_buffer* input, grpc_slice_buffer* output, zs.zalloc = zalloc_gpr; zs.zfree = zfree_gpr; r = inflateInit2(&zs, 15 | (gzip ? 16 : 0)); - GPR_ASSERT(r == Z_OK); + CHECK(r == Z_OK); r = zlib_body(&zs, input, output, inflate); if (!r) { for (i = count_before; i < output->count; i++) { @@ -163,7 +166,7 @@ static int compress_inner(grpc_compression_algorithm algorithm, case GRPC_COMPRESS_ALGORITHMS_COUNT: break; } - gpr_log(GPR_ERROR, "invalid compression algorithm %d", algorithm); + LOG(ERROR) << "invalid compression algorithm " << algorithm; return 0; } @@ -188,6 +191,6 @@ int grpc_msg_decompress(grpc_compression_algorithm algorithm, case GRPC_COMPRESS_ALGORITHMS_COUNT: break; } - gpr_log(GPR_ERROR, "invalid compression algorithm %d", algorithm); + LOG(ERROR) << "invalid compression algorithm " << algorithm; return 0; } diff --git a/src/core/lib/config/core_configuration.cc b/src/core/lib/config/core_configuration.cc index 84ca3d0da25..7baa803bb47 100644 --- a/src/core/lib/config/core_configuration.cc +++ b/src/core/lib/config/core_configuration.cc @@ -18,6 +18,8 @@ #include #include +#include "absl/log/check.h" + #include #include @@ -49,18 +51,18 @@ CoreConfiguration::CoreConfiguration(Builder* builder) void CoreConfiguration::RegisterBuilder( absl::AnyInvocable builder) { - GPR_ASSERT(config_.load(std::memory_order_relaxed) == nullptr && - "CoreConfiguration was already instantiated before builder " - "registration was completed"); + CHECK(config_.load(std::memory_order_relaxed) == nullptr) + << "CoreConfiguration was already instantiated before builder " + "registration was completed"; RegisteredBuilder* n = new RegisteredBuilder(); n->builder = std::move(builder); n->next = builders_.load(std::memory_order_relaxed); while (!builders_.compare_exchange_weak(n->next, n, std::memory_order_acq_rel, std::memory_order_relaxed)) { } - GPR_ASSERT(config_.load(std::memory_order_relaxed) == nullptr && - "CoreConfiguration was already instantiated before builder " - "registration was completed"); + CHECK(config_.load(std::memory_order_relaxed) == nullptr) + << "CoreConfiguration was already instantiated before builder " + "registration was completed"; } const CoreConfiguration& CoreConfiguration::BuildNewAndMaybeSet() { diff --git a/src/core/lib/config/core_configuration.h b/src/core/lib/config/core_configuration.h index 56d73a21986..0d8b268cdda 100644 --- a/src/core/lib/config/core_configuration.h +++ b/src/core/lib/config/core_configuration.h @@ -18,16 +18,17 @@ #include #include "absl/functional/any_invocable.h" +#include "absl/log/check.h" #include #include +#include "src/core/handshaker/handshaker_registry.h" +#include "src/core/handshaker/proxy_mapper_registry.h" #include "src/core/lib/channel/channel_args_preconditioning.h" -#include "src/core/lib/handshaker/proxy_mapper_registry.h" #include "src/core/lib/security/certificate_provider/certificate_provider_registry.h" #include "src/core/lib/security/credentials/channel_creds_registry.h" #include "src/core/lib/surface/channel_init.h" -#include "src/core/lib/transport/handshaker_registry.h" #include "src/core/load_balancing/lb_policy_registry.h" #include "src/core/resolver/resolver_registry.h" #include "src/core/service_config/service_config_parser.h" @@ -129,10 +130,10 @@ class GRPC_DLL CoreConfiguration { ~WithSubstituteBuilder() { // Reset and restore. Reset(); - GPR_ASSERT(CoreConfiguration::config_.exchange( - config_restore_, std::memory_order_acquire) == nullptr); - GPR_ASSERT(CoreConfiguration::builders_.exchange( - builders_restore_, std::memory_order_acquire) == nullptr); + CHECK(CoreConfiguration::config_.exchange( + config_restore_, std::memory_order_acquire) == nullptr); + CHECK(CoreConfiguration::builders_.exchange( + builders_restore_, std::memory_order_acquire) == nullptr); } private: diff --git a/src/core/lib/config/load_config.cc b/src/core/lib/config/load_config.cc index b865beda8f4..1e9c3170a74 100644 --- a/src/core/lib/config/load_config.cc +++ b/src/core/lib/config/load_config.cc @@ -17,13 +17,13 @@ #include #include "absl/flags/marshalling.h" +#include "absl/log/check.h" #include "absl/strings/numbers.h" #include "absl/strings/str_join.h" #include "absl/types/optional.h" #include -#include "src/core/lib/gpr/log_internal.h" #include "src/core/lib/gprpp/env.h" namespace grpc_core { @@ -36,7 +36,7 @@ absl::optional LoadEnv(absl::string_view environment_variable) { std::string LoadConfigFromEnv(absl::string_view environment_variable, const char* default_value) { - GPR_ASSERT_INTERNAL(!environment_variable.empty()); + CHECK(!environment_variable.empty()); return LoadEnv(environment_variable).value_or(default_value); } diff --git a/src/core/lib/debug/event_log.cc b/src/core/lib/debug/event_log.cc index 1c95bafb2d4..76edac8584b 100644 --- a/src/core/lib/debug/event_log.cc +++ b/src/core/lib/debug/event_log.cc @@ -17,6 +17,7 @@ #include #include +#include "absl/log/check.h" #include "absl/strings/str_cat.h" #include "absl/strings/str_join.h" @@ -28,7 +29,7 @@ namespace grpc_core { std::atomic EventLog::g_instance_{nullptr}; EventLog::~EventLog() { - GPR_ASSERT(g_instance_.load(std::memory_order_acquire) != this); + CHECK(g_instance_.load(std::memory_order_acquire) != this); } void EventLog::BeginCollection() { diff --git a/src/core/lib/debug/event_log.h b/src/core/lib/debug/event_log.h index 8e36b8869b4..dd8aa07aa3d 100644 --- a/src/core/lib/debug/event_log.h +++ b/src/core/lib/debug/event_log.h @@ -27,9 +27,9 @@ #include -#include "src/core/lib/gpr/time_precise.h" #include "src/core/lib/gprpp/per_cpu.h" #include "src/core/lib/gprpp/sync.h" +#include "src/core/util/time_precise.h" namespace grpc_core { diff --git a/src/core/lib/debug/trace.cc b/src/core/lib/debug/trace.cc index 5b7e189bf9c..8500def37f7 100644 --- a/src/core/lib/debug/trace.cc +++ b/src/core/lib/debug/trace.cc @@ -22,6 +22,7 @@ #include #include +#include "absl/log/log.h" #include "absl/strings/match.h" #include "absl/strings/str_split.h" #include "absl/strings/string_view.h" @@ -75,9 +76,9 @@ void TraceFlagList::Add(TraceFlag* flag) { } void TraceFlagList::LogAllTracers() { - gpr_log(GPR_DEBUG, "available tracers:"); + VLOG(2) << "available tracers:"; for (TraceFlag* t = root_tracer_; t != nullptr; t = t->next_tracer_) { - gpr_log(GPR_DEBUG, "\t%s", t->name_); + VLOG(2) << "\t" << t->name_; } } diff --git a/src/core/lib/event_engine/ares_resolver.cc b/src/core/lib/event_engine/ares_resolver.cc index 6a5f3268b5c..58df73794b9 100644 --- a/src/core/lib/event_engine/ares_resolver.cc +++ b/src/core/lib/event_engine/ares_resolver.cc @@ -52,6 +52,8 @@ #include "absl/functional/any_invocable.h" #include "absl/hash/hash.h" +#include "absl/log/check.h" +#include "absl/log/log.h" #include "absl/strings/match.h" #include "absl/strings/numbers.h" #include "absl/strings/str_cat.h" @@ -199,7 +201,7 @@ AresResolver::CreateAresResolver( ares_channel channel; int status = ares_init_options(&channel, &opts, ARES_OPT_FLAGS); if (status != ARES_SUCCESS) { - gpr_log(GPR_ERROR, "ares_init_options failed, status: %d", status); + LOG(ERROR) << "ares_init_options failed, status: " << status; return AresStatusToAbslStatus( status, absl::StrCat("Failed to init c-ares channel: ", ares_strerror(status))); @@ -229,8 +231,8 @@ AresResolver::AresResolver( } AresResolver::~AresResolver() { - GPR_ASSERT(fd_node_list_.empty()); - GPR_ASSERT(callback_map_.empty()); + CHECK(fd_node_list_.empty()); + CHECK(callback_map_.empty()); ares_destroy(channel_); } @@ -246,7 +248,7 @@ void AresResolver::Orphan() { if (!fd_node->already_shutdown) { GRPC_ARES_RESOLVER_TRACE_LOG("resolver: %p shutdown fd: %s", this, fd_node->polled_fd->GetName()); - GPR_ASSERT(fd_node->polled_fd->ShutdownLocked( + CHECK(fd_node->polled_fd->ShutdownLocked( absl::CancelledError("AresResolver::Orphan"))); fd_node->already_shutdown = true; } @@ -513,7 +515,7 @@ void AresResolver::MaybeStartTimerLocked() { void AresResolver::OnReadable(FdNode* fd_node, absl::Status status) { grpc_core::MutexLock lock(&mutex_); - GPR_ASSERT(fd_node->readable_registered); + CHECK(fd_node->readable_registered); fd_node->readable_registered = false; GRPC_ARES_RESOLVER_TRACE_LOG("OnReadable: fd: %d; request: %p; status: %s", fd_node->as, this, status.ToString().c_str()); @@ -532,7 +534,7 @@ void AresResolver::OnReadable(FdNode* fd_node, absl::Status status) { void AresResolver::OnWritable(FdNode* fd_node, absl::Status status) { grpc_core::MutexLock lock(&mutex_); - GPR_ASSERT(fd_node->writable_registered); + CHECK(fd_node->writable_registered); fd_node->writable_registered = false; GRPC_ARES_RESOLVER_TRACE_LOG("OnWritable: fd: %d; request:%p; status: %s", fd_node->as, this, status.ToString().c_str()); @@ -582,7 +584,7 @@ void AresResolver::OnHostbynameDoneLocked(void* arg, int status, int /*timeouts*/, struct hostent* hostent) { auto* hostname_qa = static_cast(arg); - GPR_ASSERT(hostname_qa->pending_requests-- > 0); + CHECK_GT(hostname_qa->pending_requests--, 0); auto* ares_resolver = hostname_qa->ares_resolver; if (status != ARES_SUCCESS) { std::string error_msg = @@ -643,9 +645,9 @@ void AresResolver::OnHostbynameDoneLocked(void* arg, int status, if (hostname_qa->pending_requests == 0) { auto nh = ares_resolver->callback_map_.extract(hostname_qa->callback_map_id); - GPR_ASSERT(!nh.empty()); - GPR_ASSERT(absl::holds_alternative< - EventEngine::DNSResolver::LookupHostnameCallback>(nh.mapped())); + CHECK(!nh.empty()); + CHECK(absl::holds_alternative< + EventEngine::DNSResolver::LookupHostnameCallback>(nh.mapped())); auto callback = absl::get( std::move(nh.mapped())); if (!hostname_qa->result.empty() || hostname_qa->error_status.ok()) { @@ -670,10 +672,9 @@ void AresResolver::OnSRVQueryDoneLocked(void* arg, int status, int /*timeouts*/, std::unique_ptr qa(static_cast(arg)); auto* ares_resolver = qa->ares_resolver; auto nh = ares_resolver->callback_map_.extract(qa->callback_map_id); - GPR_ASSERT(!nh.empty()); - GPR_ASSERT( - absl::holds_alternative( - nh.mapped())); + CHECK(!nh.empty()); + CHECK(absl::holds_alternative( + nh.mapped())); auto callback = absl::get( std::move(nh.mapped())); auto fail = [&](absl::string_view prefix) { @@ -726,10 +727,9 @@ void AresResolver::OnTXTDoneLocked(void* arg, int status, int /*timeouts*/, std::unique_ptr qa(static_cast(arg)); auto* ares_resolver = qa->ares_resolver; auto nh = ares_resolver->callback_map_.extract(qa->callback_map_id); - GPR_ASSERT(!nh.empty()); - GPR_ASSERT( - absl::holds_alternative( - nh.mapped())); + CHECK(!nh.empty()); + CHECK(absl::holds_alternative( + nh.mapped())); auto callback = absl::get( std::move(nh.mapped())); auto fail = [&](absl::string_view prefix) { @@ -770,7 +770,7 @@ void AresResolver::OnTXTDoneLocked(void* arg, int status, int /*timeouts*/, result.size()); if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_ares_resolver)) { for (const auto& record : result) { - gpr_log(GPR_INFO, "%s", record.c_str()); + LOG(INFO) << record; } } // Clean up. diff --git a/src/core/lib/event_engine/cf_engine/cf_engine.cc b/src/core/lib/event_engine/cf_engine/cf_engine.cc index bc6319569d1..5b869962dfd 100644 --- a/src/core/lib/event_engine/cf_engine/cf_engine.cc +++ b/src/core/lib/event_engine/cf_engine/cf_engine.cc @@ -20,6 +20,8 @@ #include +#include "absl/log/check.h" + #include #include "src/core/lib/event_engine/cf_engine/cf_engine.h" @@ -68,7 +70,7 @@ CFEventEngine::~CFEventEngine() { HandleToString(handle).c_str()); } } - GPR_ASSERT(GPR_LIKELY(known_handles_.empty())); + CHECK(GPR_LIKELY(known_handles_.empty())); timer_manager_.Shutdown(); } thread_pool_->Quiesce(); diff --git a/src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc b/src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc index 0b14723e214..a2307fe36f9 100644 --- a/src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc +++ b/src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc @@ -249,9 +249,9 @@ void CFStreamEndpointImpl::Shutdown() { read_event_.SetShutdown(shutdownStatus); write_event_.SetShutdown(shutdownStatus); - CFReadStreamSetClient(cf_read_stream_, kCFStreamEventNone, nullptr, nullptr); - CFWriteStreamSetClient(cf_write_stream_, kCFStreamEventNone, nullptr, - nullptr); + CFReadStreamSetDispatchQueue(cf_read_stream_, nullptr); + CFWriteStreamSetDispatchQueue(cf_write_stream_, nullptr); + CFReadStreamClose(cf_read_stream_); CFWriteStreamClose(cf_write_stream_); } diff --git a/src/core/lib/event_engine/cf_engine/dns_service_resolver.cc b/src/core/lib/event_engine/cf_engine/dns_service_resolver.cc index fc02cbd566a..fb5f7bfb7ba 100644 --- a/src/core/lib/event_engine/cf_engine/dns_service_resolver.cc +++ b/src/core/lib/event_engine/cf_engine/dns_service_resolver.cc @@ -18,6 +18,7 @@ #include #ifdef AVAILABLE_MAC_OS_X_VERSION_10_12_AND_LATER +#include "absl/log/check.h" #include "absl/strings/str_cat.h" #include "absl/strings/str_format.h" @@ -153,7 +154,7 @@ void DNSServiceResolverImpl::ResolveCallback( grpc_core::ReleasableMutexLock lock(&that->request_mu_); auto request_it = that->requests_.find(sdRef); - GPR_ASSERT(request_it != that->requests_.end()); + CHECK(request_it != that->requests_.end()); if (errorCode != kDNSServiceErr_NoError && errorCode != kDNSServiceErr_NoSuchRecord) { diff --git a/src/core/lib/event_engine/cf_engine/dns_service_resolver.h b/src/core/lib/event_engine/cf_engine/dns_service_resolver.h index 95b285de49d..cff4f9cc266 100644 --- a/src/core/lib/event_engine/cf_engine/dns_service_resolver.h +++ b/src/core/lib/event_engine/cf_engine/dns_service_resolver.h @@ -23,6 +23,7 @@ #include #include "absl/container/flat_hash_map.h" +#include "absl/log/check.h" #include @@ -47,7 +48,7 @@ class DNSServiceResolverImpl explicit DNSServiceResolverImpl(std::shared_ptr engine) : engine_(std::move((engine))) {} ~DNSServiceResolverImpl() override { - GPR_ASSERT(requests_.empty()); + CHECK(requests_.empty()); dispatch_release(queue_); } diff --git a/src/core/lib/event_engine/extensions/supports_fd.h b/src/core/lib/event_engine/extensions/supports_fd.h index 66ea1c2b345..30f0d2ad0e6 100644 --- a/src/core/lib/event_engine/extensions/supports_fd.h +++ b/src/core/lib/event_engine/extensions/supports_fd.h @@ -112,6 +112,13 @@ class EventEngineSupportsFdExtension { int fd, const EndpointConfig& config, MemoryAllocator memory_allocator) = 0; + /// Creates an EventEngine::Endpoint from an fd which is already assumed to be + /// connected to a remote peer. See \a CreatePosixEndpointFromFd for details. + /// This has the same behavior, but the \a memory_allocator is taken from the + /// EndpointConfig's resource quota. + virtual std::unique_ptr CreateEndpointFromFd( + int fd, const EndpointConfig& config) = 0; + /// Called when the posix listener has accepted a new client connection. /// \a listener_fd - The listening socket fd that accepted the new client /// connection. diff --git a/src/core/lib/event_engine/forkable.cc b/src/core/lib/event_engine/forkable.cc index e0d28e75f63..d4fcd1e2599 100644 --- a/src/core/lib/event_engine/forkable.cc +++ b/src/core/lib/event_engine/forkable.cc @@ -14,6 +14,8 @@ #include "src/core/lib/event_engine/forkable.h" +#include "absl/log/check.h" + #include #include @@ -43,7 +45,7 @@ void ObjectGroupForkHandler::RegisterForkable( std::shared_ptr forkable, GRPC_UNUSED void (*prepare)(void), GRPC_UNUSED void (*parent)(void), GRPC_UNUSED void (*child)(void)) { if (IsForkEnabled()) { - GPR_ASSERT(!is_forking_); + CHECK(!is_forking_); forkables_.emplace_back(forkable); #ifdef GRPC_POSIX_FORK_ALLOW_PTHREAD_ATFORK if (!std::exchange(registered_, true)) { @@ -55,7 +57,7 @@ void ObjectGroupForkHandler::RegisterForkable( void ObjectGroupForkHandler::Prefork() { if (IsForkEnabled()) { - GPR_ASSERT(!std::exchange(is_forking_, true)); + CHECK(!std::exchange(is_forking_, true)); GRPC_FORK_TRACE_LOG_STRING("PrepareFork"); for (auto it = forkables_.begin(); it != forkables_.end();) { auto shared = it->lock(); @@ -71,7 +73,7 @@ void ObjectGroupForkHandler::Prefork() { void ObjectGroupForkHandler::PostforkParent() { if (IsForkEnabled()) { - GPR_ASSERT(is_forking_); + CHECK(is_forking_); GRPC_FORK_TRACE_LOG_STRING("PostforkParent"); for (auto it = forkables_.begin(); it != forkables_.end();) { auto shared = it->lock(); @@ -88,7 +90,7 @@ void ObjectGroupForkHandler::PostforkParent() { void ObjectGroupForkHandler::PostforkChild() { if (IsForkEnabled()) { - GPR_ASSERT(is_forking_); + CHECK(is_forking_); GRPC_FORK_TRACE_LOG_STRING("PostforkChild"); for (auto it = forkables_.begin(); it != forkables_.end();) { auto shared = it->lock(); diff --git a/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc b/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc index df8eeddab97..a1fffc0a7f9 100644 --- a/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +++ b/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc @@ -18,6 +18,7 @@ #include #include +#include "absl/log/check.h" #include "absl/status/status.h" #include "absl/status/statusor.h" #include "absl/strings/str_format.h" @@ -353,14 +354,14 @@ Epoll1Poller::Epoll1Poller(Scheduler* scheduler) : scheduler_(scheduler), was_kicked_(false), closed_(false) { g_epoll_set_.epfd = EpollCreateAndCloexec(); wakeup_fd_ = *CreateWakeupFd(); - GPR_ASSERT(wakeup_fd_ != nullptr); - GPR_ASSERT(g_epoll_set_.epfd >= 0); + CHECK(wakeup_fd_ != nullptr); + CHECK_GE(g_epoll_set_.epfd, 0); gpr_log(GPR_INFO, "grpc epoll fd: %d", g_epoll_set_.epfd); struct epoll_event ev; ev.events = static_cast(EPOLLIN | EPOLLET); ev.data.ptr = wakeup_fd_.get(); - GPR_ASSERT(epoll_ctl(g_epoll_set_.epfd, EPOLL_CTL_ADD, wakeup_fd_->ReadFd(), - &ev) == 0); + CHECK(epoll_ctl(g_epoll_set_.epfd, EPOLL_CTL_ADD, wakeup_fd_->ReadFd(), + &ev) == 0); g_epoll_set_.num_events = 0; g_epoll_set_.cursor = 0; ForkPollerListAddPoller(this); @@ -438,7 +439,7 @@ bool Epoll1Poller::ProcessEpollEvents(int max_epoll_events_to_handle, struct epoll_event* ev = &g_epoll_set_.events[c]; void* data_ptr = ev->data.ptr; if (data_ptr == wakeup_fd_.get()) { - GPR_ASSERT(wakeup_fd_->ConsumeWakeup().ok()); + CHECK(wakeup_fd_->ConsumeWakeup().ok()); was_kicked = true; } else { Epoll1EventHandle* handle = reinterpret_cast( @@ -557,7 +558,7 @@ void Epoll1Poller::Kick() { return; } was_kicked_ = true; - GPR_ASSERT(wakeup_fd_->Wakeup().ok()); + CHECK(wakeup_fd_->Wakeup().ok()); } std::shared_ptr MakeEpoll1Poller(Scheduler* scheduler) { diff --git a/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc b/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc index ab575288e35..3f383e663bd 100644 --- a/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +++ b/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc @@ -23,6 +23,7 @@ #include "absl/container/inlined_vector.h" #include "absl/functional/any_invocable.h" +#include "absl/log/check.h" #include "absl/status/status.h" #include "absl/status/statusor.h" #include "absl/strings/str_format.h" @@ -339,7 +340,7 @@ EventHandle* PollPoller::CreateHandle(int fd, absl::string_view /*name*/, bool track_err) { // Avoid unused-parameter warning for debug-only parameter (void)track_err; - GPR_DEBUG_ASSERT(track_err == false); + DCHECK(track_err == false); PollEventHandle* handle = new PollEventHandle(fd, shared_from_this()); ForkFdListAddHandle(handle); // We need to send a kick to the thread executing Work(..) so that it can @@ -359,7 +360,7 @@ void PollEventHandle::OrphanHandle(PosixEngineClosure* on_done, int* release_fd, if (release_fd != nullptr) { *release_fd = fd_; } - GPR_ASSERT(!is_orphaned_); + CHECK(!is_orphaned_); is_orphaned_ = true; // Perform shutdown operations if not already done so. if (!is_shutdown_) { @@ -573,7 +574,7 @@ void PollPoller::KickExternal(bool ext) { } was_kicked_ = true; was_kicked_ext_ = ext; - GPR_ASSERT(wakeup_fd_->Wakeup().ok()); + CHECK(wakeup_fd_->Wakeup().ok()); } void PollPoller::Kick() { KickExternal(true); } @@ -612,7 +613,7 @@ PollPoller::PollPoller(Scheduler* scheduler) poll_handles_list_head_(nullptr), closed_(false) { wakeup_fd_ = *CreateWakeupFd(); - GPR_ASSERT(wakeup_fd_ != nullptr); + CHECK(wakeup_fd_ != nullptr); ForkPollerListAddPoller(this); } @@ -625,15 +626,15 @@ PollPoller::PollPoller(Scheduler* scheduler, bool use_phony_poll) poll_handles_list_head_(nullptr), closed_(false) { wakeup_fd_ = *CreateWakeupFd(); - GPR_ASSERT(wakeup_fd_ != nullptr); + CHECK(wakeup_fd_ != nullptr); ForkPollerListAddPoller(this); } PollPoller::~PollPoller() { // Assert that no active handles are present at the time of destruction. // They should have been orphaned before reaching this state. - GPR_ASSERT(num_poll_handles_ == 0); - GPR_ASSERT(poll_handles_list_head_ == nullptr); + CHECK_EQ(num_poll_handles_, 0); + CHECK_EQ(poll_handles_list_head_, nullptr); } Poller::WorkResult PollPoller::Work( @@ -685,7 +686,7 @@ Poller::WorkResult PollPoller::Work( // There shouldn't be any orphaned fds at this point. This is because // prior to marking a handle as orphaned it is first removed from // poll handle list for the poller under the poller lock. - GPR_ASSERT(!head->IsOrphaned()); + CHECK(!head->IsOrphaned()); if (!head->IsPollhup()) { pfds[pfd_count].fd = head->WrappedFd(); watchers[pfd_count] = head; @@ -761,7 +762,7 @@ Poller::WorkResult PollPoller::Work( } } else { if (pfds[0].revents & kPollinCheck) { - GPR_ASSERT(wakeup_fd_->ConsumeWakeup().ok()); + CHECK(wakeup_fd_->ConsumeWakeup().ok()); } for (i = 1; i < pfd_count; i++) { PollEventHandle* head = watchers[i]; diff --git a/src/core/lib/event_engine/posix_engine/lockfree_event.cc b/src/core/lib/event_engine/posix_engine/lockfree_event.cc index 14412070b66..f95969bc69c 100644 --- a/src/core/lib/event_engine/posix_engine/lockfree_event.cc +++ b/src/core/lib/event_engine/posix_engine/lockfree_event.cc @@ -16,6 +16,7 @@ #include #include +#include "absl/log/check.h" #include "absl/status/status.h" #include @@ -78,7 +79,7 @@ void LockfreeEvent::DestroyEvent() { if (curr & kShutdownBit) { grpc_core::internal::StatusFreeHeapPtr(curr & ~kShutdownBit); } else { - GPR_ASSERT(curr == kClosureNotReady || curr == kClosureReady); + CHECK(curr == kClosureNotReady || curr == kClosureReady); } // we CAS in a shutdown, no error value here. If this event is interacted // with post-deletion (see the note in the constructor) we want the bit diff --git a/src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.cc b/src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.cc index 344471564e1..4e0f66fc1f7 100644 --- a/src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.cc +++ b/src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.cc @@ -34,8 +34,8 @@ #include "absl/strings/str_format.h" #include "src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.h" -#include "src/core/lib/gpr/useful.h" #include "src/core/lib/gprpp/host_port.h" +#include "src/core/util/useful.h" namespace grpc_event_engine { namespace experimental { diff --git a/src/core/lib/event_engine/posix_engine/posix_endpoint.cc b/src/core/lib/event_engine/posix_engine/posix_endpoint.cc index 229fdb74dc1..18d7dfb4623 100644 --- a/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +++ b/src/core/lib/event_engine/posix_engine/posix_endpoint.cc @@ -26,6 +26,8 @@ #include #include "absl/functional/any_invocable.h" +#include "absl/log/check.h" +#include "absl/log/log.h" #include "absl/status/status.h" #include "absl/status/statusor.h" #include "absl/strings/str_cat.h" @@ -245,7 +247,7 @@ msg_iovlen_type TcpZerocopySendRecord::PopulateIovs(size_t* unwind_slice_idx, ++(out_offset_.slice_idx); out_offset_.byte_idx = 0; } - GPR_DEBUG_ASSERT(iov_size > 0); + DCHECK_GT(iov_size, 0u); return iov_size; } @@ -314,8 +316,8 @@ bool PosixEndpointImpl::TcpDoRead(absl::Status& status) { iov[i].iov_len = slice.length(); } - GPR_ASSERT(incoming_buffer_->Length() != 0); - GPR_DEBUG_ASSERT(min_progress_size_ > 0); + CHECK_NE(incoming_buffer_->Length(), 0u); + DCHECK_GT(min_progress_size_, 0); do { // Assume there is something on the queue. If we receive TCP_INQ from @@ -371,12 +373,11 @@ bool PosixEndpointImpl::TcpDoRead(absl::Status& status) { } AddToEstimate(static_cast(read_bytes)); - GPR_DEBUG_ASSERT((size_t)read_bytes <= - incoming_buffer_->Length() - total_read_bytes); + DCHECK((size_t)read_bytes <= incoming_buffer_->Length() - total_read_bytes); #ifdef GRPC_HAVE_TCP_INQ if (inq_capable_) { - GPR_DEBUG_ASSERT(!(msg.msg_flags & MSG_CTRUNC)); + DCHECK(!(msg.msg_flags & MSG_CTRUNC)); struct cmsghdr* cmsg = CMSG_FIRSTHDR(&msg); for (; cmsg != nullptr; cmsg = CMSG_NXTHDR(&msg, cmsg)) { if (cmsg->cmsg_level == SOL_TCP && cmsg->cmsg_type == TCP_CM_INQ && @@ -419,7 +420,7 @@ bool PosixEndpointImpl::TcpDoRead(absl::Status& status) { FinishEstimate(); } - GPR_DEBUG_ASSERT(total_read_bytes > 0); + DCHECK_GT(total_read_bytes, 0u); status = absl::OkStatus(); if (grpc_core::IsTcpFrameSizeTuningEnabled()) { // Update min progress size based on the total number of bytes read in @@ -595,7 +596,7 @@ bool PosixEndpointImpl::Read(absl::AnyInvocable on_read, const EventEngine::Endpoint::ReadArgs* args) { grpc_core::ReleasableMutexLock lock(&read_mu_); GRPC_EVENT_ENGINE_ENDPOINT_TRACE("Endpoint[%p]: Read", this); - GPR_ASSERT(read_cb_ == nullptr); + CHECK(read_cb_ == nullptr); incoming_buffer_ = buffer; incoming_buffer_->Clear(); incoming_buffer_->Swap(last_read_buffer_); @@ -670,8 +671,8 @@ TcpZerocopySendRecord* PosixEndpointImpl::TcpGetSendZerocopyRecord( } if (zerocopy_send_record != nullptr) { zerocopy_send_record->PrepareForSends(buf); - GPR_DEBUG_ASSERT(buf.Count() == 0); - GPR_DEBUG_ASSERT(buf.Length() == 0); + DCHECK_EQ(buf.Count(), 0u); + DCHECK_EQ(buf.Length(), 0u); outgoing_byte_idx_ = 0; outgoing_buffer_ = nullptr; } @@ -718,7 +719,7 @@ bool PosixEndpointImpl::ProcessErrors() { return processed_err; } if (GPR_UNLIKELY((msg.msg_flags & MSG_CTRUNC) != 0)) { - gpr_log(GPR_ERROR, "Error message was truncated."); + LOG(ERROR) << "Error message was truncated."; } if (msg.msg_controllen == 0) { @@ -758,10 +759,10 @@ void PosixEndpointImpl::ZerocopyDisableAndWaitForRemaining() { // Reads \a cmsg to process zerocopy control messages. void PosixEndpointImpl::ProcessZerocopy(struct cmsghdr* cmsg) { - GPR_DEBUG_ASSERT(cmsg); + DCHECK(cmsg); auto serr = reinterpret_cast(CMSG_DATA(cmsg)); - GPR_DEBUG_ASSERT(serr->ee_errno == 0); - GPR_DEBUG_ASSERT(serr->ee_origin == SO_EE_ORIGIN_ZEROCOPY); + DCHECK_EQ(serr->ee_errno, 0u); + DCHECK(serr->ee_origin == SO_EE_ORIGIN_ZEROCOPY); const uint32_t lo = serr->ee_info; const uint32_t hi = serr->ee_data; for (uint32_t seq = lo; seq <= hi; ++seq) { @@ -771,7 +772,7 @@ void PosixEndpointImpl::ProcessZerocopy(struct cmsghdr* cmsg) { // both; if so, batch the unref/put. TcpZerocopySendRecord* record = tcp_zerocopy_send_ctx_->ReleaseSendRecord(seq); - GPR_DEBUG_ASSERT(record); + DCHECK(record); UnrefMaybePutZerocopySendRecord(record); } if (tcp_zerocopy_send_ctx_->UpdateZeroCopyOptMemStateAfterFree()) { @@ -813,7 +814,7 @@ struct cmsghdr* PosixEndpointImpl::ProcessTimestamp(msghdr* msg, auto serr = reinterpret_cast(CMSG_DATA(next_cmsg)); if (serr->ee_errno != ENOMSG || serr->ee_origin != SO_EE_ORIGIN_TIMESTAMPING) { - gpr_log(GPR_ERROR, "Unexpected control message"); + LOG(ERROR) << "Unexpected control message"; return cmsg; } traced_buffers_.ProcessTimestamp(serr, opt_stats, tss); @@ -1057,7 +1058,7 @@ bool PosixEndpointImpl::TcpFlush(absl::Status& status) { outgoing_slice_idx++; outgoing_byte_idx_ = 0; } - GPR_ASSERT(iov_size > 0); + CHECK_GT(iov_size, 0u); msg.msg_name = nullptr; msg.msg_namelen = 0; @@ -1100,7 +1101,7 @@ bool PosixEndpointImpl::TcpFlush(absl::Status& status) { } } - GPR_ASSERT(outgoing_byte_idx_ == 0); + CHECK_EQ(outgoing_byte_idx_, 0u); bytes_counter_ += sent_length; trailing = sending_length - static_cast(sent_length); while (trailing > 0) { @@ -1139,7 +1140,7 @@ void PosixEndpointImpl::HandleWrite(absl::Status status) { ? TcpFlushZerocopy(current_zerocopy_send_, status) : TcpFlush(status); if (!flush_result) { - GPR_DEBUG_ASSERT(status.ok()); + DCHECK(status.ok()); handle_->NotifyOnWrite(on_write_); } else { GRPC_EVENT_ENGINE_ENDPOINT_TRACE("Endpoint[%p]: Write complete: %s", this, @@ -1158,9 +1159,9 @@ bool PosixEndpointImpl::Write( absl::Status status = absl::OkStatus(); TcpZerocopySendRecord* zerocopy_send_record = nullptr; - GPR_ASSERT(write_cb_ == nullptr); - GPR_DEBUG_ASSERT(current_zerocopy_send_ == nullptr); - GPR_DEBUG_ASSERT(data != nullptr); + CHECK(write_cb_ == nullptr); + DCHECK_EQ(current_zerocopy_send_, nullptr); + DCHECK_NE(data, nullptr); GRPC_EVENT_ENGINE_ENDPOINT_TRACE("Endpoint[%p]: Write %" PRIdPTR " bytes", this, data->Length()); @@ -1191,7 +1192,7 @@ bool PosixEndpointImpl::Write( outgoing_buffer_arg_ = args->google_specific; } if (outgoing_buffer_arg_) { - GPR_ASSERT(poller_->CanTrackErrors()); + CHECK(poller_->CanTrackErrors()); } bool flush_result = zerocopy_send_record != nullptr @@ -1266,7 +1267,7 @@ PosixEndpointImpl::PosixEndpointImpl(EventHandle* handle, engine_(engine) { PosixSocketWrapper sock(handle->WrappedFd()); fd_ = handle_->WrappedFd(); - GPR_ASSERT(options.resource_quota != nullptr); + CHECK(options.resource_quota != nullptr); auto peer_addr_string = sock.PeerAddressString(); mem_quota_ = options.resource_quota->memory_quota(); memory_owner_ = mem_quota_->CreateMemoryOwner(); @@ -1303,7 +1304,7 @@ PosixEndpointImpl::PosixEndpointImpl(EventHandle* handle, if (setsockopt(fd_, SOL_SOCKET, SO_ZEROCOPY, &enable, sizeof(enable)) != 0) { zerocopy_enabled = false; - gpr_log(GPR_ERROR, "Failed to set zerocopy options on the socket."); + LOG(ERROR) << "Failed to set zerocopy options on the socket."; } } @@ -1348,7 +1349,7 @@ std::unique_ptr CreatePosixEndpoint( EventHandle* handle, PosixEngineClosure* on_shutdown, std::shared_ptr engine, MemoryAllocator&& allocator, const PosixTcpOptions& options) { - GPR_DEBUG_ASSERT(handle != nullptr); + DCHECK_NE(handle, nullptr); return std::make_unique(handle, on_shutdown, std::move(engine), std::move(allocator), options); } diff --git a/src/core/lib/event_engine/posix_engine/posix_endpoint.h b/src/core/lib/event_engine/posix_engine/posix_endpoint.h index 78f6d9bf061..9a0ca6b8db4 100644 --- a/src/core/lib/event_engine/posix_engine/posix_endpoint.h +++ b/src/core/lib/event_engine/posix_engine/posix_endpoint.h @@ -29,6 +29,8 @@ #include "absl/container/flat_hash_map.h" #include "absl/functional/any_invocable.h" #include "absl/hash/hash.h" +#include "absl/log/check.h" +#include "absl/log/log.h" #include "absl/status/status.h" #include "absl/status/statusor.h" @@ -130,7 +132,7 @@ class TcpZerocopySendRecord { // sendmsg() failed or when tcp_write() is done. bool Unref() { const intptr_t prior = ref_.fetch_sub(1, std::memory_order_acq_rel); - GPR_DEBUG_ASSERT(prior > 0); + DCHECK_GT(prior, 0); if (prior == 1) { AllSendsComplete(); return true; @@ -145,9 +147,9 @@ class TcpZerocopySendRecord { }; void DebugAssertEmpty() { - GPR_DEBUG_ASSERT(buf_.Count() == 0); - GPR_DEBUG_ASSERT(buf_.Length() == 0); - GPR_DEBUG_ASSERT(ref_.load(std::memory_order_relaxed) == 0); + DCHECK_EQ(buf_.Count(), 0u); + DCHECK_EQ(buf_.Length(), 0u); + DCHECK_EQ(ref_.load(std::memory_order_relaxed), 0); } // When all sendmsg() calls associated with this tcp_write() have been @@ -155,7 +157,7 @@ class TcpZerocopySendRecord { // for each sendmsg()) and all reference counts have been dropped, drop our // reference to the underlying data since we no longer need it. void AllSendsComplete() { - GPR_DEBUG_ASSERT(ref_.load(std::memory_order_relaxed) == 0); + DCHECK_EQ(ref_.load(std::memory_order_relaxed), 0); buf_.Clear(); } @@ -182,7 +184,7 @@ class TcpZerocopySendCtx { if (send_records_ == nullptr || free_send_records_ == nullptr) { gpr_free(send_records_); gpr_free(free_send_records_); - gpr_log(GPR_INFO, "Disabling TCP TX zerocopy due to memory pressure.\n"); + LOG(INFO) << "Disabling TCP TX zerocopy due to memory pressure.\n"; memory_limited_ = true; enabled_ = false; } else { @@ -236,7 +238,7 @@ class TcpZerocopySendCtx { --last_send_; if (ReleaseSendRecord(last_send_)->Unref()) { // We should still be holding the ref taken by tcp_write(). - GPR_DEBUG_ASSERT(0); + DCHECK(0); } } @@ -274,8 +276,7 @@ class TcpZerocopySendCtx { // same time. void PutSendRecord(TcpZerocopySendRecord* record) { grpc_core::MutexLock lock(&mu_); - GPR_DEBUG_ASSERT(record >= send_records_ && - record < send_records_ + max_sends_); + DCHECK(record >= send_records_ && record < send_records_ + max_sends_); PutSendRecordLocked(record); } @@ -332,7 +333,7 @@ class TcpZerocopySendCtx { zcopy_enobuf_state_ = OptMemState::kCheck; return false; } - GPR_DEBUG_ASSERT(zcopy_enobuf_state_ != OptMemState::kCheck); + DCHECK(zcopy_enobuf_state_ != OptMemState::kCheck); if (zcopy_enobuf_state_ == OptMemState::kFull) { // A previous sendmsg attempt was blocked by ENOBUFS. Return true to // mark the fd as writable so the next write attempt could be made. @@ -423,7 +424,7 @@ class TcpZerocopySendCtx { TcpZerocopySendRecord* ReleaseSendRecordLocked(uint32_t seq) ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_) { auto iter = ctx_lookup_.find(seq); - GPR_DEBUG_ASSERT(iter != ctx_lookup_.end()); + DCHECK(iter != ctx_lookup_.end()); TcpZerocopySendRecord* record = iter->second; ctx_lookup_.erase(iter); return record; @@ -443,7 +444,7 @@ class TcpZerocopySendCtx { void PutSendRecordLocked(TcpZerocopySendRecord* record) ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_) { - GPR_DEBUG_ASSERT(free_send_records_size_ < max_sends_); + DCHECK(free_send_records_size_ < max_sends_); free_send_records_[free_send_records_size_] = record; free_send_records_size_++; } diff --git a/src/core/lib/event_engine/posix_engine/posix_engine.cc b/src/core/lib/event_engine/posix_engine/posix_engine.cc index 275e0dcbf65..f5c1bf6c3d2 100644 --- a/src/core/lib/event_engine/posix_engine/posix_engine.cc +++ b/src/core/lib/event_engine/posix_engine/posix_engine.cc @@ -25,6 +25,8 @@ #include "absl/cleanup/cleanup.h" #include "absl/functional/any_invocable.h" +#include "absl/log/check.h" +#include "absl/log/log.h" #include "absl/status/status.h" #include "absl/strings/match.h" #include "absl/strings/str_cat.h" @@ -50,10 +52,10 @@ #include "src/core/lib/event_engine/tcp_socket_utils.h" #include "src/core/lib/event_engine/trace.h" #include "src/core/lib/event_engine/utils.h" -#include "src/core/lib/gpr/useful.h" #include "src/core/lib/gprpp/crash.h" #include "src/core/lib/gprpp/no_destruct.h" #include "src/core/lib/gprpp/sync.h" +#include "src/core/util/useful.h" #ifdef GRPC_POSIX_SOCKET_TCP #include // IWYU pragma: keep @@ -142,7 +144,7 @@ void AsyncConnect::OnWritable(absl::Status status) absl::StatusOr> ep; mu_.Lock(); - GPR_ASSERT(fd_ != nullptr); + CHECK_NE(fd_, nullptr); fd = std::exchange(fd_, nullptr); bool connect_cancelled = connect_cancelled_; if (fd->IsHandleShutdown() && status.ok()) { @@ -230,7 +232,7 @@ void AsyncConnect::OnWritable(absl::Status status) // your program or another program on the same computer // opened too many network connections. The "easy" fix: // don't do that! - gpr_log(GPR_ERROR, "kernel out of buffers"); + LOG(ERROR) << "kernel out of buffers"; mu_.Unlock(); fd->NotifyOnWrite(on_writable_); // Don't run the cleanup function for this case. @@ -334,7 +336,7 @@ PosixEnginePollerManager::PosixEnginePollerManager( poller_state_(PollerState::kExternal), executor_(nullptr), trigger_shutdown_called_(false) { - GPR_DEBUG_ASSERT(poller_ != nullptr); + DCHECK_NE(poller_, nullptr); } void PosixEnginePollerManager::Run( @@ -351,7 +353,7 @@ void PosixEnginePollerManager::Run(absl::AnyInvocable cb) { } void PosixEnginePollerManager::TriggerShutdown() { - GPR_DEBUG_ASSERT(trigger_shutdown_called_ == false); + DCHECK(trigger_shutdown_called_ == false); trigger_shutdown_called_ = true; // If the poller is external, dont try to shut it down. Otherwise // set poller state to PollerState::kShuttingDown. @@ -467,7 +469,7 @@ PosixEventEngine::~PosixEventEngine() { this, HandleToString(handle).c_str()); } } - GPR_ASSERT(GPR_LIKELY(known_handles_.empty())); + CHECK(GPR_LIKELY(known_handles_.empty())); } timer_manager_->Shutdown(); #if GRPC_PLATFORM_SUPPORTS_POSIX_POLLING @@ -592,7 +594,7 @@ bool PosixEventEngine::CancelConnect(EventEngine::ConnectionHandle handle) { auto it = shard->pending_connections.find(connection_handle); if (it != shard->pending_connections.end()) { ac = it->second; - GPR_ASSERT(ac != nullptr); + CHECK_NE(ac, nullptr); // Trying to acquire ac->mu here would could cause a deadlock because // the OnWritable method tries to acquire the two mutexes used // here in the reverse order. But we dont need to acquire ac->mu before @@ -639,7 +641,7 @@ EventEngine::ConnectionHandle PosixEventEngine::Connect( const EndpointConfig& args, MemoryAllocator memory_allocator, Duration timeout) { #if GRPC_PLATFORM_SUPPORTS_POSIX_POLLING - GPR_ASSERT(poller_manager_ != nullptr); + CHECK_NE(poller_manager_, nullptr); PosixTcpOptions options = TcpOptionsFromEndpointConfig(args); absl::StatusOr socket = PosixSocketWrapper::CreateAndPrepareTcpClientSocket(options, addr); @@ -661,9 +663,9 @@ PosixEventEngine::CreatePosixEndpointFromFd(int fd, const EndpointConfig& config, MemoryAllocator memory_allocator) { #if GRPC_PLATFORM_SUPPORTS_POSIX_POLLING - GPR_DEBUG_ASSERT(fd > 0); + DCHECK_GT(fd, 0); PosixEventPoller* poller = poller_manager_->Poller(); - GPR_DEBUG_ASSERT(poller != nullptr); + DCHECK_NE(poller, nullptr); EventHandle* handle = poller->CreateHandle(fd, "tcp-client", poller->CanTrackErrors()); return CreatePosixEndpoint(handle, nullptr, shared_from_this(), @@ -676,6 +678,22 @@ PosixEventEngine::CreatePosixEndpointFromFd(int fd, #endif // GRPC_PLATFORM_SUPPORTS_POSIX_POLLING } +std::unique_ptr PosixEventEngine::CreateEndpointFromFd( + int fd, const EndpointConfig& config) { + auto options = TcpOptionsFromEndpointConfig(config); + MemoryAllocator allocator; + if (options.memory_allocator_factory != nullptr) { + return CreatePosixEndpointFromFd( + fd, config, + options.memory_allocator_factory->CreateMemoryAllocator( + absl::StrCat("allocator:", fd))); + } + return CreatePosixEndpointFromFd( + fd, config, + options.resource_quota->memory_quota()->CreateMemoryAllocator( + absl::StrCat("allocator:", fd))); +} + absl::StatusOr> PosixEventEngine::CreateListener( Listener::AcceptCallback on_accept, diff --git a/src/core/lib/event_engine/posix_engine/posix_engine.h b/src/core/lib/event_engine/posix_engine/posix_engine.h index 257cd6b34b5..ea426c379c9 100644 --- a/src/core/lib/event_engine/posix_engine/posix_engine.h +++ b/src/core/lib/event_engine/posix_engine/posix_engine.h @@ -172,6 +172,8 @@ class PosixEventEngine final : public PosixEventEngineWithFdSupport, std::unique_ptr CreatePosixEndpointFromFd( int fd, const EndpointConfig& config, MemoryAllocator memory_allocator) override; + std::unique_ptr CreateEndpointFromFd( + int fd, const EndpointConfig& config) override; absl::StatusOr> CreateListener( Listener::AcceptCallback on_accept, diff --git a/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc b/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc index 9930b688024..1ed4218489d 100644 --- a/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +++ b/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc @@ -31,6 +31,7 @@ #include #include "absl/functional/any_invocable.h" +#include "absl/log/check.h" #include "absl/status/status.h" #include "absl/strings/str_cat.h" #include "absl/types/optional.h" @@ -79,7 +80,7 @@ absl::StatusOr PosixEngineListenerImpl::Bind( EventEngine::ResolvedAddress res_addr = addr; EventEngine::ResolvedAddress addr6_v4mapped; int requested_port = ResolvedAddressGetPort(res_addr); - GPR_ASSERT(addr.size() <= EventEngine::ResolvedAddress::MAX_SIZE_BYTES); + CHECK(addr.size() <= EventEngine::ResolvedAddress::MAX_SIZE_BYTES); UnlinkIfUnixDomainSocket(addr); /// Check if this is a wildcard port, and if so, try to keep the port the same @@ -303,7 +304,7 @@ void PosixEngineListenerImpl::AsyncConnectionAcceptor::Shutdown() { absl::Status PosixEngineListenerImpl::Start() { grpc_core::MutexLock lock(&this->mu_); // Start each asynchronous acceptor. - GPR_ASSERT(!this->started_); + CHECK(!this->started_); this->started_ = true; for (auto it = acceptors_.begin(); it != acceptors_.end(); it++) { (*it)->Start(); diff --git a/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc b/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc index 8f127b3f9c6..ebcbec1771b 100644 --- a/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +++ b/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc @@ -22,6 +22,8 @@ #include #include "absl/cleanup/cleanup.h" +#include "absl/log/check.h" +#include "absl/log/log.h" #include "absl/status/status.h" #include "absl/strings/str_cat.h" #include "absl/strings/str_replace.h" @@ -137,7 +139,7 @@ absl::Status PrepareSocket(const PosixTcpOptions& options, ListenerSocket& socket) { ResolvedAddress sockname_temp; int fd = socket.sock.Fd(); - GPR_ASSERT(fd >= 0); + CHECK_GE(fd, 0); bool close_fd = true; socket.zero_copy_enabled = false; socket.port = 0; @@ -155,7 +157,7 @@ absl::Status PrepareSocket(const PosixTcpOptions& options, #ifdef GRPC_LINUX_ERRQUEUE if (!socket.sock.SetSocketZeroCopy().ok()) { // it's not fatal, so just log it. - gpr_log(GPR_DEBUG, "Node does not support SO_ZEROCOPY, continuing."); + VLOG(2) << "Node does not support SO_ZEROCOPY, continuing."; } else { socket.zero_copy_enabled = true; } @@ -226,7 +228,7 @@ absl::StatusOr CreateAndPrepareListenerSocket( socket.addr = addr; } GRPC_RETURN_IF_ERROR(PrepareSocket(options, socket)); - GPR_ASSERT(socket.port > 0); + CHECK_GT(socket.port, 0); return socket; } @@ -243,7 +245,7 @@ absl::StatusOr ListenerContainerAddAllLocalAddresses( auto result = GetUnusedPort(); GRPC_RETURN_IF_ERROR(result.status()); requested_port = *result; - gpr_log(GPR_DEBUG, "Picked unused port %d", requested_port); + VLOG(2) << "Picked unused port " << requested_port; } if (getifaddrs(&ifa) != 0 || ifa == nullptr) { return absl::FailedPreconditionError( @@ -359,8 +361,8 @@ absl::StatusOr ListenerContainerAddWildcardAddresses( } return assigned_port; } else { - GPR_ASSERT(!v6_sock.ok()); - GPR_ASSERT(!v4_sock.ok()); + CHECK(!v6_sock.ok()); + CHECK(!v4_sock.ok()); return absl::FailedPreconditionError(absl::StrCat( "Failed to add any wildcard listeners: ", v6_sock.status().message(), v4_sock.status().message())); diff --git a/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc b/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc index c4045e6c931..987a010084c 100644 --- a/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +++ b/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc @@ -18,6 +18,7 @@ #include #include "absl/cleanup/cleanup.h" +#include "absl/log/log.h" #include "absl/status/statusor.h" #include "absl/strings/str_cat.h" #include "absl/types/optional.h" @@ -27,10 +28,10 @@ #include #include -#include "src/core/lib/gpr/useful.h" #include "src/core/lib/gprpp/crash.h" // IWYU pragma: keep #include "src/core/lib/gprpp/time.h" #include "src/core/lib/iomgr/port.h" +#include "src/core/util/useful.h" #ifdef GRPC_POSIX_SOCKET_UTILS_COMMON #include // IWYU pragma: keep @@ -48,6 +49,7 @@ #include #include +#include "absl/log/check.h" #include "absl/status/status.h" #include @@ -652,7 +654,7 @@ void PosixSocketWrapper::TrySetSocketTcpUserTimeout( } if (newval != timeout) { // Do not fail on failing to set TCP_USER_TIMEOUT - gpr_log(GPR_ERROR, "Failed to set TCP_USER_TIMEOUT"); + LOG(ERROR) << "Failed to set TCP_USER_TIMEOUT"; return; } } @@ -662,7 +664,7 @@ void PosixSocketWrapper::TrySetSocketTcpUserTimeout( // Set a socket using a grpc_socket_mutator absl::Status PosixSocketWrapper::SetSocketMutator( grpc_fd_usage usage, grpc_socket_mutator* mutator) { - GPR_ASSERT(mutator); + CHECK(mutator); if (!grpc_socket_mutator_mutate_fd(mutator, fd_, usage)) { return absl::Status(absl::StatusCode::kInternal, "grpc_socket_mutator failed."); @@ -683,7 +685,7 @@ bool PosixSocketWrapper::IsIpv6LoopbackAvailable() { int fd = socket(AF_INET6, SOCK_STREAM, 0); bool loopback_available = false; if (fd < 0) { - gpr_log(GPR_INFO, "Disabling AF_INET6 sockets because socket() failed."); + LOG(INFO) << "Disabling AF_INET6 sockets because socket() failed."; } else { sockaddr_in6 addr; memset(&addr, 0, sizeof(addr)); diff --git a/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h b/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h index e569919692a..5bc53dbd391 100644 --- a/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +++ b/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h @@ -19,6 +19,7 @@ #include #include +#include "absl/log/check.h" #include "absl/status/status.h" #include "absl/status/statusor.h" @@ -161,7 +162,7 @@ void UnlinkIfUnixDomainSocket( class PosixSocketWrapper { public: - explicit PosixSocketWrapper(int fd) : fd_(fd) { GPR_ASSERT(fd_ > 0); } + explicit PosixSocketWrapper(int fd) : fd_(fd) { CHECK_GT(fd_, 0); } PosixSocketWrapper() : fd_(-1){}; diff --git a/src/core/lib/event_engine/posix_engine/timer.cc b/src/core/lib/event_engine/posix_engine/timer.cc index 0473d3c0a6e..6f152ce494a 100644 --- a/src/core/lib/event_engine/posix_engine/timer.cc +++ b/src/core/lib/event_engine/posix_engine/timer.cc @@ -27,8 +27,8 @@ #include #include "src/core/lib/event_engine/posix_engine/timer_heap.h" -#include "src/core/lib/gpr/useful.h" #include "src/core/lib/gprpp/time.h" +#include "src/core/util/useful.h" namespace grpc_event_engine { namespace experimental { diff --git a/src/core/lib/event_engine/posix_engine/timer_manager.cc b/src/core/lib/event_engine/posix_engine/timer_manager.cc index a9aad6d3c1f..6a48045b0ac 100644 --- a/src/core/lib/event_engine/posix_engine/timer_manager.cc +++ b/src/core/lib/event_engine/posix_engine/timer_manager.cc @@ -21,6 +21,7 @@ #include #include +#include "absl/log/check.h" #include "absl/time/time.h" #include "absl/types/optional.h" @@ -68,8 +69,8 @@ void TimerManager::MainLoop() { grpc_core::Timestamp next = grpc_core::Timestamp::InfFuture(); absl::optional> check_result = timer_list_->TimerCheck(&next); - GPR_ASSERT(check_result.has_value() && - "ERROR: More than one MainLoop is running."); + CHECK(check_result.has_value()) + << "ERROR: More than one MainLoop is running."; bool timers_found = !check_result->empty(); if (timers_found) { RunSomeTimers(std::move(*check_result)); @@ -145,7 +146,7 @@ void TimerManager::Kick() { void TimerManager::RestartPostFork() { grpc_core::MutexLock lock(&mu_); - GPR_ASSERT(GPR_LIKELY(shutdown_)); + CHECK(GPR_LIKELY(shutdown_)); if (grpc_event_engine_timer_trace.enabled()) { gpr_log(GPR_DEBUG, "TimerManager::%p restarting after shutdown", this); } diff --git a/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc b/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc index 314e451c664..1171cb76624 100644 --- a/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +++ b/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc @@ -22,6 +22,7 @@ #include #include "absl/functional/any_invocable.h" +#include "absl/log/log.h" #include #include @@ -48,7 +49,7 @@ void FillGprFromTimestamp(gpr_timespec* gts, const struct timespec* ts) { void DefaultTimestampsCallback(void* /*arg*/, Timestamps* /*ts*/, absl::Status /*shudown_err*/) { - gpr_log(GPR_DEBUG, "Timestamps callback has not been registered"); + VLOG(2) << "Timestamps callback has not been registered"; } // The saved callback function that will be invoked when we get all the diff --git a/src/core/lib/event_engine/query_extensions.h b/src/core/lib/event_engine/query_extensions.h index 677e5b22d8b..2b39214e635 100644 --- a/src/core/lib/event_engine/query_extensions.h +++ b/src/core/lib/event_engine/query_extensions.h @@ -68,6 +68,7 @@ T* QueryExtension(EventEngine::Endpoint* endpoint) { /// supported by the listener. template T* QueryExtension(EventEngine::Listener* listener) { + if (listener == nullptr) return nullptr; return static_cast(listener->QueryExtension(T::EndpointExtensionName())); } @@ -75,6 +76,7 @@ T* QueryExtension(EventEngine::Listener* listener) { /// supported by the EventEngine. template T* QueryExtension(EventEngine* engine) { + if (engine == nullptr) return nullptr; return static_cast(engine->QueryExtension(T::EndpointExtensionName())); } diff --git a/src/core/lib/event_engine/resolved_address.cc b/src/core/lib/event_engine/resolved_address.cc index 35a55e671e9..d6e01da006c 100644 --- a/src/core/lib/event_engine/resolved_address.cc +++ b/src/core/lib/event_engine/resolved_address.cc @@ -16,6 +16,8 @@ #include +#include "absl/log/check.h" + #include #include #include @@ -30,8 +32,8 @@ namespace experimental { EventEngine::ResolvedAddress::ResolvedAddress(const sockaddr* address, socklen_t size) : size_(size) { - GPR_DEBUG_ASSERT(size >= 0); - GPR_ASSERT(static_cast(size) <= sizeof(address_)); + DCHECK_GE(size, 0u); + CHECK(static_cast(size) <= sizeof(address_)); memcpy(&address_, address, size); } diff --git a/src/core/lib/event_engine/slice.cc b/src/core/lib/event_engine/slice.cc index 574fe4fb460..51563f4a0c5 100644 --- a/src/core/lib/event_engine/slice.cc +++ b/src/core/lib/event_engine/slice.cc @@ -19,6 +19,8 @@ #include #include +#include "absl/log/check.h" + #include #include #include @@ -48,7 +50,7 @@ Slice CopyConstructors::FromCopiedString(std::string s) { MutableSlice::MutableSlice(const grpc_slice& slice) : slice_detail::BaseSlice(slice) { - GPR_DEBUG_ASSERT(slice.refcount == nullptr || slice.refcount->IsUnique()); + DCHECK(slice.refcount == nullptr || slice.refcount->IsUnique()); } MutableSlice::~MutableSlice() { grpc_core::CSliceUnref(c_slice()); } diff --git a/src/core/lib/event_engine/tcp_socket_utils.cc b/src/core/lib/event_engine/tcp_socket_utils.cc index 3897290a2c6..8487b092eef 100644 --- a/src/core/lib/event_engine/tcp_socket_utils.cc +++ b/src/core/lib/event_engine/tcp_socket_utils.cc @@ -53,6 +53,7 @@ #include +#include "absl/log/check.h" #include "absl/status/status.h" #include "absl/strings/str_cat.h" #include "absl/strings/str_format.h" @@ -223,7 +224,7 @@ bool ResolvedAddressIsV4Mapped( bool ResolvedAddressToV4Mapped( const EventEngine::ResolvedAddress& resolved_addr, EventEngine::ResolvedAddress* resolved_addr6_out) { - GPR_ASSERT(&resolved_addr != resolved_addr6_out); + CHECK(&resolved_addr != resolved_addr6_out); const sockaddr* addr = resolved_addr.address(); sockaddr_in6* addr6_out = const_cast( reinterpret_cast(resolved_addr6_out->address())); @@ -245,7 +246,8 @@ EventEngine::ResolvedAddress ResolvedAddressMakeWild6(int port) { EventEngine::ResolvedAddress resolved_wild_out; sockaddr_in6* wild_out = reinterpret_cast( const_cast(resolved_wild_out.address())); - GPR_ASSERT(port >= 0 && port < 65536); + CHECK_GE(port, 0); + CHECK_LT(port, 65536); memset(wild_out, 0, sizeof(sockaddr_in6)); wild_out->sin6_family = AF_INET6; wild_out->sin6_port = htons(static_cast(port)); @@ -258,7 +260,8 @@ EventEngine::ResolvedAddress ResolvedAddressMakeWild4(int port) { EventEngine::ResolvedAddress resolved_wild_out; sockaddr_in* wild_out = reinterpret_cast( const_cast(resolved_wild_out.address())); - GPR_ASSERT(port >= 0 && port < 65536); + CHECK_GE(port, 0); + CHECK_LT(port, 65536); memset(wild_out, 0, sizeof(sockaddr_in)); wild_out->sin_family = AF_INET; wild_out->sin_port = htons(static_cast(port)); @@ -294,12 +297,14 @@ void ResolvedAddressSetPort(EventEngine::ResolvedAddress& resolved_addr, sockaddr* addr = const_cast(resolved_addr.address()); switch (addr->sa_family) { case AF_INET: - GPR_ASSERT(port >= 0 && port < 65536); + CHECK_GE(port, 0); + CHECK_LT(port, 65536); (reinterpret_cast(addr))->sin_port = htons(static_cast(port)); return; case AF_INET6: - GPR_ASSERT(port >= 0 && port < 65536); + CHECK_GE(port, 0); + CHECK_LT(port, 65536); (reinterpret_cast(addr))->sin6_port = htons(static_cast(port)); return; @@ -445,7 +450,7 @@ absl::StatusOr URIToResolvedAddress( uri.status().ToString().c_str()); } GRPC_RETURN_IF_ERROR(uri.status()); - GPR_ASSERT(grpc_parse_uri(*uri, &addr)); + CHECK(grpc_parse_uri(*uri, &addr)); return EventEngine::ResolvedAddress( reinterpret_cast(addr.addr), addr.len); } diff --git a/src/core/lib/event_engine/thread_pool/thread_count.h b/src/core/lib/event_engine/thread_pool/thread_count.h index 4e8754095c5..a3842275e7e 100644 --- a/src/core/lib/event_engine/thread_pool/thread_count.h +++ b/src/core/lib/event_engine/thread_pool/thread_count.h @@ -26,9 +26,9 @@ #include #include -#include "src/core/lib/gpr/useful.h" #include "src/core/lib/gprpp/sync.h" #include "src/core/lib/gprpp/time.h" +#include "src/core/util/useful.h" namespace grpc_event_engine { namespace experimental { diff --git a/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc b/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc index 2983a90a3c9..f22f9484d32 100644 --- a/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +++ b/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc @@ -26,6 +26,8 @@ #include #include "absl/functional/any_invocable.h" +#include "absl/log/check.h" +#include "absl/log/log.h" #include "absl/time/clock.h" #include "absl/time/time.h" #include "absl/types/optional.h" @@ -183,7 +185,7 @@ WorkStealingThreadPool::WorkStealingThreadPool(size_t reserve_threads) void WorkStealingThreadPool::Quiesce() { pool_->Quiesce(); } WorkStealingThreadPool::~WorkStealingThreadPool() { - GPR_ASSERT(pool_->IsQuiesced()); + CHECK(pool_->IsQuiesced()); } void WorkStealingThreadPool::Run(absl::AnyInvocable callback) { @@ -226,18 +228,19 @@ void WorkStealingThreadPool::PostforkChild() { pool_->Postfork(); } WorkStealingThreadPool::WorkStealingThreadPoolImpl::WorkStealingThreadPoolImpl( size_t reserve_threads) - : reserve_threads_(reserve_threads), queue_(this), lifeguard_(this) {} + : reserve_threads_(reserve_threads), queue_(this) {} void WorkStealingThreadPool::WorkStealingThreadPoolImpl::Start() { for (size_t i = 0; i < reserve_threads_; i++) { StartThread(); } - lifeguard_.Start(); + grpc_core::MutexLock lock(&lifeguard_ptr_mu_); + lifeguard_ = std::make_unique(this); } void WorkStealingThreadPool::WorkStealingThreadPoolImpl::Run( EventEngine::Closure* closure) { - GPR_DEBUG_ASSERT(quiesced_.load(std::memory_order_relaxed) == false); + CHECK(!IsQuiesced()); if (g_local_queue != nullptr && g_local_queue->owner() == this) { g_local_queue->Add(closure); } else { @@ -265,7 +268,7 @@ void WorkStealingThreadPool::WorkStealingThreadPoolImpl::StartThread() { } void WorkStealingThreadPool::WorkStealingThreadPoolImpl::Quiesce() { - gpr_log(GPR_INFO, "WorkStealingThreadPoolImpl::Quiesce"); + LOG(INFO) << "WorkStealingThreadPoolImpl::Quiesce"; SetShutdown(true); // Wait until all threads have exited. // Note that if this is a threadpool thread then we won't exit this thread @@ -280,9 +283,10 @@ void WorkStealingThreadPool::WorkStealingThreadPoolImpl::Quiesce() { if (!threads_were_shut_down.ok() && g_log_verbose_failures) { DumpStacksAndCrash(); } - GPR_ASSERT(queue_.Empty()); + CHECK(queue_.Empty()); quiesced_.store(true, std::memory_order_relaxed); - lifeguard_.BlockUntilShutdownAndReset(); + grpc_core::MutexLock lock(&lifeguard_ptr_mu_); + lifeguard_.reset(); } bool WorkStealingThreadPool::WorkStealingThreadPoolImpl::SetThrottled( @@ -293,14 +297,14 @@ bool WorkStealingThreadPool::WorkStealingThreadPoolImpl::SetThrottled( void WorkStealingThreadPool::WorkStealingThreadPoolImpl::SetShutdown( bool is_shutdown) { auto was_shutdown = shutdown_.exchange(is_shutdown); - GPR_ASSERT(is_shutdown != was_shutdown); + CHECK(is_shutdown != was_shutdown); work_signal_.SignalAll(); } void WorkStealingThreadPool::WorkStealingThreadPoolImpl::SetForking( bool is_forking) { auto was_forking = forking_.exchange(is_forking); - GPR_ASSERT(is_forking != was_forking); + CHECK(is_forking != was_forking); } bool WorkStealingThreadPool::WorkStealingThreadPoolImpl::IsForking() { @@ -316,7 +320,7 @@ bool WorkStealingThreadPool::WorkStealingThreadPoolImpl::IsQuiesced() { } void WorkStealingThreadPool::WorkStealingThreadPoolImpl::PrepareFork() { - gpr_log(GPR_INFO, "WorkStealingThreadPoolImpl::PrepareFork"); + LOG(INFO) << "WorkStealingThreadPoolImpl::PrepareFork"; SetForking(true); work_signal_.SignalAll(); auto threads_were_shut_down = living_thread_count_.BlockUntilThreadCount( @@ -324,7 +328,8 @@ void WorkStealingThreadPool::WorkStealingThreadPoolImpl::PrepareFork() { if (!threads_were_shut_down.ok() && g_log_verbose_failures) { DumpStacksAndCrash(); } - lifeguard_.BlockUntilShutdownAndReset(); + grpc_core::MutexLock lock(&lifeguard_ptr_mu_); + lifeguard_.reset(); } void WorkStealingThreadPool::WorkStealingThreadPoolImpl::Postfork() { @@ -373,9 +378,7 @@ WorkStealingThreadPool::WorkStealingThreadPoolImpl::Lifeguard::Lifeguard( .set_max_backoff(kLifeguardMaxSleepBetweenChecks) .set_multiplier(1.3)), lifeguard_should_shut_down_(std::make_unique()), - lifeguard_is_shut_down_(std::make_unique()) {} - -void WorkStealingThreadPool::WorkStealingThreadPoolImpl::Lifeguard::Start() { + lifeguard_is_shut_down_(std::make_unique()) { // lifeguard_running_ is set early to avoid a quiesce race while the // lifeguard is still starting up. lifeguard_running_.store(true); @@ -410,8 +413,7 @@ void WorkStealingThreadPool::WorkStealingThreadPoolImpl::Lifeguard:: lifeguard_is_shut_down_->Notify(); } -void WorkStealingThreadPool::WorkStealingThreadPoolImpl::Lifeguard:: - BlockUntilShutdownAndReset() { +WorkStealingThreadPool::WorkStealingThreadPoolImpl::Lifeguard::~Lifeguard() { lifeguard_should_shut_down_->Notify(); while (lifeguard_running_.load(std::memory_order_relaxed)) { GRPC_LOG_EVERY_N_SEC_DELAYED(kBlockingQuiesceLogRateSeconds, GPR_DEBUG, @@ -507,7 +509,7 @@ void WorkStealingThreadPool::ThreadState::ThreadBody() { } else if (pool_->IsShutdown()) { FinishDraining(); } - GPR_ASSERT(g_local_queue->Empty()); + CHECK(g_local_queue->Empty()); pool_->theft_registry()->Unenroll(g_local_queue); delete g_local_queue; if (g_log_verbose_failures) { diff --git a/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h b/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h index 3dcc55aab6c..7543db92900 100644 --- a/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +++ b/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h @@ -155,11 +155,7 @@ class WorkStealingThreadPool final : public ThreadPool { class Lifeguard { public: explicit Lifeguard(WorkStealingThreadPoolImpl* pool); - // Start the lifeguard thread. - void Start(); - // Block until the lifeguard thread is shut down. - // Afterwards, reset the lifeguard state so it can start again cleanly. - void BlockUntilShutdownAndReset(); + ~Lifeguard(); private: // The main body of the lifeguard thread. @@ -194,7 +190,8 @@ class WorkStealingThreadPool final : public ThreadPool { // at a time. std::atomic throttled_{false}; WorkSignal work_signal_; - Lifeguard lifeguard_; + grpc_core::Mutex lifeguard_ptr_mu_; + std::unique_ptr lifeguard_ ABSL_GUARDED_BY(lifeguard_ptr_mu_); // Set of threads for verbose failure debugging grpc_core::Mutex thd_set_mu_; absl::flat_hash_set thds_ ABSL_GUARDED_BY(thd_set_mu_); diff --git a/src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc b/src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc index 673e3e29d25..37a8f85cc5c 100644 --- a/src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc +++ b/src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc @@ -23,6 +23,7 @@ #include #include "absl/functional/any_invocable.h" +#include "absl/log/check.h" #include "absl/status/status.h" #include "absl/strings/str_format.h" @@ -132,8 +133,8 @@ class GrpcPolledFdWindows : public GrpcPolledFd { shutdown_called_); grpc_core::CSliceUnref(read_buf_); grpc_core::CSliceUnref(write_buf_); - GPR_ASSERT(read_closure_ == nullptr); - GPR_ASSERT(write_closure_ == nullptr); + CHECK(read_closure_ == nullptr); + CHECK(write_closure_ == nullptr); if (!shutdown_called_) { winsocket_->Shutdown(DEBUG_LOCATION, "~GrpcPolledFdWindows"); } @@ -141,15 +142,15 @@ class GrpcPolledFdWindows : public GrpcPolledFd { void RegisterForOnReadableLocked( absl::AnyInvocable read_closure) override { - GPR_ASSERT(read_closure_ == nullptr); + CHECK(read_closure_ == nullptr); read_closure_ = std::move(read_closure); grpc_core::CSliceUnref(read_buf_); - GPR_ASSERT(!read_buf_has_data_); + CHECK(!read_buf_has_data_); read_buf_ = GRPC_SLICE_MALLOC(kReadBufferSize); if (connect_done_) { ContinueRegisterForOnReadableLocked(); } else { - GPR_ASSERT(pending_continue_register_for_on_readable_locked_ == false); + CHECK(pending_continue_register_for_on_readable_locked_ == false); pending_continue_register_for_on_readable_locked_ = true; } } @@ -160,16 +161,16 @@ class GrpcPolledFdWindows : public GrpcPolledFd { GRPC_ARES_RESOLVER_TRACE_LOG( "fd:|%s| RegisterForOnWriteableLocked called", GetName()); } else { - GPR_ASSERT(socket_type_ == SOCK_STREAM); + CHECK(socket_type_ == SOCK_STREAM); GRPC_ARES_RESOLVER_TRACE_LOG( "fd:|%s| RegisterForOnWriteableLocked called tcp_write_state_: %d " "connect_done_: %d", GetName(), tcp_write_state_, connect_done_); } - GPR_ASSERT(write_closure_ == nullptr); + CHECK(write_closure_ == nullptr); write_closure_ = std::move(write_closure); if (!connect_done_) { - GPR_ASSERT(!pending_continue_register_for_on_writeable_locked_); + CHECK(!pending_continue_register_for_on_writeable_locked_); pending_continue_register_for_on_writeable_locked_ = true; } else { ContinueRegisterForOnWriteableLocked(); @@ -179,7 +180,7 @@ class GrpcPolledFdWindows : public GrpcPolledFd { bool IsFdStillReadableLocked() override { return read_buf_has_data_; } bool ShutdownLocked(absl::Status error) override { - GPR_ASSERT(!shutdown_called_); + CHECK(!shutdown_called_); if (!absl::IsCancelled(error)) { return false; } @@ -223,7 +224,7 @@ class GrpcPolledFdWindows : public GrpcPolledFd { // c-ares overloads this recv_from virtual socket function to receive // data on both UDP and TCP sockets, and from is nullptr for TCP. if (from != nullptr) { - GPR_ASSERT(*from_len <= recv_from_source_addr_len_); + CHECK(*from_len <= recv_from_source_addr_len_); memcpy(from, &recv_from_source_addr_, recv_from_source_addr_len_); *from_len = recv_from_source_addr_len_; } @@ -291,7 +292,7 @@ class GrpcPolledFdWindows : public GrpcPolledFd { "fd:|%s| ContinueRegisterForOnReadableLocked " "wsa_connect_error_:%d", GetName(), wsa_connect_error_); - GPR_ASSERT(connect_done_); + CHECK(connect_done_); if (wsa_connect_error_ != 0) { ScheduleAndNullReadClosure(GRPC_WSA_ERROR(wsa_connect_error_, "connect")); return; @@ -328,7 +329,7 @@ class GrpcPolledFdWindows : public GrpcPolledFd { "fd:|%s| ContinueRegisterForOnWriteableLocked " "wsa_connect_error_:%d", GetName(), wsa_connect_error_); - GPR_ASSERT(connect_done_); + CHECK(connect_done_); if (wsa_connect_error_ != 0) { ScheduleAndNullWriteClosure( GRPC_WSA_ERROR(wsa_connect_error_, "connect")); @@ -338,7 +339,7 @@ class GrpcPolledFdWindows : public GrpcPolledFd { ScheduleAndNullWriteClosure(absl::OkStatus()); return; } - GPR_ASSERT(socket_type_ == SOCK_STREAM); + CHECK(socket_type_ == SOCK_STREAM); int wsa_error_code = 0; switch (tcp_write_state_) { case WRITE_IDLE: @@ -386,7 +387,7 @@ class GrpcPolledFdWindows : public GrpcPolledFd { // Therefore, the sendv handler for UDP sockets must only attempt // to write everything inline. GRPC_ARES_RESOLVER_TRACE_LOG("fd:|%s| SendVUDP called", GetName()); - GPR_ASSERT(GRPC_SLICE_LENGTH(write_buf_) == 0); + CHECK_EQ(GRPC_SLICE_LENGTH(write_buf_), 0); grpc_core::CSliceUnref(write_buf_); write_buf_ = FlattenIovec(iov, iov_count); DWORD bytes_sent = 0; @@ -434,12 +435,12 @@ class GrpcPolledFdWindows : public GrpcPolledFd { // send again. If c-ares still needs to send even more data, we'll get // to it eventually. grpc_slice currently_attempted = FlattenIovec(iov, iov_count); - GPR_ASSERT(GRPC_SLICE_LENGTH(currently_attempted) >= - GRPC_SLICE_LENGTH(write_buf_)); + CHECK(GRPC_SLICE_LENGTH(currently_attempted) >= + GRPC_SLICE_LENGTH(write_buf_)); ares_ssize_t total_sent = 0; for (size_t i = 0; i < GRPC_SLICE_LENGTH(write_buf_); i++) { - GPR_ASSERT(GRPC_SLICE_START_PTR(currently_attempted)[i] == - GRPC_SLICE_START_PTR(write_buf_)[i]); + CHECK(GRPC_SLICE_START_PTR(currently_attempted)[i] == + GRPC_SLICE_START_PTR(write_buf_)[i]); total_sent++; } grpc_core::CSliceUnref(currently_attempted); @@ -458,9 +459,9 @@ class GrpcPolledFdWindows : public GrpcPolledFd { " pending_register_for_writeable:%d", GetName(), pending_continue_register_for_on_readable_locked_, pending_continue_register_for_on_writeable_locked_); - GPR_ASSERT(!connect_done_); + CHECK(!connect_done_); connect_done_ = true; - GPR_ASSERT(wsa_connect_error_ == 0); + CHECK_EQ(wsa_connect_error_, 0); if (shutdown_called_) { wsa_connect_error_ = WSA_OPERATION_ABORTED; } else { @@ -469,7 +470,7 @@ class GrpcPolledFdWindows : public GrpcPolledFd { BOOL wsa_success = WSAGetOverlappedResult( winsocket_->raw_socket(), winsocket_->write_info()->overlapped(), &transferred_bytes, FALSE, &flags); - GPR_ASSERT(transferred_bytes == 0); + CHECK_EQ(transferred_bytes, 0); if (!wsa_success) { wsa_connect_error_ = WSAGetLastError(); char* msg = gpr_format_message(wsa_connect_error_); @@ -491,8 +492,8 @@ class GrpcPolledFdWindows : public GrpcPolledFd { int ConnectUDP(WSAErrorContext* wsa_error_ctx, const struct sockaddr* target, ares_socklen_t target_len) { GRPC_ARES_RESOLVER_TRACE_LOG("fd:%s ConnectUDP", GetName()); - GPR_ASSERT(!connect_done_); - GPR_ASSERT(wsa_connect_error_ == 0); + CHECK(!connect_done_); + CHECK_EQ(wsa_connect_error_, 0); SOCKET s = winsocket_->raw_socket(); int out = WSAConnect(s, target, target_len, nullptr, nullptr, nullptr, nullptr); @@ -620,7 +621,7 @@ class GrpcPolledFdWindows : public GrpcPolledFd { void OnIocpWriteable() { grpc_core::MutexLock lock(mu_); GRPC_ARES_RESOLVER_TRACE_LOG("OnIocpWriteableInner. fd:|%s|", GetName()); - GPR_ASSERT(socket_type_ == SOCK_STREAM); + CHECK(socket_type_ == SOCK_STREAM); absl::Status error; if (winsocket_->write_info()->result().wsa_error != 0) { error = GRPC_WSA_ERROR(winsocket_->write_info()->result().wsa_error, @@ -631,7 +632,7 @@ class GrpcPolledFdWindows : public GrpcPolledFd { GetName(), winsocket_->write_info()->result().wsa_error, grpc_core::StatusToString(error).c_str()); } - GPR_ASSERT(tcp_write_state_ == WRITE_PENDING); + CHECK(tcp_write_state_ == WRITE_PENDING); if (error.ok()) { tcp_write_state_ = WRITE_WAITING_FOR_VERIFICATION_UPON_RETRY; write_buf_ = grpc_slice_sub_no_ref( @@ -712,7 +713,7 @@ class CustomSockFuncs { GRPC_ARES_RESOLVER_TRACE_LOG( "fd:|%s| created with params af:%d type:%d protocol:%d", polled_fd->GetName(), af, type, protocol); - GPR_ASSERT(self->sockets_.insert({s, std::move(polled_fd)}).second); + CHECK(self->sockets_.insert({s, std::move(polled_fd)}).second); return s; } @@ -722,7 +723,7 @@ class CustomSockFuncs { GrpcPolledFdFactoryWindows* self = static_cast(user_data); auto it = self->sockets_.find(as); - GPR_ASSERT(it != self->sockets_.end()); + CHECK(it != self->sockets_.end()); return it->second->Connect(&wsa_error_ctx, target, target_len); } @@ -732,7 +733,7 @@ class CustomSockFuncs { GrpcPolledFdFactoryWindows* self = static_cast(user_data); auto it = self->sockets_.find(as); - GPR_ASSERT(it != self->sockets_.end()); + CHECK(it != self->sockets_.end()); return it->second->SendV(&wsa_error_ctx, iov, iovec_count); } @@ -743,7 +744,7 @@ class CustomSockFuncs { GrpcPolledFdFactoryWindows* self = static_cast(user_data); auto it = self->sockets_.find(as); - GPR_ASSERT(it != self->sockets_.end()); + CHECK(it != self->sockets_.end()); return it->second->RecvFrom(&wsa_error_ctx, data, data_len, flags, from, from_len); } @@ -802,7 +803,7 @@ void GrpcPolledFdFactoryWindows::Initialize(grpc_core::Mutex* mutex, std::unique_ptr GrpcPolledFdFactoryWindows::NewGrpcPolledFdLocked( ares_socket_t as) { auto it = sockets_.find(as); - GPR_ASSERT(it != sockets_.end()); + CHECK(it != sockets_.end()); return std::make_unique(it->second.get()); } diff --git a/src/core/lib/event_engine/windows/iocp.cc b/src/core/lib/event_engine/windows/iocp.cc index 48d2db4fff3..c3b9a37e87f 100644 --- a/src/core/lib/event_engine/windows/iocp.cc +++ b/src/core/lib/event_engine/windows/iocp.cc @@ -17,6 +17,7 @@ #include +#include "absl/log/check.h" #include "absl/strings/str_format.h" #include @@ -37,7 +38,7 @@ IOCP::IOCP(ThreadPool* thread_pool) noexcept : thread_pool_(thread_pool), iocp_handle_(CreateIoCompletionPort(INVALID_HANDLE_VALUE, nullptr, (ULONG_PTR) nullptr, 0)) { - GPR_ASSERT(iocp_handle_); + CHECK(iocp_handle_); WSASocketFlagsInit(); } @@ -54,7 +55,7 @@ std::unique_ptr IOCP::Watch(SOCKET socket) { GRPC_WSA_ERROR(WSAGetLastError(), "Unable to add socket to iocp") .ToString()); } - GPR_ASSERT(ret == iocp_handle_); + CHECK(ret == iocp_handle_); return wrapped_socket; } @@ -65,7 +66,7 @@ void IOCP::Shutdown() { while (outstanding_kicks_.load() > 0) { Work(std::chrono::hours(42), []() {}); } - GPR_ASSERT(CloseHandle(iocp_handle_)); + CHECK(CloseHandle(iocp_handle_)); } Poller::WorkResult IOCP::Work(EventEngine::Duration timeout, @@ -81,7 +82,8 @@ Poller::WorkResult IOCP::Work(EventEngine::Duration timeout, GRPC_EVENT_ENGINE_POLLER_TRACE("IOCP::%p deadline exceeded", this); return Poller::WorkResult::kDeadlineExceeded; } - GPR_ASSERT(completion_key && overlapped); + CHECK(completion_key); + CHECK(overlapped); if (overlapped == &kick_overlap_) { GRPC_EVENT_ENGINE_POLLER_TRACE("IOCP::%p kicked", this); outstanding_kicks_.fetch_sub(1); @@ -100,7 +102,7 @@ Poller::WorkResult IOCP::Work(EventEngine::Duration timeout, // about to register for notification of an overlapped event. auto* socket = reinterpret_cast(completion_key); WinSocket::OpState* info = socket->GetOpInfoForOverlapped(overlapped); - GPR_ASSERT(info != nullptr); + CHECK_NE(info, nullptr); info->GetOverlappedResult(); info->SetReady(); schedule_poll_again(); @@ -109,9 +111,9 @@ Poller::WorkResult IOCP::Work(EventEngine::Duration timeout, void IOCP::Kick() { outstanding_kicks_.fetch_add(1); - GPR_ASSERT(PostQueuedCompletionStatus( - iocp_handle_, 0, reinterpret_cast(&kick_token_), - &kick_overlap_)); + CHECK(PostQueuedCompletionStatus(iocp_handle_, 0, + reinterpret_cast(&kick_token_), + &kick_overlap_)); } DWORD IOCP::GetDefaultSocketFlags() { diff --git a/src/core/lib/event_engine/windows/win_socket.cc b/src/core/lib/event_engine/windows/win_socket.cc index da919e2ba7c..d6a75770a4b 100644 --- a/src/core/lib/event_engine/windows/win_socket.cc +++ b/src/core/lib/event_engine/windows/win_socket.cc @@ -14,6 +14,8 @@ #include #ifdef GPR_WINDOWS +#include "absl/log/check.h" + #include #include @@ -45,7 +47,7 @@ WinSocket::WinSocket(SOCKET socket, ThreadPool* thread_pool) noexcept write_info_(this) {} WinSocket::~WinSocket() { - GPR_ASSERT(is_shutdown_.load()); + CHECK(is_shutdown_.load()); GRPC_EVENT_ENGINE_ENDPOINT_TRACE("WinSocket::%p destroyed", this); } @@ -94,7 +96,7 @@ void WinSocket::NotifyOnReady(OpState& info, EventEngine::Closure* closure) { return; }; // It is an error if any notification is already registered for this socket. - GPR_ASSERT(std::exchange(info.closure_, closure) == nullptr); + CHECK_EQ(std::exchange(info.closure_, closure), nullptr); } void WinSocket::NotifyOnRead(EventEngine::Closure* on_read) { @@ -106,11 +108,11 @@ void WinSocket::NotifyOnWrite(EventEngine::Closure* on_write) { } void WinSocket::UnregisterReadCallback() { - GPR_ASSERT(std::exchange(read_info_.closure_, nullptr) != nullptr); + CHECK_NE(std::exchange(read_info_.closure_, nullptr), nullptr); } void WinSocket::UnregisterWriteCallback() { - GPR_ASSERT(std::exchange(write_info_.closure_, nullptr) != nullptr); + CHECK_NE(std::exchange(write_info_.closure_, nullptr), nullptr); } // ---- WinSocket::OpState ---- @@ -124,7 +126,7 @@ void WinSocket::OpState::SetReady() { auto* closure = std::exchange(closure_, nullptr); // If an IOCP event is returned for a socket, and no callback has been // registered for notification, this is invalid usage. - GPR_ASSERT(closure != nullptr); + CHECK_NE(closure, nullptr); win_socket_->thread_pool_->Run(closure); } diff --git a/src/core/lib/event_engine/windows/windows_endpoint.cc b/src/core/lib/event_engine/windows/windows_endpoint.cc index 840973be74d..c3edbebaa47 100644 --- a/src/core/lib/event_engine/windows/windows_endpoint.cc +++ b/src/core/lib/event_engine/windows/windows_endpoint.cc @@ -17,6 +17,7 @@ #include "absl/cleanup/cleanup.h" #include "absl/functional/any_invocable.h" +#include "absl/log/check.h" #include "absl/status/status.h" #include "absl/strings/str_format.h" @@ -80,12 +81,12 @@ void WindowsEndpoint::AsyncIOState::DoTcpRead(SliceBuffer* buffer) { GRPC_EVENT_ENGINE_ENDPOINT_TRACE("WindowsEndpoint::%p reading", endpoint); if (socket->IsShutdown()) { socket->read_info()->SetErrorStatus( - absl::UnavailableError("Socket is shutting down.")); + absl::InternalError("Socket is shutting down.")); thread_pool->Run(&handle_read_event); return; } // Prepare the WSABUF struct - GPR_ASSERT(buffer->Count() <= kMaxWSABUFCount); + CHECK(buffer->Count() <= kMaxWSABUFCount); WSABUF wsa_buffers[kMaxWSABUFCount]; for (size_t i = 0; i < buffer->Count(); i++) { auto& slice = buffer->MutableSliceAt(i); @@ -130,7 +131,7 @@ bool WindowsEndpoint::Read(absl::AnyInvocable on_read, SliceBuffer* buffer, const ReadArgs* /* args */) { if (io_state_->socket->IsShutdown()) { io_state_->thread_pool->Run([on_read = std::move(on_read)]() mutable { - on_read(absl::UnavailableError("Socket is shutting down.")); + on_read(absl::InternalError("Socket is shutting down.")); }); return false; } @@ -153,7 +154,7 @@ bool WindowsEndpoint::Write(absl::AnyInvocable on_writable, if (io_state_->socket->IsShutdown()) { io_state_->thread_pool->Run( [on_writable = std::move(on_writable)]() mutable { - on_writable(absl::UnavailableError("Socket is shutting down.")); + on_writable(absl::InternalError("Socket is shutting down.")); }); return false; } @@ -164,11 +165,11 @@ bool WindowsEndpoint::Write(absl::AnyInvocable on_writable, peer_address_string_.c_str(), str.length(), str.data()); } } - GPR_ASSERT(data->Count() <= UINT_MAX); + CHECK(data->Count() <= UINT_MAX); absl::InlinedVector buffers(data->Count()); for (size_t i = 0; i < data->Count(); i++) { auto& slice = data->MutableSliceAt(i); - GPR_ASSERT(slice.size() <= ULONG_MAX); + CHECK(slice.size() <= ULONG_MAX); buffers[i].len = slice.size(); buffers[i].buf = (char*)slice.begin(); } @@ -299,14 +300,14 @@ void WindowsEndpoint::HandleReadClosure::Run() { DumpSliceBuffer(buffer_, absl::StrFormat("WindowsEndpoint::%p READ", io_state->endpoint)); } - status = absl::UnavailableError("End of TCP stream"); + status = absl::InternalError("End of TCP stream"); grpc_core::StatusSetInt(&status, grpc_core::StatusIntProperty::kRpcStatus, GRPC_STATUS_UNAVAILABLE); buffer_->Swap(last_read_buffer_); return ResetAndReturnCallback()(status); } - GPR_DEBUG_ASSERT(result.bytes_transferred > 0); - GPR_DEBUG_ASSERT(result.bytes_transferred <= buffer_->Length()); + DCHECK_GT(result.bytes_transferred, 0); + DCHECK(result.bytes_transferred <= buffer_->Length()); buffer_->MoveFirstNBytesIntoSliceBuffer(result.bytes_transferred, last_read_buffer_); if (buffer_->Length() == 0) { @@ -332,9 +333,9 @@ bool WindowsEndpoint::HandleReadClosure::MaybeFinishIfDataHasAlreadyBeenRead() { void WindowsEndpoint::HandleReadClosure::DonateSpareSlices( SliceBuffer* buffer) { // Donee buffer must be empty. - GPR_ASSERT(buffer->Length() == 0); + CHECK_EQ(buffer->Length(), 0); // HandleReadClosure must be in the reset state. - GPR_ASSERT(buffer_ == nullptr); + CHECK_EQ(buffer_, nullptr); buffer->Swap(last_read_buffer_); } @@ -352,7 +353,7 @@ void WindowsEndpoint::HandleWriteClosure::Run() { if (result.wsa_error != 0) { status = GRPC_WSA_ERROR(result.wsa_error, "WSASend"); } else { - GPR_ASSERT(result.bytes_transferred == buffer_->Length()); + CHECK(result.bytes_transferred == buffer_->Length()); } return ResetAndReturnCallback()(status); } diff --git a/src/core/lib/event_engine/windows/windows_engine.cc b/src/core/lib/event_engine/windows/windows_engine.cc index f4431ae4ef4..69a0f94ff53 100644 --- a/src/core/lib/event_engine/windows/windows_engine.cc +++ b/src/core/lib/event_engine/windows/windows_engine.cc @@ -17,6 +17,7 @@ #include +#include "absl/log/check.h" #include "absl/status/status.h" #include "absl/status/statusor.h" #include "absl/strings/string_view.h" @@ -114,7 +115,7 @@ WindowsEventEngine::WindowsEventEngine() iocp_worker_(thread_pool_.get(), &iocp_) { WSADATA wsaData; int status = WSAStartup(MAKEWORD(2, 0), &wsaData); - GPR_ASSERT(status == 0); + CHECK_EQ(status, 0); } WindowsEventEngine::~WindowsEventEngine() { @@ -143,13 +144,13 @@ WindowsEventEngine::~WindowsEventEngine() { task_mu_.Lock(); } } - GPR_ASSERT(GPR_LIKELY(known_handles_.empty())); + CHECK(GPR_LIKELY(known_handles_.empty())); task_mu_.Unlock(); } iocp_.Kick(); iocp_worker_.WaitForShutdown(); iocp_.Shutdown(); - GPR_ASSERT(WSACleanup() == 0); + CHECK_EQ(WSACleanup(), 0); timer_manager_.Shutdown(); thread_pool_->Quiesce(); } @@ -369,7 +370,7 @@ EventEngine::ConnectionHandle WindowsEventEngine::Connect( auto connection_state = std::make_shared(); grpc_core::MutexLock lock(&connection_state->mu); connection_state->socket = iocp_.Watch(sock); - GPR_ASSERT(connection_state->socket != nullptr); + CHECK(connection_state->socket != nullptr); auto* info = connection_state->socket->write_info(); connection_state->address = address; connection_state->allocator = std::move(memory_allocator); @@ -455,8 +456,8 @@ bool WindowsEventEngine::CancelConnectFromDeadlineTimer( // Erase the connection handle, which is guaranteed to exist. { grpc_core::MutexLock lock(&connection_mu_); - GPR_ASSERT(known_connection_handles_.erase( - connection_state->connection_handle) == 1); + CHECK(known_connection_handles_.erase( + connection_state->connection_handle) == 1); } return CancelConnectInternalStateLocked(connection_state); } diff --git a/src/core/lib/event_engine/windows/windows_listener.cc b/src/core/lib/event_engine/windows/windows_listener.cc index 868119f4525..848258aca96 100644 --- a/src/core/lib/event_engine/windows/windows_listener.cc +++ b/src/core/lib/event_engine/windows/windows_listener.cc @@ -15,6 +15,7 @@ #ifdef GPR_WINDOWS +#include "absl/log/check.h" #include "absl/status/status.h" #include "absl/strings/str_format.h" @@ -47,7 +48,7 @@ WindowsEventEngineListener::SinglePortSocketListener::AsyncIOState:: void WindowsEventEngineListener::SinglePortSocketListener:: OnAcceptCallbackWrapper::Run() { - GPR_ASSERT(io_state_ != nullptr); + CHECK_NE(io_state_, nullptr); grpc_core::ReleasableMutexLock lock(&io_state_->mu); if (io_state_->listener_socket->IsShutdown()) { GRPC_EVENT_ENGINE_TRACE( @@ -124,7 +125,7 @@ WindowsEventEngineListener::SinglePortSocketListener::Create( } auto result = SinglePortSocketListener::PrepareListenerSocket(sock, addr); GRPC_RETURN_IF_ERROR(result.status()); - GPR_ASSERT(result->port >= 0); + CHECK_GE(result->port, 0); // Using `new` to access non-public constructor return absl::WrapUnique(new SinglePortSocketListener( listener, AcceptEx, /*win_socket=*/listener->iocp_->Watch(sock), @@ -190,8 +191,8 @@ void WindowsEventEngineListener::SinglePortSocketListener:: ABSL_EXCLUSIVE_LOCKS_REQUIRED(io_state_->mu) { if (do_close_socket) closesocket(io_state_->accept_socket); io_state_->accept_socket = INVALID_SOCKET; - GPR_ASSERT(GRPC_LOG_IF_ERROR("SinglePortSocketListener::Start", - StartLocked())); + CHECK(GRPC_LOG_IF_ERROR("SinglePortSocketListener::Start", + StartLocked())); }; const auto& overlapped_result = io_state_->listener_socket->read_info()->result(); @@ -265,7 +266,7 @@ absl::StatusOr absl::Status { - GPR_ASSERT(!error.ok()); + CHECK(!error.ok()); auto addr_uri = ResolvedAddressToURI(addr); error = grpc_error_set_int( grpc_error_set_str( @@ -374,7 +375,7 @@ absl::StatusOr WindowsEventEngineListener::Bind( } absl::Status WindowsEventEngineListener::Start() { - GPR_ASSERT(!started_.exchange(true)); + CHECK(!started_.exchange(true)); grpc_core::MutexLock lock(&port_listeners_mu_); for (auto& port_listener : port_listeners_) { GRPC_RETURN_IF_ERROR(port_listener->Start()); diff --git a/src/core/lib/experiments/config.cc b/src/core/lib/experiments/config.cc index 15537dbb198..ca0ab151429 100644 --- a/src/core/lib/experiments/config.cc +++ b/src/core/lib/experiments/config.cc @@ -23,6 +23,7 @@ #include #include "absl/functional/any_invocable.h" +#include "absl/log/check.h" #include "absl/strings/str_join.h" #include "absl/strings/str_split.h" #include "absl/strings/string_view.h" @@ -146,7 +147,7 @@ GPR_ATTRIBUTE_NOINLINE Experiments LoadExperimentsFromConfigVariableInner() { j++) { // Require that we can check dependent requirements with a linear sweep // (implies the experiments generator must DAG sort the experiments) - GPR_ASSERT(g_experiment_metadata[i].required_experiments[j] < i); + CHECK(g_experiment_metadata[i].required_experiments[j] < i); if (!experiments .enabled[g_experiment_metadata[i].required_experiments[j]]) { experiments.enabled[i] = false; @@ -244,11 +245,11 @@ void PrintExperimentsList() { } void ForceEnableExperiment(absl::string_view experiment, bool enable) { - GPR_ASSERT(Loaded()->load(std::memory_order_relaxed) == false); + CHECK(Loaded()->load(std::memory_order_relaxed) == false); for (size_t i = 0; i < kNumExperiments; i++) { if (g_experiment_metadata[i].name != experiment) continue; if (ForcedExperiments()[i].forced) { - GPR_ASSERT(ForcedExperiments()[i].value == enable); + CHECK(ForcedExperiments()[i].value == enable); } else { ForcedExperiments()[i].forced = true; ForcedExperiments()[i].value = enable; diff --git a/src/core/lib/experiments/experiments.cc b/src/core/lib/experiments/experiments.cc index cda1305ec56..468884ec583 100644 --- a/src/core/lib/experiments/experiments.cc +++ b/src/core/lib/experiments/experiments.cc @@ -70,14 +70,6 @@ const char* const description_peer_state_based_framing = "on the peer's memory pressure which is reflected in its max http2 frame " "size."; const char* const additional_constraints_peer_state_based_framing = "{}"; -const char* const description_pending_queue_cap = - "In the sync & async apis (but not the callback api), cap the number of " - "received but unrequested requests in the server for each call type. A " - "received message is one that was read from the wire on the server. A " - "requested message is one explicitly requested by the application using " - "grpc_server_request_call or grpc_server_request_registered_call (or their " - "wrappers in the C++ API)."; -const char* const additional_constraints_pending_queue_cap = "{}"; const char* const description_pick_first_new = "New pick_first impl with memory reduction."; const char* const additional_constraints_pick_first_new = "{}"; @@ -88,23 +80,17 @@ const char* const additional_constraints_promise_based_client_call = "{}"; const uint8_t required_experiments_promise_based_client_call[] = { static_cast(grpc_core::kExperimentIdEventEngineClient), static_cast(grpc_core::kExperimentIdEventEngineListener)}; -const char* const description_promise_based_server_call = - "If set, use the new gRPC promise based call code when it's appropriate " - "(ie when all filters in a stack are promise based)"; -const char* const additional_constraints_promise_based_server_call = "{}"; const char* const description_chaotic_good = "If set, enable the chaotic good load transport (this is mostly here for " "testing)"; const char* const additional_constraints_chaotic_good = "{}"; const uint8_t required_experiments_chaotic_good[] = { - static_cast(grpc_core::kExperimentIdPromiseBasedClientCall), - static_cast(grpc_core::kExperimentIdPromiseBasedServerCall)}; + static_cast(grpc_core::kExperimentIdPromiseBasedClientCall)}; const char* const description_promise_based_inproc_transport = "Use promises for the in-process transport."; const char* const additional_constraints_promise_based_inproc_transport = "{}"; const uint8_t required_experiments_promise_based_inproc_transport[] = { - static_cast(grpc_core::kExperimentIdPromiseBasedClientCall), - static_cast(grpc_core::kExperimentIdPromiseBasedServerCall)}; + static_cast(grpc_core::kExperimentIdPromiseBasedClientCall)}; const char* const description_rstpit = "On RST_STREAM on a server, reduce MAX_CONCURRENT_STREAMS for a short " "duration"; @@ -177,22 +163,18 @@ const ExperimentMetadata g_experiment_metadata[] = { nullptr, 0, false, true}, {"peer_state_based_framing", description_peer_state_based_framing, additional_constraints_peer_state_based_framing, nullptr, 0, false, true}, - {"pending_queue_cap", description_pending_queue_cap, - additional_constraints_pending_queue_cap, nullptr, 0, true, true}, {"pick_first_new", description_pick_first_new, additional_constraints_pick_first_new, nullptr, 0, true, true}, {"promise_based_client_call", description_promise_based_client_call, additional_constraints_promise_based_client_call, required_experiments_promise_based_client_call, 2, false, true}, - {"promise_based_server_call", description_promise_based_server_call, - additional_constraints_promise_based_server_call, nullptr, 0, false, true}, {"chaotic_good", description_chaotic_good, - additional_constraints_chaotic_good, required_experiments_chaotic_good, 2, + additional_constraints_chaotic_good, required_experiments_chaotic_good, 1, false, true}, {"promise_based_inproc_transport", description_promise_based_inproc_transport, additional_constraints_promise_based_inproc_transport, - required_experiments_promise_based_inproc_transport, 2, false, false}, + required_experiments_promise_based_inproc_transport, 1, false, false}, {"rstpit", description_rstpit, additional_constraints_rstpit, nullptr, 0, false, true}, {"schedule_cancellation_over_write", @@ -270,14 +252,6 @@ const char* const description_peer_state_based_framing = "on the peer's memory pressure which is reflected in its max http2 frame " "size."; const char* const additional_constraints_peer_state_based_framing = "{}"; -const char* const description_pending_queue_cap = - "In the sync & async apis (but not the callback api), cap the number of " - "received but unrequested requests in the server for each call type. A " - "received message is one that was read from the wire on the server. A " - "requested message is one explicitly requested by the application using " - "grpc_server_request_call or grpc_server_request_registered_call (or their " - "wrappers in the C++ API)."; -const char* const additional_constraints_pending_queue_cap = "{}"; const char* const description_pick_first_new = "New pick_first impl with memory reduction."; const char* const additional_constraints_pick_first_new = "{}"; @@ -288,23 +262,17 @@ const char* const additional_constraints_promise_based_client_call = "{}"; const uint8_t required_experiments_promise_based_client_call[] = { static_cast(grpc_core::kExperimentIdEventEngineClient), static_cast(grpc_core::kExperimentIdEventEngineListener)}; -const char* const description_promise_based_server_call = - "If set, use the new gRPC promise based call code when it's appropriate " - "(ie when all filters in a stack are promise based)"; -const char* const additional_constraints_promise_based_server_call = "{}"; const char* const description_chaotic_good = "If set, enable the chaotic good load transport (this is mostly here for " "testing)"; const char* const additional_constraints_chaotic_good = "{}"; const uint8_t required_experiments_chaotic_good[] = { - static_cast(grpc_core::kExperimentIdPromiseBasedClientCall), - static_cast(grpc_core::kExperimentIdPromiseBasedServerCall)}; + static_cast(grpc_core::kExperimentIdPromiseBasedClientCall)}; const char* const description_promise_based_inproc_transport = "Use promises for the in-process transport."; const char* const additional_constraints_promise_based_inproc_transport = "{}"; const uint8_t required_experiments_promise_based_inproc_transport[] = { - static_cast(grpc_core::kExperimentIdPromiseBasedClientCall), - static_cast(grpc_core::kExperimentIdPromiseBasedServerCall)}; + static_cast(grpc_core::kExperimentIdPromiseBasedClientCall)}; const char* const description_rstpit = "On RST_STREAM on a server, reduce MAX_CONCURRENT_STREAMS for a short " "duration"; @@ -358,7 +326,7 @@ const ExperimentMetadata g_experiment_metadata[] = { {"client_privacy", description_client_privacy, additional_constraints_client_privacy, nullptr, 0, false, false}, {"event_engine_client", description_event_engine_client, - additional_constraints_event_engine_client, nullptr, 0, false, true}, + additional_constraints_event_engine_client, nullptr, 0, true, true}, {"event_engine_dns", description_event_engine_dns, additional_constraints_event_engine_dns, nullptr, 0, true, false}, {"event_engine_listener", description_event_engine_listener, @@ -377,22 +345,18 @@ const ExperimentMetadata g_experiment_metadata[] = { nullptr, 0, false, true}, {"peer_state_based_framing", description_peer_state_based_framing, additional_constraints_peer_state_based_framing, nullptr, 0, false, true}, - {"pending_queue_cap", description_pending_queue_cap, - additional_constraints_pending_queue_cap, nullptr, 0, true, true}, {"pick_first_new", description_pick_first_new, additional_constraints_pick_first_new, nullptr, 0, true, true}, {"promise_based_client_call", description_promise_based_client_call, additional_constraints_promise_based_client_call, required_experiments_promise_based_client_call, 2, false, true}, - {"promise_based_server_call", description_promise_based_server_call, - additional_constraints_promise_based_server_call, nullptr, 0, false, true}, {"chaotic_good", description_chaotic_good, - additional_constraints_chaotic_good, required_experiments_chaotic_good, 2, + additional_constraints_chaotic_good, required_experiments_chaotic_good, 1, false, true}, {"promise_based_inproc_transport", description_promise_based_inproc_transport, additional_constraints_promise_based_inproc_transport, - required_experiments_promise_based_inproc_transport, 2, false, false}, + required_experiments_promise_based_inproc_transport, 1, false, false}, {"rstpit", description_rstpit, additional_constraints_rstpit, nullptr, 0, false, true}, {"schedule_cancellation_over_write", @@ -470,14 +434,6 @@ const char* const description_peer_state_based_framing = "on the peer's memory pressure which is reflected in its max http2 frame " "size."; const char* const additional_constraints_peer_state_based_framing = "{}"; -const char* const description_pending_queue_cap = - "In the sync & async apis (but not the callback api), cap the number of " - "received but unrequested requests in the server for each call type. A " - "received message is one that was read from the wire on the server. A " - "requested message is one explicitly requested by the application using " - "grpc_server_request_call or grpc_server_request_registered_call (or their " - "wrappers in the C++ API)."; -const char* const additional_constraints_pending_queue_cap = "{}"; const char* const description_pick_first_new = "New pick_first impl with memory reduction."; const char* const additional_constraints_pick_first_new = "{}"; @@ -488,23 +444,17 @@ const char* const additional_constraints_promise_based_client_call = "{}"; const uint8_t required_experiments_promise_based_client_call[] = { static_cast(grpc_core::kExperimentIdEventEngineClient), static_cast(grpc_core::kExperimentIdEventEngineListener)}; -const char* const description_promise_based_server_call = - "If set, use the new gRPC promise based call code when it's appropriate " - "(ie when all filters in a stack are promise based)"; -const char* const additional_constraints_promise_based_server_call = "{}"; const char* const description_chaotic_good = "If set, enable the chaotic good load transport (this is mostly here for " "testing)"; const char* const additional_constraints_chaotic_good = "{}"; const uint8_t required_experiments_chaotic_good[] = { - static_cast(grpc_core::kExperimentIdPromiseBasedClientCall), - static_cast(grpc_core::kExperimentIdPromiseBasedServerCall)}; + static_cast(grpc_core::kExperimentIdPromiseBasedClientCall)}; const char* const description_promise_based_inproc_transport = "Use promises for the in-process transport."; const char* const additional_constraints_promise_based_inproc_transport = "{}"; const uint8_t required_experiments_promise_based_inproc_transport[] = { - static_cast(grpc_core::kExperimentIdPromiseBasedClientCall), - static_cast(grpc_core::kExperimentIdPromiseBasedServerCall)}; + static_cast(grpc_core::kExperimentIdPromiseBasedClientCall)}; const char* const description_rstpit = "On RST_STREAM on a server, reduce MAX_CONCURRENT_STREAMS for a short " "duration"; @@ -577,22 +527,18 @@ const ExperimentMetadata g_experiment_metadata[] = { nullptr, 0, false, true}, {"peer_state_based_framing", description_peer_state_based_framing, additional_constraints_peer_state_based_framing, nullptr, 0, false, true}, - {"pending_queue_cap", description_pending_queue_cap, - additional_constraints_pending_queue_cap, nullptr, 0, true, true}, {"pick_first_new", description_pick_first_new, additional_constraints_pick_first_new, nullptr, 0, true, true}, {"promise_based_client_call", description_promise_based_client_call, additional_constraints_promise_based_client_call, required_experiments_promise_based_client_call, 2, false, true}, - {"promise_based_server_call", description_promise_based_server_call, - additional_constraints_promise_based_server_call, nullptr, 0, false, true}, {"chaotic_good", description_chaotic_good, - additional_constraints_chaotic_good, required_experiments_chaotic_good, 2, + additional_constraints_chaotic_good, required_experiments_chaotic_good, 1, false, true}, {"promise_based_inproc_transport", description_promise_based_inproc_transport, additional_constraints_promise_based_inproc_transport, - required_experiments_promise_based_inproc_transport, 2, false, false}, + required_experiments_promise_based_inproc_transport, 1, false, false}, {"rstpit", description_rstpit, additional_constraints_rstpit, nullptr, 0, false, true}, {"schedule_cancellation_over_write", diff --git a/src/core/lib/experiments/experiments.h b/src/core/lib/experiments/experiments.h index f33b03c35ec..9e3ba9148ba 100644 --- a/src/core/lib/experiments/experiments.h +++ b/src/core/lib/experiments/experiments.h @@ -74,12 +74,9 @@ inline bool IsKeepaliveServerFixEnabled() { return false; } inline bool IsMonitoringExperimentEnabled() { return true; } inline bool IsMultipingEnabled() { return false; } inline bool IsPeerStateBasedFramingEnabled() { return false; } -#define GRPC_EXPERIMENT_IS_INCLUDED_PENDING_QUEUE_CAP -inline bool IsPendingQueueCapEnabled() { return true; } #define GRPC_EXPERIMENT_IS_INCLUDED_PICK_FIRST_NEW inline bool IsPickFirstNewEnabled() { return true; } inline bool IsPromiseBasedClientCallEnabled() { return false; } -inline bool IsPromiseBasedServerCallEnabled() { return false; } inline bool IsChaoticGoodEnabled() { return false; } inline bool IsPromiseBasedInprocTransportEnabled() { return false; } inline bool IsRstpitEnabled() { return false; } @@ -100,7 +97,8 @@ inline bool IsCallStatusOverrideOnCancellationEnabled() { return true; } inline bool IsCallV3Enabled() { return false; } inline bool IsCanaryClientPrivacyEnabled() { return false; } inline bool IsClientPrivacyEnabled() { return false; } -inline bool IsEventEngineClientEnabled() { return false; } +#define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_CLIENT +inline bool IsEventEngineClientEnabled() { return true; } #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_DNS inline bool IsEventEngineDnsEnabled() { return true; } #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_LISTENER @@ -114,12 +112,9 @@ inline bool IsKeepaliveServerFixEnabled() { return false; } inline bool IsMonitoringExperimentEnabled() { return true; } inline bool IsMultipingEnabled() { return false; } inline bool IsPeerStateBasedFramingEnabled() { return false; } -#define GRPC_EXPERIMENT_IS_INCLUDED_PENDING_QUEUE_CAP -inline bool IsPendingQueueCapEnabled() { return true; } #define GRPC_EXPERIMENT_IS_INCLUDED_PICK_FIRST_NEW inline bool IsPickFirstNewEnabled() { return true; } inline bool IsPromiseBasedClientCallEnabled() { return false; } -inline bool IsPromiseBasedServerCallEnabled() { return false; } inline bool IsChaoticGoodEnabled() { return false; } inline bool IsPromiseBasedInprocTransportEnabled() { return false; } inline bool IsRstpitEnabled() { return false; } @@ -154,12 +149,9 @@ inline bool IsKeepaliveServerFixEnabled() { return false; } inline bool IsMonitoringExperimentEnabled() { return true; } inline bool IsMultipingEnabled() { return false; } inline bool IsPeerStateBasedFramingEnabled() { return false; } -#define GRPC_EXPERIMENT_IS_INCLUDED_PENDING_QUEUE_CAP -inline bool IsPendingQueueCapEnabled() { return true; } #define GRPC_EXPERIMENT_IS_INCLUDED_PICK_FIRST_NEW inline bool IsPickFirstNewEnabled() { return true; } inline bool IsPromiseBasedClientCallEnabled() { return false; } -inline bool IsPromiseBasedServerCallEnabled() { return false; } inline bool IsChaoticGoodEnabled() { return false; } inline bool IsPromiseBasedInprocTransportEnabled() { return false; } inline bool IsRstpitEnabled() { return false; } @@ -192,10 +184,8 @@ enum ExperimentIds { kExperimentIdMonitoringExperiment, kExperimentIdMultiping, kExperimentIdPeerStateBasedFraming, - kExperimentIdPendingQueueCap, kExperimentIdPickFirstNew, kExperimentIdPromiseBasedClientCall, - kExperimentIdPromiseBasedServerCall, kExperimentIdChaoticGood, kExperimentIdPromiseBasedInprocTransport, kExperimentIdRstpit, @@ -265,10 +255,6 @@ inline bool IsMultipingEnabled() { inline bool IsPeerStateBasedFramingEnabled() { return IsExperimentEnabled(kExperimentIdPeerStateBasedFraming); } -#define GRPC_EXPERIMENT_IS_INCLUDED_PENDING_QUEUE_CAP -inline bool IsPendingQueueCapEnabled() { - return IsExperimentEnabled(kExperimentIdPendingQueueCap); -} #define GRPC_EXPERIMENT_IS_INCLUDED_PICK_FIRST_NEW inline bool IsPickFirstNewEnabled() { return IsExperimentEnabled(kExperimentIdPickFirstNew); @@ -277,10 +263,6 @@ inline bool IsPickFirstNewEnabled() { inline bool IsPromiseBasedClientCallEnabled() { return IsExperimentEnabled(kExperimentIdPromiseBasedClientCall); } -#define GRPC_EXPERIMENT_IS_INCLUDED_PROMISE_BASED_SERVER_CALL -inline bool IsPromiseBasedServerCallEnabled() { - return IsExperimentEnabled(kExperimentIdPromiseBasedServerCall); -} #define GRPC_EXPERIMENT_IS_INCLUDED_CHAOTIC_GOOD inline bool IsChaoticGoodEnabled() { return IsExperimentEnabled(kExperimentIdChaoticGood); diff --git a/src/core/lib/experiments/experiments.yaml b/src/core/lib/experiments/experiments.yaml index 9be9619ff3c..4d1a27e4d3c 100644 --- a/src/core/lib/experiments/experiments.yaml +++ b/src/core/lib/experiments/experiments.yaml @@ -64,7 +64,7 @@ If set, enable the chaotic good load transport (this is mostly here for testing) expiry: 2024/09/09 owner: ctiller@google.com - requires: [promise_based_client_call, promise_based_server_call] + requires: [promise_based_client_call] test_tags: [core_end2end_test] - name: client_privacy description: @@ -139,17 +139,6 @@ expiry: 2024/08/01 owner: vigneshbabu@google.com test_tags: ["flow_control_test"] -- name: pending_queue_cap - description: - In the sync & async apis (but not the callback api), cap the number of - received but unrequested requests in the server for each call type. - A received message is one that was read from the wire on the server. - A requested message is one explicitly requested by the application using - grpc_server_request_call or grpc_server_request_registered_call (or their - wrappers in the C++ API). - expiry: 2024/05/05 - owner: ctiller@google.com - test_tags: [] - name: pick_first_new description: New pick_first impl with memory reduction. expiry: 2024/07/30 @@ -170,14 +159,7 @@ owner: ctiller@google.com test_tags: [] allow_in_fuzzing_config: false # experiment currently crashes if enabled - requires: [promise_based_client_call, promise_based_server_call] -- name: promise_based_server_call - description: - If set, use the new gRPC promise based call code when it's appropriate - (ie when all filters in a stack are promise based) - expiry: 2024/06/14 - owner: ctiller@google.com - test_tags: ["core_end2end_test", "cpp_end2end_test", "xds_end2end_test", "logging_test"] + requires: [promise_based_client_call] - name: rstpit description: On RST_STREAM on a server, reduce MAX_CONCURRENT_STREAMS for a short duration diff --git a/src/core/lib/experiments/rollouts.yaml b/src/core/lib/experiments/rollouts.yaml index b5e9b765ded..7187f8c2952 100644 --- a/src/core/lib/experiments/rollouts.yaml +++ b/src/core/lib/experiments/rollouts.yaml @@ -58,9 +58,7 @@ # not tested on iOS at all ios: broken posix: false - # TODO(hork): resolve when the client end2end test flake rate reduces to - # a tolerable amount. - windows: broken + windows: true - name: event_engine_dns default: # not tested on iOS at all @@ -94,8 +92,6 @@ ios: broken windows: broken posix: false -- name: promise_based_server_call - default: false - name: rstpit default: false - name: schedule_cancellation_over_write diff --git a/src/core/lib/gpr/log_internal.h b/src/core/lib/gpr/log_internal.h deleted file mode 100644 index 0d7c9108880..00000000000 --- a/src/core/lib/gpr/log_internal.h +++ /dev/null @@ -1,55 +0,0 @@ -// 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. -#ifndef GRPC_SRC_CORE_LIB_GPR_LOG_INTERNAL_H -#define GRPC_SRC_CORE_LIB_GPR_LOG_INTERNAL_H - -#include - -#include -#include - -#include - -/// abort() the process if x is zero, with rudimentary logging to prevent -/// circular dependencies with gpr_log. - -/// Intended for internal invariants. If the error can be recovered from, -/// without the possibility of corruption, or might best be reflected via -/// an exception in a higher-level language, consider returning error code. -#define GPR_ASSERT_INTERNAL(x) \ - do { \ - if (GPR_UNLIKELY(!(x))) { \ - fprintf(stderr, "assertion failed: %s", #x); \ - abort(); \ - } \ - } while (0) - -#ifndef NDEBUG -#define GPR_DEBUG_ASSERT_INTERNAL(x) GPR_ASSERT_INTERNAL(x) -#else -#define GPR_DEBUG_ASSERT_INTERNAL(x) -#endif - -#define GPR_LOG_ERROR_INTERNAL(format, ...) \ - do { \ - char f[] = __FILE__; \ - char* display_file = f; \ - char* slash_pos = strrchr(f, '/'); \ - if (slash_pos != nullptr) display_file = slash_pos + 1; \ - char prefix[60]; \ - sprintf(prefix, "INTERNAL %37s:%d]", display_file, __LINE__); \ - fprintf(stderr, "%-60s " format "\n", prefix, __VA_ARGS__); \ - } while (0) - -#endif // GRPC_SRC_CORE_LIB_GPR_LOG_INTERNAL_H diff --git a/src/core/lib/gprpp/bitset.h b/src/core/lib/gprpp/bitset.h index 7cd96a4842a..ea941b0e10b 100644 --- a/src/core/lib/gprpp/bitset.h +++ b/src/core/lib/gprpp/bitset.h @@ -22,7 +22,7 @@ #include -#include "src/core/lib/gpr/useful.h" +#include "src/core/util/useful.h" namespace grpc_core { diff --git a/src/core/lib/gprpp/chunked_vector.h b/src/core/lib/gprpp/chunked_vector.h index 9eecf13fd29..b60bdac65ad 100644 --- a/src/core/lib/gprpp/chunked_vector.h +++ b/src/core/lib/gprpp/chunked_vector.h @@ -19,6 +19,8 @@ #include #include +#include "absl/log/check.h" + #include #include @@ -86,9 +88,9 @@ class ChunkedVector { // Remove the last element and return it. T PopBack() { - GPR_ASSERT(append_ != nullptr); + CHECK_NE(append_, nullptr); if (append_->count == 0) { - GPR_ASSERT(first_ != append_); + CHECK(first_ != append_); Chunk* chunk = first_; while (chunk->next != append_) { chunk = chunk->next; @@ -234,7 +236,7 @@ class ChunkedVector { private: ManualConstructor* AppendSlot() { if (append_ == nullptr) { - GPR_ASSERT(first_ == nullptr); + CHECK_EQ(first_, nullptr); first_ = arena_->New(); append_ = first_; } else if (append_->count == kChunkSize) { diff --git a/src/core/lib/gprpp/down_cast.h b/src/core/lib/gprpp/down_cast.h index 56e31f387b7..ca1b2d78029 100644 --- a/src/core/lib/gprpp/down_cast.h +++ b/src/core/lib/gprpp/down_cast.h @@ -18,6 +18,7 @@ #include #include "absl/base/config.h" +#include "absl/log/check.h" #include #include @@ -32,7 +33,7 @@ inline To DownCast(From* f) { // If we have RTTI & we're in debug, assert that the cast is legal. #if ABSL_INTERNAL_HAS_RTTI #ifndef NDEBUG - if (f != nullptr) GPR_ASSERT(dynamic_cast(f) != nullptr); + if (f != nullptr) CHECK_NE(dynamic_cast(f), nullptr); #endif #endif return static_cast(f); diff --git a/src/core/lib/gprpp/dual_ref_counted.h b/src/core/lib/gprpp/dual_ref_counted.h index f9016269e2a..5641b0970d4 100644 --- a/src/core/lib/gprpp/dual_ref_counted.h +++ b/src/core/lib/gprpp/dual_ref_counted.h @@ -20,6 +20,8 @@ #include #include +#include "absl/log/check.h" + #include #include @@ -92,7 +94,7 @@ class DualRefCounted { gpr_log(GPR_INFO, "%s:%p unref %d -> %d, weak_ref %d -> %d", trace_, this, strong_refs, strong_refs - 1, weak_refs, weak_refs + 1); } - GPR_ASSERT(strong_refs > 0); + CHECK_GT(strong_refs, 0u); #endif if (GPR_UNLIKELY(strong_refs == 1)) { Orphaned(); @@ -111,7 +113,7 @@ class DualRefCounted { trace_, this, location.file(), location.line(), strong_refs, strong_refs - 1, weak_refs, weak_refs + 1, reason); } - GPR_ASSERT(strong_refs > 0); + CHECK_GT(strong_refs, 0u); #else // Avoid unused-parameter warnings for debug-only parameters (void)location; @@ -210,7 +212,7 @@ class DualRefCounted { gpr_log(GPR_INFO, "%s:%p weak_unref %d -> %d (refs=%d)", trace, this, weak_refs, weak_refs - 1, strong_refs); } - GPR_ASSERT(weak_refs > 0); + CHECK_GT(weak_refs, 0u); #endif if (GPR_UNLIKELY(prev_ref_pair == MakeRefPair(0, 1))) { delete static_cast(this); @@ -233,7 +235,7 @@ class DualRefCounted { this, location.file(), location.line(), weak_refs, weak_refs - 1, strong_refs, reason); } - GPR_ASSERT(weak_refs > 0); + CHECK_GT(weak_refs, 0u); #else // Avoid unused-parameter warnings for debug-only parameters (void)location; @@ -289,7 +291,7 @@ class DualRefCounted { refs_.fetch_add(MakeRefPair(1, 0), std::memory_order_relaxed); const uint32_t strong_refs = GetStrongRefs(prev_ref_pair); const uint32_t weak_refs = GetWeakRefs(prev_ref_pair); - GPR_ASSERT(strong_refs != 0); + CHECK_NE(strong_refs, 0u); if (trace_ != nullptr) { gpr_log(GPR_INFO, "%s:%p ref %d -> %d; (weak_refs=%d)", trace_, this, strong_refs, strong_refs + 1, weak_refs); @@ -304,7 +306,7 @@ class DualRefCounted { refs_.fetch_add(MakeRefPair(1, 0), std::memory_order_relaxed); const uint32_t strong_refs = GetStrongRefs(prev_ref_pair); const uint32_t weak_refs = GetWeakRefs(prev_ref_pair); - GPR_ASSERT(strong_refs != 0); + CHECK_NE(strong_refs, 0u); if (trace_ != nullptr) { gpr_log(GPR_INFO, "%s:%p %s:%d ref %d -> %d (weak_refs=%d) %s", trace_, this, location.file(), location.line(), strong_refs, diff --git a/src/core/lib/gprpp/dump_args.cc b/src/core/lib/gprpp/dump_args.cc new file mode 100644 index 00000000000..e5bc183246b --- /dev/null +++ b/src/core/lib/gprpp/dump_args.cc @@ -0,0 +1,54 @@ +// Copyright 2024 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. + +#include "src/core/lib/gprpp/dump_args.h" + +#include "absl/log/check.h" +#include "absl/strings/ascii.h" +#include "absl/strings/string_view.h" + +namespace grpc_core { +namespace dump_args_detail { + +std::ostream& operator<<(std::ostream& out, const DumpArgs& args) { + // Parse the argument string into a vector of keys. + // #__VA_ARGS__ produces a stringified version of the arguments passed to the + // macro. It's comma separated, and we can use that to split the string into + // keys. Those keys might include parenthesis for e.g. argument lists, and so + // we need to skip commas that are inside parenthesis. + std::vector keys; + int depth = 0; + const char* start = args.arg_string_; + for (const char* p = args.arg_string_; *p; ++p) { + if (*p == '(') { + ++depth; + } else if (*p == ')') { + --depth; + } else if (*p == ',' && depth == 0) { + keys.push_back(absl::string_view(start, p - start)); + start = p + 1; + } + } + keys.push_back(start); + CHECK_EQ(keys.size(), args.arg_dumpers_.size()); + for (size_t i = 0; i < keys.size(); i++) { + if (i != 0) out << ", "; + out << absl::StripAsciiWhitespace(keys[i]) << " = "; + args.arg_dumpers_[i](out); + } + return out; +} + +} // namespace dump_args_detail +} // namespace grpc_core \ No newline at end of file diff --git a/src/core/lib/gprpp/dump_args.h b/src/core/lib/gprpp/dump_args.h new file mode 100644 index 00000000000..c2b66ce2be3 --- /dev/null +++ b/src/core/lib/gprpp/dump_args.h @@ -0,0 +1,69 @@ +// Copyright 2024 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. + +#ifndef GRPC_SRC_CORE_LIB_GPRPP_DUMP_ARGS_H +#define GRPC_SRC_CORE_LIB_GPRPP_DUMP_ARGS_H + +#include +#include + +#include "absl/functional/any_invocable.h" + +namespace grpc_core { +namespace dump_args_detail { + +// Helper function... just ignore the initializer list passed into it. +// Allows doing 'statements' via parameter pack expansion in C++11 - given +// template : +// do_these_things({foo()...}); +// will execute foo() for each T in Ts. +template +void do_these_things(std::initializer_list) {} + +class DumpArgs { + public: + template + explicit DumpArgs(const char* arg_string, const Args&... args) + : arg_string_(arg_string) { + do_these_things( + {AddDumper([a = &args](std::ostream& os) { os << *a; })...}); + } + + friend std::ostream& operator<<(std::ostream& out, const DumpArgs& args); + + private: + int AddDumper(absl::AnyInvocable dumper) { + arg_dumpers_.push_back(std::move(dumper)); + return 0; + } + + const char* arg_string_; + std::vector> arg_dumpers_; +}; + +} // namespace dump_args_detail +} // namespace grpc_core + +// Helper to print a list of variables and their values. +// Each type must be streamable to std::ostream. +// Usage: +// int a = 1; +// int b = 2; +// LOG(INFO) << GRPC_DUMP_ARGS(a, b) +// Output: +// a = 1, b = 2 +#define GRPC_DUMP_ARGS(...) \ + grpc_core::dump_args_detail::DumpArgs(#__VA_ARGS__, __VA_ARGS__) + +#endif // GRPC_SRC_CORE_LIB_GPRPP_DUMP_ARGS_H diff --git a/src/core/lib/gprpp/host_port.cc b/src/core/lib/gprpp/host_port.cc index 0805a25aeb5..7e5ae646ca7 100644 --- a/src/core/lib/gprpp/host_port.cc +++ b/src/core/lib/gprpp/host_port.cc @@ -20,6 +20,7 @@ #include +#include "absl/log/check.h" #include "absl/strings/str_format.h" #include "absl/strings/string_view.h" @@ -92,8 +93,10 @@ bool SplitHostPort(absl::string_view name, absl::string_view* host, bool SplitHostPort(absl::string_view name, std::string* host, std::string* port) { - GPR_DEBUG_ASSERT(host != nullptr && host->empty()); - GPR_DEBUG_ASSERT(port != nullptr && port->empty()); + DCHECK(host != nullptr); + DCHECK(host->empty()); + DCHECK(port != nullptr); + DCHECK(port->empty()); absl::string_view host_view; absl::string_view port_view; bool has_port; diff --git a/src/core/lib/gprpp/mpscq.h b/src/core/lib/gprpp/mpscq.h index bb19073c98f..c33d34ffa13 100644 --- a/src/core/lib/gprpp/mpscq.h +++ b/src/core/lib/gprpp/mpscq.h @@ -21,6 +21,8 @@ #include +#include "absl/log/check.h" + #include #include @@ -40,8 +42,8 @@ class MultiProducerSingleConsumerQueue { MultiProducerSingleConsumerQueue() : head_{&stub_}, tail_(&stub_) {} ~MultiProducerSingleConsumerQueue() { - GPR_ASSERT(head_.load(std::memory_order_relaxed) == &stub_); - GPR_ASSERT(tail_ == &stub_); + CHECK(head_.load(std::memory_order_relaxed) == &stub_); + CHECK(tail_ == &stub_); } // Push a node diff --git a/src/core/lib/gprpp/per_cpu.cc b/src/core/lib/gprpp/per_cpu.cc index 688fe2483a5..4cd06fd6513 100644 --- a/src/core/lib/gprpp/per_cpu.cc +++ b/src/core/lib/gprpp/per_cpu.cc @@ -17,7 +17,7 @@ #include #include -#include "src/core/lib/gpr/useful.h" +#include "src/core/util/useful.h" namespace grpc_core { diff --git a/src/core/lib/gprpp/posix/stat.cc b/src/core/lib/gprpp/posix/stat.cc index 58f9f2e8ad4..f46741af5c9 100644 --- a/src/core/lib/gprpp/posix/stat.cc +++ b/src/core/lib/gprpp/posix/stat.cc @@ -27,6 +27,8 @@ #include #include +#include "absl/log/check.h" + #include #include "src/core/lib/gprpp/stat.h" @@ -35,8 +37,8 @@ namespace grpc_core { absl::Status GetFileModificationTime(const char* filename, time_t* timestamp) { - GPR_ASSERT(filename != nullptr); - GPR_ASSERT(timestamp != nullptr); + CHECK_NE(filename, nullptr); + CHECK_NE(timestamp, nullptr); struct stat buf; if (stat(filename, &buf) != 0) { std::string error_msg = StrError(errno); diff --git a/src/core/lib/gprpp/posix/thd.cc b/src/core/lib/gprpp/posix/thd.cc index b599ca20f7f..dd3124fad25 100644 --- a/src/core/lib/gprpp/posix/thd.cc +++ b/src/core/lib/gprpp/posix/thd.cc @@ -32,16 +32,19 @@ #include #include +#include "absl/log/check.h" +#include "absl/log/log.h" // IWYU pragma: keep + #include #include #include #include -#include "src/core/lib/gpr/useful.h" #include "src/core/lib/gprpp/crash.h" #include "src/core/lib/gprpp/fork.h" #include "src/core/lib/gprpp/strerror.h" #include "src/core/lib/gprpp/thd.h" +#include "src/core/util/useful.h" namespace grpc_core { namespace { @@ -88,7 +91,7 @@ class ThreadInternalsPosix : public internal::ThreadInternalsInterface { // don't use gpr_malloc as we may cause an infinite recursion with // the profiling code thd_arg* info = static_cast(malloc(sizeof(*info))); - GPR_ASSERT(info != nullptr); + CHECK_NE(info, nullptr); info->thread = this; info->body = thd_body; info->arg = arg; @@ -99,18 +102,16 @@ class ThreadInternalsPosix : public internal::ThreadInternalsInterface { Fork::IncThreadCount(); } - GPR_ASSERT(pthread_attr_init(&attr) == 0); + CHECK_EQ(pthread_attr_init(&attr), 0); if (options.joinable()) { - GPR_ASSERT(pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE) == - 0); + CHECK(pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE) == 0); } else { - GPR_ASSERT(pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED) == - 0); + CHECK(pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED) == 0); } if (options.stack_size() != 0) { size_t stack_size = MinValidStackSize(options.stack_size()); - GPR_ASSERT(pthread_attr_setstacksize(&attr, stack_size) == 0); + CHECK_EQ(pthread_attr_setstacksize(&attr, stack_size), 0); } int pthread_create_err = pthread_create( @@ -154,7 +155,7 @@ class ThreadInternalsPosix : public internal::ThreadInternalsInterface { info); *success = (pthread_create_err == 0); - GPR_ASSERT(pthread_attr_destroy(&attr) == 0); + CHECK_EQ(pthread_attr_destroy(&attr), 0); if (!(*success)) { gpr_log(GPR_ERROR, "pthread_create failed: %s", @@ -213,7 +214,7 @@ void Thread::Kill(gpr_thd_id tid) { } #else // GPR_ANDROID void Thread::Kill(gpr_thd_id /* tid */) { - gpr_log(GPR_DEBUG, "Thread::Kill is not supported on Android."); + VLOG(2) << "Thread::Kill is not supported on Android."; } #endif diff --git a/src/core/lib/gprpp/ref_counted.h b/src/core/lib/gprpp/ref_counted.h index 8076690dcec..7d9f8c4d11d 100644 --- a/src/core/lib/gprpp/ref_counted.h +++ b/src/core/lib/gprpp/ref_counted.h @@ -23,6 +23,8 @@ #include #include +#include "absl/log/check.h" + #include #include @@ -164,7 +166,7 @@ class RefCount { gpr_log(GPR_INFO, "%s:%p unref %" PRIdPTR " -> %" PRIdPTR, trace, this, prior, prior - 1); } - GPR_DEBUG_ASSERT(prior > 0); + DCHECK_GT(prior, 0); #endif return prior == 1; } @@ -182,7 +184,7 @@ class RefCount { trace, this, location.file(), location.line(), prior, prior - 1, reason); } - GPR_DEBUG_ASSERT(prior > 0); + DCHECK_GT(prior, 0); #else // Avoid unused-parameter warnings for debug-only parameters (void)location; diff --git a/src/core/lib/gprpp/single_set_ptr.h b/src/core/lib/gprpp/single_set_ptr.h index b4839df8096..369e777bd23 100644 --- a/src/core/lib/gprpp/single_set_ptr.h +++ b/src/core/lib/gprpp/single_set_ptr.h @@ -18,6 +18,8 @@ #include #include +#include "absl/log/check.h" + #include #include @@ -67,7 +69,7 @@ class SingleSetPtr { T* operator->() const { T* p = p_.load(std::memory_order_acquire); - GPR_DEBUG_ASSERT(p != nullptr); + DCHECK_NE(p, nullptr); return p; } diff --git a/src/core/lib/gprpp/status_helper.cc b/src/core/lib/gprpp/status_helper.cc index 44f373dbf26..fe76efb87a3 100644 --- a/src/core/lib/gprpp/status_helper.cc +++ b/src/core/lib/gprpp/status_helper.cc @@ -22,6 +22,7 @@ #include +#include "absl/log/check.h" #include "absl/strings/cord.h" #include "absl/strings/escaping.h" #include "absl/strings/match.h" @@ -153,7 +154,7 @@ std::vector ParseChildren(absl::Cord children) { while (buf.size() - cur >= sizeof(uint32_t)) { size_t msg_size = DecodeUInt32FromBytes(buf.data() + cur); cur += sizeof(uint32_t); - GPR_ASSERT(buf.size() - cur >= msg_size); + CHECK(buf.size() - cur >= msg_size); google_rpc_Status* msg = google_rpc_Status_parse(buf.data() + cur, msg_size, arena.ptr()); cur += msg_size; diff --git a/src/core/lib/gprpp/sync.h b/src/core/lib/gprpp/sync.h index 76198091731..16efe619cd5 100644 --- a/src/core/lib/gprpp/sync.h +++ b/src/core/lib/gprpp/sync.h @@ -20,6 +20,7 @@ #define GRPC_SRC_CORE_LIB_GPRPP_SYNC_H #include "absl/base/thread_annotations.h" +#include "absl/log/check.h" #include "absl/synchronization/mutex.h" #include @@ -112,7 +113,7 @@ class ABSL_SCOPED_LOCKABLE ReleasableMutexLock { ReleasableMutexLock& operator=(const ReleasableMutexLock&) = delete; void Release() ABSL_UNLOCK_FUNCTION() { - GPR_DEBUG_ASSERT(!released_); + DCHECK(!released_); released_ = true; mu_->Unlock(); } @@ -178,13 +179,13 @@ class ABSL_SCOPED_LOCKABLE LockableAndReleasableMutexLock { const LockableAndReleasableMutexLock&) = delete; void Lock() ABSL_EXCLUSIVE_LOCK_FUNCTION() { - GPR_DEBUG_ASSERT(released_); + DCHECK(released_); mu_->Lock(); released_ = false; } void Release() ABSL_UNLOCK_FUNCTION() { - GPR_DEBUG_ASSERT(!released_); + DCHECK(!released_); released_ = true; mu_->Unlock(); } diff --git a/src/core/lib/gprpp/thd.h b/src/core/lib/gprpp/thd.h index 827db3891b9..44ff3b22e3c 100644 --- a/src/core/lib/gprpp/thd.h +++ b/src/core/lib/gprpp/thd.h @@ -27,6 +27,7 @@ #include #include "absl/functional/any_invocable.h" +#include "absl/log/check.h" #include #include @@ -124,7 +125,7 @@ class Thread { Thread& operator=(Thread&& other) noexcept { if (this != &other) { // TODO(vjpai): if we can be sure that all Thread's are actually - // constructed, then we should assert GPR_ASSERT(impl_ == nullptr) here. + // constructed, then we should assert CHECK(impl_ == nullptr) here. // However, as long as threads come in structures that are // allocated via gpr_malloc, this will not be the case, so we cannot // assert it for the time being. @@ -143,11 +144,11 @@ class Thread { /// the Join function kills it, or it was detached (non-joinable) and it has /// run to completion and is now killing itself. The destructor shouldn't have /// to do anything. - ~Thread() { GPR_ASSERT(!options_.joinable() || impl_ == nullptr); } + ~Thread() { CHECK(!options_.joinable() || impl_ == nullptr); } void Start() { if (impl_ != nullptr) { - GPR_ASSERT(state_ == ALIVE); + CHECK(state_ == ALIVE); state_ = STARTED; impl_->Start(); // If the Thread is not joinable, then the impl_ will cause the deletion @@ -156,7 +157,7 @@ class Thread { // no need to change the value of the impl_ or state_ . The next operation // on this object will be the deletion, which will trigger the destructor. } else { - GPR_ASSERT(state_ == FAILED); + CHECK(state_ == FAILED); } } @@ -168,7 +169,7 @@ class Thread { state_ = DONE; impl_ = nullptr; } else { - GPR_ASSERT(state_ == FAILED); + CHECK(state_ == FAILED); } } diff --git a/src/core/lib/gprpp/time.cc b/src/core/lib/gprpp/time.cc index 58e0a56d1e3..02240710a54 100644 --- a/src/core/lib/gprpp/time.cc +++ b/src/core/lib/gprpp/time.cc @@ -20,6 +20,7 @@ #include #include +#include "absl/log/check.h" #include "absl/strings/str_format.h" #include @@ -66,13 +67,13 @@ GPR_ATTRIBUTE_NOINLINE std::pair InitTime() { } // Check time has increased past 1 second. - GPR_ASSERT(process_epoch_seconds > 1); + CHECK_GT(process_epoch_seconds, 1); // Fake the epoch to always return >=1 second from our monotonic clock (to // avoid bugs elsewhere) process_epoch_seconds -= 1; int64_t expected = 0; gpr_cycle_counter process_epoch_cycles = (cycles_start + cycles_end) / 2; - GPR_ASSERT(process_epoch_cycles != 0); + CHECK_NE(process_epoch_cycles, 0); if (!g_process_epoch_seconds.compare_exchange_strong( expected, process_epoch_seconds, std::memory_order_relaxed, std::memory_order_relaxed)) { @@ -119,7 +120,7 @@ gpr_timespec MillisecondsAsTimespec(int64_t millis, gpr_clock_type clock_type) { } int64_t TimespanToMillisRoundUp(gpr_timespec ts) { - GPR_ASSERT(ts.clock_type == GPR_TIMESPAN); + CHECK(ts.clock_type == GPR_TIMESPAN); double x = GPR_MS_PER_SEC * static_cast(ts.tv_sec) + static_cast(ts.tv_nsec) / GPR_NS_PER_MS + static_cast(GPR_NS_PER_SEC - 1) / @@ -134,7 +135,7 @@ int64_t TimespanToMillisRoundUp(gpr_timespec ts) { } int64_t TimespanToMillisRoundDown(gpr_timespec ts) { - GPR_ASSERT(ts.clock_type == GPR_TIMESPAN); + CHECK(ts.clock_type == GPR_TIMESPAN); double x = GPR_MS_PER_SEC * static_cast(ts.tv_sec) + static_cast(ts.tv_nsec) / GPR_NS_PER_MS; if (x <= static_cast(std::numeric_limits::min())) { diff --git a/src/core/lib/gprpp/time.h b/src/core/lib/gprpp/time.h index 35b762963b3..96963753d38 100644 --- a/src/core/lib/gprpp/time.h +++ b/src/core/lib/gprpp/time.h @@ -27,8 +27,8 @@ #include #include -#include "src/core/lib/gpr/time_precise.h" -#include "src/core/lib/gpr/useful.h" +#include "src/core/util/time_precise.h" +#include "src/core/util/useful.h" #define GRPC_LOG_EVERY_N_SEC(n, severity, format, ...) \ do { \ diff --git a/src/core/lib/gprpp/time_util.cc b/src/core/lib/gprpp/time_util.cc index 6c44608945c..3a1cd376370 100644 --- a/src/core/lib/gprpp/time_util.cc +++ b/src/core/lib/gprpp/time_util.cc @@ -19,6 +19,8 @@ #include #include +#include "absl/log/check.h" + #include #include #include @@ -54,7 +56,7 @@ gpr_timespec ToGprTimeSpec(absl::Time time) { } absl::Duration ToAbslDuration(gpr_timespec ts) { - GPR_ASSERT(ts.clock_type == GPR_TIMESPAN); + CHECK(ts.clock_type == GPR_TIMESPAN); if (gpr_time_cmp(ts, gpr_inf_future(GPR_TIMESPAN)) == 0) { return absl::InfiniteDuration(); } else if (gpr_time_cmp(ts, gpr_inf_past(GPR_TIMESPAN)) == 0) { @@ -65,7 +67,7 @@ absl::Duration ToAbslDuration(gpr_timespec ts) { } absl::Time ToAbslTime(gpr_timespec ts) { - GPR_ASSERT(ts.clock_type != GPR_TIMESPAN); + CHECK(ts.clock_type != GPR_TIMESPAN); gpr_timespec rts = gpr_convert_clock_type(ts, GPR_CLOCK_REALTIME); if (gpr_time_cmp(rts, gpr_inf_future(GPR_CLOCK_REALTIME)) == 0) { return absl::InfiniteFuture(); diff --git a/src/core/lib/gprpp/unique_type_name.h b/src/core/lib/gprpp/unique_type_name.h index 9b7330cc792..2e71ab73f07 100644 --- a/src/core/lib/gprpp/unique_type_name.h +++ b/src/core/lib/gprpp/unique_type_name.h @@ -23,7 +23,7 @@ #include -#include "src/core/lib/gpr/useful.h" +#include "src/core/util/useful.h" // Provides a type name that is unique by instance rather than by // string content. This is useful in cases where there are different diff --git a/src/core/lib/gprpp/validation_errors.cc b/src/core/lib/gprpp/validation_errors.cc index ce4f4f3a291..4cae4f814e4 100644 --- a/src/core/lib/gprpp/validation_errors.cc +++ b/src/core/lib/gprpp/validation_errors.cc @@ -14,6 +14,8 @@ #include "src/core/lib/gprpp/validation_errors.h" +#include + #include #include "absl/status/status.h" @@ -21,6 +23,7 @@ #include "absl/strings/str_join.h" #include "absl/strings/strip.h" +#include #include namespace grpc_core { @@ -34,7 +37,14 @@ void ValidationErrors::PushField(absl::string_view ext) { void ValidationErrors::PopField() { fields_.pop_back(); } void ValidationErrors::AddError(absl::string_view error) { - field_errors_[absl::StrJoin(fields_, "")].emplace_back(error); + auto key = absl::StrJoin(fields_, ""); + if (field_errors_[key].size() >= max_error_count_) { + gpr_log(GPR_DEBUG, + "Ignoring validation error: too many errors found (%" PRIuPTR ")", + max_error_count_); + return; + } + field_errors_[key].emplace_back(error); } bool ValidationErrors::FieldHasErrors() const { diff --git a/src/core/lib/gprpp/validation_errors.h b/src/core/lib/gprpp/validation_errors.h index f754bca3489..34a299b2ca8 100644 --- a/src/core/lib/gprpp/validation_errors.h +++ b/src/core/lib/gprpp/validation_errors.h @@ -63,6 +63,9 @@ namespace grpc_core { // } class ValidationErrors { public: + // Default maximum number of errors to track per scope. + static constexpr size_t kMaxErrorCount = 20; + // Pushes a field name onto the stack at construction and pops it off // of the stack at destruction. class ScopedField { @@ -93,6 +96,12 @@ class ValidationErrors { ValidationErrors* errors_; }; + ValidationErrors() : ValidationErrors(kMaxErrorCount) {} + + // Creates a tracker that collects at most `max_error_count` errors per field. + explicit ValidationErrors(size_t max_error_count) + : max_error_count_(max_error_count) {} + // Records that we've encountered an error associated with the current // field. void AddError(absl::string_view error) GPR_ATTRIBUTE_NOINLINE; @@ -127,6 +136,8 @@ class ValidationErrors { // Stack of field names indicating the field that we are currently // validating. std::vector fields_; + + size_t max_error_count_; }; } // namespace grpc_core diff --git a/src/core/lib/gprpp/windows/stat.cc b/src/core/lib/gprpp/windows/stat.cc index 20fc4335566..3d2d42f814b 100644 --- a/src/core/lib/gprpp/windows/stat.cc +++ b/src/core/lib/gprpp/windows/stat.cc @@ -22,6 +22,8 @@ #include #include +#include "absl/log/check.h" + #include #include "src/core/lib/gprpp/crash.h" @@ -31,8 +33,8 @@ namespace grpc_core { absl::Status GetFileModificationTime(const char* filename, time_t* timestamp) { - GPR_ASSERT(filename != nullptr); - GPR_ASSERT(timestamp != nullptr); + CHECK_NE(filename, nullptr); + CHECK_NE(timestamp, nullptr); struct _stat buf; if (_stat(filename, &buf) != 0) { std::string error_msg = StrError(errno); diff --git a/src/core/lib/gprpp/windows/thd.cc b/src/core/lib/gprpp/windows/thd.cc index ffabe3545fe..b5c6368cf40 100644 --- a/src/core/lib/gprpp/windows/thd.cc +++ b/src/core/lib/gprpp/windows/thd.cc @@ -23,6 +23,9 @@ #include +#include "absl/log/check.h" +#include "absl/log/log.h" + #include #include #include @@ -101,7 +104,7 @@ class ThreadInternalsWindows void Join() override { DWORD ret = WaitForSingleObject(info_->join_event, INFINITE); - GPR_ASSERT(ret == WAIT_OBJECT_0); + CHECK(ret == WAIT_OBJECT_0); destroy_thread(); } @@ -121,7 +124,7 @@ class ThreadInternalsWindows g_thd_info->body(g_thd_info->arg); if (g_thd_info->joinable) { BOOL ret = SetEvent(g_thd_info->join_event); - GPR_ASSERT(ret); + CHECK(ret); } else { gpr_free(g_thd_info); } @@ -147,12 +150,12 @@ namespace grpc_core { void Thread::Signal(gpr_thd_id /* tid */, int /* sig */) { // TODO(hork): Implement - gpr_log(GPR_DEBUG, "Thread signals are not supported on Windows."); + VLOG(2) << "Thread signals are not supported on Windows."; } void Thread::Kill(gpr_thd_id /* tid */) { // TODO(hork): Implement - gpr_log(GPR_DEBUG, "Thread::Kill is not supported on Windows."); + VLOG(2) << "Thread::Kill is not supported on Windows."; } Thread::Thread(const char* /* thd_name */, void (*thd_body)(void* arg), diff --git a/src/core/lib/gprpp/work_serializer.cc b/src/core/lib/gprpp/work_serializer.cc index 27a2f84f13f..88c10c00a8a 100644 --- a/src/core/lib/gprpp/work_serializer.cc +++ b/src/core/lib/gprpp/work_serializer.cc @@ -27,6 +27,8 @@ #include #include "absl/container/inlined_vector.h" +#include "absl/log/check.h" +#include "absl/log/log.h" #include #include @@ -107,7 +109,7 @@ class WorkSerializer::LegacyWorkSerializer final : public WorkSerializerImpl { // First 16 bits indicate ownership of the WorkSerializer, next 48 bits are // queue size (i.e., refs). static uint64_t MakeRefPair(uint16_t owners, uint64_t size) { - GPR_ASSERT(size >> 48 == 0); + CHECK_EQ(size >> 48, 0u); return (static_cast(owners) << 48) + static_cast(size); } static uint32_t GetOwners(uint64_t ref_pair) { @@ -145,12 +147,12 @@ void WorkSerializer::LegacyWorkSerializer::Run(std::function callback, const uint64_t prev_ref_pair = refs_.fetch_add(MakeRefPair(1, 1), std::memory_order_acq_rel); // The work serializer should not have been orphaned. - GPR_DEBUG_ASSERT(GetSize(prev_ref_pair) > 0); + DCHECK_GT(GetSize(prev_ref_pair), 0u); if (GetOwners(prev_ref_pair) == 0) { // We took ownership of the WorkSerializer. Invoke callback and drain queue. SetCurrentThread(); if (GRPC_TRACE_FLAG_ENABLED(grpc_work_serializer_trace)) { - gpr_log(GPR_INFO, " Executing immediately"); + LOG(INFO) << " Executing immediately"; } callback(); // Delete the callback while still holding the WorkSerializer, so @@ -192,7 +194,7 @@ void WorkSerializer::LegacyWorkSerializer::Orphan() { refs_.fetch_sub(MakeRefPair(0, 1), std::memory_order_acq_rel); if (GetOwners(prev_ref_pair) == 0 && GetSize(prev_ref_pair) == 1) { if (GRPC_TRACE_FLAG_ENABLED(grpc_work_serializer_trace)) { - gpr_log(GPR_INFO, " Destroying"); + LOG(INFO) << " Destroying"; } delete this; } @@ -231,7 +233,7 @@ void WorkSerializer::LegacyWorkSerializer::DrainQueueOwned() { // up orphaning the work serializer. In that case, delete the object. if (GetSize(prev_ref_pair) == 1) { if (GRPC_TRACE_FLAG_ENABLED(grpc_work_serializer_trace)) { - gpr_log(GPR_INFO, " Queue Drained. Destroying"); + LOG(INFO) << " Queue Drained. Destroying"; } delete this; return; @@ -251,7 +253,7 @@ void WorkSerializer::LegacyWorkSerializer::DrainQueueOwned() { if (GetSize(expected) == 0) { // WorkSerializer got orphaned while this was running if (GRPC_TRACE_FLAG_ENABLED(grpc_work_serializer_trace)) { - gpr_log(GPR_INFO, " Queue Drained. Destroying"); + LOG(INFO) << " Queue Drained. Destroying"; } delete this; return; @@ -271,7 +273,7 @@ void WorkSerializer::LegacyWorkSerializer::DrainQueueOwned() { // This can happen due to a race condition within the mpscq // implementation or because of a race with Run()/Schedule(). if (GRPC_TRACE_FLAG_ENABLED(grpc_work_serializer_trace)) { - gpr_log(GPR_INFO, " Queue returned nullptr, trying again"); + LOG(INFO) << " Queue returned nullptr, trying again"; } } if (GRPC_TRACE_FLAG_ENABLED(grpc_work_serializer_trace)) { @@ -424,7 +426,7 @@ void WorkSerializer::DispatchingWorkSerializer::Run( running_start_time_ = std::chrono::steady_clock::now(); items_processed_during_run_ = 0; time_running_items_ = std::chrono::steady_clock::duration(); - GPR_ASSERT(processing_.empty()); + CHECK(processing_.empty()); processing_.emplace_back(std::move(callback), location); event_engine_->Run(this); } else { diff --git a/src/core/lib/http/httpcli.cc b/src/core/lib/http/httpcli.cc index a88796000ff..ee2a5ad528d 100644 --- a/src/core/lib/http/httpcli.cc +++ b/src/core/lib/http/httpcli.cc @@ -24,6 +24,7 @@ #include #include "absl/functional/bind_front.h" +#include "absl/log/check.h" #include "absl/status/status.h" #include "absl/strings/str_format.h" @@ -33,6 +34,8 @@ #include #include +#include "src/core/handshaker/handshaker_registry.h" +#include "src/core/handshaker/tcp_connect/tcp_connect_handshaker.h" #include "src/core/lib/address_utils/sockaddr_utils.h" #include "src/core/lib/channel/channel_args.h" #include "src/core/lib/channel/channel_args_preconditioning.h" @@ -49,8 +52,6 @@ #include "src/core/lib/security/security_connector/security_connector.h" #include "src/core/lib/slice/slice.h" #include "src/core/lib/transport/error_utils.h" -#include "src/core/lib/transport/handshaker_registry.h" -#include "src/core/lib/transport/tcp_connect_handshaker.h" namespace grpc_core { @@ -183,7 +184,7 @@ HttpRequest::HttpRequest( GRPC_CLOSURE_INIT(&continue_done_write_after_schedule_on_exec_ctx_, ContinueDoneWriteAfterScheduleOnExecCtx, this, grpc_schedule_on_exec_ctx); - GPR_ASSERT(pollent); + CHECK(pollent); grpc_polling_entity_add_to_pollset_set(pollent, pollset_set_); } @@ -216,7 +217,7 @@ void HttpRequest::Start() { void HttpRequest::Orphan() { { MutexLock lock(&mu_); - GPR_ASSERT(!cancelled_); + CHECK(!cancelled_); cancelled_ = true; // cancel potentially pending DNS resolution. if (dns_request_handle_.has_value() && diff --git a/src/core/lib/http/httpcli.h b/src/core/lib/http/httpcli.h index 3215bce1aa3..960b46d16c3 100644 --- a/src/core/lib/http/httpcli.h +++ b/src/core/lib/http/httpcli.h @@ -34,6 +34,7 @@ #include #include +#include "src/core/handshaker/handshaker.h" #include "src/core/lib/gprpp/debug_location.h" #include "src/core/lib/gprpp/orphanable.h" #include "src/core/lib/gprpp/ref_counted_ptr.h" @@ -50,7 +51,6 @@ #include "src/core/lib/iomgr/resolve_address.h" #include "src/core/lib/iomgr/resolved_address.h" #include "src/core/lib/resource_quota/resource_quota.h" -#include "src/core/lib/transport/handshaker.h" #include "src/core/lib/uri/uri_parser.h" // User agent this library reports diff --git a/src/core/lib/http/httpcli_security_connector.cc b/src/core/lib/http/httpcli_security_connector.cc index f5acf5bc3ba..7db2021b71c 100644 --- a/src/core/lib/http/httpcli_security_connector.cc +++ b/src/core/lib/http/httpcli_security_connector.cc @@ -20,6 +20,7 @@ #include +#include "absl/log/log.h" #include "absl/status/status.h" #include "absl/strings/str_cat.h" #include "absl/strings/string_view.h" @@ -34,6 +35,8 @@ #include #include +#include "src/core/handshaker/handshaker.h" +#include "src/core/handshaker/security/security_handshaker.h" #include "src/core/lib/channel/channel_args.h" #include "src/core/lib/gprpp/debug_location.h" #include "src/core/lib/gprpp/ref_counted_ptr.h" @@ -48,8 +51,6 @@ #include "src/core/lib/security/credentials/credentials.h" #include "src/core/lib/security/security_connector/security_connector.h" #include "src/core/lib/security/security_connector/ssl_utils.h" -#include "src/core/lib/security/transport/security_handshaker.h" -#include "src/core/lib/transport/handshaker.h" #include "src/core/tsi/ssl_transport_security.h" #include "src/core/tsi/transport_security_interface.h" @@ -173,7 +174,7 @@ class HttpRequestSSLCredentials : public grpc_channel_credentials { const tsi_ssl_root_certs_store* root_store = DefaultSslRootStore::GetRootStore(); if (root_store == nullptr) { - gpr_log(GPR_ERROR, "Could not get default pem root certs."); + LOG(ERROR) << "Could not get default pem root certs."; return nullptr; } absl::optional target_string = diff --git a/src/core/lib/http/parser.cc b/src/core/lib/http/parser.cc index 4702fa72917..aad7963f1d7 100644 --- a/src/core/lib/http/parser.cc +++ b/src/core/lib/http/parser.cc @@ -22,6 +22,7 @@ #include +#include "absl/log/check.h" #include "absl/status/status.h" #include @@ -177,7 +178,7 @@ static grpc_error_handle add_header(grpc_http_parser* parser) { grpc_http_header hdr = {nullptr, nullptr}; grpc_error_handle error; - GPR_ASSERT(cur != end); + CHECK(cur != end); if (*cur == ' ' || *cur == '\t') { error = GRPC_ERROR_CREATE("Continued header lines not supported yet"); @@ -191,14 +192,14 @@ static grpc_error_handle add_header(grpc_http_parser* parser) { error = GRPC_ERROR_CREATE("Didn't find ':' in header string"); goto done; } - GPR_ASSERT(cur >= beg); + CHECK(cur >= beg); hdr.key = buf2str(beg, static_cast(cur - beg)); cur++; // skip : while (cur != end && (*cur == ' ' || *cur == '\t')) { cur++; } - GPR_ASSERT((size_t)(end - cur) >= parser->cur_line_end_length); + CHECK((size_t)(end - cur) >= parser->cur_line_end_length); size = static_cast(end - cur) - parser->cur_line_end_length; if ((size != 0) && (cur[size - 1] == '\r')) { size--; diff --git a/src/core/lib/iomgr/buffer_list.cc b/src/core/lib/iomgr/buffer_list.cc index 6de9d89c05b..aedb4227073 100644 --- a/src/core/lib/iomgr/buffer_list.cc +++ b/src/core/lib/iomgr/buffer_list.cc @@ -18,6 +18,8 @@ #include "src/core/lib/iomgr/buffer_list.h" +#include "absl/log/log.h" + #include #include #include @@ -42,7 +44,7 @@ void FillGprFromTimestamp(gpr_timespec* gts, const struct timespec* ts) { void DefaultTimestampsCallback(void* /*arg*/, Timestamps* /*ts*/, absl::Status /*shudown_err*/) { - gpr_log(GPR_DEBUG, "Timestamps callback has not been registered"); + VLOG(2) << "Timestamps callback has not been registered"; } // The saved callback function that will be invoked when we get all the @@ -321,7 +323,7 @@ void grpc_tcp_set_write_timestamps_callback( // Can't comment out the name because some compilers and formatters don't // like the sequence */* , which would arise from */*fn*/. (void)fn; - gpr_log(GPR_DEBUG, "Timestamps callback is not enabled for this platform"); + VLOG(2) << "Timestamps callback is not enabled for this platform"; } } // namespace grpc_core diff --git a/src/core/lib/iomgr/call_combiner.cc b/src/core/lib/iomgr/call_combiner.cc index cffff2a3979..c6fb49cea1a 100644 --- a/src/core/lib/iomgr/call_combiner.cc +++ b/src/core/lib/iomgr/call_combiner.cc @@ -20,6 +20,9 @@ #include +#include "absl/log/check.h" +#include "absl/log/log.h" + #include #include @@ -86,7 +89,7 @@ void CallCombiner::TsanClosure(void* arg, grpc_error_handle error) { if (lock != nullptr) { TSAN_ANNOTATE_RWLOCK_RELEASED(&lock->taken, true); bool prev = true; - GPR_ASSERT(lock->taken.compare_exchange_strong(prev, false)); + CHECK(lock->taken.compare_exchange_strong(prev, false)); } } #endif @@ -128,13 +131,13 @@ void CallCombiner::Start(grpc_closure* closure, grpc_error_handle error, } if (prev_size == 0) { if (GRPC_TRACE_FLAG_ENABLED(grpc_call_combiner_trace)) { - gpr_log(GPR_INFO, " EXECUTING IMMEDIATELY"); + LOG(INFO) << " EXECUTING IMMEDIATELY"; } // Queue was empty, so execute this closure immediately. ScheduleClosure(closure, error); } else { if (GRPC_TRACE_FLAG_ENABLED(grpc_call_combiner_trace)) { - gpr_log(GPR_INFO, " QUEUING"); + LOG(INFO) << " QUEUING"; } // Queue was not empty, so add closure to queue. closure->error_data.error = internal::StatusAllocHeapPtr(error); @@ -154,11 +157,11 @@ void CallCombiner::Stop(DEBUG_ARGS const char* reason) { gpr_log(GPR_INFO, " size: %" PRIdPTR " -> %" PRIdPTR, prev_size, prev_size - 1); } - GPR_ASSERT(prev_size >= 1); + CHECK_GE(prev_size, 1u); if (prev_size > 1) { while (true) { if (GRPC_TRACE_FLAG_ENABLED(grpc_call_combiner_trace)) { - gpr_log(GPR_INFO, " checking queue"); + LOG(INFO) << " checking queue"; } bool empty; grpc_closure* closure = @@ -167,7 +170,7 @@ void CallCombiner::Stop(DEBUG_ARGS const char* reason) { // This can happen either due to a race condition within the mpscq // code or because of a race with Start(). if (GRPC_TRACE_FLAG_ENABLED(grpc_call_combiner_trace)) { - gpr_log(GPR_INFO, " queue returned no result; checking again"); + LOG(INFO) << " queue returned no result; checking again"; } continue; } @@ -182,7 +185,7 @@ void CallCombiner::Stop(DEBUG_ARGS const char* reason) { break; } } else if (GRPC_TRACE_FLAG_ENABLED(grpc_call_combiner_trace)) { - gpr_log(GPR_INFO, " queue empty"); + LOG(INFO) << " queue empty"; } } diff --git a/src/core/lib/iomgr/closure.h b/src/core/lib/iomgr/closure.h index 674f6c0a2f7..caf84fe30df 100644 --- a/src/core/lib/iomgr/closure.h +++ b/src/core/lib/iomgr/closure.h @@ -22,6 +22,8 @@ #include #include +#include "absl/log/check.h" + #include #include #include @@ -297,7 +299,7 @@ class Closure { closure, closure->file_created, closure->line_created, location.file(), location.line()); } - GPR_ASSERT(closure->cb != nullptr); + CHECK_NE(closure->cb, nullptr); #endif closure->cb(closure->cb_arg, error); #ifndef NDEBUG diff --git a/src/core/lib/iomgr/combiner.cc b/src/core/lib/iomgr/combiner.cc index 9f58920267d..eb36799e215 100644 --- a/src/core/lib/iomgr/combiner.cc +++ b/src/core/lib/iomgr/combiner.cc @@ -22,6 +22,8 @@ #include #include +#include "absl/log/check.h" + #include #include #include @@ -64,7 +66,7 @@ grpc_core::Combiner* grpc_combiner_create( static void really_destroy(grpc_core::Combiner* lock) { GRPC_COMBINER_TRACE(gpr_log(GPR_INFO, "C:%p really_destroy", lock)); - GPR_ASSERT(gpr_atm_no_barrier_load(&lock->state) == 0); + CHECK_EQ(gpr_atm_no_barrier_load(&lock->state), 0); delete lock; } @@ -148,7 +150,7 @@ static void combiner_exec(grpc_core::Combiner* lock, grpc_closure* cl, gpr_atm_no_barrier_store(&lock->initiating_exec_ctx_or_null, 0); } } - GPR_ASSERT(last & STATE_UNORPHANED); // ensure lock has not been destroyed + CHECK(last & STATE_UNORPHANED); // ensure lock has not been destroyed assert(cl->cb); cl->error_data.error = grpc_core::internal::StatusAllocHeapPtr(error); lock->queue.Push(cl->next_data.mpscq_node.get()); @@ -230,7 +232,7 @@ bool grpc_combiner_continue_exec_ctx() { cl->cb(cl->cb_arg, std::move(cl_err)); } else { grpc_closure* c = lock->final_list.head; - GPR_ASSERT(c != nullptr); + CHECK_NE(c, nullptr); grpc_closure_list_init(&lock->final_list); int loops = 0; while (c != nullptr) { @@ -293,7 +295,7 @@ static void enqueue_finally(void* closure, grpc_error_handle error); static void combiner_finally_exec(grpc_core::Combiner* lock, grpc_closure* closure, grpc_error_handle error) { - GPR_ASSERT(lock != nullptr); + CHECK_NE(lock, nullptr); GRPC_COMBINER_TRACE(gpr_log( GPR_INFO, "C:%p grpc_combiner_execute_finally c=%p; ac=%p", lock, closure, grpc_core::ExecCtx::Get()->combiner_data()->active_combiner)); diff --git a/src/core/lib/iomgr/endpoint_cfstream.cc b/src/core/lib/iomgr/endpoint_cfstream.cc index 673a0b9f368..631f310a2b4 100644 --- a/src/core/lib/iomgr/endpoint_cfstream.cc +++ b/src/core/lib/iomgr/endpoint_cfstream.cc @@ -24,12 +24,13 @@ #import +#include "absl/log/check.h" + #include #include #include #include "src/core/lib/address_utils/sockaddr_utils.h" -#include "src/core/lib/gpr/string.h" #include "src/core/lib/iomgr/cfstream_handle.h" #include "src/core/lib/iomgr/closure.h" #include "src/core/lib/iomgr/endpoint.h" @@ -39,6 +40,7 @@ #include "src/core/lib/slice/slice.h" #include "src/core/lib/slice/slice_internal.h" #include "src/core/lib/slice/slice_string_helpers.h" +#include "src/core/util/string.h" extern grpc_core::TraceFlag grpc_tcp_trace; @@ -150,7 +152,7 @@ static void CallWriteCb(CFStreamEndpoint* ep, grpc_error_handle error) { static void ReadAction(void* arg, grpc_error_handle error) { CFStreamEndpoint* ep = static_cast(arg); - GPR_ASSERT(ep->read_cb != nullptr); + CHECK_NE(ep->read_cb, nullptr); if (!error.ok()) { grpc_slice_buffer_reset_and_unref(ep->read_slices); CallReadCb(ep, error); @@ -158,7 +160,7 @@ static void ReadAction(void* arg, grpc_error_handle error) { return; } - GPR_ASSERT(ep->read_slices->count == 1); + CHECK_EQ(ep->read_slices->count, 1); grpc_slice slice = ep->read_slices->slices[0]; size_t len = GRPC_SLICE_LENGTH(slice); CFIndex read_size = @@ -191,7 +193,7 @@ static void ReadAction(void* arg, grpc_error_handle error) { static void WriteAction(void* arg, grpc_error_handle error) { CFStreamEndpoint* ep = static_cast(arg); - GPR_ASSERT(ep->write_cb != nullptr); + CHECK_NE(ep->write_cb, nullptr); if (!error.ok()) { grpc_slice_buffer_reset_and_unref(ep->write_slices); CallWriteCb(ep, error); @@ -247,7 +249,7 @@ static void CFStreamRead(grpc_endpoint* ep, grpc_slice_buffer* slices, gpr_log(GPR_DEBUG, "CFStream endpoint:%p read (%p, %p) length:%zu", ep_impl, slices, cb, slices->length); } - GPR_ASSERT(ep_impl->read_cb == nullptr); + CHECK_EQ(ep_impl->read_cb, nullptr); ep_impl->read_cb = cb; ep_impl->read_slices = slices; grpc_slice_buffer_reset_and_unref(slices); @@ -265,7 +267,7 @@ static void CFStreamWrite(grpc_endpoint* ep, grpc_slice_buffer* slices, gpr_log(GPR_DEBUG, "CFStream endpoint:%p write (%p, %p) length:%zu", ep_impl, slices, cb, slices->length); } - GPR_ASSERT(ep_impl->write_cb == nullptr); + CHECK_EQ(ep_impl->write_cb, nullptr); ep_impl->write_cb = cb; ep_impl->write_slices = slices; EP_REF(ep_impl, "write"); diff --git a/src/core/lib/iomgr/endpoint_pair_posix.cc b/src/core/lib/iomgr/endpoint_pair_posix.cc index b977c0d9e62..42d0e7acdb6 100644 --- a/src/core/lib/iomgr/endpoint_pair_posix.cc +++ b/src/core/lib/iomgr/endpoint_pair_posix.cc @@ -30,29 +30,30 @@ #include +#include "absl/log/check.h" #include "absl/strings/str_cat.h" #include #include #include "src/core/lib/event_engine/channel_args_endpoint_config.h" -#include "src/core/lib/gpr/string.h" #include "src/core/lib/gprpp/crash.h" #include "src/core/lib/iomgr/endpoint_pair.h" #include "src/core/lib/iomgr/socket_utils_posix.h" #include "src/core/lib/iomgr/tcp_posix.h" #include "src/core/lib/iomgr/unix_sockets_posix.h" #include "src/core/lib/resource_quota/api.h" +#include "src/core/util/string.h" static void create_sockets(int sv[2]) { int flags; grpc_create_socketpair_if_unix(sv); flags = fcntl(sv[0], F_GETFL, 0); - GPR_ASSERT(fcntl(sv[0], F_SETFL, flags | O_NONBLOCK) == 0); + CHECK_EQ(fcntl(sv[0], F_SETFL, flags | O_NONBLOCK), 0); flags = fcntl(sv[1], F_GETFL, 0); - GPR_ASSERT(fcntl(sv[1], F_SETFL, flags | O_NONBLOCK) == 0); - GPR_ASSERT(grpc_set_socket_no_sigpipe_if_possible(sv[0]) == absl::OkStatus()); - GPR_ASSERT(grpc_set_socket_no_sigpipe_if_possible(sv[1]) == absl::OkStatus()); + CHECK_EQ(fcntl(sv[1], F_SETFL, flags | O_NONBLOCK), 0); + CHECK(grpc_set_socket_no_sigpipe_if_possible(sv[0]) == absl::OkStatus()); + CHECK(grpc_set_socket_no_sigpipe_if_possible(sv[1]) == absl::OkStatus()); } grpc_endpoint_pair grpc_iomgr_create_endpoint_pair( diff --git a/src/core/lib/iomgr/endpoint_pair_windows.cc b/src/core/lib/iomgr/endpoint_pair_windows.cc index 97e46410da2..729ab575c77 100644 --- a/src/core/lib/iomgr/endpoint_pair_windows.cc +++ b/src/core/lib/iomgr/endpoint_pair_windows.cc @@ -25,6 +25,8 @@ #include #include +#include "absl/log/check.h" + #include #include "src/core/lib/address_utils/sockaddr_utils.h" @@ -43,25 +45,24 @@ static void create_sockets(SOCKET sv[2]) { lst_sock = WSASocket(AF_INET, SOCK_STREAM, IPPROTO_TCP, NULL, 0, grpc_get_default_wsa_socket_flags()); - GPR_ASSERT(lst_sock != INVALID_SOCKET); + CHECK(lst_sock != INVALID_SOCKET); memset(&addr, 0, sizeof(addr)); addr.sin_addr.s_addr = htonl(INADDR_LOOPBACK); addr.sin_family = AF_INET; - GPR_ASSERT(bind(lst_sock, (grpc_sockaddr*)&addr, sizeof(addr)) != - SOCKET_ERROR); - GPR_ASSERT(listen(lst_sock, SOMAXCONN) != SOCKET_ERROR); - GPR_ASSERT(getsockname(lst_sock, (grpc_sockaddr*)&addr, &addr_len) != - SOCKET_ERROR); + CHECK(bind(lst_sock, (grpc_sockaddr*)&addr, sizeof(addr)) != SOCKET_ERROR); + CHECK(listen(lst_sock, SOMAXCONN) != SOCKET_ERROR); + CHECK(getsockname(lst_sock, (grpc_sockaddr*)&addr, &addr_len) != + SOCKET_ERROR); cli_sock = WSASocket(AF_INET, SOCK_STREAM, IPPROTO_TCP, NULL, 0, grpc_get_default_wsa_socket_flags()); - GPR_ASSERT(cli_sock != INVALID_SOCKET); + CHECK(cli_sock != INVALID_SOCKET); - GPR_ASSERT(WSAConnect(cli_sock, (grpc_sockaddr*)&addr, addr_len, NULL, NULL, - NULL, NULL) == 0); + CHECK(WSAConnect(cli_sock, (grpc_sockaddr*)&addr, addr_len, NULL, NULL, NULL, + NULL) == 0); svr_sock = accept(lst_sock, (grpc_sockaddr*)&addr, &addr_len); - GPR_ASSERT(svr_sock != INVALID_SOCKET); + CHECK(svr_sock != INVALID_SOCKET); closesocket(lst_sock); grpc_error_handle error = grpc_tcp_prepare_socket(cli_sock); diff --git a/src/core/lib/iomgr/error.cc b/src/core/lib/iomgr/error.cc index 7e26e3d5c14..b070a764fb3 100644 --- a/src/core/lib/iomgr/error.cc +++ b/src/core/lib/iomgr/error.cc @@ -20,6 +20,7 @@ #include #include +#include "absl/log/check.h" #include "absl/strings/str_format.h" #include @@ -35,9 +36,9 @@ #endif #include "src/core/lib/debug/trace.h" -#include "src/core/lib/gpr/useful.h" #include "src/core/lib/gprpp/strerror.h" #include "src/core/lib/slice/slice_internal.h" +#include "src/core/util/useful.h" grpc_core::DebugOnlyTraceFlag grpc_trace_error_refcount(false, "error_refcount"); @@ -227,7 +228,7 @@ grpc_error_handle grpc_error_add_child(grpc_error_handle src, bool grpc_log_error(const char* what, grpc_error_handle error, const char* file, int line) { - GPR_DEBUG_ASSERT(!error.ok()); + DCHECK(!error.ok()); gpr_log(file, line, GPR_LOG_SEVERITY_ERROR, "%s: %s", what, grpc_core::StatusToString(error).c_str()); return false; diff --git a/src/core/lib/iomgr/error.h b/src/core/lib/iomgr/error.h index 887424cbc73..4d38a90c251 100644 --- a/src/core/lib/iomgr/error.h +++ b/src/core/lib/iomgr/error.h @@ -22,6 +22,7 @@ #include #include +#include "absl/log/check.h" #include "absl/status/status.h" #include @@ -31,10 +32,10 @@ #include #include "src/core/lib/debug/trace.h" -#include "src/core/lib/gpr/spinlock.h" #include "src/core/lib/gprpp/crash.h" #include "src/core/lib/gprpp/status_helper.h" #include "src/core/lib/slice/slice_internal.h" +#include "src/core/util/spinlock.h" /// Opaque representation of an error. @@ -74,7 +75,7 @@ absl::Status grpc_os_error(const grpc_core::DebugLocation& location, int err, const char* call_name); inline absl::Status grpc_assert_never_ok(absl::Status error) { - GPR_ASSERT(!error.ok()); + CHECK(!error.ok()); return error; } diff --git a/src/core/lib/iomgr/ev_epoll1_linux.cc b/src/core/lib/iomgr/ev_epoll1_linux.cc index f5fd5fc95fa..d40b20a93b7 100644 --- a/src/core/lib/iomgr/ev_epoll1_linux.cc +++ b/src/core/lib/iomgr/ev_epoll1_linux.cc @@ -16,6 +16,8 @@ // // +#include "absl/log/check.h" + #include #include @@ -39,6 +41,7 @@ #include #include +#include "absl/log/log.h" #include "absl/strings/str_cat.h" #include "absl/strings/str_format.h" #include "absl/strings/str_join.h" @@ -48,8 +51,6 @@ #include "src/core/lib/debug/stats.h" #include "src/core/lib/debug/stats_data.h" -#include "src/core/lib/gpr/string.h" -#include "src/core/lib/gpr/useful.h" #include "src/core/lib/gprpp/manual_constructor.h" #include "src/core/lib/gprpp/strerror.h" #include "src/core/lib/iomgr/block_annotate.h" @@ -58,6 +59,8 @@ #include "src/core/lib/iomgr/iomgr_internal.h" #include "src/core/lib/iomgr/lockfree_event.h" #include "src/core/lib/iomgr/wakeup_fd_posix.h" +#include "src/core/util/string.h" +#include "src/core/util/useful.h" static grpc_wakeup_fd global_wakeup_fd; static bool g_is_shutdown = true; @@ -98,14 +101,14 @@ static int epoll_create_and_cloexec() { #ifdef GRPC_LINUX_EPOLL_CREATE1 int fd = epoll_create1(EPOLL_CLOEXEC); if (fd < 0) { - gpr_log(GPR_ERROR, "epoll_create1 unavailable"); + LOG(ERROR) << "epoll_create1 unavailable"; } #else int fd = epoll_create(MAX_EPOLL_EVENTS); if (fd < 0) { - gpr_log(GPR_ERROR, "epoll_create unavailable"); + LOG(ERROR) << "epoll_create unavailable"; } else if (fcntl(fd, F_SETFD, FD_CLOEXEC) != 0) { - gpr_log(GPR_ERROR, "fcntl following epoll_create failed"); + LOG(ERROR) << "fcntl following epoll_create failed"; return -1; } #endif @@ -634,8 +637,8 @@ static void pollset_maybe_finish_shutdown(grpc_pollset* pollset) { } static void pollset_shutdown(grpc_pollset* pollset, grpc_closure* closure) { - GPR_ASSERT(pollset->shutdown_closure == nullptr); - GPR_ASSERT(!pollset->shutting_down); + CHECK_EQ(pollset->shutdown_closure, nullptr); + CHECK(!pollset->shutting_down); pollset->shutdown_closure = closure; pollset->shutting_down = true; GRPC_LOG_IF_ERROR("pollset_shutdown", pollset_kick_all(pollset)); @@ -806,7 +809,7 @@ static bool begin_worker(grpc_pollset* pollset, grpc_pollset_worker* worker, } } if (is_reassigning) { - GPR_ASSERT(pollset->reassigning_neighborhood); + CHECK(pollset->reassigning_neighborhood); pollset->reassigning_neighborhood = false; } gpr_mu_unlock(&neighborhood->mu); @@ -815,7 +818,7 @@ static bool begin_worker(grpc_pollset* pollset, grpc_pollset_worker* worker, worker_insert(pollset, worker); pollset->begin_refs--; if (worker->state == UNKICKED && !pollset->kicked_without_poller) { - GPR_ASSERT(gpr_atm_no_barrier_load(&g_active_poller) != (gpr_atm)worker); + CHECK(gpr_atm_no_barrier_load(&g_active_poller) != (gpr_atm)worker); worker->initialized_cv = true; gpr_cv_init(&worker->cv); while (worker->state == UNKICKED && !pollset->shutting_down) { @@ -870,7 +873,7 @@ static bool check_neighborhood_for_available_poller( break; } gpr_mu_lock(&inspect->mu); - GPR_ASSERT(!inspect->seen_inactive); + CHECK(!inspect->seen_inactive); grpc_pollset_worker* inspect_worker = inspect->root_worker; if (inspect_worker != nullptr) { do { @@ -889,7 +892,7 @@ static bool check_neighborhood_for_available_poller( } } else { if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) { - gpr_log(GPR_INFO, " .. beaten to choose next poller"); + LOG(INFO) << " .. beaten to choose next poller"; } } // even if we didn't win the cas, there's a worker, we can stop @@ -939,7 +942,7 @@ static void end_worker(grpc_pollset* pollset, grpc_pollset_worker* worker, if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) { gpr_log(GPR_INFO, " .. choose next poller to be peer %p", worker); } - GPR_ASSERT(worker->next->initialized_cv); + CHECK(worker->next->initialized_cv); gpr_atm_no_barrier_store(&g_active_poller, (gpr_atm)worker->next); SET_KICK_STATE(worker->next, DESIGNATED_POLLER); gpr_cv_signal(&worker->next->cv); @@ -988,12 +991,12 @@ static void end_worker(grpc_pollset* pollset, grpc_pollset_worker* worker, gpr_cv_destroy(&worker->cv); } if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) { - gpr_log(GPR_INFO, " .. remove worker"); + LOG(INFO) << " .. remove worker"; } if (EMPTIED == worker_remove(pollset, worker)) { pollset_maybe_finish_shutdown(pollset); } - GPR_ASSERT(gpr_atm_no_barrier_load(&g_active_poller) != (gpr_atm)worker); + CHECK(gpr_atm_no_barrier_load(&g_active_poller) != (gpr_atm)worker); } // pollset->po.mu lock must be held by the caller before calling this. @@ -1014,8 +1017,8 @@ static grpc_error_handle pollset_work(grpc_pollset* ps, if (begin_worker(ps, &worker, worker_hdl, deadline)) { g_current_thread_pollset = ps; g_current_thread_worker = &worker; - GPR_ASSERT(!ps->shutting_down); - GPR_ASSERT(!ps->seen_inactive); + CHECK(!ps->shutting_down); + CHECK(!ps->seen_inactive); gpr_mu_unlock(&ps->mu); // unlock // This is the designated polling thread at this point and should ideally do @@ -1079,7 +1082,7 @@ static grpc_error_handle pollset_kick(grpc_pollset* pollset, if (root_worker == nullptr) { pollset->kicked_without_poller = true; if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) { - gpr_log(GPR_INFO, " .. kicked_without_poller"); + LOG(INFO) << " .. kicked_without_poller"; } goto done; } @@ -1111,7 +1114,7 @@ static grpc_error_handle pollset_kick(grpc_pollset* pollset, if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) { gpr_log(GPR_INFO, " .. kicked %p", next_worker); } - GPR_ASSERT(next_worker->initialized_cv); + CHECK(next_worker->initialized_cv); SET_KICK_STATE(next_worker, KICKED); gpr_cv_signal(&next_worker->cv); goto done; @@ -1138,13 +1141,13 @@ static grpc_error_handle pollset_kick(grpc_pollset* pollset, goto done; } } else { - GPR_ASSERT(next_worker->state == KICKED); + CHECK(next_worker->state == KICKED); SET_KICK_STATE(next_worker, KICKED); goto done; } } else { if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) { - gpr_log(GPR_INFO, " .. kicked while waking up"); + LOG(INFO) << " .. kicked while waking up"; } goto done; } @@ -1154,7 +1157,7 @@ static grpc_error_handle pollset_kick(grpc_pollset* pollset, if (specific_worker->state == KICKED) { if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) { - gpr_log(GPR_INFO, " .. specific worker already kicked"); + LOG(INFO) << " .. specific worker already kicked"; } goto done; } else if (g_current_thread_worker == specific_worker) { @@ -1167,21 +1170,21 @@ static grpc_error_handle pollset_kick(grpc_pollset* pollset, reinterpret_cast( gpr_atm_no_barrier_load(&g_active_poller))) { if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) { - gpr_log(GPR_INFO, " .. kick active poller"); + LOG(INFO) << " .. kick active poller"; } SET_KICK_STATE(specific_worker, KICKED); ret_err = grpc_wakeup_fd_wakeup(&global_wakeup_fd); goto done; } else if (specific_worker->initialized_cv) { if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) { - gpr_log(GPR_INFO, " .. kick waiting worker"); + LOG(INFO) << " .. kick waiting worker"; } SET_KICK_STATE(specific_worker, KICKED); gpr_cv_signal(&specific_worker->cv); goto done; } else { if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) { - gpr_log(GPR_INFO, " .. kick non-waiting worker"); + LOG(INFO) << " .. kick non-waiting worker"; } SET_KICK_STATE(specific_worker, KICKED); goto done; @@ -1278,7 +1281,7 @@ const grpc_event_engine_vtable grpc_ev_epoll1_posix = { /* check_engine_available = */ [](bool) { return init_epoll1_linux(); }, /* init_engine = */ - []() { GPR_ASSERT(init_epoll1_linux()); }, + []() { CHECK(init_epoll1_linux()); }, shutdown_background_closure, /* shutdown_engine = */ []() { shutdown_engine(); }, @@ -1309,7 +1312,7 @@ static void reset_event_manager_on_fork() { static bool init_epoll1_linux() { if (!g_is_shutdown) return true; if (!grpc_has_wakeup_fd()) { - gpr_log(GPR_ERROR, "Skipping epoll1 because of no wakeup fd."); + LOG(ERROR) << "Skipping epoll1 because of no wakeup fd."; return false; } diff --git a/src/core/lib/iomgr/ev_poll_posix.cc b/src/core/lib/iomgr/ev_poll_posix.cc index 730eda75097..7d290d7d83e 100644 --- a/src/core/lib/iomgr/ev_poll_posix.cc +++ b/src/core/lib/iomgr/ev_poll_posix.cc @@ -33,6 +33,8 @@ #include +#include "absl/log/check.h" +#include "absl/log/log.h" #include "absl/strings/str_cat.h" #include "absl/strings/str_format.h" @@ -41,13 +43,13 @@ #include "src/core/lib/debug/stats.h" #include "src/core/lib/debug/stats_data.h" -#include "src/core/lib/gpr/useful.h" #include "src/core/lib/gprpp/crash.h" #include "src/core/lib/gprpp/thd.h" #include "src/core/lib/iomgr/block_annotate.h" #include "src/core/lib/iomgr/ev_poll_posix.h" #include "src/core/lib/iomgr/iomgr_internal.h" #include "src/core/lib/iomgr/wakeup_fd_posix.h" +#include "src/core/util/useful.h" #define GRPC_POLLSET_KICK_BROADCAST ((grpc_pollset_worker*)1) @@ -340,7 +342,7 @@ static void ref_by(grpc_fd* fd, int n, const char* reason, const char* file, } while (0) static void ref_by(grpc_fd* fd, int n) { #endif - GPR_ASSERT(gpr_atm_no_barrier_fetch_add(&fd->refst, n) > 0); + CHECK_GT(gpr_atm_no_barrier_fetch_add(&fd->refst, n), 0); } #ifndef NDEBUG @@ -365,14 +367,14 @@ static void unref_by(grpc_fd* fd, int n) { fd->shutdown_error.~Status(); gpr_free(fd); } else { - GPR_ASSERT(old > n); + CHECK(old > n); } } static grpc_fd* fd_create(int fd, const char* name, bool track_err) { // Avoid unused-parameter warning for debug-only parameter (void)track_err; - GPR_DEBUG_ASSERT(track_err == false); + DCHECK(track_err == false); grpc_fd* r = static_cast(gpr_malloc(sizeof(*r))); gpr_mu_init(&r->mu); gpr_atm_rel_store(&r->refst, 1); @@ -402,7 +404,7 @@ static bool fd_is_orphaned(grpc_fd* fd) { static grpc_error_handle pollset_kick_locked(grpc_fd_watcher* watcher) { gpr_mu_lock(&watcher->pollset->mu); - GPR_ASSERT(watcher->worker); + CHECK(watcher->worker); grpc_error_handle err = pollset_kick_ext(watcher->pollset, watcher->worker, GRPC_POLLSET_REEVALUATE_POLLING_ON_WAKEUP); @@ -582,7 +584,7 @@ static void fd_notify_on_write(grpc_fd* fd, grpc_closure* closure) { static void fd_notify_on_error(grpc_fd* /*fd*/, grpc_closure* closure) { if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) { - gpr_log(GPR_ERROR, "Polling engine does not support tracking errors."); + LOG(ERROR) << "Polling engine does not support tracking errors."; } grpc_core::ExecCtx::Run(DEBUG_LOCATION, closure, absl::CancelledError()); } @@ -601,7 +603,7 @@ static void fd_set_writable(grpc_fd* fd) { static void fd_set_error(grpc_fd* /*fd*/) { if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) { - gpr_log(GPR_ERROR, "Polling engine does not support tracking errors."); + LOG(ERROR) << "Polling engine does not support tracking errors."; } } @@ -778,7 +780,7 @@ static grpc_error_handle pollset_kick_ext(grpc_pollset* p, // pollset->mu already held if (specific_worker != nullptr) { if (specific_worker == GRPC_POLLSET_KICK_BROADCAST) { - GPR_ASSERT((flags & GRPC_POLLSET_REEVALUATE_POLLING_ON_WAKEUP) == 0); + CHECK_EQ((flags & GRPC_POLLSET_REEVALUATE_POLLING_ON_WAKEUP), 0u); for (specific_worker = p->root_worker.next; specific_worker != &p->root_worker; specific_worker = specific_worker->next) { @@ -802,7 +804,7 @@ static grpc_error_handle pollset_kick_ext(grpc_pollset* p, grpc_wakeup_fd_wakeup(&specific_worker->wakeup_fd->fd)); } } else if (g_current_thread_poller != p) { - GPR_ASSERT((flags & GRPC_POLLSET_REEVALUATE_POLLING_ON_WAKEUP) == 0); + CHECK_EQ((flags & GRPC_POLLSET_REEVALUATE_POLLING_ON_WAKEUP), 0u); specific_worker = pop_front_worker(p); if (specific_worker != nullptr) { if (g_current_thread_worker == specific_worker) { @@ -855,7 +857,7 @@ static void pollset_init(grpc_pollset* pollset, gpr_mu** mu) { } static void pollset_destroy(grpc_pollset* pollset) { - GPR_ASSERT(!pollset_has_workers(pollset)); + CHECK(!pollset_has_workers(pollset)); while (pollset->local_wakeup_cache) { grpc_cached_wakeup_fd* next = pollset->local_wakeup_cache->next; fork_fd_list_remove_node(pollset->local_wakeup_cache->fork_fd_list); @@ -1137,7 +1139,7 @@ static grpc_error_handle pollset_work(grpc_pollset* pollset, } static void pollset_shutdown(grpc_pollset* pollset, grpc_closure* closure) { - GPR_ASSERT(!pollset->shutting_down); + CHECK(!pollset->shutting_down); pollset->shutting_down = 1; pollset->shutdown_done = closure; (void)pollset_kick(pollset, GRPC_POLLSET_KICK_BROADCAST); @@ -1396,7 +1398,7 @@ const grpc_event_engine_vtable grpc_ev_poll_posix = { // check_engine_available = [](bool) { if (!grpc_has_wakeup_fd()) { - gpr_log(GPR_ERROR, "Skipping poll because of no wakeup fd."); + LOG(ERROR) << "Skipping poll because of no wakeup fd."; return false; } if (!GRPC_LOG_IF_ERROR("pollset_global_init", pollset_global_init())) { diff --git a/src/core/lib/iomgr/ev_posix.cc b/src/core/lib/iomgr/ev_posix.cc index 5e10ae02ba4..e204b4a697b 100644 --- a/src/core/lib/iomgr/ev_posix.cc +++ b/src/core/lib/iomgr/ev_posix.cc @@ -25,6 +25,7 @@ #include +#include "absl/log/log.h" #include "absl/strings/str_format.h" #include "absl/strings/str_split.h" @@ -34,12 +35,12 @@ #include "src/core/lib/config/config_vars.h" #include "src/core/lib/debug/trace.h" -#include "src/core/lib/gpr/useful.h" #include "src/core/lib/gprpp/crash.h" #include "src/core/lib/iomgr/ev_epoll1_linux.h" #include "src/core/lib/iomgr/ev_poll_posix.h" #include "src/core/lib/iomgr/ev_posix.h" #include "src/core/lib/iomgr/internal_errqueue.h" +#include "src/core/util/useful.h" grpc_core::DebugOnlyTraceFlag grpc_polling_trace( false, "polling"); // Disabled by default @@ -109,7 +110,7 @@ static void try_engine(absl::string_view engine) { if (g_vtables[i] != nullptr && is(engine, g_vtables[i]->name) && g_vtables[i]->check_engine_available(engine == g_vtables[i]->name)) { g_event_engine = g_vtables[i]; - gpr_log(GPR_DEBUG, "Using polling engine: %s", g_event_engine->name); + VLOG(2) << "Using polling engine: " << g_event_engine->name; return; } } diff --git a/src/core/lib/iomgr/event_engine_shims/endpoint.cc b/src/core/lib/iomgr/event_engine_shims/endpoint.cc index 9b64e411f91..42238e47062 100644 --- a/src/core/lib/iomgr/event_engine_shims/endpoint.cc +++ b/src/core/lib/iomgr/event_engine_shims/endpoint.cc @@ -18,6 +18,8 @@ #include #include "absl/functional/any_invocable.h" +#include "absl/log/check.h" +#include "absl/log/log.h" #include "absl/status/status.h" #include "absl/status/statusor.h" #include "absl/strings/string_view.h" @@ -36,7 +38,6 @@ #include "src/core/lib/event_engine/shim.h" #include "src/core/lib/event_engine/tcp_socket_utils.h" #include "src/core/lib/event_engine/trace.h" -#include "src/core/lib/gpr/string.h" #include "src/core/lib/gprpp/construct_destruct.h" #include "src/core/lib/gprpp/debug_location.h" #include "src/core/lib/gprpp/sync.h" @@ -48,6 +49,7 @@ #include "src/core/lib/iomgr/port.h" #include "src/core/lib/slice/slice_string_helpers.h" #include "src/core/lib/transport/error_utils.h" +#include "src/core/util/string.h" extern grpc_core::TraceFlag grpc_tcp_trace; @@ -127,7 +129,7 @@ class EventEngineEndpointWrapper { for (i = 0; i < pending_read_buffer_->count; i++) { char* dump = grpc_dump_slice(pending_read_buffer_->slices[i], GPR_DUMP_HEX | GPR_DUMP_ASCII); - gpr_log(GPR_DEBUG, "READ DATA: %s", dump); + VLOG(2) << "READ DATA: " << dump; gpr_free(dump); } } @@ -158,7 +160,7 @@ class EventEngineEndpointWrapper { for (i = 0; i < slices->count; i++) { char* dump = grpc_dump_slice(slices->slices[i], GPR_DUMP_HEX | GPR_DUMP_ASCII); - gpr_log(GPR_DEBUG, "WRITE DATA: %s", dump); + VLOG(2) << "WRITE DATA: " << dump; gpr_free(dump); } } @@ -431,7 +433,7 @@ EventEngineEndpointWrapper::EventEngineEndpointWrapper( grpc_endpoint* grpc_event_engine_endpoint_create( std::unique_ptr ee_endpoint) { - GPR_DEBUG_ASSERT(ee_endpoint != nullptr); + DCHECK(ee_endpoint != nullptr); auto wrapper = new EventEngineEndpointWrapper(std::move(ee_endpoint)); return wrapper->GetGrpcEndpoint(); } diff --git a/src/core/lib/iomgr/exec_ctx.cc b/src/core/lib/iomgr/exec_ctx.cc index 3857e9d61d6..66653a0c15c 100644 --- a/src/core/lib/iomgr/exec_ctx.cc +++ b/src/core/lib/iomgr/exec_ctx.cc @@ -18,6 +18,7 @@ #include "src/core/lib/iomgr/exec_ctx.h" +#include "absl/log/check.h" #include "absl/strings/str_format.h" #include @@ -87,7 +88,7 @@ bool ExecCtx::Flush() { break; } } - GPR_ASSERT(combiner_data_.active_combiner == nullptr); + CHECK_EQ(combiner_data_.active_combiner, nullptr); return did_something; } @@ -110,7 +111,7 @@ void ExecCtx::Run(const DebugLocation& location, grpc_closure* closure, closure->file_initiated = location.file(); closure->line_initiated = location.line(); closure->run = false; - GPR_ASSERT(closure->cb != nullptr); + CHECK_NE(closure->cb, nullptr); #endif closure->error_data.error = internal::StatusAllocHeapPtr(error); exec_ctx_sched(closure); @@ -133,7 +134,7 @@ void ExecCtx::RunList(const DebugLocation& location, grpc_closure_list* list) { c->file_initiated = location.file(); c->line_initiated = location.line(); c->run = false; - GPR_ASSERT(c->cb != nullptr); + CHECK_NE(c->cb, nullptr); #endif exec_ctx_sched(c); c = next; diff --git a/src/core/lib/iomgr/exec_ctx.h b/src/core/lib/iomgr/exec_ctx.h index 6f7bdf08323..68340c7df1c 100644 --- a/src/core/lib/iomgr/exec_ctx.h +++ b/src/core/lib/iomgr/exec_ctx.h @@ -28,18 +28,20 @@ #include #endif +#include "absl/log/check.h" + #include #include #include #include #include -#include "src/core/lib/gpr/time_precise.h" #include "src/core/lib/gprpp/crash.h" #include "src/core/lib/gprpp/debug_location.h" #include "src/core/lib/gprpp/fork.h" #include "src/core/lib/gprpp/time.h" #include "src/core/lib/iomgr/closure.h" +#include "src/core/util/time_precise.h" #if !defined(_WIN32) || !defined(_DLL) #define EXEC_CTX exec_ctx_ @@ -314,8 +316,8 @@ class GRPC_DLL ApplicationCallbackExecCtx { Fork::DecExecCtxCount(); } } else { - GPR_DEBUG_ASSERT(head_ == nullptr); - GPR_DEBUG_ASSERT(tail_ == nullptr); + DCHECK_EQ(head_, nullptr); + DCHECK_EQ(tail_, nullptr); } } diff --git a/src/core/lib/iomgr/executor.cc b/src/core/lib/iomgr/executor.cc index e9baef7c5aa..827bfc10c9d 100644 --- a/src/core/lib/iomgr/executor.cc +++ b/src/core/lib/iomgr/executor.cc @@ -20,17 +20,19 @@ #include +#include "absl/log/check.h" + #include #include #include #include #include -#include "src/core/lib/gpr/useful.h" #include "src/core/lib/gprpp/crash.h" #include "src/core/lib/gprpp/memory.h" #include "src/core/lib/iomgr/exec_ctx.h" #include "src/core/lib/iomgr/iomgr_internal.h" +#include "src/core/util/useful.h" #define MAX_DEPTH 2 @@ -146,7 +148,7 @@ void Executor::SetThreading(bool threading) { return; } - GPR_ASSERT(num_threads_ == 0); + CHECK_EQ(num_threads_, 0); gpr_atm_rel_store(&num_threads_, 1); thd_state_ = static_cast( gpr_zalloc(sizeof(ThreadState) * max_threads_)); @@ -370,8 +372,7 @@ void Executor::InitAll() { // Return if Executor::InitAll() is already called earlier if (executors[static_cast(ExecutorType::DEFAULT)] != nullptr) { - GPR_ASSERT(executors[static_cast(ExecutorType::RESOLVER)] != - nullptr); + CHECK(executors[static_cast(ExecutorType::RESOLVER)] != nullptr); return; } @@ -397,8 +398,7 @@ void Executor::ShutdownAll() { // Return if Executor:SshutdownAll() is already called earlier if (executors[static_cast(ExecutorType::DEFAULT)] == nullptr) { - GPR_ASSERT(executors[static_cast(ExecutorType::RESOLVER)] == - nullptr); + CHECK(executors[static_cast(ExecutorType::RESOLVER)] == nullptr); return; } @@ -426,7 +426,7 @@ void Executor::ShutdownAll() { } bool Executor::IsThreaded(ExecutorType executor_type) { - GPR_ASSERT(executor_type < ExecutorType::NUM_EXECUTORS); + CHECK(executor_type < ExecutorType::NUM_EXECUTORS); return executors[static_cast(executor_type)]->IsThreaded(); } diff --git a/src/core/lib/iomgr/executor.h b/src/core/lib/iomgr/executor.h index 306cc2b3200..e20f2f0242e 100644 --- a/src/core/lib/iomgr/executor.h +++ b/src/core/lib/iomgr/executor.h @@ -21,9 +21,9 @@ #include -#include "src/core/lib/gpr/spinlock.h" #include "src/core/lib/gprpp/thd.h" #include "src/core/lib/iomgr/closure.h" +#include "src/core/util/spinlock.h" namespace grpc_core { diff --git a/src/core/lib/iomgr/fork_windows.cc b/src/core/lib/iomgr/fork_windows.cc index d8e73ed87c4..0e1583173d3 100644 --- a/src/core/lib/iomgr/fork_windows.cc +++ b/src/core/lib/iomgr/fork_windows.cc @@ -22,6 +22,8 @@ #ifndef GRPC_POSIX_FORK +#include "absl/log/log.h" + #include #include @@ -30,7 +32,7 @@ // AROUND VERY SPECIFIC USE CASES. // -void grpc_prefork() { gpr_log(GPR_ERROR, "Forking not supported on Windows"); } +void grpc_prefork() { LOG(ERROR) << "Forking not supported on Windows"; } void grpc_postfork_parent() {} diff --git a/src/core/lib/iomgr/internal_errqueue.cc b/src/core/lib/iomgr/internal_errqueue.cc index 3167cb035de..5223687a439 100644 --- a/src/core/lib/iomgr/internal_errqueue.cc +++ b/src/core/lib/iomgr/internal_errqueue.cc @@ -14,6 +14,8 @@ #include "src/core/lib/iomgr/internal_errqueue.h" +#include "absl/log/log.h" + #include #include @@ -37,7 +39,7 @@ bool KernelSupportsErrqueue() { // least 4.0.0 struct utsname buffer; if (uname(&buffer) != 0) { - gpr_log(GPR_ERROR, "uname: %s", StrError(errno).c_str()); + LOG(ERROR) << "uname: " << StrError(errno); return false; } char* release = buffer.release; @@ -48,7 +50,7 @@ bool KernelSupportsErrqueue() { if (strtol(release, nullptr, 10) >= 4) { return true; } else { - gpr_log(GPR_DEBUG, "ERRQUEUE support not enabled"); + VLOG(2) << "ERRQUEUE support not enabled"; } #endif // GRPC_LINUX_ERRQUEUE return false; diff --git a/src/core/lib/iomgr/iocp_windows.cc b/src/core/lib/iomgr/iocp_windows.cc index 5b94fbb334d..a19c13ab7b6 100644 --- a/src/core/lib/iomgr/iocp_windows.cc +++ b/src/core/lib/iomgr/iocp_windows.cc @@ -26,6 +26,9 @@ #include +#include "absl/log/check.h" +#include "absl/log/log.h" + #include #include #include @@ -73,7 +76,8 @@ grpc_iocp_work_status grpc_iocp_work(grpc_core::Timestamp deadline) { if (success == 0 && overlapped == NULL) { return GRPC_IOCP_WORK_TIMEOUT; } - GPR_ASSERT(completion_key && overlapped); + CHECK(completion_key); + CHECK(overlapped); if (overlapped == &g_iocp_custom_overlap) { gpr_atm_full_fetch_add(&g_custom_events, -1); if (completion_key == (ULONG_PTR)&g_iocp_kick_token) { @@ -101,7 +105,7 @@ grpc_iocp_work_status grpc_iocp_work(grpc_core::Timestamp deadline) { info->bytes_transferred = bytes; info->wsa_error = success ? 0 : WSAGetLastError(); } - GPR_ASSERT(overlapped == &info->overlapped); + CHECK(overlapped == &info->overlapped); bool should_destroy = grpc_socket_become_ready(socket, info); gpr_mu_unlock(&socket->state_mu); if (should_destroy) { @@ -113,7 +117,7 @@ grpc_iocp_work_status grpc_iocp_work(grpc_core::Timestamp deadline) { void grpc_iocp_init(void) { g_iocp = CreateIoCompletionPort(INVALID_HANDLE_VALUE, NULL, (ULONG_PTR)NULL, 0); - GPR_ASSERT(g_iocp); + CHECK(g_iocp); } void grpc_iocp_kick(void) { @@ -122,7 +126,7 @@ void grpc_iocp_kick(void) { gpr_atm_full_fetch_add(&g_custom_events, 1); success = PostQueuedCompletionStatus(g_iocp, 0, (ULONG_PTR)&g_iocp_kick_token, &g_iocp_custom_overlap); - GPR_ASSERT(success); + CHECK(success); } void grpc_iocp_flush(void) { @@ -144,7 +148,7 @@ void grpc_iocp_shutdown(void) { grpc_core::ExecCtx::Get()->Flush(); } - GPR_ASSERT(CloseHandle(g_iocp)); + CHECK(CloseHandle(g_iocp)); } void grpc_iocp_add_socket(grpc_winsocket* socket) { @@ -154,13 +158,13 @@ void grpc_iocp_add_socket(grpc_winsocket* socket) { (uintptr_t)socket, 0); if (!ret) { char* utf8_message = gpr_format_message(WSAGetLastError()); - gpr_log(GPR_ERROR, "Unable to add socket to iocp: %s", utf8_message); + LOG(ERROR) << "Unable to add socket to iocp: " << utf8_message; gpr_free(utf8_message); __debugbreak(); abort(); } socket->added_to_iocp = 1; - GPR_ASSERT(ret == g_iocp); + CHECK(ret == g_iocp); } void grpc_iocp_register_socket_shutdown_socket_locked(grpc_winsocket* socket) { diff --git a/src/core/lib/iomgr/iomgr.cc b/src/core/lib/iomgr/iomgr.cc index 5cda83c1f19..6acf40a66d2 100644 --- a/src/core/lib/iomgr/iomgr.cc +++ b/src/core/lib/iomgr/iomgr.cc @@ -29,8 +29,6 @@ #include #include "src/core/lib/config/config_vars.h" -#include "src/core/lib/gpr/string.h" -#include "src/core/lib/gpr/useful.h" #include "src/core/lib/gprpp/crash.h" #include "src/core/lib/gprpp/thd.h" #include "src/core/lib/iomgr/buffer_list.h" @@ -40,6 +38,8 @@ #include "src/core/lib/iomgr/iomgr_internal.h" #include "src/core/lib/iomgr/timer.h" #include "src/core/lib/iomgr/timer_manager.h" +#include "src/core/util/string.h" +#include "src/core/util/useful.h" static gpr_mu g_mu; static gpr_cv g_rcv; diff --git a/src/core/lib/iomgr/iomgr_windows.cc b/src/core/lib/iomgr/iomgr_windows.cc index 29bb9ea4711..21570d9033f 100644 --- a/src/core/lib/iomgr/iomgr_windows.cc +++ b/src/core/lib/iomgr/iomgr_windows.cc @@ -22,6 +22,8 @@ #ifdef GRPC_WINSOCK_SOCKET +#include "absl/log/check.h" + #include #include "src/core/lib/experiments/experiments.h" @@ -51,12 +53,12 @@ extern grpc_pollset_set_vtable grpc_windows_pollset_set_vtable; static void winsock_init(void) { WSADATA wsaData; int status = WSAStartup(MAKEWORD(2, 0), &wsaData); - GPR_ASSERT(status == 0); + CHECK_EQ(status, 0); } static void winsock_shutdown(void) { int status = WSACleanup(); - GPR_ASSERT(status == 0); + CHECK_EQ(status, 0); } static void iomgr_platform_init(void) { diff --git a/src/core/lib/iomgr/lockfree_event.cc b/src/core/lib/iomgr/lockfree_event.cc index 4d84704b6f1..114625e5e79 100644 --- a/src/core/lib/iomgr/lockfree_event.cc +++ b/src/core/lib/iomgr/lockfree_event.cc @@ -18,6 +18,8 @@ #include "src/core/lib/iomgr/lockfree_event.h" +#include "absl/log/check.h" + #include #include @@ -79,7 +81,7 @@ void LockfreeEvent::DestroyEvent() { if (curr & kShutdownBit) { internal::StatusFreeHeapPtr(curr & ~kShutdownBit); } else { - GPR_ASSERT(curr == kClosureNotReady || curr == kClosureReady); + CHECK(curr == kClosureNotReady || curr == kClosureReady); } // we CAS in a shutdown, no error value here. If this event is interacted // with post-deletion (see the note in the constructor) we want the bit diff --git a/src/core/lib/iomgr/polling_entity.cc b/src/core/lib/iomgr/polling_entity.cc index 7bd4d2e1726..42233112c15 100644 --- a/src/core/lib/iomgr/polling_entity.cc +++ b/src/core/lib/iomgr/polling_entity.cc @@ -18,6 +18,7 @@ #include "src/core/lib/iomgr/polling_entity.h" +#include "absl/log/check.h" #include "absl/strings/str_format.h" #include @@ -70,7 +71,7 @@ void grpc_polling_entity_add_to_pollset_set(grpc_polling_entity* pollent, grpc_pollset_set_add_pollset(pss_dst, pollent->pollent.pollset); } } else if (pollent->tag == GRPC_POLLS_POLLSET_SET) { - GPR_ASSERT(pollent->pollent.pollset_set != nullptr); + CHECK_NE(pollent->pollent.pollset_set, nullptr); grpc_pollset_set_add_pollset_set(pss_dst, pollent->pollent.pollset_set); } else { grpc_core::Crash( @@ -86,11 +87,11 @@ void grpc_polling_entity_del_from_pollset_set(grpc_polling_entity* pollent, grpc_pollset_set_del_pollset(pss_dst, pollent->pollent.pollset); } #else - GPR_ASSERT(pollent->pollent.pollset != nullptr); + CHECK_NE(pollent->pollent.pollset, nullptr); grpc_pollset_set_del_pollset(pss_dst, pollent->pollent.pollset); #endif } else if (pollent->tag == GRPC_POLLS_POLLSET_SET) { - GPR_ASSERT(pollent->pollent.pollset_set != nullptr); + CHECK_NE(pollent->pollent.pollset_set, nullptr); grpc_pollset_set_del_pollset_set(pss_dst, pollent->pollent.pollset_set); } else { grpc_core::Crash( diff --git a/src/core/lib/iomgr/resolve_address_posix.cc b/src/core/lib/iomgr/resolve_address_posix.cc index ee5f9092b9e..c9f2967b898 100644 --- a/src/core/lib/iomgr/resolve_address_posix.cc +++ b/src/core/lib/iomgr/resolve_address_posix.cc @@ -30,8 +30,6 @@ #include #include "src/core/lib/event_engine/default_event_engine.h" -#include "src/core/lib/gpr/string.h" -#include "src/core/lib/gpr/useful.h" #include "src/core/lib/gprpp/crash.h" #include "src/core/lib/gprpp/host_port.h" #include "src/core/lib/gprpp/thd.h" @@ -44,6 +42,8 @@ #include "src/core/lib/iomgr/sockaddr.h" #include "src/core/lib/iomgr/unix_sockets_posix.h" #include "src/core/lib/transport/error_utils.h" +#include "src/core/util/string.h" +#include "src/core/util/useful.h" namespace grpc_core { namespace { diff --git a/src/core/lib/iomgr/resolve_address_windows.cc b/src/core/lib/iomgr/resolve_address_windows.cc index bb5b78de1c8..054f7423816 100644 --- a/src/core/lib/iomgr/resolve_address_windows.cc +++ b/src/core/lib/iomgr/resolve_address_windows.cc @@ -35,7 +35,6 @@ #include "src/core/lib/address_utils/sockaddr_utils.h" #include "src/core/lib/event_engine/default_event_engine.h" -#include "src/core/lib/gpr/string.h" #include "src/core/lib/gprpp/crash.h" #include "src/core/lib/gprpp/host_port.h" #include "src/core/lib/gprpp/thd.h" @@ -47,6 +46,7 @@ #include "src/core/lib/iomgr/resolve_address_windows.h" #include "src/core/lib/iomgr/sockaddr.h" #include "src/core/lib/transport/error_utils.h" +#include "src/core/util/string.h" namespace grpc_core { namespace { diff --git a/src/core/lib/iomgr/sockaddr_utils_posix.cc b/src/core/lib/iomgr/sockaddr_utils_posix.cc index f0535f45acf..d1981a43196 100644 --- a/src/core/lib/iomgr/sockaddr_utils_posix.cc +++ b/src/core/lib/iomgr/sockaddr_utils_posix.cc @@ -37,6 +37,8 @@ #include +#include "absl/log/check.h" + #include #include #include @@ -57,7 +59,7 @@ int grpc_inet_pton(int af, const char* src, void* dst) { } const char* grpc_inet_ntop(int af, const void* src, char* dst, size_t size) { - GPR_ASSERT(size <= (socklen_t)-1); + CHECK(size <= (socklen_t)-1); return inet_ntop(af, src, dst, static_cast(size)); } diff --git a/src/core/lib/iomgr/socket_factory_posix.cc b/src/core/lib/iomgr/socket_factory_posix.cc index 0b511356a97..45a167dc4b2 100644 --- a/src/core/lib/iomgr/socket_factory_posix.cc +++ b/src/core/lib/iomgr/socket_factory_posix.cc @@ -26,8 +26,8 @@ #include #include "src/core/lib/channel/channel_args.h" -#include "src/core/lib/gpr/useful.h" #include "src/core/lib/iomgr/socket_factory_posix.h" +#include "src/core/util/useful.h" void grpc_socket_factory_init(grpc_socket_factory* factory, const grpc_socket_factory_vtable* vtable) { diff --git a/src/core/lib/iomgr/socket_mutator.cc b/src/core/lib/iomgr/socket_mutator.cc index fd909c3e5e6..428cc0bdf3f 100644 --- a/src/core/lib/iomgr/socket_mutator.cc +++ b/src/core/lib/iomgr/socket_mutator.cc @@ -24,8 +24,8 @@ #include #include "src/core/lib/channel/channel_args.h" -#include "src/core/lib/gpr/useful.h" #include "src/core/lib/gprpp/crash.h" +#include "src/core/util/useful.h" void grpc_socket_mutator_init(grpc_socket_mutator* mutator, const grpc_socket_mutator_vtable* vtable) { diff --git a/src/core/lib/iomgr/socket_utils_common_posix.cc b/src/core/lib/iomgr/socket_utils_common_posix.cc index 199eb75f812..7ebafa6897b 100644 --- a/src/core/lib/iomgr/socket_utils_common_posix.cc +++ b/src/core/lib/iomgr/socket_utils_common_posix.cc @@ -43,16 +43,19 @@ #include +#include "absl/log/check.h" +#include "absl/log/log.h" + #include #include #include #include #include "src/core/lib/address_utils/sockaddr_utils.h" -#include "src/core/lib/gpr/string.h" #include "src/core/lib/gprpp/crash.h" #include "src/core/lib/gprpp/strerror.h" #include "src/core/lib/iomgr/sockaddr.h" +#include "src/core/util/string.h" // set a socket to use zerocopy grpc_error_handle grpc_set_socket_zerocopy(int fd) { @@ -409,7 +412,7 @@ grpc_error_handle grpc_set_socket_tcp_user_timeout( } } else { if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) { - gpr_log(GPR_INFO, "TCP_USER_TIMEOUT not supported for this platform"); + LOG(INFO) << "TCP_USER_TIMEOUT not supported for this platform"; } } return absl::OkStatus(); @@ -418,7 +421,7 @@ grpc_error_handle grpc_set_socket_tcp_user_timeout( // set a socket using a grpc_socket_mutator grpc_error_handle grpc_set_socket_with_mutator(int fd, grpc_fd_usage usage, grpc_socket_mutator* mutator) { - GPR_ASSERT(mutator); + CHECK(mutator); if (!grpc_socket_mutator_mutate_fd(mutator, fd, usage)) { return GRPC_ERROR_CREATE("grpc_socket_mutator failed."); } @@ -440,7 +443,7 @@ static void probe_ipv6_once(void) { int fd = socket(AF_INET6, SOCK_STREAM, 0); g_ipv6_loopback_available = 0; if (fd < 0) { - gpr_log(GPR_INFO, "Disabling AF_INET6 sockets because socket() failed."); + LOG(INFO) << "Disabling AF_INET6 sockets because socket() failed."; } else { grpc_sockaddr_in6 addr; memset(&addr, 0, sizeof(addr)); diff --git a/src/core/lib/iomgr/socket_windows.cc b/src/core/lib/iomgr/socket_windows.cc index a3df988a265..44e524c6829 100644 --- a/src/core/lib/iomgr/socket_windows.cc +++ b/src/core/lib/iomgr/socket_windows.cc @@ -27,6 +27,8 @@ // must be included after winsock2.h #include +#include "absl/log/check.h" +#include "absl/log/log.h" #include "absl/strings/str_format.h" #include @@ -159,7 +161,7 @@ void grpc_winsocket_finish(grpc_winsocket* winsocket) { void grpc_winsocket_destroy(grpc_winsocket* winsocket) { gpr_mu_lock(&winsocket->state_mu); - GPR_ASSERT(!winsocket->destroy_called); + CHECK(!winsocket->destroy_called); winsocket->destroy_called = true; bool should_destroy = check_destroyable(winsocket); gpr_mu_unlock(&winsocket->state_mu); @@ -174,7 +176,7 @@ void grpc_winsocket_destroy(grpc_winsocket* winsocket) { //-) The IOCP hasn't completed yet, and we're queuing it for later. static void socket_notify_on_iocp(grpc_winsocket* socket, grpc_closure* closure, grpc_winsocket_callback_info* info) { - GPR_ASSERT(info->closure == NULL); + CHECK(info->closure == NULL); gpr_mu_lock(&socket->state_mu); if (info->has_pending_iocp) { info->has_pending_iocp = 0; @@ -196,7 +198,7 @@ void grpc_socket_notify_on_read(grpc_winsocket* socket, grpc_closure* closure) { bool grpc_socket_become_ready(grpc_winsocket* socket, grpc_winsocket_callback_info* info) { - GPR_ASSERT(!info->has_pending_iocp); + CHECK(!info->has_pending_iocp); if (info->closure) { // Only run the closure once at shutdown. if (!info->closure_already_executed_at_shutdown) { @@ -216,7 +218,7 @@ static void probe_ipv6_once(void) { SOCKET s = socket(AF_INET6, SOCK_STREAM, 0); g_ipv6_loopback_available = 0; if (s == INVALID_SOCKET) { - gpr_log(GPR_INFO, "Disabling AF_INET6 sockets because socket() failed."); + LOG(INFO) << "Disabling AF_INET6 sockets because socket() failed."; } else { grpc_sockaddr_in6 addr; memset(&addr, 0, sizeof(addr)); diff --git a/src/core/lib/iomgr/tcp_client_posix.cc b/src/core/lib/iomgr/tcp_client_posix.cc index 60a2cd58144..8fb50f6754e 100644 --- a/src/core/lib/iomgr/tcp_client_posix.cc +++ b/src/core/lib/iomgr/tcp_client_posix.cc @@ -29,6 +29,8 @@ #include #include "absl/container/flat_hash_map.h" +#include "absl/log/check.h" +#include "absl/log/log.h" #include "absl/strings/str_cat.h" #include @@ -38,7 +40,6 @@ #include "src/core/lib/address_utils/sockaddr_utils.h" #include "src/core/lib/event_engine/resolved_address_internal.h" #include "src/core/lib/event_engine/shim.h" -#include "src/core/lib/gpr/string.h" #include "src/core/lib/gprpp/crash.h" #include "src/core/lib/iomgr/ev_posix.h" #include "src/core/lib/iomgr/event_engine_shims/tcp_client.h" @@ -53,6 +54,7 @@ #include "src/core/lib/iomgr/unix_sockets_posix.h" #include "src/core/lib/iomgr/vsock.h" #include "src/core/lib/slice/slice_internal.h" +#include "src/core/util/string.h" extern grpc_core::TraceFlag grpc_tcp_trace; @@ -102,7 +104,7 @@ static grpc_error_handle prepare_socket( const grpc_core::PosixTcpOptions& options) { grpc_error_handle err; - GPR_ASSERT(fd >= 0); + CHECK_GE(fd, 0); err = grpc_set_socket_nonblocking(fd, 1); if (!err.ok()) goto error; @@ -187,7 +189,7 @@ static void on_writable(void* acp, grpc_error_handle error) { } gpr_mu_lock(&ac->mu); - GPR_ASSERT(ac->fd); + CHECK(ac->fd); fd = ac->fd; ac->fd = nullptr; bool connect_cancelled = ac->connect_cancelled; @@ -239,7 +241,7 @@ static void on_writable(void* acp, grpc_error_handle error) { // your program or another program on the same computer // opened too many network connections. The "easy" fix: // don't do that! - gpr_log(GPR_ERROR, "kernel out of buffers"); + LOG(ERROR) << "kernel out of buffers"; gpr_mu_unlock(&ac->mu); grpc_fd_notify_on_write(fd, &ac->write_closure); return; @@ -274,7 +276,7 @@ finish: std::string str; bool ret = grpc_error_get_str( error, grpc_core::StatusStrProperty::kDescription, &str); - GPR_ASSERT(ret); + CHECK(ret); std::string description = absl::StrCat("Failed to connect to remote host: ", str); error = grpc_error_set_str( @@ -446,7 +448,7 @@ static bool tcp_cancel_connect(int64_t connection_handle) { auto it = shard->pending_connections.find(connection_handle); if (it != shard->pending_connections.end()) { ac = it->second; - GPR_ASSERT(ac != nullptr); + CHECK_NE(ac, nullptr); // Trying to acquire ac->mu here would could cause a deadlock because // the on_writable method tries to acquire the two mutexes used // here in the reverse order. But we dont need to acquire ac->mu before diff --git a/src/core/lib/iomgr/tcp_client_windows.cc b/src/core/lib/iomgr/tcp_client_windows.cc index eb174ac0f87..a0589770aac 100644 --- a/src/core/lib/iomgr/tcp_client_windows.cc +++ b/src/core/lib/iomgr/tcp_client_windows.cc @@ -24,6 +24,8 @@ #ifdef GRPC_WINSOCK_SOCKET +#include "absl/log/check.h" + #include #include #include @@ -83,7 +85,7 @@ static void on_alarm(void* acp, grpc_error_handle /* error */) { static void on_connect(void* acp, grpc_error_handle error) { async_connect* ac = (async_connect*)acp; grpc_endpoint** ep = ac->endpoint; - GPR_ASSERT(*ep == NULL); + CHECK(*ep == NULL); grpc_closure* on_done = ac->on_done; gpr_mu_lock(&ac->mu); @@ -102,7 +104,7 @@ static void on_connect(void* acp, grpc_error_handle error) { BOOL wsa_success = WSAGetOverlappedResult(socket->socket, &socket->write_info.overlapped, &transfered_bytes, FALSE, &flags); - GPR_ASSERT(transfered_bytes == 0); + CHECK_EQ(transfered_bytes, 0); if (!wsa_success) { error = GRPC_WSA_ERROR(WSAGetLastError(), "ConnectEx"); closesocket(socket->socket); @@ -243,7 +245,7 @@ static int64_t tcp_connect(grpc_closure* on_done, grpc_endpoint** endpoint, return 0; failure: - GPR_ASSERT(!error.ok()); + CHECK(!error.ok()); grpc_error_handle final_error = grpc_error_set_str( GRPC_ERROR_CREATE_REFERENCING("Failed to connect", &error, 1), grpc_core::StatusStrProperty::kTargetAddress, diff --git a/src/core/lib/iomgr/tcp_posix.cc b/src/core/lib/iomgr/tcp_posix.cc index 74e6a729f4a..1f9f9817e04 100644 --- a/src/core/lib/iomgr/tcp_posix.cc +++ b/src/core/lib/iomgr/tcp_posix.cc @@ -45,6 +45,9 @@ #include #include +#include "absl/log/check.h" +#include "absl/log/log.h" + #include #include #include @@ -58,8 +61,6 @@ #include "src/core/lib/debug/stats_data.h" #include "src/core/lib/debug/trace.h" #include "src/core/lib/experiments/experiments.h" -#include "src/core/lib/gpr/string.h" -#include "src/core/lib/gpr/useful.h" #include "src/core/lib/gprpp/crash.h" #include "src/core/lib/gprpp/strerror.h" #include "src/core/lib/gprpp/sync.h" @@ -75,6 +76,8 @@ #include "src/core/lib/resource_quota/trace.h" #include "src/core/lib/slice/slice_internal.h" #include "src/core/lib/slice/slice_string_helpers.h" +#include "src/core/util/string.h" +#include "src/core/util/useful.h" #ifndef SOL_TCP #define SOL_TCP IPPROTO_TCP @@ -158,7 +161,7 @@ class TcpZerocopySendRecord { // sendmsg() failed or when tcp_write() is done. bool Unref() { const intptr_t prior = ref_.fetch_sub(1, std::memory_order_acq_rel); - GPR_DEBUG_ASSERT(prior > 0); + DCHECK_GT(prior, 0); if (prior == 1) { AllSendsComplete(); return true; @@ -173,9 +176,9 @@ class TcpZerocopySendRecord { }; void AssertEmpty() { - GPR_DEBUG_ASSERT(buf_.count == 0); - GPR_DEBUG_ASSERT(buf_.length == 0); - GPR_DEBUG_ASSERT(ref_.load(std::memory_order_relaxed) == 0); + DCHECK_EQ(buf_.count, 0u); + DCHECK_EQ(buf_.length, 0u); + DCHECK_EQ(ref_.load(std::memory_order_relaxed), 0); } // When all sendmsg() calls associated with this tcp_write() have been @@ -183,7 +186,7 @@ class TcpZerocopySendRecord { // for each sendmsg()) and all reference counts have been dropped, drop our // reference to the underlying data since we no longer need it. void AllSendsComplete() { - GPR_DEBUG_ASSERT(ref_.load(std::memory_order_relaxed) == 0); + DCHECK_EQ(ref_.load(std::memory_order_relaxed), 0); grpc_slice_buffer_reset_and_unref(&buf_); } @@ -210,7 +213,7 @@ class TcpZerocopySendCtx { if (send_records_ == nullptr || free_send_records_ == nullptr) { gpr_free(send_records_); gpr_free(free_send_records_); - gpr_log(GPR_INFO, "Disabling TCP TX zerocopy due to memory pressure.\n"); + LOG(INFO) << "Disabling TCP TX zerocopy due to memory pressure.\n"; memory_limited_ = true; } else { for (int idx = 0; idx < max_sends_; ++idx) { @@ -262,7 +265,7 @@ class TcpZerocopySendCtx { --last_send_; if (ReleaseSendRecord(last_send_)->Unref()) { // We should still be holding the ref taken by tcp_write(). - GPR_DEBUG_ASSERT(0); + DCHECK(0); } } @@ -298,8 +301,8 @@ class TcpZerocopySendCtx { // max_sends_ tcp_write() instances with zerocopy enabled in flight at the // same time. void PutSendRecord(TcpZerocopySendRecord* record) { - GPR_DEBUG_ASSERT(record >= send_records_ && - record < send_records_ + max_sends_); + DCHECK(record >= send_records_); + DCHECK(record < send_records_ + max_sends_); MutexLock guard(&lock_); PutSendRecordLocked(record); } @@ -318,7 +321,7 @@ class TcpZerocopySendCtx { bool enabled() const { return enabled_; } void set_enabled(bool enabled) { - GPR_DEBUG_ASSERT(!enabled || !memory_limited()); + DCHECK(!enabled || !memory_limited()); enabled_ = enabled; } @@ -356,7 +359,7 @@ class TcpZerocopySendCtx { zcopy_enobuf_state_ = OMemState::CHECK; return false; } - GPR_DEBUG_ASSERT(zcopy_enobuf_state_ != OMemState::CHECK); + DCHECK(zcopy_enobuf_state_ != OMemState::CHECK); if (zcopy_enobuf_state_ == OMemState::FULL) { // A previous sendmsg attempt was blocked by ENOBUFS. Return true to // mark the fd as writable so the next write attempt could be made. @@ -430,7 +433,7 @@ class TcpZerocopySendCtx { TcpZerocopySendRecord* ReleaseSendRecordLocked(uint32_t seq) { auto iter = ctx_lookup_.find(seq); - GPR_DEBUG_ASSERT(iter != ctx_lookup_.end()); + DCHECK(iter != ctx_lookup_.end()); TcpZerocopySendRecord* record = iter->second; ctx_lookup_.erase(iter); return record; @@ -448,7 +451,7 @@ class TcpZerocopySendCtx { } void PutSendRecordLocked(TcpZerocopySendRecord* record) { - GPR_DEBUG_ASSERT(free_send_records_size_ < max_sends_); + DCHECK(free_send_records_size_ < max_sends_); free_send_records_[free_send_records_size_] = record; free_send_records_size_++; } @@ -640,7 +643,7 @@ static void run_poller(void* bp, grpc_error_handle /*error_ignored*/) { g_backup_poller_mu->Lock(); // last "uncovered" notification is the ref that keeps us polling if (g_uncovered_notifications_pending == 1) { - GPR_ASSERT(g_backup_poller == p); + CHECK(g_backup_poller == p); g_backup_poller = nullptr; g_uncovered_notifications_pending = 0; g_backup_poller_mu->Unlock(); @@ -668,7 +671,7 @@ static void drop_uncovered(grpc_tcp* /*tcp*/) { p = g_backup_poller; old_count = g_uncovered_notifications_pending--; g_backup_poller_mu->Unlock(); - GPR_ASSERT(old_count > 1); + CHECK_GT(old_count, 1); if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) { gpr_log(GPR_INFO, "BACKUP_POLLER:%p uncover cnt %d->%d", p, old_count, old_count - 1); @@ -834,7 +837,7 @@ static void tcp_destroy(grpc_endpoint* ep) { static void perform_reclamation(grpc_tcp* tcp) ABSL_LOCKS_EXCLUDED(tcp->read_mu) { if (GRPC_TRACE_FLAG_ENABLED(grpc_resource_quota_trace)) { - gpr_log(GPR_INFO, "TCP: benign reclamation to free memory"); + LOG(INFO) << "TCP: benign reclamation to free memory"; } tcp->read_mu.Lock(); if (tcp->incoming_buffer != nullptr) { @@ -872,7 +875,7 @@ static void tcp_trace_read(grpc_tcp* tcp, grpc_error_handle error) for (i = 0; i < tcp->incoming_buffer->count; i++) { char* dump = grpc_dump_slice(tcp->incoming_buffer->slices[i], GPR_DUMP_HEX | GPR_DUMP_ASCII); - gpr_log(GPR_DEBUG, "READ DATA: %s", dump); + VLOG(2) << "READ DATA: " << dump; gpr_free(dump); } } @@ -949,8 +952,8 @@ static bool tcp_do_read(grpc_tcp* tcp, grpc_error_handle* error) iov[i].iov_len = GRPC_SLICE_LENGTH(tcp->incoming_buffer->slices[i]); } - GPR_ASSERT(tcp->incoming_buffer->length != 0); - GPR_DEBUG_ASSERT(tcp->min_progress_size > 0); + CHECK_NE(tcp->incoming_buffer->length, 0u); + DCHECK_GT(tcp->min_progress_size, 0); do { // Assume there is something on the queue. If we receive TCP_INQ from @@ -1018,12 +1021,12 @@ static bool tcp_do_read(grpc_tcp* tcp, grpc_error_handle* error) grpc_core::global_stats().IncrementTcpReadSize(read_bytes); add_to_estimate(tcp, static_cast(read_bytes)); - GPR_DEBUG_ASSERT((size_t)read_bytes <= - tcp->incoming_buffer->length - total_read_bytes); + DCHECK((size_t)read_bytes <= + tcp->incoming_buffer->length - total_read_bytes); #ifdef GRPC_HAVE_TCP_INQ if (tcp->inq_capable) { - GPR_DEBUG_ASSERT(!(msg.msg_flags & MSG_CTRUNC)); + DCHECK(!(msg.msg_flags & MSG_CTRUNC)); struct cmsghdr* cmsg = CMSG_FIRSTHDR(&msg); for (; cmsg != nullptr; cmsg = CMSG_NXTHDR(&msg, cmsg)) { if (cmsg->cmsg_level == SOL_TCP && cmsg->cmsg_type == TCP_CM_INQ && @@ -1066,7 +1069,7 @@ static bool tcp_do_read(grpc_tcp* tcp, grpc_error_handle* error) finish_estimate(tcp); } - GPR_DEBUG_ASSERT(total_read_bytes > 0); + DCHECK_GT(total_read_bytes, 0u); *error = absl::OkStatus(); if (grpc_core::IsTcpFrameSizeTuningEnabled()) { // Update min progress size based on the total number of bytes read in @@ -1186,7 +1189,7 @@ static void tcp_handle_read(void* arg /* grpc_tcp */, grpc_error_handle error) { static void tcp_read(grpc_endpoint* ep, grpc_slice_buffer* incoming_buffer, grpc_closure* cb, bool urgent, int min_progress_size) { grpc_tcp* tcp = reinterpret_cast(ep); - GPR_ASSERT(tcp->read_cb == nullptr); + CHECK_EQ(tcp->read_cb, nullptr); tcp->read_cb = cb; tcp->read_mu.Lock(); tcp->incoming_buffer = incoming_buffer; @@ -1267,8 +1270,8 @@ static TcpZerocopySendRecord* tcp_get_send_zerocopy_record( } if (zerocopy_send_record != nullptr) { zerocopy_send_record->PrepareForSends(buf); - GPR_DEBUG_ASSERT(buf->count == 0); - GPR_DEBUG_ASSERT(buf->length == 0); + DCHECK_EQ(buf->count, 0u); + DCHECK_EQ(buf->length, 0u); tcp->outgoing_byte_idx = 0; tcp->outgoing_buffer = nullptr; } @@ -1292,7 +1295,7 @@ static bool tcp_write_with_timestamps(grpc_tcp* tcp, struct msghdr* msg, if (setsockopt(tcp->fd, SOL_SOCKET, SO_TIMESTAMPING, static_cast(&opt), sizeof(opt)) != 0) { if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) { - gpr_log(GPR_ERROR, "Failed to set timestamping options on the socket."); + LOG(ERROR) << "Failed to set timestamping options on the socket."; } return false; } @@ -1330,10 +1333,10 @@ static void UnrefMaybePutZerocopySendRecord(grpc_tcp* tcp, uint32_t seq, const char* tag); // Reads \a cmsg to process zerocopy control messages. static void process_zerocopy(grpc_tcp* tcp, struct cmsghdr* cmsg) { - GPR_DEBUG_ASSERT(cmsg); + DCHECK(cmsg); auto serr = reinterpret_cast(CMSG_DATA(cmsg)); - GPR_DEBUG_ASSERT(serr->ee_errno == 0); - GPR_DEBUG_ASSERT(serr->ee_origin == SO_EE_ORIGIN_ZEROCOPY); + DCHECK_EQ(serr->ee_errno, 0u); + DCHECK(serr->ee_origin == SO_EE_ORIGIN_ZEROCOPY); const uint32_t lo = serr->ee_info; const uint32_t hi = serr->ee_data; for (uint32_t seq = lo; seq <= hi; ++seq) { @@ -1343,7 +1346,7 @@ static void process_zerocopy(grpc_tcp* tcp, struct cmsghdr* cmsg) { // both; if so, batch the unref/put. TcpZerocopySendRecord* record = tcp->tcp_zerocopy_send_ctx.ReleaseSendRecord(seq); - GPR_DEBUG_ASSERT(record); + DCHECK(record); UnrefMaybePutZerocopySendRecord(tcp, record, seq, "CALLBACK RCVD"); } if (tcp->tcp_zerocopy_send_ctx.UpdateZeroCopyOMemStateAfterFree()) { @@ -1378,7 +1381,7 @@ struct cmsghdr* process_timestamp(grpc_tcp* tcp, msghdr* msg, cmsghdr* opt_stats = nullptr; if (next_cmsg == nullptr) { if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) { - gpr_log(GPR_ERROR, "Received timestamp without extended error"); + LOG(ERROR) << "Received timestamp without extended error"; } return cmsg; } @@ -1390,7 +1393,7 @@ struct cmsghdr* process_timestamp(grpc_tcp* tcp, msghdr* msg, next_cmsg = CMSG_NXTHDR(msg, opt_stats); if (next_cmsg == nullptr) { if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) { - gpr_log(GPR_ERROR, "Received timestamp without extended error"); + LOG(ERROR) << "Received timestamp without extended error"; } return opt_stats; } @@ -1400,7 +1403,7 @@ struct cmsghdr* process_timestamp(grpc_tcp* tcp, msghdr* msg, !(next_cmsg->cmsg_type == IP_RECVERR || next_cmsg->cmsg_type == IPV6_RECVERR)) { if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) { - gpr_log(GPR_ERROR, "Unexpected control message"); + LOG(ERROR) << "Unexpected control message"; } return cmsg; } @@ -1410,7 +1413,7 @@ struct cmsghdr* process_timestamp(grpc_tcp* tcp, msghdr* msg, auto serr = reinterpret_cast(CMSG_DATA(next_cmsg)); if (serr->ee_errno != ENOMSG || serr->ee_origin != SO_EE_ORIGIN_TIMESTAMPING) { - gpr_log(GPR_ERROR, "Unexpected control message"); + LOG(ERROR) << "Unexpected control message"; return cmsg; } tcp->tb_list.ProcessTimestamp(serr, opt_stats, tss); @@ -1460,7 +1463,7 @@ static bool process_errors(grpc_tcp* tcp) { return processed_err; } if (GPR_UNLIKELY((msg.msg_flags & MSG_CTRUNC) != 0)) { - gpr_log(GPR_ERROR, "Error message was truncated."); + LOG(ERROR) << "Error message was truncated."; } if (msg.msg_controllen == 0) { @@ -1537,15 +1540,15 @@ static bool tcp_write_with_timestamps(grpc_tcp* /*tcp*/, struct msghdr* /*msg*/, ssize_t* /*sent_length*/, int* /* saved_errno */, int /*additional_flags*/) { - gpr_log(GPR_ERROR, "Write with timestamps not supported for this platform"); - GPR_ASSERT(0); + LOG(ERROR) << "Write with timestamps not supported for this platform"; + CHECK(0); return false; } static void tcp_handle_error(void* /*arg*/ /* grpc_tcp */, grpc_error_handle /*error*/) { - gpr_log(GPR_ERROR, "Error handling is not supported for this platform"); - GPR_ASSERT(0); + LOG(ERROR) << "Error handling is not supported for this platform"; + CHECK(0); } #endif // GRPC_LINUX_ERRQUEUE @@ -1584,7 +1587,7 @@ msg_iovlen_type TcpZerocopySendRecord::PopulateIovs(size_t* unwind_slice_idx, ++(out_offset_.slice_idx); out_offset_.byte_idx = 0; } - GPR_DEBUG_ASSERT(iov_size > 0); + DCHECK_GT(iov_size, 0u); return iov_size; } @@ -1739,7 +1742,7 @@ static bool tcp_flush(grpc_tcp* tcp, grpc_error_handle* error) { outgoing_slice_idx++; tcp->outgoing_byte_idx = 0; } - GPR_ASSERT(iov_size > 0); + CHECK_GT(iov_size, 0u); msg.msg_name = nullptr; msg.msg_namelen = 0; @@ -1792,7 +1795,7 @@ static bool tcp_flush(grpc_tcp* tcp, grpc_error_handle* error) { } } - GPR_ASSERT(tcp->outgoing_byte_idx == 0); + CHECK_EQ(tcp->outgoing_byte_idx, 0u); grpc_core::EventLog::Append("tcp-write-outstanding", -sent_length); tcp->bytes_counter += sent_length; trailing = sending_length - static_cast(sent_length); @@ -1840,17 +1843,17 @@ static void tcp_handle_write(void* arg /* grpc_tcp */, : tcp_flush(tcp, &error); if (!flush_result) { if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) { - gpr_log(GPR_INFO, "write: delayed"); + LOG(INFO) << "write: delayed"; } notify_on_write(tcp); // tcp_flush does not populate error if it has returned false. - GPR_DEBUG_ASSERT(error.ok()); + DCHECK(error.ok()); } else { cb = tcp->write_cb; tcp->write_cb = nullptr; tcp->current_zerocopy_send = nullptr; if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) { - gpr_log(GPR_INFO, "write: %s", grpc_core::StatusToString(error).c_str()); + LOG(INFO) << "write: " << grpc_core::StatusToString(error); } // No need to take a ref on error since tcp_flush provides a ref. grpc_core::Closure::Run(DEBUG_LOCATION, cb, error); @@ -1874,14 +1877,14 @@ static void tcp_write(grpc_endpoint* ep, grpc_slice_buffer* buf, if (gpr_should_log(GPR_LOG_SEVERITY_DEBUG)) { char* data = grpc_dump_slice(buf->slices[i], GPR_DUMP_HEX | GPR_DUMP_ASCII); - gpr_log(GPR_DEBUG, "WRITE DATA: %s", data); + VLOG(2) << "WRITE DATA: " << data; gpr_free(data); } } } - GPR_ASSERT(tcp->write_cb == nullptr); - GPR_DEBUG_ASSERT(tcp->current_zerocopy_send == nullptr); + CHECK_EQ(tcp->write_cb, nullptr); + DCHECK_EQ(tcp->current_zerocopy_send, nullptr); if (buf->length == 0) { grpc_core::Closure::Run( @@ -1901,7 +1904,7 @@ static void tcp_write(grpc_endpoint* ep, grpc_slice_buffer* buf, } tcp->outgoing_buffer_arg = arg; if (arg) { - GPR_ASSERT(grpc_event_engine_can_track_errors()); + CHECK(grpc_event_engine_can_track_errors()); } bool flush_result = @@ -1913,12 +1916,12 @@ static void tcp_write(grpc_endpoint* ep, grpc_slice_buffer* buf, tcp->write_cb = cb; tcp->current_zerocopy_send = zerocopy_send_record; if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) { - gpr_log(GPR_INFO, "write: delayed"); + LOG(INFO) << "write: delayed"; } notify_on_write(tcp); } else { if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) { - gpr_log(GPR_INFO, "write: %s", grpc_core::StatusToString(error).c_str()); + LOG(INFO) << "write: " << grpc_core::StatusToString(error); } grpc_core::Closure::Run(DEBUG_LOCATION, cb, error); } @@ -1988,7 +1991,7 @@ grpc_endpoint* grpc_tcp_create(grpc_fd* em_fd, tcp->base.vtable = &vtable; tcp->peer_string = std::string(peer_string); tcp->fd = grpc_fd_wrapped_fd(em_fd); - GPR_ASSERT(options.resource_quota != nullptr); + CHECK(options.resource_quota != nullptr); tcp->memory_owner = options.resource_quota->memory_quota()->CreateMemoryOwner(); tcp->self_reservation = tcp->memory_owner.MakeReservation(sizeof(grpc_tcp)); @@ -2027,7 +2030,7 @@ grpc_endpoint* grpc_tcp_create(grpc_fd* em_fd, if (err == 0) { tcp->tcp_zerocopy_send_ctx.set_enabled(true); } else { - gpr_log(GPR_ERROR, "Failed to set zerocopy options on the socket."); + LOG(ERROR) << "Failed to set zerocopy options on the socket."; } #endif } @@ -2079,7 +2082,7 @@ grpc_endpoint* grpc_tcp_create(grpc_fd* em_fd, int grpc_tcp_fd(grpc_endpoint* ep) { grpc_tcp* tcp = reinterpret_cast(ep); - GPR_ASSERT(ep->vtable == &vtable); + CHECK(ep->vtable == &vtable); return grpc_fd_wrapped_fd(tcp->em_fd); } @@ -2090,7 +2093,7 @@ void grpc_tcp_destroy_and_release_fd(grpc_endpoint* ep, int* fd, grpc_event_engine_endpoint_destroy_and_release_fd(ep, fd, done); } grpc_tcp* tcp = reinterpret_cast(ep); - GPR_ASSERT(ep->vtable == &vtable); + CHECK(ep->vtable == &vtable); tcp->release_fd = fd; tcp->release_fd_cb = done; grpc_slice_buffer_reset_and_unref(&tcp->last_read_buffer); diff --git a/src/core/lib/iomgr/tcp_server_posix.cc b/src/core/lib/iomgr/tcp_server_posix.cc index b90f73057e6..8811eac862b 100644 --- a/src/core/lib/iomgr/tcp_server_posix.cc +++ b/src/core/lib/iomgr/tcp_server_posix.cc @@ -43,6 +43,7 @@ #include +#include "absl/log/check.h" #include "absl/strings/str_cat.h" #include "absl/strings/str_format.h" @@ -89,7 +90,7 @@ using ::grpc_event_engine::experimental::SliceBuffer; static void finish_shutdown(grpc_tcp_server* s) { gpr_mu_lock(&s->mu); - GPR_ASSERT(s->shutdown); + CHECK(s->shutdown); gpr_mu_unlock(&s->mu); if (s->shutdown_complete != nullptr) { grpc_core::ExecCtx::Run(DEBUG_LOCATION, s->shutdown_complete, @@ -234,7 +235,7 @@ static grpc_error_handle CreateEventEngineListener( listener = engine->CreateListener( std::move(accept_cb), [s, ee = keeper, shutdown_complete](absl::Status status) { - GPR_ASSERT(gpr_atm_no_barrier_load(&s->refs.count) == 0); + CHECK_EQ(gpr_atm_no_barrier_load(&s->refs.count), 0); grpc_event_engine::experimental::RunEventEngineClosure( shutdown_complete, absl_status_to_grpc_error(status)); finish_shutdown(s); @@ -287,8 +288,8 @@ static grpc_error_handle tcp_server_create(grpc_closure* shutdown_complete, s->nports = 0; s->options = ::TcpOptionsFromEndpointConfig(config); s->fd_handler = nullptr; - GPR_ASSERT(s->options.resource_quota != nullptr); - GPR_ASSERT(s->on_accept_cb); + CHECK(s->options.resource_quota != nullptr); + CHECK(s->on_accept_cb); s->memory_quota = s->options.resource_quota->memory_quota(); s->pre_allocated_fd = -1; gpr_atm_no_barrier_store(&s->next_pollset_to_assign, 0); @@ -310,7 +311,7 @@ static void destroyed_port(void* server, grpc_error_handle /*error*/) { gpr_mu_unlock(&s->mu); finish_shutdown(s); } else { - GPR_ASSERT(s->destroyed_ports < s->nports); + CHECK(s->destroyed_ports < s->nports); gpr_mu_unlock(&s->mu); } } @@ -322,7 +323,7 @@ static void deactivated_all_ports(grpc_tcp_server* s) { // delete ALL the things gpr_mu_lock(&s->mu); - GPR_ASSERT(s->shutdown); + CHECK(s->shutdown); if (s->head) { grpc_tcp_listener* sp; @@ -351,7 +352,7 @@ static void deactivated_all_ports(grpc_tcp_server* s) { static void tcp_server_destroy(grpc_tcp_server* s) { gpr_mu_lock(&s->mu); - GPR_ASSERT(!s->shutdown); + CHECK(!s->shutdown); s->shutdown = true; // shutdown all fd's if (s->active_ports) { @@ -563,7 +564,8 @@ static grpc_error_handle add_wildcard_addrs_to_server(grpc_tcp_server* s, } else { grpc_error_handle root_err = GRPC_ERROR_CREATE("Failed to add any wildcard listeners"); - GPR_ASSERT(!v6_err.ok() && !v4_err.ok()); + CHECK(!v6_err.ok()); + CHECK(!v4_err.ok()); root_err = grpc_error_add_child(root_err, v6_err); root_err = grpc_error_add_child(root_err, v4_err); return root_err; @@ -614,7 +616,7 @@ static grpc_error_handle clone_port(grpc_tcp_listener* listener, sp->port = port; sp->port_index = listener->port_index; sp->fd_index = listener->fd_index + count - i; - GPR_ASSERT(sp->emfd); + CHECK(sp->emfd); grpc_tcp_server_listener_initialize_retry_timer(sp); while (listener->server->tail->next != nullptr) { listener->server->tail = listener->server->tail->next; @@ -646,7 +648,7 @@ static grpc_error_handle tcp_server_add_port(grpc_tcp_server* s, if (!listen_fd.ok()) { return; } - GPR_DEBUG_ASSERT(*listen_fd > 0); + DCHECK_GT(*listen_fd, 0); s->listen_fd_to_index_map.insert_or_assign( *listen_fd, std::make_tuple(s->n_bind_ports, fd_index++)); }); @@ -661,7 +663,7 @@ static grpc_error_handle tcp_server_add_port(grpc_tcp_server* s, gpr_mu_unlock(&s->mu); return port.status(); } - GPR_ASSERT(addr->len <= GRPC_MAX_SOCKADDR_SIZE); + CHECK(addr->len <= GRPC_MAX_SOCKADDR_SIZE); grpc_tcp_listener* sp; grpc_resolved_address sockname_temp; grpc_resolved_address addr6_v4mapped; @@ -789,12 +791,12 @@ static void tcp_server_start(grpc_tcp_server* s, size_t i; grpc_tcp_listener* sp; gpr_mu_lock(&s->mu); - GPR_ASSERT(s->on_accept_cb); - GPR_ASSERT(s->active_ports == 0); + CHECK(s->on_accept_cb); + CHECK_EQ(s->active_ports, 0u); s->pollsets = pollsets; if (grpc_event_engine::experimental::UseEventEngineListener()) { - GPR_ASSERT(!s->shutdown_listeners); - GPR_ASSERT(GRPC_LOG_IF_ERROR("listener_start", s->ee_listener->Start())); + CHECK(!s->shutdown_listeners); + CHECK(GRPC_LOG_IF_ERROR("listener_start", s->ee_listener->Start())); gpr_mu_unlock(&s->mu); return; } @@ -802,7 +804,7 @@ static void tcp_server_start(grpc_tcp_server* s, while (sp != nullptr) { if (s->so_reuseport && !grpc_is_unix_socket(&sp->addr) && !grpc_is_vsock(&sp->addr) && pollsets->size() > 1) { - GPR_ASSERT(GRPC_LOG_IF_ERROR( + CHECK(GRPC_LOG_IF_ERROR( "clone_port", clone_port(sp, (unsigned)(pollsets->size() - 1)))); for (i = 0; i < pollsets->size(); i++) { grpc_pollset_add_fd((*pollsets)[i], sp->emfd); @@ -894,17 +896,16 @@ class ExternalConnectionHandler : public grpc_core::TcpServerFdHandler { grpc_event_engine::experimental::QueryExtension< grpc_event_engine::experimental::ListenerSupportsFdExtension>( s_->ee_listener.get()); - GPR_ASSERT(listener_supports_fd != nullptr); + CHECK_NE(listener_supports_fd, nullptr); grpc_event_engine::experimental::SliceBuffer pending_data; if (buf != nullptr) { pending_data = grpc_event_engine::experimental::SliceBuffer::TakeCSliceBuffer( buf->data.raw.slice_buffer); } - GPR_ASSERT( - GRPC_LOG_IF_ERROR("listener_handle_external_connection", - listener_supports_fd->HandleExternalConnection( - listener_fd, fd, &pending_data))); + CHECK(GRPC_LOG_IF_ERROR("listener_handle_external_connection", + listener_supports_fd->HandleExternalConnection( + listener_fd, fd, &pending_data))); return; } grpc_pollset* read_notifier_pollset; diff --git a/src/core/lib/iomgr/tcp_server_utils_posix_common.cc b/src/core/lib/iomgr/tcp_server_utils_posix_common.cc index 59de22cd68c..ee8f7350eb6 100644 --- a/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +++ b/src/core/lib/iomgr/tcp_server_utils_posix_common.cc @@ -31,6 +31,8 @@ #include +#include "absl/log/check.h" +#include "absl/log/log.h" #include "absl/strings/str_cat.h" #include @@ -112,7 +114,7 @@ static grpc_error_handle add_socket_to_server(grpc_tcp_server* s, int fd, grpc_error_handle err = grpc_tcp_server_prepare_socket(s, fd, addr, s->so_reuseport, &port); if (!err.ok()) return err; - GPR_ASSERT(port > 0); + CHECK_GT(port, 0); absl::StatusOr addr_str = grpc_sockaddr_to_string(addr, true); if (!addr_str.ok()) { return GRPC_ERROR_CREATE(addr_str.status().ToString()); @@ -145,7 +147,7 @@ static grpc_error_handle add_socket_to_server(grpc_tcp_server* s, int fd, sp->fd_index = fd_index; sp->is_sibling = 0; sp->sibling = nullptr; - GPR_ASSERT(sp->emfd); + CHECK(sp->emfd); gpr_mu_unlock(&s->mu); *listener = sp; @@ -209,7 +211,7 @@ grpc_error_handle grpc_tcp_server_prepare_socket( grpc_resolved_address sockname_temp; grpc_error_handle err; - GPR_ASSERT(fd >= 0); + CHECK_GE(fd, 0); if (so_reuseport && !grpc_is_unix_socket(addr) && !grpc_is_vsock(addr)) { err = grpc_set_socket_reuse_port(fd, 1); @@ -220,7 +222,7 @@ grpc_error_handle grpc_tcp_server_prepare_socket( err = grpc_set_socket_zerocopy(fd); if (!err.ok()) { // it's not fatal, so just log it. - gpr_log(GPR_DEBUG, "Node does not support SO_ZEROCOPY, continuing."); + VLOG(2) << "Node does not support SO_ZEROCOPY, continuing."; } #endif err = grpc_set_socket_nonblocking(fd, 1); @@ -272,7 +274,7 @@ grpc_error_handle grpc_tcp_server_prepare_socket( return absl::OkStatus(); error: - GPR_ASSERT(!err.ok()); + CHECK(!err.ok()); if (fd >= 0) { close(fd); } diff --git a/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc b/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc index 39f233a1079..495e800ea08 100644 --- a/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +++ b/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc @@ -30,6 +30,8 @@ #include +#include "absl/log/check.h" +#include "absl/log/log.h" #include "absl/strings/str_cat.h" #include @@ -114,7 +116,7 @@ grpc_error_handle grpc_tcp_server_add_all_local_addrs(grpc_tcp_server* s, } else if (requested_port <= 0) { return GRPC_ERROR_CREATE("Bad get_unused_port()"); } - gpr_log(GPR_DEBUG, "Picked unused port %d", requested_port); + VLOG(2) << "Picked unused port " << requested_port; } static bool v4_available = grpc_is_ipv4_availabile(); @@ -166,7 +168,7 @@ grpc_error_handle grpc_tcp_server_add_all_local_addrs(grpc_tcp_server* s, err = grpc_error_add_child(root_err, err); break; } else { - GPR_ASSERT(requested_port == new_sp->port); + CHECK(requested_port == new_sp->port); ++fd_index; if (sp != nullptr) { new_sp->is_sibling = 1; diff --git a/src/core/lib/iomgr/tcp_server_windows.cc b/src/core/lib/iomgr/tcp_server_windows.cc index 9de6cb0f268..b2a0ab25be8 100644 --- a/src/core/lib/iomgr/tcp_server_windows.cc +++ b/src/core/lib/iomgr/tcp_server_windows.cc @@ -27,6 +27,8 @@ #include +#include "absl/log/check.h" +#include "absl/log/log.h" #include "absl/strings/str_cat.h" #include @@ -292,7 +294,7 @@ static grpc_error_handle prepare_socket(SOCKET sock, return absl::OkStatus(); failure: - GPR_ASSERT(!error.ok()); + CHECK(!error.ok()); auto addr_uri = grpc_sockaddr_to_uri(addr); error = grpc_error_set_int( grpc_error_set_str( @@ -307,7 +309,7 @@ failure: static void decrement_active_ports_and_notify_locked(grpc_tcp_listener* sp) { sp->shutting_down = 0; - GPR_ASSERT(sp->server->active_ports > 0); + CHECK_GT(sp->server->active_ports, 0u); if (0 == --sp->server->active_ports) { finish_shutdown_locked(sp->server); } @@ -365,7 +367,7 @@ static grpc_error_handle start_accept_locked(grpc_tcp_listener* port) { return error; failure: - GPR_ASSERT(!error.ok()); + CHECK(!error.ok()); if (sock != INVALID_SOCKET) closesocket(sock); return error; } @@ -404,7 +406,7 @@ static void on_accept(void* arg, grpc_error_handle error) { if (!wsa_success) { if (!sp->shutting_down) { char* utf8_message = gpr_format_message(WSAGetLastError()); - gpr_log(GPR_ERROR, "on_accept error: %s", utf8_message); + LOG(ERROR) << "on_accept error: " << utf8_message; gpr_free(utf8_message); } closesocket(sock); @@ -414,7 +416,7 @@ static void on_accept(void* arg, grpc_error_handle error) { (char*)&sp->socket->socket, sizeof(sp->socket->socket)); if (err) { char* utf8_message = gpr_format_message(WSAGetLastError()); - gpr_log(GPR_ERROR, "setsockopt error: %s", utf8_message); + LOG(ERROR) << "setsockopt error: " << utf8_message; gpr_free(utf8_message); } int peer_name_len = (int)peer_name.len; @@ -431,7 +433,7 @@ static void on_accept(void* arg, grpc_error_handle error) { } } else { char* utf8_message = gpr_format_message(WSAGetLastError()); - gpr_log(GPR_ERROR, "getpeername error: %s", utf8_message); + LOG(ERROR) << "getpeername error: " << utf8_message; gpr_free(utf8_message); } std::string fd_name = absl::StrCat("tcp_server:", peer_name_string); @@ -458,7 +460,7 @@ static void on_accept(void* arg, grpc_error_handle error) { // the former socked we created has now either been destroy or assigned // to the new connection. We need to create a new one for the next // connection. - GPR_ASSERT(GRPC_LOG_IF_ERROR("start_accept", start_accept_locked(sp))); + CHECK(GRPC_LOG_IF_ERROR("start_accept", start_accept_locked(sp))); if (0 == --sp->outstanding_calls) { decrement_active_ports_and_notify_locked(sp); } @@ -494,7 +496,7 @@ static grpc_error_handle add_socket_to_server(grpc_tcp_server* s, SOCKET sock, return error; } - GPR_ASSERT(port >= 0); + CHECK_GE(port, 0); gpr_mu_lock(&s->mu); sp = (grpc_tcp_listener*)gpr_malloc(sizeof(grpc_tcp_listener)); sp->next = NULL; @@ -514,7 +516,7 @@ static grpc_error_handle add_socket_to_server(grpc_tcp_server* s, SOCKET sock, sp->port = port; sp->port_index = port_index; GRPC_CLOSURE_INIT(&sp->on_accept, on_accept, sp, grpc_schedule_on_exec_ctx); - GPR_ASSERT(sp->socket); + CHECK(sp->socket); gpr_mu_unlock(&s->mu); *listener = sp; @@ -591,7 +593,7 @@ done: error = error_out; *port = -1; } else { - GPR_ASSERT(sp != NULL); + CHECK(sp != NULL); *port = sp->port; } return error; @@ -601,9 +603,9 @@ static void tcp_server_start(grpc_tcp_server* s, const std::vector* /*pollsets*/) { grpc_tcp_listener* sp; gpr_mu_lock(&s->mu); - GPR_ASSERT(s->active_ports == 0); + CHECK_EQ(s->active_ports, 0u); for (sp = s->head; sp; sp = sp->next) { - GPR_ASSERT(GRPC_LOG_IF_ERROR("start_accept", start_accept_locked(sp))); + CHECK(GRPC_LOG_IF_ERROR("start_accept", start_accept_locked(sp))); s->active_ports++; } gpr_mu_unlock(&s->mu); @@ -653,7 +655,7 @@ static grpc_error_handle event_engine_create(grpc_closure* shutdown_complete, WindowsEventEngine* engine_ptr = reinterpret_cast( config.GetVoidPointer(GRPC_INTERNAL_ARG_EVENT_ENGINE)); grpc_tcp_server* s = (grpc_tcp_server*)gpr_malloc(sizeof(grpc_tcp_server)); - GPR_ASSERT(on_accept_cb != nullptr); + CHECK_NE(on_accept_cb, nullptr); auto accept_cb = [s, on_accept_cb, on_accept_cb_arg]( std::unique_ptr endpoint, MemoryAllocator memory_allocator) { @@ -675,7 +677,7 @@ static grpc_error_handle event_engine_create(grpc_closure* shutdown_complete, grpc_core::RefCountedPtr resource_quota; { void* tmp_quota = config.GetVoidPointer(GRPC_ARG_RESOURCE_QUOTA); - GPR_ASSERT(tmp_quota != nullptr); + CHECK_NE(tmp_quota, nullptr); resource_quota = reinterpret_cast(tmp_quota)->Ref(); } @@ -706,13 +708,13 @@ static grpc_error_handle event_engine_create(grpc_closure* shutdown_complete, static void event_engine_start(grpc_tcp_server* s, const std::vector* /*pollsets*/) { - GPR_ASSERT(s->ee_listener->Start().ok()); + CHECK(s->ee_listener->Start().ok()); } static grpc_error_handle event_engine_add_port( grpc_tcp_server* s, const grpc_resolved_address* addr, int* port) { - GPR_ASSERT(addr != nullptr); - GPR_ASSERT(port != nullptr); + CHECK_NE(addr, nullptr); + CHECK_NE(port, nullptr); auto ee_addr = CreateResolvedAddress(*addr); auto out_port = s->ee_listener->Bind(ee_addr); *port = out_port.ok() ? *out_port : -1; diff --git a/src/core/lib/iomgr/tcp_windows.cc b/src/core/lib/iomgr/tcp_windows.cc index 6ad9bb6a310..4ff54f374b3 100644 --- a/src/core/lib/iomgr/tcp_windows.cc +++ b/src/core/lib/iomgr/tcp_windows.cc @@ -24,6 +24,8 @@ #include +#include "absl/log/check.h" + #include #include #include @@ -31,8 +33,6 @@ #include #include "src/core/lib/address_utils/sockaddr_utils.h" -#include "src/core/lib/gpr/string.h" -#include "src/core/lib/gpr/useful.h" #include "src/core/lib/gprpp/crash.h" #include "src/core/lib/iomgr/iocp_windows.h" #include "src/core/lib/iomgr/sockaddr.h" @@ -43,6 +43,8 @@ #include "src/core/lib/iomgr/timer.h" #include "src/core/lib/slice/slice_internal.h" #include "src/core/lib/slice/slice_string_helpers.h" +#include "src/core/util/string.h" +#include "src/core/util/useful.h" #if defined(__MSYS__) && defined(GPR_ARCH_64) // Nasty workaround for nasty bug when using the 64 bits msys compiler @@ -190,7 +192,7 @@ static void on_read(void* tcpp, grpc_error_handle error) { grpc_slice_buffer_reset_and_unref(tcp->read_slices); } else { if (info->bytes_transferred != 0 && !tcp->shutting_down) { - GPR_ASSERT((size_t)info->bytes_transferred <= tcp->read_slices->length); + CHECK((size_t)info->bytes_transferred <= tcp->read_slices->length); if (static_cast(info->bytes_transferred) != tcp->read_slices->length) { grpc_slice_buffer_trim_end( @@ -199,7 +201,7 @@ static void on_read(void* tcpp, grpc_error_handle error) { static_cast(info->bytes_transferred), &tcp->last_read_buffer); } - GPR_ASSERT((size_t)info->bytes_transferred == tcp->read_slices->length); + CHECK((size_t)info->bytes_transferred == tcp->read_slices->length); if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace) && gpr_should_log(GPR_LOG_SEVERITY_INFO)) { @@ -272,7 +274,7 @@ static void win_read(grpc_endpoint* ep, grpc_slice_buffer* read_slices, GRPC_SLICE_MALLOC(DEFAULT_TARGET_READ_SIZE)); } - GPR_ASSERT(tcp->read_slices->count <= MAX_WSABUF_COUNT); + CHECK(tcp->read_slices->count <= MAX_WSABUF_COUNT); for (i = 0; i < tcp->read_slices->count; i++) { buffers[i].len = (ULONG)GRPC_SLICE_LENGTH( tcp->read_slices->slices[i]); // we know slice size fits in 32bit. @@ -331,7 +333,7 @@ static void on_write(void* tcpp, grpc_error_handle error) { if (info->wsa_error != 0) { error = GRPC_WSA_ERROR(info->wsa_error, "WSASend"); } else { - GPR_ASSERT(info->bytes_transferred <= tcp->write_slices->length); + CHECK(info->bytes_transferred <= tcp->write_slices->length); } } @@ -378,7 +380,7 @@ static void win_write(grpc_endpoint* ep, grpc_slice_buffer* slices, tcp->write_cb = cb; tcp->write_slices = slices; - GPR_ASSERT(tcp->write_slices->count <= UINT_MAX); + CHECK(tcp->write_slices->count <= UINT_MAX); if (tcp->write_slices->count > GPR_ARRAY_SIZE(local_buffers)) { buffers = (WSABUF*)gpr_malloc(sizeof(WSABUF) * tcp->write_slices->count); allocated = buffers; @@ -386,7 +388,7 @@ static void win_write(grpc_endpoint* ep, grpc_slice_buffer* slices, for (i = 0; i < tcp->write_slices->count; i++) { len = GRPC_SLICE_LENGTH(tcp->write_slices->slices[i]); - GPR_ASSERT(len <= ULONG_MAX); + CHECK(len <= ULONG_MAX); buffers[i].len = (ULONG)len; buffers[i].buf = (char*)GRPC_SLICE_START_PTR(tcp->write_slices->slices[i]); } diff --git a/src/core/lib/iomgr/timer_generic.cc b/src/core/lib/iomgr/timer_generic.cc index 04f0bd654de..1b0ab4b71cc 100644 --- a/src/core/lib/iomgr/timer_generic.cc +++ b/src/core/lib/iomgr/timer_generic.cc @@ -20,6 +20,7 @@ #include +#include "absl/log/check.h" #include "absl/strings/str_cat.h" #include "absl/strings/str_format.h" @@ -30,8 +31,6 @@ #include #include "src/core/lib/debug/trace.h" -#include "src/core/lib/gpr/spinlock.h" -#include "src/core/lib/gpr/useful.h" #include "src/core/lib/gprpp/crash.h" #include "src/core/lib/gprpp/manual_constructor.h" #include "src/core/lib/gprpp/time.h" @@ -40,6 +39,8 @@ #include "src/core/lib/iomgr/port.h" #include "src/core/lib/iomgr/timer.h" #include "src/core/lib/iomgr/timer_heap.h" +#include "src/core/util/spinlock.h" +#include "src/core/util/useful.h" #define INVALID_HEAP_INDEX 0xffffffffu @@ -120,7 +121,7 @@ static bool is_in_ht(grpc_timer* t) { } static void add_to_ht(grpc_timer* t) { - GPR_ASSERT(!t->hash_table_next); + CHECK(!t->hash_table_next); size_t i = grpc_core::HashPointer(t, NUM_HASH_BUCKETS); gpr_mu_lock(&g_hash_mu[i]); diff --git a/src/core/lib/iomgr/timer_heap.cc b/src/core/lib/iomgr/timer_heap.cc index 9e3b47b31e5..8f7d950e699 100644 --- a/src/core/lib/iomgr/timer_heap.cc +++ b/src/core/lib/iomgr/timer_heap.cc @@ -23,8 +23,8 @@ #include #include -#include "src/core/lib/gpr/useful.h" #include "src/core/lib/iomgr/port.h" +#include "src/core/util/useful.h" // Adjusts a heap so as to move a hole at position i closer to the root, // until a suitable position is found for element t. Then, copies t into that diff --git a/src/core/lib/iomgr/timer_manager.cc b/src/core/lib/iomgr/timer_manager.cc index 8221d04ddf3..9cab02d2877 100644 --- a/src/core/lib/iomgr/timer_manager.cc +++ b/src/core/lib/iomgr/timer_manager.cc @@ -20,6 +20,9 @@ #include +#include "absl/log/check.h" +#include "absl/log/log.h" + #include #include #include @@ -82,12 +85,12 @@ static void gc_completed_threads(void) { } static void start_timer_thread_and_unlock(void) { - GPR_ASSERT(g_threaded); + CHECK(g_threaded); ++g_waiter_count; ++g_thread_count; gpr_mu_unlock(&g_mu); if (GRPC_TRACE_FLAG_ENABLED(grpc_timer_check_trace)) { - gpr_log(GPR_INFO, "Spawn timer thread"); + LOG(INFO) << "Spawn timer thread"; } completed_thread* ct = static_cast(gpr_malloc(sizeof(*ct))); @@ -123,7 +126,7 @@ static void run_some_timers() { // waiter so that the next deadline is not missed if (!g_has_timed_waiter) { if (GRPC_TRACE_FLAG_ENABLED(grpc_timer_check_trace)) { - gpr_log(GPR_INFO, "kick untimed waiter"); + LOG(INFO) << "kick untimed waiter"; } gpr_cv_signal(&g_cv_wait); } @@ -131,7 +134,7 @@ static void run_some_timers() { } // without our lock, flush the exec_ctx if (GRPC_TRACE_FLAG_ENABLED(grpc_timer_check_trace)) { - gpr_log(GPR_INFO, "flush exec_ctx"); + LOG(INFO) << "flush exec_ctx"; } grpc_core::ExecCtx::Get()->Flush(); gpr_mu_lock(&g_mu); @@ -197,7 +200,7 @@ static bool wait_until(grpc_core::Timestamp next) { if (GRPC_TRACE_FLAG_ENABLED(grpc_timer_check_trace) && next == grpc_core::Timestamp::InfFuture()) { - gpr_log(GPR_INFO, "sleep until kicked"); + LOG(INFO) << "sleep until kicked"; } gpr_cv_wait(&g_cv_wait, &g_mu, next.as_timespec(GPR_CLOCK_MONOTONIC)); @@ -249,7 +252,7 @@ static void timer_main_loop() { // Consequently, we can just sleep forever here and be happy at some // saved wakeup cycles. if (GRPC_TRACE_FLAG_ENABLED(grpc_timer_check_trace)) { - gpr_log(GPR_INFO, "timers not checked: expect another thread to"); + LOG(INFO) << "timers not checked: expect another thread to"; } next = grpc_core::Timestamp::InfFuture(); ABSL_FALLTHROUGH_INTENDED; @@ -275,7 +278,7 @@ static void timer_thread_cleanup(completed_thread* ct) { g_completed_threads = ct; gpr_mu_unlock(&g_mu); if (GRPC_TRACE_FLAG_ENABLED(grpc_timer_check_trace)) { - gpr_log(GPR_INFO, "End timer thread"); + LOG(INFO) << "End timer thread"; } } @@ -316,18 +319,18 @@ void grpc_timer_manager_init(void) { static void stop_threads(void) { gpr_mu_lock(&g_mu); if (GRPC_TRACE_FLAG_ENABLED(grpc_timer_check_trace)) { - gpr_log(GPR_INFO, "stop timer threads: threaded=%d", g_threaded); + LOG(INFO) << "stop timer threads: threaded=" << g_threaded; } if (g_threaded) { g_threaded = false; gpr_cv_broadcast(&g_cv_wait); if (GRPC_TRACE_FLAG_ENABLED(grpc_timer_check_trace)) { - gpr_log(GPR_INFO, "num timer threads: %d", g_thread_count); + LOG(INFO) << "num timer threads: " << g_thread_count; } while (g_thread_count > 0) { gpr_cv_wait(&g_cv_shutdown, &g_mu, gpr_inf_future(GPR_CLOCK_MONOTONIC)); if (GRPC_TRACE_FLAG_ENABLED(grpc_timer_check_trace)) { - gpr_log(GPR_INFO, "num timer threads: %d", g_thread_count); + LOG(INFO) << "num timer threads: " << g_thread_count; } gc_completed_threads(); } diff --git a/src/core/lib/iomgr/unix_sockets_posix.cc b/src/core/lib/iomgr/unix_sockets_posix.cc index 01daa2c90cf..15b2226b688 100644 --- a/src/core/lib/iomgr/unix_sockets_posix.cc +++ b/src/core/lib/iomgr/unix_sockets_posix.cc @@ -33,23 +33,24 @@ #include #endif // GPR_WINDOWS +#include "absl/log/check.h" #include "absl/strings/str_cat.h" #include #include #include "src/core/lib/address_utils/parse_address.h" -#include "src/core/lib/gpr/useful.h" #include "src/core/lib/gprpp/crash.h" #include "src/core/lib/iomgr/sockaddr.h" #include "src/core/lib/iomgr/unix_sockets_posix.h" #include "src/core/lib/transport/error_utils.h" +#include "src/core/util/useful.h" void grpc_create_socketpair_if_unix(int sv[2]) { #ifdef GPR_WINDOWS grpc_core::Crash("AF_UNIX socket pairs are not supported on Windows"); #else - GPR_ASSERT(socketpair(AF_UNIX, SOCK_STREAM, 0, sv) == 0); + CHECK_EQ(socketpair(AF_UNIX, SOCK_STREAM, 0, sv), 0); #endif } diff --git a/src/core/lib/iomgr/unix_sockets_posix_noop.cc b/src/core/lib/iomgr/unix_sockets_posix_noop.cc index c683145668a..8e783c8cb70 100644 --- a/src/core/lib/iomgr/unix_sockets_posix_noop.cc +++ b/src/core/lib/iomgr/unix_sockets_posix_noop.cc @@ -24,6 +24,8 @@ #include +#include "absl/log/check.h" + #include #include "src/core/lib/gprpp/crash.h" @@ -32,7 +34,7 @@ void grpc_create_socketpair_if_unix(int /* sv */[2]) { // TODO: Either implement this for the non-Unix socket case or make // sure that it is never called in any such case. Until then, leave an // assertion to notify if this gets called inadvertently - GPR_ASSERT(0); + CHECK(0); } absl::StatusOr> diff --git a/src/core/lib/iomgr/vsock.cc b/src/core/lib/iomgr/vsock.cc index e28fed350f3..847dabe0f17 100644 --- a/src/core/lib/iomgr/vsock.cc +++ b/src/core/lib/iomgr/vsock.cc @@ -31,10 +31,10 @@ #include #include "src/core/lib/address_utils/parse_address.h" -#include "src/core/lib/gpr/useful.h" #include "src/core/lib/gprpp/crash.h" #include "src/core/lib/iomgr/sockaddr.h" #include "src/core/lib/transport/error_utils.h" +#include "src/core/util/useful.h" absl::StatusOr> grpc_resolve_vsock_address( absl::string_view name) { diff --git a/src/core/lib/json/json_reader.cc b/src/core/lib/json/json_reader.cc index 8944c4219cb..ae249b3824c 100644 --- a/src/core/lib/json/json_reader.cc +++ b/src/core/lib/json/json_reader.cc @@ -24,6 +24,7 @@ #include #include "absl/base/attributes.h" +#include "absl/log/check.h" #include "absl/status/status.h" #include "absl/status/statusor.h" #include "absl/strings/str_cat.h" @@ -279,14 +280,14 @@ bool JsonReader::StartContainer(Json::Type type) { if (type == Json::Type::kObject) { scope.data = Json::Object(); } else { - GPR_ASSERT(type == Json::Type::kArray); + CHECK(type == Json::Type::kArray); scope.data = Json::Array(); } return true; } void JsonReader::EndContainer() { - GPR_ASSERT(!stack_.empty()); + CHECK(!stack_.empty()); Scope scope = std::move(stack_.back()); stack_.pop_back(); key_ = std::move(scope.parent_object_key); diff --git a/src/core/lib/promise/activity.cc b/src/core/lib/promise/activity.cc index b229e5e3a29..614e343bc8f 100644 --- a/src/core/lib/promise/activity.cc +++ b/src/core/lib/promise/activity.cc @@ -18,6 +18,7 @@ #include +#include "absl/log/check.h" #include "absl/strings/str_cat.h" #include "absl/strings/str_format.h" #include "absl/strings/str_join.h" @@ -54,7 +55,7 @@ class FreestandingActivity::Handle final : public Wakeable { // Activity is going away... drop its reference and sever the connection back. void DropActivity() ABSL_LOCKS_EXCLUDED(mu_) { mu_.Lock(); - GPR_ASSERT(activity_ != nullptr); + CHECK_NE(activity_, nullptr); activity_ = nullptr; mu_.Unlock(); Unref(); diff --git a/src/core/lib/promise/activity.h b/src/core/lib/promise/activity.h index d8bf6ed7bd2..daf3e76a6c2 100644 --- a/src/core/lib/promise/activity.h +++ b/src/core/lib/promise/activity.h @@ -24,6 +24,7 @@ #include #include "absl/base/thread_annotations.h" +#include "absl/log/check.h" #include "absl/status/status.h" #include "absl/types/optional.h" @@ -467,11 +468,11 @@ class PromiseActivity final // We shouldn't destruct without calling Cancel() first, and that must get // us to be done_, so we assume that and have no logic to destruct the // promise here. - GPR_ASSERT(done_); + CHECK(done_); } void RunScheduledWakeup() { - GPR_ASSERT(wakeup_scheduled_.exchange(false, std::memory_order_acq_rel)); + CHECK(wakeup_scheduled_.exchange(false, std::memory_order_acq_rel)); Step(); WakeupComplete(); } @@ -535,7 +536,7 @@ class PromiseActivity final // Notification that we're no longer executing - it's ok to destruct the // promise. void MarkDone() ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu()) { - GPR_ASSERT(!std::exchange(done_, true)); + CHECK(!std::exchange(done_, true)); ScopedContext contexts(this); Destruct(&promise_holder_.promise); } @@ -580,10 +581,10 @@ class PromiseActivity final // Until there are no wakeups from within and the promise is incomplete: // poll the promise. absl::optional StepLoop() ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu()) { - GPR_ASSERT(is_current()); + CHECK(is_current()); while (true) { // Run the promise. - GPR_ASSERT(!done_); + CHECK(!done_); auto r = promise_holder_.promise(); if (auto* status = r.value_if_ready()) { // If complete, destroy the promise, flag done, and exit this loop. diff --git a/src/core/lib/promise/context.h b/src/core/lib/promise/context.h index a69effe7a1d..4b1f9ef6369 100644 --- a/src/core/lib/promise/context.h +++ b/src/core/lib/promise/context.h @@ -17,6 +17,7 @@ #include +#include "absl/log/check.h" #include "absl/meta/type_traits.h" #include @@ -114,7 +115,7 @@ bool HasContext() { template T* GetContext() { auto* p = promise_detail::Context::get(); - GPR_ASSERT(p != nullptr); + CHECK_NE(p, nullptr); return p; } diff --git a/src/core/lib/promise/detail/join_state.h b/src/core/lib/promise/detail/join_state.h index 32d87e66296..e930ba53f36 100644 --- a/src/core/lib/promise/detail/join_state.h +++ b/src/core/lib/promise/detail/join_state.h @@ -21,6 +21,8 @@ #include #include +#include "absl/log/check.h" + #include #include @@ -57,7 +59,7 @@ struct JoinState { Construct(&promise1, std::forward(p1)); } JoinState(const JoinState& other) { - GPR_ASSERT(other.ready.none()); + CHECK(other.ready.none()); Construct(&promise0, other.promise0); Construct(&promise1, other.promise1); } @@ -172,7 +174,7 @@ struct JoinState { Construct(&promise2, std::forward(p2)); } JoinState(const JoinState& other) { - GPR_ASSERT(other.ready.none()); + CHECK(other.ready.none()); Construct(&promise0, other.promise0); Construct(&promise1, other.promise1); Construct(&promise2, other.promise2); @@ -329,7 +331,7 @@ struct JoinState { Construct(&promise3, std::forward(p3)); } JoinState(const JoinState& other) { - GPR_ASSERT(other.ready.none()); + CHECK(other.ready.none()); Construct(&promise0, other.promise0); Construct(&promise1, other.promise1); Construct(&promise2, other.promise2); @@ -528,7 +530,7 @@ struct JoinState { Construct(&promise4, std::forward(p4)); } JoinState(const JoinState& other) { - GPR_ASSERT(other.ready.none()); + CHECK(other.ready.none()); Construct(&promise0, other.promise0); Construct(&promise1, other.promise1); Construct(&promise2, other.promise2); @@ -769,7 +771,7 @@ struct JoinState { Construct(&promise5, std::forward(p5)); } JoinState(const JoinState& other) { - GPR_ASSERT(other.ready.none()); + CHECK(other.ready.none()); Construct(&promise0, other.promise0); Construct(&promise1, other.promise1); Construct(&promise2, other.promise2); @@ -1051,7 +1053,7 @@ struct JoinState { Construct(&promise6, std::forward(p6)); } JoinState(const JoinState& other) { - GPR_ASSERT(other.ready.none()); + CHECK(other.ready.none()); Construct(&promise0, other.promise0); Construct(&promise1, other.promise1); Construct(&promise2, other.promise2); @@ -1376,7 +1378,7 @@ struct JoinState { Construct(&promise7, std::forward(p7)); } JoinState(const JoinState& other) { - GPR_ASSERT(other.ready.none()); + CHECK(other.ready.none()); Construct(&promise0, other.promise0); Construct(&promise1, other.promise1); Construct(&promise2, other.promise2); @@ -1742,7 +1744,7 @@ struct JoinState { Construct(&promise8, std::forward(p8)); } JoinState(const JoinState& other) { - GPR_ASSERT(other.ready.none()); + CHECK(other.ready.none()); Construct(&promise0, other.promise0); Construct(&promise1, other.promise1); Construct(&promise2, other.promise2); diff --git a/src/core/lib/promise/detail/promise_like.h b/src/core/lib/promise/detail/promise_like.h index a8b80172c22..8e73577675a 100644 --- a/src/core/lib/promise/detail/promise_like.h +++ b/src/core/lib/promise/detail/promise_like.h @@ -17,6 +17,7 @@ #include +#include "absl/functional/any_invocable.h" #include "absl/meta/type_traits.h" #include @@ -63,6 +64,10 @@ auto WrapInPoll(T&& x) -> decltype(PollWrapper::Wrap(std::forward(x))) { return PollWrapper::Wrap(std::forward(x)); } +// T -> T, const T& -> T +template +using RemoveCVRef = absl::remove_cv_t>; + template class PromiseLike; @@ -73,7 +78,7 @@ template class PromiseLike::type>::value>> { private: - GPR_NO_UNIQUE_ADDRESS F f_; + GPR_NO_UNIQUE_ADDRESS RemoveCVRef f_; public: // NOLINTNEXTLINE - internal detail that drastically simplifies calling code. @@ -82,10 +87,6 @@ class PromiseLike::Type; }; -// T -> T, const T& -> T -template -using RemoveCVRef = absl::remove_cv_t>; - } // namespace promise_detail } // namespace grpc_core diff --git a/src/core/lib/promise/detail/seq_state.h b/src/core/lib/promise/detail/seq_state.h index 604114af4ed..841cd6cb042 100644 --- a/src/core/lib/promise/detail/seq_state.h +++ b/src/core/lib/promise/detail/seq_state.h @@ -22,6 +22,8 @@ #include #include "absl/base/attributes.h" +#include "absl/log/check.h" +#include "absl/log/log.h" #include "absl/strings/str_cat.h" #include @@ -119,7 +121,7 @@ struct SeqState { } SeqState(const SeqState& other) noexcept : state(other.state), whence(other.whence) { - GPR_ASSERT(state == State::kState0); + CHECK(state == State::kState0); Construct(&prior.current_promise, other.prior.current_promise); Construct(&prior.next_factory, other.prior.next_factory); } @@ -143,22 +145,21 @@ struct SeqState { switch (state) { case State::kState0: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, - "seq[%p]: begin poll step 1/2", this); + LOG(INFO).AtLocation(whence.file(), whence.line()) + << "seq[" << this << "]: begin poll step 1/2"; } auto result = prior.current_promise(); PromiseResult0* p = result.value_if_ready(); if (grpc_trace_promise_primitives.enabled()) { - gpr_log( - whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, - "seq[%p]: poll step 1/2 gets %s", this, - p != nullptr - ? (PromiseResultTraits0::IsOk(*p) - ? "ready" - : absl::StrCat("early-error:", - PromiseResultTraits0::ErrorString(*p)) - .c_str()) - : "pending"); + LOG(INFO).AtLocation(whence.file(), whence.line()) + << "seq[" << this << "]: poll step 1/2 gets " + << (p != nullptr + ? (PromiseResultTraits0::IsOk(*p) + ? "ready" + : absl::StrCat( + "early-error:", + PromiseResultTraits0::ErrorString(*p))) + : "pending"); } if (p == nullptr) return Pending{}; if (!PromiseResultTraits0::IsOk(*p)) { @@ -176,14 +177,14 @@ struct SeqState { default: case State::kState1: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, - "seq[%p]: begin poll step 2/2", this); + LOG(INFO).AtLocation(whence.file(), whence.line()) + << "seq[" << this << "]: begin poll step 2/2"; } auto result = current_promise(); if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, - "seq[%p]: poll step 2/2 gets %s", this, - result.ready() ? "ready" : "pending"); + LOG(INFO).AtLocation(whence.file(), whence.line()) + << "seq[" << this << "]: poll step 2/2 gets " + << (result.ready() ? "ready" : "pending"); } auto* p = result.value_if_ready(); if (p == nullptr) return Pending{}; @@ -254,7 +255,7 @@ struct SeqState { } SeqState(const SeqState& other) noexcept : state(other.state), whence(other.whence) { - GPR_ASSERT(state == State::kState0); + CHECK(state == State::kState0); Construct(&prior.current_promise, other.prior.current_promise); Construct(&prior.prior.next_factory, other.prior.prior.next_factory); Construct(&prior.next_factory, other.prior.next_factory); @@ -286,22 +287,21 @@ struct SeqState { switch (state) { case State::kState0: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, - "seq[%p]: begin poll step 1/3", this); + LOG(INFO).AtLocation(whence.file(), whence.line()) + << "seq[" << this << "]: begin poll step 1/3"; } auto result = prior.prior.current_promise(); PromiseResult0* p = result.value_if_ready(); if (grpc_trace_promise_primitives.enabled()) { - gpr_log( - whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, - "seq[%p]: poll step 1/3 gets %s", this, - p != nullptr - ? (PromiseResultTraits0::IsOk(*p) - ? "ready" - : absl::StrCat("early-error:", - PromiseResultTraits0::ErrorString(*p)) - .c_str()) - : "pending"); + LOG(INFO).AtLocation(whence.file(), whence.line()) + << "seq[" << this << "]: poll step 1/3 gets " + << (p != nullptr + ? (PromiseResultTraits0::IsOk(*p) + ? "ready" + : absl::StrCat( + "early-error:", + PromiseResultTraits0::ErrorString(*p))) + : "pending"); } if (p == nullptr) return Pending{}; if (!PromiseResultTraits0::IsOk(*p)) { @@ -318,22 +318,21 @@ struct SeqState { ABSL_FALLTHROUGH_INTENDED; case State::kState1: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, - "seq[%p]: begin poll step 2/3", this); + LOG(INFO).AtLocation(whence.file(), whence.line()) + << "seq[" << this << "]: begin poll step 2/3"; } auto result = prior.current_promise(); PromiseResult1* p = result.value_if_ready(); if (grpc_trace_promise_primitives.enabled()) { - gpr_log( - whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, - "seq[%p]: poll step 2/3 gets %s", this, - p != nullptr - ? (PromiseResultTraits1::IsOk(*p) - ? "ready" - : absl::StrCat("early-error:", - PromiseResultTraits1::ErrorString(*p)) - .c_str()) - : "pending"); + LOG(INFO).AtLocation(whence.file(), whence.line()) + << "seq[" << this << "]: poll step 2/3 gets " + << (p != nullptr + ? (PromiseResultTraits1::IsOk(*p) + ? "ready" + : absl::StrCat( + "early-error:", + PromiseResultTraits1::ErrorString(*p))) + : "pending"); } if (p == nullptr) return Pending{}; if (!PromiseResultTraits1::IsOk(*p)) { @@ -351,14 +350,14 @@ struct SeqState { default: case State::kState2: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, - "seq[%p]: begin poll step 3/3", this); + LOG(INFO).AtLocation(whence.file(), whence.line()) + << "seq[" << this << "]: begin poll step 3/3"; } auto result = current_promise(); if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, - "seq[%p]: poll step 3/3 gets %s", this, - result.ready() ? "ready" : "pending"); + LOG(INFO).AtLocation(whence.file(), whence.line()) + << "seq[" << this << "]: poll step 3/3 gets " + << (result.ready() ? "ready" : "pending"); } auto* p = result.value_if_ready(); if (p == nullptr) return Pending{}; @@ -447,7 +446,7 @@ struct SeqState { } SeqState(const SeqState& other) noexcept : state(other.state), whence(other.whence) { - GPR_ASSERT(state == State::kState0); + CHECK(state == State::kState0); Construct(&prior.current_promise, other.prior.current_promise); Construct(&prior.prior.prior.next_factory, other.prior.prior.prior.next_factory); @@ -488,22 +487,21 @@ struct SeqState { switch (state) { case State::kState0: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, - "seq[%p]: begin poll step 1/4", this); + LOG(INFO).AtLocation(whence.file(), whence.line()) + << "seq[" << this << "]: begin poll step 1/4"; } auto result = prior.prior.prior.current_promise(); PromiseResult0* p = result.value_if_ready(); if (grpc_trace_promise_primitives.enabled()) { - gpr_log( - whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, - "seq[%p]: poll step 1/4 gets %s", this, - p != nullptr - ? (PromiseResultTraits0::IsOk(*p) - ? "ready" - : absl::StrCat("early-error:", - PromiseResultTraits0::ErrorString(*p)) - .c_str()) - : "pending"); + LOG(INFO).AtLocation(whence.file(), whence.line()) + << "seq[" << this << "]: poll step 1/4 gets " + << (p != nullptr + ? (PromiseResultTraits0::IsOk(*p) + ? "ready" + : absl::StrCat( + "early-error:", + PromiseResultTraits0::ErrorString(*p))) + : "pending"); } if (p == nullptr) return Pending{}; if (!PromiseResultTraits0::IsOk(*p)) { @@ -520,22 +518,21 @@ struct SeqState { ABSL_FALLTHROUGH_INTENDED; case State::kState1: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, - "seq[%p]: begin poll step 2/4", this); + LOG(INFO).AtLocation(whence.file(), whence.line()) + << "seq[" << this << "]: begin poll step 2/4"; } auto result = prior.prior.current_promise(); PromiseResult1* p = result.value_if_ready(); if (grpc_trace_promise_primitives.enabled()) { - gpr_log( - whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, - "seq[%p]: poll step 2/4 gets %s", this, - p != nullptr - ? (PromiseResultTraits1::IsOk(*p) - ? "ready" - : absl::StrCat("early-error:", - PromiseResultTraits1::ErrorString(*p)) - .c_str()) - : "pending"); + LOG(INFO).AtLocation(whence.file(), whence.line()) + << "seq[" << this << "]: poll step 2/4 gets " + << (p != nullptr + ? (PromiseResultTraits1::IsOk(*p) + ? "ready" + : absl::StrCat( + "early-error:", + PromiseResultTraits1::ErrorString(*p))) + : "pending"); } if (p == nullptr) return Pending{}; if (!PromiseResultTraits1::IsOk(*p)) { @@ -552,22 +549,21 @@ struct SeqState { ABSL_FALLTHROUGH_INTENDED; case State::kState2: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, - "seq[%p]: begin poll step 3/4", this); + LOG(INFO).AtLocation(whence.file(), whence.line()) + << "seq[" << this << "]: begin poll step 3/4"; } auto result = prior.current_promise(); PromiseResult2* p = result.value_if_ready(); if (grpc_trace_promise_primitives.enabled()) { - gpr_log( - whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, - "seq[%p]: poll step 3/4 gets %s", this, - p != nullptr - ? (PromiseResultTraits2::IsOk(*p) - ? "ready" - : absl::StrCat("early-error:", - PromiseResultTraits2::ErrorString(*p)) - .c_str()) - : "pending"); + LOG(INFO).AtLocation(whence.file(), whence.line()) + << "seq[" << this << "]: poll step 3/4 gets " + << (p != nullptr + ? (PromiseResultTraits2::IsOk(*p) + ? "ready" + : absl::StrCat( + "early-error:", + PromiseResultTraits2::ErrorString(*p))) + : "pending"); } if (p == nullptr) return Pending{}; if (!PromiseResultTraits2::IsOk(*p)) { @@ -585,14 +581,14 @@ struct SeqState { default: case State::kState3: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, - "seq[%p]: begin poll step 4/4", this); + LOG(INFO).AtLocation(whence.file(), whence.line()) + << "seq[" << this << "]: begin poll step 4/4"; } auto result = current_promise(); if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, - "seq[%p]: poll step 4/4 gets %s", this, - result.ready() ? "ready" : "pending"); + LOG(INFO).AtLocation(whence.file(), whence.line()) + << "seq[" << this << "]: poll step 4/4 gets " + << (result.ready() ? "ready" : "pending"); } auto* p = result.value_if_ready(); if (p == nullptr) return Pending{}; @@ -700,7 +696,7 @@ struct SeqState { } SeqState(const SeqState& other) noexcept : state(other.state), whence(other.whence) { - GPR_ASSERT(state == State::kState0); + CHECK(state == State::kState0); Construct(&prior.current_promise, other.prior.current_promise); Construct(&prior.prior.prior.prior.next_factory, other.prior.prior.prior.prior.next_factory); @@ -750,22 +746,21 @@ struct SeqState { switch (state) { case State::kState0: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, - "seq[%p]: begin poll step 1/5", this); + LOG(INFO).AtLocation(whence.file(), whence.line()) + << "seq[" << this << "]: begin poll step 1/5"; } auto result = prior.prior.prior.prior.current_promise(); PromiseResult0* p = result.value_if_ready(); if (grpc_trace_promise_primitives.enabled()) { - gpr_log( - whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, - "seq[%p]: poll step 1/5 gets %s", this, - p != nullptr - ? (PromiseResultTraits0::IsOk(*p) - ? "ready" - : absl::StrCat("early-error:", - PromiseResultTraits0::ErrorString(*p)) - .c_str()) - : "pending"); + LOG(INFO).AtLocation(whence.file(), whence.line()) + << "seq[" << this << "]: poll step 1/5 gets " + << (p != nullptr + ? (PromiseResultTraits0::IsOk(*p) + ? "ready" + : absl::StrCat( + "early-error:", + PromiseResultTraits0::ErrorString(*p))) + : "pending"); } if (p == nullptr) return Pending{}; if (!PromiseResultTraits0::IsOk(*p)) { @@ -782,22 +777,21 @@ struct SeqState { ABSL_FALLTHROUGH_INTENDED; case State::kState1: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, - "seq[%p]: begin poll step 2/5", this); + LOG(INFO).AtLocation(whence.file(), whence.line()) + << "seq[" << this << "]: begin poll step 2/5"; } auto result = prior.prior.prior.current_promise(); PromiseResult1* p = result.value_if_ready(); if (grpc_trace_promise_primitives.enabled()) { - gpr_log( - whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, - "seq[%p]: poll step 2/5 gets %s", this, - p != nullptr - ? (PromiseResultTraits1::IsOk(*p) - ? "ready" - : absl::StrCat("early-error:", - PromiseResultTraits1::ErrorString(*p)) - .c_str()) - : "pending"); + LOG(INFO).AtLocation(whence.file(), whence.line()) + << "seq[" << this << "]: poll step 2/5 gets " + << (p != nullptr + ? (PromiseResultTraits1::IsOk(*p) + ? "ready" + : absl::StrCat( + "early-error:", + PromiseResultTraits1::ErrorString(*p))) + : "pending"); } if (p == nullptr) return Pending{}; if (!PromiseResultTraits1::IsOk(*p)) { @@ -814,22 +808,21 @@ struct SeqState { ABSL_FALLTHROUGH_INTENDED; case State::kState2: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, - "seq[%p]: begin poll step 3/5", this); + LOG(INFO).AtLocation(whence.file(), whence.line()) + << "seq[" << this << "]: begin poll step 3/5"; } auto result = prior.prior.current_promise(); PromiseResult2* p = result.value_if_ready(); if (grpc_trace_promise_primitives.enabled()) { - gpr_log( - whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, - "seq[%p]: poll step 3/5 gets %s", this, - p != nullptr - ? (PromiseResultTraits2::IsOk(*p) - ? "ready" - : absl::StrCat("early-error:", - PromiseResultTraits2::ErrorString(*p)) - .c_str()) - : "pending"); + LOG(INFO).AtLocation(whence.file(), whence.line()) + << "seq[" << this << "]: poll step 3/5 gets " + << (p != nullptr + ? (PromiseResultTraits2::IsOk(*p) + ? "ready" + : absl::StrCat( + "early-error:", + PromiseResultTraits2::ErrorString(*p))) + : "pending"); } if (p == nullptr) return Pending{}; if (!PromiseResultTraits2::IsOk(*p)) { @@ -846,22 +839,21 @@ struct SeqState { ABSL_FALLTHROUGH_INTENDED; case State::kState3: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, - "seq[%p]: begin poll step 4/5", this); + LOG(INFO).AtLocation(whence.file(), whence.line()) + << "seq[" << this << "]: begin poll step 4/5"; } auto result = prior.current_promise(); PromiseResult3* p = result.value_if_ready(); if (grpc_trace_promise_primitives.enabled()) { - gpr_log( - whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, - "seq[%p]: poll step 4/5 gets %s", this, - p != nullptr - ? (PromiseResultTraits3::IsOk(*p) - ? "ready" - : absl::StrCat("early-error:", - PromiseResultTraits3::ErrorString(*p)) - .c_str()) - : "pending"); + LOG(INFO).AtLocation(whence.file(), whence.line()) + << "seq[" << this << "]: poll step 4/5 gets " + << (p != nullptr + ? (PromiseResultTraits3::IsOk(*p) + ? "ready" + : absl::StrCat( + "early-error:", + PromiseResultTraits3::ErrorString(*p))) + : "pending"); } if (p == nullptr) return Pending{}; if (!PromiseResultTraits3::IsOk(*p)) { @@ -879,14 +871,14 @@ struct SeqState { default: case State::kState4: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, - "seq[%p]: begin poll step 5/5", this); + LOG(INFO).AtLocation(whence.file(), whence.line()) + << "seq[" << this << "]: begin poll step 5/5"; } auto result = current_promise(); if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, - "seq[%p]: poll step 5/5 gets %s", this, - result.ready() ? "ready" : "pending"); + LOG(INFO).AtLocation(whence.file(), whence.line()) + << "seq[" << this << "]: poll step 5/5 gets " + << (result.ready() ? "ready" : "pending"); } auto* p = result.value_if_ready(); if (p == nullptr) return Pending{}; @@ -1021,7 +1013,7 @@ struct SeqState { } SeqState(const SeqState& other) noexcept : state(other.state), whence(other.whence) { - GPR_ASSERT(state == State::kState0); + CHECK(state == State::kState0); Construct(&prior.current_promise, other.prior.current_promise); Construct(&prior.prior.prior.prior.prior.next_factory, other.prior.prior.prior.prior.prior.next_factory); @@ -1081,22 +1073,21 @@ struct SeqState { switch (state) { case State::kState0: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, - "seq[%p]: begin poll step 1/6", this); + LOG(INFO).AtLocation(whence.file(), whence.line()) + << "seq[" << this << "]: begin poll step 1/6"; } auto result = prior.prior.prior.prior.prior.current_promise(); PromiseResult0* p = result.value_if_ready(); if (grpc_trace_promise_primitives.enabled()) { - gpr_log( - whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, - "seq[%p]: poll step 1/6 gets %s", this, - p != nullptr - ? (PromiseResultTraits0::IsOk(*p) - ? "ready" - : absl::StrCat("early-error:", - PromiseResultTraits0::ErrorString(*p)) - .c_str()) - : "pending"); + LOG(INFO).AtLocation(whence.file(), whence.line()) + << "seq[" << this << "]: poll step 1/6 gets " + << (p != nullptr + ? (PromiseResultTraits0::IsOk(*p) + ? "ready" + : absl::StrCat( + "early-error:", + PromiseResultTraits0::ErrorString(*p))) + : "pending"); } if (p == nullptr) return Pending{}; if (!PromiseResultTraits0::IsOk(*p)) { @@ -1114,22 +1105,21 @@ struct SeqState { ABSL_FALLTHROUGH_INTENDED; case State::kState1: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, - "seq[%p]: begin poll step 2/6", this); + LOG(INFO).AtLocation(whence.file(), whence.line()) + << "seq[" << this << "]: begin poll step 2/6"; } auto result = prior.prior.prior.prior.current_promise(); PromiseResult1* p = result.value_if_ready(); if (grpc_trace_promise_primitives.enabled()) { - gpr_log( - whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, - "seq[%p]: poll step 2/6 gets %s", this, - p != nullptr - ? (PromiseResultTraits1::IsOk(*p) - ? "ready" - : absl::StrCat("early-error:", - PromiseResultTraits1::ErrorString(*p)) - .c_str()) - : "pending"); + LOG(INFO).AtLocation(whence.file(), whence.line()) + << "seq[" << this << "]: poll step 2/6 gets " + << (p != nullptr + ? (PromiseResultTraits1::IsOk(*p) + ? "ready" + : absl::StrCat( + "early-error:", + PromiseResultTraits1::ErrorString(*p))) + : "pending"); } if (p == nullptr) return Pending{}; if (!PromiseResultTraits1::IsOk(*p)) { @@ -1146,22 +1136,21 @@ struct SeqState { ABSL_FALLTHROUGH_INTENDED; case State::kState2: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, - "seq[%p]: begin poll step 3/6", this); + LOG(INFO).AtLocation(whence.file(), whence.line()) + << "seq[" << this << "]: begin poll step 3/6"; } auto result = prior.prior.prior.current_promise(); PromiseResult2* p = result.value_if_ready(); if (grpc_trace_promise_primitives.enabled()) { - gpr_log( - whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, - "seq[%p]: poll step 3/6 gets %s", this, - p != nullptr - ? (PromiseResultTraits2::IsOk(*p) - ? "ready" - : absl::StrCat("early-error:", - PromiseResultTraits2::ErrorString(*p)) - .c_str()) - : "pending"); + LOG(INFO).AtLocation(whence.file(), whence.line()) + << "seq[" << this << "]: poll step 3/6 gets " + << (p != nullptr + ? (PromiseResultTraits2::IsOk(*p) + ? "ready" + : absl::StrCat( + "early-error:", + PromiseResultTraits2::ErrorString(*p))) + : "pending"); } if (p == nullptr) return Pending{}; if (!PromiseResultTraits2::IsOk(*p)) { @@ -1178,22 +1167,21 @@ struct SeqState { ABSL_FALLTHROUGH_INTENDED; case State::kState3: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, - "seq[%p]: begin poll step 4/6", this); + LOG(INFO).AtLocation(whence.file(), whence.line()) + << "seq[" << this << "]: begin poll step 4/6"; } auto result = prior.prior.current_promise(); PromiseResult3* p = result.value_if_ready(); if (grpc_trace_promise_primitives.enabled()) { - gpr_log( - whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, - "seq[%p]: poll step 4/6 gets %s", this, - p != nullptr - ? (PromiseResultTraits3::IsOk(*p) - ? "ready" - : absl::StrCat("early-error:", - PromiseResultTraits3::ErrorString(*p)) - .c_str()) - : "pending"); + LOG(INFO).AtLocation(whence.file(), whence.line()) + << "seq[" << this << "]: poll step 4/6 gets " + << (p != nullptr + ? (PromiseResultTraits3::IsOk(*p) + ? "ready" + : absl::StrCat( + "early-error:", + PromiseResultTraits3::ErrorString(*p))) + : "pending"); } if (p == nullptr) return Pending{}; if (!PromiseResultTraits3::IsOk(*p)) { @@ -1210,22 +1198,21 @@ struct SeqState { ABSL_FALLTHROUGH_INTENDED; case State::kState4: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, - "seq[%p]: begin poll step 5/6", this); + LOG(INFO).AtLocation(whence.file(), whence.line()) + << "seq[" << this << "]: begin poll step 5/6"; } auto result = prior.current_promise(); PromiseResult4* p = result.value_if_ready(); if (grpc_trace_promise_primitives.enabled()) { - gpr_log( - whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, - "seq[%p]: poll step 5/6 gets %s", this, - p != nullptr - ? (PromiseResultTraits4::IsOk(*p) - ? "ready" - : absl::StrCat("early-error:", - PromiseResultTraits4::ErrorString(*p)) - .c_str()) - : "pending"); + LOG(INFO).AtLocation(whence.file(), whence.line()) + << "seq[" << this << "]: poll step 5/6 gets " + << (p != nullptr + ? (PromiseResultTraits4::IsOk(*p) + ? "ready" + : absl::StrCat( + "early-error:", + PromiseResultTraits4::ErrorString(*p))) + : "pending"); } if (p == nullptr) return Pending{}; if (!PromiseResultTraits4::IsOk(*p)) { @@ -1243,14 +1230,14 @@ struct SeqState { default: case State::kState5: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: begin poll step 6/6", this); } auto result = current_promise(); if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, - "seq[%p]: poll step 6/6 gets %s", this, - result.ready() ? "ready" : "pending"); + LOG(INFO).AtLocation(whence.file(), whence.line()) + << "seq[" << this << "]: poll step 6/6 gets " + << (result.ready() ? "ready" : "pending"); } auto* p = result.value_if_ready(); if (p == nullptr) return Pending{}; @@ -1405,7 +1392,7 @@ struct SeqState { } SeqState(const SeqState& other) noexcept : state(other.state), whence(other.whence) { - GPR_ASSERT(state == State::kState0); + CHECK(state == State::kState0); Construct(&prior.current_promise, other.prior.current_promise); Construct(&prior.prior.prior.prior.prior.prior.next_factory, other.prior.prior.prior.prior.prior.prior.next_factory); @@ -1477,22 +1464,21 @@ struct SeqState { switch (state) { case State::kState0: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, - "seq[%p]: begin poll step 1/7", this); + LOG(INFO).AtLocation(whence.file(), whence.line()) + << "seq[" << this << "]: begin poll step 1/7"; } auto result = prior.prior.prior.prior.prior.prior.current_promise(); PromiseResult0* p = result.value_if_ready(); if (grpc_trace_promise_primitives.enabled()) { - gpr_log( - whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, - "seq[%p]: poll step 1/7 gets %s", this, - p != nullptr - ? (PromiseResultTraits0::IsOk(*p) - ? "ready" - : absl::StrCat("early-error:", - PromiseResultTraits0::ErrorString(*p)) - .c_str()) - : "pending"); + LOG(INFO).AtLocation(whence.file(), whence.line()) + << "seq[" << this << "]: poll step 1/7 gets " + << (p != nullptr + ? (PromiseResultTraits0::IsOk(*p) + ? "ready" + : absl::StrCat( + "early-error:", + PromiseResultTraits0::ErrorString(*p))) + : "pending"); } if (p == nullptr) return Pending{}; if (!PromiseResultTraits0::IsOk(*p)) { @@ -1510,22 +1496,21 @@ struct SeqState { ABSL_FALLTHROUGH_INTENDED; case State::kState1: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, - "seq[%p]: begin poll step 2/7", this); + LOG(INFO).AtLocation(whence.file(), whence.line()) + << "seq[" << this << "]: begin poll step 2/7"; } auto result = prior.prior.prior.prior.prior.current_promise(); PromiseResult1* p = result.value_if_ready(); if (grpc_trace_promise_primitives.enabled()) { - gpr_log( - whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, - "seq[%p]: poll step 2/7 gets %s", this, - p != nullptr - ? (PromiseResultTraits1::IsOk(*p) - ? "ready" - : absl::StrCat("early-error:", - PromiseResultTraits1::ErrorString(*p)) - .c_str()) - : "pending"); + LOG(INFO).AtLocation(whence.file(), whence.line()) + << "seq[" << this << "]: poll step 2/7 gets " + << (p != nullptr + ? (PromiseResultTraits1::IsOk(*p) + ? "ready" + : absl::StrCat( + "early-error:", + PromiseResultTraits1::ErrorString(*p))) + : "pending"); } if (p == nullptr) return Pending{}; if (!PromiseResultTraits1::IsOk(*p)) { @@ -1543,22 +1528,21 @@ struct SeqState { ABSL_FALLTHROUGH_INTENDED; case State::kState2: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, - "seq[%p]: begin poll step 3/7", this); + LOG(INFO).AtLocation(whence.file(), whence.line()) + << "seq[" << this << "]: begin poll step 3/7"; } auto result = prior.prior.prior.prior.current_promise(); PromiseResult2* p = result.value_if_ready(); if (grpc_trace_promise_primitives.enabled()) { - gpr_log( - whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, - "seq[%p]: poll step 3/7 gets %s", this, - p != nullptr - ? (PromiseResultTraits2::IsOk(*p) - ? "ready" - : absl::StrCat("early-error:", - PromiseResultTraits2::ErrorString(*p)) - .c_str()) - : "pending"); + LOG(INFO).AtLocation(whence.file(), whence.line()) + << "seq[" << this << "]: poll step 3/7 gets " + << (p != nullptr + ? (PromiseResultTraits2::IsOk(*p) + ? "ready" + : absl::StrCat( + "early-error:", + PromiseResultTraits2::ErrorString(*p))) + : "pending"); } if (p == nullptr) return Pending{}; if (!PromiseResultTraits2::IsOk(*p)) { @@ -1575,22 +1559,21 @@ struct SeqState { ABSL_FALLTHROUGH_INTENDED; case State::kState3: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, - "seq[%p]: begin poll step 4/7", this); + LOG(INFO).AtLocation(whence.file(), whence.line()) + << "seq[" << this << "]: begin poll step 4/7"; } auto result = prior.prior.prior.current_promise(); PromiseResult3* p = result.value_if_ready(); if (grpc_trace_promise_primitives.enabled()) { - gpr_log( - whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, - "seq[%p]: poll step 4/7 gets %s", this, - p != nullptr - ? (PromiseResultTraits3::IsOk(*p) - ? "ready" - : absl::StrCat("early-error:", - PromiseResultTraits3::ErrorString(*p)) - .c_str()) - : "pending"); + LOG(INFO).AtLocation(whence.file(), whence.line()) + << "seq[" << this << "]: poll step 4/7 gets " + << (p != nullptr + ? (PromiseResultTraits3::IsOk(*p) + ? "ready" + : absl::StrCat( + "early-error:", + PromiseResultTraits3::ErrorString(*p))) + : "pending"); } if (p == nullptr) return Pending{}; if (!PromiseResultTraits3::IsOk(*p)) { @@ -1607,22 +1590,21 @@ struct SeqState { ABSL_FALLTHROUGH_INTENDED; case State::kState4: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, - "seq[%p]: begin poll step 5/7", this); + LOG(INFO).AtLocation(whence.file(), whence.line()) + << "seq[" << this << "]: begin poll step 5/7"; } auto result = prior.prior.current_promise(); PromiseResult4* p = result.value_if_ready(); if (grpc_trace_promise_primitives.enabled()) { - gpr_log( - whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, - "seq[%p]: poll step 5/7 gets %s", this, - p != nullptr - ? (PromiseResultTraits4::IsOk(*p) - ? "ready" - : absl::StrCat("early-error:", - PromiseResultTraits4::ErrorString(*p)) - .c_str()) - : "pending"); + LOG(INFO).AtLocation(whence.file(), whence.line()) + << "seq[" << this << "]: poll step 5/7 gets " + << (p != nullptr + ? (PromiseResultTraits4::IsOk(*p) + ? "ready" + : absl::StrCat( + "early-error:", + PromiseResultTraits4::ErrorString(*p))) + : "pending"); } if (p == nullptr) return Pending{}; if (!PromiseResultTraits4::IsOk(*p)) { @@ -1639,22 +1621,21 @@ struct SeqState { ABSL_FALLTHROUGH_INTENDED; case State::kState5: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, - "seq[%p]: begin poll step 6/7", this); + LOG(INFO).AtLocation(whence.file(), whence.line()) + << "seq[" << this << "]: begin poll step 6/7"; } auto result = prior.current_promise(); PromiseResult5* p = result.value_if_ready(); if (grpc_trace_promise_primitives.enabled()) { - gpr_log( - whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, - "seq[%p]: poll step 6/7 gets %s", this, - p != nullptr - ? (PromiseResultTraits5::IsOk(*p) - ? "ready" - : absl::StrCat("early-error:", - PromiseResultTraits5::ErrorString(*p)) - .c_str()) - : "pending"); + LOG(INFO).AtLocation(whence.file(), whence.line()) + << "seq[" << this << "]: poll step 6/7 gets " + << (p != nullptr + ? (PromiseResultTraits5::IsOk(*p) + ? "ready" + : absl::StrCat( + "early-error:", + PromiseResultTraits5::ErrorString(*p))) + : "pending"); } if (p == nullptr) return Pending{}; if (!PromiseResultTraits5::IsOk(*p)) { @@ -1672,14 +1653,14 @@ struct SeqState { default: case State::kState6: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, - "seq[%p]: begin poll step 7/7", this); + LOG(INFO).AtLocation(whence.file(), whence.line()) + << "seq[" << this << "]: begin poll step 7/7"; } auto result = current_promise(); if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, - "seq[%p]: poll step 7/7 gets %s", this, - result.ready() ? "ready" : "pending"); + LOG(INFO).AtLocation(whence.file(), whence.line()) + << "seq[" << this << "]: poll step 7/7 gets " + << (result.ready() ? "ready" : "pending"); } auto* p = result.value_if_ready(); if (p == nullptr) return Pending{}; @@ -1855,7 +1836,7 @@ struct SeqState { } SeqState(const SeqState& other) noexcept : state(other.state), whence(other.whence) { - GPR_ASSERT(state == State::kState0); + CHECK(state == State::kState0); Construct(&prior.current_promise, other.prior.current_promise); Construct(&prior.prior.prior.prior.prior.prior.prior.next_factory, other.prior.prior.prior.prior.prior.prior.prior.next_factory); @@ -1939,23 +1920,22 @@ struct SeqState { switch (state) { case State::kState0: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, - "seq[%p]: begin poll step 1/8", this); + LOG(INFO).AtLocation(whence.file(), whence.line()) + << "seq[" << this << "]: begin poll step 1/8"; } auto result = prior.prior.prior.prior.prior.prior.prior.current_promise(); PromiseResult0* p = result.value_if_ready(); if (grpc_trace_promise_primitives.enabled()) { - gpr_log( - whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, - "seq[%p]: poll step 1/8 gets %s", this, - p != nullptr - ? (PromiseResultTraits0::IsOk(*p) - ? "ready" - : absl::StrCat("early-error:", - PromiseResultTraits0::ErrorString(*p)) - .c_str()) - : "pending"); + LOG(INFO).AtLocation(whence.file(), whence.line()) + << "seq[" << this << "]: poll step 1/8 gets " + << (p != nullptr + ? (PromiseResultTraits0::IsOk(*p) + ? "ready" + : absl::StrCat( + "early-error:", + PromiseResultTraits0::ErrorString(*p))) + : "pending"); } if (p == nullptr) return Pending{}; if (!PromiseResultTraits0::IsOk(*p)) { @@ -1974,22 +1954,21 @@ struct SeqState { ABSL_FALLTHROUGH_INTENDED; case State::kState1: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, - "seq[%p]: begin poll step 2/8", this); + LOG(INFO).AtLocation(whence.file(), whence.line()) + << "seq[" << this << "]: begin poll step 2/8"; } auto result = prior.prior.prior.prior.prior.prior.current_promise(); PromiseResult1* p = result.value_if_ready(); if (grpc_trace_promise_primitives.enabled()) { - gpr_log( - whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, - "seq[%p]: poll step 2/8 gets %s", this, - p != nullptr - ? (PromiseResultTraits1::IsOk(*p) - ? "ready" - : absl::StrCat("early-error:", - PromiseResultTraits1::ErrorString(*p)) - .c_str()) - : "pending"); + LOG(INFO).AtLocation(whence.file(), whence.line()) + << "seq[" << this << "]: poll step 2/8 gets " + << (p != nullptr + ? (PromiseResultTraits1::IsOk(*p) + ? "ready" + : absl::StrCat( + "early-error:", + PromiseResultTraits1::ErrorString(*p))) + : "pending"); } if (p == nullptr) return Pending{}; if (!PromiseResultTraits1::IsOk(*p)) { @@ -2007,22 +1986,21 @@ struct SeqState { ABSL_FALLTHROUGH_INTENDED; case State::kState2: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, - "seq[%p]: begin poll step 3/8", this); + LOG(INFO).AtLocation(whence.file(), whence.line()) + << "seq[" << this << "]: begin poll step 3/8"; } auto result = prior.prior.prior.prior.prior.current_promise(); PromiseResult2* p = result.value_if_ready(); if (grpc_trace_promise_primitives.enabled()) { - gpr_log( - whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, - "seq[%p]: poll step 3/8 gets %s", this, - p != nullptr - ? (PromiseResultTraits2::IsOk(*p) - ? "ready" - : absl::StrCat("early-error:", - PromiseResultTraits2::ErrorString(*p)) - .c_str()) - : "pending"); + LOG(INFO).AtLocation(whence.file(), whence.line()) + << "seq[" << this << "]: poll step 3/8 gets " + << (p != nullptr + ? (PromiseResultTraits2::IsOk(*p) + ? "ready" + : absl::StrCat( + "early-error:", + PromiseResultTraits2::ErrorString(*p))) + : "pending"); } if (p == nullptr) return Pending{}; if (!PromiseResultTraits2::IsOk(*p)) { @@ -2040,22 +2018,21 @@ struct SeqState { ABSL_FALLTHROUGH_INTENDED; case State::kState3: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, - "seq[%p]: begin poll step 4/8", this); + LOG(INFO).AtLocation(whence.file(), whence.line()) + << "seq[" << this << "]: begin poll step 4/8"; } auto result = prior.prior.prior.prior.current_promise(); PromiseResult3* p = result.value_if_ready(); if (grpc_trace_promise_primitives.enabled()) { - gpr_log( - whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, - "seq[%p]: poll step 4/8 gets %s", this, - p != nullptr - ? (PromiseResultTraits3::IsOk(*p) - ? "ready" - : absl::StrCat("early-error:", - PromiseResultTraits3::ErrorString(*p)) - .c_str()) - : "pending"); + LOG(INFO).AtLocation(whence.file(), whence.line()) + << "seq[" << this << "]: poll step 4/8 gets " + << (p != nullptr + ? (PromiseResultTraits3::IsOk(*p) + ? "ready" + : absl::StrCat( + "early-error:", + PromiseResultTraits3::ErrorString(*p))) + : "pending"); } if (p == nullptr) return Pending{}; if (!PromiseResultTraits3::IsOk(*p)) { @@ -2072,22 +2049,21 @@ struct SeqState { ABSL_FALLTHROUGH_INTENDED; case State::kState4: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, - "seq[%p]: begin poll step 5/8", this); + LOG(INFO).AtLocation(whence.file(), whence.line()) + << "seq[" << this << "]: begin poll step 5/8"; } auto result = prior.prior.prior.current_promise(); PromiseResult4* p = result.value_if_ready(); if (grpc_trace_promise_primitives.enabled()) { - gpr_log( - whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, - "seq[%p]: poll step 5/8 gets %s", this, - p != nullptr - ? (PromiseResultTraits4::IsOk(*p) - ? "ready" - : absl::StrCat("early-error:", - PromiseResultTraits4::ErrorString(*p)) - .c_str()) - : "pending"); + LOG(INFO).AtLocation(whence.file(), whence.line()) + << "seq[" << this << "]: poll step 5/8 gets " + << (p != nullptr + ? (PromiseResultTraits4::IsOk(*p) + ? "ready" + : absl::StrCat( + "early-error:", + PromiseResultTraits4::ErrorString(*p))) + : "pending"); } if (p == nullptr) return Pending{}; if (!PromiseResultTraits4::IsOk(*p)) { @@ -2104,22 +2080,21 @@ struct SeqState { ABSL_FALLTHROUGH_INTENDED; case State::kState5: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, - "seq[%p]: begin poll step 6/8", this); + LOG(INFO).AtLocation(whence.file(), whence.line()) + << "seq[" << this << "]: begin poll step 6/8"; } auto result = prior.prior.current_promise(); PromiseResult5* p = result.value_if_ready(); if (grpc_trace_promise_primitives.enabled()) { - gpr_log( - whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, - "seq[%p]: poll step 6/8 gets %s", this, - p != nullptr - ? (PromiseResultTraits5::IsOk(*p) - ? "ready" - : absl::StrCat("early-error:", - PromiseResultTraits5::ErrorString(*p)) - .c_str()) - : "pending"); + LOG(INFO).AtLocation(whence.file(), whence.line()) + << "seq[" << this << "]: poll step 6/8 gets " + << (p != nullptr + ? (PromiseResultTraits5::IsOk(*p) + ? "ready" + : absl::StrCat( + "early-error:", + PromiseResultTraits5::ErrorString(*p))) + : "pending"); } if (p == nullptr) return Pending{}; if (!PromiseResultTraits5::IsOk(*p)) { @@ -2136,22 +2111,21 @@ struct SeqState { ABSL_FALLTHROUGH_INTENDED; case State::kState6: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, - "seq[%p]: begin poll step 7/8", this); + LOG(INFO).AtLocation(whence.file(), whence.line()) + << "seq[" << this << "]: begin poll step 7/8"; } auto result = prior.current_promise(); PromiseResult6* p = result.value_if_ready(); if (grpc_trace_promise_primitives.enabled()) { - gpr_log( - whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, - "seq[%p]: poll step 7/8 gets %s", this, - p != nullptr - ? (PromiseResultTraits6::IsOk(*p) - ? "ready" - : absl::StrCat("early-error:", - PromiseResultTraits6::ErrorString(*p)) - .c_str()) - : "pending"); + LOG(INFO).AtLocation(whence.file(), whence.line()) + << "seq[" << this << "]: poll step 7/8 gets " + << (p != nullptr + ? (PromiseResultTraits6::IsOk(*p) + ? "ready" + : absl::StrCat( + "early-error:", + PromiseResultTraits6::ErrorString(*p))) + : "pending"); } if (p == nullptr) return Pending{}; if (!PromiseResultTraits6::IsOk(*p)) { @@ -2169,14 +2143,14 @@ struct SeqState { default: case State::kState7: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, - "seq[%p]: begin poll step 8/8", this); + LOG(INFO).AtLocation(whence.file(), whence.line()) + << "seq[" << this << "]: begin poll step 8/8"; } auto result = current_promise(); if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, - "seq[%p]: poll step 8/8 gets %s", this, - result.ready() ? "ready" : "pending"); + LOG(INFO).AtLocation(whence.file(), whence.line()) + << "seq[" << this << "]: poll step 8/8 gets " + << (result.ready() ? "ready" : "pending"); } auto* p = result.value_if_ready(); if (p == nullptr) return Pending{}; @@ -2373,7 +2347,7 @@ struct SeqState { } SeqState(const SeqState& other) noexcept : state(other.state), whence(other.whence) { - GPR_ASSERT(state == State::kState0); + CHECK(state == State::kState0); Construct(&prior.current_promise, other.prior.current_promise); Construct( &prior.prior.prior.prior.prior.prior.prior.prior.next_factory, @@ -2470,7 +2444,7 @@ struct SeqState { switch (state) { case State::kState0: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: begin poll step 1/9", this); } auto result = @@ -2478,7 +2452,7 @@ struct SeqState { PromiseResult0* p = result.value_if_ready(); if (grpc_trace_promise_primitives.enabled()) { gpr_log( - whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: poll step 1/9 gets %s", this, p != nullptr ? (PromiseResultTraits0::IsOk(*p) @@ -2506,7 +2480,7 @@ struct SeqState { ABSL_FALLTHROUGH_INTENDED; case State::kState1: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: begin poll step 2/9", this); } auto result = @@ -2514,7 +2488,7 @@ struct SeqState { PromiseResult1* p = result.value_if_ready(); if (grpc_trace_promise_primitives.enabled()) { gpr_log( - whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: poll step 2/9 gets %s", this, p != nullptr ? (PromiseResultTraits1::IsOk(*p) @@ -2541,14 +2515,14 @@ struct SeqState { ABSL_FALLTHROUGH_INTENDED; case State::kState2: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: begin poll step 3/9", this); } auto result = prior.prior.prior.prior.prior.prior.current_promise(); PromiseResult2* p = result.value_if_ready(); if (grpc_trace_promise_primitives.enabled()) { gpr_log( - whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: poll step 3/9 gets %s", this, p != nullptr ? (PromiseResultTraits2::IsOk(*p) @@ -2574,14 +2548,14 @@ struct SeqState { ABSL_FALLTHROUGH_INTENDED; case State::kState3: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: begin poll step 4/9", this); } auto result = prior.prior.prior.prior.prior.current_promise(); PromiseResult3* p = result.value_if_ready(); if (grpc_trace_promise_primitives.enabled()) { gpr_log( - whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: poll step 4/9 gets %s", this, p != nullptr ? (PromiseResultTraits3::IsOk(*p) @@ -2607,14 +2581,14 @@ struct SeqState { ABSL_FALLTHROUGH_INTENDED; case State::kState4: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: begin poll step 5/9", this); } auto result = prior.prior.prior.prior.current_promise(); PromiseResult4* p = result.value_if_ready(); if (grpc_trace_promise_primitives.enabled()) { gpr_log( - whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: poll step 5/9 gets %s", this, p != nullptr ? (PromiseResultTraits4::IsOk(*p) @@ -2639,14 +2613,14 @@ struct SeqState { ABSL_FALLTHROUGH_INTENDED; case State::kState5: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: begin poll step 6/9", this); } auto result = prior.prior.prior.current_promise(); PromiseResult5* p = result.value_if_ready(); if (grpc_trace_promise_primitives.enabled()) { gpr_log( - whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: poll step 6/9 gets %s", this, p != nullptr ? (PromiseResultTraits5::IsOk(*p) @@ -2671,14 +2645,14 @@ struct SeqState { ABSL_FALLTHROUGH_INTENDED; case State::kState6: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: begin poll step 7/9", this); } auto result = prior.prior.current_promise(); PromiseResult6* p = result.value_if_ready(); if (grpc_trace_promise_primitives.enabled()) { gpr_log( - whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: poll step 7/9 gets %s", this, p != nullptr ? (PromiseResultTraits6::IsOk(*p) @@ -2703,14 +2677,14 @@ struct SeqState { ABSL_FALLTHROUGH_INTENDED; case State::kState7: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: begin poll step 8/9", this); } auto result = prior.current_promise(); PromiseResult7* p = result.value_if_ready(); if (grpc_trace_promise_primitives.enabled()) { gpr_log( - whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: poll step 8/9 gets %s", this, p != nullptr ? (PromiseResultTraits7::IsOk(*p) @@ -2736,12 +2710,12 @@ struct SeqState { default: case State::kState8: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: begin poll step 9/9", this); } auto result = current_promise(); if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: poll step 9/9 gets %s", this, result.ready() ? "ready" : "pending"); } @@ -2964,7 +2938,7 @@ struct SeqState { } SeqState(const SeqState& other) noexcept : state(other.state), whence(other.whence) { - GPR_ASSERT(state == State::kState0); + CHECK(state == State::kState0); Construct(&prior.current_promise, other.prior.current_promise); Construct( &prior.prior.prior.prior.prior.prior.prior.prior.prior.next_factory, @@ -3076,7 +3050,7 @@ struct SeqState { switch (state) { case State::kState0: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: begin poll step 1/10", this); } auto result = prior.prior.prior.prior.prior.prior.prior.prior.prior @@ -3084,7 +3058,7 @@ struct SeqState { PromiseResult0* p = result.value_if_ready(); if (grpc_trace_promise_primitives.enabled()) { gpr_log( - whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: poll step 1/10 gets %s", this, p != nullptr ? (PromiseResultTraits0::IsOk(*p) @@ -3114,7 +3088,7 @@ struct SeqState { ABSL_FALLTHROUGH_INTENDED; case State::kState1: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: begin poll step 2/10", this); } auto result = @@ -3122,7 +3096,7 @@ struct SeqState { PromiseResult1* p = result.value_if_ready(); if (grpc_trace_promise_primitives.enabled()) { gpr_log( - whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: poll step 2/10 gets %s", this, p != nullptr ? (PromiseResultTraits1::IsOk(*p) @@ -3150,7 +3124,7 @@ struct SeqState { ABSL_FALLTHROUGH_INTENDED; case State::kState2: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: begin poll step 3/10", this); } auto result = @@ -3158,7 +3132,7 @@ struct SeqState { PromiseResult2* p = result.value_if_ready(); if (grpc_trace_promise_primitives.enabled()) { gpr_log( - whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: poll step 3/10 gets %s", this, p != nullptr ? (PromiseResultTraits2::IsOk(*p) @@ -3185,14 +3159,14 @@ struct SeqState { ABSL_FALLTHROUGH_INTENDED; case State::kState3: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: begin poll step 4/10", this); } auto result = prior.prior.prior.prior.prior.prior.current_promise(); PromiseResult3* p = result.value_if_ready(); if (grpc_trace_promise_primitives.enabled()) { gpr_log( - whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: poll step 4/10 gets %s", this, p != nullptr ? (PromiseResultTraits3::IsOk(*p) @@ -3218,14 +3192,14 @@ struct SeqState { ABSL_FALLTHROUGH_INTENDED; case State::kState4: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: begin poll step 5/10", this); } auto result = prior.prior.prior.prior.prior.current_promise(); PromiseResult4* p = result.value_if_ready(); if (grpc_trace_promise_primitives.enabled()) { gpr_log( - whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: poll step 5/10 gets %s", this, p != nullptr ? (PromiseResultTraits4::IsOk(*p) @@ -3251,14 +3225,14 @@ struct SeqState { ABSL_FALLTHROUGH_INTENDED; case State::kState5: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: begin poll step 6/10", this); } auto result = prior.prior.prior.prior.current_promise(); PromiseResult5* p = result.value_if_ready(); if (grpc_trace_promise_primitives.enabled()) { gpr_log( - whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: poll step 6/10 gets %s", this, p != nullptr ? (PromiseResultTraits5::IsOk(*p) @@ -3283,14 +3257,14 @@ struct SeqState { ABSL_FALLTHROUGH_INTENDED; case State::kState6: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: begin poll step 7/10", this); } auto result = prior.prior.prior.current_promise(); PromiseResult6* p = result.value_if_ready(); if (grpc_trace_promise_primitives.enabled()) { gpr_log( - whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: poll step 7/10 gets %s", this, p != nullptr ? (PromiseResultTraits6::IsOk(*p) @@ -3315,14 +3289,14 @@ struct SeqState { ABSL_FALLTHROUGH_INTENDED; case State::kState7: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: begin poll step 8/10", this); } auto result = prior.prior.current_promise(); PromiseResult7* p = result.value_if_ready(); if (grpc_trace_promise_primitives.enabled()) { gpr_log( - whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: poll step 8/10 gets %s", this, p != nullptr ? (PromiseResultTraits7::IsOk(*p) @@ -3347,14 +3321,14 @@ struct SeqState { ABSL_FALLTHROUGH_INTENDED; case State::kState8: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: begin poll step 9/10", this); } auto result = prior.current_promise(); PromiseResult8* p = result.value_if_ready(); if (grpc_trace_promise_primitives.enabled()) { gpr_log( - whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: poll step 9/10 gets %s", this, p != nullptr ? (PromiseResultTraits8::IsOk(*p) @@ -3380,12 +3354,12 @@ struct SeqState { default: case State::kState9: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: begin poll step 10/10", this); } auto result = current_promise(); if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: poll step 10/10 gets %s", this, result.ready() ? "ready" : "pending"); } @@ -3631,7 +3605,7 @@ struct SeqState { } SeqState(const SeqState& other) noexcept : state(other.state), whence(other.whence) { - GPR_ASSERT(state == State::kState0); + CHECK(state == State::kState0); Construct(&prior.current_promise, other.prior.current_promise); Construct(&prior.prior.prior.prior.prior.prior.prior.prior.prior.prior .next_factory, @@ -3758,7 +3732,7 @@ struct SeqState { switch (state) { case State::kState0: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: begin poll step 1/11", this); } auto result = prior.prior.prior.prior.prior.prior.prior.prior.prior @@ -3766,7 +3740,7 @@ struct SeqState { PromiseResult0* p = result.value_if_ready(); if (grpc_trace_promise_primitives.enabled()) { gpr_log( - whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: poll step 1/11 gets %s", this, p != nullptr ? (PromiseResultTraits0::IsOk(*p) @@ -3797,7 +3771,7 @@ struct SeqState { ABSL_FALLTHROUGH_INTENDED; case State::kState1: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: begin poll step 2/11", this); } auto result = prior.prior.prior.prior.prior.prior.prior.prior.prior @@ -3805,7 +3779,7 @@ struct SeqState { PromiseResult1* p = result.value_if_ready(); if (grpc_trace_promise_primitives.enabled()) { gpr_log( - whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: poll step 2/11 gets %s", this, p != nullptr ? (PromiseResultTraits1::IsOk(*p) @@ -3835,7 +3809,7 @@ struct SeqState { ABSL_FALLTHROUGH_INTENDED; case State::kState2: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: begin poll step 3/11", this); } auto result = @@ -3843,7 +3817,7 @@ struct SeqState { PromiseResult2* p = result.value_if_ready(); if (grpc_trace_promise_primitives.enabled()) { gpr_log( - whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: poll step 3/11 gets %s", this, p != nullptr ? (PromiseResultTraits2::IsOk(*p) @@ -3871,7 +3845,7 @@ struct SeqState { ABSL_FALLTHROUGH_INTENDED; case State::kState3: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: begin poll step 4/11", this); } auto result = @@ -3879,7 +3853,7 @@ struct SeqState { PromiseResult3* p = result.value_if_ready(); if (grpc_trace_promise_primitives.enabled()) { gpr_log( - whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: poll step 4/11 gets %s", this, p != nullptr ? (PromiseResultTraits3::IsOk(*p) @@ -3906,14 +3880,14 @@ struct SeqState { ABSL_FALLTHROUGH_INTENDED; case State::kState4: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: begin poll step 5/11", this); } auto result = prior.prior.prior.prior.prior.prior.current_promise(); PromiseResult4* p = result.value_if_ready(); if (grpc_trace_promise_primitives.enabled()) { gpr_log( - whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: poll step 5/11 gets %s", this, p != nullptr ? (PromiseResultTraits4::IsOk(*p) @@ -3939,14 +3913,14 @@ struct SeqState { ABSL_FALLTHROUGH_INTENDED; case State::kState5: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: begin poll step 6/11", this); } auto result = prior.prior.prior.prior.prior.current_promise(); PromiseResult5* p = result.value_if_ready(); if (grpc_trace_promise_primitives.enabled()) { gpr_log( - whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: poll step 6/11 gets %s", this, p != nullptr ? (PromiseResultTraits5::IsOk(*p) @@ -3972,14 +3946,14 @@ struct SeqState { ABSL_FALLTHROUGH_INTENDED; case State::kState6: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: begin poll step 7/11", this); } auto result = prior.prior.prior.prior.current_promise(); PromiseResult6* p = result.value_if_ready(); if (grpc_trace_promise_primitives.enabled()) { gpr_log( - whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: poll step 7/11 gets %s", this, p != nullptr ? (PromiseResultTraits6::IsOk(*p) @@ -4004,14 +3978,14 @@ struct SeqState { ABSL_FALLTHROUGH_INTENDED; case State::kState7: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: begin poll step 8/11", this); } auto result = prior.prior.prior.current_promise(); PromiseResult7* p = result.value_if_ready(); if (grpc_trace_promise_primitives.enabled()) { gpr_log( - whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: poll step 8/11 gets %s", this, p != nullptr ? (PromiseResultTraits7::IsOk(*p) @@ -4036,14 +4010,14 @@ struct SeqState { ABSL_FALLTHROUGH_INTENDED; case State::kState8: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: begin poll step 9/11", this); } auto result = prior.prior.current_promise(); PromiseResult8* p = result.value_if_ready(); if (grpc_trace_promise_primitives.enabled()) { gpr_log( - whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: poll step 9/11 gets %s", this, p != nullptr ? (PromiseResultTraits8::IsOk(*p) @@ -4068,14 +4042,14 @@ struct SeqState { ABSL_FALLTHROUGH_INTENDED; case State::kState9: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: begin poll step 10/11", this); } auto result = prior.current_promise(); PromiseResult9* p = result.value_if_ready(); if (grpc_trace_promise_primitives.enabled()) { gpr_log( - whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: poll step 10/11 gets %s", this, p != nullptr ? (PromiseResultTraits9::IsOk(*p) @@ -4101,12 +4075,12 @@ struct SeqState { default: case State::kState10: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: begin poll step 11/11", this); } auto result = current_promise(); if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: poll step 11/11 gets %s", this, result.ready() ? "ready" : "pending"); } @@ -4375,7 +4349,7 @@ struct SeqState { } SeqState(const SeqState& other) noexcept : state(other.state), whence(other.whence) { - GPR_ASSERT(state == State::kState0); + CHECK(state == State::kState0); Construct(&prior.current_promise, other.prior.current_promise); Construct(&prior.prior.prior.prior.prior.prior.prior.prior.prior.prior.prior .next_factory, @@ -4517,7 +4491,7 @@ struct SeqState { switch (state) { case State::kState0: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: begin poll step 1/12", this); } auto result = prior.prior.prior.prior.prior.prior.prior.prior.prior @@ -4525,7 +4499,7 @@ struct SeqState { PromiseResult0* p = result.value_if_ready(); if (grpc_trace_promise_primitives.enabled()) { gpr_log( - whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: poll step 1/12 gets %s", this, p != nullptr ? (PromiseResultTraits0::IsOk(*p) @@ -4556,7 +4530,7 @@ struct SeqState { ABSL_FALLTHROUGH_INTENDED; case State::kState1: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: begin poll step 2/12", this); } auto result = prior.prior.prior.prior.prior.prior.prior.prior.prior @@ -4564,7 +4538,7 @@ struct SeqState { PromiseResult1* p = result.value_if_ready(); if (grpc_trace_promise_primitives.enabled()) { gpr_log( - whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: poll step 2/12 gets %s", this, p != nullptr ? (PromiseResultTraits1::IsOk(*p) @@ -4595,7 +4569,7 @@ struct SeqState { ABSL_FALLTHROUGH_INTENDED; case State::kState2: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: begin poll step 3/12", this); } auto result = prior.prior.prior.prior.prior.prior.prior.prior.prior @@ -4603,7 +4577,7 @@ struct SeqState { PromiseResult2* p = result.value_if_ready(); if (grpc_trace_promise_primitives.enabled()) { gpr_log( - whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: poll step 3/12 gets %s", this, p != nullptr ? (PromiseResultTraits2::IsOk(*p) @@ -4633,7 +4607,7 @@ struct SeqState { ABSL_FALLTHROUGH_INTENDED; case State::kState3: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: begin poll step 4/12", this); } auto result = @@ -4641,7 +4615,7 @@ struct SeqState { PromiseResult3* p = result.value_if_ready(); if (grpc_trace_promise_primitives.enabled()) { gpr_log( - whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: poll step 4/12 gets %s", this, p != nullptr ? (PromiseResultTraits3::IsOk(*p) @@ -4669,7 +4643,7 @@ struct SeqState { ABSL_FALLTHROUGH_INTENDED; case State::kState4: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: begin poll step 5/12", this); } auto result = @@ -4677,7 +4651,7 @@ struct SeqState { PromiseResult4* p = result.value_if_ready(); if (grpc_trace_promise_primitives.enabled()) { gpr_log( - whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: poll step 5/12 gets %s", this, p != nullptr ? (PromiseResultTraits4::IsOk(*p) @@ -4704,14 +4678,14 @@ struct SeqState { ABSL_FALLTHROUGH_INTENDED; case State::kState5: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: begin poll step 6/12", this); } auto result = prior.prior.prior.prior.prior.prior.current_promise(); PromiseResult5* p = result.value_if_ready(); if (grpc_trace_promise_primitives.enabled()) { gpr_log( - whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: poll step 6/12 gets %s", this, p != nullptr ? (PromiseResultTraits5::IsOk(*p) @@ -4737,14 +4711,14 @@ struct SeqState { ABSL_FALLTHROUGH_INTENDED; case State::kState6: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: begin poll step 7/12", this); } auto result = prior.prior.prior.prior.prior.current_promise(); PromiseResult6* p = result.value_if_ready(); if (grpc_trace_promise_primitives.enabled()) { gpr_log( - whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: poll step 7/12 gets %s", this, p != nullptr ? (PromiseResultTraits6::IsOk(*p) @@ -4770,14 +4744,14 @@ struct SeqState { ABSL_FALLTHROUGH_INTENDED; case State::kState7: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: begin poll step 8/12", this); } auto result = prior.prior.prior.prior.current_promise(); PromiseResult7* p = result.value_if_ready(); if (grpc_trace_promise_primitives.enabled()) { gpr_log( - whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: poll step 8/12 gets %s", this, p != nullptr ? (PromiseResultTraits7::IsOk(*p) @@ -4802,14 +4776,14 @@ struct SeqState { ABSL_FALLTHROUGH_INTENDED; case State::kState8: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: begin poll step 9/12", this); } auto result = prior.prior.prior.current_promise(); PromiseResult8* p = result.value_if_ready(); if (grpc_trace_promise_primitives.enabled()) { gpr_log( - whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: poll step 9/12 gets %s", this, p != nullptr ? (PromiseResultTraits8::IsOk(*p) @@ -4834,14 +4808,14 @@ struct SeqState { ABSL_FALLTHROUGH_INTENDED; case State::kState9: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: begin poll step 10/12", this); } auto result = prior.prior.current_promise(); PromiseResult9* p = result.value_if_ready(); if (grpc_trace_promise_primitives.enabled()) { gpr_log( - whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: poll step 10/12 gets %s", this, p != nullptr ? (PromiseResultTraits9::IsOk(*p) @@ -4866,14 +4840,14 @@ struct SeqState { ABSL_FALLTHROUGH_INTENDED; case State::kState10: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: begin poll step 11/12", this); } auto result = prior.current_promise(); PromiseResult10* p = result.value_if_ready(); if (grpc_trace_promise_primitives.enabled()) { gpr_log( - whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: poll step 11/12 gets %s", this, p != nullptr ? (PromiseResultTraits10::IsOk(*p) @@ -4899,12 +4873,12 @@ struct SeqState { default: case State::kState11: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: begin poll step 12/12", this); } auto result = current_promise(); if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: poll step 12/12 gets %s", this, result.ready() ? "ready" : "pending"); } @@ -5198,7 +5172,7 @@ struct SeqState { } SeqState(const SeqState& other) noexcept : state(other.state), whence(other.whence) { - GPR_ASSERT(state == State::kState0); + CHECK(state == State::kState0); Construct(&prior.current_promise, other.prior.current_promise); Construct(&prior.prior.prior.prior.prior.prior.prior.prior.prior.prior.prior .prior.next_factory, @@ -5356,7 +5330,7 @@ struct SeqState { switch (state) { case State::kState0: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: begin poll step 1/13", this); } auto result = prior.prior.prior.prior.prior.prior.prior.prior.prior @@ -5364,7 +5338,7 @@ struct SeqState { PromiseResult0* p = result.value_if_ready(); if (grpc_trace_promise_primitives.enabled()) { gpr_log( - whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: poll step 1/13 gets %s", this, p != nullptr ? (PromiseResultTraits0::IsOk(*p) @@ -5395,7 +5369,7 @@ struct SeqState { ABSL_FALLTHROUGH_INTENDED; case State::kState1: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: begin poll step 2/13", this); } auto result = prior.prior.prior.prior.prior.prior.prior.prior.prior @@ -5403,7 +5377,7 @@ struct SeqState { PromiseResult1* p = result.value_if_ready(); if (grpc_trace_promise_primitives.enabled()) { gpr_log( - whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: poll step 2/13 gets %s", this, p != nullptr ? (PromiseResultTraits1::IsOk(*p) @@ -5434,7 +5408,7 @@ struct SeqState { ABSL_FALLTHROUGH_INTENDED; case State::kState2: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: begin poll step 3/13", this); } auto result = prior.prior.prior.prior.prior.prior.prior.prior.prior @@ -5442,7 +5416,7 @@ struct SeqState { PromiseResult2* p = result.value_if_ready(); if (grpc_trace_promise_primitives.enabled()) { gpr_log( - whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: poll step 3/13 gets %s", this, p != nullptr ? (PromiseResultTraits2::IsOk(*p) @@ -5473,7 +5447,7 @@ struct SeqState { ABSL_FALLTHROUGH_INTENDED; case State::kState3: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: begin poll step 4/13", this); } auto result = prior.prior.prior.prior.prior.prior.prior.prior.prior @@ -5481,7 +5455,7 @@ struct SeqState { PromiseResult3* p = result.value_if_ready(); if (grpc_trace_promise_primitives.enabled()) { gpr_log( - whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: poll step 4/13 gets %s", this, p != nullptr ? (PromiseResultTraits3::IsOk(*p) @@ -5511,7 +5485,7 @@ struct SeqState { ABSL_FALLTHROUGH_INTENDED; case State::kState4: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: begin poll step 5/13", this); } auto result = @@ -5519,7 +5493,7 @@ struct SeqState { PromiseResult4* p = result.value_if_ready(); if (grpc_trace_promise_primitives.enabled()) { gpr_log( - whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: poll step 5/13 gets %s", this, p != nullptr ? (PromiseResultTraits4::IsOk(*p) @@ -5547,7 +5521,7 @@ struct SeqState { ABSL_FALLTHROUGH_INTENDED; case State::kState5: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: begin poll step 6/13", this); } auto result = @@ -5555,7 +5529,7 @@ struct SeqState { PromiseResult5* p = result.value_if_ready(); if (grpc_trace_promise_primitives.enabled()) { gpr_log( - whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: poll step 6/13 gets %s", this, p != nullptr ? (PromiseResultTraits5::IsOk(*p) @@ -5582,14 +5556,14 @@ struct SeqState { ABSL_FALLTHROUGH_INTENDED; case State::kState6: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: begin poll step 7/13", this); } auto result = prior.prior.prior.prior.prior.prior.current_promise(); PromiseResult6* p = result.value_if_ready(); if (grpc_trace_promise_primitives.enabled()) { gpr_log( - whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: poll step 7/13 gets %s", this, p != nullptr ? (PromiseResultTraits6::IsOk(*p) @@ -5615,14 +5589,14 @@ struct SeqState { ABSL_FALLTHROUGH_INTENDED; case State::kState7: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: begin poll step 8/13", this); } auto result = prior.prior.prior.prior.prior.current_promise(); PromiseResult7* p = result.value_if_ready(); if (grpc_trace_promise_primitives.enabled()) { gpr_log( - whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: poll step 8/13 gets %s", this, p != nullptr ? (PromiseResultTraits7::IsOk(*p) @@ -5648,14 +5622,14 @@ struct SeqState { ABSL_FALLTHROUGH_INTENDED; case State::kState8: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: begin poll step 9/13", this); } auto result = prior.prior.prior.prior.current_promise(); PromiseResult8* p = result.value_if_ready(); if (grpc_trace_promise_primitives.enabled()) { gpr_log( - whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: poll step 9/13 gets %s", this, p != nullptr ? (PromiseResultTraits8::IsOk(*p) @@ -5680,14 +5654,14 @@ struct SeqState { ABSL_FALLTHROUGH_INTENDED; case State::kState9: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: begin poll step 10/13", this); } auto result = prior.prior.prior.current_promise(); PromiseResult9* p = result.value_if_ready(); if (grpc_trace_promise_primitives.enabled()) { gpr_log( - whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: poll step 10/13 gets %s", this, p != nullptr ? (PromiseResultTraits9::IsOk(*p) @@ -5712,14 +5686,14 @@ struct SeqState { ABSL_FALLTHROUGH_INTENDED; case State::kState10: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: begin poll step 11/13", this); } auto result = prior.prior.current_promise(); PromiseResult10* p = result.value_if_ready(); if (grpc_trace_promise_primitives.enabled()) { gpr_log( - whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: poll step 11/13 gets %s", this, p != nullptr ? (PromiseResultTraits10::IsOk(*p) @@ -5744,14 +5718,14 @@ struct SeqState { ABSL_FALLTHROUGH_INTENDED; case State::kState11: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: begin poll step 12/13", this); } auto result = prior.current_promise(); PromiseResult11* p = result.value_if_ready(); if (grpc_trace_promise_primitives.enabled()) { gpr_log( - whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: poll step 12/13 gets %s", this, p != nullptr ? (PromiseResultTraits11::IsOk(*p) @@ -5777,12 +5751,12 @@ struct SeqState { default: case State::kState12: { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: begin poll step 13/13", this); } auto result = current_promise(); if (grpc_trace_promise_primitives.enabled()) { - gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_DEBUG, + gpr_log(whence.file(), whence.line(), GPR_LOG_SEVERITY_INFO, "seq[%p]: poll step 13/13 gets %s", this, result.ready() ? "ready" : "pending"); } diff --git a/src/core/lib/promise/detail/status.h b/src/core/lib/promise/detail/status.h index 987fddfb99f..f1c2aa03d8c 100644 --- a/src/core/lib/promise/detail/status.h +++ b/src/core/lib/promise/detail/status.h @@ -17,6 +17,7 @@ #include +#include "absl/log/check.h" #include "absl/status/status.h" #include "absl/status/statusor.h" @@ -106,7 +107,7 @@ struct FailureStatusCastImpl, const absl::Status&> { template To FailureStatusCast(From&& from) { - GPR_DEBUG_ASSERT(!IsStatusOk(from)); + DCHECK(!IsStatusOk(from)); return FailureStatusCastImpl::Cast(std::forward(from)); } diff --git a/src/core/lib/promise/event_engine_wakeup_scheduler.h b/src/core/lib/promise/event_engine_wakeup_scheduler.h index b2ba6586a50..eedd48357c3 100644 --- a/src/core/lib/promise/event_engine_wakeup_scheduler.h +++ b/src/core/lib/promise/event_engine_wakeup_scheduler.h @@ -18,6 +18,8 @@ #include #include +#include "absl/log/check.h" + #include #include @@ -33,7 +35,7 @@ class EventEngineWakeupScheduler { std::shared_ptr event_engine) : event_engine_(std::move(event_engine)) { - GPR_ASSERT(event_engine_ != nullptr); + CHECK_NE(event_engine_, nullptr); } template diff --git a/src/core/lib/promise/for_each.h b/src/core/lib/promise/for_each.h index 82322add349..80d066a18dc 100644 --- a/src/core/lib/promise/for_each.h +++ b/src/core/lib/promise/for_each.h @@ -20,6 +20,7 @@ #include #include +#include "absl/log/check.h" #include "absl/status/status.h" #include "absl/strings/str_cat.h" @@ -109,8 +110,10 @@ class ForEach { public: using Result = typename PollTraits()())>::Type; - ForEach(Reader reader, Action action) - : reader_(std::move(reader)), action_factory_(std::move(action)) { + ForEach(Reader reader, Action action, DebugLocation whence = {}) + : reader_(std::move(reader)), + action_factory_(std::move(action)), + whence_(whence) { Construct(&reader_next_, reader_.Next()); } ~ForEach() { @@ -125,17 +128,19 @@ class ForEach { ForEach& operator=(const ForEach&) = delete; ForEach(ForEach&& other) noexcept : reader_(std::move(other.reader_)), - action_factory_(std::move(other.action_factory_)) { - GPR_DEBUG_ASSERT(reading_next_); - GPR_DEBUG_ASSERT(other.reading_next_); + action_factory_(std::move(other.action_factory_)), + whence_(other.whence_) { + DCHECK(reading_next_); + DCHECK(other.reading_next_); Construct(&reader_next_, std::move(other.reader_next_)); } ForEach& operator=(ForEach&& other) noexcept { - GPR_DEBUG_ASSERT(reading_next_); - GPR_DEBUG_ASSERT(other.reading_next_); + DCHECK(reading_next_); + DCHECK(other.reading_next_); reader_ = std::move(other.reader_); action_factory_ = std::move(other.action_factory_); reader_next_ = std::move(other.reader_next_); + whence_ = other.whence_; return *this; } @@ -154,7 +159,8 @@ class ForEach { std::string DebugTag() { return absl::StrCat(GetContext()->DebugTag(), " FOR_EACH[0x", - reinterpret_cast(this), "]: "); + reinterpret_cast(this), "@", whence_.file(), + ":", whence_.line(), "]: "); } Poll PollReaderNext() { @@ -215,6 +221,7 @@ class ForEach { GPR_NO_UNIQUE_ADDRESS Reader reader_; GPR_NO_UNIQUE_ADDRESS ActionFactory action_factory_; + GPR_NO_UNIQUE_ADDRESS DebugLocation whence_; bool reading_next_ = true; union { ReaderNext reader_next_; @@ -226,9 +233,10 @@ class ForEach { /// For each item acquired by calling Reader::Next, run the promise Action. template -for_each_detail::ForEach ForEach(Reader reader, Action action) { +for_each_detail::ForEach ForEach(Reader reader, Action action, + DebugLocation whence = {}) { return for_each_detail::ForEach(std::move(reader), - std::move(action)); + std::move(action), whence); } } // namespace grpc_core diff --git a/src/core/lib/promise/interceptor_list.h b/src/core/lib/promise/interceptor_list.h index be12ed0cfdf..da44df51b71 100644 --- a/src/core/lib/promise/interceptor_list.h +++ b/src/core/lib/promise/interceptor_list.h @@ -22,6 +22,7 @@ #include #include +#include "absl/log/check.h" #include "absl/strings/str_cat.h" #include "absl/strings/str_format.h" #include "absl/types/optional.h" @@ -66,7 +67,7 @@ class InterceptorList { // Update the next pointer stored with this map. // This is only valid to call once, and only before the map is used. void SetNext(Map* next) { - GPR_DEBUG_ASSERT(next_ == nullptr); + DCHECK_EQ(next_, nullptr); next_ = next; } diff --git a/src/core/lib/promise/latch.h b/src/core/lib/promise/latch.h index 63a6846dfab..221793e7cd0 100644 --- a/src/core/lib/promise/latch.h +++ b/src/core/lib/promise/latch.h @@ -21,6 +21,7 @@ #include #include +#include "absl/log/check.h" #include "absl/strings/str_cat.h" #include @@ -47,12 +48,12 @@ class Latch { Latch(Latch&& other) noexcept : value_(std::move(other.value_)), has_value_(other.has_value_) { #ifndef NDEBUG - GPR_DEBUG_ASSERT(!other.has_had_waiters_); + DCHECK(!other.has_had_waiters_); #endif } Latch& operator=(Latch&& other) noexcept { #ifndef NDEBUG - GPR_DEBUG_ASSERT(!other.has_had_waiters_); + DCHECK(!other.has_had_waiters_); #endif value_ = std::move(other.value_); has_value_ = other.has_value_; @@ -102,7 +103,7 @@ class Latch { if (grpc_trace_promise_primitives.enabled()) { gpr_log(GPR_INFO, "%sSet %s", DebugTag().c_str(), StateString().c_str()); } - GPR_DEBUG_ASSERT(!has_value_); + DCHECK(!has_value_); value_ = std::move(value); has_value_ = true; waiter_.Wake(); @@ -145,12 +146,12 @@ class Latch { Latch& operator=(const Latch&) = delete; Latch(Latch&& other) noexcept : is_set_(other.is_set_) { #ifndef NDEBUG - GPR_DEBUG_ASSERT(!other.has_had_waiters_); + DCHECK(!other.has_had_waiters_); #endif } Latch& operator=(Latch&& other) noexcept { #ifndef NDEBUG - GPR_DEBUG_ASSERT(!other.has_had_waiters_); + DCHECK(!other.has_had_waiters_); #endif is_set_ = other.is_set_; return *this; @@ -179,7 +180,7 @@ class Latch { if (grpc_trace_promise_primitives.enabled()) { gpr_log(GPR_INFO, "%sSet %s", DebugTag().c_str(), StateString().c_str()); } - GPR_DEBUG_ASSERT(!is_set_); + DCHECK(!is_set_); is_set_ = true; waiter_.Wake(); } diff --git a/src/core/lib/promise/map_pipe.h b/src/core/lib/promise/map_pipe.h index 8dd4223dce3..fef1f18994f 100644 --- a/src/core/lib/promise/map_pipe.h +++ b/src/core/lib/promise/map_pipe.h @@ -15,6 +15,7 @@ #ifndef GRPC_SRC_CORE_LIB_PROMISE_MAP_PIPE_H #define GRPC_SRC_CORE_LIB_PROMISE_MAP_PIPE_H +#include "absl/log/log.h" #include "absl/status/status.h" #include @@ -46,14 +47,14 @@ auto MapPipe(PipeReceiver src, PipeSender dst, Filter filter_factory) { return TrySeq( [] { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(GPR_DEBUG, "MapPipe: start map"); + VLOG(2) << "MapPipe: start map"; } return Empty{}; }, filter_factory.Make(std::move(t)), [&dst](T t) { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(GPR_DEBUG, "MapPipe: start push"); + VLOG(2) << "MapPipe: start push"; } return Map(dst.Push(std::move(t)), [](bool successful_push) { if (successful_push) { diff --git a/src/core/lib/promise/mpsc.h b/src/core/lib/promise/mpsc.h index 2362de390cd..ec8132e843a 100644 --- a/src/core/lib/promise/mpsc.h +++ b/src/core/lib/promise/mpsc.h @@ -22,6 +22,7 @@ #include #include "absl/base/thread_annotations.h" +#include "absl/log/check.h" #include #include @@ -179,10 +180,10 @@ class MpscReceiver { // a non-empty buffer during a legal move! MpscReceiver(MpscReceiver&& other) noexcept : center_(std::move(other.center_)) { - GPR_DEBUG_ASSERT(other.buffer_.empty()); + DCHECK(other.buffer_.empty()); } MpscReceiver& operator=(MpscReceiver&& other) noexcept { - GPR_DEBUG_ASSERT(other.buffer_.empty()); + DCHECK(other.buffer_.empty()); center_ = std::move(other.center_); return *this; } diff --git a/src/core/lib/promise/observable.h b/src/core/lib/promise/observable.h index 37437d9cc16..edf7a37515a 100644 --- a/src/core/lib/promise/observable.h +++ b/src/core/lib/promise/observable.h @@ -17,6 +17,7 @@ #include "absl/container/flat_hash_set.h" #include "absl/functional/any_invocable.h" +#include "absl/log/check.h" #include @@ -123,8 +124,8 @@ class Observable { Observer(const Observer&) = delete; Observer& operator=(const Observer&) = delete; Observer(Observer&& other) noexcept : state_(std::move(other.state_)) { - GPR_ASSERT(other.waker_.is_unwakeable()); - GPR_ASSERT(!other.saw_pending_); + CHECK(other.waker_.is_unwakeable()); + CHECK(!other.saw_pending_); } Observer& operator=(Observer&& other) noexcept = delete; diff --git a/src/core/lib/promise/party.cc b/src/core/lib/promise/party.cc index 104201a3b2f..c030f43c4e0 100644 --- a/src/core/lib/promise/party.cc +++ b/src/core/lib/promise/party.cc @@ -17,6 +17,7 @@ #include #include "absl/base/thread_annotations.h" +#include "absl/log/check.h" #include "absl/strings/str_format.h" #include @@ -102,7 +103,7 @@ class Party::Handle final : public Wakeable { // Activity is going away... drop its reference and sever the connection back. void DropActivity() ABSL_LOCKS_EXCLUDED(mu_) { mu_.Lock(); - GPR_ASSERT(party_ != nullptr); + CHECK_NE(party_, nullptr); party_ = nullptr; mu_.Unlock(); Unref(); @@ -194,13 +195,13 @@ std::string Party::ActivityDebugTag(WakeupMask wakeup_mask) const { } Waker Party::MakeOwningWaker() { - GPR_DEBUG_ASSERT(currently_polling_ != kNotPolling); + DCHECK(currently_polling_ != kNotPolling); IncrementRefCount(); return Waker(this, 1u << currently_polling_); } Waker Party::MakeNonOwningWaker() { - GPR_DEBUG_ASSERT(currently_polling_ != kNotPolling); + DCHECK(currently_polling_ != kNotPolling); return Waker(participants_[currently_polling_] .load(std::memory_order_relaxed) ->MakeNonOwningWakeable(this), @@ -208,7 +209,7 @@ Waker Party::MakeNonOwningWaker() { } void Party::ForceImmediateRepoll(WakeupMask mask) { - GPR_DEBUG_ASSERT(is_current()); + DCHECK(is_current()); sync_.ForceImmediateRepoll(mask); } @@ -232,11 +233,11 @@ void Party::RunLocked() { return; } auto body = [this]() { - GPR_DEBUG_ASSERT(g_current_party_run_next == nullptr); + DCHECK_EQ(g_current_party_run_next, nullptr); Party* run_next = nullptr; g_current_party_run_next = &run_next; const bool done = RunParty(); - GPR_DEBUG_ASSERT(g_current_party_run_next == &run_next); + DCHECK(g_current_party_run_next == &run_next); g_current_party_run_next = nullptr; if (done) { ScopedActivity activity(this); @@ -273,7 +274,7 @@ bool Party::RunOneParticipant(int i) { auto* participant = participants_[i].load(std::memory_order_acquire); if (participant == nullptr) { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(GPR_DEBUG, "%s[party] wakeup %d already complete", + gpr_log(GPR_INFO, "%s[party] wakeup %d already complete", DebugTag().c_str(), i); } return false; @@ -281,7 +282,7 @@ bool Party::RunOneParticipant(int i) { absl::string_view name; if (grpc_trace_promise_primitives.enabled()) { name = participant->name(); - gpr_log(GPR_DEBUG, "%s[%s] begin job %d", DebugTag().c_str(), + gpr_log(GPR_INFO, "%s[%s] begin job %d", DebugTag().c_str(), std::string(name).c_str(), i); } // Poll the participant. @@ -290,12 +291,12 @@ bool Party::RunOneParticipant(int i) { currently_polling_ = kNotPolling; if (done) { if (!name.empty()) { - gpr_log(GPR_DEBUG, "%s[%s] end poll and finish job %d", - DebugTag().c_str(), std::string(name).c_str(), i); + gpr_log(GPR_INFO, "%s[%s] end poll and finish job %d", DebugTag().c_str(), + std::string(name).c_str(), i); } participants_[i].store(nullptr, std::memory_order_relaxed); } else if (!name.empty()) { - gpr_log(GPR_DEBUG, "%s[%s] end poll", DebugTag().c_str(), + gpr_log(GPR_INFO, "%s[%s] end poll", DebugTag().c_str(), std::string(name).c_str()); } return done; @@ -306,7 +307,7 @@ void Party::AddParticipants(Participant** participants, size_t count) { count](size_t* slots) { for (size_t i = 0; i < count; i++) { if (grpc_trace_party_state.enabled()) { - gpr_log(GPR_DEBUG, + gpr_log(GPR_INFO, "Party %p AddParticipant: %s @ %" PRIdPTR, &sync_, std::string(participants[i]->name()).c_str(), slots[i]); } diff --git a/src/core/lib/promise/party.h b/src/core/lib/promise/party.h index 44f890fa208..214c36a588f 100644 --- a/src/core/lib/promise/party.h +++ b/src/core/lib/promise/party.h @@ -24,6 +24,7 @@ #include "absl/base/attributes.h" #include "absl/base/thread_annotations.h" +#include "absl/log/check.h" #include "absl/strings/string_view.h" #include @@ -115,7 +116,7 @@ class PartySyncUsingAtomics { std::memory_order_acquire); LogStateChange("Run", prev_state, prev_state & (kRefMask | kLocked | kAllocatedMask)); - GPR_ASSERT(prev_state & kLocked); + CHECK(prev_state & kLocked); if (prev_state & kDestroying) return true; // From the previous state, extract which participants we're to wakeup. uint64_t wakeups = prev_state & kWakeupMask; @@ -195,7 +196,7 @@ class PartySyncUsingAtomics { slots[n++] = bit; allocated |= 1 << bit; } - GPR_ASSERT(n == count); + CHECK(n == count); // Try to allocate this slot and take a ref (atomically). // Ref needs to be taken because once we store the participant it could be // spuriously woken up and unref the party. @@ -293,7 +294,7 @@ class PartySyncUsingMutex { WakeupMask freed = 0; while (true) { ReleasableMutexLock lock(&mu_); - GPR_ASSERT(locked_); + CHECK(locked_); allocated_ &= ~std::exchange(freed, 0); auto wakeup = std::exchange(wakeups_, 0); if (wakeup == 0) { @@ -322,7 +323,7 @@ class PartySyncUsingMutex { wakeup_mask |= 1 << bit; allocated_ |= 1 << bit; } - GPR_ASSERT(n == count); + CHECK(n == count); store(slots); wakeups_ |= wakeup_mask; return !std::exchange(locked_, true); @@ -390,7 +391,7 @@ class Party : public Activity, private Wakeable { // Activity implementation: not allowed to be overridden by derived types. void ForceImmediateRepoll(WakeupMask mask) final; WakeupMask CurrentParticipant() const final { - GPR_DEBUG_ASSERT(currently_polling_ != kNotPolling); + DCHECK(currently_polling_ != kNotPolling); return 1u << currently_polling_; } Waker MakeOwningWaker() final; @@ -411,10 +412,10 @@ class Party : public Activity, private Wakeable { // This is useful for implementing batching and the like: we can hold some // action until the rest of the party resolves itself. auto AfterCurrentPoll() { - GPR_DEBUG_ASSERT(GetContext() == this); + DCHECK(GetContext() == this); sync_.WakeAfterPoll(CurrentParticipant()); return [this, iteration = sync_.iteration()]() -> Poll { - GPR_DEBUG_ASSERT(GetContext() == this); + DCHECK(GetContext() == this); if (iteration == sync_.iteration()) return Pending{}; return Empty{}; }; diff --git a/src/core/lib/promise/pipe.h b/src/core/lib/promise/pipe.h index f56567e6cf2..570f59e77a1 100644 --- a/src/core/lib/promise/pipe.h +++ b/src/core/lib/promise/pipe.h @@ -22,6 +22,8 @@ #include #include +#include "absl/log/check.h" +#include "absl/log/log.h" #include "absl/strings/str_cat.h" #include "absl/types/optional.h" #include "absl/types/variant.h" @@ -63,7 +65,7 @@ class NextResult final { NextResult() : center_(nullptr) {} explicit NextResult(RefCountedPtr> center) : center_(std::move(center)) { - GPR_ASSERT(center_ != nullptr); + CHECK(center_ != nullptr); } explicit NextResult(bool cancelled) : center_(nullptr), cancelled_(cancelled) {} @@ -79,11 +81,11 @@ class NextResult final { bool has_value() const; // Only valid if has_value() const T& value() const { - GPR_ASSERT(has_value()); + CHECK(has_value()); return **this; } T& value() { - GPR_ASSERT(has_value()); + CHECK(has_value()); return **this; } const T& operator*() const; @@ -118,10 +120,10 @@ class Center : public InterceptorList { // Add one ref to this object, and return this. void IncrementRefCount() { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(GPR_DEBUG, "%s", DebugOpString("IncrementRefCount").c_str()); + VLOG(2) << DebugOpString("IncrementRefCount"); } refs_++; - GPR_DEBUG_ASSERT(refs_ != 0); + DCHECK_NE(refs_, 0); } RefCountedPtr
Ref() { @@ -133,9 +135,9 @@ class Center : public InterceptorList { // If no refs remain, destroy this object void Unref() { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(GPR_DEBUG, "%s", DebugOpString("Unref").c_str()); + VLOG(2) << DebugOpString("Unref"); } - GPR_DEBUG_ASSERT(refs_ > 0); + DCHECK_GT(refs_, 0); refs_--; if (0 == refs_) { this->~Center(); @@ -148,9 +150,9 @@ class Center : public InterceptorList { // Return false if the recv end is closed. Poll Push(T* value) { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(GPR_INFO, "%s", DebugOpString("Push").c_str()); + LOG(INFO) << DebugOpString("Push"); } - GPR_DEBUG_ASSERT(refs_ != 0); + DCHECK_NE(refs_, 0); switch (value_state_) { case ValueState::kClosed: case ValueState::kReadyClosed: @@ -172,9 +174,9 @@ class Center : public InterceptorList { Poll PollAck() { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(GPR_INFO, "%s", DebugOpString("PollAck").c_str()); + LOG(INFO) << DebugOpString("PollAck"); } - GPR_DEBUG_ASSERT(refs_ != 0); + DCHECK_NE(refs_, 0); switch (value_state_) { case ValueState::kClosed: return true; @@ -200,9 +202,9 @@ class Center : public InterceptorList { // Return nullopt if the send end is closed and no value had been pushed. Poll> Next() { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(GPR_INFO, "%s", DebugOpString("Next").c_str()); + LOG(INFO) << DebugOpString("Next"); } - GPR_DEBUG_ASSERT(refs_ != 0); + DCHECK_NE(refs_, 0); switch (value_state_) { case ValueState::kEmpty: case ValueState::kAcked: @@ -226,9 +228,9 @@ class Center : public InterceptorList { // but the pipe is closed, reports closed). Poll PollClosedForSender() { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(GPR_INFO, "%s", DebugOpString("PollClosedForSender").c_str()); + LOG(INFO) << DebugOpString("PollClosedForSender"); } - GPR_DEBUG_ASSERT(refs_ != 0); + DCHECK_NE(refs_, 0); switch (value_state_) { case ValueState::kEmpty: case ValueState::kAcked: @@ -249,9 +251,9 @@ class Center : public InterceptorList { // but the pipe is closed, reports open). Poll PollClosedForReceiver() { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(GPR_INFO, "%s", DebugOpString("PollClosedForReceiver").c_str()); + LOG(INFO) << DebugOpString("PollClosedForReceiver"); } - GPR_DEBUG_ASSERT(refs_ != 0); + DCHECK_NE(refs_, 0); switch (value_state_) { case ValueState::kEmpty: case ValueState::kAcked: @@ -270,9 +272,9 @@ class Center : public InterceptorList { Poll PollEmpty() { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(GPR_INFO, "%s", DebugOpString("PollEmpty").c_str()); + LOG(INFO) << DebugOpString("PollEmpty"); } - GPR_DEBUG_ASSERT(refs_ != 0); + DCHECK_NE(refs_, 0); switch (value_state_) { case ValueState::kReady: case ValueState::kReadyClosed: @@ -290,7 +292,7 @@ class Center : public InterceptorList { void AckNext() { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(GPR_INFO, "%s", DebugOpString("AckNext").c_str()); + LOG(INFO) << DebugOpString("AckNext"); } switch (value_state_) { case ValueState::kReady: @@ -317,7 +319,7 @@ class Center : public InterceptorList { void MarkClosed() { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(GPR_INFO, "%s", DebugOpString("MarkClosed").c_str()); + LOG(INFO) << DebugOpString("MarkClosed"); } switch (value_state_) { case ValueState::kEmpty: @@ -346,7 +348,7 @@ class Center : public InterceptorList { void MarkCancelled() { if (grpc_trace_promise_primitives.enabled()) { - gpr_log(GPR_INFO, "%s", DebugOpString("MarkCancelled").c_str()); + LOG(INFO) << DebugOpString("MarkCancelled"); } switch (value_state_) { case ValueState::kEmpty: @@ -668,7 +670,7 @@ class Push { return Pending{}; } } - GPR_DEBUG_ASSERT(absl::holds_alternative(state_)); + DCHECK(absl::holds_alternative(state_)); return center_->PollAck(); } diff --git a/src/core/lib/promise/poll.h b/src/core/lib/promise/poll.h index 53604c2c89d..57a4a65e83a 100644 --- a/src/core/lib/promise/poll.h +++ b/src/core/lib/promise/poll.h @@ -18,6 +18,8 @@ #include #include +#include "absl/log/check.h" + #include #include @@ -95,12 +97,12 @@ class Poll { bool ready() const { return ready_; } T& value() { - GPR_DEBUG_ASSERT(ready()); + DCHECK(ready()); return value_; } const T& value() const { - GPR_DEBUG_ASSERT(ready()); + DCHECK(ready()); return value_; } @@ -154,7 +156,7 @@ class Poll { bool ready() const { return ready_; } Empty value() const { - GPR_DEBUG_ASSERT(ready()); + DCHECK(ready()); return Empty{}; } diff --git a/src/core/lib/promise/promise_mutex.h b/src/core/lib/promise/promise_mutex.h index 218919db1e9..d1e01f22319 100644 --- a/src/core/lib/promise/promise_mutex.h +++ b/src/core/lib/promise/promise_mutex.h @@ -17,6 +17,8 @@ #include +#include "absl/log/check.h" + #include #include @@ -35,7 +37,7 @@ class PromiseMutex { Lock() {} ~Lock() { if (mutex_ != nullptr) { - GPR_ASSERT(mutex_->locked_); + CHECK(mutex_->locked_); mutex_->locked_ = false; mutex_->waiter_.Wake(); } @@ -52,18 +54,18 @@ class PromiseMutex { Lock& operator=(const Lock&) noexcept = delete; T* operator->() { - GPR_DEBUG_ASSERT(mutex_ != nullptr); + DCHECK_NE(mutex_, nullptr); return &mutex_->value_; } T& operator*() { - GPR_DEBUG_ASSERT(mutex_ != nullptr); + DCHECK_NE(mutex_, nullptr); return mutex_->value_; } private: friend class PromiseMutex; explicit Lock(PromiseMutex* mutex) : mutex_(mutex) { - GPR_DEBUG_ASSERT(!mutex_->locked_); + DCHECK(!mutex_->locked_); mutex_->locked_ = true; } PromiseMutex* mutex_ = nullptr; @@ -71,7 +73,7 @@ class PromiseMutex { PromiseMutex() = default; explicit PromiseMutex(T value) : value_(std::move(value)) {} - ~PromiseMutex() { GPR_DEBUG_ASSERT(!locked_); } + ~PromiseMutex() { DCHECK(!locked_); } auto Acquire() { return [this]() -> Poll { diff --git a/src/core/lib/promise/status_flag.h b/src/core/lib/promise/status_flag.h index 3626c251fb0..132b2079c07 100644 --- a/src/core/lib/promise/status_flag.h +++ b/src/core/lib/promise/status_flag.h @@ -15,6 +15,7 @@ #ifndef GRPC_SRC_CORE_LIB_PROMISE_STATUS_FLAG_H #define GRPC_SRC_CORE_LIB_PROMISE_STATUS_FLAG_H +#include "absl/log/check.h" #include "absl/status/status.h" #include "absl/status/statusor.h" #include "absl/types/optional.h" @@ -127,7 +128,7 @@ struct StatusCastImpl { template struct FailureStatusCastImpl, StatusFlag> { static absl::StatusOr Cast(StatusFlag flag) { - GPR_DEBUG_ASSERT(!flag.ok()); + DCHECK(!flag.ok()); return absl::CancelledError(); } }; @@ -135,7 +136,7 @@ struct FailureStatusCastImpl, StatusFlag> { template struct FailureStatusCastImpl, StatusFlag&> { static absl::StatusOr Cast(StatusFlag flag) { - GPR_DEBUG_ASSERT(!flag.ok()); + DCHECK(!flag.ok()); return absl::CancelledError(); } }; @@ -143,7 +144,7 @@ struct FailureStatusCastImpl, StatusFlag&> { template struct FailureStatusCastImpl, const StatusFlag&> { static absl::StatusOr Cast(StatusFlag flag) { - GPR_DEBUG_ASSERT(!flag.ok()); + DCHECK(!flag.ok()); return absl::CancelledError(); } }; @@ -157,7 +158,7 @@ class ValueOrFailure { // NOLINTNEXTLINE(google-explicit-constructor) ValueOrFailure(Failure) {} // NOLINTNEXTLINE(google-explicit-constructor) - ValueOrFailure(StatusFlag status) { GPR_ASSERT(!status.ok()); } + ValueOrFailure(StatusFlag status) { CHECK(!status.ok()); } static ValueOrFailure FromOptional(absl::optional value) { return ValueOrFailure{std::move(value)}; @@ -170,6 +171,8 @@ class ValueOrFailure { T& value() { return value_.value(); } const T& operator*() const { return *value_; } T& operator*() { return *value_; } + const T* operator->() const { return &*value_; } + T* operator->() { return &*value_; } bool operator==(const ValueOrFailure& other) const { return value_ == other.value_; @@ -215,7 +218,7 @@ struct StatusCastImpl, Failure> { template struct StatusCastImpl, StatusFlag&> { static ValueOrFailure Cast(StatusFlag f) { - GPR_ASSERT(!f.ok()); + CHECK(!f.ok()); return ValueOrFailure(Failure{}); } }; @@ -223,7 +226,7 @@ struct StatusCastImpl, StatusFlag&> { template struct StatusCastImpl, StatusFlag> { static ValueOrFailure Cast(StatusFlag f) { - GPR_ASSERT(!f.ok()); + CHECK(!f.ok()); return ValueOrFailure(Failure{}); } }; diff --git a/src/core/lib/promise/try_join.h b/src/core/lib/promise/try_join.h index b984d880190..77b0496792b 100644 --- a/src/core/lib/promise/try_join.h +++ b/src/core/lib/promise/try_join.h @@ -18,6 +18,7 @@ #include #include +#include "absl/log/check.h" #include "absl/meta/type_traits.h" #include "absl/status/status.h" #include "absl/status/statusor.h" @@ -83,7 +84,7 @@ struct TryJoinTraits { } template static R EarlyReturn(const ValueOrFailure& x) { - GPR_ASSERT(!x.ok()); + CHECK(!x.ok()); return FailureStatusCast(Failure{}); } template diff --git a/src/core/lib/promise/try_seq.h b/src/core/lib/promise/try_seq.h index aaecff002b0..36f2c9639f0 100644 --- a/src/core/lib/promise/try_seq.h +++ b/src/core/lib/promise/try_seq.h @@ -20,6 +20,7 @@ #include #include +#include "absl/log/check.h" #include "absl/meta/type_traits.h" #include "absl/status/status.h" #include "absl/status/statusor.h" @@ -162,7 +163,7 @@ struct TrySeqTraitsWithSfinae< } template static R ReturnValue(T&& status) { - GPR_DEBUG_ASSERT(!IsStatusOk(status)); + DCHECK(!IsStatusOk(status)); return FailureStatusCast(status.status()); } template diff --git a/src/core/lib/resource_quota/arena.cc b/src/core/lib/resource_quota/arena.cc index 7a0f9e752f0..a2969abe241 100644 --- a/src/core/lib/resource_quota/arena.cc +++ b/src/core/lib/resource_quota/arena.cc @@ -24,7 +24,7 @@ #include #include -#include "src/core/lib/gpr/alloc.h" +#include "src/core/util/alloc.h" namespace { diff --git a/src/core/lib/resource_quota/arena.h b/src/core/lib/resource_quota/arena.h index 5985c9220fb..813004087b7 100644 --- a/src/core/lib/resource_quota/arena.h +++ b/src/core/lib/resource_quota/arena.h @@ -35,10 +35,10 @@ #include #include -#include "src/core/lib/gpr/alloc.h" #include "src/core/lib/gprpp/construct_destruct.h" #include "src/core/lib/promise/context.h" #include "src/core/lib/resource_quota/memory_quota.h" +#include "src/core/util/alloc.h" #define GRPC_ARENA_POOLED_ALLOCATIONS_USE_MALLOC // #define GRPC_ARENA_TRACE_POOLED_ALLOCATIONS diff --git a/src/core/lib/resource_quota/connection_quota.cc b/src/core/lib/resource_quota/connection_quota.cc index 74c8514d159..ab07f5e21b3 100644 --- a/src/core/lib/resource_quota/connection_quota.cc +++ b/src/core/lib/resource_quota/connection_quota.cc @@ -17,6 +17,8 @@ #include #include +#include "absl/log/check.h" + #include #include @@ -26,10 +28,9 @@ ConnectionQuota::ConnectionQuota() = default; void ConnectionQuota::SetMaxIncomingConnections(int max_incoming_connections) { // The maximum can only be configured once. - GPR_ASSERT(max_incoming_connections < INT_MAX); - GPR_ASSERT(max_incoming_connections_.exchange(max_incoming_connections, - std::memory_order_release) == - INT_MAX); + CHECK_LT(max_incoming_connections, INT_MAX); + CHECK(max_incoming_connections_.exchange( + max_incoming_connections, std::memory_order_release) == INT_MAX); } // Returns true if the incoming connection is allowed to be accepted on the @@ -62,9 +63,8 @@ void ConnectionQuota::ReleaseConnections(int num_connections) { if (max_incoming_connections_.load(std::memory_order_relaxed) == INT_MAX) { return; } - GPR_ASSERT(active_incoming_connections_.fetch_sub( - num_connections, std::memory_order_acq_rel) >= - num_connections); + CHECK(active_incoming_connections_.fetch_sub( + num_connections, std::memory_order_acq_rel) >= num_connections); } } // namespace grpc_core diff --git a/src/core/lib/resource_quota/memory_quota.cc b/src/core/lib/resource_quota/memory_quota.cc index 929df9068a5..79702ce7fff 100644 --- a/src/core/lib/resource_quota/memory_quota.cc +++ b/src/core/lib/resource_quota/memory_quota.cc @@ -25,6 +25,7 @@ #include #include +#include "absl/log/check.h" #include "absl/status/status.h" #include "absl/strings/str_cat.h" @@ -33,7 +34,6 @@ #include #include "src/core/lib/debug/trace.h" -#include "src/core/lib/gpr/useful.h" #include "src/core/lib/gprpp/mpscq.h" #include "src/core/lib/promise/exec_ctx_wakeup_scheduler.h" #include "src/core/lib/promise/loop.h" @@ -42,6 +42,7 @@ #include "src/core/lib/promise/seq.h" #include "src/core/lib/resource_quota/trace.h" #include "src/core/lib/slice/slice_refcount.h" +#include "src/core/util/useful.h" namespace grpc_core { @@ -252,9 +253,9 @@ GrpcMemoryAllocatorImpl::GrpcMemoryAllocatorImpl( } GrpcMemoryAllocatorImpl::~GrpcMemoryAllocatorImpl() { - GPR_ASSERT(free_bytes_.load(std::memory_order_acquire) + - sizeof(GrpcMemoryAllocatorImpl) == - taken_bytes_.load(std::memory_order_relaxed)); + CHECK(free_bytes_.load(std::memory_order_acquire) + + sizeof(GrpcMemoryAllocatorImpl) == + taken_bytes_.load(std::memory_order_relaxed)); memory_quota_->Return(taken_bytes_.load(std::memory_order_relaxed)); } @@ -265,7 +266,7 @@ void GrpcMemoryAllocatorImpl::Shutdown() { reclamation_handles[kNumReclamationPasses]; { MutexLock lock(&reclaimer_mu_); - GPR_ASSERT(!shutdown_); + CHECK(!shutdown_); shutdown_ = true; memory_quota = memory_quota_; for (size_t i = 0; i < kNumReclamationPasses; i++) { @@ -277,8 +278,8 @@ void GrpcMemoryAllocatorImpl::Shutdown() { size_t GrpcMemoryAllocatorImpl::Reserve(MemoryRequest request) { // Validate request - performed here so we don't bloat the generated code with // inlined asserts. - GPR_ASSERT(request.min() <= request.max()); - GPR_ASSERT(request.max() <= MemoryRequest::max_allowed_size()); + CHECK(request.min() <= request.max()); + CHECK(request.max() <= MemoryRequest::max_allowed_size()); size_t old_free = free_bytes_.load(std::memory_order_relaxed); while (true) { @@ -357,7 +358,7 @@ void GrpcMemoryAllocatorImpl::MaybeDonateBack() { if (GRPC_TRACE_FLAG_ENABLED(grpc_resource_quota_trace)) { gpr_log(GPR_INFO, "[%p] Early return %" PRIdPTR " bytes", this, ret); } - GPR_ASSERT(taken_bytes_.fetch_sub(ret, std::memory_order_relaxed) >= ret); + CHECK(taken_bytes_.fetch_sub(ret, std::memory_order_relaxed) >= ret); memory_quota_->Return(ret); return; } @@ -478,7 +479,7 @@ void BasicMemoryQuota::Start() { reclaimer_activity_ = MakeActivity(std::move(reclamation_loop), ExecCtxWakeupScheduler(), [](absl::Status status) { - GPR_ASSERT(status.code() == absl::StatusCode::kCancelled); + CHECK(status.code() == absl::StatusCode::kCancelled); }); } @@ -498,7 +499,7 @@ void BasicMemoryQuota::SetSize(size_t new_size) { void BasicMemoryQuota::Take(GrpcMemoryAllocatorImpl* allocator, size_t amount) { // If there's a request for nothing, then do nothing! if (amount == 0) return; - GPR_DEBUG_ASSERT(amount <= std::numeric_limits::max()); + DCHECK(amount <= std::numeric_limits::max()); // Grab memory from the quota. auto prior = free_bytes_.fetch_sub(amount, std::memory_order_acq_rel); // If we push into overcommit, awake the reclaimer. diff --git a/src/core/lib/resource_quota/memory_quota.h b/src/core/lib/resource_quota/memory_quota.h index fc8d966382c..79de77cf793 100644 --- a/src/core/lib/resource_quota/memory_quota.h +++ b/src/core/lib/resource_quota/memory_quota.h @@ -28,6 +28,7 @@ #include "absl/base/thread_annotations.h" #include "absl/container/flat_hash_set.h" +#include "absl/log/check.h" #include "absl/strings/string_view.h" #include "absl/types/optional.h" @@ -38,7 +39,6 @@ #include "src/core/lib/debug/trace.h" #include "src/core/lib/experiments/experiments.h" -#include "src/core/lib/gpr/useful.h" #include "src/core/lib/gprpp/orphanable.h" #include "src/core/lib/gprpp/ref_counted_ptr.h" #include "src/core/lib/gprpp/sync.h" @@ -47,6 +47,7 @@ #include "src/core/lib/promise/poll.h" #include "src/core/lib/resource_quota/periodic_update.h" #include "src/core/lib/resource_quota/trace.h" +#include "src/core/util/useful.h" namespace grpc_core { @@ -137,7 +138,7 @@ class ReclaimerQueue { explicit Handle(F reclaimer, std::shared_ptr state) : sweep_(new SweepFn(std::move(reclaimer), std::move(state))) {} ~Handle() override { - GPR_DEBUG_ASSERT(sweep_.load(std::memory_order_relaxed) == nullptr); + DCHECK_EQ(sweep_.load(std::memory_order_relaxed), nullptr); } Handle(const Handle&) = delete; @@ -438,7 +439,7 @@ class GrpcMemoryAllocatorImpl final : public EventEngineMemoryAllocatorImpl { template void PostReclaimer(ReclamationPass pass, F fn) { MutexLock lock(&reclaimer_mu_); - GPR_ASSERT(!shutdown_); + CHECK(!shutdown_); InsertReclaimer(static_cast(pass), std::move(fn)); } diff --git a/src/core/lib/resource_quota/periodic_update.cc b/src/core/lib/resource_quota/periodic_update.cc index b39ad44a44f..b4874fea1da 100644 --- a/src/core/lib/resource_quota/periodic_update.cc +++ b/src/core/lib/resource_quota/periodic_update.cc @@ -18,7 +18,7 @@ #include -#include "src/core/lib/gpr/useful.h" +#include "src/core/util/useful.h" namespace grpc_core { diff --git a/src/core/lib/resource_quota/resource_quota.h b/src/core/lib/resource_quota/resource_quota.h index 37f1fa7c989..e17448f14eb 100644 --- a/src/core/lib/resource_quota/resource_quota.h +++ b/src/core/lib/resource_quota/resource_quota.h @@ -24,12 +24,12 @@ #include #include -#include "src/core/lib/gpr/useful.h" #include "src/core/lib/gprpp/cpp_impl_of.h" #include "src/core/lib/gprpp/ref_counted.h" #include "src/core/lib/gprpp/ref_counted_ptr.h" #include "src/core/lib/resource_quota/memory_quota.h" #include "src/core/lib/resource_quota/thread_quota.h" +#include "src/core/util/useful.h" namespace grpc_core { diff --git a/src/core/lib/resource_quota/thread_quota.cc b/src/core/lib/resource_quota/thread_quota.cc index eb30d336341..b2aba40210f 100644 --- a/src/core/lib/resource_quota/thread_quota.cc +++ b/src/core/lib/resource_quota/thread_quota.cc @@ -14,6 +14,8 @@ #include "src/core/lib/resource_quota/thread_quota.h" +#include "absl/log/check.h" + #include #include @@ -37,7 +39,7 @@ bool ThreadQuota::Reserve(size_t num_threads) { void ThreadQuota::Release(size_t num_threads) { MutexLock lock(&mu_); - GPR_ASSERT(num_threads <= allocated_); + CHECK(num_threads <= allocated_); allocated_ -= num_threads; } diff --git a/src/core/lib/security/authorization/audit_logging.cc b/src/core/lib/security/authorization/audit_logging.cc index aa8d34ce9a2..d5b9ae3d149 100644 --- a/src/core/lib/security/authorization/audit_logging.cc +++ b/src/core/lib/security/authorization/audit_logging.cc @@ -22,6 +22,7 @@ #include #include +#include "absl/log/check.h" #include "absl/status/status.h" #include "absl/status/statusor.h" #include "absl/strings/str_format.h" @@ -45,15 +46,15 @@ AuditLoggerRegistry* AuditLoggerRegistry::registry = new AuditLoggerRegistry(); AuditLoggerRegistry::AuditLoggerRegistry() { auto factory = std::make_unique(); absl::string_view name = factory->name(); - GPR_ASSERT(logger_factories_map_.emplace(name, std::move(factory)).second); + CHECK(logger_factories_map_.emplace(name, std::move(factory)).second); } void AuditLoggerRegistry::RegisterFactory( std::unique_ptr factory) { - GPR_ASSERT(factory != nullptr); + CHECK(factory != nullptr); MutexLock lock(mu); absl::string_view name = factory->name(); - GPR_ASSERT( + CHECK( registry->logger_factories_map_.emplace(name, std::move(factory)).second); } @@ -78,7 +79,7 @@ std::unique_ptr AuditLoggerRegistry::CreateAuditLogger( std::unique_ptr config) { MutexLock lock(mu); auto it = registry->logger_factories_map_.find(config->name()); - GPR_ASSERT(it != registry->logger_factories_map_.end()); + CHECK(it != registry->logger_factories_map_.end()); return it->second->CreateAuditLogger(std::move(config)); } diff --git a/src/core/lib/security/authorization/authorization_policy_provider.h b/src/core/lib/security/authorization/authorization_policy_provider.h index cca363f38fd..a4dbc5e8a08 100644 --- a/src/core/lib/security/authorization/authorization_policy_provider.h +++ b/src/core/lib/security/authorization/authorization_policy_provider.h @@ -21,10 +21,10 @@ #include #include -#include "src/core/lib/gpr/useful.h" #include "src/core/lib/gprpp/dual_ref_counted.h" #include "src/core/lib/gprpp/ref_counted_ptr.h" #include "src/core/lib/security/authorization/authorization_engine.h" +#include "src/core/util/useful.h" struct grpc_authorization_policy_provider : public grpc_core::DualRefCounted { diff --git a/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc b/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc index ddf1a1201ad..8c8236e2367 100644 --- a/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +++ b/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc @@ -16,9 +16,9 @@ #include #include -#include "src/core/lib/gpr/useful.h" #include "src/core/lib/gprpp/ref_counted_ptr.h" #include "src/core/lib/security/authorization/authorization_policy_provider.h" +#include "src/core/util/useful.h" namespace { diff --git a/src/core/lib/security/authorization/evaluate_args.cc b/src/core/lib/security/authorization/evaluate_args.cc index 5846cb6658c..8da1bd7eeb3 100644 --- a/src/core/lib/security/authorization/evaluate_args.cc +++ b/src/core/lib/security/authorization/evaluate_args.cc @@ -16,6 +16,7 @@ #include +#include "absl/log/log.h" #include "absl/status/status.h" #include "absl/status/statusor.h" #include "absl/strings/match.h" @@ -25,11 +26,11 @@ #include #include +#include "src/core/handshaker/endpoint_info/endpoint_info_handshaker.h" #include "src/core/lib/address_utils/parse_address.h" #include "src/core/lib/gprpp/host_port.h" #include "src/core/lib/security/credentials/tls/tls_utils.h" #include "src/core/lib/slice/slice.h" -#include "src/core/lib/transport/endpoint_info_handshaker.h" #include "src/core/lib/uri/uri_parser.h" namespace grpc_core { @@ -41,7 +42,7 @@ EvaluateArgs::PerChannelArgs::Address ParseEndpointUri( EvaluateArgs::PerChannelArgs::Address address; absl::StatusOr uri = URI::Parse(uri_text); if (!uri.ok()) { - gpr_log(GPR_DEBUG, "Failed to parse uri."); + VLOG(2) << "Failed to parse uri."; return address; } absl::string_view host_view; diff --git a/src/core/lib/security/authorization/grpc_authorization_engine.cc b/src/core/lib/security/authorization/grpc_authorization_engine.cc index bce0619f68e..62595ee70b5 100644 --- a/src/core/lib/security/authorization/grpc_authorization_engine.cc +++ b/src/core/lib/security/authorization/grpc_authorization_engine.cc @@ -18,6 +18,8 @@ #include #include +#include "absl/log/check.h" + #include #include @@ -58,7 +60,7 @@ GrpcAuthorizationEngine::GrpcAuthorizationEngine(Rbac policy) for (auto& logger_config : policy.logger_configs) { auto logger = AuditLoggerRegistry::CreateAuditLogger(std::move(logger_config)); - GPR_ASSERT(logger != nullptr); + CHECK(logger != nullptr); audit_loggers_.push_back(std::move(logger)); } } diff --git a/src/core/lib/security/authorization/grpc_authorization_policy_provider.cc b/src/core/lib/security/authorization/grpc_authorization_policy_provider.cc index caca700f75b..85de990fa88 100644 --- a/src/core/lib/security/authorization/grpc_authorization_policy_provider.cc +++ b/src/core/lib/security/authorization/grpc_authorization_policy_provider.cc @@ -18,6 +18,7 @@ #include +#include "absl/log/check.h" #include "absl/types/optional.h" #include @@ -82,8 +83,8 @@ gpr_timespec TimeoutSecondsToDeadline(int64_t seconds) { absl::StatusOr> FileWatcherAuthorizationPolicyProvider::Create( absl::string_view authz_policy_path, unsigned int refresh_interval_sec) { - GPR_ASSERT(!authz_policy_path.empty()); - GPR_ASSERT(refresh_interval_sec > 0); + CHECK(!authz_policy_path.empty()); + CHECK_GT(refresh_interval_sec, 0u); absl::Status status; auto provider = MakeRefCounted( authz_policy_path, refresh_interval_sec, &status); @@ -105,7 +106,7 @@ FileWatcherAuthorizationPolicyProvider::FileWatcherAuthorizationPolicyProvider( auto thread_lambda = [](void* arg) { WeakRefCountedPtr provider( static_cast(arg)); - GPR_ASSERT(provider != nullptr); + CHECK(provider != nullptr); while (true) { void* value = gpr_event_wait( &provider->shutdown_event_, @@ -193,7 +194,7 @@ grpc_authorization_policy_provider* grpc_authorization_policy_provider_static_data_create( const char* authz_policy, grpc_status_code* code, const char** error_details) { - GPR_ASSERT(authz_policy != nullptr); + CHECK_NE(authz_policy, nullptr); auto provider_or = grpc_core::StaticDataAuthorizationPolicyProvider::Create(authz_policy); if (!provider_or.ok()) { @@ -209,7 +210,7 @@ grpc_authorization_policy_provider* grpc_authorization_policy_provider_file_watcher_create( const char* authz_policy_path, unsigned int refresh_interval_sec, grpc_status_code* code, const char** error_details) { - GPR_ASSERT(authz_policy_path != nullptr); + CHECK_NE(authz_policy_path, nullptr); auto provider_or = grpc_core::FileWatcherAuthorizationPolicyProvider::Create( authz_policy_path, refresh_interval_sec); if (!provider_or.ok()) { diff --git a/src/core/lib/security/authorization/grpc_server_authz_filter.cc b/src/core/lib/security/authorization/grpc_server_authz_filter.cc index 5474847701a..7207b3897fa 100644 --- a/src/core/lib/security/authorization/grpc_server_authz_filter.cc +++ b/src/core/lib/security/authorization/grpc_server_authz_filter.cc @@ -41,6 +41,7 @@ TraceFlag grpc_authz_trace(false, "grpc_authz_api"); const NoInterceptor GrpcServerAuthzFilter::Call::OnServerInitialMetadata; const NoInterceptor GrpcServerAuthzFilter::Call::OnServerTrailingMetadata; const NoInterceptor GrpcServerAuthzFilter::Call::OnClientToServerMessage; +const NoInterceptor GrpcServerAuthzFilter::Call::OnClientToServerHalfClose; const NoInterceptor GrpcServerAuthzFilter::Call::OnServerToClientMessage; const NoInterceptor GrpcServerAuthzFilter::Call::OnFinalize; diff --git a/src/core/lib/security/authorization/grpc_server_authz_filter.h b/src/core/lib/security/authorization/grpc_server_authz_filter.h index b4b0a7463cd..742b3979d88 100644 --- a/src/core/lib/security/authorization/grpc_server_authz_filter.h +++ b/src/core/lib/security/authorization/grpc_server_authz_filter.h @@ -51,6 +51,7 @@ class GrpcServerAuthzFilter final static const NoInterceptor OnServerInitialMetadata; static const NoInterceptor OnServerTrailingMetadata; static const NoInterceptor OnClientToServerMessage; + static const NoInterceptor OnClientToServerHalfClose; static const NoInterceptor OnServerToClientMessage; static const NoInterceptor OnFinalize; }; diff --git a/src/core/lib/security/authorization/rbac_translator.cc b/src/core/lib/security/authorization/rbac_translator.cc index 481ee34552a..7ae89a4d7a8 100644 --- a/src/core/lib/security/authorization/rbac_translator.cc +++ b/src/core/lib/security/authorization/rbac_translator.cc @@ -23,6 +23,7 @@ #include #include +#include "absl/log/check.h" #include "absl/status/status.h" #include "absl/status/statusor.h" #include "absl/strings/match.h" @@ -36,11 +37,11 @@ #include #include -#include "src/core/lib/gpr/useful.h" #include "src/core/lib/json/json.h" #include "src/core/lib/json/json_reader.h" #include "src/core/lib/matchers/matchers.h" #include "src/core/lib/security/authorization/audit_logging.h" +#include "src/core/util/useful.h" namespace grpc_core { @@ -421,7 +422,7 @@ ParseAuditLogger(const Json& json, size_t pos) { } absl::Status ParseAuditLoggingOptions(const Json& json, RbacPolicies* rbacs) { - GPR_ASSERT(rbacs != nullptr); + CHECK_NE(rbacs, nullptr); for (auto it = json.object().begin(); it != json.object().end(); ++it) { if (it->first == "audit_condition") { if (it->second.type() != Json::Type::kString) { @@ -475,7 +476,7 @@ absl::Status ParseAuditLoggingOptions(const Json& json, RbacPolicies* rbacs) { // Parse again since it returns unique_ptr, but result should be ok // this time. auto result = ParseAuditLogger(loggers.at(i), i); - GPR_ASSERT(result.ok()); + CHECK(result.ok()); rbacs->deny_policy->logger_configs.push_back( std::move(result.value())); } diff --git a/src/core/lib/security/authorization/stdout_logger.cc b/src/core/lib/security/authorization/stdout_logger.cc index 15bbef6bcf4..8e2adb6dd17 100644 --- a/src/core/lib/security/authorization/stdout_logger.cc +++ b/src/core/lib/security/authorization/stdout_logger.cc @@ -18,6 +18,7 @@ #include #include +#include "absl/log/check.h" #include "absl/status/statusor.h" #include "absl/strings/str_format.h" #include "absl/strings/string_view.h" @@ -65,7 +66,8 @@ StdoutAuditLoggerFactory::ParseAuditLoggerConfig(const Json&) { std::unique_ptr StdoutAuditLoggerFactory::CreateAuditLogger( std::unique_ptr config) { // Sanity check. - GPR_ASSERT(config != nullptr && config->name() == name()); + CHECK(config != nullptr); + CHECK(config->name() == name()); return std::make_unique(); } diff --git a/src/core/lib/security/certificate_provider/certificate_provider_registry.cc b/src/core/lib/security/certificate_provider/certificate_provider_registry.cc index fde0d303673..a2ca59f95be 100644 --- a/src/core/lib/security/certificate_provider/certificate_provider_registry.cc +++ b/src/core/lib/security/certificate_provider/certificate_provider_registry.cc @@ -21,6 +21,8 @@ #include #include +#include "absl/log/check.h" + #include #include @@ -31,7 +33,7 @@ void CertificateProviderRegistry::Builder::RegisterCertificateProviderFactory( absl::string_view name = factory->name(); gpr_log(GPR_DEBUG, "registering certificate provider factory for \"%s\"", std::string(name).c_str()); - GPR_ASSERT(factories_.emplace(name, std::move(factory)).second); + CHECK(factories_.emplace(name, std::move(factory)).second); } CertificateProviderRegistry CertificateProviderRegistry::Builder::Build() { diff --git a/src/core/lib/security/context/security_context.cc b/src/core/lib/security/context/security_context.cc index 877adb8c788..0fc65da3f42 100644 --- a/src/core/lib/security/context/security_context.cc +++ b/src/core/lib/security/context/security_context.cc @@ -22,6 +22,9 @@ #include +#include "absl/log/check.h" +#include "absl/log/log.h" + #include #include #include @@ -50,7 +53,7 @@ grpc_call_error grpc_call_set_credentials(grpc_call* call, GRPC_API_TRACE("grpc_call_set_credentials(call=%p, creds=%p)", 2, (call, creds)); if (!grpc_call_is_client(call)) { - gpr_log(GPR_ERROR, "Method is client-side only."); + LOG(ERROR) << "Method is client-side only."; return GRPC_CALL_ERROR_NOT_ON_SERVER; } ctx = static_cast( @@ -193,7 +196,7 @@ const grpc_auth_property* grpc_auth_property_iterator_next( while (it->index < it->ctx->properties().count) { const grpc_auth_property* prop = &it->ctx->properties().array[it->index++]; - GPR_ASSERT(prop->name != nullptr); + CHECK_NE(prop->name, nullptr); if (strcmp(it->name, prop->name) == 0) { return prop; } diff --git a/src/core/lib/security/context/security_context.h b/src/core/lib/security/context/security_context.h index 1c1b85bfc63..f07b5b7cc19 100644 --- a/src/core/lib/security/context/security_context.h +++ b/src/core/lib/security/context/security_context.h @@ -33,12 +33,12 @@ #include #include "src/core/lib/debug/trace.h" -#include "src/core/lib/gpr/useful.h" #include "src/core/lib/gprpp/debug_location.h" #include "src/core/lib/gprpp/ref_counted.h" #include "src/core/lib/gprpp/ref_counted_ptr.h" #include "src/core/lib/resource_quota/arena.h" #include "src/core/lib/security/credentials/credentials.h" // IWYU pragma: keep +#include "src/core/util/useful.h" extern grpc_core::DebugOnlyTraceFlag grpc_trace_auth_context_refcount; diff --git a/src/core/lib/security/credentials/alts/alts_credentials.h b/src/core/lib/security/credentials/alts/alts_credentials.h index 46a513a0026..e49ef34be4e 100644 --- a/src/core/lib/security/credentials/alts/alts_credentials.h +++ b/src/core/lib/security/credentials/alts/alts_credentials.h @@ -25,11 +25,11 @@ #include #include "src/core/lib/channel/channel_args.h" -#include "src/core/lib/gpr/useful.h" #include "src/core/lib/gprpp/ref_counted_ptr.h" #include "src/core/lib/gprpp/unique_type_name.h" #include "src/core/lib/security/credentials/credentials.h" #include "src/core/lib/security/security_connector/security_connector.h" +#include "src/core/util/useful.h" // Main struct for grpc ALTS channel credential. class grpc_alts_credentials final : public grpc_channel_credentials { diff --git a/src/core/lib/security/credentials/alts/check_gcp_environment.cc b/src/core/lib/security/credentials/alts/check_gcp_environment.cc index 3c98988a48e..ff7ce1e33bf 100644 --- a/src/core/lib/security/credentials/alts/check_gcp_environment.cc +++ b/src/core/lib/security/credentials/alts/check_gcp_environment.cc @@ -22,6 +22,8 @@ #include #include +#include "absl/log/log.h" + #include #include #include @@ -56,7 +58,7 @@ namespace internal { char* read_bios_file(const char* bios_file) { FILE* fp = fopen(bios_file, "r"); if (!fp) { - gpr_log(GPR_INFO, "BIOS data file does not exist or cannot be opened."); + LOG(INFO) << "BIOS data file does not exist or cannot be opened."; return nullptr; } char buf[kBiosDataBufferSize + 1]; diff --git a/src/core/lib/security/credentials/call_creds_util.cc b/src/core/lib/security/credentials/call_creds_util.cc index e946bd64716..c49dd918ab5 100644 --- a/src/core/lib/security/credentials/call_creds_util.cc +++ b/src/core/lib/security/credentials/call_creds_util.cc @@ -18,6 +18,7 @@ #include +#include "absl/log/log.h" #include "absl/strings/str_cat.h" #include "absl/strings/string_view.h" @@ -47,7 +48,7 @@ ServiceUrlAndMethod MakeServiceUrlAndMethod( auto last_slash = service.find_last_of('/'); absl::string_view method_name; if (last_slash == absl::string_view::npos) { - gpr_log(GPR_ERROR, "No '/' found in fully qualified method name"); + LOG(ERROR) << "No '/' found in fully qualified method name"; service = ""; method_name = ""; } else if (last_slash == 0) { diff --git a/src/core/lib/security/credentials/composite/composite_credentials.cc b/src/core/lib/security/credentials/composite/composite_credentials.cc index a9273162eb6..0684012e796 100644 --- a/src/core/lib/security/credentials/composite/composite_credentials.cc +++ b/src/core/lib/security/credentials/composite/composite_credentials.cc @@ -22,6 +22,7 @@ #include #include +#include "absl/log/check.h" #include "absl/strings/str_cat.h" #include "absl/strings/str_join.h" @@ -130,9 +131,9 @@ grpc_call_credentials* grpc_composite_call_credentials_create( "grpc_composite_call_credentials_create(creds1=%p, creds2=%p, " "reserved=%p)", 3, (creds1, creds2, reserved)); - GPR_ASSERT(reserved == nullptr); - GPR_ASSERT(creds1 != nullptr); - GPR_ASSERT(creds2 != nullptr); + CHECK_EQ(reserved, nullptr); + CHECK_NE(creds1, nullptr); + CHECK_NE(creds2, nullptr); return composite_call_credentials_create(creds1->Ref(), creds2->Ref()) .release(); @@ -144,7 +145,8 @@ grpc_core::RefCountedPtr grpc_composite_channel_credentials::create_security_connector( grpc_core::RefCountedPtr call_creds, const char* target, grpc_core::ChannelArgs* args) { - GPR_ASSERT(inner_creds_ != nullptr && call_creds_ != nullptr); + CHECK(inner_creds_ != nullptr); + CHECK(call_creds_ != nullptr); // If we are passed a call_creds, create a call composite to pass it // downstream. if (call_creds != nullptr) { @@ -159,8 +161,8 @@ grpc_composite_channel_credentials::create_security_connector( grpc_channel_credentials* grpc_composite_channel_credentials_create( grpc_channel_credentials* channel_creds, grpc_call_credentials* call_creds, void* reserved) { - GPR_ASSERT(channel_creds != nullptr && call_creds != nullptr && - reserved == nullptr); + CHECK(channel_creds != nullptr && call_creds != nullptr && + reserved == nullptr); GRPC_API_TRACE( "grpc_composite_channel_credentials_create(channel_creds=%p, " "call_creds=%p, reserved=%p)", diff --git a/src/core/lib/security/credentials/composite/composite_credentials.h b/src/core/lib/security/credentials/composite/composite_credentials.h index 230706ed935..bcf2915abaa 100644 --- a/src/core/lib/security/credentials/composite/composite_credentials.h +++ b/src/core/lib/security/credentials/composite/composite_credentials.h @@ -33,13 +33,13 @@ #include #include "src/core/lib/channel/channel_args.h" -#include "src/core/lib/gpr/useful.h" #include "src/core/lib/gprpp/ref_counted_ptr.h" #include "src/core/lib/gprpp/unique_type_name.h" #include "src/core/lib/promise/arena_promise.h" #include "src/core/lib/security/credentials/credentials.h" #include "src/core/lib/security/security_connector/security_connector.h" #include "src/core/lib/transport/transport.h" +#include "src/core/util/useful.h" // -- Composite channel credentials. -- diff --git a/src/core/lib/security/credentials/credentials.cc b/src/core/lib/security/credentials/credentials.cc index e3c4f097aa1..4220938e31a 100644 --- a/src/core/lib/security/credentials/credentials.cc +++ b/src/core/lib/security/credentials/credentials.cc @@ -21,15 +21,17 @@ #include #include +#include "absl/log/check.h" + #include #include #include "src/core/lib/channel/channel_args.h" #include "src/core/lib/debug/trace.h" -#include "src/core/lib/gpr/useful.h" #include "src/core/lib/gprpp/crash.h" #include "src/core/lib/iomgr/exec_ctx.h" #include "src/core/lib/surface/api_trace.h" +#include "src/core/util/useful.h" // -- Common. -- @@ -111,7 +113,7 @@ void grpc_server_credentials::set_auth_metadata_processor( void grpc_server_credentials_set_auth_metadata_processor( grpc_server_credentials* creds, grpc_auth_metadata_processor processor) { - GPR_DEBUG_ASSERT(creds != nullptr); + DCHECK_NE(creds, nullptr); creds->set_auth_metadata_processor(processor); } diff --git a/src/core/lib/security/credentials/credentials.h b/src/core/lib/security/credentials/credentials.h index 6a9661c05a6..24e384e8d71 100644 --- a/src/core/lib/security/credentials/credentials.h +++ b/src/core/lib/security/credentials/credentials.h @@ -23,6 +23,7 @@ #include #include +#include "absl/log/check.h" #include "absl/status/statusor.h" #include "absl/strings/string_view.h" @@ -137,7 +138,7 @@ struct grpc_channel_credentials // two different `grpc_channel_credentials` objects are used but they compare // as equal (assuming other channel args match). int cmp(const grpc_channel_credentials* other) const { - GPR_ASSERT(other != nullptr); + CHECK_NE(other, nullptr); int r = type().Compare(other->type()); if (r != 0) return r; return cmp_impl(other); @@ -218,7 +219,7 @@ struct grpc_call_credentials // If this method returns 0, it means that gRPC can treat the two call // credentials as effectively the same.. int cmp(const grpc_call_credentials* other) const { - GPR_ASSERT(other != nullptr); + CHECK_NE(other, nullptr); int r = type().Compare(other->type()); if (r != 0) return r; return cmp_impl(other); diff --git a/src/core/lib/security/credentials/external/aws_external_account_credentials.cc b/src/core/lib/security/credentials/external/aws_external_account_credentials.cc index 754fd4b3ed0..5bdb1f1aad6 100644 --- a/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +++ b/src/core/lib/security/credentials/external/aws_external_account_credentials.cc @@ -20,6 +20,7 @@ #include #include +#include "absl/log/check.h" #include "absl/status/status.h" #include "absl/status/statusor.h" #include "absl/strings/str_cat.h" @@ -228,8 +229,8 @@ void AwsExternalAccountCredentials::OnRetrieveImdsV2SessionTokenInternal( void AwsExternalAccountCredentials::AddMetadataRequestHeaders( grpc_http_request* request) { if (!imdsv2_session_token_.empty()) { - GPR_ASSERT(request->hdr_count == 0); - GPR_ASSERT(request->hdrs == nullptr); + CHECK_EQ(request->hdr_count, 0u); + CHECK_EQ(request->hdrs, nullptr); grpc_http_header* headers = static_cast(gpr_malloc(sizeof(grpc_http_header))); headers[0].key = gpr_strdup("x-aws-ec2-metadata-token"); diff --git a/src/core/lib/security/credentials/external/external_account_credentials.cc b/src/core/lib/security/credentials/external/external_account_credentials.cc index ae3f80e5986..a5d7add62b9 100644 --- a/src/core/lib/security/credentials/external/external_account_credentials.cc +++ b/src/core/lib/security/credentials/external/external_account_credentials.cc @@ -22,6 +22,7 @@ #include #include +#include "absl/log/check.h" #include "absl/status/status.h" #include "absl/status/statusor.h" #include "absl/strings/escaping.h" @@ -110,7 +111,7 @@ bool MatchWorkforcePoolAudience(absl::string_view audience) { RefCountedPtr ExternalAccountCredentials::Create( const Json& json, std::vector scopes, grpc_error_handle* error) { - GPR_ASSERT(error->ok()); + CHECK(error->ok()); Options options; options.type = GRPC_AUTH_JSON_TYPE_INVALID; if (json.type() != Json::Type::kObject) { @@ -301,7 +302,7 @@ void ExternalAccountCredentials::fetch_oauth2( grpc_credentials_metadata_request* metadata_req, grpc_polling_entity* pollent, grpc_iomgr_cb_func response_cb, Timestamp deadline) { - GPR_ASSERT(ctx_ == nullptr); + CHECK_EQ(ctx_, nullptr); ctx_ = new HTTPRequestContext(pollent, deadline); metadata_req_ = metadata_req; response_cb_ = response_cb; @@ -381,7 +382,7 @@ void ExternalAccountCredentials::ExchangeToken( grpc_http_response_destroy(&ctx_->response); ctx_->response = {}; GRPC_CLOSURE_INIT(&ctx_->closure, OnExchangeToken, this, nullptr); - GPR_ASSERT(http_request_ == nullptr); + CHECK(http_request_ == nullptr); RefCountedPtr http_request_creds; if (uri->scheme() == "http") { http_request_creds = RefCountedPtr( @@ -483,7 +484,7 @@ void ExternalAccountCredentials::ImpersenateServiceAccount() { ctx_->response = {}; GRPC_CLOSURE_INIT(&ctx_->closure, OnImpersenateServiceAccount, this, nullptr); // TODO(ctiller): Use the callers resource quota. - GPR_ASSERT(http_request_ == nullptr); + CHECK(http_request_ == nullptr); RefCountedPtr http_request_creds; if (uri->scheme() == "http") { http_request_creds = RefCountedPtr( diff --git a/src/core/lib/security/credentials/external/url_external_account_credentials.cc b/src/core/lib/security/credentials/external/url_external_account_credentials.cc index 310c7e40170..c73f84d498c 100644 --- a/src/core/lib/security/credentials/external/url_external_account_credentials.cc +++ b/src/core/lib/security/credentials/external/url_external_account_credentials.cc @@ -20,6 +20,7 @@ #include #include +#include "absl/log/check.h" #include "absl/status/status.h" #include "absl/status/statusor.h" #include "absl/strings/str_cat.h" @@ -167,7 +168,7 @@ void UrlExternalAccountCredentials::RetrieveSubjectToken( grpc_http_response_destroy(&ctx_->response); ctx_->response = {}; GRPC_CLOSURE_INIT(&ctx_->closure, OnRetrieveSubjectToken, this, nullptr); - GPR_ASSERT(http_request_ == nullptr); + CHECK(http_request_ == nullptr); RefCountedPtr http_request_creds; if (url_.scheme() == "http") { http_request_creds = RefCountedPtr( diff --git a/src/core/lib/security/credentials/fake/fake_credentials.h b/src/core/lib/security/credentials/fake/fake_credentials.h index a18d90d0344..214d9b3ac3e 100644 --- a/src/core/lib/security/credentials/fake/fake_credentials.h +++ b/src/core/lib/security/credentials/fake/fake_credentials.h @@ -30,7 +30,6 @@ #include #include "src/core/lib/channel/channel_args.h" -#include "src/core/lib/gpr/useful.h" #include "src/core/lib/gprpp/ref_counted_ptr.h" #include "src/core/lib/gprpp/unique_type_name.h" #include "src/core/lib/promise/arena_promise.h" @@ -38,6 +37,7 @@ #include "src/core/lib/security/security_connector/security_connector.h" #include "src/core/lib/slice/slice.h" #include "src/core/lib/transport/transport.h" +#include "src/core/util/useful.h" #define GRPC_ARG_FAKE_SECURITY_EXPECTED_TARGETS \ "grpc.fake_security.expected_targets" diff --git a/src/core/lib/security/credentials/google_default/google_default_credentials.cc b/src/core/lib/security/credentials/google_default/google_default_credentials.cc index 4291bdf5e62..17455936444 100644 --- a/src/core/lib/security/credentials/google_default/google_default_credentials.cc +++ b/src/core/lib/security/credentials/google_default/google_default_credentials.cc @@ -23,6 +23,8 @@ #include #include +#include "absl/log/check.h" +#include "absl/log/log.h" #include "absl/status/statusor.h" #include "absl/strings/match.h" #include "absl/strings/string_view.h" @@ -136,7 +138,7 @@ grpc_google_default_channel_credentials::create_security_connector( is_xds_non_cfe_cluster; // Return failure if ALTS is selected but not running on GCE. if (use_alts && alts_creds_ == nullptr) { - gpr_log(GPR_ERROR, "ALTS is selected, but not running on GCE."); + LOG(ERROR) << "ALTS is selected, but not running on GCE."; return nullptr; } grpc_core::RefCountedPtr sc = @@ -215,7 +217,7 @@ static int is_metadata_server_reachable() { auto uri = grpc_core::URI::Create("http", GRPC_COMPUTE_ENGINE_DETECTION_HOST, "/", {} /* query params */, "" /* fragment */); - GPR_ASSERT(uri.ok()); // params are hardcoded + CHECK(uri.ok()); // params are hardcoded auto http_request = grpc_core::HttpRequest::Get( std::move(*uri), nullptr /* channel args */, &detector.pollent, &request, grpc_core::Timestamp::Now() + max_detection_delay, @@ -317,7 +319,7 @@ static grpc_error_handle create_default_creds_from_path( result = grpc_core::ExternalAccountCredentials::Create(json, {}, &error); end: - GPR_ASSERT((result == nullptr) + (error.ok()) == 1); + CHECK((result == nullptr) + (error.ok()) == 1); *creds = result; return error; } @@ -395,7 +397,7 @@ grpc_channel_credentials* grpc_google_default_credentials_create( // Create google default credentials. grpc_channel_credentials* ssl_creds = grpc_ssl_credentials_create(nullptr, nullptr, nullptr, nullptr); - GPR_ASSERT(ssl_creds != nullptr); + CHECK_NE(ssl_creds, nullptr); grpc_alts_credentials_options* options = grpc_alts_credentials_client_options_create(); grpc_channel_credentials* alts_creds = @@ -407,7 +409,7 @@ grpc_channel_credentials* grpc_google_default_credentials_create( grpc_core::RefCountedPtr(ssl_creds)); result = grpc_composite_channel_credentials_create( creds.get(), call_creds.get(), nullptr); - GPR_ASSERT(result != nullptr); + CHECK_NE(result, nullptr); } else { gpr_log(GPR_ERROR, "Could not create google default credentials: %s", grpc_core::StatusToString(error).c_str()); diff --git a/src/core/lib/security/credentials/google_default/google_default_credentials.h b/src/core/lib/security/credentials/google_default/google_default_credentials.h index acf2fa6404b..8611cbdc254 100644 --- a/src/core/lib/security/credentials/google_default/google_default_credentials.h +++ b/src/core/lib/security/credentials/google_default/google_default_credentials.h @@ -26,11 +26,11 @@ #include #include "src/core/lib/channel/channel_args.h" -#include "src/core/lib/gpr/useful.h" #include "src/core/lib/gprpp/ref_counted_ptr.h" #include "src/core/lib/gprpp/unique_type_name.h" #include "src/core/lib/security/credentials/credentials.h" #include "src/core/lib/security/security_connector/security_connector.h" +#include "src/core/util/useful.h" #define GRPC_GOOGLE_CLOUD_SDK_CONFIG_DIRECTORY "gcloud" #define GRPC_GOOGLE_WELL_KNOWN_CREDENTIALS_FILE \ diff --git a/src/core/lib/security/credentials/iam/iam_credentials.cc b/src/core/lib/security/credentials/iam/iam_credentials.cc index a29624ac0ad..c6be5fe8865 100644 --- a/src/core/lib/security/credentials/iam/iam_credentials.cc +++ b/src/core/lib/security/credentials/iam/iam_credentials.cc @@ -23,6 +23,7 @@ #include #include +#include "absl/log/check.h" #include "absl/strings/str_format.h" #include "absl/strings/string_view.h" @@ -73,9 +74,9 @@ grpc_call_credentials* grpc_google_iam_credentials_create( "grpc_iam_credentials_create(token=%s, authority_selector=%s, " "reserved=%p)", 3, (token, authority_selector, reserved)); - GPR_ASSERT(reserved == nullptr); - GPR_ASSERT(token != nullptr); - GPR_ASSERT(authority_selector != nullptr); + CHECK_EQ(reserved, nullptr); + CHECK_NE(token, nullptr); + CHECK_NE(authority_selector, nullptr); return grpc_core::MakeRefCounted( token, authority_selector) .release(); diff --git a/src/core/lib/security/credentials/iam/iam_credentials.h b/src/core/lib/security/credentials/iam/iam_credentials.h index e5ed10316dc..592dffc4ebd 100644 --- a/src/core/lib/security/credentials/iam/iam_credentials.h +++ b/src/core/lib/security/credentials/iam/iam_credentials.h @@ -28,12 +28,12 @@ #include #include -#include "src/core/lib/gpr/useful.h" #include "src/core/lib/gprpp/unique_type_name.h" #include "src/core/lib/promise/arena_promise.h" #include "src/core/lib/security/credentials/credentials.h" #include "src/core/lib/slice/slice.h" #include "src/core/lib/transport/transport.h" +#include "src/core/util/useful.h" class grpc_google_iam_credentials : public grpc_call_credentials { public: diff --git a/src/core/lib/security/credentials/jwt/json_token.cc b/src/core/lib/security/credentials/jwt/json_token.cc index ba81ab8dac3..2f1c5c35fc4 100644 --- a/src/core/lib/security/credentials/jwt/json_token.cc +++ b/src/core/lib/security/credentials/jwt/json_token.cc @@ -29,6 +29,8 @@ #include #include +#include "absl/log/check.h" +#include "absl/log/log.h" #include "absl/status/status.h" #include "absl/status/statusor.h" #include "absl/strings/escaping.h" @@ -85,7 +87,7 @@ grpc_auth_json_key grpc_auth_json_key_create_from_json(const Json& json) { memset(&result, 0, sizeof(grpc_auth_json_key)); result.type = GRPC_AUTH_JSON_TYPE_INVALID; if (json.type() == Json::Type::kNull) { - gpr_log(GPR_ERROR, "Invalid json."); + LOG(ERROR) << "Invalid json."; goto end; } @@ -113,7 +115,7 @@ grpc_auth_json_key grpc_auth_json_key_create_from_json(const Json& json) { bio = BIO_new(BIO_s_mem()); success = BIO_puts(bio, prop_value); if ((success < 0) || (static_cast(success) != strlen(prop_value))) { - gpr_log(GPR_ERROR, "Could not write into openssl BIO."); + LOG(ERROR) << "Could not write into openssl BIO."; goto end; } #if OPENSSL_VERSION_NUMBER < 0x30000000L @@ -123,7 +125,7 @@ grpc_auth_json_key grpc_auth_json_key_create_from_json(const Json& json) { result.private_key = PEM_read_bio_PrivateKey(bio, nullptr, nullptr, nullptr); #endif if (result.private_key == nullptr) { - gpr_log(GPR_ERROR, "Could not deserialize private key."); + LOG(ERROR) << "Could not deserialize private key."; goto end; } success = 1; @@ -190,7 +192,7 @@ static char* encoded_jwt_claim(const grpc_auth_json_key* json_key, gpr_timespec now = gpr_now(GPR_CLOCK_REALTIME); gpr_timespec expiration = gpr_time_add(now, token_lifetime); if (gpr_time_cmp(token_lifetime, grpc_max_auth_token_lifetime()) > 0) { - gpr_log(GPR_INFO, "Cropping token lifetime to maximum allowed value."); + LOG(INFO) << "Cropping token lifetime to maximum allowed value."; expiration = gpr_time_add(now, grpc_max_auth_token_lifetime()); } @@ -224,8 +226,8 @@ static char* dot_concat_and_free_strings(char* str1, char* str2) { *(current++) = '.'; memcpy(current, str2, str2_len); current += str2_len; - GPR_ASSERT(current >= result); - GPR_ASSERT((uintptr_t)(current - result) == result_len); + CHECK(current >= result); + CHECK((uintptr_t)(current - result) == result_len); *current = '\0'; gpr_free(str1); gpr_free(str2); @@ -255,7 +257,7 @@ char* compute_and_encode_signature(const grpc_auth_json_key* json_key, if (md == nullptr) return nullptr; md_ctx = EVP_MD_CTX_create(); if (md_ctx == nullptr) { - gpr_log(GPR_ERROR, "Could not create MD_CTX"); + LOG(ERROR) << "Could not create MD_CTX"; goto end; } #if OPENSSL_VERSION_NUMBER < 0x30000000L @@ -265,20 +267,20 @@ char* compute_and_encode_signature(const grpc_auth_json_key* json_key, if (EVP_DigestSignInit(md_ctx, nullptr, md, nullptr, json_key->private_key) != 1) { #endif - gpr_log(GPR_ERROR, "DigestInit failed."); + LOG(ERROR) << "DigestInit failed."; goto end; } if (EVP_DigestSignUpdate(md_ctx, to_sign, strlen(to_sign)) != 1) { - gpr_log(GPR_ERROR, "DigestUpdate failed."); + LOG(ERROR) << "DigestUpdate failed."; goto end; } if (EVP_DigestSignFinal(md_ctx, nullptr, &sig_len) != 1) { - gpr_log(GPR_ERROR, "DigestFinal (get signature length) failed."); + LOG(ERROR) << "DigestFinal (get signature length) failed."; goto end; } sig = static_cast(gpr_malloc(sig_len)); if (EVP_DigestSignFinal(md_ctx, sig, &sig_len) != 1) { - gpr_log(GPR_ERROR, "DigestFinal (signature compute) failed."); + LOG(ERROR) << "DigestFinal (signature compute) failed."; goto end; } result = diff --git a/src/core/lib/security/credentials/jwt/jwt_credentials.cc b/src/core/lib/security/credentials/jwt/jwt_credentials.cc index 98c80150e94..b1ae58f2dea 100644 --- a/src/core/lib/security/credentials/jwt/jwt_credentials.cc +++ b/src/core/lib/security/credentials/jwt/jwt_credentials.cc @@ -24,6 +24,8 @@ #include #include +#include "absl/log/check.h" +#include "absl/log/log.h" #include "absl/status/status.h" #include "absl/strings/str_cat.h" @@ -133,7 +135,7 @@ grpc_core::RefCountedPtr grpc_service_account_jwt_access_credentials_create_from_auth_json_key( grpc_auth_json_key key, gpr_timespec token_lifetime) { if (!grpc_auth_json_key_is_valid(&key)) { - gpr_log(GPR_ERROR, "Invalid input for jwt credentials creation"); + LOG(ERROR) << "Invalid input for jwt credentials creation"; return nullptr; } return grpc_core::MakeRefCounted( @@ -167,7 +169,7 @@ grpc_call_credentials* grpc_service_account_jwt_access_credentials_create( static_cast(token_lifetime.clock_type), reserved); gpr_free(clean_json); } - GPR_ASSERT(reserved == nullptr); + CHECK_EQ(reserved, nullptr); grpc_core::ApplicationCallbackExecCtx callback_exec_ctx; grpc_core::ExecCtx exec_ctx; return grpc_service_account_jwt_access_credentials_create_from_auth_json_key( diff --git a/src/core/lib/security/credentials/jwt/jwt_credentials.h b/src/core/lib/security/credentials/jwt/jwt_credentials.h index 50df9094d0e..91332098eeb 100644 --- a/src/core/lib/security/credentials/jwt/jwt_credentials.h +++ b/src/core/lib/security/credentials/jwt/jwt_credentials.h @@ -35,7 +35,6 @@ #include #include -#include "src/core/lib/gpr/useful.h" #include "src/core/lib/gprpp/ref_counted_ptr.h" #include "src/core/lib/gprpp/unique_type_name.h" #include "src/core/lib/promise/arena_promise.h" @@ -43,6 +42,7 @@ #include "src/core/lib/security/credentials/jwt/json_token.h" #include "src/core/lib/slice/slice.h" #include "src/core/lib/transport/transport.h" +#include "src/core/util/useful.h" class grpc_service_account_jwt_access_credentials : public grpc_call_credentials { diff --git a/src/core/lib/security/credentials/jwt/jwt_verifier.cc b/src/core/lib/security/credentials/jwt/jwt_verifier.cc index 064f75d4278..100e09012eb 100644 --- a/src/core/lib/security/credentials/jwt/jwt_verifier.cc +++ b/src/core/lib/security/credentials/jwt/jwt_verifier.cc @@ -41,6 +41,8 @@ #include #endif +#include "absl/log/check.h" +#include "absl/log/log.h" #include "absl/status/status.h" #include "absl/status/statusor.h" #include "absl/strings/escaping.h" @@ -53,7 +55,6 @@ #include #include -#include "src/core/lib/gpr/string.h" #include "src/core/lib/gprpp/manual_constructor.h" #include "src/core/lib/gprpp/memory.h" #include "src/core/lib/gprpp/orphanable.h" @@ -71,6 +72,7 @@ #include "src/core/lib/slice/slice_internal.h" #include "src/core/lib/uri/uri_parser.h" #include "src/core/tsi/ssl_types.h" +#include "src/core/util/string.h" using grpc_core::Json; @@ -113,7 +115,7 @@ static const EVP_MD* evp_md_from_alg(const char* alg) { static Json parse_json_part_from_jwt(const char* str, size_t len) { std::string string; if (!absl::WebSafeBase64Unescape(absl::string_view(str, len), &string)) { - gpr_log(GPR_ERROR, "Invalid base64."); + LOG(ERROR) << "Invalid base64."; return Json(); // JSON null } auto json = grpc_core::JsonParse(string); @@ -162,13 +164,13 @@ static jose_header* jose_header_from_json(Json json) { Json::Object::const_iterator it; jose_header* h = grpc_core::Zalloc(); if (json.type() != Json::Type::kObject) { - gpr_log(GPR_ERROR, "JSON value is not an object"); + LOG(ERROR) << "JSON value is not an object"; goto error; } // Check alg field. it = json.object().find("alg"); if (it == json.object().end()) { - gpr_log(GPR_ERROR, "Missing alg field."); + LOG(ERROR) << "Missing alg field."; goto error; } // We only support RSA-1.5 signatures for now. @@ -179,7 +181,7 @@ static jose_header* jose_header_from_json(Json json) { if (it->second.type() != Json::Type::kString || strncmp(alg_value, "RS", 2) != 0 || evp_md_from_alg(alg_value) == nullptr) { - gpr_log(GPR_ERROR, "Invalid alg field"); + LOG(ERROR) << "Invalid alg field"; goto error; } h->alg = alg_value; @@ -313,18 +315,18 @@ grpc_jwt_verifier_status grpc_jwt_claims_check(const grpc_jwt_claims* claims, gpr_timespec skewed_now; int audience_ok; - GPR_ASSERT(claims != nullptr); + CHECK_NE(claims, nullptr); skewed_now = gpr_time_add(gpr_now(GPR_CLOCK_REALTIME), grpc_jwt_verifier_clock_skew); if (gpr_time_cmp(skewed_now, claims->nbf) < 0) { - gpr_log(GPR_ERROR, "JWT is not valid yet."); + LOG(ERROR) << "JWT is not valid yet."; return GRPC_JWT_VERIFIER_TIME_CONSTRAINT_FAILURE; } skewed_now = gpr_time_sub(gpr_now(GPR_CLOCK_REALTIME), grpc_jwt_verifier_clock_skew); if (gpr_time_cmp(skewed_now, claims->exp) > 0) { - gpr_log(GPR_ERROR, "JWT is expired."); + LOG(ERROR) << "JWT is expired."; return GRPC_JWT_VERIFIER_TIME_CONSTRAINT_FAILURE; } @@ -429,7 +431,7 @@ struct grpc_jwt_verifier { static Json json_from_http(const grpc_http_response* response) { if (response == nullptr) { - gpr_log(GPR_ERROR, "HTTP response is NULL."); + LOG(ERROR) << "HTTP response is NULL."; return Json(); // JSON null } if (response->status != 200) { @@ -440,7 +442,7 @@ static Json json_from_http(const grpc_http_response* response) { auto json = grpc_core::JsonParse( absl::string_view(response->body, response->body_length)); if (!json.ok()) { - gpr_log(GPR_ERROR, "Invalid JSON found in response."); + LOG(ERROR) << "Invalid JSON found in response."; return Json(); // JSON null } return std::move(*json); @@ -459,16 +461,16 @@ static EVP_PKEY* extract_pkey_from_x509(const char* x509_str) { EVP_PKEY* result = nullptr; BIO* bio = BIO_new(BIO_s_mem()); size_t len = strlen(x509_str); - GPR_ASSERT(len < INT_MAX); + CHECK_LT(len, static_cast(INT_MAX)); BIO_write(bio, x509_str, static_cast(len)); x509 = PEM_read_bio_X509(bio, nullptr, nullptr, nullptr); if (x509 == nullptr) { - gpr_log(GPR_ERROR, "Unable to parse x509 cert."); + LOG(ERROR) << "Unable to parse x509 cert."; goto end; } result = X509_get_pubkey(x509); if (result == nullptr) { - gpr_log(GPR_ERROR, "Cannot find public key in X509 cert."); + LOG(ERROR) << "Cannot find public key in X509 cert."; } end: @@ -481,7 +483,7 @@ static BIGNUM* bignum_from_base64(const char* b64) { if (b64 == nullptr) return nullptr; std::string string; if (!absl::WebSafeBase64Unescape(b64, &string)) { - gpr_log(GPR_ERROR, "Invalid base64 for big num."); + LOG(ERROR) << "Invalid base64 for big num."; return nullptr; } return BN_bin2bn(reinterpret_cast(string.data()), @@ -530,8 +532,8 @@ static EVP_PKEY* pkey_from_jwk(const Json& json, const char* kty) { BIGNUM* tmp_e = nullptr; Json::Object::const_iterator it; - GPR_ASSERT(json.type() == Json::Type::kObject); - GPR_ASSERT(kty != nullptr); + CHECK(json.type() == Json::Type::kObject); + CHECK_NE(kty, nullptr); if (strcmp(kty, "RSA") != 0) { gpr_log(GPR_ERROR, "Unsupported key type %s.", kty); goto end; @@ -539,27 +541,27 @@ static EVP_PKEY* pkey_from_jwk(const Json& json, const char* kty) { #if OPENSSL_VERSION_NUMBER < 0x30000000L rsa = RSA_new(); if (rsa == nullptr) { - gpr_log(GPR_ERROR, "Could not create rsa key."); + LOG(ERROR) << "Could not create rsa key."; goto end; } #endif it = json.object().find("n"); if (it == json.object().end()) { - gpr_log(GPR_ERROR, "Missing RSA public key field."); + LOG(ERROR) << "Missing RSA public key field."; goto end; } tmp_n = bignum_from_base64(validate_string_field(it->second, "n")); if (tmp_n == nullptr) goto end; it = json.object().find("e"); if (it == json.object().end()) { - gpr_log(GPR_ERROR, "Missing RSA public key field."); + LOG(ERROR) << "Missing RSA public key field."; goto end; } tmp_e = bignum_from_base64(validate_string_field(it->second, "e")); if (tmp_e == nullptr) goto end; #if OPENSSL_VERSION_NUMBER < 0x30000000L if (!RSA_set0_key(rsa, tmp_n, tmp_e, nullptr)) { - gpr_log(GPR_ERROR, "Cannot set RSA key from inputs."); + LOG(ERROR) << "Cannot set RSA key from inputs."; goto end; } // RSA_set0_key takes ownership on success. @@ -572,21 +574,21 @@ static EVP_PKEY* pkey_from_jwk(const Json& json, const char* kty) { if (!OSSL_PARAM_BLD_push_BN(bld, "n", tmp_n) || !OSSL_PARAM_BLD_push_BN(bld, "e", tmp_e) || (params = OSSL_PARAM_BLD_to_param(bld)) == NULL) { - gpr_log(GPR_ERROR, "Could not create OSSL_PARAM"); + LOG(ERROR) << "Could not create OSSL_PARAM"; goto end; } ctx = EVP_PKEY_CTX_new_from_name(nullptr, "RSA", nullptr); if (ctx == nullptr) { - gpr_log(GPR_ERROR, "Could not create rsa key."); + LOG(ERROR) << "Could not create rsa key."; goto end; } if (EVP_PKEY_fromdata_init(ctx) <= 0) { - gpr_log(GPR_ERROR, "Could not create rsa key."); + LOG(ERROR) << "Could not create rsa key."; goto end; } if (EVP_PKEY_fromdata(ctx, &result, EVP_PKEY_KEYPAIR, params) <= 0) { - gpr_log(GPR_ERROR, "Cannot set RSA key from inputs."); + LOG(ERROR) << "Cannot set RSA key from inputs."; goto end; } #endif @@ -617,8 +619,7 @@ static EVP_PKEY* find_verification_key(const Json& json, const char* header_alg, return extract_pkey_from_x509(cur->string().c_str()); } if (jwt_keys->type() != Json::Type::kArray) { - gpr_log(GPR_ERROR, - "Unexpected value type of keys property in jwks key set."); + LOG(ERROR) << "Unexpected value type of keys property in jwks key set."; return nullptr; } // Key format is specified in: @@ -658,23 +659,23 @@ static int verify_jwt_signature(EVP_PKEY* key, const char* alg, const EVP_MD* md = evp_md_from_alg(alg); int result = 0; - GPR_ASSERT(md != nullptr); // Checked before. + CHECK_NE(md, nullptr); // Checked before. if (md_ctx == nullptr) { - gpr_log(GPR_ERROR, "Could not create EVP_MD_CTX."); + LOG(ERROR) << "Could not create EVP_MD_CTX."; goto end; } if (EVP_DigestVerifyInit(md_ctx, nullptr, md, nullptr, key) != 1) { - gpr_log(GPR_ERROR, "EVP_DigestVerifyInit failed."); + LOG(ERROR) << "EVP_DigestVerifyInit failed."; goto end; } if (EVP_DigestVerifyUpdate(md_ctx, GRPC_SLICE_START_PTR(signed_data), GRPC_SLICE_LENGTH(signed_data)) != 1) { - gpr_log(GPR_ERROR, "EVP_DigestVerifyUpdate failed."); + LOG(ERROR) << "EVP_DigestVerifyUpdate failed."; goto end; } if (EVP_DigestVerifyFinal(md_ctx, GRPC_SLICE_START_PTR(signature), GRPC_SLICE_LENGTH(signature)) != 1) { - gpr_log(GPR_ERROR, "JWT signature verification failed."); + LOG(ERROR) << "JWT signature verification failed."; goto end; } @@ -741,7 +742,7 @@ static void on_openid_config_retrieved(void* user_data, if (json.type() == Json::Type::kNull) goto error; cur = find_property_by_name(json, "jwks_uri"); if (cur == nullptr) { - gpr_log(GPR_ERROR, "Could not find jwks_uri in openid config."); + LOG(ERROR) << "Could not find jwks_uri in openid config."; goto error; } jwks_uri = validate_string_field(*cur, "jwks_uri"); @@ -797,7 +798,7 @@ static email_key_mapping* verifier_get_mapping(grpc_jwt_verifier* v, static void verifier_put_mapping(grpc_jwt_verifier* v, const char* email_domain, const char* key_url_prefix) { email_key_mapping* mapping = verifier_get_mapping(v, email_domain); - GPR_ASSERT(v->num_mappings < v->allocated_mappings); + CHECK(v->num_mappings < v->allocated_mappings); if (mapping != nullptr) { gpr_free(mapping->key_url_prefix); mapping->key_url_prefix = gpr_strdup(key_url_prefix); @@ -806,7 +807,7 @@ static void verifier_put_mapping(grpc_jwt_verifier* v, const char* email_domain, v->mappings[v->num_mappings].email_domain = gpr_strdup(email_domain); v->mappings[v->num_mappings].key_url_prefix = gpr_strdup(key_url_prefix); v->num_mappings++; - GPR_ASSERT(v->num_mappings <= v->allocated_mappings); + CHECK(v->num_mappings <= v->allocated_mappings); } // Very non-sophisticated way to detect an email address. Should be good @@ -818,7 +819,7 @@ const char* grpc_jwt_issuer_email_domain(const char* issuer) { if (*email_domain == '\0') return nullptr; const char* dot = strrchr(email_domain, '.'); if (dot == nullptr || dot == email_domain) return email_domain; - GPR_ASSERT(dot > email_domain); + CHECK(dot > email_domain); // There may be a subdomain, we just want the domain. dot = static_cast( gpr_memrchr(email_domain, '.', static_cast(dot - email_domain))); @@ -839,15 +840,14 @@ static void retrieve_key_and_verify(verifier_cb_ctx* ctx) { char* path; absl::StatusOr uri; - GPR_ASSERT(ctx != nullptr && ctx->header != nullptr && - ctx->claims != nullptr); + CHECK(ctx != nullptr && ctx->header != nullptr && ctx->claims != nullptr); iss = ctx->claims->iss; if (ctx->header->kid == nullptr) { - gpr_log(GPR_ERROR, "Missing kid in jose header."); + LOG(ERROR) << "Missing kid in jose header."; goto error; } if (iss == nullptr) { - gpr_log(GPR_ERROR, "Missing iss in claims."); + LOG(ERROR) << "Missing iss in claims."; goto error; } @@ -859,10 +859,10 @@ static void retrieve_key_and_verify(verifier_cb_ctx* ctx) { email_domain = grpc_jwt_issuer_email_domain(iss); if (email_domain != nullptr) { email_key_mapping* mapping; - GPR_ASSERT(ctx->verifier != nullptr); + CHECK_NE(ctx->verifier, nullptr); mapping = verifier_get_mapping(ctx->verifier, email_domain); if (mapping == nullptr) { - gpr_log(GPR_ERROR, "Missing mapping for issuer email."); + LOG(ERROR) << "Missing mapping for issuer email."; goto error; } host = gpr_strdup(mapping->key_url_prefix); @@ -926,8 +926,8 @@ void grpc_jwt_verifier_verify(grpc_jwt_verifier* verifier, Json json; std::string signature_str; - GPR_ASSERT(verifier != nullptr && jwt != nullptr && audience != nullptr && - cb != nullptr); + CHECK(verifier != nullptr && jwt != nullptr && audience != nullptr && + cb != nullptr); dot = strchr(cur, '.'); if (dot == nullptr) goto error; json = parse_json_part_from_jwt(cur, static_cast(dot - cur)); diff --git a/src/core/lib/security/credentials/local/local_credentials.h b/src/core/lib/security/credentials/local/local_credentials.h index 77765bc6242..9665db5d082 100644 --- a/src/core/lib/security/credentials/local/local_credentials.h +++ b/src/core/lib/security/credentials/local/local_credentials.h @@ -26,11 +26,11 @@ #include #include "src/core/lib/channel/channel_args.h" -#include "src/core/lib/gpr/useful.h" #include "src/core/lib/gprpp/ref_counted_ptr.h" #include "src/core/lib/gprpp/unique_type_name.h" #include "src/core/lib/security/credentials/credentials.h" #include "src/core/lib/security/security_connector/security_connector.h" +#include "src/core/util/useful.h" // Main class for grpc local channel credential. class grpc_local_credentials final : public grpc_channel_credentials { diff --git a/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc b/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc index 842b3f70f08..63ecb7300e1 100644 --- a/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +++ b/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc @@ -27,6 +27,8 @@ #include #include +#include "absl/log/check.h" +#include "absl/log/log.h" #include "absl/status/status.h" #include "absl/strings/str_cat.h" #include "absl/strings/str_format.h" @@ -85,7 +87,7 @@ grpc_auth_refresh_token grpc_auth_refresh_token_create_from_json( memset(&result, 0, sizeof(grpc_auth_refresh_token)); result.type = GRPC_AUTH_JSON_TYPE_INVALID; if (json.type() != Json::Type::kObject) { - gpr_log(GPR_ERROR, "Invalid json."); + LOG(ERROR) << "Invalid json."; goto end; } @@ -160,7 +162,7 @@ grpc_oauth2_token_fetcher_credentials_parse_server_response( grpc_credentials_status status = GRPC_CREDENTIALS_OK; if (response == nullptr) { - gpr_log(GPR_ERROR, "Received NULL response."); + LOG(ERROR) << "Received NULL response."; status = GRPC_CREDENTIALS_ERROR; goto end; } @@ -192,14 +194,14 @@ grpc_oauth2_token_fetcher_credentials_parse_server_response( goto end; } if (json->type() != Json::Type::kObject) { - gpr_log(GPR_ERROR, "Response should be a JSON object"); + LOG(ERROR) << "Response should be a JSON object"; status = GRPC_CREDENTIALS_ERROR; goto end; } it = json->object().find("access_token"); if (it == json->object().end() || it->second.type() != Json::Type::kString) { - gpr_log(GPR_ERROR, "Missing or invalid access_token in JSON."); + LOG(ERROR) << "Missing or invalid access_token in JSON."; status = GRPC_CREDENTIALS_ERROR; goto end; } @@ -207,7 +209,7 @@ grpc_oauth2_token_fetcher_credentials_parse_server_response( it = json->object().find("token_type"); if (it == json->object().end() || it->second.type() != Json::Type::kString) { - gpr_log(GPR_ERROR, "Missing or invalid token_type in JSON."); + LOG(ERROR) << "Missing or invalid token_type in JSON."; status = GRPC_CREDENTIALS_ERROR; goto end; } @@ -215,7 +217,7 @@ grpc_oauth2_token_fetcher_credentials_parse_server_response( it = json->object().find("expires_in"); if (it == json->object().end() || it->second.type() != Json::Type::kNumber) { - gpr_log(GPR_ERROR, "Missing or invalid expires_in in JSON."); + LOG(ERROR) << "Missing or invalid expires_in in JSON."; status = GRPC_CREDENTIALS_ERROR; goto end; } @@ -395,7 +397,7 @@ class grpc_compute_engine_token_fetcher_credentials auto uri = grpc_core::URI::Create("http", GRPC_COMPUTE_ENGINE_METADATA_HOST, GRPC_COMPUTE_ENGINE_METADATA_TOKEN_PATH, {} /* query params */, "" /* fragment */); - GPR_ASSERT(uri.ok()); // params are hardcoded + CHECK(uri.ok()); // params are hardcoded http_request_ = grpc_core::HttpRequest::Get( std::move(*uri), nullptr /* channel args */, pollent, &request, deadline, @@ -424,7 +426,7 @@ grpc_call_credentials* grpc_google_compute_engine_credentials_create( void* reserved) { GRPC_API_TRACE("grpc_compute_engine_credentials_create(reserved=%p)", 1, (reserved)); - GPR_ASSERT(reserved == nullptr); + CHECK_EQ(reserved, nullptr); return grpc_core::MakeRefCounted< grpc_compute_engine_token_fetcher_credentials>() .release(); @@ -461,7 +463,7 @@ void grpc_google_refresh_token_credentials::fetch_oauth2( auto uri = grpc_core::URI::Create("https", GRPC_GOOGLE_OAUTH2_SERVICE_HOST, GRPC_GOOGLE_OAUTH2_SERVICE_TOKEN_PATH, {} /* query params */, "" /* fragment */); - GPR_ASSERT(uri.ok()); // params are hardcoded + CHECK(uri.ok()); // params are hardcoded http_request_ = grpc_core::HttpRequest::Post( std::move(*uri), nullptr /* channel args */, pollent, &request, deadline, GRPC_CLOSURE_INIT(&http_post_cb_closure_, response_cb, metadata_req, @@ -478,7 +480,7 @@ grpc_core::RefCountedPtr grpc_refresh_token_credentials_create_from_auth_refresh_token( grpc_auth_refresh_token refresh_token) { if (!grpc_auth_refresh_token_is_valid(&refresh_token)) { - gpr_log(GPR_ERROR, "Invalid input for refresh token credentials creation"); + LOG(ERROR) << "Invalid input for refresh token credentials creation"; return nullptr; } return grpc_core::MakeRefCounted( @@ -517,7 +519,7 @@ grpc_call_credentials* grpc_google_refresh_token_credentials_create( "reserved=%p)", create_loggable_refresh_token(&token).c_str(), reserved); } - GPR_ASSERT(reserved == nullptr); + CHECK_EQ(reserved, nullptr); return grpc_refresh_token_credentials_create_from_auth_refresh_token(token) .release(); } @@ -700,7 +702,7 @@ absl::StatusOr ValidateStsCredentialsOptions( grpc_call_credentials* grpc_sts_credentials_create( const grpc_sts_credentials_options* options, void* reserved) { - GPR_ASSERT(reserved == nullptr); + CHECK_EQ(reserved, nullptr); absl::StatusOr sts_url = grpc_core::ValidateStsCredentialsOptions(options); if (!sts_url.ok()) { @@ -747,7 +749,7 @@ grpc_call_credentials* grpc_access_token_credentials_create( "grpc_access_token_credentials_create(access_token=, " "reserved=%p)", 1, (reserved)); - GPR_ASSERT(reserved == nullptr); + CHECK_EQ(reserved, nullptr); return grpc_core::MakeRefCounted(access_token) .release(); } diff --git a/src/core/lib/security/credentials/oauth2/oauth2_credentials.h b/src/core/lib/security/credentials/oauth2/oauth2_credentials.h index 4bed299f406..491fbcb1768 100644 --- a/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +++ b/src/core/lib/security/credentials/oauth2/oauth2_credentials.h @@ -32,7 +32,6 @@ #include #include -#include "src/core/lib/gpr/useful.h" #include "src/core/lib/gprpp/orphanable.h" #include "src/core/lib/gprpp/ref_counted.h" #include "src/core/lib/gprpp/ref_counted_ptr.h" @@ -50,6 +49,7 @@ #include "src/core/lib/slice/slice.h" #include "src/core/lib/transport/transport.h" #include "src/core/lib/uri/uri_parser.h" +#include "src/core/util/useful.h" // Constants. #define GRPC_STS_POST_MINIMAL_BODY_FORMAT_STRING \ diff --git a/src/core/lib/security/credentials/plugin/plugin_credentials.cc b/src/core/lib/security/credentials/plugin/plugin_credentials.cc index 36a9ca80621..f31b422a93f 100644 --- a/src/core/lib/security/credentials/plugin/plugin_credentials.cc +++ b/src/core/lib/security/credentials/plugin/plugin_credentials.cc @@ -21,6 +21,8 @@ #include #include +#include "absl/log/check.h" +#include "absl/log/log.h" #include "absl/status/status.h" #include "absl/strings/str_cat.h" #include "absl/strings/string_view.h" @@ -82,7 +84,7 @@ grpc_plugin_credentials::PendingRequest::ProcessPluginResult( !GRPC_LOG_IF_ERROR( "validate_metadata_from_plugin", grpc_validate_header_nonbin_value_is_legal(md[i].value))) { - gpr_log(GPR_ERROR, "Plugin added invalid metadata value."); + LOG(ERROR) << "Plugin added invalid metadata value."; seen_illegal_header = true; break; } @@ -209,6 +211,6 @@ grpc_call_credentials* grpc_metadata_credentials_create_from_plugin( grpc_security_level min_security_level, void* reserved) { GRPC_API_TRACE("grpc_metadata_credentials_create_from_plugin(reserved=%p)", 1, (reserved)); - GPR_ASSERT(reserved == nullptr); + CHECK_EQ(reserved, nullptr); return new grpc_plugin_credentials(plugin, min_security_level); } diff --git a/src/core/lib/security/credentials/plugin/plugin_credentials.h b/src/core/lib/security/credentials/plugin/plugin_credentials.h index 715d071e14e..a81dd171202 100644 --- a/src/core/lib/security/credentials/plugin/plugin_credentials.h +++ b/src/core/lib/security/credentials/plugin/plugin_credentials.h @@ -36,7 +36,6 @@ #include #include "src/core/lib/debug/trace.h" -#include "src/core/lib/gpr/useful.h" #include "src/core/lib/gprpp/ref_counted.h" #include "src/core/lib/gprpp/ref_counted_ptr.h" #include "src/core/lib/gprpp/unique_type_name.h" @@ -47,6 +46,7 @@ #include "src/core/lib/security/credentials/credentials.h" #include "src/core/lib/slice/slice.h" #include "src/core/lib/transport/transport.h" +#include "src/core/util/useful.h" extern grpc_core::TraceFlag grpc_plugin_credentials_trace; diff --git a/src/core/lib/security/credentials/ssl/ssl_credentials.cc b/src/core/lib/security/credentials/ssl/ssl_credentials.cc index ef11a680737..9537ce1bb88 100644 --- a/src/core/lib/security/credentials/ssl/ssl_credentials.cc +++ b/src/core/lib/security/credentials/ssl/ssl_credentials.cc @@ -23,6 +23,8 @@ #include #include +#include "absl/log/check.h" +#include "absl/log/log.h" #include "absl/types/optional.h" #include @@ -53,7 +55,7 @@ grpc_ssl_credentials::grpc_ssl_credentials( const char* pem_root_certs = grpc_core::DefaultSslRootStore::GetPemRootCerts(); if (pem_root_certs == nullptr) { - gpr_log(GPR_ERROR, "Could not get default pem root certs."); + LOG(ERROR) << "Could not get default pem root certs."; } else { char* default_roots = gpr_strdup(pem_root_certs); config_.pem_root_certs = default_roots; @@ -149,8 +151,8 @@ void grpc_ssl_credentials::build_config( const grpc_ssl_verify_peer_options* verify_options) { config_.pem_root_certs = gpr_strdup(pem_root_certs); if (pem_key_cert_pair != nullptr) { - GPR_ASSERT(pem_key_cert_pair->private_key != nullptr); - GPR_ASSERT(pem_key_cert_pair->cert_chain != nullptr); + CHECK_NE(pem_key_cert_pair->private_key, nullptr); + CHECK_NE(pem_key_cert_pair->cert_chain, nullptr); config_.pem_key_cert_pair = static_cast( gpr_zalloc(sizeof(tsi_ssl_pem_key_cert_pair))); config_.pem_key_cert_pair->cert_chain = @@ -234,7 +236,7 @@ grpc_channel_credentials* grpc_ssl_credentials_create( "verify_options=%p, " "reserved=%p)", 4, (pem_root_certs, pem_key_cert_pair, verify_options, reserved)); - GPR_ASSERT(reserved == nullptr); + CHECK_EQ(reserved, nullptr); return new grpc_ssl_credentials( pem_root_certs, pem_key_cert_pair, @@ -250,7 +252,7 @@ grpc_channel_credentials* grpc_ssl_credentials_create_ex( "verify_options=%p, " "reserved=%p)", 4, (pem_root_certs, pem_key_cert_pair, verify_options, reserved)); - GPR_ASSERT(reserved == nullptr); + CHECK_EQ(reserved, nullptr); return new grpc_ssl_credentials(pem_root_certs, pem_key_cert_pair, verify_options); @@ -300,13 +302,13 @@ tsi_ssl_pem_key_cert_pair* grpc_convert_grpc_to_tsi_cert_pairs( size_t num_key_cert_pairs) { tsi_ssl_pem_key_cert_pair* tsi_pairs = nullptr; if (num_key_cert_pairs > 0) { - GPR_ASSERT(pem_key_cert_pairs != nullptr); + CHECK_NE(pem_key_cert_pairs, nullptr); tsi_pairs = static_cast( gpr_zalloc(num_key_cert_pairs * sizeof(tsi_ssl_pem_key_cert_pair))); } for (size_t i = 0; i < num_key_cert_pairs; i++) { - GPR_ASSERT(pem_key_cert_pairs[i].private_key != nullptr); - GPR_ASSERT(pem_key_cert_pairs[i].cert_chain != nullptr); + CHECK_NE(pem_key_cert_pairs[i].private_key, nullptr); + CHECK_NE(pem_key_cert_pairs[i].cert_chain, nullptr); tsi_pairs[i].cert_chain = gpr_strdup(pem_key_cert_pairs[i].cert_chain); tsi_pairs[i].private_key = gpr_strdup(pem_key_cert_pairs[i].private_key); } @@ -343,14 +345,14 @@ grpc_ssl_server_certificate_config* grpc_ssl_server_certificate_config_create( gpr_zalloc(sizeof(grpc_ssl_server_certificate_config))); config->pem_root_certs = gpr_strdup(pem_root_certs); if (num_key_cert_pairs > 0) { - GPR_ASSERT(pem_key_cert_pairs != nullptr); + CHECK_NE(pem_key_cert_pairs, nullptr); config->pem_key_cert_pairs = static_cast( gpr_zalloc(num_key_cert_pairs * sizeof(grpc_ssl_pem_key_cert_pair))); } config->num_key_cert_pairs = num_key_cert_pairs; for (size_t i = 0; i < num_key_cert_pairs; i++) { - GPR_ASSERT(pem_key_cert_pairs[i].private_key != nullptr); - GPR_ASSERT(pem_key_cert_pairs[i].cert_chain != nullptr); + CHECK_NE(pem_key_cert_pairs[i].private_key, nullptr); + CHECK_NE(pem_key_cert_pairs[i].cert_chain, nullptr); config->pem_key_cert_pairs[i].cert_chain = gpr_strdup(pem_key_cert_pairs[i].cert_chain); config->pem_key_cert_pairs[i].private_key = @@ -377,7 +379,7 @@ grpc_ssl_server_credentials_create_options_using_config( grpc_ssl_server_certificate_config* config) { grpc_ssl_server_credentials_options* options = nullptr; if (config == nullptr) { - gpr_log(GPR_ERROR, "Certificate config must not be NULL."); + LOG(ERROR) << "Certificate config must not be NULL."; goto done; } options = static_cast( @@ -393,7 +395,7 @@ grpc_ssl_server_credentials_create_options_using_config_fetcher( grpc_ssl_client_certificate_request_type client_certificate_request, grpc_ssl_server_certificate_config_callback cb, void* user_data) { if (cb == nullptr) { - gpr_log(GPR_ERROR, "Invalid certificate config callback parameter."); + LOG(ERROR) << "Invalid certificate config callback parameter."; return nullptr; } @@ -435,7 +437,7 @@ grpc_server_credentials* grpc_ssl_server_credentials_create_ex( 5, (pem_root_certs, pem_key_cert_pairs, (unsigned long)num_key_cert_pairs, client_certificate_request, reserved)); - GPR_ASSERT(reserved == nullptr); + CHECK_EQ(reserved, nullptr); grpc_ssl_server_certificate_config* cert_config = grpc_ssl_server_certificate_config_create( @@ -465,7 +467,7 @@ grpc_server_credentials* grpc_ssl_server_credentials_create_with_options( goto done; } else if (options->certificate_config_fetcher != nullptr && options->certificate_config_fetcher->cb == nullptr) { - gpr_log(GPR_ERROR, "Certificate config fetcher callback must not be NULL."); + LOG(ERROR) << "Certificate config fetcher callback must not be NULL."; goto done; } diff --git a/src/core/lib/security/credentials/ssl/ssl_credentials.h b/src/core/lib/security/credentials/ssl/ssl_credentials.h index d76009f0666..6651e50202a 100644 --- a/src/core/lib/security/credentials/ssl/ssl_credentials.h +++ b/src/core/lib/security/credentials/ssl/ssl_credentials.h @@ -20,6 +20,8 @@ #include +#include "absl/log/check.h" + #include #include #include @@ -28,13 +30,13 @@ #include #include "src/core/lib/channel/channel_args.h" -#include "src/core/lib/gpr/useful.h" #include "src/core/lib/gprpp/ref_counted_ptr.h" #include "src/core/lib/gprpp/unique_type_name.h" #include "src/core/lib/security/credentials/credentials.h" #include "src/core/lib/security/security_connector/security_connector.h" #include "src/core/lib/security/security_connector/ssl/ssl_security_connector.h" #include "src/core/tsi/ssl_transport_security.h" +#include "src/core/util/useful.h" class grpc_ssl_credentials : public grpc_channel_credentials { public: @@ -116,7 +118,7 @@ class grpc_ssl_server_credentials final : public grpc_server_credentials { grpc_ssl_certificate_config_reload_status FetchCertConfig( grpc_ssl_server_certificate_config** config) { - GPR_DEBUG_ASSERT(has_cert_config_fetcher()); + DCHECK(has_cert_config_fetcher()); return certificate_config_fetcher_.cb(certificate_config_fetcher_.user_data, config); } diff --git a/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc b/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc index dbe28e1cf98..8b02a5a4446 100644 --- a/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +++ b/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc @@ -16,6 +16,7 @@ #include "src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h" +#include "absl/log/check.h" #include "absl/status/status.h" #include @@ -26,17 +27,17 @@ void grpc_tls_certificate_distributor::SetKeyMaterials( const std::string& cert_name, absl::optional pem_root_certs, absl::optional pem_key_cert_pairs) { - GPR_ASSERT(pem_root_certs.has_value() || pem_key_cert_pairs.has_value()); + CHECK(pem_root_certs.has_value() || pem_key_cert_pairs.has_value()); grpc_core::MutexLock lock(&mu_); auto& cert_info = certificate_info_map_[cert_name]; if (pem_root_certs.has_value()) { // Successful credential updates will clear any pre-existing error. cert_info.SetRootError(absl::OkStatus()); for (auto* watcher_ptr : cert_info.root_cert_watchers) { - GPR_ASSERT(watcher_ptr != nullptr); + CHECK_NE(watcher_ptr, nullptr); const auto watcher_it = watchers_.find(watcher_ptr); - GPR_ASSERT(watcher_it != watchers_.end()); - GPR_ASSERT(watcher_it->second.root_cert_name.has_value()); + CHECK(watcher_it != watchers_.end()); + CHECK(watcher_it->second.root_cert_name.has_value()); absl::optional pem_key_cert_pairs_to_report; if (pem_key_cert_pairs.has_value() && @@ -58,10 +59,10 @@ void grpc_tls_certificate_distributor::SetKeyMaterials( // Successful credential updates will clear any pre-existing error. cert_info.SetIdentityError(absl::OkStatus()); for (const auto watcher_ptr : cert_info.identity_cert_watchers) { - GPR_ASSERT(watcher_ptr != nullptr); + CHECK_NE(watcher_ptr, nullptr); const auto watcher_it = watchers_.find(watcher_ptr); - GPR_ASSERT(watcher_it != watchers_.end()); - GPR_ASSERT(watcher_it->second.identity_cert_name.has_value()); + CHECK(watcher_it != watchers_.end()); + CHECK(watcher_it->second.identity_cert_name.has_value()); absl::optional pem_root_certs_to_report; if (pem_root_certs.has_value() && watcher_it->second.root_cert_name == cert_name) { @@ -102,14 +103,14 @@ void grpc_tls_certificate_distributor::SetErrorForCert( const std::string& cert_name, absl::optional root_cert_error, absl::optional identity_cert_error) { - GPR_ASSERT(root_cert_error.has_value() || identity_cert_error.has_value()); + CHECK(root_cert_error.has_value() || identity_cert_error.has_value()); grpc_core::MutexLock lock(&mu_); CertificateInfo& cert_info = certificate_info_map_[cert_name]; if (root_cert_error.has_value()) { for (auto* watcher_ptr : cert_info.root_cert_watchers) { - GPR_ASSERT(watcher_ptr != nullptr); + CHECK_NE(watcher_ptr, nullptr); const auto watcher_it = watchers_.find(watcher_ptr); - GPR_ASSERT(watcher_it != watchers_.end()); + CHECK(watcher_it != watchers_.end()); // identity_cert_error_to_report is the error of the identity cert this // watcher is watching, if there is any. grpc_error_handle identity_cert_error_to_report; @@ -127,9 +128,9 @@ void grpc_tls_certificate_distributor::SetErrorForCert( } if (identity_cert_error.has_value()) { for (auto* watcher_ptr : cert_info.identity_cert_watchers) { - GPR_ASSERT(watcher_ptr != nullptr); + CHECK_NE(watcher_ptr, nullptr); const auto watcher_it = watchers_.find(watcher_ptr); - GPR_ASSERT(watcher_it != watchers_.end()); + CHECK(watcher_it != watchers_.end()); // root_cert_error_to_report is the error of the root cert this watcher is // watching, if there is any. grpc_error_handle root_cert_error_to_report; @@ -150,11 +151,11 @@ void grpc_tls_certificate_distributor::SetErrorForCert( }; void grpc_tls_certificate_distributor::SetError(grpc_error_handle error) { - GPR_ASSERT(!error.ok()); + CHECK(!error.ok()); grpc_core::MutexLock lock(&mu_); for (const auto& watcher : watchers_) { const auto watcher_ptr = watcher.first; - GPR_ASSERT(watcher_ptr != nullptr); + CHECK_NE(watcher_ptr, nullptr); const auto& watcher_info = watcher.second; watcher_ptr->OnError( watcher_info.root_cert_name.has_value() ? error : absl::OkStatus(), @@ -175,16 +176,16 @@ void grpc_tls_certificate_distributor::WatchTlsCertificates( bool already_watching_identity_for_root_cert = false; bool start_watching_identity_cert = false; bool already_watching_root_for_identity_cert = false; - GPR_ASSERT(root_cert_name.has_value() || identity_cert_name.has_value()); + CHECK(root_cert_name.has_value() || identity_cert_name.has_value()); TlsCertificatesWatcherInterface* watcher_ptr = watcher.get(); - GPR_ASSERT(watcher_ptr != nullptr); + CHECK_NE(watcher_ptr, nullptr); // Update watchers_ and certificate_info_map_. { grpc_core::MutexLock lock(&mu_); const auto watcher_it = watchers_.find(watcher_ptr); // The caller needs to cancel the watcher first if it wants to re-register // the watcher. - GPR_ASSERT(watcher_it == watchers_.end()); + CHECK(watcher_it == watchers_.end()); watchers_[watcher_ptr] = {std::move(watcher), root_cert_name, identity_cert_name}; absl::optional updated_root_certs; @@ -270,7 +271,7 @@ void grpc_tls_certificate_distributor::CancelTlsCertificatesWatch( watchers_.erase(it); if (root_cert_name.has_value()) { auto it = certificate_info_map_.find(*root_cert_name); - GPR_ASSERT(it != certificate_info_map_.end()); + CHECK(it != certificate_info_map_.end()); CertificateInfo& cert_info = it->second; cert_info.root_cert_watchers.erase(watcher); stop_watching_root_cert = cert_info.root_cert_watchers.empty(); @@ -282,7 +283,7 @@ void grpc_tls_certificate_distributor::CancelTlsCertificatesWatch( } if (identity_cert_name.has_value()) { auto it = certificate_info_map_.find(*identity_cert_name); - GPR_ASSERT(it != certificate_info_map_.end()); + CHECK(it != certificate_info_map_.end()); CertificateInfo& cert_info = it->second; cert_info.identity_cert_watchers.erase(watcher); stop_watching_identity_cert = cert_info.identity_cert_watchers.empty(); @@ -326,13 +327,13 @@ grpc_tls_identity_pairs* grpc_tls_identity_pairs_create() { void grpc_tls_identity_pairs_add_pair(grpc_tls_identity_pairs* pairs, const char* private_key, const char* cert_chain) { - GPR_ASSERT(pairs != nullptr); - GPR_ASSERT(private_key != nullptr); - GPR_ASSERT(cert_chain != nullptr); + CHECK_NE(pairs, nullptr); + CHECK_NE(private_key, nullptr); + CHECK_NE(cert_chain, nullptr); pairs->pem_key_cert_pairs.emplace_back(private_key, cert_chain); } void grpc_tls_identity_pairs_destroy(grpc_tls_identity_pairs* pairs) { - GPR_ASSERT(pairs != nullptr); + CHECK_NE(pairs, nullptr); delete pairs; } diff --git a/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc b/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc index 03921c540aa..aa1dc975a5d 100644 --- a/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +++ b/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc @@ -23,6 +23,7 @@ #include #include +#include "absl/log/check.h" #include "absl/status/status.h" #include @@ -128,15 +129,15 @@ FileWatcherCertificateProvider::FileWatcherCertificateProvider( refresh_interval_sec_ = kMinimumFileWatcherRefreshIntervalSeconds; } // Private key and identity cert files must be both set or both unset. - GPR_ASSERT(private_key_path_.empty() == identity_certificate_path_.empty()); + CHECK(private_key_path_.empty() == identity_certificate_path_.empty()); // Must be watching either root or identity certs. - GPR_ASSERT(!private_key_path_.empty() || !root_cert_path_.empty()); + CHECK(!private_key_path_.empty() || !root_cert_path_.empty()); gpr_event_init(&shutdown_event_); ForceUpdate(); auto thread_lambda = [](void* arg) { FileWatcherCertificateProvider* provider = static_cast(arg); - GPR_ASSERT(provider != nullptr); + CHECK_NE(provider, nullptr); while (true) { void* value = gpr_event_wait( &provider->shutdown_event_, @@ -386,7 +387,7 @@ int64_t FileWatcherCertificateProvider::TestOnlyGetRefreshIntervalSecond() grpc_tls_certificate_provider* grpc_tls_certificate_provider_static_data_create( const char* root_certificate, grpc_tls_identity_pairs* pem_key_cert_pairs) { - GPR_ASSERT(root_certificate != nullptr || pem_key_cert_pairs != nullptr); + CHECK(root_certificate != nullptr || pem_key_cert_pairs != nullptr); grpc_core::ExecCtx exec_ctx; grpc_core::PemKeyCertPairList identity_pairs_core; if (pem_key_cert_pairs != nullptr) { diff --git a/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h b/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h index f0775320191..d5908d974f0 100644 --- a/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +++ b/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h @@ -23,6 +23,7 @@ #include #include "absl/base/thread_annotations.h" +#include "absl/log/check.h" #include "absl/status/statusor.h" #include "absl/strings/string_view.h" #include "absl/types/optional.h" @@ -32,7 +33,6 @@ #include #include -#include "src/core/lib/gpr/useful.h" #include "src/core/lib/gprpp/ref_counted.h" #include "src/core/lib/gprpp/ref_counted_ptr.h" #include "src/core/lib/gprpp/sync.h" @@ -40,6 +40,7 @@ #include "src/core/lib/gprpp/unique_type_name.h" #include "src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h" #include "src/core/lib/security/security_connector/ssl_utils.h" +#include "src/core/util/useful.h" // Interface for a grpc_tls_certificate_provider that handles the process to // fetch credentials and validation contexts. Implementations are free to rely @@ -65,7 +66,7 @@ struct grpc_tls_certificate_provider // be reused when two different `grpc_tls_certificate_provider` objects are // used but they compare as equal (assuming other channel args match). int Compare(const grpc_tls_certificate_provider* other) const { - GPR_ASSERT(other != nullptr); + CHECK_NE(other, nullptr); int r = type().Compare(other->type()); if (r != 0) return r; return CompareImpl(other); diff --git a/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc b/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc index 48e31b7dac0..b34005d0a89 100644 --- a/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +++ b/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc @@ -21,6 +21,7 @@ #include #include +#include "absl/log/check.h" #include "absl/strings/string_view.h" #include @@ -111,7 +112,7 @@ UniqueTypeName NoOpCertificateVerifier::type() const { bool HostNameCertificateVerifier::Verify( grpc_tls_custom_verification_check_request* request, std::function, absl::Status* sync_status) { - GPR_ASSERT(request != nullptr); + CHECK_NE(request, nullptr); // Extract the target name, and remove its port. const char* target_name = request->target_name; if (target_name == nullptr) { diff --git a/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h b/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h index 69a9861df22..3cb2bba340c 100644 --- a/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +++ b/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h @@ -21,6 +21,7 @@ #include #include "absl/base/thread_annotations.h" +#include "absl/log/check.h" #include "absl/status/status.h" #include @@ -29,10 +30,10 @@ #include #include -#include "src/core/lib/gpr/useful.h" #include "src/core/lib/gprpp/ref_counted.h" #include "src/core/lib/gprpp/sync.h" #include "src/core/lib/gprpp/unique_type_name.h" +#include "src/core/util/useful.h" // An abstraction of the verifier that all verifier subclasses should extend. struct grpc_tls_certificate_verifier @@ -58,7 +59,7 @@ struct grpc_tls_certificate_verifier // If this method returns 0, it means that gRPC can treat the two certificate // verifiers as effectively the same. int Compare(const grpc_tls_certificate_verifier* other) const { - GPR_ASSERT(other != nullptr); + CHECK_NE(other, nullptr); int r = type().Compare(other->type()); if (r != 0) return r; return CompareImpl(other); diff --git a/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc b/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc index 3d159c5a306..288b2debc00 100644 --- a/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +++ b/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc @@ -20,6 +20,9 @@ #include +#include "absl/log/check.h" +#include "absl/log/log.h" + #include #include #include @@ -39,7 +42,7 @@ grpc_tls_credentials_options* grpc_tls_credentials_options_create() { grpc_tls_credentials_options* grpc_tls_credentials_options_copy( grpc_tls_credentials_options* options) { - GPR_ASSERT(options != nullptr); + CHECK_NE(options, nullptr); return new grpc_tls_credentials_options(*options); } @@ -51,21 +54,21 @@ void grpc_tls_credentials_options_destroy( void grpc_tls_credentials_options_set_cert_request_type( grpc_tls_credentials_options* options, grpc_ssl_client_certificate_request_type type) { - GPR_ASSERT(options != nullptr); + CHECK_NE(options, nullptr); options->set_cert_request_type(type); } void grpc_tls_credentials_options_set_verify_server_cert( grpc_tls_credentials_options* options, int verify_server_cert) { - GPR_ASSERT(options != nullptr); + CHECK_NE(options, nullptr); options->set_verify_server_cert(verify_server_cert); } void grpc_tls_credentials_options_set_certificate_provider( grpc_tls_credentials_options* options, grpc_tls_certificate_provider* provider) { - GPR_ASSERT(options != nullptr); - GPR_ASSERT(provider != nullptr); + CHECK_NE(options, nullptr); + CHECK_NE(provider, nullptr); grpc_core::ExecCtx exec_ctx; options->set_certificate_provider( provider->Ref(DEBUG_LOCATION, "set_certificate_provider")); @@ -73,45 +76,45 @@ void grpc_tls_credentials_options_set_certificate_provider( void grpc_tls_credentials_options_watch_root_certs( grpc_tls_credentials_options* options) { - GPR_ASSERT(options != nullptr); + CHECK_NE(options, nullptr); options->set_watch_root_cert(true); } void grpc_tls_credentials_options_set_root_cert_name( grpc_tls_credentials_options* options, const char* root_cert_name) { - GPR_ASSERT(options != nullptr); + CHECK_NE(options, nullptr); options->set_root_cert_name(root_cert_name); } void grpc_tls_credentials_options_watch_identity_key_cert_pairs( grpc_tls_credentials_options* options) { - GPR_ASSERT(options != nullptr); + CHECK_NE(options, nullptr); options->set_watch_identity_pair(true); } void grpc_tls_credentials_options_set_identity_cert_name( grpc_tls_credentials_options* options, const char* identity_cert_name) { - GPR_ASSERT(options != nullptr); + CHECK_NE(options, nullptr); options->set_identity_cert_name(identity_cert_name); } void grpc_tls_credentials_options_set_certificate_verifier( grpc_tls_credentials_options* options, grpc_tls_certificate_verifier* verifier) { - GPR_ASSERT(options != nullptr); - GPR_ASSERT(verifier != nullptr); + CHECK_NE(options, nullptr); + CHECK_NE(verifier, nullptr); options->set_certificate_verifier(verifier->Ref()); } void grpc_tls_credentials_options_set_crl_directory( grpc_tls_credentials_options* options, const char* crl_directory) { - GPR_ASSERT(options != nullptr); + CHECK_NE(options, nullptr); options->set_crl_directory(crl_directory); } void grpc_tls_credentials_options_set_check_call_host( grpc_tls_credentials_options* options, int check_call_host) { - GPR_ASSERT(options != nullptr); + CHECK_NE(options, nullptr); options->set_check_call_host(check_call_host); } @@ -129,7 +132,7 @@ void grpc_tls_credentials_options_set_tls_session_key_log_file_path( gpr_log(GPR_INFO, "Enabling TLS session key logging with keys stored at: %s", path); } else { - gpr_log(GPR_INFO, "Disabling TLS session key logging"); + LOG(INFO) << "Disabling TLS session key logging"; } options->set_tls_session_key_log_file_path(path != nullptr ? path : ""); } @@ -145,18 +148,18 @@ void grpc_tls_credentials_options_set_send_client_ca_list( void grpc_tls_credentials_options_set_crl_provider( grpc_tls_credentials_options* options, std::shared_ptr provider) { - GPR_ASSERT(options != nullptr); + CHECK_NE(options, nullptr); options->set_crl_provider(provider); } void grpc_tls_credentials_options_set_min_tls_version( grpc_tls_credentials_options* options, grpc_tls_version min_tls_version) { - GPR_ASSERT(options != nullptr); + CHECK_NE(options, nullptr); options->set_min_tls_version(min_tls_version); } void grpc_tls_credentials_options_set_max_tls_version( grpc_tls_credentials_options* options, grpc_tls_version max_tls_version) { - GPR_ASSERT(options != nullptr); + CHECK_NE(options, nullptr); options->set_max_tls_version(max_tls_version); } diff --git a/src/core/lib/security/credentials/tls/tls_credentials.cc b/src/core/lib/security/credentials/tls/tls_credentials.cc index 573d56da9f5..de88b4dd342 100644 --- a/src/core/lib/security/credentials/tls/tls_credentials.cc +++ b/src/core/lib/security/credentials/tls/tls_credentials.cc @@ -22,6 +22,7 @@ #include #include +#include "absl/log/log.h" #include "absl/types/optional.h" #include @@ -31,33 +32,33 @@ #include #include "src/core/lib/channel/channel_args.h" -#include "src/core/lib/gpr/useful.h" #include "src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h" #include "src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h" #include "src/core/lib/security/security_connector/tls/tls_security_connector.h" #include "src/core/tsi/ssl/session_cache/ssl_session_cache.h" +#include "src/core/util/useful.h" namespace { bool CredentialOptionSanityCheck(grpc_tls_credentials_options* options, bool is_client) { if (options == nullptr) { - gpr_log(GPR_ERROR, "TLS credentials options is nullptr."); + LOG(ERROR) << "TLS credentials options is nullptr."; return false; } // In this case, there will be non-retriable handshake errors. if (options->min_tls_version() > options->max_tls_version()) { - gpr_log(GPR_ERROR, "TLS min version must not be higher than max version."); + LOG(ERROR) << "TLS min version must not be higher than max version."; grpc_tls_credentials_options_destroy(options); return false; } if (options->max_tls_version() > grpc_tls_version::TLS1_3) { - gpr_log(GPR_ERROR, "TLS max version must not be higher than v1.3."); + LOG(ERROR) << "TLS max version must not be higher than v1.3."; grpc_tls_credentials_options_destroy(options); return false; } if (options->min_tls_version() < grpc_tls_version::TLS1_2) { - gpr_log(GPR_ERROR, "TLS min version must not be lower than v1.2."); + LOG(ERROR) << "TLS min version must not be lower than v1.2."; grpc_tls_credentials_options_destroy(options); return false; } diff --git a/src/core/lib/security/credentials/xds/xds_credentials.cc b/src/core/lib/security/credentials/xds/xds_credentials.cc index cfe1a1136fd..7de65edb356 100644 --- a/src/core/lib/security/credentials/xds/xds_credentials.cc +++ b/src/core/lib/security/credentials/xds/xds_credentials.cc @@ -18,6 +18,7 @@ #include "src/core/lib/security/credentials/xds/xds_credentials.h" +#include "absl/log/check.h" #include "absl/types/optional.h" #include @@ -25,14 +26,14 @@ #include #include -#include "src/core/ext/xds/xds_certificate_provider.h" #include "src/core/lib/channel/channel_args.h" -#include "src/core/lib/gpr/useful.h" #include "src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h" #include "src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h" #include "src/core/lib/security/credentials/tls/tls_credentials.h" #include "src/core/lib/security/credentials/tls/tls_utils.h" #include "src/core/load_balancing/xds/xds_channel_args.h" +#include "src/core/util/useful.h" +#include "src/core/xds/grpc/xds_certificate_provider.h" namespace grpc_core { @@ -79,7 +80,7 @@ XdsCertificateVerifier::XdsCertificateVerifier( bool XdsCertificateVerifier::Verify( grpc_tls_custom_verification_check_request* request, std::function, absl::Status* sync_status) { - GPR_ASSERT(request != nullptr); + CHECK_NE(request, nullptr); if (!XdsVerifySubjectAlternativeNames( request->peer_info.san_names.uri_names, request->peer_info.san_names.uri_names_size, @@ -165,7 +166,7 @@ XdsCredentials::create_security_connector( target_name, args); } } - GPR_ASSERT(fallback_credentials_ != nullptr); + CHECK(fallback_credentials_ != nullptr); return fallback_credentials_->create_security_connector(std::move(call_creds), target_name, args); } @@ -216,12 +217,12 @@ UniqueTypeName XdsServerCredentials::Type() { grpc_channel_credentials* grpc_xds_credentials_create( grpc_channel_credentials* fallback_credentials) { - GPR_ASSERT(fallback_credentials != nullptr); + CHECK_NE(fallback_credentials, nullptr); return new grpc_core::XdsCredentials(fallback_credentials->Ref()); } grpc_server_credentials* grpc_xds_server_credentials_create( grpc_server_credentials* fallback_credentials) { - GPR_ASSERT(fallback_credentials != nullptr); + CHECK_NE(fallback_credentials, nullptr); return new grpc_core::XdsServerCredentials(fallback_credentials->Ref()); } diff --git a/src/core/lib/security/credentials/xds/xds_credentials.h b/src/core/lib/security/credentials/xds/xds_credentials.h index 09762d30276..dc363ac52b2 100644 --- a/src/core/lib/security/credentials/xds/xds_credentials.h +++ b/src/core/lib/security/credentials/xds/xds_credentials.h @@ -33,7 +33,6 @@ #include #include -#include "src/core/ext/xds/xds_certificate_provider.h" #include "src/core/lib/channel/channel_args.h" #include "src/core/lib/gprpp/ref_counted_ptr.h" #include "src/core/lib/gprpp/unique_type_name.h" @@ -41,6 +40,7 @@ #include "src/core/lib/security/credentials/credentials.h" #include "src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h" #include "src/core/lib/security/security_connector/security_connector.h" +#include "src/core/xds/grpc/xds_certificate_provider.h" namespace grpc_core { diff --git a/src/core/lib/security/security_connector/alts/alts_security_connector.cc b/src/core/lib/security/security_connector/alts/alts_security_connector.cc index afc6033bc6d..07bb8c5ee3f 100644 --- a/src/core/lib/security/security_connector/alts/alts_security_connector.cc +++ b/src/core/lib/security/security_connector/alts/alts_security_connector.cc @@ -23,6 +23,7 @@ #include #include +#include "absl/log/check.h" #include "absl/status/status.h" #include "absl/strings/string_view.h" #include "absl/types/optional.h" @@ -36,6 +37,8 @@ #include #include +#include "src/core/handshaker/handshaker.h" +#include "src/core/handshaker/security/security_handshaker.h" #include "src/core/lib/channel/channel_args.h" #include "src/core/lib/gprpp/debug_location.h" #include "src/core/lib/gprpp/ref_counted_ptr.h" @@ -49,9 +52,7 @@ #include "src/core/lib/security/context/security_context.h" #include "src/core/lib/security/credentials/alts/alts_credentials.h" #include "src/core/lib/security/credentials/credentials.h" -#include "src/core/lib/security/transport/security_handshaker.h" #include "src/core/lib/slice/slice.h" -#include "src/core/lib/transport/handshaker.h" #include "src/core/lib/transport/transport.h" #include "src/core/tsi/alts/handshaker/alts_tsi_handshaker.h" #include "src/core/tsi/transport_security.h" @@ -103,10 +104,10 @@ class grpc_alts_channel_security_connector final static_cast(channel_creds()); const size_t user_specified_max_frame_size = std::max(0, args.GetInt(GRPC_ARG_TSI_MAX_FRAME_SIZE).value_or(0)); - GPR_ASSERT(alts_tsi_handshaker_create( - creds->options(), target_name_, - creds->handshaker_service_url(), true, interested_parties, - &handshaker, user_specified_max_frame_size) == TSI_OK); + CHECK(alts_tsi_handshaker_create(creds->options(), target_name_, + creds->handshaker_service_url(), true, + interested_parties, &handshaker, + user_specified_max_frame_size) == TSI_OK); handshake_manager->Add( grpc_core::SecurityHandshakerCreate(handshaker, this, args)); } @@ -156,10 +157,10 @@ class grpc_alts_server_security_connector final static_cast(server_creds()); size_t user_specified_max_frame_size = std::max(0, args.GetInt(GRPC_ARG_TSI_MAX_FRAME_SIZE).value_or(0)); - GPR_ASSERT(alts_tsi_handshaker_create( - creds->options(), nullptr, creds->handshaker_service_url(), - false, interested_parties, &handshaker, - user_specified_max_frame_size) == TSI_OK); + CHECK(alts_tsi_handshaker_create(creds->options(), nullptr, + creds->handshaker_service_url(), false, + interested_parties, &handshaker, + user_specified_max_frame_size) == TSI_OK); handshake_manager->Add( grpc_core::SecurityHandshakerCreate(handshaker, this, args)); } @@ -251,8 +252,8 @@ RefCountedPtr grpc_alts_auth_context_from_tsi_peer( grpc_auth_context_add_property( ctx.get(), TSI_ALTS_SERVICE_ACCOUNT_PEER_PROPERTY, tsi_prop->value.data, tsi_prop->value.length); - GPR_ASSERT(grpc_auth_context_set_peer_identity_property_name( - ctx.get(), TSI_ALTS_SERVICE_ACCOUNT_PEER_PROPERTY) == 1); + CHECK(grpc_auth_context_set_peer_identity_property_name( + ctx.get(), TSI_ALTS_SERVICE_ACCOUNT_PEER_PROPERTY) == 1); } // Add alts context to auth context. if (strcmp(tsi_prop->name, TSI_ALTS_CONTEXT) == 0) { diff --git a/src/core/lib/security/security_connector/fake/fake_security_connector.cc b/src/core/lib/security/security_connector/fake/fake_security_connector.cc index 4ab4a60b02b..21aa4bc62a5 100644 --- a/src/core/lib/security/security_connector/fake/fake_security_connector.cc +++ b/src/core/lib/security/security_connector/fake/fake_security_connector.cc @@ -24,6 +24,7 @@ #include #include +#include "absl/log/check.h" #include "absl/status/status.h" #include "absl/strings/str_cat.h" #include "absl/strings/str_format.h" @@ -37,9 +38,9 @@ #include #include +#include "src/core/handshaker/handshaker.h" +#include "src/core/handshaker/security/security_handshaker.h" #include "src/core/lib/channel/channel_args.h" -#include "src/core/lib/gpr/string.h" -#include "src/core/lib/gpr/useful.h" #include "src/core/lib/gprpp/crash.h" #include "src/core/lib/gprpp/debug_location.h" #include "src/core/lib/gprpp/host_port.h" @@ -54,11 +55,11 @@ #include "src/core/lib/security/context/security_context.h" #include "src/core/lib/security/credentials/credentials.h" #include "src/core/lib/security/credentials/fake/fake_credentials.h" -#include "src/core/lib/security/transport/security_handshaker.h" -#include "src/core/lib/transport/handshaker.h" #include "src/core/load_balancing/grpclb/grpclb.h" #include "src/core/tsi/fake_transport_security.h" #include "src/core/tsi/transport_security_interface.h" +#include "src/core/util/string.h" +#include "src/core/util/useful.h" namespace { class grpc_fake_channel_security_connector final @@ -141,7 +142,7 @@ class grpc_fake_channel_security_connector final private: bool fake_check_target(const char* target, const char* set_str) const { - GPR_ASSERT(target != nullptr); + CHECK_NE(target, nullptr); char** set = nullptr; size_t set_size = 0; gpr_string_split(set_str, ",", &set, &set_size); diff --git a/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc b/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc index 123daedfad8..97f3fff8718 100644 --- a/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +++ b/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc @@ -20,17 +20,19 @@ #include +#include "absl/log/check.h" + #include #include #include +#include "src/core/handshaker/security/security_handshaker.h" #include "src/core/lib/channel/channel_args.h" #include "src/core/lib/gprpp/debug_location.h" #include "src/core/lib/gprpp/ref_counted_ptr.h" #include "src/core/lib/iomgr/exec_ctx.h" #include "src/core/lib/promise/promise.h" #include "src/core/lib/security/context/security_context.h" -#include "src/core/lib/security/transport/security_handshaker.h" #include "src/core/tsi/local_transport_security.h" namespace grpc_core { @@ -70,7 +72,7 @@ void InsecureChannelSecurityConnector::add_handshakers( HandshakeManager* handshake_manager) { tsi_handshaker* handshaker = nullptr; // Re-use local_tsi_handshaker_create as a minimalist handshaker. - GPR_ASSERT(tsi_local_handshaker_create(&handshaker) == TSI_OK); + CHECK(tsi_local_handshaker_create(&handshaker) == TSI_OK); handshake_manager->Add(SecurityHandshakerCreate(handshaker, this, args)); } @@ -97,7 +99,7 @@ void InsecureServerSecurityConnector::add_handshakers( HandshakeManager* handshake_manager) { tsi_handshaker* handshaker = nullptr; // Re-use local_tsi_handshaker_create as a minimalist handshaker. - GPR_ASSERT(tsi_local_handshaker_create(&handshaker) == TSI_OK); + CHECK(tsi_local_handshaker_create(&handshaker) == TSI_OK); handshake_manager->Add(SecurityHandshakerCreate(handshaker, this, args)); } diff --git a/src/core/lib/security/security_connector/insecure/insecure_security_connector.h b/src/core/lib/security/security_connector/insecure/insecure_security_connector.h index c2716de0939..151264f35ae 100644 --- a/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +++ b/src/core/lib/security/security_connector/insecure/insecure_security_connector.h @@ -29,6 +29,7 @@ #include #include +#include "src/core/handshaker/handshaker.h" #include "src/core/lib/channel/channel_args.h" #include "src/core/lib/gprpp/ref_counted_ptr.h" #include "src/core/lib/iomgr/closure.h" @@ -38,7 +39,6 @@ #include "src/core/lib/promise/arena_promise.h" #include "src/core/lib/security/credentials/credentials.h" #include "src/core/lib/security/security_connector/security_connector.h" -#include "src/core/lib/transport/handshaker.h" #include "src/core/tsi/transport_security_interface.h" namespace grpc_core { diff --git a/src/core/lib/security/security_connector/load_system_roots_supported.cc b/src/core/lib/security/security_connector/load_system_roots_supported.cc index aaf72713a5f..a7dd8610de5 100644 --- a/src/core/lib/security/security_connector/load_system_roots_supported.cc +++ b/src/core/lib/security/security_connector/load_system_roots_supported.cc @@ -32,15 +32,17 @@ #include #include +#include "absl/log/log.h" + #include #include #include "src/core/lib/config/config_vars.h" -#include "src/core/lib/gpr/useful.h" #include "src/core/lib/gprpp/load_file.h" #include "src/core/lib/iomgr/error.h" #include "src/core/lib/security/security_connector/load_system_roots.h" #include "src/core/lib/security/security_connector/load_system_roots_supported.h" +#include "src/core/util/useful.h" namespace grpc_core { namespace { @@ -110,7 +112,7 @@ grpc_slice CreateRootCertsBundle(const char* certs_directory) { if (stat_return == -1 || !S_ISREG(dir_entry_stat.st_mode)) { // no subdirectories. if (stat_return == -1) { - gpr_log(GPR_ERROR, "failed to get status for file: %s", file_data.path); + LOG(ERROR) << "failed to get status for file: " << file_data.path; } continue; } @@ -131,7 +133,7 @@ grpc_slice CreateRootCertsBundle(const char* certs_directory) { if (read_ret != -1) { bytes_read += read_ret; } else { - gpr_log(GPR_ERROR, "failed to read file: %s", roots_filenames[i].path); + LOG(ERROR) << "failed to read file: " << roots_filenames[i].path; } } } diff --git a/src/core/lib/security/security_connector/load_system_roots_windows.cc b/src/core/lib/security/security_connector/load_system_roots_windows.cc index 280d0900410..74e5b664c6a 100644 --- a/src/core/lib/security/security_connector/load_system_roots_windows.cc +++ b/src/core/lib/security/security_connector/load_system_roots_windows.cc @@ -32,9 +32,9 @@ #include #include -#include "src/core/lib/gpr/useful.h" #include "src/core/lib/security/security_connector/load_system_roots.h" #include "src/core/lib/slice/slice_internal.h" +#include "src/core/util/useful.h" namespace grpc_core { namespace { diff --git a/src/core/lib/security/security_connector/local/local_security_connector.cc b/src/core/lib/security/security_connector/local/local_security_connector.cc index 0e2ee655bca..b03d46d219b 100644 --- a/src/core/lib/security/security_connector/local/local_security_connector.cc +++ b/src/core/lib/security/security_connector/local/local_security_connector.cc @@ -23,6 +23,7 @@ #include #include +#include "absl/log/check.h" #include "absl/status/status.h" #include "absl/status/statusor.h" #include "absl/strings/match.h" @@ -37,6 +38,8 @@ #include #include "src/core/client_channel/client_channel_filter.h" +#include "src/core/handshaker/handshaker.h" +#include "src/core/handshaker/security/security_handshaker.h" #include "src/core/lib/address_utils/parse_address.h" #include "src/core/lib/address_utils/sockaddr_utils.h" #include "src/core/lib/channel/channel_args.h" @@ -56,8 +59,6 @@ #include "src/core/lib/security/context/security_context.h" #include "src/core/lib/security/credentials/credentials.h" #include "src/core/lib/security/credentials/local/local_credentials.h" -#include "src/core/lib/security/transport/security_handshaker.h" -#include "src/core/lib/transport/handshaker.h" #include "src/core/lib/uri/uri_parser.h" #include "src/core/tsi/local_transport_security.h" #include "src/core/tsi/transport_security.h" @@ -77,12 +78,12 @@ grpc_core::RefCountedPtr local_auth_context_create( grpc_auth_context_add_cstring_property( ctx.get(), GRPC_TRANSPORT_SECURITY_TYPE_PROPERTY_NAME, GRPC_LOCAL_TRANSPORT_SECURITY_TYPE); - GPR_ASSERT(grpc_auth_context_set_peer_identity_property_name( - ctx.get(), GRPC_TRANSPORT_SECURITY_TYPE_PROPERTY_NAME) == 1); - GPR_ASSERT(peer->property_count == 1); + CHECK(grpc_auth_context_set_peer_identity_property_name( + ctx.get(), GRPC_TRANSPORT_SECURITY_TYPE_PROPERTY_NAME) == 1); + CHECK_EQ(peer->property_count, 1u); const tsi_peer_property* prop = &peer->properties[0]; - GPR_ASSERT(prop != nullptr); - GPR_ASSERT(strcmp(prop->name, TSI_SECURITY_LEVEL_PEER_PROPERTY) == 0); + CHECK_NE(prop, nullptr); + CHECK_EQ(strcmp(prop->name, TSI_SECURITY_LEVEL_PEER_PROPERTY), 0); grpc_auth_context_add_property(ctx.get(), GRPC_TRANSPORT_SECURITY_LEVEL_PROPERTY_NAME, prop->value.data, prop->value.length); @@ -182,7 +183,7 @@ class grpc_local_channel_security_connector final grpc_pollset_set* /*interested_parties*/, grpc_core::HandshakeManager* handshake_manager) override { tsi_handshaker* handshaker = nullptr; - GPR_ASSERT(tsi_local_handshaker_create(&handshaker) == TSI_OK); + CHECK(tsi_local_handshaker_create(&handshaker) == TSI_OK); handshake_manager->Add( grpc_core::SecurityHandshakerCreate(handshaker, this, args)); } @@ -237,7 +238,7 @@ class grpc_local_server_security_connector final grpc_pollset_set* /*interested_parties*/, grpc_core::HandshakeManager* handshake_manager) override { tsi_handshaker* handshaker = nullptr; - GPR_ASSERT(tsi_local_handshaker_create(&handshaker) == TSI_OK); + CHECK(tsi_local_handshaker_create(&handshaker) == TSI_OK); handshake_manager->Add( grpc_core::SecurityHandshakerCreate(handshaker, this, args)); } diff --git a/src/core/lib/security/security_connector/security_connector.cc b/src/core/lib/security/security_connector/security_connector.cc index 3f3645edcee..3090ba61928 100644 --- a/src/core/lib/security/security_connector/security_connector.cc +++ b/src/core/lib/security/security_connector/security_connector.cc @@ -22,13 +22,15 @@ #include +#include "absl/log/check.h" + #include #include #include "src/core/lib/channel/channel_args.h" -#include "src/core/lib/gpr/useful.h" #include "src/core/lib/gprpp/debug_location.h" #include "src/core/lib/security/credentials/credentials.h" +#include "src/core/util/useful.h" grpc_core::DebugOnlyTraceFlag grpc_trace_security_connector_refcount( false, "security_connector_refcount"); @@ -45,8 +47,8 @@ int grpc_channel_security_connector::channel_security_connector_cmp( const grpc_channel_security_connector* other) const { const grpc_channel_security_connector* other_sc = static_cast(other); - GPR_ASSERT(channel_creds() != nullptr); - GPR_ASSERT(other_sc->channel_creds() != nullptr); + CHECK_NE(channel_creds(), nullptr); + CHECK_NE(other_sc->channel_creds(), nullptr); int c = channel_creds()->cmp(other_sc->channel_creds()); if (c != 0) return c; return grpc_core::QsortCompare(request_metadata_creds(), @@ -67,8 +69,8 @@ int grpc_server_security_connector::server_security_connector_cmp( const grpc_server_security_connector* other) const { const grpc_server_security_connector* other_sc = static_cast(other); - GPR_ASSERT(server_creds() != nullptr); - GPR_ASSERT(other_sc->server_creds() != nullptr); + CHECK_NE(server_creds(), nullptr); + CHECK_NE(other_sc->server_creds(), nullptr); return grpc_core::QsortCompare(server_creds(), other_sc->server_creds()); } diff --git a/src/core/lib/security/security_connector/security_connector.h b/src/core/lib/security/security_connector/security_connector.h index f4bf841d042..38b90956b7b 100644 --- a/src/core/lib/security/security_connector/security_connector.h +++ b/src/core/lib/security/security_connector/security_connector.h @@ -29,6 +29,7 @@ #include #include +#include "src/core/handshaker/handshaker.h" #include "src/core/lib/channel/channel_args.h" #include "src/core/lib/debug/trace.h" #include "src/core/lib/gprpp/ref_counted.h" @@ -39,7 +40,6 @@ #include "src/core/lib/iomgr/error.h" #include "src/core/lib/iomgr/iomgr_fwd.h" #include "src/core/lib/promise/arena_promise.h" -#include "src/core/lib/transport/handshaker.h" #include "src/core/tsi/transport_security_interface.h" extern grpc_core::DebugOnlyTraceFlag grpc_trace_security_connector_refcount; diff --git a/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc b/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc index 90662be6e14..52ec0f39534 100644 --- a/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +++ b/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc @@ -24,6 +24,8 @@ #include #include +#include "absl/log/check.h" +#include "absl/log/log.h" #include "absl/status/status.h" #include "absl/strings/str_cat.h" #include "absl/strings/str_format.h" @@ -33,6 +35,8 @@ #include #include +#include "src/core/handshaker/handshaker.h" +#include "src/core/handshaker/security/security_handshaker.h" #include "src/core/lib/channel/channel_args.h" #include "src/core/lib/gprpp/debug_location.h" #include "src/core/lib/gprpp/host_port.h" @@ -49,8 +53,6 @@ #include "src/core/lib/security/credentials/credentials.h" #include "src/core/lib/security/credentials/ssl/ssl_credentials.h" #include "src/core/lib/security/security_connector/ssl_utils.h" -#include "src/core/lib/security/transport/security_handshaker.h" -#include "src/core/lib/transport/handshaker.h" #include "src/core/tsi/ssl_transport_security.h" #include "src/core/tsi/transport_security.h" #include "src/core/tsi/transport_security_interface.h" @@ -330,7 +332,7 @@ class grpc_ssl_server_security_connector tsi_ssl_server_handshaker_factory* new_handshaker_factory = nullptr; const grpc_ssl_server_credentials* server_creds = static_cast(this->server_creds()); - GPR_DEBUG_ASSERT(config->pem_root_certs != nullptr); + DCHECK_NE(config->pem_root_certs, nullptr); tsi_ssl_server_handshaker_options options; options.pem_key_cert_pairs = grpc_convert_grpc_to_tsi_cert_pairs( config->pem_key_cert_pairs, config->num_key_cert_pairs); @@ -379,7 +381,7 @@ grpc_ssl_channel_security_connector_create( const char* overridden_target_name, tsi_ssl_client_handshaker_factory* client_factory) { if (config == nullptr || target_name == nullptr) { - gpr_log(GPR_ERROR, "An ssl channel needs a config and a target name."); + LOG(ERROR) << "An ssl channel needs a config and a target name."; return nullptr; } @@ -394,7 +396,7 @@ grpc_ssl_channel_security_connector_create( grpc_core::RefCountedPtr grpc_ssl_server_security_connector_create( grpc_core::RefCountedPtr server_credentials) { - GPR_ASSERT(server_credentials != nullptr); + CHECK(server_credentials != nullptr); grpc_core::RefCountedPtr c = grpc_core::MakeRefCounted( std::move(server_credentials)); diff --git a/src/core/lib/security/security_connector/ssl_utils.cc b/src/core/lib/security/security_connector/ssl_utils.cc index 41b89093833..1e69711bf33 100644 --- a/src/core/lib/security/security_connector/ssl_utils.cc +++ b/src/core/lib/security/security_connector/ssl_utils.cc @@ -25,6 +25,8 @@ #include #include +#include "absl/log/check.h" +#include "absl/log/log.h" #include "absl/strings/match.h" #include "absl/strings/str_cat.h" #include "absl/strings/str_split.h" @@ -42,7 +44,6 @@ #include "src/core/ext/transport/chttp2/alpn/alpn.h" #include "src/core/lib/channel/channel_args.h" #include "src/core/lib/config/config_vars.h" -#include "src/core/lib/gpr/useful.h" #include "src/core/lib/gprpp/host_port.h" #include "src/core/lib/gprpp/load_file.h" #include "src/core/lib/gprpp/ref_counted_ptr.h" @@ -50,6 +51,7 @@ #include "src/core/lib/security/security_connector/load_system_roots.h" #include "src/core/tsi/ssl_transport_security.h" #include "src/core/tsi/transport_security.h" +#include "src/core/util/useful.h" // -- Constants. -- @@ -122,7 +124,7 @@ tsi_tls_version grpc_get_tsi_tls_version(grpc_tls_version tls_version) { case grpc_tls_version::TLS1_3: return tsi_tls_version::TSI_TLS1_3; default: - gpr_log(GPR_INFO, "Falling back to TLS 1.2."); + LOG(INFO) << "Falling back to TLS 1.2."; return tsi_tls_version::TSI_TLS1_2; } } @@ -179,7 +181,7 @@ absl::Status SslCheckCallHost(absl::string_view host, status = GRPC_SECURITY_OK; } if (status != GRPC_SECURITY_OK) { - gpr_log(GPR_ERROR, "call host does not match SSL server name"); + LOG(ERROR) << "call host does not match SSL server name"; grpc_shallow_peer_destruct(&peer); return absl::UnauthenticatedError( "call host does not match SSL server name"); @@ -191,7 +193,7 @@ absl::Status SslCheckCallHost(absl::string_view host, } // namespace grpc_core const char** grpc_fill_alpn_protocol_strings(size_t* num_alpn_protocols) { - GPR_ASSERT(num_alpn_protocols != nullptr); + CHECK_NE(num_alpn_protocols, nullptr); *num_alpn_protocols = grpc_chttp2_num_alpn_versions(); const char** alpn_protocol_strings = static_cast( gpr_malloc(sizeof(const char*) * (*num_alpn_protocols))); @@ -231,16 +233,16 @@ static bool IsSpiffeId(absl::string_view uri) { return false; }; if (uri.size() > 2048) { - gpr_log(GPR_INFO, "Invalid SPIFFE ID: ID longer than 2048 bytes."); + LOG(INFO) << "Invalid SPIFFE ID: ID longer than 2048 bytes."; return false; } std::vector splits = absl::StrSplit(uri, '/'); if (splits.size() < 4 || splits[3].empty()) { - gpr_log(GPR_INFO, "Invalid SPIFFE ID: workload id is empty."); + LOG(INFO) << "Invalid SPIFFE ID: workload id is empty."; return false; } if (splits[2].size() > 255) { - gpr_log(GPR_INFO, "Invalid SPIFFE ID: domain longer than 255 characters."); + LOG(INFO) << "Invalid SPIFFE ID: domain longer than 255 characters."; return false; } return true; @@ -252,7 +254,7 @@ grpc_core::RefCountedPtr grpc_ssl_peer_to_auth_context( const char* peer_identity_property_name = nullptr; // The caller has checked the certificate type property. - GPR_ASSERT(peer->property_count >= 1); + CHECK_GE(peer->property_count, 1u); grpc_core::RefCountedPtr ctx = grpc_core::MakeRefCounted(nullptr); grpc_auth_context_add_cstring_property( @@ -319,19 +321,19 @@ grpc_core::RefCountedPtr grpc_ssl_peer_to_auth_context( } } if (peer_identity_property_name != nullptr) { - GPR_ASSERT(grpc_auth_context_set_peer_identity_property_name( - ctx.get(), peer_identity_property_name) == 1); + CHECK(grpc_auth_context_set_peer_identity_property_name( + ctx.get(), peer_identity_property_name) == 1); } // A valid SPIFFE certificate can only have exact one URI SAN field. if (has_spiffe_id) { if (uri_count == 1) { - GPR_ASSERT(spiffe_length > 0); - GPR_ASSERT(spiffe_data != nullptr); + CHECK_GT(spiffe_length, 0u); + CHECK_NE(spiffe_data, nullptr); grpc_auth_context_add_property(ctx.get(), GRPC_PEER_SPIFFE_ID_PROPERTY_NAME, spiffe_data, spiffe_length); } else { - gpr_log(GPR_INFO, "Invalid SPIFFE ID: multiple URI SANs."); + LOG(INFO) << "Invalid SPIFFE ID: multiple URI SANs."; } } return ctx; @@ -424,7 +426,7 @@ grpc_security_status grpc_ssl_tsi_client_handshaker_factory_init( // Use default root certificates. root_certs = grpc_core::DefaultSslRootStore::GetPemRootCerts(); if (root_certs == nullptr) { - gpr_log(GPR_ERROR, "Could not get default pem root certs."); + LOG(ERROR) << "Could not get default pem root certs."; return GRPC_SECURITY_ERROR; } root_store = grpc_core::DefaultSslRootStore::GetRootStore(); @@ -587,7 +589,7 @@ grpc_slice DefaultSslRootStore::ComputePemRootCerts() { char* pem_root_certs = nullptr; ovrd_res = ssl_roots_override_cb(&pem_root_certs); if (ovrd_res == GRPC_SSL_ROOTS_OVERRIDE_OK) { - GPR_ASSERT(pem_root_certs != nullptr); + CHECK_NE(pem_root_certs, nullptr); result = Slice::FromCopiedBuffer( pem_root_certs, strlen(pem_root_certs) + 1); // nullptr terminator. diff --git a/src/core/lib/security/security_connector/tls/tls_security_connector.cc b/src/core/lib/security/security_connector/tls/tls_security_connector.cc index 303a3b2701c..e74d9ca2bc4 100644 --- a/src/core/lib/security/security_connector/tls/tls_security_connector.cc +++ b/src/core/lib/security/security_connector/tls/tls_security_connector.cc @@ -25,6 +25,8 @@ #include #include "absl/functional/bind_front.h" +#include "absl/log/check.h" +#include "absl/log/log.h" #include "absl/strings/str_cat.h" #include "absl/strings/string_view.h" @@ -35,6 +37,7 @@ #include #include +#include "src/core/handshaker/security/security_handshaker.h" #include "src/core/lib/channel/channel_args.h" #include "src/core/lib/gprpp/debug_location.h" #include "src/core/lib/gprpp/host_port.h" @@ -46,7 +49,6 @@ #include "src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h" #include "src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h" #include "src/core/lib/security/security_connector/ssl_utils.h" -#include "src/core/lib/security/transport/security_handshaker.h" #include "src/core/tsi/ssl_transport_security.h" namespace grpc_core { @@ -63,7 +65,7 @@ char* CopyCoreString(char* src, size_t length) { void PendingVerifierRequestInit( const char* target_name, tsi_peer peer, grpc_tls_custom_verification_check_request* request) { - GPR_ASSERT(request != nullptr); + CHECK_NE(request, nullptr); // The verifier holds a ref to the security connector, so it's fine to // directly point this to the name cached in the security connector. request->target_name = target_name; @@ -175,7 +177,7 @@ void PendingVerifierRequestInit( void PendingVerifierRequestDestroy( grpc_tls_custom_verification_check_request* request) { - GPR_ASSERT(request != nullptr); + CHECK_NE(request, nullptr); if (request->peer_info.common_name != nullptr) { gpr_free(const_cast(request->peer_info.common_name)); } @@ -219,13 +221,13 @@ tsi_ssl_pem_key_cert_pair* ConvertToTsiPemKeyCertPair( tsi_ssl_pem_key_cert_pair* tsi_pairs = nullptr; size_t num_key_cert_pairs = cert_pair_list.size(); if (num_key_cert_pairs > 0) { - GPR_ASSERT(cert_pair_list.data() != nullptr); + CHECK_NE(cert_pair_list.data(), nullptr); tsi_pairs = static_cast( gpr_zalloc(num_key_cert_pairs * sizeof(tsi_ssl_pem_key_cert_pair))); } for (size_t i = 0; i < num_key_cert_pairs; i++) { - GPR_ASSERT(!cert_pair_list[i].private_key().empty()); - GPR_ASSERT(!cert_pair_list[i].cert_chain().empty()); + CHECK(!cert_pair_list[i].private_key().empty()); + CHECK(!cert_pair_list[i].cert_chain().empty()); tsi_pairs[i].cert_chain = gpr_strdup(cert_pair_list[i].cert_chain().c_str()); tsi_pairs[i].private_key = @@ -376,7 +378,7 @@ void TlsChannelSecurityConnector::check_peer( } *auth_context = grpc_ssl_peer_to_auth_context(&peer, GRPC_TLS_TRANSPORT_SECURITY_TYPE); - GPR_ASSERT(options_->certificate_verifier() != nullptr); + CHECK_NE(options_->certificate_verifier(), nullptr); auto* pending_request = new ChannelPendingVerifierRequest( RefAsSubclass(), on_peer_checked, peer, target_name); @@ -435,7 +437,7 @@ ArenaPromise TlsChannelSecurityConnector::CheckCallHost( void TlsChannelSecurityConnector::TlsChannelCertificateWatcher:: OnCertificatesChanged(absl::optional root_certs, absl::optional key_cert_pairs) { - GPR_ASSERT(security_connector_ != nullptr); + CHECK_NE(security_connector_, nullptr); MutexLock lock(&security_connector_->mu_); if (root_certs.has_value()) { security_connector_->pem_root_certs_ = root_certs; @@ -451,7 +453,7 @@ void TlsChannelSecurityConnector::TlsChannelCertificateWatcher:: if (root_ready && identity_ready) { if (security_connector_->UpdateHandshakerFactoryLocked() != GRPC_SECURITY_OK) { - gpr_log(GPR_ERROR, "Update handshaker factory failed."); + LOG(ERROR) << "Update handshaker factory failed."; } } } @@ -700,7 +702,7 @@ int TlsServerSecurityConnector::cmp( void TlsServerSecurityConnector::TlsServerCertificateWatcher:: OnCertificatesChanged(absl::optional root_certs, absl::optional key_cert_pairs) { - GPR_ASSERT(security_connector_ != nullptr); + CHECK_NE(security_connector_, nullptr); MutexLock lock(&security_connector_->mu_); if (root_certs.has_value()) { security_connector_->pem_root_certs_ = root_certs; @@ -720,7 +722,7 @@ void TlsServerSecurityConnector::TlsServerCertificateWatcher:: (!root_being_watched && identity_being_watched && identity_has_value)) { if (security_connector_->UpdateHandshakerFactoryLocked() != GRPC_SECURITY_OK) { - gpr_log(GPR_ERROR, "Update handshaker factory failed."); + LOG(ERROR) << "Update handshaker factory failed."; } } } @@ -799,8 +801,8 @@ TlsServerSecurityConnector::UpdateHandshakerFactoryLocked() { tsi_ssl_server_handshaker_factory_unref(server_handshaker_factory_); } // The identity certs on the server side shouldn't be empty. - GPR_ASSERT(pem_key_cert_pair_list_.has_value()); - GPR_ASSERT(!(*pem_key_cert_pair_list_).empty()); + CHECK(pem_key_cert_pair_list_.has_value()); + CHECK(!(*pem_key_cert_pair_list_).empty()); std::string pem_root_certs; if (pem_root_certs_.has_value()) { // TODO(ZhenLian): update the underlying TSI layer to use C++ types like diff --git a/src/core/lib/security/security_connector/tls/tls_security_connector.h b/src/core/lib/security/security_connector/tls/tls_security_connector.h index c9293b39943..0053a9d46d3 100644 --- a/src/core/lib/security/security_connector/tls/tls_security_connector.h +++ b/src/core/lib/security/security_connector/tls/tls_security_connector.h @@ -32,6 +32,7 @@ #include #include +#include "src/core/handshaker/handshaker.h" #include "src/core/lib/channel/channel_args.h" #include "src/core/lib/gprpp/ref_counted_ptr.h" #include "src/core/lib/gprpp/sync.h" @@ -43,7 +44,6 @@ #include "src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h" #include "src/core/lib/security/security_connector/security_connector.h" #include "src/core/lib/security/security_connector/ssl_utils.h" -#include "src/core/lib/transport/handshaker.h" #include "src/core/tsi/ssl/key_logging/ssl_key_logging.h" #include "src/core/tsi/ssl_transport_security.h" #include "src/core/tsi/transport_security_interface.h" diff --git a/src/core/lib/security/transport/auth_filters.h b/src/core/lib/security/transport/auth_filters.h index 06b8b6e6fae..3970ae1e4f3 100644 --- a/src/core/lib/security/transport/auth_filters.h +++ b/src/core/lib/security/transport/auth_filters.h @@ -115,6 +115,7 @@ class ServerAuthFilter final : public ImplementChannelFilter { } static const NoInterceptor OnServerInitialMetadata; static const NoInterceptor OnClientToServerMessage; + static const NoInterceptor OnClientToServerHalfClose; static const NoInterceptor OnServerToClientMessage; static const NoInterceptor OnServerTrailingMetadata; static const NoInterceptor OnFinalize; diff --git a/src/core/lib/security/transport/server_auth_filter.cc b/src/core/lib/security/transport/server_auth_filter.cc index c36db059b3a..bfbfeb2d8ae 100644 --- a/src/core/lib/security/transport/server_auth_filter.cc +++ b/src/core/lib/security/transport/server_auth_filter.cc @@ -23,6 +23,7 @@ #include #include +#include "absl/log/check.h" #include "absl/status/status.h" #include "absl/status/statusor.h" @@ -67,6 +68,7 @@ const grpc_channel_filter ServerAuthFilter::kFilter = "server-auth"); const NoInterceptor ServerAuthFilter::Call::OnClientToServerMessage; +const NoInterceptor ServerAuthFilter::Call::OnClientToServerHalfClose; const NoInterceptor ServerAuthFilter::Call::OnServerToClientMessage; const NoInterceptor ServerAuthFilter::Call::OnServerInitialMetadata; const NoInterceptor ServerAuthFilter::Call::OnServerTrailingMetadata; @@ -216,7 +218,7 @@ ServerAuthFilter::ServerAuthFilter( absl::StatusOr> ServerAuthFilter::Create( const ChannelArgs& args, ChannelFilter::Args) { auto auth_context = args.GetObjectRef(); - GPR_ASSERT(auth_context != nullptr); + CHECK(auth_context != nullptr); auto creds = args.GetObjectRef(); return std::make_unique(std::move(creds), std::move(auth_context)); diff --git a/src/core/lib/slice/percent_encoding.cc b/src/core/lib/slice/percent_encoding.cc index bd5d71a0788..8931f1d716d 100644 --- a/src/core/lib/slice/percent_encoding.cc +++ b/src/core/lib/slice/percent_encoding.cc @@ -23,6 +23,8 @@ #include #include +#include "absl/log/check.h" + #include #include @@ -100,7 +102,7 @@ Slice PercentEncodeSlice(Slice slice, PercentEncodingType type) { *q++ = hex[c & 15]; } } - GPR_ASSERT(q == out.end()); + CHECK(q == out.end()); return Slice(std::move(out)); } diff --git a/src/core/lib/slice/slice.cc b/src/core/lib/slice/slice.cc index 90939fa93e4..f2d49e0bf47 100644 --- a/src/core/lib/slice/slice.cc +++ b/src/core/lib/slice/slice.cc @@ -22,6 +22,8 @@ #include +#include "absl/log/check.h" + #include #include #include @@ -244,11 +246,11 @@ static grpc_slice sub_no_ref(const grpc_slice& source, size_t begin, size_t end) { grpc_slice subset; - GPR_ASSERT(end >= begin); + CHECK(end >= begin); if (source.refcount != nullptr) { // Enforce preconditions - GPR_ASSERT(source.data.refcounted.length >= end); + CHECK(source.data.refcounted.length >= end); // Build the result subset.refcount = source.refcount; @@ -257,7 +259,7 @@ static grpc_slice sub_no_ref(const grpc_slice& source, size_t begin, subset.data.refcounted.length = end - begin; } else { // Enforce preconditions - GPR_ASSERT(source.data.inlined.length >= end); + CHECK(source.data.inlined.length >= end); subset.refcount = nullptr; subset.data.inlined.length = static_cast(end - begin); memcpy(subset.data.inlined.bytes, source.data.inlined.bytes + begin, @@ -296,7 +298,7 @@ grpc_slice grpc_slice_split_tail_maybe_ref_impl(grpc_slice* source, if (source->refcount == nullptr) { // inlined data, copy it out - GPR_ASSERT(source->data.inlined.length >= split); + CHECK(source->data.inlined.length >= split); tail.refcount = nullptr; tail.data.inlined.length = static_cast(source->data.inlined.length - split); @@ -311,7 +313,7 @@ grpc_slice grpc_slice_split_tail_maybe_ref_impl(grpc_slice* source, source->data.refcounted.length = split; } else { size_t tail_length = source->data.refcounted.length - split; - GPR_ASSERT(source->data.refcounted.length >= split); + CHECK(source->data.refcounted.length >= split); if (allow_inline && tail_length < sizeof(tail.data.inlined.bytes) && ref_whom != GRPC_SLICE_REF_TAIL) { // Copy out the bytes - it'll be cheaper than refcounting @@ -371,7 +373,7 @@ grpc_slice grpc_slice_split_head_impl(grpc_slice* source, size_t split) { grpc_slice head; if (source->refcount == nullptr) { - GPR_ASSERT(source->data.inlined.length >= split); + CHECK(source->data.inlined.length >= split); head.refcount = nullptr; head.data.inlined.length = static_cast(split); @@ -381,7 +383,7 @@ grpc_slice grpc_slice_split_head_impl(grpc_slice* source, size_t split) { memmove(source->data.inlined.bytes, source->data.inlined.bytes + split, source->data.inlined.length); } else if (allow_inline && split < sizeof(head.data.inlined.bytes)) { - GPR_ASSERT(source->data.refcounted.length >= split); + CHECK(source->data.refcounted.length >= split); head.refcount = nullptr; head.data.inlined.length = static_cast(split); @@ -389,7 +391,7 @@ grpc_slice grpc_slice_split_head_impl(grpc_slice* source, size_t split) { source->data.refcounted.bytes += split; source->data.refcounted.length -= split; } else { - GPR_ASSERT(source->data.refcounted.length >= split); + CHECK(source->data.refcounted.length >= split); // Build the result head.refcount = source->refcount; diff --git a/src/core/lib/slice/slice.h b/src/core/lib/slice/slice.h index ed9e30c2edb..2dc1d4164c7 100644 --- a/src/core/lib/slice/slice.h +++ b/src/core/lib/slice/slice.h @@ -21,6 +21,7 @@ #include #include +#include "absl/log/check.h" #include "absl/strings/string_view.h" #include @@ -29,10 +30,10 @@ #include #include -#include "src/core/lib/gpr/string.h" #include "src/core/lib/gprpp/debug_location.h" #include "src/core/lib/slice/slice_internal.h" #include "src/core/lib/slice/slice_refcount.h" +#include "src/core/util/string.h" // Herein lies grpc_core::Slice and its team of thin wrappers around grpc_slice. // They aim to keep you safe by providing strong guarantees around lifetime and @@ -243,7 +244,7 @@ class StaticSlice : public slice_detail::BaseSlice, StaticSlice() = default; explicit StaticSlice(const grpc_slice& slice) : slice_detail::BaseSlice(slice) { - GPR_DEBUG_ASSERT(slice.refcount == grpc_slice_refcount::NoopRefcount()); + DCHECK(slice.refcount == grpc_slice_refcount::NoopRefcount()); } StaticSlice(const StaticSlice& other) @@ -267,7 +268,7 @@ class GPR_MSVC_EMPTY_BASE_CLASS_WORKAROUND MutableSlice MutableSlice() = default; explicit MutableSlice(const grpc_slice& slice) : slice_detail::BaseSlice(slice) { - GPR_DEBUG_ASSERT(slice.refcount == nullptr || slice.refcount->IsUnique()); + DCHECK(slice.refcount == nullptr || slice.refcount->IsUnique()); } ~MutableSlice() { CSliceUnref(c_slice()); } diff --git a/src/core/lib/slice/slice_buffer.cc b/src/core/lib/slice/slice_buffer.cc index c8e93b7d00c..6ea05cbc157 100644 --- a/src/core/lib/slice/slice_buffer.cc +++ b/src/core/lib/slice/slice_buffer.cc @@ -22,6 +22,8 @@ #include +#include "absl/log/check.h" + #include #include #include @@ -80,7 +82,7 @@ Slice SliceBuffer::JoinIntoSlice() const { GRPC_SLICE_LENGTH(slice_buffer_.slices[i])); ofs += GRPC_SLICE_LENGTH(slice_buffer_.slices[i]); } - GPR_ASSERT(ofs == slice_buffer_.length); + CHECK(ofs == slice_buffer_.length); return Slice(slice); } @@ -330,7 +332,7 @@ static void slice_buffer_move_first_maybe_ref(grpc_slice_buffer* src, size_t n, return; } - GPR_ASSERT(src->length >= n); + CHECK(src->length >= n); if (src->length == n) { grpc_slice_buffer_move_into(src, dst); return; @@ -358,7 +360,7 @@ static void slice_buffer_move_first_maybe_ref(grpc_slice_buffer* src, size_t n, src, grpc_slice_split_tail_maybe_ref_no_inline( &slice, n, GRPC_SLICE_REF_BOTH)); } - GPR_ASSERT(GRPC_SLICE_LENGTH(slice) == n); + CHECK(GRPC_SLICE_LENGTH(slice) == n); grpc_slice_buffer_add(dst, slice); break; } else { // n < slice_len @@ -371,14 +373,14 @@ static void slice_buffer_move_first_maybe_ref(grpc_slice_buffer* src, size_t n, src, grpc_slice_split_tail_maybe_ref_no_inline( &slice, n, GRPC_SLICE_REF_TAIL)); } - GPR_ASSERT(GRPC_SLICE_LENGTH(slice) == n); + CHECK(GRPC_SLICE_LENGTH(slice) == n); grpc_slice_buffer_add_indexed(dst, slice); break; } } - GPR_ASSERT(dst->length == output_len); - GPR_ASSERT(src->length == new_input_len); - GPR_ASSERT(src->count > 0); + CHECK(dst->length == output_len); + CHECK(src->length == new_input_len); + CHECK_GT(src->count, 0u); } void grpc_slice_buffer_move_first_no_inline(grpc_slice_buffer* src, size_t n, @@ -399,7 +401,7 @@ void grpc_slice_buffer_move_first_no_ref(grpc_slice_buffer* src, size_t n, void grpc_slice_buffer_move_first_into_buffer(grpc_slice_buffer* src, size_t n, void* dst) { char* dstp = static_cast(dst); - GPR_ASSERT(src->length >= n); + CHECK(src->length >= n); while (n > 0) { grpc_slice slice = grpc_slice_buffer_take_first(src); @@ -425,7 +427,7 @@ void grpc_slice_buffer_move_first_into_buffer(grpc_slice_buffer* src, size_t n, void grpc_slice_buffer_copy_first_into_buffer(grpc_slice_buffer* src, size_t n, void* dst) { uint8_t* dstp = static_cast(dst); - GPR_ASSERT(src->length >= n); + CHECK(src->length >= n); for (size_t i = 0; i < src->count; i++) { grpc_slice slice = src->slices[i]; @@ -442,7 +444,7 @@ void grpc_slice_buffer_copy_first_into_buffer(grpc_slice_buffer* src, size_t n, template void grpc_slice_buffer_trim_end_impl(grpc_slice_buffer* sb, size_t n, grpc_slice_buffer* garbage) { - GPR_ASSERT(n <= sb->length); + CHECK(n <= sb->length); sb->length -= n; for (;;) { size_t idx = sb->count - 1; @@ -493,7 +495,7 @@ void grpc_slice_buffer_trim_end(grpc_slice_buffer* sb, size_t n, grpc_slice grpc_slice_buffer_take_first(grpc_slice_buffer* sb) { grpc_slice slice; - GPR_ASSERT(sb->count > 0); + CHECK_GT(sb->count, 0u); slice = sb->slices[0]; sb->slices++; sb->count--; @@ -503,7 +505,7 @@ grpc_slice grpc_slice_buffer_take_first(grpc_slice_buffer* sb) { } void grpc_slice_buffer_remove_first(grpc_slice_buffer* sb) { - GPR_DEBUG_ASSERT(sb->count > 0); + DCHECK_GT(sb->count, 0u); sb->length -= GRPC_SLICE_LENGTH(sb->slices[0]); grpc_core::CSliceUnref(sb->slices[0]); sb->slices++; diff --git a/src/core/lib/slice/slice_internal.h b/src/core/lib/slice/slice_internal.h index 0ab8cd536f0..03d8fbe180d 100644 --- a/src/core/lib/slice/slice_internal.h +++ b/src/core/lib/slice/slice_internal.h @@ -25,6 +25,7 @@ #include #include "absl/hash/hash.h" +#include "absl/log/check.h" #include "absl/strings/string_view.h" #include @@ -36,7 +37,7 @@ // Returns a pointer to the first slice in the slice buffer without giving // ownership to or a reference count on that slice. inline grpc_slice* grpc_slice_buffer_peek_first(grpc_slice_buffer* sb) { - GPR_DEBUG_ASSERT(sb->count > 0); + DCHECK_GT(sb->count, 0u); return &sb->slices[0]; } diff --git a/src/core/lib/slice/slice_string_helpers.cc b/src/core/lib/slice/slice_string_helpers.cc index d56a7de8943..f2c4346cf25 100644 --- a/src/core/lib/slice/slice_string_helpers.cc +++ b/src/core/lib/slice/slice_string_helpers.cc @@ -20,7 +20,7 @@ #include -#include "src/core/lib/gpr/string.h" +#include "src/core/util/string.h" char* grpc_dump_slice(const grpc_slice& s, uint32_t flags) { return gpr_dump(reinterpret_cast GRPC_SLICE_START_PTR(s), diff --git a/src/core/lib/surface/byte_buffer_reader.cc b/src/core/lib/surface/byte_buffer_reader.cc index 1e1efe14f86..2053bf3f8b5 100644 --- a/src/core/lib/surface/byte_buffer_reader.cc +++ b/src/core/lib/surface/byte_buffer_reader.cc @@ -19,6 +19,8 @@ #include #include +#include "absl/log/check.h" + #include #include #include @@ -93,7 +95,7 @@ grpc_slice grpc_byte_buffer_reader_readall(grpc_byte_buffer_reader* reader) { memcpy(&(outbuf[bytes_read]), GRPC_SLICE_START_PTR(in_slice), slice_length); bytes_read += slice_length; grpc_core::CSliceUnref(in_slice); - GPR_ASSERT(bytes_read <= input_size); + CHECK(bytes_read <= input_size); } return out_slice; diff --git a/src/core/lib/surface/call.cc b/src/core/lib/surface/call.cc index 08a3aeb02a5..cd9a15d0bd6 100644 --- a/src/core/lib/surface/call.cc +++ b/src/core/lib/surface/call.cc @@ -33,6 +33,8 @@ #include #include "absl/base/thread_annotations.h" +#include "absl/log/check.h" +#include "absl/log/log.h" #include "absl/status/status.h" #include "absl/strings/str_cat.h" #include "absl/strings/str_format.h" @@ -54,19 +56,16 @@ #include #include +#include "src/core/channelz/channelz.h" #include "src/core/lib/channel/call_finalization.h" #include "src/core/lib/channel/call_tracer.h" #include "src/core/lib/channel/channel_stack.h" -#include "src/core/lib/channel/channelz.h" #include "src/core/lib/channel/context.h" #include "src/core/lib/channel/status_util.h" #include "src/core/lib/compression/compression_internal.h" #include "src/core/lib/debug/stats.h" #include "src/core/lib/debug/stats_data.h" #include "src/core/lib/experiments/experiments.h" -#include "src/core/lib/gpr/alloc.h" -#include "src/core/lib/gpr/time_precise.h" -#include "src/core/lib/gpr/useful.h" #include "src/core/lib/gprpp/bitset.h" #include "src/core/lib/gprpp/cpp_impl_of.h" #include "src/core/lib/gprpp/crash.h" @@ -90,6 +89,7 @@ #include "src/core/lib/promise/race.h" #include "src/core/lib/promise/seq.h" #include "src/core/lib/promise/status_flag.h" +#include "src/core/lib/promise/try_seq.h" #include "src/core/lib/resource_quota/arena.h" #include "src/core/lib/slice/slice_buffer.h" #include "src/core/lib/slice/slice_internal.h" @@ -97,13 +97,16 @@ #include "src/core/lib/surface/call_test_only.h" #include "src/core/lib/surface/channel.h" #include "src/core/lib/surface/completion_queue.h" -#include "src/core/lib/surface/server_interface.h" #include "src/core/lib/surface/validate_metadata.h" #include "src/core/lib/surface/wait_for_cq_end_op.h" #include "src/core/lib/transport/batch_builder.h" #include "src/core/lib/transport/error_utils.h" #include "src/core/lib/transport/metadata_batch.h" #include "src/core/lib/transport/transport.h" +#include "src/core/server/server_interface.h" +#include "src/core/util/alloc.h" +#include "src/core/util/time_precise.h" +#include "src/core/util/useful.h" grpc_core::TraceFlag grpc_call_error_trace(false, "call_error"); grpc_core::TraceFlag grpc_compression_trace(false, "compression"); @@ -112,168 +115,17 @@ grpc_core::DebugOnlyTraceFlag grpc_call_refcount_trace(false, "call_refcount"); namespace grpc_core { +// Alias to make this type available in Call implementation without a grpc_core +// prefix. +using GrpcClosure = Closure; + /////////////////////////////////////////////////////////////////////////////// // Call -class Call : public CppImplOf { - public: - Arena* arena() { return arena_; } - bool is_client() const { return is_client_; } - - virtual void ContextSet(grpc_context_index elem, void* value, - void (*destroy)(void* value)) = 0; - virtual void* ContextGet(grpc_context_index elem) const = 0; - virtual bool Completed() = 0; - void CancelWithStatus(grpc_status_code status, const char* description); - virtual void CancelWithError(grpc_error_handle error) = 0; - virtual void SetCompletionQueue(grpc_completion_queue* cq) = 0; - char* GetPeer(); - virtual grpc_call_error StartBatch(const grpc_op* ops, size_t nops, - void* notify_tag, - bool is_notify_tag_closure) = 0; - virtual bool failed_before_recv_message() const = 0; - virtual bool is_trailers_only() const = 0; - virtual absl::string_view GetServerAuthority() const = 0; - virtual void ExternalRef() = 0; - virtual void ExternalUnref() = 0; - virtual void InternalRef(const char* reason) = 0; - virtual void InternalUnref(const char* reason) = 0; - - grpc_compression_algorithm test_only_compression_algorithm() { - return incoming_compression_algorithm_; - } - uint32_t test_only_message_flags() { return test_only_last_message_flags_; } - CompressionAlgorithmSet encodings_accepted_by_peer() { - return encodings_accepted_by_peer_; - } - - // This should return nullptr for the promise stack (and alternative means - // for that functionality be invented) - virtual grpc_call_stack* call_stack() = 0; - - // Return the EventEngine used for this call's async execution. - virtual grpc_event_engine::experimental::EventEngine* event_engine() - const = 0; - - protected: - // The maximum number of concurrent batches possible. - // Based upon the maximum number of individually queueable ops in the batch - // api: - // - initial metadata send - // - message send - // - status/close send (depending on client/server) - // - initial metadata recv - // - message recv - // - status/close recv (depending on client/server) - static constexpr size_t kMaxConcurrentBatches = 6; - - struct ParentCall { - Mutex child_list_mu; - Call* first_child ABSL_GUARDED_BY(child_list_mu) = nullptr; - }; - - struct ChildCall { - explicit ChildCall(Call* parent) : parent(parent) {} - Call* parent; - /// siblings: children of the same parent form a list, and this list is - /// protected under - /// parent->mu - Call* sibling_next = nullptr; - Call* sibling_prev = nullptr; - }; - - Call(Arena* arena, bool is_client, Timestamp send_deadline, - RefCountedPtr channel) - : channel_(std::move(channel)), - arena_(arena), - send_deadline_(send_deadline), - is_client_(is_client) { - GPR_DEBUG_ASSERT(arena_ != nullptr); - GPR_DEBUG_ASSERT(channel_ != nullptr); - } - virtual ~Call() = default; - - void DeleteThis(); - - ParentCall* GetOrCreateParentCall(); - ParentCall* parent_call(); - Channel* channel() const { - GPR_DEBUG_ASSERT(channel_ != nullptr); - return channel_.get(); - } - - absl::Status InitParent(Call* parent, uint32_t propagation_mask); - void PublishToParent(Call* parent); - void MaybeUnpublishFromParent(); - void PropagateCancellationToChildren(); - - Timestamp send_deadline() const { return send_deadline_; } - void set_send_deadline(Timestamp send_deadline) { - send_deadline_ = send_deadline; - } - - Slice GetPeerString() const { - MutexLock lock(&peer_mu_); - return peer_string_.Ref(); - } - - void SetPeerString(Slice peer_string) { - MutexLock lock(&peer_mu_); - peer_string_ = std::move(peer_string); - } - - void ClearPeerString() { SetPeerString(Slice(grpc_empty_slice())); } - - // TODO(ctiller): cancel_func is for cancellation of the call - filter stack - // holds no mutexes here, promise stack does, and so locking is different. - // Remove this and cancel directly once promise conversion is done. - void ProcessIncomingInitialMetadata(grpc_metadata_batch& md); - // Fixup outgoing metadata before sending - adds compression, protects - // internal headers against external modification. - void PrepareOutgoingInitialMetadata(const grpc_op& op, - grpc_metadata_batch& md); - void NoteLastMessageFlags(uint32_t flags) { - test_only_last_message_flags_ = flags; - } - grpc_compression_algorithm incoming_compression_algorithm() const { - return incoming_compression_algorithm_; - } - - void HandleCompressionAlgorithmDisabled( - grpc_compression_algorithm compression_algorithm) GPR_ATTRIBUTE_NOINLINE; - void HandleCompressionAlgorithmNotAccepted( - grpc_compression_algorithm compression_algorithm) GPR_ATTRIBUTE_NOINLINE; - - gpr_cycle_counter start_time() const { return start_time_; } - - private: - RefCountedPtr channel_; - Arena* const arena_; - std::atomic parent_call_{nullptr}; - ChildCall* child_ = nullptr; - Timestamp send_deadline_; - const bool is_client_; - // flag indicating that cancellation is inherited - bool cancellation_is_inherited_ = false; - // Compression algorithm for *incoming* data - grpc_compression_algorithm incoming_compression_algorithm_ = - GRPC_COMPRESS_NONE; - // Supported encodings (compression algorithms), a bitset. - // Always support no compression. - CompressionAlgorithmSet encodings_accepted_by_peer_{GRPC_COMPRESS_NONE}; - uint32_t test_only_last_message_flags_ = 0; - // Peer name is protected by a mutex because it can be accessed by the - // application at the same moment as it is being set by the completion - // of the recv_initial_metadata op. The mutex should be mostly uncontended. - mutable Mutex peer_mu_; - Slice peer_string_; - gpr_cycle_counter start_time_ = gpr_get_cycle_counter(); -}; - Call::ParentCall* Call::GetOrCreateParentCall() { ParentCall* p = parent_call_.load(std::memory_order_acquire); if (p == nullptr) { - p = arena_->New(); + p = arena()->New(); ParentCall* expected = nullptr; if (!parent_call_.compare_exchange_strong(expected, p, std::memory_order_release, @@ -293,8 +145,8 @@ absl::Status Call::InitParent(Call* parent, uint32_t propagation_mask) { child_ = arena()->New(parent); parent->InternalRef("child"); - GPR_ASSERT(is_client_); - GPR_ASSERT(!parent->is_client_); + CHECK(is_client_); + CHECK(!parent->is_client_); if (propagation_mask & GRPC_PROPAGATE_DEADLINE) { send_deadline_ = std::min(send_deadline_, parent->send_deadline_); @@ -392,28 +244,6 @@ void Call::PropagateCancellationToChildren() { } } -char* Call::GetPeer() { - Slice peer_slice = GetPeerString(); - if (!peer_slice.empty()) { - absl::string_view peer_string_view = peer_slice.as_string_view(); - char* peer_string = - static_cast(gpr_malloc(peer_string_view.size() + 1)); - memcpy(peer_string, peer_string_view.data(), peer_string_view.size()); - peer_string[peer_string_view.size()] = '\0'; - return peer_string; - } - char* peer_string = grpc_channel_get_target(channel_->c_ptr()); - if (peer_string != nullptr) return peer_string; - return gpr_strdup("unknown"); -} - -void Call::DeleteThis() { - RefCountedPtr channel = std::move(channel_); - Arena* arena = arena_; - this->~Call(); - channel->DestroyArena(arena); -} - void Call::PrepareOutgoingInitialMetadata(const grpc_op& op, grpc_metadata_batch& md) { // TODO(juanlishen): If the user has already specified a compression @@ -428,7 +258,7 @@ void Call::PrepareOutgoingInitialMetadata(const grpc_op& op, op.data.send_initial_metadata.maybe_compression_level.level; level_set = true; } else { - const grpc_compression_options copts = channel()->compression_options(); + const grpc_compression_options copts = compression_options(); if (copts.default_level.is_set) { level_set = true; effective_compression_level = copts.default_level.level; @@ -460,18 +290,17 @@ void Call::ProcessIncomingInitialMetadata(grpc_metadata_batch& md) { md.Take(GrpcAcceptEncodingMetadata()) .value_or(CompressionAlgorithmSet{GRPC_COMPRESS_NONE}); - const grpc_compression_options compression_options = - channel_->compression_options(); + const grpc_compression_options copts = compression_options(); const grpc_compression_algorithm compression_algorithm = incoming_compression_algorithm_; - if (GPR_UNLIKELY(!CompressionAlgorithmSet::FromUint32( - compression_options.enabled_algorithms_bitset) - .IsSet(compression_algorithm))) { + if (GPR_UNLIKELY( + !CompressionAlgorithmSet::FromUint32(copts.enabled_algorithms_bitset) + .IsSet(compression_algorithm))) { // check if algorithm is supported by current channel config HandleCompressionAlgorithmDisabled(compression_algorithm); } // GRPC_COMPRESS_NONE is always set. - GPR_DEBUG_ASSERT(encodings_accepted_by_peer_.IsSet(GRPC_COMPRESS_NONE)); + DCHECK(encodings_accepted_by_peer_.IsSet(GRPC_COMPRESS_NONE)); if (GPR_UNLIKELY(!encodings_accepted_by_peer_.IsSet(compression_algorithm))) { if (GRPC_TRACE_FLAG_ENABLED(grpc_compression_trace)) { HandleCompressionAlgorithmNotAccepted(compression_algorithm); @@ -496,17 +325,116 @@ void Call::HandleCompressionAlgorithmDisabled( grpc_compression_algorithm_name(compression_algorithm, &algo_name); std::string error_msg = absl::StrFormat("Compression algorithm '%s' is disabled.", algo_name); - gpr_log(GPR_ERROR, "%s", error_msg.c_str()); + LOG(ERROR) << error_msg; CancelWithError(grpc_error_set_int(absl::UnimplementedError(error_msg), StatusIntProperty::kRpcStatus, GRPC_STATUS_UNIMPLEMENTED)); } +void Call::UpdateDeadline(Timestamp deadline) { + ReleasableMutexLock lock(&deadline_mu_); + if (grpc_call_trace.enabled()) { + gpr_log(GPR_DEBUG, "[call %p] UpdateDeadline from=%s to=%s", this, + deadline_.ToString().c_str(), deadline.ToString().c_str()); + } + if (deadline >= deadline_) return; + if (deadline < Timestamp::Now()) { + lock.Release(); + CancelWithError(grpc_error_set_int( + absl::DeadlineExceededError("Deadline Exceeded"), + StatusIntProperty::kRpcStatus, GRPC_STATUS_DEADLINE_EXCEEDED)); + return; + } + if (deadline_ != Timestamp::InfFuture()) { + if (!event_engine_->Cancel(deadline_task_)) return; + } else { + InternalRef("deadline"); + } + deadline_ = deadline; + deadline_task_ = event_engine_->RunAfter(deadline - Timestamp::Now(), this); +} + +void Call::ResetDeadline() { + { + MutexLock lock(&deadline_mu_); + if (deadline_ == Timestamp::InfFuture()) return; + if (!event_engine_->Cancel(deadline_task_)) return; + deadline_ = Timestamp::InfFuture(); + } + InternalUnref("deadline[reset]"); +} + +void Call::Run() { + ApplicationCallbackExecCtx callback_exec_ctx; + ExecCtx exec_ctx; + CancelWithError(grpc_error_set_int( + absl::DeadlineExceededError("Deadline Exceeded"), + StatusIntProperty::kRpcStatus, GRPC_STATUS_DEADLINE_EXCEEDED)); + InternalUnref("deadline[run]"); +} + +/////////////////////////////////////////////////////////////////////////////// +// ChannelBasedCall +// TODO(ctiller): once we remove the v2 client code this can be folded into +// FilterStackCall + +class ChannelBasedCall : public Call { + protected: + ChannelBasedCall(Arena* arena, bool is_client, Timestamp send_deadline, + RefCountedPtr channel) + : Call(is_client, send_deadline, channel->event_engine()), + arena_(arena), + channel_(std::move(channel)) { + DCHECK_NE(arena_, nullptr); + } + + Arena* arena() final { return arena_; } + + char* GetPeer() final { + Slice peer_slice = GetPeerString(); + if (!peer_slice.empty()) { + absl::string_view peer_string_view = peer_slice.as_string_view(); + char* peer_string = + static_cast(gpr_malloc(peer_string_view.size() + 1)); + memcpy(peer_string, peer_string_view.data(), peer_string_view.size()); + peer_string[peer_string_view.size()] = '\0'; + return peer_string; + } + char* peer_string = grpc_channel_get_target(channel_->c_ptr()); + if (peer_string != nullptr) return peer_string; + return gpr_strdup("unknown"); + } + + grpc_event_engine::experimental::EventEngine* event_engine() const override { + return channel_->event_engine(); + } + + grpc_compression_options compression_options() override { + return channel_->compression_options(); + } + + void DeleteThis() { + RefCountedPtr channel = std::move(channel_); + Arena* arena = arena_; + this->~ChannelBasedCall(); + channel->DestroyArena(arena); + } + + Channel* channel() const { return channel_.get(); } + + // Non-virtual arena accessor -- needed by PipeBasedCall + Arena* GetArena() { return arena_; } + + private: + Arena* const arena_; + RefCountedPtr channel_; +}; + /////////////////////////////////////////////////////////////////////////////// // FilterStackCall // To be removed once promise conversion is complete -class FilterStackCall final : public Call { +class FilterStackCall final : public ChannelBasedCall { public: ~FilterStackCall() override { for (int i = 0; i < GRPC_CONTEXT_COUNT; ++i) { @@ -535,10 +463,6 @@ class FilterStackCall final : public Call { GPR_ROUND_UP_TO_ALIGNMENT_SIZE(sizeof(*this))); } - grpc_event_engine::experimental::EventEngine* event_engine() const override { - return channel()->event_engine(); - } - grpc_call_element* call_elem(size_t idx) { return grpc_call_stack_element(call_stack(), idx); } @@ -566,7 +490,7 @@ class FilterStackCall final : public Call { bool is_trailers_only() const override { bool result = is_trailers_only_; - GPR_DEBUG_ASSERT(!result || recv_initial_metadata_.TransportSize() == 0); + DCHECK(!result || recv_initial_metadata_.TransportSize() == 0); return result; } @@ -660,7 +584,7 @@ class FilterStackCall final : public Call { PendingOpString(r & ~mask).c_str(), completion_data_.notify_tag.tag); } - GPR_ASSERT((r & mask) != 0); + CHECK_NE((r & mask), 0); return r == mask; } @@ -674,10 +598,12 @@ class FilterStackCall final : public Call { }; FilterStackCall(Arena* arena, const grpc_call_create_args& args) - : Call(arena, args.server_transport_data == nullptr, args.send_deadline, - args.channel->Ref()), + : ChannelBasedCall(arena, args.server_transport_data == nullptr, + args.send_deadline, args.channel->Ref()), cq_(args.cq), - stream_op_payload_(context_) {} + stream_op_payload_(context_) { + context_[GRPC_CONTEXT_CALL].value = this; + } static void ReleaseCall(void* call, grpc_error_handle); static void DestroyCall(void* call, grpc_error_handle); @@ -808,8 +734,8 @@ grpc_error_handle FilterStackCall::Create(grpc_call_create_args* args, Arena* arena = channel->CreateArena(); call = new (arena->Alloc(call_alloc_size)) FilterStackCall(arena, *args); - GPR_DEBUG_ASSERT(FromC(call->c_ptr()) == call); - GPR_DEBUG_ASSERT(FromCallStack(call->call_stack()) == call); + DCHECK(FromC(call->c_ptr()) == call); + DCHECK(FromCallStack(call->call_stack()) == call); *out_call = call->c_ptr(); grpc_slice path = grpc_empty_slice(); ScopedContext ctx(call); @@ -882,9 +808,9 @@ grpc_error_handle FilterStackCall::Create(grpc_call_create_args* args, call->CancelWithError(error); } if (args->cq != nullptr) { - GPR_ASSERT(args->pollset_set_alternative == nullptr && - "Only one of 'cq' and 'pollset_set_alternative' should be " - "non-nullptr."); + CHECK(args->pollset_set_alternative == nullptr) + << "Only one of 'cq' and 'pollset_set_alternative' should be " + "non-nullptr."; GRPC_CQ_INTERNAL_REF(args->cq, "bind"); call->pollent_ = grpc_polling_entity_create_from_pollset(grpc_cq_pollset(args->cq)); @@ -911,13 +837,17 @@ grpc_error_handle FilterStackCall::Create(grpc_call_create_args* args, } } + if (args->send_deadline != Timestamp::InfFuture()) { + call->UpdateDeadline(args->send_deadline); + } + CSliceUnref(path); return error; } void FilterStackCall::SetCompletionQueue(grpc_completion_queue* cq) { - GPR_ASSERT(cq); + CHECK(cq); if (grpc_polling_entity_pollset_set(&pollent_) != nullptr) { Crash("A pollset_set is already registered for this call."); @@ -967,7 +897,7 @@ void FilterStackCall::ExternalUnref() { MaybeUnpublishFromParent(); - GPR_ASSERT(!destroy_called_); + CHECK(!destroy_called_); destroy_called_ = true; bool cancel = gpr_atm_acq_load(&received_final_op_atm_) == 0; if (cancel) { @@ -1026,8 +956,13 @@ void FilterStackCall::CancelWithError(grpc_error_handle error) { if (!gpr_atm_rel_cas(&cancelled_with_error_, 0, 1)) { return; } + if (GRPC_TRACE_FLAG_ENABLED(grpc_call_error_trace)) { + gpr_log(GPR_INFO, "CancelWithError %s %s", is_client() ? "CLI" : "SVR", + StatusToString(error).c_str()); + } ClearPeerString(); InternalRef("termination"); + ResetDeadline(); // Inform the call combiner of the cancellation, so that it can cancel // any in-flight asynchronous actions that may be holding the call // combiner. This ensures that the cancel_stream batch can be sent @@ -1046,9 +981,10 @@ void FilterStackCall::CancelWithError(grpc_error_handle error) { void FilterStackCall::SetFinalStatus(grpc_error_handle error) { if (GRPC_TRACE_FLAG_ENABLED(grpc_call_error_trace)) { - gpr_log(GPR_DEBUG, "set_final_status %s %s", is_client() ? "CLI" : "SVR", + gpr_log(GPR_INFO, "set_final_status %s %s", is_client() ? "CLI" : "SVR", StatusToString(error).c_str()); } + ResetDeadline(); if (is_client()) { std::string status_details; grpc_error_get_status(error, send_deadline(), final_op_.client.status, @@ -1231,8 +1167,7 @@ void FilterStackCall::RecvTrailingFilter(grpc_metadata_batch* b, } else if (!is_client()) { SetFinalStatus(absl::OkStatus()); } else { - gpr_log(GPR_DEBUG, - "Received trailing metadata with no error and no status"); + VLOG(2) << "Received trailing metadata with no error and no status"; SetFinalStatus(grpc_error_set_int(GRPC_ERROR_CREATE("No status received"), StatusIntProperty::kRpcStatus, GRPC_STATUS_UNKNOWN)); @@ -1352,9 +1287,9 @@ void FilterStackCall::BatchControl::PostCompletion() { if (completion_data_.notify_tag.is_closure) { call_ = nullptr; - Closure::Run(DEBUG_LOCATION, - static_cast(completion_data_.notify_tag.tag), - error); + GrpcClosure::Run( + DEBUG_LOCATION, + static_cast(completion_data_.notify_tag.tag), error); call->InternalUnref("completion"); } else { grpc_cq_end_op( @@ -1452,7 +1387,7 @@ void FilterStackCall::BatchControl::ReceivingInitialMetadataReady( while (true) { gpr_atm rsr_bctlp = gpr_atm_acq_load(&call->recv_state_); // Should only receive initial metadata once - GPR_ASSERT(rsr_bctlp != 1); + CHECK_NE(rsr_bctlp, 1); if (rsr_bctlp == 0) { // We haven't seen initial metadata and messages before, thus initial // metadata is received first. @@ -1476,7 +1411,7 @@ void FilterStackCall::BatchControl::ReceivingInitialMetadataReady( } } if (saved_rsr_closure != nullptr) { - Closure::Run(DEBUG_LOCATION, saved_rsr_closure, error); + GrpcClosure::Run(DEBUG_LOCATION, saved_rsr_closure, error); } FinishStep(PendingOp::kRecvInitialMetadata); @@ -1506,7 +1441,7 @@ namespace { void EndOpImmediately(grpc_completion_queue* cq, void* notify_tag, bool is_notify_tag_closure) { if (!is_notify_tag_closure) { - GPR_ASSERT(grpc_cq_begin_op(cq, notify_tag)); + CHECK(grpc_cq_begin_op(cq, notify_tag)); grpc_cq_end_op( cq, notify_tag, absl::OkStatus(), [](void*, grpc_cq_completion* completion) { gpr_free(completion); }, @@ -1877,7 +1812,7 @@ grpc_call_error FilterStackCall::StartBatch(const grpc_op* ops, size_t nops, InternalRef("completion"); if (!is_notify_tag_closure) { - GPR_ASSERT(grpc_cq_begin_op(cq_, notify_tag)); + CHECK(grpc_cq_begin_op(cq_, notify_tag)); } bctl->set_pending_ops(pending_ops); @@ -1967,24 +1902,22 @@ bool ValidateMetadata(size_t count, grpc_metadata* metadata) { // PromiseBasedCall // Will be folded into Call once the promise conversion is done -class BasicPromiseBasedCall : public Call, - public Party, - public grpc_event_engine::experimental:: - EventEngine::Closure /* for deadlines */ { +class BasicPromiseBasedCall : public ChannelBasedCall, public Party { public: using Call::arena; BasicPromiseBasedCall(Arena* arena, uint32_t initial_external_refs, uint32_t initial_internal_refs, const grpc_call_create_args& args) - : Call(arena, args.server_transport_data == nullptr, args.send_deadline, - args.channel->Ref()), + : ChannelBasedCall(arena, args.server_transport_data == nullptr, + args.send_deadline, args.channel->Ref()), Party(initial_internal_refs), external_refs_(initial_external_refs), cq_(args.cq) { if (args.cq != nullptr) { GRPC_CQ_INTERNAL_REF(args.cq, "bind"); } + context_[GRPC_CONTEXT_CALL].value = this; } ~BasicPromiseBasedCall() override { @@ -1996,12 +1929,8 @@ class BasicPromiseBasedCall : public Call, } } - // Implementation of EventEngine::Closure, called when deadline expires - void Run() final; - virtual void OrphanCall() = 0; - virtual ServerCallContext* server_call_context() { return nullptr; } void SetCompletionQueue(grpc_completion_queue* cq) final { cq_ = cq; GRPC_CQ_INTERNAL_REF(cq, "bind"); @@ -2056,13 +1985,6 @@ class BasicPromiseBasedCall : public Call, return context_[elem].value; } - void UpdateDeadline(Timestamp deadline) ABSL_LOCKS_EXCLUDED(deadline_mu_); - void ResetDeadline() ABSL_LOCKS_EXCLUDED(deadline_mu_); - Timestamp deadline() { - MutexLock lock(&deadline_mu_); - return deadline_; - } - // Accept the stats from the context (call once we have proof the transport is // done with them). void AcceptTransportStatsFromContext() { @@ -2138,52 +2060,11 @@ class BasicPromiseBasedCall : public Call, // Contexts for various subsystems (security, tracing, ...). grpc_call_context_element context_[GRPC_CONTEXT_COUNT] = {}; grpc_call_stats final_stats_{}; - // Current deadline. - Mutex deadline_mu_; - Timestamp deadline_ ABSL_GUARDED_BY(deadline_mu_) = Timestamp::InfFuture(); - grpc_event_engine::experimental::EventEngine::TaskHandle ABSL_GUARDED_BY( - deadline_mu_) deadline_task_; Slice final_message_; grpc_status_code final_status_ = GRPC_STATUS_UNKNOWN; grpc_completion_queue* cq_; }; -void BasicPromiseBasedCall::UpdateDeadline(Timestamp deadline) { - MutexLock lock(&deadline_mu_); - if (grpc_call_trace.enabled()) { - gpr_log(GPR_DEBUG, "%s[call] UpdateDeadline from=%s to=%s", - DebugTag().c_str(), deadline_.ToString().c_str(), - deadline.ToString().c_str()); - } - if (deadline >= deadline_) return; - auto* const event_engine = channel()->event_engine(); - if (deadline_ != Timestamp::InfFuture()) { - if (!event_engine->Cancel(deadline_task_)) return; - } else { - InternalRef("deadline"); - } - deadline_ = deadline; - deadline_task_ = event_engine->RunAfter(deadline - Timestamp::Now(), this); -} - -void BasicPromiseBasedCall::ResetDeadline() { - { - MutexLock lock(&deadline_mu_); - if (deadline_ == Timestamp::InfFuture()) return; - auto* const event_engine = channel()->event_engine(); - if (!event_engine->Cancel(deadline_task_)) return; - deadline_ = Timestamp::InfFuture(); - } - InternalUnref("deadline[reset]"); -} - -void BasicPromiseBasedCall::Run() { - ApplicationCallbackExecCtx callback_exec_ctx; - ExecCtx exec_ctx; - CancelWithError(absl::DeadlineExceededError("Deadline exceeded")); - InternalUnref("deadline[run]"); -} - class PromiseBasedCall : public BasicPromiseBasedCall { public: PromiseBasedCall(Arena* arena, uint32_t initial_external_refs, @@ -2211,7 +2092,7 @@ class PromiseBasedCall : public BasicPromiseBasedCall { class Completion { public: Completion() : index_(kNullIndex) {} - ~Completion() { GPR_ASSERT(index_ == kNullIndex); } + ~Completion() { CHECK(index_ == kNullIndex); } explicit Completion(uint8_t index) : index_(index) {} Completion(const Completion& other) = delete; Completion& operator=(const Completion& other) = delete; @@ -2219,7 +2100,7 @@ class PromiseBasedCall : public BasicPromiseBasedCall { other.index_ = kNullIndex; } Completion& operator=(Completion&& other) noexcept { - GPR_ASSERT(index_ == kNullIndex); + CHECK(index_ == kNullIndex); index_ = other.index_; other.index_ = kNullIndex; return *this; @@ -2404,13 +2285,13 @@ class PromiseBasedCall : public BasicPromiseBasedCall { if (reason == PendingOp::kReceiveMessage) is_recv_message = true; auto prev = state.fetch_or(PendingOpBit(reason), std::memory_order_relaxed); - GPR_ASSERT((prev & PendingOpBit(reason)) == 0); + CHECK_EQ((prev & PendingOpBit(reason)), 0u); } CompletionState RemovePendingBit(PendingOp reason) { const uint32_t mask = ~PendingOpBit(reason); auto prev = state.fetch_and(mask, std::memory_order_acq_rel); - GPR_ASSERT((prev & PendingOpBit(reason)) != 0); + CHECK_NE((prev & PendingOpBit(reason)), 0u); switch (prev & mask) { case kOpFailed: return kFailure; @@ -2471,7 +2352,7 @@ grpc_error_handle MakePromiseBasedCall(grpc_call_create_args* args, auto* arena = channel->CreateArena(); PromiseBasedCall* call = arena->New(arena, args); *out_call = call->c_ptr(); - GPR_DEBUG_ASSERT(Call::FromC(*out_call) == call); + DCHECK(Call::FromC(*out_call) == call); return absl::OkStatus(); } @@ -2518,7 +2399,7 @@ PromiseBasedCall::Completion PromiseBasedCall::AddOpToCompletion( gpr_log(GPR_INFO, "%s[call] AddOpToCompletion %s %s", DebugTag().c_str(), CompletionString(completion).c_str(), PendingOpString(reason)); } - GPR_ASSERT(completion.has_value()); + CHECK(completion.has_value()); completion_info_[completion.index()].pending.AddPendingBit(reason); return Completion(completion.index()); } @@ -2545,7 +2426,7 @@ void PromiseBasedCall::FinishOpOnCompletion(Completion* completion, PendingOpString(reason)); } const uint8_t i = completion->TakeIndex(); - GPR_ASSERT(i < GPR_ARRAY_SIZE(completion_info_)); + CHECK(i < GPR_ARRAY_SIZE(completion_info_)); CompletionInfo::Pending& pending = completion_info_[i].pending; bool success; switch (pending.RemovePendingBit(reason)) { @@ -2679,16 +2560,6 @@ void CallContext::IncrementRefCount(const char* reason) { void CallContext::Unref(const char* reason) { call_->InternalUnref(reason); } -void CallContext::UpdateDeadline(Timestamp deadline) { - call_->UpdateDeadline(deadline); -} - -Timestamp CallContext::deadline() const { return call_->deadline(); } - -ServerCallContext* CallContext::server_call_context() { - return call_->server_call_context(); -} - RefCountedPtr CallContext::MakeCallSpine( CallArgs call_args) { return call_->MakeCallSpine(std::move(call_args)); @@ -2732,9 +2603,9 @@ class ClientPromiseBasedCall final : public PromiseBasedCall { : grpc_polling_entity{})) { global_stats().IncrementClientCallsCreated(); if (args->cq != nullptr) { - GPR_ASSERT(args->pollset_set_alternative == nullptr && - "Only one of 'cq' and 'pollset_set_alternative' should be " - "non-nullptr."); + CHECK(args->pollset_set_alternative == nullptr) + << "Only one of 'cq' and 'pollset_set_alternative' should be " + "non-nullptr."; } ScopedContext context(this); args->channel->channel_stack()->stats_plugin_group->AddClientCallTracers( @@ -2879,6 +2750,12 @@ class ClientPromiseBasedCall final : public PromiseBasedCall { return RefCountedPtr(this); } + ClientMetadata& UnprocessedClientInitialMetadata() override { + Crash("not for v2"); + } + + void V2HackToStartCallWithoutACallFilterStack() override {} + private: RefCount refs_; ClientPromiseBasedCall* const call_; @@ -2888,12 +2765,12 @@ class ClientPromiseBasedCall final : public PromiseBasedCall { Latch cancel_error_; Latch was_cancelled_latch_; }; - GPR_ASSERT(call_args.server_initial_metadata == - &server_initial_metadata_.sender); - GPR_ASSERT(call_args.client_to_server_messages == - &client_to_server_messages_.receiver); - GPR_ASSERT(call_args.server_to_client_messages == - &server_to_client_messages_.sender); + CHECK(call_args.server_initial_metadata == + &server_initial_metadata_.sender); + CHECK(call_args.client_to_server_messages == + &client_to_server_messages_.receiver); + CHECK(call_args.server_to_client_messages == + &server_to_client_messages_.sender); call_args.client_initial_metadata_outstanding.Complete(true); return MakeRefCounted( this, std::move(call_args.client_initial_metadata)); @@ -2926,12 +2803,12 @@ class ClientPromiseBasedCall final : public PromiseBasedCall { void PublishInitialMetadata(ServerMetadata* metadata); ClientMetadataHandle send_initial_metadata_; - Pipe server_initial_metadata_{arena()}; + Pipe server_initial_metadata_{GetArena()}; Latch server_trailing_metadata_; Latch cancel_error_; Latch polling_entity_; - Pipe client_to_server_messages_{arena()}; - Pipe server_to_client_messages_{arena()}; + Pipe client_to_server_messages_{GetArena()}; + Pipe server_to_client_messages_{GetArena()}; bool is_trailers_only_ = false; bool scheduled_receive_status_ = false; bool scheduled_send_close_ = false; @@ -3238,242 +3115,7 @@ void ClientPromiseBasedCall::StartRecvStatusOnClient( #endif /////////////////////////////////////////////////////////////////////////////// -// ServerPromiseBasedCall - -#ifdef GRPC_EXPERIMENT_IS_INCLUDED_PROMISE_BASED_SERVER_CALL - -class ServerPromiseBasedCall final : public PromiseBasedCall, - public ServerCallContext { - public: - ServerPromiseBasedCall(Arena* arena, grpc_call_create_args* args); - - void OrphanCall() override {} - void CancelWithError(grpc_error_handle) override; - grpc_call_error StartBatch(const grpc_op* ops, size_t nops, void* notify_tag, - bool is_notify_tag_closure) override; - bool is_trailers_only() const override { - Crash("is_trailers_only not implemented for server calls"); - } - absl::string_view GetServerAuthority() const override { - const Slice* authority_metadata = - client_initial_metadata_->get_pointer(HttpAuthorityMetadata()); - if (authority_metadata == nullptr) return ""; - return authority_metadata->as_string_view(); - } - - // Polling order for the server promise stack: - // - // │ ┌───────────────────────────────────────┐ - // │ │ ServerPromiseBasedCall ├──► Lifetime management - // │ ├───────────────────────────────────────┤ - // │ │ ConnectedChannel ├─┐ - // │ ├───────────────────────────────────────┤ └► Interactions with the - // │ │ ... closest to transport filter │ transport - send/recv msgs - // │ ├───────────────────────────────────────┤ and metadata, call phase - // │ │ ... │ ordering - // │ ├───────────────────────────────────────┤ - // │ │ ... closest to app filter │ ┌► Request matching, initial - // │ ├───────────────────────────────────────┤ │ setup, publishing call to - // │ │ Server::ChannelData::MakeCallPromise ├─┘ application - // │ ├───────────────────────────────────────┤ - // │ │ MakeTopOfServerCallPromise ├──► Send trailing metadata - // ▼ └───────────────────────────────────────┘ - // Polling & - // instantiation - // order - - std::string DebugTag() const override { - return absl::StrFormat("SERVER_CALL[%p]: ", this); - } - - ServerCallContext* server_call_context() override { return this; } - - const void* server_stream_data() override { return server_transport_data_; } - void PublishInitialMetadata( - ClientMetadataHandle metadata, - grpc_metadata_array* publish_initial_metadata) override; - ArenaPromise MakeTopOfServerCallPromise( - CallArgs call_args, grpc_completion_queue* cq, - absl::FunctionRef publish) override; - - private: - class RecvCloseOpCancelState { - public: - // Request that receiver be filled in per - // grpc_op_recv_close_on_server. Returns true if the request can - // be fulfilled immediately. Returns false if the request will be - // fulfilled later. - bool ReceiveCloseOnServerOpStarted(int* receiver) { - uintptr_t state = state_.load(std::memory_order_acquire); - uintptr_t new_state; - do { - switch (state) { - case kUnset: - new_state = reinterpret_cast(receiver); - break; - case kFinishedWithFailure: - *receiver = 1; - return true; - case kFinishedWithSuccess: - *receiver = 0; - return true; - default: - Crash("Two threads offered ReceiveCloseOnServerOpStarted"); - } - } while (!state_.compare_exchange_weak(state, new_state, - std::memory_order_acq_rel, - std::memory_order_acquire)); - return false; - } - - // Mark the call as having completed. - // Returns true if this finishes a previous - // RequestReceiveCloseOnServer. - bool CompleteCallWithCancelledSetTo(bool cancelled) { - uintptr_t state = state_.load(std::memory_order_acquire); - uintptr_t new_state; - bool r; - do { - switch (state) { - case kUnset: - new_state = cancelled ? kFinishedWithFailure : kFinishedWithSuccess; - r = false; - break; - case kFinishedWithFailure: - return false; - case kFinishedWithSuccess: - Crash("unreachable"); - default: - new_state = cancelled ? kFinishedWithFailure : kFinishedWithSuccess; - r = true; - } - } while (!state_.compare_exchange_weak(state, new_state, - std::memory_order_acq_rel, - std::memory_order_acquire)); - if (r) *reinterpret_cast(state) = cancelled ? 1 : 0; - return r; - } - - std::string ToString() const { - auto state = state_.load(std::memory_order_relaxed); - switch (state) { - case kUnset: - return "Unset"; - case kFinishedWithFailure: - return "FinishedWithFailure"; - case kFinishedWithSuccess: - return "FinishedWithSuccess"; - default: - return absl::StrFormat("WaitingForReceiver(%p)", - reinterpret_cast(state)); - } - } - - private: - static constexpr uintptr_t kUnset = 0; - static constexpr uintptr_t kFinishedWithFailure = 1; - static constexpr uintptr_t kFinishedWithSuccess = 2; - // Holds one of kUnset, kFinishedWithFailure, or - // kFinishedWithSuccess OR an int* that wants to receive the - // final status. - std::atomic state_{kUnset}; - }; - - void CommitBatch(const grpc_op* ops, size_t nops, - const Completion& completion); - void Finish(ServerMetadataHandle result); - - ServerInterface* const server_; - const void* const server_transport_data_; - PipeSender* server_initial_metadata_ = nullptr; - PipeSender* server_to_client_messages_ = nullptr; - PipeReceiver* client_to_server_messages_ = nullptr; - Latch send_trailing_metadata_; - RecvCloseOpCancelState recv_close_op_cancel_state_; - ClientMetadataHandle client_initial_metadata_; - Completion recv_close_completion_; - std::atomic cancelled_{false}; -}; - -ServerPromiseBasedCall::ServerPromiseBasedCall(Arena* arena, - grpc_call_create_args* args) - : PromiseBasedCall(arena, 0, *args), - server_(args->server), - server_transport_data_(args->server_transport_data) { - global_stats().IncrementServerCallsCreated(); - channelz::ServerNode* channelz_node = server_->channelz_node(); - if (channelz_node != nullptr) { - channelz_node->RecordCallStarted(); - } - ScopedContext activity_context(this); - // TODO(yashykt): In the future, we want to also enable stats and trace - // collecting from when the call is created at the transport. The idea is that - // the transport would create the call tracer and pass it in as part of the - // metadata. - // TODO(yijiem): OpenCensus and internal Census is still using this way to - // set server call tracer. We need to refactor them to stats plugins - // (including removing the client channel filters). - if (args->server != nullptr && - args->server->server_call_tracer_factory() != nullptr) { - auto* server_call_tracer = - args->server->server_call_tracer_factory()->CreateNewServerCallTracer( - arena, args->server->channel_args()); - if (server_call_tracer != nullptr) { - // Note that we are setting both - // GRPC_CONTEXT_CALL_TRACER_ANNOTATION_INTERFACE and - // GRPC_CONTEXT_CALL_TRACER as a matter of convenience. In the future - // promise-based world, we would just a single tracer object for each - // stack (call, subchannel_call, server_call.) - ContextSet(GRPC_CONTEXT_CALL_TRACER_ANNOTATION_INTERFACE, - server_call_tracer, nullptr); - ContextSet(GRPC_CONTEXT_CALL_TRACER, server_call_tracer, nullptr); - } - } - args->channel->channel_stack()->stats_plugin_group->AddServerCallTracers( - context()); - Spawn("server_promise", - channel()->channel_stack()->MakeServerCallPromise( - CallArgs{nullptr, ClientInitialMetadataOutstandingToken::Empty(), - nullptr, nullptr, nullptr, nullptr}), - [this](ServerMetadataHandle result) { Finish(std::move(result)); }); -} - -void ServerPromiseBasedCall::Finish(ServerMetadataHandle result) { - if (grpc_call_trace.enabled()) { - gpr_log(GPR_INFO, "%s[call] Finish: recv_close_state:%s result:%s", - DebugTag().c_str(), recv_close_op_cancel_state_.ToString().c_str(), - result->DebugString().c_str()); - } - const auto status = - result->get(GrpcStatusMetadata()).value_or(GRPC_STATUS_UNKNOWN); - channelz::ServerNode* channelz_node = server_->channelz_node(); - if (channelz_node != nullptr) { - if (status == GRPC_STATUS_OK) { - channelz_node->RecordCallSucceeded(); - } else { - channelz_node->RecordCallFailed(); - } - } - bool was_cancelled = result->get(GrpcCallWasCancelled()).value_or(true); - if (recv_close_op_cancel_state_.CompleteCallWithCancelledSetTo( - was_cancelled)) { - FinishOpOnCompletion(&recv_close_completion_, - PendingOp::kReceiveCloseOnServer); - } - if (was_cancelled) set_failed_before_recv_message(); - if (server_initial_metadata_ != nullptr) { - server_initial_metadata_->Close(); - } - Slice message_slice; - if (Slice* message = result->get_pointer(GrpcMessageMetadata())) { - message_slice = message->Ref(); - } - AcceptTransportStatsFromContext(); - SetFinalizationStatus(status, std::move(message_slice)); - set_completed(); - ResetDeadline(); - PropagateCancellationToChildren(); -} +// CallSpine based Server Call grpc_call_error ValidateServerBatch(const grpc_op* ops, size_t nops) { BitSet<8> got_ops; @@ -3517,229 +3159,33 @@ grpc_call_error ValidateServerBatch(const grpc_op* ops, size_t nops) { return GRPC_CALL_OK; } -void ServerPromiseBasedCall::CommitBatch(const grpc_op* ops, size_t nops, - const Completion& completion) { - Party::BulkSpawner spawner(this); - for (size_t op_idx = 0; op_idx < nops; op_idx++) { - const grpc_op& op = ops[op_idx]; - switch (op.op) { - case GRPC_OP_SEND_INITIAL_METADATA: { - auto metadata = arena()->MakePooled(); - PrepareOutgoingInitialMetadata(op, *metadata); - CToMetadata(op.data.send_initial_metadata.metadata, - op.data.send_initial_metadata.count, metadata.get()); - if (grpc_call_trace.enabled()) { - gpr_log(GPR_INFO, "%s[call] Send initial metadata", - DebugTag().c_str()); - } - QueueSend(); - spawner.Spawn( - "call_send_initial_metadata", - [this, metadata = std::move(metadata)]() mutable { - EnactSend(); - return server_initial_metadata_->Push(std::move(metadata)); - }, - [this, - completion = AddOpToCompletion( - completion, PendingOp::kSendInitialMetadata)](bool r) mutable { - if (!r) { - set_failed_before_recv_message(); - FailCompletion(completion); - } - FinishOpOnCompletion(&completion, - PendingOp::kSendInitialMetadata); - }); - } break; - case GRPC_OP_SEND_MESSAGE: - StartSendMessage(op, completion, server_to_client_messages_, spawner); - break; - case GRPC_OP_RECV_MESSAGE: - if (cancelled_.load(std::memory_order_relaxed)) { - set_failed_before_recv_message(); - FailCompletion(completion); - break; - } - StartRecvMessage( - op, completion, []() { return []() { return Empty{}; }; }, - client_to_server_messages_, true, spawner); - break; - case GRPC_OP_SEND_STATUS_FROM_SERVER: { - auto metadata = arena()->MakePooled(); - CToMetadata(op.data.send_status_from_server.trailing_metadata, - op.data.send_status_from_server.trailing_metadata_count, - metadata.get()); - metadata->Set(GrpcStatusMetadata(), - op.data.send_status_from_server.status); - if (auto* details = op.data.send_status_from_server.status_details) { - // TODO(ctiller): this should not be a copy, but we have callers that - // allocate and pass in a slice created with - // grpc_slice_from_static_string and then delete the string after - // passing it in, which shouldn't be a supported API. - metadata->Set(GrpcMessageMetadata(), - Slice(grpc_slice_copy(*details))); - } - spawner.Spawn( - "call_send_status_from_server", - [this, metadata = std::move(metadata)]() mutable { - bool r = true; - if (send_trailing_metadata_.is_set()) { - r = false; - } else { - send_trailing_metadata_.Set(std::move(metadata)); - } - return Map(WaitForSendingStarted(), [this, r](Empty) { - server_initial_metadata_->Close(); - server_to_client_messages_->Close(); - return r; - }); - }, - [this, completion = AddOpToCompletion( - completion, PendingOp::kSendStatusFromServer)]( - bool ok) mutable { - if (!ok) { - set_failed_before_recv_message(); - FailCompletion(completion); - } - FinishOpOnCompletion(&completion, - PendingOp::kSendStatusFromServer); - }); - } break; - case GRPC_OP_RECV_CLOSE_ON_SERVER: - if (grpc_call_trace.enabled()) { - gpr_log(GPR_INFO, "%s[call] StartBatch: RecvClose %s", - DebugTag().c_str(), - recv_close_op_cancel_state_.ToString().c_str()); - } - ForceCompletionSuccess(completion); - recv_close_completion_ = - AddOpToCompletion(completion, PendingOp::kReceiveCloseOnServer); - if (recv_close_op_cancel_state_.ReceiveCloseOnServerOpStarted( - op.data.recv_close_on_server.cancelled)) { - FinishOpOnCompletion(&recv_close_completion_, - PendingOp::kReceiveCloseOnServer); - } - break; - case GRPC_OP_RECV_STATUS_ON_CLIENT: - case GRPC_OP_SEND_CLOSE_FROM_CLIENT: - case GRPC_OP_RECV_INITIAL_METADATA: - abort(); // unreachable - } - } -} - -grpc_call_error ServerPromiseBasedCall::StartBatch(const grpc_op* ops, - size_t nops, - void* notify_tag, - bool is_notify_tag_closure) { - if (nops == 0) { - EndOpImmediately(cq(), notify_tag, is_notify_tag_closure); - return GRPC_CALL_OK; - } - const grpc_call_error validation_result = ValidateServerBatch(ops, nops); - if (validation_result != GRPC_CALL_OK) { - return validation_result; - } - Completion completion = - StartCompletion(notify_tag, is_notify_tag_closure, ops); - CommitBatch(ops, nops, completion); - FinishOpOnCompletion(&completion, PendingOp::kStartingBatch); - return GRPC_CALL_OK; -} - -void ServerPromiseBasedCall::CancelWithError(absl::Status error) { - cancelled_.store(true, std::memory_order_relaxed); - Spawn( - "cancel_with_error", - [this, error = std::move(error)]() { - if (!send_trailing_metadata_.is_set()) { - auto md = ServerMetadataFromStatus(error); - md->Set(GrpcCallWasCancelled(), true); - send_trailing_metadata_.Set(std::move(md)); - } - if (server_to_client_messages_ != nullptr) { - server_to_client_messages_->Close(); - } - if (server_initial_metadata_ != nullptr) { - server_initial_metadata_->Close(); - } - return Empty{}; - }, - [](Empty) {}); -} -#endif - -#ifdef GRPC_EXPERIMENT_IS_INCLUDED_PROMISE_BASED_SERVER_CALL -void ServerPromiseBasedCall::PublishInitialMetadata( - ClientMetadataHandle metadata, - grpc_metadata_array* publish_initial_metadata) { - if (grpc_call_trace.enabled()) { - gpr_log(GPR_INFO, "%s[call] PublishInitialMetadata: %s", DebugTag().c_str(), - metadata->DebugString().c_str()); - } - PublishMetadataArray(metadata.get(), publish_initial_metadata, false); - client_initial_metadata_ = std::move(metadata); -} - -ArenaPromise -ServerPromiseBasedCall::MakeTopOfServerCallPromise( - CallArgs call_args, grpc_completion_queue* cq, - absl::FunctionRef publish) { - SetCompletionQueue(cq); - call_args.polling_entity->Set( - grpc_polling_entity_create_from_pollset(grpc_cq_pollset(cq))); - server_to_client_messages_ = call_args.server_to_client_messages; - client_to_server_messages_ = call_args.client_to_server_messages; - server_initial_metadata_ = call_args.server_initial_metadata; - set_send_deadline(deadline()); - ProcessIncomingInitialMetadata(*client_initial_metadata_); - ExternalRef(); - publish(c_ptr()); - return Seq(server_to_client_messages_->AwaitClosed(), - send_trailing_metadata_.Wait()); -} - -/////////////////////////////////////////////////////////////////////////////// -// CallSpine based Server Call - -class ServerCallSpine final : public PipeBasedCallSpine, - public ServerCallContext, - public BasicPromiseBasedCall { +class ServerCall final : public Call, public DualRefCounted { public: - ServerCallSpine(ClientMetadataHandle client_initial_metadata, - ServerInterface* server, Channel* channel, Arena* arena); - - // CallSpineInterface - Pipe& client_initial_metadata() override { - return client_initial_metadata_; - } - Pipe& server_initial_metadata() override { - return server_initial_metadata_; - } - Pipe& client_to_server_messages() override { - return client_to_server_messages_; - } - Pipe& server_to_client_messages() override { - return server_to_client_messages_; + ServerCall(ClientMetadataHandle client_initial_metadata, + CallHandler call_handler, ServerInterface* server, + grpc_completion_queue* cq) + : Call(false, + client_initial_metadata->get(GrpcTimeoutMetadata()) + .value_or(Timestamp::InfFuture()), + call_handler.event_engine()), + call_handler_(std::move(call_handler)), + client_initial_metadata_stored_(std::move(client_initial_metadata)), + cq_(cq), + server_(server) { + call_handler_.legacy_context()[GRPC_CONTEXT_CALL].value = + static_cast(this); + global_stats().IncrementServerCallsCreated(); } - Latch& cancel_latch() override { return cancel_latch_; } - Latch& was_cancelled_latch() override { return was_cancelled_latch_; } - Party& party() override { return *this; } - Arena* arena() override { return BasicPromiseBasedCall::arena(); } - void IncrementRefCount() override { InternalRef("CallSpine"); } - void Unref() override { InternalUnref("CallSpine"); } - // PromiseBasedCall - void OrphanCall() override { - ResetDeadline(); - CancelWithError(absl::CancelledError()); - } void CancelWithError(grpc_error_handle error) override { - SpawnInfallible("CancelWithError", [this, error = std::move(error)] { - auto status = ServerMetadataFromStatus(error); - status->Set(GrpcCallWasCancelled(), true); - PushServerTrailingMetadata(std::move(status)); - return Empty{}; - }); + call_handler_.SpawnInfallible( + "CancelWithError", + [self = WeakRefAsSubclass(), error = std::move(error)] { + auto status = ServerMetadataFromStatus(error); + status->Set(GrpcCallWasCancelled(), true); + self->call_handler_.PushServerTrailingMetadata(std::move(status)); + return Empty{}; + }); } bool is_trailers_only() const override { Crash("is_trailers_only not implemented for server calls"); @@ -3750,96 +3196,78 @@ class ServerCallSpine final : public PipeBasedCallSpine, grpc_call_error StartBatch(const grpc_op* ops, size_t nops, void* notify_tag, bool is_notify_tag_closure) override; - bool Completed() final { Crash("unimplemented"); } - bool failed_before_recv_message() const final { Crash("unimplemented"); } + Arena* arena() override { return call_handler_.arena(); } + + grpc_event_engine::experimental::EventEngine* event_engine() const override { + return call_handler_.event_engine(); + } + + void ExternalRef() override { Ref().release(); } + void ExternalUnref() override { Unref(); } + void InternalRef(const char*) override { WeakRef().release(); } + void InternalUnref(const char*) override { WeakUnref(); } + + void Orphaned() override { + // TODO(ctiller): only when we're not already finished + CancelWithError(absl::CancelledError()); + } + + void ContextSet(grpc_context_index elem, void* value, + void (*destroy)(void*)) override { + call_handler_.legacy_context()[elem] = + grpc_call_context_element{value, destroy}; + } - ServerCallContext* server_call_context() override { return this; } - const void* server_stream_data() override { Crash("unimplemented"); } - void PublishInitialMetadata( - ClientMetadataHandle metadata, - grpc_metadata_array* publish_initial_metadata) override; - ArenaPromise MakeTopOfServerCallPromise( - CallArgs, grpc_completion_queue*, - absl::FunctionRef) override { + void* ContextGet(grpc_context_index elem) const override { + return call_handler_.legacy_context()[elem].value; + } + + void SetCompletionQueue(grpc_completion_queue*) override { Crash("unimplemented"); } - bool RunParty() override { - ScopedContext ctx(this); - return Party::RunParty(); + grpc_compression_options compression_options() override { + return server_->compression_options(); + } + + grpc_call_stack* call_stack() override { return nullptr; } + + char* GetPeer() override { + Slice peer_slice = GetPeerString(); + if (!peer_slice.empty()) { + absl::string_view peer_string_view = peer_slice.as_string_view(); + char* peer_string = + static_cast(gpr_malloc(peer_string_view.size() + 1)); + memcpy(peer_string, peer_string_view.data(), peer_string_view.size()); + peer_string[peer_string_view.size()] = '\0'; + return peer_string; + } + return gpr_strdup("unknown"); } + bool Completed() final { Crash("unimplemented"); } + bool failed_before_recv_message() const final { Crash("unimplemented"); } + private: void CommitBatch(const grpc_op* ops, size_t nops, void* notify_tag, bool is_notify_tag_closure); - StatusFlag FinishRecvMessage(NextResult result); + StatusFlag FinishRecvMessage( + ValueOrFailure> result); - std::string DebugTag() const override { - return absl::StrFormat("SERVER_CALL_SPINE[%p]: ", this); - } - - // Initial metadata from client to server - Pipe client_initial_metadata_; - // Initial metadata from server to client - Pipe server_initial_metadata_; - // Messages travelling from the application to the transport. - Pipe client_to_server_messages_; - // Messages travelling from the transport to the application. - Pipe server_to_client_messages_; - // Latch that can be set to terminate the call - Latch cancel_latch_; - Latch was_cancelled_latch_; + std::string DebugTag() { return absl::StrFormat("SERVER_CALL[%p]: ", this); } + + CallHandler call_handler_; grpc_byte_buffer** recv_message_ = nullptr; ClientMetadataHandle client_initial_metadata_stored_; + grpc_completion_queue* const cq_; + ServerInterface* const server_; }; -ServerCallSpine::ServerCallSpine(ClientMetadataHandle client_initial_metadata, - ServerInterface* server, Channel* channel, - Arena* arena) - : BasicPromiseBasedCall(arena, 0, 1, - [channel, server]() -> grpc_call_create_args { - grpc_call_create_args args; - args.channel = channel->Ref(); - args.server = server; - args.parent = nullptr; - args.propagation_mask = 0; - args.cq = nullptr; - args.pollset_set_alternative = nullptr; - args.server_transport_data = - &args; // Arbitrary non-null pointer - args.send_deadline = Timestamp::InfFuture(); - return args; - }()), - client_initial_metadata_(arena), - server_initial_metadata_(arena), - client_to_server_messages_(arena), - server_to_client_messages_(arena) { - global_stats().IncrementServerCallsCreated(); - ScopedContext ctx(this); - channel->channel_stack()->InitServerCallSpine(this); - SpawnGuarded("push_client_initial_metadata", - [this, md = std::move(client_initial_metadata)]() mutable { - return Map(client_initial_metadata_.sender.Push(std::move(md)), - [](bool r) { return StatusFlag(r); }); - }); -} - -void ServerCallSpine::PublishInitialMetadata( - ClientMetadataHandle metadata, - grpc_metadata_array* publish_initial_metadata) { - if (grpc_call_trace.enabled()) { - gpr_log(GPR_INFO, "%s[call] PublishInitialMetadata: %s", DebugTag().c_str(), - metadata->DebugString().c_str()); - } - PublishMetadataArray(metadata.get(), publish_initial_metadata, false); - client_initial_metadata_stored_ = std::move(metadata); -} - -grpc_call_error ServerCallSpine::StartBatch(const grpc_op* ops, size_t nops, - void* notify_tag, - bool is_notify_tag_closure) { +grpc_call_error ServerCall::StartBatch(const grpc_op* ops, size_t nops, + void* notify_tag, + bool is_notify_tag_closure) { if (nops == 0) { - EndOpImmediately(cq(), notify_tag, is_notify_tag_closure); + EndOpImmediately(cq_, notify_tag, is_notify_tag_closure); return GRPC_CALL_OK; } const grpc_call_error validation_result = ValidateServerBatch(ops, nops); @@ -3851,63 +3279,86 @@ grpc_call_error ServerCallSpine::StartBatch(const grpc_op* ops, size_t nops, } namespace { -template +template class MaybeOpImpl { public: - using SetupResult = decltype(std::declval()(grpc_op())); using PromiseFactory = promise_detail::OncePromiseFactory; using Promise = typename PromiseFactory::Promise; - struct Dismissed {}; - using State = absl::variant; + static_assert(!std::is_same::value, + "PromiseFactory must return a promise"); - // op_ is garbage but shouldn't be uninitialized - MaybeOpImpl() : state_(Dismissed{}), op_(GRPC_OP_RECV_STATUS_ON_CLIENT) {} - MaybeOpImpl(SetupResult result, grpc_op_type op) - : state_(PromiseFactory(std::move(result))), op_(op) {} + MaybeOpImpl() : state_(State::kDismissed) {} + explicit MaybeOpImpl(SetupResult result) : state_(State::kPromiseFactory) { + Construct(&promise_factory_, std::move(result)); + } + + ~MaybeOpImpl() { + switch (state_) { + case State::kDismissed: + break; + case State::kPromiseFactory: + Destruct(&promise_factory_); + break; + case State::kPromise: + Destruct(&promise_); + break; + } + } MaybeOpImpl(const MaybeOpImpl&) = delete; MaybeOpImpl& operator=(const MaybeOpImpl&) = delete; - MaybeOpImpl(MaybeOpImpl&& other) noexcept - : state_(MoveState(other.state_)), op_(other.op_) {} - MaybeOpImpl& operator=(MaybeOpImpl&& other) noexcept { - op_ = other.op_; - if (absl::holds_alternative(state_)) { - state_.template emplace(); - return *this; + MaybeOpImpl(MaybeOpImpl&& other) noexcept : state_(other.state_) { + switch (state_) { + case State::kDismissed: + break; + case State::kPromiseFactory: + Construct(&promise_factory_, std::move(other.promise_factory_)); + break; + case State::kPromise: + Construct(&promise_, std::move(other.promise_)); + break; } - // Can't move after first poll => Promise is not an option - state_.template emplace( - std::move(absl::get(other.state_))); - return *this; } + MaybeOpImpl& operator=(MaybeOpImpl&& other) noexcept = delete; Poll operator()() { - if (absl::holds_alternative(state_)) return Success{}; - if (absl::holds_alternative(state_)) { - auto& factory = absl::get(state_); - auto promise = factory.Make(); - state_.template emplace(std::move(promise)); - } - if (grpc_call_trace.enabled()) { - gpr_log(GPR_INFO, "%sBeginPoll %s", - Activity::current()->DebugTag().c_str(), OpName(op_).c_str()); - } - auto& promise = absl::get(state_); - auto r = poll_cast(promise()); - if (grpc_call_trace.enabled()) { - gpr_log(GPR_INFO, "%sEndPoll %s --> %s", - Activity::current()->DebugTag().c_str(), OpName(op_).c_str(), + switch (state_) { + case State::kDismissed: + return Success{}; + case State::kPromiseFactory: { + auto promise = promise_factory_.Make(); + Destruct(&promise_factory_); + Construct(&promise_, std::move(promise)); + state_ = State::kPromise; + } + ABSL_FALLTHROUGH_INTENDED; + case State::kPromise: { + if (grpc_call_trace.enabled()) { + gpr_log(GPR_INFO, "%sBeginPoll %s", + Activity::current()->DebugTag().c_str(), OpName()); + } + auto r = poll_cast(promise_()); + if (grpc_call_trace.enabled()) { + gpr_log( + GPR_INFO, "%sEndPoll %s --> %s", + Activity::current()->DebugTag().c_str(), OpName(), r.pending() ? "PENDING" : (r.value().ok() ? "OK" : "FAILURE")); + } + return r; + } } - return r; + GPR_UNREACHABLE_CODE(return Pending{}); } private: - GPR_NO_UNIQUE_ADDRESS State state_; - GPR_NO_UNIQUE_ADDRESS grpc_op_type op_; + enum class State { + kDismissed, + kPromiseFactory, + kPromise, + }; - static std::string OpName(grpc_op_type op) { - switch (op) { + static const char* OpName() { + switch (kOp) { case GRPC_OP_SEND_INITIAL_METADATA: return "SendInitialMetadata"; case GRPC_OP_SEND_MESSAGE: @@ -3925,30 +3376,34 @@ class MaybeOpImpl { case GRPC_OP_RECV_STATUS_ON_CLIENT: return "RecvStatusOnClient"; } - return absl::StrCat("UnknownOp(", op, ")"); + Crash("Unreachable"); } - static State MoveState(State& state) { - if (absl::holds_alternative(state)) return Dismissed{}; - // Can't move after first poll => Promise is not an option - return std::move(absl::get(state)); - } + // gcc-12 has problems with this being a variant + GPR_NO_UNIQUE_ADDRESS State state_; + union { + PromiseFactory promise_factory_; + Promise promise_; + }; }; -// MaybeOp captures a fairly complicated dance we need to do for the batch API. -// We first check if an op is included or not, and if it is, we run the setup -// function in the context of the API call (NOT in the call party). -// This setup function returns a promise factory which we'll then run *in* the +// MaybeOp captures a fairly complicated dance we need to do for the batch +// API. We first check if an op is included or not, and if it is, we run the +// setup function in the context of the API call (NOT in the call party). This +// setup function returns a promise factory which we'll then run *in* the // party to do initial setup, and have it return the promise that we'll // ultimately poll on til completion. // Once we express our surface API in terms of core internal types this whole // dance will go away. -template -auto MaybeOp(const grpc_op* ops, uint8_t idx, SetupFn setup) { - if (idx == 255) { - return MaybeOpImpl(); +template +auto MaybeOp(const grpc_op* ops, const std::array& idxs, + SetupFn setup) { + using SetupResult = decltype(std::declval()(grpc_op())); + if (idxs[op_type] == 255) { + return MaybeOpImpl(); } else { - return MaybeOpImpl(setup(ops[idx]), ops[idx].op); + auto r = setup(ops[idxs[op_type]]); + return MaybeOpImpl(std::move(r)); } } @@ -3986,63 +3441,61 @@ PollBatchLogger LogPollBatch(void* tag, F f) { } } // namespace -StatusFlag ServerCallSpine::FinishRecvMessage( - NextResult result) { - if (result.has_value()) { - MessageHandle& message = *result; - NoteLastMessageFlags(message->flags()); - if ((message->flags() & GRPC_WRITE_INTERNAL_COMPRESS) && - (incoming_compression_algorithm() != GRPC_COMPRESS_NONE)) { - *recv_message_ = grpc_raw_compressed_byte_buffer_create( - nullptr, 0, incoming_compression_algorithm()); - } else { - *recv_message_ = grpc_raw_byte_buffer_create(nullptr, 0); - } - grpc_slice_buffer_move_into(message->payload()->c_slice_buffer(), - &(*recv_message_)->data.raw.slice_buffer); +StatusFlag ServerCall::FinishRecvMessage( + ValueOrFailure> result) { + if (!result.ok()) { if (grpc_call_trace.enabled()) { gpr_log(GPR_INFO, "%s[call] RecvMessage: outstanding_recv " - "finishes: received %" PRIdPTR " byte message", - DebugTag().c_str(), - (*recv_message_)->data.raw.slice_buffer.length); + "finishes: received end-of-stream with error", + DebugTag().c_str()); } + *recv_message_ = nullptr; recv_message_ = nullptr; - return Success{}; + return Failure{}; } - if (result.cancelled()) { + if (!result->has_value()) { if (grpc_call_trace.enabled()) { gpr_log(GPR_INFO, "%s[call] RecvMessage: outstanding_recv " - "finishes: received end-of-stream with error", + "finishes: received end-of-stream", DebugTag().c_str()); } *recv_message_ = nullptr; recv_message_ = nullptr; - return Failure{}; + return Success{}; + } + MessageHandle& message = **result; + NoteLastMessageFlags(message->flags()); + if ((message->flags() & GRPC_WRITE_INTERNAL_COMPRESS) && + (incoming_compression_algorithm() != GRPC_COMPRESS_NONE)) { + *recv_message_ = grpc_raw_compressed_byte_buffer_create( + nullptr, 0, incoming_compression_algorithm()); + } else { + *recv_message_ = grpc_raw_byte_buffer_create(nullptr, 0); } + grpc_slice_buffer_move_into(message->payload()->c_slice_buffer(), + &(*recv_message_)->data.raw.slice_buffer); if (grpc_call_trace.enabled()) { gpr_log(GPR_INFO, "%s[call] RecvMessage: outstanding_recv " - "finishes: received end-of-stream", - DebugTag().c_str()); + "finishes: received %" PRIdPTR " byte message", + DebugTag().c_str(), (*recv_message_)->data.raw.slice_buffer.length); } - *recv_message_ = nullptr; recv_message_ = nullptr; return Success{}; } -void ServerCallSpine::CommitBatch(const grpc_op* ops, size_t nops, - void* notify_tag, - bool is_notify_tag_closure) { +void ServerCall::CommitBatch(const grpc_op* ops, size_t nops, void* notify_tag, + bool is_notify_tag_closure) { std::array got_ops{255, 255, 255, 255, 255, 255, 255, 255}; for (size_t op_idx = 0; op_idx < nops; op_idx++) { const grpc_op& op = ops[op_idx]; got_ops[op.op] = op_idx; } - if (!is_notify_tag_closure) grpc_cq_begin_op(cq(), notify_tag); - auto send_initial_metadata = MaybeOp( - ops, got_ops[GRPC_OP_SEND_INITIAL_METADATA], [this](const grpc_op& op) { + if (!is_notify_tag_closure) grpc_cq_begin_op(cq_, notify_tag); + auto send_initial_metadata = MaybeOp( + ops, got_ops, [this](const grpc_op& op) { auto metadata = arena()->MakePooled(); PrepareOutgoingInitialMetadata(op, *metadata); CToMetadata(op.data.send_initial_metadata.metadata, @@ -4052,27 +3505,22 @@ void ServerCallSpine::CommitBatch(const grpc_op* ops, size_t nops, DebugTag().c_str()); } return [this, metadata = std::move(metadata)]() mutable { - return Map(server_initial_metadata_.sender.Push(std::move(metadata)), - [this](bool r) { - server_initial_metadata_.sender.Close(); - return StatusFlag(r); - }); + return call_handler_.PushServerInitialMetadata(std::move(metadata)); }; }); auto send_message = - MaybeOp(ops, got_ops[GRPC_OP_SEND_MESSAGE], [this](const grpc_op& op) { + MaybeOp(ops, got_ops, [this](const grpc_op& op) { SliceBuffer send; grpc_slice_buffer_swap( &op.data.send_message.send_message->data.raw.slice_buffer, send.c_slice_buffer()); auto msg = arena()->MakePooled(std::move(send), op.flags); return [this, msg = std::move(msg)]() mutable { - return Map(server_to_client_messages_.sender.Push(std::move(msg)), - [](bool r) { return StatusFlag(r); }); + return call_handler_.PushMessage(std::move(msg)); }; }); - auto send_trailing_metadata = MaybeOp( - ops, got_ops[GRPC_OP_SEND_STATUS_FROM_SERVER], [this](const grpc_op& op) { + auto send_trailing_metadata = MaybeOp( + ops, got_ops, [this](const grpc_op& op) { auto metadata = arena()->MakePooled(); CToMetadata(op.data.send_status_from_server.trailing_metadata, op.data.send_status_from_server.trailing_metadata_count, @@ -4087,24 +3535,24 @@ void ServerCallSpine::CommitBatch(const grpc_op* ops, size_t nops, metadata->Set(GrpcMessageMetadata(), Slice(grpc_slice_copy(*details))); } - GPR_ASSERT(metadata != nullptr); + CHECK(metadata != nullptr); return [this, metadata = std::move(metadata)]() mutable { - GPR_ASSERT(metadata != nullptr); + CHECK(metadata != nullptr); return [this, metadata = std::move(metadata)]() mutable -> Poll { - GPR_ASSERT(metadata != nullptr); - PushServerTrailingMetadata(std::move(metadata)); + CHECK(metadata != nullptr); + call_handler_.PushServerTrailingMetadata(std::move(metadata)); return Success{}; }; }; }); auto recv_message = - MaybeOp(ops, got_ops[GRPC_OP_RECV_MESSAGE], [this](const grpc_op& op) { - GPR_ASSERT(recv_message_ == nullptr); + MaybeOp(ops, got_ops, [this](const grpc_op& op) { + CHECK_EQ(recv_message_, nullptr); recv_message_ = op.data.recv_message.recv_message; return [this]() mutable { - return Map(client_to_server_messages_.receiver.Next(), - [this](NextResult msg) { + return Map(call_handler_.PullMessage(), + [this](ValueOrFailure> msg) { return FinishRecvMessage(std::move(msg)); }); }; @@ -4115,10 +3563,10 @@ void ServerCallSpine::CommitBatch(const grpc_op* ops, size_t nops, std::move(send_trailing_metadata)), std::move(recv_message)); if (got_ops[GRPC_OP_RECV_CLOSE_ON_SERVER] != 255) { - auto recv_trailing_metadata = MaybeOp( - ops, got_ops[GRPC_OP_RECV_CLOSE_ON_SERVER], [this](const grpc_op& op) { + auto recv_trailing_metadata = MaybeOp( + ops, got_ops, [this](const grpc_op& op) { return [this, cancelled = op.data.recv_close_on_server.cancelled]() { - return Map(WasCancelled(), + return Map(call_handler_.WasCancelled(), [cancelled, this](bool result) -> Success { ResetDeadline(); *cancelled = result ? 1 : 0; @@ -4126,7 +3574,7 @@ void ServerCallSpine::CommitBatch(const grpc_op* ops, size_t nops, }); }; }); - SpawnInfallible( + call_handler_.SpawnInfallible( "final-batch", [primary_ops = std::move(primary_ops), recv_trailing_metadata = std::move(recv_trailing_metadata), @@ -4136,37 +3584,38 @@ void ServerCallSpine::CommitBatch(const grpc_op* ops, size_t nops, Seq(std::move(primary_ops), std::move(recv_trailing_metadata), [is_notify_tag_closure, notify_tag, this](StatusFlag) { return WaitForCqEndOp(is_notify_tag_closure, notify_tag, - absl::OkStatus(), cq()); + absl::OkStatus(), cq_); })); }); } else { - SpawnInfallible("batch", [primary_ops = std::move(primary_ops), - is_notify_tag_closure, notify_tag, - this]() mutable { - return LogPollBatch( - notify_tag, - Seq(std::move(primary_ops), - [is_notify_tag_closure, notify_tag, this](StatusFlag r) { + call_handler_.SpawnInfallible( + "batch", [primary_ops = std::move(primary_ops), is_notify_tag_closure, + notify_tag, this]() mutable { + return LogPollBatch( + notify_tag, + Seq(std::move(primary_ops), [is_notify_tag_closure, notify_tag, + this](StatusFlag r) { return WaitForCqEndOp(is_notify_tag_closure, notify_tag, - StatusCast(r), cq()); + StatusCast(r), cq_); })); - }); + }); } } -RefCountedPtr MakeServerCall( - ClientMetadataHandle client_initial_metadata, ServerInterface* server, - Channel* channel, Arena* arena) { - return RefCountedPtr(arena->New( - std::move(client_initial_metadata), server, channel, arena)); -} -#else -RefCountedPtr MakeServerCall(ClientMetadataHandle, - ServerInterface*, Channel*, - Arena*) { - Crash("not implemented"); +grpc_call* MakeServerCall(CallHandler call_handler, + ClientMetadataHandle client_initial_metadata, + ServerInterface* server, grpc_completion_queue* cq, + grpc_metadata_array* publish_initial_metadata) { + PublishMetadataArray(client_initial_metadata.get(), publish_initial_metadata, + false); + // TODO(ctiller): ideally we'd put this in the arena with the CallHandler, + // but there's an ownership problem: CallHandler owns the arena, and so would + // get destroyed before the base class Call destructor runs, leading to + // UB/crash. Investigate another path. + return (new ServerCall(std::move(client_initial_metadata), + std::move(call_handler), server, cq)) + ->c_ptr(); } -#endif } // namespace grpc_core @@ -4223,7 +3672,7 @@ grpc_call* grpc_call_from_top_element(grpc_call_element* surface_element) { grpc_call_error grpc_call_cancel(grpc_call* call, void* reserved) { GRPC_API_TRACE("grpc_call_cancel(call=%p, reserved=%p)", 2, (call, reserved)); - GPR_ASSERT(reserved == nullptr); + CHECK_EQ(reserved, nullptr); if (call == nullptr) { return GRPC_CALL_ERROR; } @@ -4241,7 +3690,7 @@ grpc_call_error grpc_call_cancel_with_status(grpc_call* c, "grpc_call_cancel_with_status(" "c=%p, status=%d, description=%s, reserved=%p)", 4, (c, (int)status, description, reserved)); - GPR_ASSERT(reserved == nullptr); + CHECK_EQ(reserved, nullptr); if (c == nullptr) { return GRPC_CALL_ERROR; } diff --git a/src/core/lib/surface/call.h b/src/core/lib/surface/call.h index ddc29ed878a..c0ccaf842cc 100644 --- a/src/core/lib/surface/call.h +++ b/src/core/lib/surface/call.h @@ -24,6 +24,7 @@ #include "absl/functional/any_invocable.h" #include "absl/functional/function_ref.h" +#include "absl/log/check.h" #include "absl/strings/string_view.h" #include "absl/types/optional.h" @@ -37,7 +38,6 @@ #include "src/core/lib/channel/channel_stack.h" #include "src/core/lib/channel/context.h" #include "src/core/lib/debug/trace.h" -#include "src/core/lib/gpr/time_precise.h" #include "src/core/lib/gprpp/ref_counted_ptr.h" #include "src/core/lib/gprpp/time.h" #include "src/core/lib/iomgr/closure.h" @@ -49,8 +49,9 @@ #include "src/core/lib/slice/slice.h" #include "src/core/lib/surface/api_trace.h" #include "src/core/lib/surface/channel.h" -#include "src/core/lib/surface/server_interface.h" #include "src/core/lib/transport/transport.h" +#include "src/core/server/server_interface.h" +#include "src/core/util/time_precise.h" typedef void (*grpc_ioreq_completion_func)(grpc_call* call, int success, void* user_data); @@ -76,40 +77,178 @@ typedef struct grpc_call_create_args { } grpc_call_create_args; namespace grpc_core { -class BasicPromiseBasedCall; -class ServerPromiseBasedCall; -class ServerCallContext { +class Call : public CppImplOf, + public grpc_event_engine::experimental::EventEngine:: + Closure /* for deadlines */ { public: - virtual void PublishInitialMetadata( - ClientMetadataHandle metadata, - grpc_metadata_array* publish_initial_metadata) = 0; - - // Construct the top of the server call promise for the v2 filter stack. - // TODO(ctiller): delete when v3 is available. - virtual ArenaPromise MakeTopOfServerCallPromise( - CallArgs call_args, grpc_completion_queue* cq, - absl::FunctionRef publish) = 0; - - // Server stream data as supplied by the transport (so we can link the - // transport stream up with the call again). - // TODO(ctiller): legacy API - once we move transports to promises we'll - // create the promise directly and not need to pass around this token. - virtual const void* server_stream_data() = 0; + virtual Arena* arena() = 0; + bool is_client() const { return is_client_; } + + virtual void ContextSet(grpc_context_index elem, void* value, + void (*destroy)(void* value)) = 0; + virtual void* ContextGet(grpc_context_index elem) const = 0; + virtual bool Completed() = 0; + void CancelWithStatus(grpc_status_code status, const char* description); + virtual void CancelWithError(grpc_error_handle error) = 0; + virtual void SetCompletionQueue(grpc_completion_queue* cq) = 0; + virtual char* GetPeer() = 0; + virtual grpc_call_error StartBatch(const grpc_op* ops, size_t nops, + void* notify_tag, + bool is_notify_tag_closure) = 0; + virtual bool failed_before_recv_message() const = 0; + virtual bool is_trailers_only() const = 0; + virtual absl::string_view GetServerAuthority() const = 0; + virtual void ExternalRef() = 0; + virtual void ExternalUnref() = 0; + virtual void InternalRef(const char* reason) = 0; + virtual void InternalUnref(const char* reason) = 0; + + void UpdateDeadline(Timestamp deadline) ABSL_LOCKS_EXCLUDED(deadline_mu_); + void ResetDeadline() ABSL_LOCKS_EXCLUDED(deadline_mu_); + Timestamp deadline() { + MutexLock lock(&deadline_mu_); + return deadline_; + } + + grpc_compression_algorithm test_only_compression_algorithm() { + return incoming_compression_algorithm_; + } + uint32_t test_only_message_flags() { return test_only_last_message_flags_; } + CompressionAlgorithmSet encodings_accepted_by_peer() { + return encodings_accepted_by_peer_; + } + + // This should return nullptr for the promise stack (and alternative means + // for that functionality be invented) + virtual grpc_call_stack* call_stack() = 0; + + // Return the EventEngine used for this call's async execution. + virtual grpc_event_engine::experimental::EventEngine* event_engine() + const = 0; + + // Implementation of EventEngine::Closure, called when deadline expires + void Run() final; protected: - ~ServerCallContext() = default; + // The maximum number of concurrent batches possible. + // Based upon the maximum number of individually queueable ops in the batch + // api: + // - initial metadata send + // - message send + // - status/close send (depending on client/server) + // - initial metadata recv + // - message recv + // - status/close recv (depending on client/server) + static constexpr size_t kMaxConcurrentBatches = 6; + + struct ParentCall { + Mutex child_list_mu; + Call* first_child ABSL_GUARDED_BY(child_list_mu) = nullptr; + }; + + struct ChildCall { + explicit ChildCall(Call* parent) : parent(parent) {} + Call* parent; + /// siblings: children of the same parent form a list, and this list is + /// protected under + /// parent->mu + Call* sibling_next = nullptr; + Call* sibling_prev = nullptr; + }; + + Call(bool is_client, Timestamp send_deadline, + grpc_event_engine::experimental::EventEngine* event_engine) + : send_deadline_(send_deadline), + is_client_(is_client), + event_engine_(event_engine) {} + ~Call() override = default; + + ParentCall* GetOrCreateParentCall(); + ParentCall* parent_call(); + + absl::Status InitParent(Call* parent, uint32_t propagation_mask); + void PublishToParent(Call* parent); + void MaybeUnpublishFromParent(); + void PropagateCancellationToChildren(); + + Timestamp send_deadline() const { return send_deadline_; } + void set_send_deadline(Timestamp send_deadline) { + send_deadline_ = send_deadline; + } + + Slice GetPeerString() const { + MutexLock lock(&peer_mu_); + return peer_string_.Ref(); + } + + void SetPeerString(Slice peer_string) { + MutexLock lock(&peer_mu_); + peer_string_ = std::move(peer_string); + } + + void ClearPeerString() { SetPeerString(Slice(grpc_empty_slice())); } + + // TODO(ctiller): cancel_func is for cancellation of the call - filter stack + // holds no mutexes here, promise stack does, and so locking is different. + // Remove this and cancel directly once promise conversion is done. + void ProcessIncomingInitialMetadata(grpc_metadata_batch& md); + // Fixup outgoing metadata before sending - adds compression, protects + // internal headers against external modification. + void PrepareOutgoingInitialMetadata(const grpc_op& op, + grpc_metadata_batch& md); + void NoteLastMessageFlags(uint32_t flags) { + test_only_last_message_flags_ = flags; + } + grpc_compression_algorithm incoming_compression_algorithm() const { + return incoming_compression_algorithm_; + } + + void HandleCompressionAlgorithmDisabled( + grpc_compression_algorithm compression_algorithm) GPR_ATTRIBUTE_NOINLINE; + void HandleCompressionAlgorithmNotAccepted( + grpc_compression_algorithm compression_algorithm) GPR_ATTRIBUTE_NOINLINE; + + gpr_cycle_counter start_time() const { return start_time_; } + + virtual grpc_compression_options compression_options() = 0; + + private: + std::atomic parent_call_{nullptr}; + ChildCall* child_ = nullptr; + Timestamp send_deadline_; + const bool is_client_; + // flag indicating that cancellation is inherited + bool cancellation_is_inherited_ = false; + // Compression algorithm for *incoming* data + grpc_compression_algorithm incoming_compression_algorithm_ = + GRPC_COMPRESS_NONE; + // Supported encodings (compression algorithms), a bitset. + // Always support no compression. + CompressionAlgorithmSet encodings_accepted_by_peer_{GRPC_COMPRESS_NONE}; + uint32_t test_only_last_message_flags_ = 0; + // Peer name is protected by a mutex because it can be accessed by the + // application at the same moment as it is being set by the completion + // of the recv_initial_metadata op. The mutex should be mostly uncontended. + mutable Mutex peer_mu_; + Slice peer_string_; + // Current deadline. + Mutex deadline_mu_; + Timestamp deadline_ ABSL_GUARDED_BY(deadline_mu_) = Timestamp::InfFuture(); + grpc_event_engine::experimental::EventEngine::TaskHandle ABSL_GUARDED_BY( + deadline_mu_) deadline_task_; + grpc_event_engine::experimental::EventEngine* const event_engine_; + gpr_cycle_counter start_time_ = gpr_get_cycle_counter(); }; +class BasicPromiseBasedCall; +class ServerPromiseBasedCall; + // TODO(ctiller): move more call things into this type class CallContext { public: explicit CallContext(BasicPromiseBasedCall* call) : call_(call) {} - // Update the deadline (if deadline < the current deadline). - void UpdateDeadline(Timestamp deadline); - Timestamp deadline() const; - // Run some action in the call activity context. This is needed to adapt some // legacy systems to promises, and will likely disappear once that conversion // is complete. @@ -130,8 +269,6 @@ class CallContext { gpr_atm* peer_string_atm_ptr(); gpr_cycle_counter call_start_time() { return start_time_; } - ServerCallContext* server_call_context(); - void set_traced(bool traced) { traced_ = traced; } bool traced() const { return traced_; } @@ -159,9 +296,10 @@ template <> struct ContextType {}; // TODO(ctiller): remove once call-v3 finalized -RefCountedPtr MakeServerCall( - ClientMetadataHandle client_initial_metadata, ServerInterface* server, - Channel* channel, Arena* arena); +grpc_call* MakeServerCall(CallHandler call_handler, + ClientMetadataHandle client_initial_metadata, + ServerInterface* server, grpc_completion_queue* cq, + grpc_metadata_array* publish_initial_metadata); } // namespace grpc_core diff --git a/src/core/lib/surface/call_log_batch.cc b/src/core/lib/surface/call_log_batch.cc index 6bb0abd0c24..dac553984d2 100644 --- a/src/core/lib/surface/call_log_batch.cc +++ b/src/core/lib/surface/call_log_batch.cc @@ -31,10 +31,10 @@ #include #include -#include "src/core/lib/gpr/string.h" #include "src/core/lib/slice/slice_internal.h" #include "src/core/lib/slice/slice_string_helpers.h" #include "src/core/lib/surface/call.h" +#include "src/core/util/string.h" static void add_metadata(const grpc_metadata* md, size_t count, std::vector* b) { diff --git a/src/core/lib/surface/channel.cc b/src/core/lib/surface/channel.cc index 64d5fd3e322..827d37f06b6 100644 --- a/src/core/lib/surface/channel.cc +++ b/src/core/lib/surface/channel.cc @@ -16,6 +16,8 @@ #include "src/core/lib/surface/channel.h" +#include "absl/log/check.h" + #include #include #include @@ -23,9 +25,9 @@ #include #include +#include "src/core/channelz/channel_trace.h" +#include "src/core/channelz/channelz.h" #include "src/core/lib/channel/channel_args.h" -#include "src/core/lib/channel/channel_trace.h" -#include "src/core/lib/channel/channelz.h" #include "src/core/lib/compression/compression_internal.h" #include "src/core/lib/debug/stats.h" #include "src/core/lib/debug/stats_data.h" @@ -98,7 +100,7 @@ grpc_call* grpc_channel_create_call(grpc_channel* channel, grpc_completion_queue* completion_queue, grpc_slice method, const grpc_slice* host, gpr_timespec deadline, void* reserved) { - GPR_ASSERT(!reserved); + CHECK(!reserved); grpc_core::ApplicationCallbackExecCtx callback_exec_ctx; grpc_core::ExecCtx exec_ctx; return grpc_core::Channel::FromC(channel)->CreateCall( @@ -116,7 +118,7 @@ void* grpc_channel_register_call(grpc_channel* channel, const char* method, GRPC_API_TRACE( "grpc_channel_register_call(channel=%p, method=%s, host=%s, reserved=%p)", 4, (channel, method, host, reserved)); - GPR_ASSERT(!reserved); + CHECK(!reserved); grpc_core::ApplicationCallbackExecCtx callback_exec_ctx; grpc_core::ExecCtx exec_ctx; return grpc_core::Channel::FromC(channel)->RegisterCall(method, host); @@ -139,7 +141,7 @@ grpc_call* grpc_channel_create_registered_call( (channel, parent_call, (unsigned)propagation_mask, completion_queue, registered_call_handle, deadline.tv_sec, deadline.tv_nsec, (int)deadline.clock_type, reserved)); - GPR_ASSERT(!reserved); + CHECK(!reserved); grpc_core::ApplicationCallbackExecCtx callback_exec_ctx; grpc_core::ExecCtx exec_ctx; return grpc_core::Channel::FromC(channel)->CreateCall( @@ -213,6 +215,6 @@ void grpc_channel_ping(grpc_channel* channel, grpc_completion_queue* cq, grpc_core::ExecCtx exec_ctx; GRPC_API_TRACE("grpc_channel_ping(channel=%p, cq=%p, tag=%p, reserved=%p)", 4, (channel, cq, tag, reserved)); - GPR_ASSERT(reserved == nullptr); + CHECK_EQ(reserved, nullptr); grpc_core::Channel::FromC(channel)->Ping(cq, tag); } diff --git a/src/core/lib/surface/channel.h b/src/core/lib/surface/channel.h index 58046cdde55..533a944c18c 100644 --- a/src/core/lib/surface/channel.h +++ b/src/core/lib/surface/channel.h @@ -31,8 +31,8 @@ #include #include +#include "src/core/channelz/channelz.h" #include "src/core/lib/channel/channel_args.h" -#include "src/core/lib/channel/channelz.h" #include "src/core/lib/gprpp/cpp_impl_of.h" #include "src/core/lib/gprpp/ref_counted.h" #include "src/core/lib/gprpp/ref_counted_ptr.h" diff --git a/src/core/lib/surface/channel_create.cc b/src/core/lib/surface/channel_create.cc index 4b64f14c029..0ad87af1f62 100644 --- a/src/core/lib/surface/channel_create.cc +++ b/src/core/lib/surface/channel_create.cc @@ -14,13 +14,15 @@ // limitations under the License. // +#include "absl/log/check.h" + #include #include #include #include +#include "src/core/channelz/channelz.h" #include "src/core/lib/channel/channel_args.h" -#include "src/core/lib/channel/channelz.h" #include "src/core/lib/config/core_configuration.h" #include "src/core/lib/debug/stats.h" #include "src/core/lib/debug/stats_data.h" @@ -103,6 +105,6 @@ grpc_channel* grpc_lame_client_channel_create(const char* target, auto channel = grpc_core::ChannelCreate(target == nullptr ? "" : target, std::move(args), GRPC_CLIENT_LAME_CHANNEL, nullptr); - GPR_ASSERT(channel.ok()); + CHECK(channel.ok()); return channel->release()->c_ptr(); } diff --git a/src/core/lib/surface/channel_init.cc b/src/core/lib/surface/channel_init.cc index 59aa35e3761..da694aa59be 100644 --- a/src/core/lib/surface/channel_init.cc +++ b/src/core/lib/surface/channel_init.cc @@ -26,6 +26,8 @@ #include #include +#include "absl/log/check.h" +#include "absl/log/log.h" #include "absl/strings/str_cat.h" #include "absl/strings/str_join.h" #include "absl/strings/string_view.h" @@ -103,9 +105,9 @@ ChannelInit::FilterRegistration::ExcludeFromMinimalStack() { ChannelInit::FilterRegistration& ChannelInit::Builder::RegisterFilter( grpc_channel_stack_type type, const grpc_channel_filter* filter, - const ChannelFilterVtable* vtable, SourceLocation registration_source) { + FilterAdder filter_adder, SourceLocation registration_source) { filters_[type].emplace_back(std::make_unique( - filter, vtable, registration_source)); + filter, filter_adder, registration_source)); return *filters_[type].back(); } @@ -137,9 +139,9 @@ ChannelInit::StackConfig ChannelInit::BuildStackConfig( } filter_to_registration[registration->filter_] = registration.get(); if (registration->terminal_) { - GPR_ASSERT(registration->after_.empty()); - GPR_ASSERT(registration->before_.empty()); - GPR_ASSERT(!registration->before_all_); + CHECK(registration->after_.empty()); + CHECK(registration->before_.empty()); + CHECK(!registration->before_all_); terminal_filters.emplace_back( registration->filter_, nullptr, std::move(registration->predicates_), registration->skip_v3_, registration->registration_source_); @@ -149,7 +151,7 @@ ChannelInit::StackConfig ChannelInit::BuildStackConfig( } for (const auto& registration : registrations) { if (registration->terminal_) continue; - GPR_ASSERT(filter_to_registration.count(registration->filter_) > 0); + CHECK_GT(filter_to_registration.count(registration->filter_), 0u); for (F after : registration->after_) { if (filter_to_registration.count(after) == 0) { gpr_log( @@ -222,9 +224,10 @@ ChannelInit::StackConfig ChannelInit::BuildStackConfig( while (!dependencies.empty()) { auto filter = take_ready_dependency(); auto* registration = filter_to_registration[filter]; - filters.emplace_back( - filter, registration->vtable_, std::move(registration->predicates_), - registration->skip_v3_, registration->registration_source_); + filters.emplace_back(filter, registration->filter_adder_, + std::move(registration->predicates_), + registration->skip_v3_, + registration->registration_source_); for (auto& p : dependencies) { p.second.erase(filter); } @@ -311,7 +314,7 @@ ChannelInit::StackConfig ChannelInit::BuildStackConfig( const auto filter_str = absl::StrCat(" ", loc_strs[filter.filter], NameFromChannelFilter(filter.filter), after_str); - gpr_log(GPR_INFO, "%s", filter_str.c_str()); + LOG(INFO) << filter_str; } // Finally list out the terminal filters and where they were registered // from. @@ -323,7 +326,7 @@ ChannelInit::StackConfig ChannelInit::BuildStackConfig( strlen(NameFromChannelFilter(terminal.filter)), ' '), "[terminal]"); - gpr_log(GPR_INFO, "%s", filter_str.c_str()); + LOG(INFO) << filter_str; } } // Check if there are no terminal filters: this would be an error. @@ -396,7 +399,7 @@ bool ChannelInit::CreateStack(ChannelStackBuilder* builder) const { "\n"); } } - gpr_log(GPR_ERROR, "%s", error.c_str()); + LOG(ERROR) << error; return false; } for (const auto& post_processor : stack_config.post_processors) { @@ -405,78 +408,21 @@ bool ChannelInit::CreateStack(ChannelStackBuilder* builder) const { return true; } -absl::StatusOr ChannelInit::CreateStackSegment( - grpc_channel_stack_type type, const ChannelArgs& args) const { +void ChannelInit::AddToInterceptionChainBuilder( + grpc_channel_stack_type type, InterceptionChainBuilder& builder) const { const auto& stack_config = stack_configs_[type]; - std::vector filters; - size_t channel_data_size = 0; - size_t channel_data_alignment = 0; // Based on predicates build a list of filters to include in this segment. for (const auto& filter : stack_config.filters) { if (filter.skip_v3) continue; - if (!filter.CheckPredicates(args)) continue; - if (filter.vtable == nullptr) { - return absl::InvalidArgumentError( + if (!filter.CheckPredicates(builder.channel_args())) continue; + if (filter.filter_adder == nullptr) { + builder.Fail(absl::InvalidArgumentError( absl::StrCat("Filter ", NameFromChannelFilter(filter.filter), - " has no v3-callstack vtable")); + " has no v3-callstack vtable"))); + return; } - channel_data_alignment = - std::max(channel_data_alignment, filter.vtable->alignment); - if (channel_data_size % filter.vtable->alignment != 0) { - channel_data_size += filter.vtable->alignment - - (channel_data_size % filter.vtable->alignment); - } - filters.push_back({channel_data_size, filter.vtable}); - channel_data_size += filter.vtable->size; - } - // Shortcut for empty segments. - if (filters.empty()) return StackSegment(); - // Allocate memory for the channel data, initialize channel filters into it. - uint8_t* p = static_cast( - gpr_malloc_aligned(channel_data_size, channel_data_alignment)); - for (size_t i = 0; i < filters.size(); i++) { - auto r = filters[i].vtable->init(p + filters[i].offset, args); - if (!r.ok()) { - for (size_t j = 0; j < i; j++) { - filters[j].vtable->destroy(p + filters[j].offset); - } - gpr_free_aligned(p); - return r; - } - } - return StackSegment(std::move(filters), p); -} - -/////////////////////////////////////////////////////////////////////////////// -// ChannelInit::StackSegment - -ChannelInit::StackSegment::StackSegment(std::vector filters, - uint8_t* channel_data) - : data_(MakeRefCounted(std::move(filters), channel_data)) {} - -void ChannelInit::StackSegment::AddToCallFilterStack( - CallFilters::StackBuilder& builder) { - if (data_ == nullptr) return; - data_->AddToCallFilterStack(builder); - builder.AddOwnedObject(data_); -}; - -ChannelInit::StackSegment::ChannelData::ChannelData( - std::vector filters, uint8_t* channel_data) - : filters_(std::move(filters)), channel_data_(channel_data) {} - -void ChannelInit::StackSegment::ChannelData::AddToCallFilterStack( - CallFilters::StackBuilder& builder) { - for (const auto& filter : filters_) { - filter.vtable->add_to_stack_builder(channel_data_ + filter.offset, builder); - } -} - -ChannelInit::StackSegment::ChannelData::~ChannelData() { - for (const auto& filter : filters_) { - filter.vtable->destroy(channel_data_ + filter.offset); + filter.filter_adder(builder); } - gpr_free_aligned(channel_data_); } } // namespace grpc_core diff --git a/src/core/lib/surface/channel_init.h b/src/core/lib/surface/channel_init.h index 5f1bacdeff1..c5067394014 100644 --- a/src/core/lib/surface/channel_init.h +++ b/src/core/lib/surface/channel_init.h @@ -27,6 +27,7 @@ #include #include "absl/functional/any_invocable.h" +#include "absl/log/check.h" #include #include @@ -37,6 +38,7 @@ #include "src/core/lib/gprpp/debug_location.h" #include "src/core/lib/surface/channel_stack_type.h" #include "src/core/lib/transport/call_filters.h" +#include "src/core/lib/transport/interception_chain.h" /// This module provides a way for plugins (and the grpc core library itself) /// to register mutators for channel stacks. @@ -67,6 +69,8 @@ class ChannelInit { using InclusionPredicate = absl::AnyInvocable; // Post processor for the channel stack - applied in PostProcessorSlot order using PostProcessor = absl::AnyInvocable; + // Function that can be called to add a filter to a stack builder + using FilterAdder = void (*)(InterceptionChainBuilder&); // Post processing slots - up to one PostProcessor per slot can be registered // They run after filters registered are added to the channel stack builder, // but before Build is called - allowing ad-hoc mutation to the channel stack. @@ -76,25 +80,15 @@ class ChannelInit { kCount }; - // Vtable-like data structure for channel data initialization - struct ChannelFilterVtable { - size_t size; - size_t alignment; - absl::Status (*init)(void* data, const ChannelArgs& args); - void (*destroy)(void* data); - void (*add_to_stack_builder)(void* data, - CallFilters::StackBuilder& builder); - }; - class FilterRegistration { public: // TODO(ctiller): Remove grpc_channel_filter* arg when that can be // deprecated (once filter stack is removed). explicit FilterRegistration(const grpc_channel_filter* filter, - const ChannelFilterVtable* vtable, + FilterAdder filter_adder, SourceLocation registration_source) : filter_(filter), - vtable_(vtable), + filter_adder_(filter_adder), registration_source_(registration_source) {} FilterRegistration(const FilterRegistration&) = delete; FilterRegistration& operator=(const FilterRegistration&) = delete; @@ -169,7 +163,7 @@ class ChannelInit { private: friend class ChannelInit; const grpc_channel_filter* const filter_; - const ChannelFilterVtable* const vtable_; + const FilterAdder filter_adder_; std::vector after_; std::vector before_; std::vector predicates_; @@ -187,16 +181,17 @@ class ChannelInit { // properties of the filter being registered. // TODO(ctiller): remove in favor of the version that does not mention // grpc_channel_filter - FilterRegistration& RegisterFilter( - grpc_channel_stack_type type, const grpc_channel_filter* filter, - const ChannelFilterVtable* vtable = nullptr, - SourceLocation registration_source = {}); + FilterRegistration& RegisterFilter(grpc_channel_stack_type type, + const grpc_channel_filter* filter, + FilterAdder filter_adder = nullptr, + SourceLocation registration_source = {}); template FilterRegistration& RegisterFilter( grpc_channel_stack_type type, SourceLocation registration_source = {}) { - return RegisterFilter(type, &Filter::kFilter, - VtableForType::vtable(), - registration_source); + return RegisterFilter( + type, &Filter::kFilter, + [](InterceptionChainBuilder& builder) { builder.Add(); }, + registration_source); } // Filter does not participate in v3 @@ -217,7 +212,7 @@ class ChannelInit { PostProcessorSlot slot, PostProcessor post_processor) { auto& slot_value = post_processors_[type][static_cast(slot)]; - GPR_ASSERT(slot_value == nullptr); + CHECK(slot_value == nullptr); slot_value = std::move(post_processor); } @@ -231,58 +226,13 @@ class ChannelInit { [static_cast(PostProcessorSlot::kCount)]; }; - // A set of channel filters that can be added to a call stack. - // TODO(ctiller): move this out so it can be used independently of - // the global registration mechanisms. - class StackSegment final { - public: - // Registration of one channel filter in the stack. - struct ChannelFilter { - size_t offset; - const ChannelFilterVtable* vtable; - }; - - StackSegment() = default; - explicit StackSegment(std::vector filters, - uint8_t* channel_data); - StackSegment(const StackSegment& other) = delete; - StackSegment& operator=(const StackSegment& other) = delete; - StackSegment(StackSegment&& other) noexcept = default; - StackSegment& operator=(StackSegment&& other) = default; - - // Add this segment to a call filter stack builder - void AddToCallFilterStack(CallFilters::StackBuilder& builder); - - private: - // Combined channel data for the stack - class ChannelData : public RefCounted { - public: - explicit ChannelData(std::vector filters, - uint8_t* channel_data); - ~ChannelData() override; - - void AddToCallFilterStack(CallFilters::StackBuilder& builder); - - private: - std::vector filters_; - uint8_t* channel_data_; - }; - - RefCountedPtr data_; - }; - /// Construct a channel stack of some sort: see channel_stack.h for details /// \a builder is the channel stack builder to build into. GRPC_MUST_USE_RESULT bool CreateStack(ChannelStackBuilder* builder) const; - // Create a segment of a channel stack. - // Terminators and post processors are not included in this construction: - // terminators are a legacy filter-stack concept, and post processors - // need to migrate to other mechanisms. - // TODO(ctiller): figure out other mechanisms. - absl::StatusOr CreateStackSegment( - grpc_channel_stack_type type, const ChannelArgs& args) const; + void AddToInterceptionChainBuilder(grpc_channel_stack_type type, + InterceptionChainBuilder& builder) const; private: // The type of object returned by a filter's Create method. @@ -291,16 +241,16 @@ class ChannelInit { typename decltype(T::Create(ChannelArgs(), {}))::value_type; struct Filter { - Filter(const grpc_channel_filter* filter, const ChannelFilterVtable* vtable, + Filter(const grpc_channel_filter* filter, FilterAdder filter_adder, std::vector predicates, bool skip_v3, SourceLocation registration_source) : filter(filter), - vtable(vtable), + filter_adder(filter_adder), predicates(std::move(predicates)), registration_source(registration_source), skip_v3(skip_v3) {} const grpc_channel_filter* filter; - const ChannelFilterVtable* vtable; + const FilterAdder filter_adder; std::vector predicates; SourceLocation registration_source; bool skip_v3 = false; @@ -312,17 +262,6 @@ class ChannelInit { std::vector post_processors; }; - template - struct VtableForType { - static const ChannelFilterVtable* vtable() { return nullptr; } - }; - - template - struct VtableForType> { - static const ChannelFilterVtable kVtable; - static const ChannelFilterVtable* vtable() { return &kVtable; } - }; - StackConfig stack_configs_[GRPC_NUM_CHANNEL_STACK_TYPES]; static StackConfig BuildStackConfig( @@ -330,22 +269,6 @@ class ChannelInit { PostProcessor* post_processors, grpc_channel_stack_type type); }; -template -const ChannelInit::ChannelFilterVtable - ChannelInit::VtableForType>::kVtable = { - sizeof(CreatedType), alignof(CreatedType), - [](void* data, const ChannelArgs& args) -> absl::Status { - // TODO(ctiller): fill in ChannelFilter::Args (2nd arg) - absl::StatusOr> r = T::Create(args, {}); - if (!r.ok()) return r.status(); - new (data) CreatedType(std::move(*r)); - return absl::OkStatus(); - }, - [](void* data) { Destruct(static_cast*>(data)); }, - [](void* data, CallFilters::StackBuilder& builder) { - builder.Add(static_cast*>(data)->get()); - }}; - } // namespace grpc_core #endif // GRPC_SRC_CORE_LIB_SURFACE_CHANNEL_INIT_H diff --git a/src/core/lib/surface/completion_queue.cc b/src/core/lib/surface/completion_queue.cc index 0f76f4fd2a9..b439191f1bb 100644 --- a/src/core/lib/surface/completion_queue.cc +++ b/src/core/lib/surface/completion_queue.cc @@ -27,6 +27,8 @@ #include #include +#include "absl/log/check.h" +#include "absl/log/log.h" #include "absl/status/status.h" #include "absl/strings/str_format.h" #include "absl/strings/str_join.h" @@ -41,7 +43,6 @@ #include "src/core/lib/debug/stats.h" #include "src/core/lib/debug/stats_data.h" -#include "src/core/lib/gpr/spinlock.h" #include "src/core/lib/gprpp/atomic_utils.h" #include "src/core/lib/gprpp/debug_location.h" #include "src/core/lib/gprpp/ref_counted.h" @@ -54,6 +55,7 @@ #include "src/core/lib/iomgr/pollset.h" #include "src/core/lib/surface/api_trace.h" #include "src/core/lib/surface/event_string.h" +#include "src/core/util/spinlock.h" #ifdef GPR_WINDOWS #include "src/core/lib/experiments/experiments.h" @@ -178,7 +180,7 @@ grpc_error_handle non_polling_poller_kick( void non_polling_poller_shutdown(grpc_pollset* pollset, grpc_closure* closure) { non_polling_poller* p = reinterpret_cast(pollset); - GPR_ASSERT(closure != nullptr); + CHECK_NE(closure, nullptr); p->shutdown = closure; if (p->root == nullptr) { grpc_core::ExecCtx::Run(DEBUG_LOCATION, closure, absl::OkStatus()); @@ -256,10 +258,10 @@ class CqEventQueue { struct cq_next_data { ~cq_next_data() { - GPR_ASSERT(queue.num_items() == 0); + CHECK_EQ(queue.num_items(), 0); #ifndef NDEBUG if (pending_events.load(std::memory_order_acquire) != 0) { - gpr_log(GPR_ERROR, "Destroying CQ without draining it fully."); + LOG(ERROR) << "Destroying CQ without draining it fully."; } #endif } @@ -286,11 +288,10 @@ struct cq_pluck_data { } ~cq_pluck_data() { - GPR_ASSERT(completed_head.next == - reinterpret_cast(&completed_head)); + CHECK(completed_head.next == reinterpret_cast(&completed_head)); #ifndef NDEBUG if (pending_events.load(std::memory_order_acquire) != 0) { - gpr_log(GPR_ERROR, "Destroying CQ without draining it fully."); + LOG(ERROR) << "Destroying CQ without draining it fully."; } #endif } @@ -327,7 +328,7 @@ struct cq_callback_data { ~cq_callback_data() { #ifndef NDEBUG if (pending_events.load(std::memory_order_acquire) != 0) { - gpr_log(GPR_ERROR, "Destroying CQ without draining it fully."); + LOG(ERROR) << "Destroying CQ without draining it fully."; } #endif } @@ -655,7 +656,7 @@ static void cq_check_tag(grpc_completion_queue* cq, void* tag, bool lock_cq) { gpr_mu_unlock(cq->mu); } - GPR_ASSERT(found); + CHECK(found); } #else static void cq_check_tag(grpc_completion_queue* /*cq*/, void* /*tag*/, @@ -905,7 +906,7 @@ class ExecCtxNext : public grpc_core::ExecCtx { static_cast(check_ready_to_finish_arg_); grpc_completion_queue* cq = a->cq; cq_next_data* cqd = static_cast DATA_FROM_CQ(cq); - GPR_ASSERT(a->stolen_completion == nullptr); + CHECK_EQ(a->stolen_completion, nullptr); intptr_t current_last_seen_things_queued_ever = cqd->things_queued_ever.load(std::memory_order_relaxed); @@ -942,7 +943,7 @@ static void dump_pending_tags(grpc_completion_queue* cq) { parts.push_back(absl::StrFormat(" %p", cq->outstanding_tags[i])); } gpr_mu_unlock(cq->mu); - gpr_log(GPR_DEBUG, "%s", absl::StrJoin(parts, "").c_str()); + VLOG(2) << absl::StrJoin(parts, ""); } #else static void dump_pending_tags(grpc_completion_queue* /*cq*/) {} @@ -962,7 +963,7 @@ static grpc_event cq_next(grpc_completion_queue* cq, gpr_timespec deadline, 5, (cq, deadline.tv_sec, deadline.tv_nsec, (int)deadline.clock_type, reserved)); - GPR_ASSERT(!reserved); + CHECK(!reserved); dump_pending_tags(cq); @@ -1068,7 +1069,7 @@ static grpc_event cq_next(grpc_completion_queue* cq, gpr_timespec deadline, GRPC_SURFACE_TRACE_RETURNED_EVENT(cq, &ret); GRPC_CQ_INTERNAL_UNREF(cq, "next"); - GPR_ASSERT(is_finished_arg.stolen_completion == nullptr); + CHECK_EQ(is_finished_arg.stolen_completion, nullptr); return ret; } @@ -1082,8 +1083,8 @@ static grpc_event cq_next(grpc_completion_queue* cq, gpr_timespec deadline, static void cq_finish_shutdown_next(grpc_completion_queue* cq) { cq_next_data* cqd = static_cast DATA_FROM_CQ(cq); - GPR_ASSERT(cqd->shutdown_called); - GPR_ASSERT(cqd->pending_events.load(std::memory_order_relaxed) == 0); + CHECK(cqd->shutdown_called); + CHECK_EQ(cqd->pending_events.load(std::memory_order_relaxed), 0); cq->poller_vtable->shutdown(POLLSET_FROM_CQ(cq), &cq->pollset_shutdown_done); } @@ -1156,7 +1157,7 @@ class ExecCtxPluck : public grpc_core::ExecCtx { grpc_completion_queue* cq = a->cq; cq_pluck_data* cqd = static_cast DATA_FROM_CQ(cq); - GPR_ASSERT(a->stolen_completion == nullptr); + CHECK_EQ(a->stolen_completion, nullptr); gpr_atm current_last_seen_things_queued_ever = cqd->things_queued_ever.load(std::memory_order_relaxed); if (current_last_seen_things_queued_ever != @@ -1207,7 +1208,7 @@ static grpc_event cq_pluck(grpc_completion_queue* cq, void* tag, (cq, tag, deadline.tv_sec, deadline.tv_nsec, (int)deadline.clock_type, reserved)); } - GPR_ASSERT(!reserved); + CHECK(!reserved); dump_pending_tags(cq); @@ -1298,7 +1299,7 @@ done: GRPC_SURFACE_TRACE_RETURNED_EVENT(cq, &ret); GRPC_CQ_INTERNAL_UNREF(cq, "pluck"); - GPR_ASSERT(is_finished_arg.stolen_completion == nullptr); + CHECK_EQ(is_finished_arg.stolen_completion, nullptr); return ret; } @@ -1311,8 +1312,8 @@ grpc_event grpc_completion_queue_pluck(grpc_completion_queue* cq, void* tag, static void cq_finish_shutdown_pluck(grpc_completion_queue* cq) { cq_pluck_data* cqd = static_cast DATA_FROM_CQ(cq); - GPR_ASSERT(cqd->shutdown_called); - GPR_ASSERT(!cqd->shutdown.load(std::memory_order_relaxed)); + CHECK(cqd->shutdown_called); + CHECK(!cqd->shutdown.load(std::memory_order_relaxed)); cqd->shutdown.store(true, std::memory_order_relaxed); cq->poller_vtable->shutdown(POLLSET_FROM_CQ(cq), &cq->pollset_shutdown_done); @@ -1348,7 +1349,7 @@ static void cq_finish_shutdown_callback(grpc_completion_queue* cq) { cq_callback_data* cqd = static_cast DATA_FROM_CQ(cq); auto* callback = cqd->shutdown_callback; - GPR_ASSERT(cqd->shutdown_called); + CHECK(cqd->shutdown_called); cq->poller_vtable->shutdown(POLLSET_FROM_CQ(cq), &cq->pollset_shutdown_done); if (grpc_iomgr_is_any_background_poller_thread()) { diff --git a/src/core/lib/surface/completion_queue_factory.cc b/src/core/lib/surface/completion_queue_factory.cc index cb9a1b55d42..486cc5f00ec 100644 --- a/src/core/lib/surface/completion_queue_factory.cc +++ b/src/core/lib/surface/completion_queue_factory.cc @@ -18,6 +18,8 @@ #include "src/core/lib/surface/completion_queue_factory.h" +#include "absl/log/check.h" + #include #include #include @@ -47,8 +49,8 @@ static const grpc_completion_queue_factory g_default_cq_factory = { const grpc_completion_queue_factory* grpc_completion_queue_factory_lookup( const grpc_completion_queue_attributes* attributes) { - GPR_ASSERT(attributes->version >= 1 && - attributes->version <= GRPC_CQ_CURRENT_VERSION); + CHECK(attributes->version >= 1 && + attributes->version <= GRPC_CQ_CURRENT_VERSION); // The default factory can handle version 1 of the attributes structure. We // may have to change this as more fields are added to the structure @@ -61,7 +63,7 @@ const grpc_completion_queue_factory* grpc_completion_queue_factory_lookup( grpc_completion_queue* grpc_completion_queue_create_for_next(void* reserved) { grpc_core::ExecCtx exec_ctx; - GPR_ASSERT(!reserved); + CHECK(!reserved); grpc_completion_queue_attributes attr = {1, GRPC_CQ_NEXT, GRPC_CQ_DEFAULT_POLLING, nullptr}; return g_default_cq_factory.vtable->create(&g_default_cq_factory, &attr); @@ -69,7 +71,7 @@ grpc_completion_queue* grpc_completion_queue_create_for_next(void* reserved) { grpc_completion_queue* grpc_completion_queue_create_for_pluck(void* reserved) { grpc_core::ExecCtx exec_ctx; - GPR_ASSERT(!reserved); + CHECK(!reserved); grpc_completion_queue_attributes attr = {1, GRPC_CQ_PLUCK, GRPC_CQ_DEFAULT_POLLING, nullptr}; return g_default_cq_factory.vtable->create(&g_default_cq_factory, &attr); @@ -78,7 +80,7 @@ grpc_completion_queue* grpc_completion_queue_create_for_pluck(void* reserved) { grpc_completion_queue* grpc_completion_queue_create_for_callback( grpc_completion_queue_functor* shutdown_callback, void* reserved) { grpc_core::ExecCtx exec_ctx; - GPR_ASSERT(!reserved); + CHECK(!reserved); grpc_completion_queue_attributes attr = { 2, GRPC_CQ_CALLBACK, GRPC_CQ_DEFAULT_POLLING, shutdown_callback}; return g_default_cq_factory.vtable->create(&g_default_cq_factory, &attr); @@ -88,6 +90,6 @@ grpc_completion_queue* grpc_completion_queue_create( const grpc_completion_queue_factory* factory, const grpc_completion_queue_attributes* attr, void* reserved) { grpc_core::ExecCtx exec_ctx; - GPR_ASSERT(!reserved); + CHECK(!reserved); return factory->vtable->create(factory, attr); } diff --git a/src/core/lib/surface/init.cc b/src/core/lib/surface/init.cc index 3ff4c77f062..fc8e75484d2 100644 --- a/src/core/lib/surface/init.cc +++ b/src/core/lib/surface/init.cc @@ -19,6 +19,7 @@ #include "src/core/lib/surface/init.h" #include "absl/base/thread_annotations.h" +#include "absl/log/log.h" #include #include @@ -66,10 +67,10 @@ static bool g_shutting_down ABSL_GUARDED_BY(g_init_mu) = false; namespace grpc_core { void RegisterSecurityFilters(CoreConfiguration::Builder* builder) { builder->channel_init() - ->RegisterFilter(GRPC_CLIENT_SUBCHANNEL) + ->RegisterV2Filter(GRPC_CLIENT_SUBCHANNEL) .IfHasChannelArg(GRPC_ARG_SECURITY_CONNECTOR); builder->channel_init() - ->RegisterFilter(GRPC_CLIENT_DIRECT_CHANNEL) + ->RegisterV2Filter(GRPC_CLIENT_DIRECT_CHANNEL) .IfHasChannelArg(GRPC_ARG_SECURITY_CONNECTOR); builder->channel_init() ->RegisterFilter(GRPC_SERVER_CHANNEL) @@ -137,7 +138,7 @@ void grpc_shutdown_from_cleanup_thread(void* /*ignored*/) { return; } grpc_shutdown_internal_locked(); - gpr_log(GPR_DEBUG, "grpc_shutdown from cleanup thread done"); + VLOG(2) << "grpc_shutdown from cleanup thread done"; } void grpc_shutdown(void) { @@ -155,14 +156,14 @@ void grpc_shutdown(void) { 0) && grpc_core::ExecCtx::Get() == nullptr) { // just run clean-up when this is called on non-executor thread. - gpr_log(GPR_DEBUG, "grpc_shutdown starts clean-up now"); + VLOG(2) << "grpc_shutdown starts clean-up now"; g_shutting_down = true; grpc_shutdown_internal_locked(); - gpr_log(GPR_DEBUG, "grpc_shutdown done"); + VLOG(2) << "grpc_shutdown done"; } else { // spawn a detached thread to do the actual clean up in case we are // currently in an executor thread. - gpr_log(GPR_DEBUG, "grpc_shutdown spawns clean-up thread"); + VLOG(2) << "grpc_shutdown spawns clean-up thread"; g_initializations++; g_shutting_down = true; grpc_core::Thread cleanup_thread( diff --git a/src/core/lib/surface/lame_client.cc b/src/core/lib/surface/lame_client.cc index 8966f34ebf7..f573194a42e 100644 --- a/src/core/lib/surface/lame_client.cc +++ b/src/core/lib/surface/lame_client.cc @@ -36,7 +36,6 @@ #include "src/core/lib/channel/promise_based_filter.h" #include "src/core/lib/config/core_configuration.h" #include "src/core/lib/debug/trace.h" -#include "src/core/lib/gpr/useful.h" #include "src/core/lib/gprpp/debug_location.h" #include "src/core/lib/gprpp/ref_counted_ptr.h" #include "src/core/lib/gprpp/sync.h" @@ -49,6 +48,7 @@ #include "src/core/lib/transport/connectivity_state.h" #include "src/core/lib/transport/metadata_batch.h" #include "src/core/lib/transport/transport.h" +#include "src/core/util/useful.h" // Avoid some IWYU confusion: // IWYU pragma: no_include "src/core/lib/gprpp/orphanable.h" diff --git a/src/core/lib/surface/legacy_channel.cc b/src/core/lib/surface/legacy_channel.cc index 80568674f9c..104924d42b7 100644 --- a/src/core/lib/surface/legacy_channel.cc +++ b/src/core/lib/surface/legacy_channel.cc @@ -19,6 +19,7 @@ #include "src/core/lib/surface/legacy_channel.h" #include "absl/base/thread_annotations.h" +#include "absl/log/check.h" #include "absl/status/status.h" #include "absl/types/optional.h" @@ -29,12 +30,12 @@ #include #include +#include "src/core/channelz/channelz.h" #include "src/core/client_channel/client_channel_filter.h" #include "src/core/lib/channel/channel_args.h" #include "src/core/lib/channel/channel_fwd.h" #include "src/core/lib/channel/channel_stack.h" #include "src/core/lib/channel/channel_stack_builder_impl.h" -#include "src/core/lib/channel/channelz.h" #include "src/core/lib/channel/metrics.h" #include "src/core/lib/config/core_configuration.h" #include "src/core/lib/debug/stats.h" @@ -166,8 +167,8 @@ grpc_call* LegacyChannel::CreateCall( grpc_completion_queue* cq, grpc_pollset_set* pollset_set_alternative, Slice path, absl::optional authority, Timestamp deadline, bool registered_method) { - GPR_ASSERT(is_client_); - GPR_ASSERT(!(cq != nullptr && pollset_set_alternative != nullptr)); + CHECK(is_client_); + CHECK(!(cq != nullptr && pollset_set_alternative != nullptr)); grpc_call_create_args args; args.channel = Ref(); args.server = nullptr; @@ -213,7 +214,7 @@ class LegacyChannel::StateWatcher final : public DualRefCounted { cq_(cq), tag_(tag), state_(last_observed_state) { - GPR_ASSERT(grpc_cq_begin_op(cq, tag)); + CHECK(grpc_cq_begin_op(cq, tag)); GRPC_CLOSURE_INIT(&on_complete_, WatchComplete, this, nullptr); ClientChannelFilter* client_channel = channel_->GetClientChannelFilter(); if (client_channel == nullptr) { @@ -343,14 +344,14 @@ void LegacyChannel::AddConnectivityWatcher( grpc_connectivity_state initial_state, OrphanablePtr watcher) { auto* client_channel = GetClientChannelFilter(); - GPR_ASSERT(client_channel != nullptr); + CHECK_NE(client_channel, nullptr); client_channel->AddConnectivityWatcher(initial_state, std::move(watcher)); } void LegacyChannel::RemoveConnectivityWatcher( AsyncConnectivityStateWatcherInterface* watcher) { auto* client_channel = GetClientChannelFilter(); - GPR_ASSERT(client_channel != nullptr); + CHECK_NE(client_channel, nullptr); client_channel->RemoveConnectivityWatcher(watcher); } @@ -394,7 +395,7 @@ void LegacyChannel::Ping(grpc_completion_queue* cq, void* tag) { grpc_transport_op* op = grpc_make_transport_op(nullptr); op->send_ping.on_ack = &pr->closure; op->bind_pollset = grpc_cq_pollset(cq); - GPR_ASSERT(grpc_cq_begin_op(cq, tag)); + CHECK(grpc_cq_begin_op(cq, tag)); grpc_channel_element* top_elem = grpc_channel_stack_element(channel_stack_.get(), 0); top_elem->filter->start_transport_op(top_elem, op); diff --git a/src/core/lib/surface/legacy_channel.h b/src/core/lib/surface/legacy_channel.h index 780de9f4fa9..3cf3fa0db22 100644 --- a/src/core/lib/surface/legacy_channel.h +++ b/src/core/lib/surface/legacy_channel.h @@ -39,7 +39,7 @@ #include "src/core/lib/slice/slice.h" #include "src/core/lib/surface/channel.h" #include "src/core/lib/surface/channel_stack_type.h" -#include "src/core/lib/transport/call_size_estimator.h" +#include "src/core/lib/transport/call_arena_allocator.h" namespace grpc_core { diff --git a/src/core/lib/surface/validate_metadata.h b/src/core/lib/surface/validate_metadata.h index 13f44a52fdf..0607abd1e00 100644 --- a/src/core/lib/surface/validate_metadata.h +++ b/src/core/lib/surface/validate_metadata.h @@ -23,6 +23,7 @@ #include +#include "absl/log/check.h" #include "absl/strings/string_view.h" #include @@ -58,7 +59,7 @@ inline int grpc_key_is_binary_header(const uint8_t* buf, size_t length) { return 0 == memcmp(buf + length - 4, "-bin", 4); } inline int grpc_is_refcounted_slice_binary_header(const grpc_slice& slice) { - GPR_DEBUG_ASSERT(slice.refcount != nullptr); + DCHECK_NE(slice.refcount, nullptr); return grpc_key_is_binary_header(slice.data.refcounted.bytes, slice.data.refcounted.length); } diff --git a/src/core/lib/surface/version.cc b/src/core/lib/surface/version.cc index 1b0639d5aac..eb735f8be9d 100644 --- a/src/core/lib/surface/version.cc +++ b/src/core/lib/surface/version.cc @@ -22,6 +22,6 @@ #include #include -const char* grpc_version_string(void) { return "40.0.0"; } +const char* grpc_version_string(void) { return "41.0.0"; } -const char* grpc_g_stands_for(void) { return "grateful"; } +const char* grpc_g_stands_for(void) { return "gnarly"; } diff --git a/src/core/lib/transport/batch_builder.cc b/src/core/lib/transport/batch_builder.cc index 81c0b2fa5e9..a16f5a164df 100644 --- a/src/core/lib/transport/batch_builder.cc +++ b/src/core/lib/transport/batch_builder.cc @@ -16,6 +16,8 @@ #include +#include "absl/log/check.h" + #include #include "src/core/lib/promise/poll.h" @@ -96,13 +98,13 @@ BatchBuilder::Batch* BatchBuilder::GetBatch(Target target) { batch_ = GetContext()->NewPooled(payload_, target_->stream_refcount); } - GPR_ASSERT(batch_ != nullptr); + CHECK_NE(batch_, nullptr); return batch_; } void BatchBuilder::FlushBatch() { - GPR_ASSERT(batch_ != nullptr); - GPR_ASSERT(target_.has_value()); + CHECK_NE(batch_, nullptr); + CHECK(target_.has_value()); if (grpc_call_trace.enabled()) { gpr_log( GPR_DEBUG, "%sPerform transport stream op batch: %p %s", diff --git a/src/core/lib/transport/bdp_estimator.cc b/src/core/lib/transport/bdp_estimator.cc index cb5fc537754..d81e047cbc0 100644 --- a/src/core/lib/transport/bdp_estimator.cc +++ b/src/core/lib/transport/bdp_estimator.cc @@ -23,6 +23,8 @@ #include +#include "absl/log/check.h" + #include grpc_core::TraceFlag grpc_bdp_estimator_trace(false, "bdp_estimator"); @@ -53,7 +55,7 @@ Timestamp BdpEstimator::CompletePing() { std::string(name_).c_str(), accumulator_, estimate_, dt, bw / 125000.0, bw_est_ / 125000.0); } - GPR_ASSERT(ping_state_ == PingState::STARTED); + CHECK(ping_state_ == PingState::STARTED); if (accumulator_ > 2 * estimate_ / 3 && bw > bw_est_) { estimate_ = std::max(accumulator_, estimate_ * 2); bw_est_ = bw; diff --git a/src/core/lib/transport/bdp_estimator.h b/src/core/lib/transport/bdp_estimator.h index 571cee0028d..6c953bd4054 100644 --- a/src/core/lib/transport/bdp_estimator.h +++ b/src/core/lib/transport/bdp_estimator.h @@ -23,6 +23,7 @@ #include +#include "absl/log/check.h" #include "absl/strings/string_view.h" #include @@ -54,7 +55,7 @@ class BdpEstimator { gpr_log(GPR_INFO, "bdp[%s]:sched acc=%" PRId64 " est=%" PRId64, std::string(name_).c_str(), accumulator_, estimate_); } - GPR_ASSERT(ping_state_ == PingState::UNSCHEDULED); + CHECK(ping_state_ == PingState::UNSCHEDULED); ping_state_ = PingState::SCHEDULED; accumulator_ = 0; } @@ -67,7 +68,7 @@ class BdpEstimator { gpr_log(GPR_INFO, "bdp[%s]:start acc=%" PRId64 " est=%" PRId64, std::string(name_).c_str(), accumulator_, estimate_); } - GPR_ASSERT(ping_state_ == PingState::SCHEDULED); + CHECK(ping_state_ == PingState::SCHEDULED); ping_state_ = PingState::STARTED; ping_start_time_ = gpr_now(GPR_CLOCK_MONOTONIC); } diff --git a/src/core/lib/transport/call_size_estimator.cc b/src/core/lib/transport/call_arena_allocator.cc similarity index 96% rename from src/core/lib/transport/call_size_estimator.cc rename to src/core/lib/transport/call_arena_allocator.cc index 0892fa9e9cc..a0bae7cd146 100644 --- a/src/core/lib/transport/call_size_estimator.cc +++ b/src/core/lib/transport/call_arena_allocator.cc @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "src/core/lib/transport/call_size_estimator.h" +#include "src/core/lib/transport/call_arena_allocator.h" #include diff --git a/src/core/lib/transport/call_size_estimator.h b/src/core/lib/transport/call_arena_allocator.h similarity index 65% rename from src/core/lib/transport/call_size_estimator.h rename to src/core/lib/transport/call_arena_allocator.h index 75ae1d7256f..1db02bf6902 100644 --- a/src/core/lib/transport/call_size_estimator.h +++ b/src/core/lib/transport/call_arena_allocator.h @@ -12,15 +12,20 @@ // See the License for the specific language governing permissions and // limitations under the License. -#ifndef GRPC_SRC_CORE_LIB_TRANSPORT_CALL_SIZE_ESTIMATOR_H -#define GRPC_SRC_CORE_LIB_TRANSPORT_CALL_SIZE_ESTIMATOR_H +#ifndef GRPC_SRC_CORE_LIB_TRANSPORT_CALL_ARENA_ALLOCATOR_H +#define GRPC_SRC_CORE_LIB_TRANSPORT_CALL_ARENA_ALLOCATOR_H #include #include +#include #include +#include "src/core/lib/gprpp/ref_counted.h" +#include "src/core/lib/resource_quota/arena.h" +#include "src/core/lib/resource_quota/memory_quota.h" + namespace grpc_core { class CallSizeEstimator { @@ -47,6 +52,22 @@ class CallSizeEstimator { std::atomic call_size_estimate_; }; +class CallArenaAllocator : public RefCounted { + public: + CallArenaAllocator(MemoryAllocator allocator, size_t initial_size) + : allocator_(std::move(allocator)), call_size_estimator_(initial_size) {} + + Arena* MakeArena() { + return Arena::Create(call_size_estimator_.CallSizeEstimate(), &allocator_); + } + + void Destroy(Arena* arena) { arena->Destroy(); } + + private: + MemoryAllocator allocator_; + CallSizeEstimator call_size_estimator_; +}; + } // namespace grpc_core -#endif // GRPC_SRC_CORE_LIB_TRANSPORT_CALL_SIZE_ESTIMATOR_H +#endif // GRPC_SRC_CORE_LIB_TRANSPORT_CALL_ARENA_ALLOCATOR_H diff --git a/src/core/lib/transport/call_destination.h b/src/core/lib/transport/call_destination.h index e291bd703cb..938e0fd3725 100644 --- a/src/core/lib/transport/call_destination.h +++ b/src/core/lib/transport/call_destination.h @@ -22,14 +22,53 @@ namespace grpc_core { -// CallDestination is responsible for the processing of a CallHandler. -// It might be a transport, the server API, or a subchannel on the client (for -// instance). -class CallDestination : public Orphanable { +// UnstartedCallDestination is responsible for starting an UnstartedCallHandler +// and then processing operations on the resulting CallHandler. +// +// Examples of UnstartedCallDestinations include: +// - a load-balanced call in the client channel +// - a hijacking filter (see Interceptor) +class UnstartedCallDestination + : public DualRefCounted { + public: + ~UnstartedCallDestination() override = default; + // Start a call. The UnstartedCallHandler will be consumed by the Destination + // and started. + // Must be called from the party owned by the call, eg the following must + // hold: + // CHECK(GetContext() == unstarted_call_handler.party()); + virtual void StartCall(UnstartedCallHandler unstarted_call_handler) = 0; +}; + +// CallDestination is responsible for handling processing of an already started +// call. +// +// Examples of CallDestinations include: +// - a client transport +// - the server API +class CallDestination : public DualRefCounted { public: - virtual void StartCall(CallHandler call_handler) = 0; + virtual void HandleCall(CallHandler unstarted_call_handler) = 0; }; +template +auto MakeCallDestinationFromHandlerFunction(HC handle_call) { + class Impl : public CallDestination { + public: + explicit Impl(HC handle_call) : handle_call_(std::move(handle_call)) {} + + void Orphaned() override {} + + void HandleCall(CallHandler call_handler) override { + handle_call_(std::move(call_handler)); + } + + private: + HC handle_call_; + }; + return MakeRefCounted(std::move(handle_call)); +} + } // namespace grpc_core #endif // GRPC_SRC_CORE_LIB_TRANSPORT_CALL_DESTINATION_H diff --git a/src/core/lib/transport/call_filters.cc b/src/core/lib/transport/call_filters.cc index 5e3545ba6ce..2b89babdde4 100644 --- a/src/core/lib/transport/call_filters.cc +++ b/src/core/lib/transport/call_filters.cc @@ -14,6 +14,8 @@ #include "src/core/lib/transport/call_filters.h" +#include "absl/log/check.h" + #include #include "src/core/lib/gprpp/crash.h" @@ -27,6 +29,12 @@ void* Offset(void* base, size_t amt) { return static_cast(base) + amt; } namespace filters_detail { +void RunHalfClose(absl::Span ops, void* call_data) { + for (const auto& op : ops) { + op.half_close(Offset(call_data, op.call_offset), op.channel_data); + } +} + template OperationExecutor::~OperationExecutor() { if (promise_data_ != nullptr) { @@ -43,7 +51,7 @@ Poll> OperationExecutor::Start( if (layout->promise_size == 0) { // No call state ==> instantaneously ready auto r = InitStep(std::move(input), call_data); - GPR_ASSERT(r.ready()); + CHECK(r.ready()); return r; } promise_data_ = @@ -53,6 +61,7 @@ Poll> OperationExecutor::Start( template Poll> OperationExecutor::InitStep(T input, void* call_data) { + CHECK(input != nullptr); while (true) { if (ops_ == end_ops_) { return ResultOr{std::move(input), nullptr}; @@ -72,7 +81,7 @@ Poll> OperationExecutor::InitStep(T input, void* call_data) { template Poll> OperationExecutor::Step(void* call_data) { - GPR_DEBUG_ASSERT(promise_data_ != nullptr); + DCHECK_NE(promise_data_, nullptr); auto p = ContinueStep(call_data); if (p.ready()) { gpr_free_aligned(promise_data_); @@ -108,7 +117,7 @@ Poll InfallibleOperationExecutor::Start( if (layout->promise_size == 0) { // No call state ==> instantaneously ready auto r = InitStep(std::move(input), call_data); - GPR_ASSERT(r.ready()); + CHECK(r.ready()); return r; } promise_data_ = @@ -136,7 +145,7 @@ Poll InfallibleOperationExecutor::InitStep(T input, void* call_data) { template Poll InfallibleOperationExecutor::Step(void* call_data) { - GPR_DEBUG_ASSERT(promise_data_ != nullptr); + DCHECK_NE(promise_data_, nullptr); auto p = ContinueStep(call_data); if (p.ready()) { gpr_free_aligned(promise_data_); @@ -181,7 +190,7 @@ CallFilters::~CallFilters() { } void CallFilters::SetStack(RefCountedPtr stack) { - GPR_ASSERT(call_data_ == nullptr); + CHECK_EQ(call_data_, nullptr); stack_ = std::move(stack); call_data_ = gpr_malloc_aligned(stack_->data_.call_data_size, stack_->data_.call_data_alignment); @@ -216,18 +225,19 @@ void CallFilters::CancelDueToFailedPipeOperation(SourceLocation but_where) { } void CallFilters::PushServerTrailingMetadata(ServerMetadataHandle md) { + CHECK(md != nullptr); if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_promise_primitives)) { - gpr_log(GPR_DEBUG, "%s Push server trailing metadata: %s into %s", - GetContext()->DebugTag().c_str(), + gpr_log(GPR_INFO, "%s PushServerTrailingMetadata[%p]: %s into %s", + GetContext()->DebugTag().c_str(), this, md->DebugString().c_str(), DebugString().c_str()); } - GPR_ASSERT(md != nullptr); + CHECK(md != nullptr); if (server_trailing_metadata_ != nullptr) return; server_trailing_metadata_ = std::move(md); client_initial_metadata_state_.CloseWithError(); server_initial_metadata_state_.CloseSending(); client_to_server_message_state_.CloseWithError(); - server_to_client_message_state_.CloseWithError(); + server_to_client_message_state_.CloseSending(); server_trailing_metadata_waiter_.Wake(); } @@ -284,7 +294,7 @@ RefCountedPtr CallFilters::StackBuilder::Build() { // CallFilters::PipeState void filters_detail::PipeState::Start() { - GPR_DEBUG_ASSERT(!started_); + DCHECK(!started_); started_ = true; wait_recv_.Wake(); } @@ -358,6 +368,10 @@ void filters_detail::PipeState::DropPush() { case ValueState::kReady: case ValueState::kProcessing: case ValueState::kWaiting: + if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_promise_primitives)) { + gpr_log(GPR_INFO, "%p drop push in state %s", this, + DebugString().c_str()); + } state_ = ValueState::kError; wait_recv_.Wake(); break; @@ -374,6 +388,10 @@ void filters_detail::PipeState::DropPull() { case ValueState::kReady: case ValueState::kProcessing: case ValueState::kWaiting: + if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_promise_primitives)) { + gpr_log(GPR_INFO, "%p drop pull in state %s", this, + DebugString().c_str()); + } state_ = ValueState::kError; wait_send_.Wake(); break; @@ -386,9 +404,12 @@ void filters_detail::PipeState::DropPull() { Poll filters_detail::PipeState::PollPush() { switch (state_) { - case ValueState::kIdle: // Read completed and new read started => we see waiting here case ValueState::kWaiting: + state_ = ValueState::kReady; + wait_recv_.Wake(); + return wait_send_.pending(); + case ValueState::kIdle: case ValueState::kClosed: return Success{}; case ValueState::kQueued: diff --git a/src/core/lib/transport/call_filters.h b/src/core/lib/transport/call_filters.h index 0bd9a257314..fd267fd1685 100644 --- a/src/core/lib/transport/call_filters.h +++ b/src/core/lib/transport/call_filters.h @@ -19,6 +19,8 @@ #include #include +#include "absl/log/check.h" + #include #include "src/core/lib/gprpp/ref_counted.h" @@ -41,6 +43,7 @@ // - OnServerInitialMetadata - $VALUE_TYPE = ServerMetadata // - OnServerToClientMessage - $VALUE_TYPE = Message // - OnClientToServerMessage - $VALUE_TYPE = Message +// - OnClientToServerHalfClose - no value // - OnServerTrailingMetadata - $VALUE_TYPE = ServerMetadata // - OnFinalize - special, see below // These members define an interception point for a particular event in @@ -155,6 +158,10 @@ struct CallConstructor struct ResultOr { + ResultOr(T ok, ServerMetadataHandle error) + : ok(std::move(ok)), error(std::move(error)) { + CHECK((this->ok == nullptr) ^ (this->error == nullptr)); + } T ok; ServerMetadataHandle error; }; @@ -186,6 +193,16 @@ struct Operator { void (*early_destroy)(void* promise_data); }; +struct HalfCloseOperator { + // Pointer to corresponding channel data for this filter + void* channel_data; + // Offset of the call data for this filter within the call data memory + size_t call_offset; + void (*half_close)(void* call_data, void* channel_data); +}; + +void RunHalfClose(absl::Span ops, void* call_data); + // We divide operations into fallible and infallible. // Fallible operations can fail, and that failure terminates the call. // Infallible operations cannot fail. @@ -259,6 +276,32 @@ void AddOp(FilterType* channel_data, size_t call_offset, to); } +template +void AddHalfClose(FilterType* channel_data, size_t call_offset, + void (FilterType::Call::*)(), + std::vector& to) { + to.push_back( + HalfCloseOperator{channel_data, call_offset, [](void* call_data, void*) { + static_cast(call_data) + ->OnClientToServerHalfClose(); + }}); +} + +template +void AddHalfClose(FilterType* channel_data, size_t call_offset, + void (FilterType::Call::*)(FilterType*), + std::vector& to) { + to.push_back(HalfCloseOperator{ + channel_data, call_offset, [](void* call_data, void* channel_data) { + static_cast(call_data) + ->OnClientToServerHalfClose(static_cast(channel_data)); + }}); +} + +template +void AddHalfClose(FilterType*, size_t, const NoInterceptor*, + std::vector&) {} + // const NoInterceptor $EVENT // These do nothing, and specifically DO NOT add an operation to the layout. // Supported for fallible & infallible operations. @@ -846,6 +889,7 @@ struct StackData { Layout> client_initial_metadata; Layout> server_initial_metadata; Layout> client_to_server_messages; + std::vector client_to_server_half_close; Layout> server_to_client_messages; Layout> server_trailing_metadata; // A list of finalizers for this call. @@ -922,7 +966,7 @@ struct StackData { filter_destructor.push_back(FilterDestructor{ call_offset, [](void* call_data) { - static_cast(call_data)->~Call(); + Destruct(static_cast(call_data)); }, }); } @@ -966,6 +1010,14 @@ struct StackData { channel_data, call_offset, client_to_server_messages); } + template + void AddClientToServerHalfClose(FilterType* channel_data, + size_t call_offset) { + AddHalfClose(channel_data, call_offset, + &FilterType::Call::OnClientToServerHalfClose, + client_to_server_half_close); + } + template void AddServerToClientMessageOp(FilterType* channel_data, size_t call_offset) { @@ -986,13 +1038,13 @@ struct StackData { template void AddFinalizer(FilterType*, size_t, const NoInterceptor* p) { - GPR_DEBUG_ASSERT(p == &FilterType::Call::OnFinalize); + DCHECK(p == &FilterType::Call::OnFinalize); } template void AddFinalizer(FilterType* channel_data, size_t call_offset, void (FilterType::Call::*p)(const grpc_call_final_info*)) { - GPR_DEBUG_ASSERT(p == &FilterType::Call::OnFinalize); + DCHECK(p == &FilterType::Call::OnFinalize); finalizers.push_back(Finalizer{ channel_data, call_offset, @@ -1007,7 +1059,7 @@ struct StackData { void AddFinalizer(FilterType* channel_data, size_t call_offset, void (FilterType::Call::*p)(const grpc_call_final_info*, FilterType*)) { - GPR_DEBUG_ASSERT(p == &FilterType::Call::OnFinalize); + DCHECK(p == &FilterType::Call::OnFinalize); finalizers.push_back(Finalizer{ channel_data, call_offset, @@ -1037,11 +1089,11 @@ class OperationExecutor { OperationExecutor(OperationExecutor&& other) noexcept : ops_(other.ops_), end_ops_(other.end_ops_) { // Movable iff we're not running. - GPR_DEBUG_ASSERT(other.promise_data_ == nullptr); + DCHECK_EQ(other.promise_data_, nullptr); } OperationExecutor& operator=(OperationExecutor&& other) noexcept { - GPR_DEBUG_ASSERT(other.promise_data_ == nullptr); - GPR_DEBUG_ASSERT(promise_data_ == nullptr); + DCHECK_EQ(other.promise_data_, nullptr); + DCHECK_EQ(promise_data_, nullptr); ops_ = other.ops_; end_ops_ = other.end_ops_; return *this; @@ -1090,12 +1142,12 @@ class InfallibleOperationExecutor { InfallibleOperationExecutor(InfallibleOperationExecutor&& other) noexcept : ops_(other.ops_), end_ops_(other.end_ops_) { // Movable iff we're not running. - GPR_DEBUG_ASSERT(other.promise_data_ == nullptr); + DCHECK_EQ(other.promise_data_, nullptr); } InfallibleOperationExecutor& operator=( InfallibleOperationExecutor&& other) noexcept { - GPR_DEBUG_ASSERT(other.promise_data_ == nullptr); - GPR_DEBUG_ASSERT(promise_data_ == nullptr); + DCHECK_EQ(other.promise_data_, nullptr); + DCHECK_EQ(promise_data_, nullptr); ops_ = other.ops_; end_ops_ = other.end_ops_; return *this; @@ -1211,6 +1263,7 @@ class ServerTrailingMetadataInterceptor { static const NoInterceptor OnClientInitialMetadata; static const NoInterceptor OnServerInitialMetadata; static const NoInterceptor OnClientToServerMessage; + static const NoInterceptor OnClientToServerHalfClose; static const NoInterceptor OnServerToClientMessage; static const NoInterceptor OnFinalize; void OnServerTrailingMetadata(ServerMetadata& md, @@ -1234,11 +1287,54 @@ template const NoInterceptor ServerTrailingMetadataInterceptor::Call::OnClientToServerMessage; template +const NoInterceptor + ServerTrailingMetadataInterceptor::Call::OnClientToServerHalfClose; +template const NoInterceptor ServerTrailingMetadataInterceptor::Call::OnServerToClientMessage; template const NoInterceptor ServerTrailingMetadataInterceptor::Call::OnFinalize; +template +class ClientInitialMetadataInterceptor { + public: + class Call { + public: + auto OnClientInitialMetadata(ClientMetadata& md, + ClientInitialMetadataInterceptor* filter) { + return filter->fn_(md); + } + static const NoInterceptor OnServerInitialMetadata; + static const NoInterceptor OnClientToServerMessage; + static const NoInterceptor OnClientToServerHalfClose; + static const NoInterceptor OnServerToClientMessage; + static const NoInterceptor OnServerTrailingMetadata; + static const NoInterceptor OnFinalize; + }; + + explicit ClientInitialMetadataInterceptor(Fn fn) : fn_(std::move(fn)) {} + + private: + GPR_NO_UNIQUE_ADDRESS Fn fn_; +}; +template +const NoInterceptor + ClientInitialMetadataInterceptor::Call::OnServerInitialMetadata; +template +const NoInterceptor + ClientInitialMetadataInterceptor::Call::OnClientToServerMessage; +template +const NoInterceptor + ClientInitialMetadataInterceptor::Call::OnClientToServerHalfClose; +template +const NoInterceptor + ClientInitialMetadataInterceptor::Call::OnServerToClientMessage; +template +const NoInterceptor + ClientInitialMetadataInterceptor::Call::OnServerTrailingMetadata; +template +const NoInterceptor ClientInitialMetadataInterceptor::Call::OnFinalize; + } // namespace filters_detail // Execution environment for a stack of filters. @@ -1277,6 +1373,7 @@ class CallFilters { data_.AddClientInitialMetadataOp(filter, call_offset); data_.AddServerInitialMetadataOp(filter, call_offset); data_.AddClientToServerMessageOp(filter, call_offset); + data_.AddClientToServerHalfClose(filter, call_offset); data_.AddServerToClientMessageOp(filter, call_offset); data_.AddServerTrailingMetadataOp(filter, call_offset); data_.AddFinalizer(filter, call_offset, &FilterType::Call::OnFinalize); @@ -1296,6 +1393,14 @@ class CallFilters { AddOwnedObject([](void* p) { delete static_cast(p); }, p.release()); } + template + void AddOnClientInitialMetadata(Fn fn) { + auto filter = std::make_unique< + filters_detail::ClientInitialMetadataInterceptor>(std::move(fn)); + Add(filter.get()); + AddOwnedObject(std::move(filter)); + } + template void AddOnServerTrailingMetadata(Fn fn) { auto filter = std::make_unique< @@ -1310,44 +1415,6 @@ class CallFilters { filters_detail::StackData data_; }; - class NextMessage { - public: - NextMessage() : has_value_(false), cancelled_(false) {} - explicit NextMessage(MessageHandle value) - : has_value_(true), value_(std::move(value)) {} - explicit NextMessage(bool cancelled) - : has_value_(false), cancelled_(cancelled) {} - NextMessage(const NextMessage&) = delete; - NextMessage& operator=(const NextMessage&) = delete; - NextMessage(NextMessage&& other) noexcept = default; - NextMessage& operator=(NextMessage&& other) = default; - - using value_type = MessageHandle; - - void reset() { - has_value_ = false; - cancelled_ = false; - value_.reset(); - } - bool has_value() const { return has_value_; } - const MessageHandle& value() const { - GPR_DEBUG_ASSERT(has_value_); - return value_; - } - MessageHandle& value() { - GPR_DEBUG_ASSERT(has_value_); - return value_; - } - const MessageHandle& operator*() const { return value(); } - MessageHandle& operator*() { return value(); } - bool cancelled() const { return !has_value_ && cancelled_; } - - private: - bool has_value_; - bool cancelled_; - MessageHandle value_; - }; - explicit CallFilters(ClientMetadataHandle client_initial_metadata); ~CallFilters(); @@ -1422,12 +1489,21 @@ class CallFilters { public: Push(CallFilters* filters, T x) : filters_(filters), value_(std::move(x)) { + CHECK(value_ != nullptr); + if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_promise_primitives)) { + gpr_log(GPR_INFO, "BeginPush[%p|%p]: %s", &state(), this, + state().DebugString().c_str()); + } + CHECK_EQ(push_slot(), nullptr); state().BeginPush(); push_slot() = this; } ~Push() { if (filters_ != nullptr) { - state().DropPush(); + if (value_ != nullptr) { + state().DropPush(); + } + CHECK(push_slot() == this); push_slot() = nullptr; } } @@ -1438,16 +1514,56 @@ class CallFilters { : filters_(std::exchange(other.filters_, nullptr)), value_(std::move(other.value_)) { if (filters_ != nullptr) { - GPR_DEBUG_ASSERT(push_slot() == &other); + DCHECK(push_slot() == &other); push_slot() = this; } } Push& operator=(Push&&) = delete; - Poll operator()() { return state().PollPush(); } + Poll operator()() { + if (value_ == nullptr) { + CHECK_EQ(filters_, nullptr); + if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_promise_primitives)) { + gpr_log(GPR_INFO, "Push[|%p]: already done", this); + } + return Success{}; + } + if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_promise_primitives)) { + gpr_log(GPR_INFO, "Push[%p|%p]: %s", &state(), this, + state().DebugString().c_str()); + } + auto r = state().PollPush(); + if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_promise_primitives)) { + if (r.pending()) { + gpr_log(GPR_INFO, "Push[%p|%p]: pending; %s", &state(), this, + state().DebugString().c_str()); + } else if (r.value().ok()) { + gpr_log(GPR_INFO, "Push[%p|%p]: success; %s", &state(), this, + state().DebugString().c_str()); + } else { + gpr_log(GPR_INFO, "Push[%p|%p]: failure; %s", &state(), this, + state().DebugString().c_str()); + } + } + if (r.ready()) { + push_slot() = nullptr; + filters_ = nullptr; + } + return r; + } - T TakeValue() { return std::move(value_); } + T TakeValue() { + if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_promise_primitives)) { + gpr_log(GPR_INFO, "Push[%p|%p]: take value; %s", &state(), this, + state().DebugString().c_str()); + } + CHECK(value_ != nullptr); + CHECK(filters_ != nullptr); + push_slot() = nullptr; + filters_ = nullptr; + return std::move(value_); + } absl::string_view DebugString() const { return value_ != nullptr ? " (not pulled)" : ""; @@ -1485,6 +1601,10 @@ class CallFilters { PullMaybe& operator=(PullMaybe&&) = delete; Poll>> operator()() { + if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_promise_primitives)) { + gpr_log(GPR_INFO, "PullMaybe[%p|%p]: %s executor:%d", &state(), this, + state().DebugString().c_str(), executor_.IsRunning()); + } if (executor_.IsRunning()) { auto c = state().PollClosed(); if (c.ready() && c.value()) { @@ -1517,7 +1637,7 @@ class CallFilters { Poll> p) { auto* r = p.value_if_ready(); if (r == nullptr) return Pending{}; - GPR_DEBUG_ASSERT(!executor_.IsRunning()); + DCHECK(!executor_.IsRunning()); state().AckPull(); if (r->ok != nullptr) return std::move(r->ok); filters_->PushServerTrailingMetadata(std::move(r->error)); @@ -1528,6 +1648,8 @@ class CallFilters { filters_detail::OperationExecutor executor_; }; + template ( + filters_detail::StackData::*half_close_layout_ptr)> class PullMessage { public: explicit PullMessage(CallFilters* filters) : filters_(filters) {} @@ -1544,23 +1666,43 @@ class CallFilters { executor_(std::move(other.executor_)) {} PullMessage& operator=(PullMessage&&) = delete; - Poll operator()() { + Poll>> operator()() { + CHECK(filters_ != nullptr); + if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_promise_primitives)) { + gpr_log(GPR_INFO, "PullMessage[%p|%p]: %s executor:%d", &state(), + this, state().DebugString().c_str(), executor_.IsRunning()); + } if (executor_.IsRunning()) { auto c = state().PollClosed(); if (c.ready() && c.value()) { filters_->CancelDueToFailedPipeOperation(); - return NextMessage(true); + return Failure{}; } return FinishOperationExecutor(executor_.Step(filters_->call_data_)); } auto p = state().PollPull(); auto* r = p.value_if_ready(); - if (r == nullptr) return Pending{}; + if (r == nullptr) { + if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_promise_primitives)) { + gpr_log(GPR_INFO, "PullMessage[%p] pending: %s executor:%d", + &state(), state().DebugString().c_str(), + executor_.IsRunning()); + } + return Pending{}; + } if (!r->ok()) { filters_->CancelDueToFailedPipeOperation(); - return NextMessage(true); + return Failure{}; } - if (!**r) return NextMessage(false); + if (!**r) { + if (half_close_layout_ptr != nullptr) { + filters_detail::RunHalfClose( + filters_->stack_->data_.*half_close_layout_ptr, + filters_->call_data_); + } + return absl::nullopt; + } + CHECK(filters_ != nullptr); return FinishOperationExecutor(executor_.Start( layout(), push()->TakeValue(), filters_->call_data_)); } @@ -1573,15 +1715,19 @@ class CallFilters { return &(filters_->stack_->data_.*layout_ptr); } - Poll FinishOperationExecutor( - Poll> p) { + Poll>> + FinishOperationExecutor(Poll> p) { auto* r = p.value_if_ready(); if (r == nullptr) return Pending{}; - GPR_DEBUG_ASSERT(!executor_.IsRunning()); + DCHECK(!executor_.IsRunning()); + if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_promise_primitives)) { + gpr_log(GPR_INFO, "PullMessage[%p|%p] executor done: %s", &state(), + this, state().DebugString().c_str()); + } state().AckPull(); - if (r->ok != nullptr) return NextMessage(std::move(r->ok)); + if (r->ok != nullptr) return std::move(r->ok); filters_->PushServerTrailingMetadata(std::move(r->error)); - return NextMessage(true); + return Failure{}; } CallFilters* filters_; @@ -1622,7 +1768,7 @@ class CallFilters { filters_->CancelDueToFailedPipeOperation(); return Failure{}; } - GPR_ASSERT(filters_->client_initial_metadata_ != nullptr); + CHECK(filters_->client_initial_metadata_ != nullptr); return FinishOperationExecutor(executor_.Start( &filters_->stack_->data_.client_initial_metadata, std::move(filters_->client_initial_metadata_), filters_->call_data_)); @@ -1637,7 +1783,7 @@ class CallFilters { Poll> p) { auto* r = p.value_if_ready(); if (r == nullptr) return Pending{}; - GPR_DEBUG_ASSERT(!executor_.IsRunning()); + DCHECK(!executor_.IsRunning()); state().AckPull(); if (r->ok != nullptr) return std::move(r->ok); filters_->PushServerTrailingMetadata(std::move(r->error)); @@ -1699,9 +1845,21 @@ class CallFilters { return std::move(filters_->server_trailing_metadata_); } // Otherwise we need to process it through all the filters. - return executor_.Start(&filters_->stack_->data_.server_trailing_metadata, - std::move(filters_->server_trailing_metadata_), - filters_->call_data_); + auto r = executor_.Start( + &filters_->stack_->data_.server_trailing_metadata, + std::move(filters_->server_trailing_metadata_), filters_->call_data_); + if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_promise_primitives)) { + if (r.pending()) { + gpr_log(GPR_INFO, + "%s PullServerTrailingMetadata[%p]: Pending(but executing)", + GetContext()->DebugTag().c_str(), filters_); + } else { + gpr_log(GPR_INFO, "%s PullServerTrailingMetadata[%p]: Ready: %s", + GetContext()->DebugTag().c_str(), filters_, + r.value()->DebugString().c_str()); + } + } + return r; } private: @@ -1755,7 +1913,7 @@ inline auto CallFilters::PullClientInitialMetadata() { } inline auto CallFilters::PushServerInitialMetadata(ServerMetadataHandle md) { - GPR_ASSERT(md != nullptr); + CHECK(md != nullptr); return [p = ServerInitialMetadataPromises::Push{ this, std::move(md)}]() mutable { return p(); }; } @@ -1765,23 +1923,24 @@ inline auto CallFilters::PullServerInitialMetadata() { } inline auto CallFilters::PushClientToServerMessage(MessageHandle message) { - GPR_ASSERT(message != nullptr); + CHECK(message != nullptr); return [p = ClientToServerMessagePromises::Push{ this, std::move(message)}]() mutable { return p(); }; } inline auto CallFilters::PullClientToServerMessage() { - return ClientToServerMessagePromises::PullMessage{this}; + return ClientToServerMessagePromises::PullMessage< + &filters_detail::StackData::client_to_server_half_close>{this}; } inline auto CallFilters::PushServerToClientMessage(MessageHandle message) { - GPR_ASSERT(message != nullptr); + CHECK(message != nullptr); return [p = ServerToClientMessagePromises::Push{ this, std::move(message)}]() mutable { return p(); }; } inline auto CallFilters::PullServerToClientMessage() { - return ServerToClientMessagePromises::PullMessage{this}; + return ServerToClientMessagePromises::PullMessage{this}; } inline auto CallFilters::PullServerTrailingMetadata() { diff --git a/src/core/lib/transport/call_spine.cc b/src/core/lib/transport/call_spine.cc index 6b8ce59916e..eb05608663f 100644 --- a/src/core/lib/transport/call_spine.cc +++ b/src/core/lib/transport/call_spine.cc @@ -16,6 +16,9 @@ #include +#include "src/core/lib/promise/for_each.h" +#include "src/core/lib/promise/try_seq.h" + namespace grpc_core { void ForwardCall(CallHandler call_handler, CallInitiator call_initiator) { @@ -89,12 +92,14 @@ void ForwardCall(CallHandler call_handler, CallInitiator call_initiator) { }); } -CallInitiatorAndHandler MakeCall( +CallInitiatorAndHandler MakeCallPair( ClientMetadataHandle client_initial_metadata, grpc_event_engine::experimental::EventEngine* event_engine, Arena* arena, - bool is_arena_owned) { - auto spine = CallSpine::Create(std::move(client_initial_metadata), - event_engine, arena, is_arena_owned); + RefCountedPtr call_arena_allocator_if_arena_is_owned, + grpc_call_context_element* legacy_context) { + auto spine = CallSpine::Create( + std::move(client_initial_metadata), event_engine, arena, + std::move(call_arena_allocator_if_arena_is_owned), legacy_context); return {CallInitiator(spine), UnstartedCallHandler(spine)}; } diff --git a/src/core/lib/transport/call_spine.h b/src/core/lib/transport/call_spine.h index 514c92c245d..59c1fc2da16 100644 --- a/src/core/lib/transport/call_spine.h +++ b/src/core/lib/transport/call_spine.h @@ -15,19 +15,21 @@ #ifndef GRPC_SRC_CORE_LIB_TRANSPORT_CALL_SPINE_H #define GRPC_SRC_CORE_LIB_TRANSPORT_CALL_SPINE_H +#include "absl/log/check.h" + #include #include +#include "src/core/lib/channel/context.h" #include "src/core/lib/promise/detail/status.h" -#include "src/core/lib/promise/for_each.h" #include "src/core/lib/promise/if.h" #include "src/core/lib/promise/latch.h" #include "src/core/lib/promise/party.h" #include "src/core/lib/promise/pipe.h" -#include "src/core/lib/promise/prioritized_race.h" #include "src/core/lib/promise/promise.h" #include "src/core/lib/promise/status_flag.h" -#include "src/core/lib/promise/try_seq.h" +#include "src/core/lib/transport/call_arena_allocator.h" +#include "src/core/lib/transport/call_filters.h" #include "src/core/lib/transport/message.h" #include "src/core/lib/transport/metadata.h" @@ -80,13 +82,15 @@ class CallSpineInterface { virtual Promise PushServerInitialMetadata( absl::optional md) = 0; virtual Promise WasCancelled() = 0; + virtual ClientMetadata& UnprocessedClientInitialMetadata() = 0; + virtual void V2HackToStartCallWithoutACallFilterStack() = 0; // Wrap a promise so that if it returns failure it automatically cancels // the rest of the call. // The resulting (returned) promise will resolve to Empty. template auto CancelIfFails(Promise promise) { - GPR_DEBUG_ASSERT(GetContext() == &party()); + DCHECK(GetContext() == &party()); using P = promise_detail::PromiseLike; using ResultType = typename P::Result; return Map(std::move(promise), [this](ResultType r) { @@ -149,7 +153,7 @@ class PipeBasedCallSpine : public CallSpineInterface { Promise>> PullServerInitialMetadata() final { - GPR_DEBUG_ASSERT(GetContext() == &party()); + DCHECK(GetContext() == &party()); return Map(server_initial_metadata().receiver.Next(), [](NextResult md) -> ValueOrFailure> { @@ -162,41 +166,41 @@ class PipeBasedCallSpine : public CallSpineInterface { } Promise PullServerTrailingMetadata() final { - GPR_DEBUG_ASSERT(GetContext() == &party()); + DCHECK(GetContext() == &party()); return cancel_latch().Wait(); } Promise>> PullServerToClientMessage() final { - GPR_DEBUG_ASSERT(GetContext() == &party()); + DCHECK(GetContext() == &party()); return Map(server_to_client_messages().receiver.Next(), MapNextMessage); } Promise PushClientToServerMessage(MessageHandle message) final { - GPR_DEBUG_ASSERT(GetContext() == &party()); + DCHECK(GetContext() == &party()); return Map(client_to_server_messages().sender.Push(std::move(message)), [](bool r) { return StatusFlag(r); }); } Promise>> PullClientToServerMessage() final { - GPR_DEBUG_ASSERT(GetContext() == &party()); + DCHECK(GetContext() == &party()); return Map(client_to_server_messages().receiver.Next(), MapNextMessage); } Promise PushServerToClientMessage(MessageHandle message) final { - GPR_DEBUG_ASSERT(GetContext() == &party()); + DCHECK(GetContext() == &party()); return Map(server_to_client_messages().sender.Push(std::move(message)), [](bool r) { return StatusFlag(r); }); } void FinishSends() final { - GPR_DEBUG_ASSERT(GetContext() == &party()); + DCHECK(GetContext() == &party()); client_to_server_messages().sender.Close(); } void PushServerTrailingMetadata(ServerMetadataHandle metadata) final { - GPR_DEBUG_ASSERT(GetContext() == &party()); + DCHECK(GetContext() == &party()); auto& c = cancel_latch(); if (c.is_set()) return; const bool was_cancelled = @@ -211,13 +215,13 @@ class PipeBasedCallSpine : public CallSpineInterface { } Promise WasCancelled() final { - GPR_DEBUG_ASSERT(GetContext() == &party()); + DCHECK(GetContext() == &party()); return was_cancelled_latch().Wait(); } Promise> PullClientInitialMetadata() final { - GPR_DEBUG_ASSERT(GetContext() == &party()); + DCHECK(GetContext() == &party()); return Map(client_initial_metadata().receiver.Next(), [](NextResult md) -> ValueOrFailure { @@ -228,7 +232,7 @@ class PipeBasedCallSpine : public CallSpineInterface { Promise PushServerInitialMetadata( absl::optional md) final { - GPR_DEBUG_ASSERT(GetContext() == &party()); + DCHECK(GetContext() == &party()); return If( md.has_value(), [&md, this]() { @@ -252,58 +256,149 @@ class PipeBasedCallSpine : public CallSpineInterface { } }; -class CallSpine final : public PipeBasedCallSpine, public Party { +class CallSpine final : public CallSpineInterface, public Party { public: static RefCountedPtr Create( ClientMetadataHandle client_initial_metadata, grpc_event_engine::experimental::EventEngine* event_engine, Arena* arena, - bool is_arena_owned) { - auto spine = RefCountedPtr( - arena->New(event_engine, arena, is_arena_owned)); - spine->SpawnInfallible( - "push_client_initial_metadata", - [spine = spine.get(), client_initial_metadata = std::move( - client_initial_metadata)]() mutable { - return Map(spine->client_initial_metadata_.sender.Push( - std::move(client_initial_metadata)), - [](bool) { return Empty{}; }); - }); - return spine; + RefCountedPtr call_arena_allocator_if_arena_is_owned, + grpc_call_context_element* legacy_context) { + return RefCountedPtr(arena->New( + std::move(client_initial_metadata), event_engine, arena, + std::move(call_arena_allocator_if_arena_is_owned), legacy_context)); + } + + ~CallSpine() override { + if (legacy_context_is_owned_) { + for (size_t i = 0; i < GRPC_CONTEXT_COUNT; i++) { + grpc_call_context_element& elem = legacy_context_[i]; + if (elem.destroy != nullptr) elem.destroy(&elem); + } + } } - Pipe& client_initial_metadata() override { - return client_initial_metadata_; - } - Pipe& server_initial_metadata() override { - return server_initial_metadata_; - } - Pipe& client_to_server_messages() override { - return client_to_server_messages_; - } - Pipe& server_to_client_messages() override { - return server_to_client_messages_; - } - Latch& cancel_latch() override { return cancel_latch_; } - Latch& was_cancelled_latch() override { return was_cancelled_latch_; } + CallFilters& call_filters() { return call_filters_; } + Party& party() override { return *this; } + Arena* arena() override { return arena_; } + void IncrementRefCount() override { Party::IncrementRefCount(); } + void Unref() override { Party::Unref(); } + Promise>> + PullServerInitialMetadata() override { + return call_filters().PullServerInitialMetadata(); + } + + Promise PullServerTrailingMetadata() override { + return call_filters().PullServerTrailingMetadata(); + } + + Promise PushClientToServerMessage( + MessageHandle message) override { + return call_filters().PushClientToServerMessage(std::move(message)); + } + + Promise>> + PullClientToServerMessage() override { + return call_filters().PullClientToServerMessage(); + } + + Promise PushServerToClientMessage( + MessageHandle message) override { + return call_filters().PushServerToClientMessage(std::move(message)); + } + + Promise>> + PullServerToClientMessage() override { + return call_filters().PullServerToClientMessage(); + } + + void PushServerTrailingMetadata(ServerMetadataHandle md) override { + call_filters().PushServerTrailingMetadata(std::move(md)); + } + + void FinishSends() override { call_filters().FinishClientToServerSends(); } + + Promise> PullClientInitialMetadata() + override { + return call_filters().PullClientInitialMetadata(); + } + + Promise PushServerInitialMetadata( + absl::optional md) override { + if (md.has_value()) { + return call_filters().PushServerInitialMetadata(std::move(*md)); + } else { + call_filters().NoServerInitialMetadata(); + return Immediate(Success{}); + } + } + + Promise WasCancelled() override { + return call_filters().WasCancelled(); + } + + ClientMetadata& UnprocessedClientInitialMetadata() override { + return *call_filters().unprocessed_client_initial_metadata(); + } + + // TODO(ctiller): re-evaluate legacy context apis + grpc_call_context_element& legacy_context(grpc_context_index index) const { + return legacy_context_[index]; + } + + grpc_call_context_element* legacy_context() { return legacy_context_; } + + grpc_event_engine::experimental::EventEngine* event_engine() const override { + return event_engine_; + } + + void V2HackToStartCallWithoutACallFilterStack() override { + CallFilters::StackBuilder empty_stack_builder; + call_filters().SetStack(empty_stack_builder.Build()); + } + private: friend class Arena; - CallSpine(grpc_event_engine::experimental::EventEngine* event_engine, - Arena* arena, bool is_arena_owned) + CallSpine(ClientMetadataHandle client_initial_metadata, + grpc_event_engine::experimental::EventEngine* event_engine, + Arena* arena, + RefCountedPtr call_arena_allocator, + grpc_call_context_element* legacy_context) : Party(1), + call_filters_(std::move(client_initial_metadata)), arena_(arena), - is_arena_owned_(is_arena_owned), - event_engine_(event_engine) {} + event_engine_(event_engine), + call_arena_allocator_if_arena_is_owned_( + std::move(call_arena_allocator)) { + if (legacy_context == nullptr) { + legacy_context_ = static_cast( + arena->Alloc(sizeof(grpc_call_context_element) * GRPC_CONTEXT_COUNT)); + memset(legacy_context_, 0, + sizeof(grpc_call_context_element) * GRPC_CONTEXT_COUNT); + legacy_context_is_owned_ = true; + } else { + legacy_context_ = legacy_context; + legacy_context_is_owned_ = false; + } + } - class ScopedContext : public ScopedActivity, - public promise_detail::Context { + class ScopedContext + : public ScopedActivity, + public promise_detail::Context, + public promise_detail::Context< + grpc_event_engine::experimental::EventEngine>, + public promise_detail::Context { public: explicit ScopedContext(CallSpine* spine) - : ScopedActivity(&spine->party()), Context(spine->arena()) {} + : ScopedActivity(spine), + Context(spine->arena_), + Context( + spine->event_engine()), + Context(spine->legacy_context_) {} }; bool RunParty() override { @@ -312,35 +407,30 @@ class CallSpine final : public PipeBasedCallSpine, public Party { } void PartyOver() override { - Arena* a = arena(); + Arena* a = arena_; + RefCountedPtr call_arena_allocator_if_arena_is_owned = + std::move(call_arena_allocator_if_arena_is_owned_); { ScopedContext context(this); CancelRemainingParticipants(); a->DestroyManagedNewObjects(); } this->~CallSpine(); - a->Destroy(); - } - - grpc_event_engine::experimental::EventEngine* event_engine() const override { - return event_engine_; + if (call_arena_allocator_if_arena_is_owned != nullptr) { + call_arena_allocator_if_arena_is_owned->Destroy(a); + } } - Arena* arena_; - bool is_arena_owned_; - // Initial metadata from client to server - Pipe client_initial_metadata_{arena()}; - // Initial metadata from server to client - Pipe server_initial_metadata_{arena()}; - // Messages travelling from the application to the transport. - Pipe client_to_server_messages_{arena()}; - // Messages travelling from the transport to the application. - Pipe server_to_client_messages_{arena()}; - // Latch that can be set to terminate the call - Latch cancel_latch_; - Latch was_cancelled_latch_; + // Call filters/pipes part of the spine + CallFilters call_filters_; + Arena* const arena_; // Event engine associated with this call grpc_event_engine::experimental::EventEngine* const event_engine_; + // Legacy context + // TODO(ctiller): remove + grpc_call_context_element* legacy_context_; + RefCountedPtr call_arena_allocator_if_arena_is_owned_; + bool legacy_context_is_owned_; }; class CallInitiator { @@ -428,6 +518,8 @@ class CallHandler { auto PullMessage() { return spine_->PullClientToServerMessage(); } + auto WasCancelled() { return spine_->WasCancelled(); } + template void SpawnGuarded(absl::string_view name, PromiseFactory promise_factory, DebugLocation whence = {}) { @@ -446,6 +538,19 @@ class CallHandler { Arena* arena() { return spine_->arena(); } + grpc_event_engine::experimental::EventEngine* event_engine() const { + return DownCast(spine_.get())->event_engine(); + } + + // TODO(ctiller): re-evaluate this API + const grpc_call_context_element* legacy_context() const { + return DownCast(spine_.get())->legacy_context(); + } + + grpc_call_context_element* legacy_context() { + return DownCast(spine_.get())->legacy_context(); + } + private: RefCountedPtr spine_; }; @@ -482,8 +587,19 @@ class UnstartedCallHandler { return spine_->party().SpawnWaitable(name, std::move(promise_factory)); } + ClientMetadata& UnprocessedClientInitialMetadata() { + return spine_->UnprocessedClientInitialMetadata(); + } + CallHandler V2HackToStartCallWithoutACallFilterStack() { - GPR_ASSERT(DownCast(spine_.get()) != nullptr); + spine_->V2HackToStartCallWithoutACallFilterStack(); + return CallHandler(std::move(spine_)); + } + + CallHandler StartCall(RefCountedPtr call_filters) { + DownCast(spine_.get()) + ->call_filters() + .SetStack(std::move(call_filters)); return CallHandler(std::move(spine_)); } @@ -498,10 +614,11 @@ struct CallInitiatorAndHandler { UnstartedCallHandler handler; }; -CallInitiatorAndHandler MakeCall( +CallInitiatorAndHandler MakeCallPair( ClientMetadataHandle client_initial_metadata, grpc_event_engine::experimental::EventEngine* event_engine, Arena* arena, - bool is_arena_owned); + RefCountedPtr call_arena_allocator_if_arena_is_owned, + grpc_call_context_element* legacy_context); template auto OutgoingMessages(CallHalf h) { diff --git a/src/core/lib/transport/interception_chain.cc b/src/core/lib/transport/interception_chain.cc new file mode 100644 index 00000000000..4d6ad34e315 --- /dev/null +++ b/src/core/lib/transport/interception_chain.cc @@ -0,0 +1,156 @@ +// Copyright 2024 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. + +#include "src/core/lib/transport/interception_chain.h" + +#include + +#include + +#include "src/core/lib/gprpp/match.h" +#include "src/core/lib/transport/call_destination.h" +#include "src/core/lib/transport/call_filters.h" +#include "src/core/lib/transport/call_spine.h" +#include "src/core/lib/transport/metadata.h" + +namespace grpc_core { + +std::atomic InterceptionChainBuilder::next_filter_id_{0}; + +/////////////////////////////////////////////////////////////////////////////// +// HijackedCall + +CallInitiator HijackedCall::MakeCall() { + auto metadata = Arena::MakePooled(); + *metadata = metadata_->Copy(); + return MakeCallWithMetadata(std::move(metadata)); +} + +CallInitiator HijackedCall::MakeCallWithMetadata( + ClientMetadataHandle metadata) { + auto call = MakeCallPair(std::move(metadata), call_handler_.event_engine(), + call_handler_.arena(), nullptr, + call_handler_.legacy_context()); + destination_->StartCall(std::move(call.handler)); + return std::move(call.initiator); +} + +namespace { +class CallStarter final : public UnstartedCallDestination { + public: + CallStarter(RefCountedPtr stack, + RefCountedPtr destination) + : stack_(std::move(stack)), destination_(std::move(destination)) {} + + void Orphaned() override { + stack_.reset(); + destination_.reset(); + } + + void StartCall(UnstartedCallHandler unstarted_call_handler) override { + destination_->HandleCall(unstarted_call_handler.StartCall(stack_)); + } + + private: + RefCountedPtr stack_; + RefCountedPtr destination_; +}; + +class TerminalInterceptor final : public UnstartedCallDestination { + public: + explicit TerminalInterceptor( + RefCountedPtr stack, + RefCountedPtr destination) + : stack_(std::move(stack)), destination_(std::move(destination)) {} + + void Orphaned() override { + stack_.reset(); + destination_.reset(); + } + + void StartCall(UnstartedCallHandler unstarted_call_handler) override { + unstarted_call_handler.SpawnGuarded( + "start_call", + Map(interception_chain_detail::HijackCall(unstarted_call_handler, + destination_, stack_), + [](ValueOrFailure hijacked_call) -> StatusFlag { + if (!hijacked_call.ok()) return Failure{}; + ForwardCall(hijacked_call.value().original_call_handler(), + hijacked_call.value().MakeLastCall()); + return Success{}; + })); + } + + private: + RefCountedPtr stack_; + RefCountedPtr destination_; +}; +} // namespace + +/////////////////////////////////////////////////////////////////////////////// +// InterceptionChain::Builder + +void InterceptionChainBuilder::AddInterceptor( + absl::StatusOr> interceptor) { + if (!status_.ok()) return; + if (!interceptor.ok()) { + status_ = interceptor.status(); + return; + } + (*interceptor)->filter_stack_ = MakeFilterStack(); + if (top_interceptor_ == nullptr) { + top_interceptor_ = std::move(*interceptor); + } else { + Interceptor* previous = top_interceptor_.get(); + while (previous->wrapped_destination_ != nullptr) { + previous = DownCast(previous->wrapped_destination_.get()); + } + previous->wrapped_destination_ = std::move(*interceptor); + } +} + +absl::StatusOr> +InterceptionChainBuilder::Build(FinalDestination final_destination) { + if (!status_.ok()) return status_; + // Build the final UnstartedCallDestination in the chain - what we do here + // depends on both the type of the final destination and the filters we have + // that haven't been captured into an Interceptor yet. + RefCountedPtr terminator = Match( + final_destination, + [this](RefCountedPtr final_destination) + -> RefCountedPtr { + if (stack_builder_.has_value()) { + return MakeRefCounted(MakeFilterStack(), + final_destination); + } + return final_destination; + }, + [this](RefCountedPtr final_destination) + -> RefCountedPtr { + return MakeRefCounted(MakeFilterStack(), + std::move(final_destination)); + }); + // Now append the terminator to the interceptor chain. + if (top_interceptor_ == nullptr) { + return std::move(terminator); + } + Interceptor* previous = top_interceptor_.get(); + while (previous->wrapped_destination_ != nullptr) { + previous = DownCast(previous->wrapped_destination_.get()); + } + previous->wrapped_destination_ = std::move(terminator); + return std::move(top_interceptor_); +} + +} // namespace grpc_core diff --git a/src/core/lib/transport/interception_chain.h b/src/core/lib/transport/interception_chain.h new file mode 100644 index 00000000000..e9dcb937b19 --- /dev/null +++ b/src/core/lib/transport/interception_chain.h @@ -0,0 +1,236 @@ +// Copyright 2024 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. + +#ifndef GRPC_SRC_CORE_LIB_TRANSPORT_INTERCEPTION_CHAIN_H +#define GRPC_SRC_CORE_LIB_TRANSPORT_INTERCEPTION_CHAIN_H + +#include +#include + +#include + +#include "src/core/lib/gprpp/ref_counted.h" +#include "src/core/lib/transport/call_destination.h" +#include "src/core/lib/transport/call_filters.h" +#include "src/core/lib/transport/call_spine.h" +#include "src/core/lib/transport/metadata.h" + +namespace grpc_core { + +class InterceptionChainBuilder; + +// One hijacked call. Using this we can get access to the CallHandler for the +// call object above us, the processed metadata from any filters/interceptors +// above us, and also create new CallInterceptor objects that will be handled +// below. +class HijackedCall final { + public: + HijackedCall(ClientMetadataHandle metadata, + RefCountedPtr destination, + CallHandler call_handler) + : metadata_(std::move(metadata)), + destination_(std::move(destination)), + call_handler_(std::move(call_handler)) {} + + // Create a new call and pass it down the stack. + // This can be called as many times as needed. + CallInitiator MakeCall(); + // Per MakeCall(), but precludes creating further calls. + // Allows us to optimize by not copying initial metadata. + CallInitiator MakeLastCall() { + return MakeCallWithMetadata(std::move(metadata_)); + } + + CallHandler& original_call_handler() { return call_handler_; } + + ClientMetadata& client_metadata() { return *metadata_; } + + private: + CallInitiator MakeCallWithMetadata(ClientMetadataHandle metadata); + + ClientMetadataHandle metadata_; + RefCountedPtr destination_; + CallHandler call_handler_; +}; + +namespace interception_chain_detail { + +inline auto HijackCall(UnstartedCallHandler unstarted_call_handler, + RefCountedPtr destination, + RefCountedPtr stack) { + auto call_handler = unstarted_call_handler.StartCall(stack); + return Map( + call_handler.PullClientInitialMetadata(), + [call_handler, + destination](ValueOrFailure metadata) mutable + -> ValueOrFailure { + if (!metadata.ok()) return Failure{}; + return HijackedCall(std::move(metadata.value()), std::move(destination), + std::move(call_handler)); + }); +} + +} // namespace interception_chain_detail + +// A delegating UnstartedCallDestination for use as a hijacking filter. +// Implementations may look at the unprocessed initial metadata +// and decide to do one of two things: +// +// 1. It can hijack the call. Returns a HijackedCall object that can +// be used to start new calls with the same metadata. +// +// 2. It can consume the call by calling `Consume`. +// +// Upon the StartCall call the UnstartedCallHandler will be from the last +// *Interceptor* in the call chain (without having been processed by any +// intervening filters) -- note that this is commonly not useful (not enough +// guarantees), and so it's usually better to Hijack and examine the metadata. +class Interceptor : public UnstartedCallDestination { + protected: + // Returns a promise that resolves to a HijackedCall instance. + // Hijacking is the process of taking over a call and starting one or more new + // ones. + auto Hijack(UnstartedCallHandler unstarted_call_handler) { + return interception_chain_detail::HijackCall( + std::move(unstarted_call_handler), wrapped_destination_, filter_stack_); + } + + // Consume this call - it will not be passed on to any further filters. + CallHandler Consume(UnstartedCallHandler unstarted_call_handler) { + return unstarted_call_handler.StartCall(filter_stack_); + } + + // TODO(ctiller): Consider a Passthrough() method that allows the call to be + // passed on to the next filter in the chain without any interception by the + // current filter. + + private: + friend class InterceptionChainBuilder; + + RefCountedPtr wrapped_destination_; + RefCountedPtr filter_stack_; +}; + +class InterceptionChainBuilder final { + public: + // The kind of destination that the chain will eventually call. + // We can bottom out in various types depending on where we're intercepting: + // - The top half of the client channel wants to terminate on a + // UnstartedCallDestination (specifically the LB call destination). + // - The bottom half of the client channel and the server code wants to + // terminate on a ClientTransport - which unlike a + // UnstartedCallDestination demands a started CallHandler. + // There's some adaption code that's needed to start filters just prior + // to the bottoming out, and some design considerations to make with that. + // One way (that's not chosen here) would be to have the caller of the + // Builder provide something that can build an adaptor + // UnstartedCallDestination with parameters supplied by this builder - that + // disperses the responsibility of building the adaptor to the caller, which + // is not ideal - we might want to adjust the way this construct is built in + // the future, and building is a builder responsibility. + // Instead, we declare a relatively closed set of destinations here, and + // hide the adaptors inside the builder at build time. + using FinalDestination = + absl::variant, + RefCountedPtr>; + + explicit InterceptionChainBuilder(ChannelArgs args) + : args_(std::move(args)) {} + + // Add a filter with a `Call` class as an inner member. + // Call class must be one compatible with the filters described in + // call_filters.h. + template + absl::enable_if_t + Add() { + if (!status_.ok()) return *this; + auto filter = T::Create(args_, {FilterInstanceId(FilterTypeId())}); + if (!filter.ok()) { + status_ = filter.status(); + return *this; + } + auto& sb = stack_builder(); + sb.Add(filter.value().get()); + sb.AddOwnedObject(std::move(filter.value())); + return *this; + }; + + // Add a filter that is an interceptor - one that can hijack calls. + template + absl::enable_if_t::value, + InterceptionChainBuilder&> + Add() { + AddInterceptor(T::Create(args_, {FilterInstanceId(FilterTypeId())})); + return *this; + }; + + // Add a filter that just mutates client initial metadata. + template + void AddOnClientInitialMetadata(F f) { + stack_builder().AddOnClientInitialMetadata(std::move(f)); + } + + // Add a filter that just mutates server trailing metadata. + template + void AddOnServerTrailingMetadata(F f) { + stack_builder().AddOnServerTrailingMetadata(std::move(f)); + } + + void Fail(absl::Status status) { + CHECK(!status.ok()) << status; + if (status_.ok()) status_ = std::move(status); + } + + // Build this stack + absl::StatusOr> Build( + FinalDestination final_destination); + + const ChannelArgs& channel_args() const { return args_; } + + private: + CallFilters::StackBuilder& stack_builder() { + if (!stack_builder_.has_value()) stack_builder_.emplace(); + return *stack_builder_; + } + + RefCountedPtr MakeFilterStack() { + auto stack = stack_builder().Build(); + stack_builder_.reset(); + return stack; + } + + template + static size_t FilterTypeId() { + static const size_t id = + next_filter_id_.fetch_add(1, std::memory_order_relaxed); + return id; + } + + size_t FilterInstanceId(size_t filter_type) { + return filter_type_counts_[filter_type]++; + } + + void AddInterceptor(absl::StatusOr> interceptor); + + ChannelArgs args_; + absl::optional stack_builder_; + RefCountedPtr top_interceptor_; + absl::Status status_; + std::map filter_type_counts_; + static std::atomic next_filter_id_; +}; + +} // namespace grpc_core + +#endif // GRPC_SRC_CORE_LIB_TRANSPORT_INTERCEPTION_CHAIN_H diff --git a/src/core/lib/transport/metadata_batch.h b/src/core/lib/transport/metadata_batch.h index d7d0185a66e..c8611a225fa 100644 --- a/src/core/lib/transport/metadata_batch.h +++ b/src/core/lib/transport/metadata_batch.h @@ -28,6 +28,7 @@ #include "absl/container/inlined_vector.h" #include "absl/functional/function_ref.h" +#include "absl/log/check.h" #include "absl/meta/type_traits.h" #include "absl/strings/numbers.h" #include "absl/strings/string_view.h" @@ -76,6 +77,7 @@ size_t EncodedSizeOfKey(Key, const typename Key::ValueType& value) { // should not need to. struct GrpcTimeoutMetadata { static constexpr bool kRepeatable = false; + static constexpr bool kTransferOnTrailersOnly = false; using ValueType = Timestamp; using MementoType = Duration; using CompressionTraits = TimeoutCompressor; @@ -92,6 +94,7 @@ struct GrpcTimeoutMetadata { // TE metadata trait. struct TeMetadata { static constexpr bool kRepeatable = false; + static constexpr bool kTransferOnTrailersOnly = false; // HTTP2 says that TE can either be empty or "trailers". // Empty means this trait is not included, "trailers" means kTrailers, and // kInvalid is used to remember an invalid value. @@ -107,7 +110,7 @@ struct TeMetadata { MetadataParseErrorFn on_error); static ValueType MementoToValue(MementoType te) { return te; } static StaticSlice Encode(ValueType x) { - GPR_ASSERT(x == kTrailers); + CHECK(x == kTrailers); return StaticSlice::FromStaticString("trailers"); } static const char* DisplayValue(ValueType te); @@ -121,6 +124,7 @@ inline size_t EncodedSizeOfKey(TeMetadata, TeMetadata::ValueType x) { // content-type metadata trait. struct ContentTypeMetadata { static constexpr bool kRepeatable = false; + static constexpr bool kTransferOnTrailersOnly = true; // gRPC says that content-type can be application/grpc[;something] // Core has only ever verified the prefix. // IF we want to start verifying more, we can expand this type. @@ -149,6 +153,7 @@ struct ContentTypeMetadata { // scheme metadata trait. struct HttpSchemeMetadata { static constexpr bool kRepeatable = false; + static constexpr bool kTransferOnTrailersOnly = false; enum ValueType : uint8_t { kHttp, kHttps, @@ -178,6 +183,7 @@ size_t EncodedSizeOfKey(HttpSchemeMetadata, HttpSchemeMetadata::ValueType x); // method metadata trait. struct HttpMethodMetadata { static constexpr bool kRepeatable = false; + static constexpr bool kTransferOnTrailersOnly = false; enum ValueType : uint8_t { kPost, kGet, @@ -210,7 +216,7 @@ struct CompressionAlgorithmBasedMetadata { MetadataParseErrorFn on_error); static ValueType MementoToValue(MementoType x) { return x; } static Slice Encode(ValueType x) { - GPR_ASSERT(x != GRPC_COMPRESS_ALGORITHMS_COUNT); + CHECK(x != GRPC_COMPRESS_ALGORITHMS_COUNT); return Slice::FromStaticString(CompressionAlgorithmAsString(x)); } static const char* DisplayValue(ValueType x) { @@ -226,6 +232,7 @@ struct CompressionAlgorithmBasedMetadata { // grpc-encoding metadata trait. struct GrpcEncodingMetadata : public CompressionAlgorithmBasedMetadata { static constexpr bool kRepeatable = false; + static constexpr bool kTransferOnTrailersOnly = false; using CompressionTraits = SmallIntegralValuesCompressor; static absl::string_view key() { return "grpc-encoding"; } @@ -234,6 +241,7 @@ struct GrpcEncodingMetadata : public CompressionAlgorithmBasedMetadata { // grpc-internal-encoding-request metadata trait. struct GrpcInternalEncodingRequest : public CompressionAlgorithmBasedMetadata { static constexpr bool kRepeatable = false; + static constexpr bool kTransferOnTrailersOnly = false; using CompressionTraits = NoCompressionCompressor; static absl::string_view key() { return "grpc-internal-encoding-request"; } }; @@ -241,6 +249,7 @@ struct GrpcInternalEncodingRequest : public CompressionAlgorithmBasedMetadata { // grpc-accept-encoding metadata trait. struct GrpcAcceptEncodingMetadata { static constexpr bool kRepeatable = false; + static constexpr bool kTransferOnTrailersOnly = false; static absl::string_view key() { return "grpc-accept-encoding"; } using ValueType = CompressionAlgorithmSet; using MementoType = ValueType; @@ -259,6 +268,7 @@ struct GrpcAcceptEncodingMetadata { // user-agent metadata trait. struct UserAgentMetadata : public SimpleSliceBasedMetadata { static constexpr bool kRepeatable = false; + static constexpr bool kTransferOnTrailersOnly = false; using CompressionTraits = StableValueCompressor; static absl::string_view key() { return "user-agent"; } }; @@ -266,6 +276,7 @@ struct UserAgentMetadata : public SimpleSliceBasedMetadata { // grpc-message metadata trait. struct GrpcMessageMetadata : public SimpleSliceBasedMetadata { static constexpr bool kRepeatable = false; + static constexpr bool kTransferOnTrailersOnly = false; using CompressionTraits = NoCompressionCompressor; static absl::string_view key() { return "grpc-message"; } }; @@ -273,6 +284,7 @@ struct GrpcMessageMetadata : public SimpleSliceBasedMetadata { // host metadata trait. struct HostMetadata : public SimpleSliceBasedMetadata { static constexpr bool kRepeatable = false; + static constexpr bool kTransferOnTrailersOnly = false; using CompressionTraits = NoCompressionCompressor; static absl::string_view key() { return "host"; } }; @@ -280,6 +292,7 @@ struct HostMetadata : public SimpleSliceBasedMetadata { // endpoint-load-metrics-bin metadata trait. struct EndpointLoadMetricsBinMetadata : public SimpleSliceBasedMetadata { static constexpr bool kRepeatable = false; + static constexpr bool kTransferOnTrailersOnly = false; using CompressionTraits = NoCompressionCompressor; static absl::string_view key() { return "endpoint-load-metrics-bin"; } }; @@ -287,6 +300,7 @@ struct EndpointLoadMetricsBinMetadata : public SimpleSliceBasedMetadata { // grpc-server-stats-bin metadata trait. struct GrpcServerStatsBinMetadata : public SimpleSliceBasedMetadata { static constexpr bool kRepeatable = false; + static constexpr bool kTransferOnTrailersOnly = false; using CompressionTraits = NoCompressionCompressor; static absl::string_view key() { return "grpc-server-stats-bin"; } }; @@ -294,6 +308,7 @@ struct GrpcServerStatsBinMetadata : public SimpleSliceBasedMetadata { // grpc-trace-bin metadata trait. struct GrpcTraceBinMetadata : public SimpleSliceBasedMetadata { static constexpr bool kRepeatable = false; + static constexpr bool kTransferOnTrailersOnly = false; using CompressionTraits = FrequentKeyWithNoValueCompressionCompressor; static absl::string_view key() { return "grpc-trace-bin"; } }; @@ -301,6 +316,7 @@ struct GrpcTraceBinMetadata : public SimpleSliceBasedMetadata { // grpc-tags-bin metadata trait. struct GrpcTagsBinMetadata : public SimpleSliceBasedMetadata { static constexpr bool kRepeatable = false; + static constexpr bool kTransferOnTrailersOnly = false; using CompressionTraits = FrequentKeyWithNoValueCompressionCompressor; static absl::string_view key() { return "grpc-tags-bin"; } }; @@ -308,6 +324,7 @@ struct GrpcTagsBinMetadata : public SimpleSliceBasedMetadata { // XEnvoyPeerMetadata struct XEnvoyPeerMetadata : public SimpleSliceBasedMetadata { static constexpr bool kRepeatable = false; + static constexpr bool kTransferOnTrailersOnly = true; using CompressionTraits = StableValueCompressor; static absl::string_view key() { return "x-envoy-peer-metadata"; } }; @@ -315,6 +332,7 @@ struct XEnvoyPeerMetadata : public SimpleSliceBasedMetadata { // :authority metadata trait. struct HttpAuthorityMetadata : public SimpleSliceBasedMetadata { static constexpr bool kRepeatable = false; + static constexpr bool kTransferOnTrailersOnly = false; using CompressionTraits = SmallSetOfValuesCompressor; static absl::string_view key() { return ":authority"; } }; @@ -322,6 +340,7 @@ struct HttpAuthorityMetadata : public SimpleSliceBasedMetadata { // :path metadata trait. struct HttpPathMetadata : public SimpleSliceBasedMetadata { static constexpr bool kRepeatable = false; + static constexpr bool kTransferOnTrailersOnly = false; using CompressionTraits = SmallSetOfValuesCompressor; static absl::string_view key() { return ":path"; } }; @@ -356,6 +375,7 @@ struct SimpleIntBasedMetadata : public SimpleIntBasedMetadataBase { struct GrpcStatusMetadata : public SimpleIntBasedMetadata { static constexpr bool kRepeatable = false; + static constexpr bool kTransferOnTrailersOnly = false; using CompressionTraits = SmallIntegralValuesCompressor<16>; static absl::string_view key() { return "grpc-status"; } }; @@ -364,6 +384,7 @@ struct GrpcStatusMetadata struct GrpcPreviousRpcAttemptsMetadata : public SimpleIntBasedMetadata { static constexpr bool kRepeatable = false; + static constexpr bool kTransferOnTrailersOnly = false; using CompressionTraits = NoCompressionCompressor; static absl::string_view key() { return "grpc-previous-rpc-attempts"; } }; @@ -371,6 +392,7 @@ struct GrpcPreviousRpcAttemptsMetadata // grpc-retry-pushback-ms metadata trait. struct GrpcRetryPushbackMsMetadata { static constexpr bool kRepeatable = false; + static constexpr bool kTransferOnTrailersOnly = false; static absl::string_view key() { return "grpc-retry-pushback-ms"; } using ValueType = Duration; using MementoType = Duration; @@ -388,6 +410,7 @@ struct GrpcRetryPushbackMsMetadata { // TODO(ctiller): consider moving to uint16_t struct HttpStatusMetadata : public SimpleIntBasedMetadata { static constexpr bool kRepeatable = false; + static constexpr bool kTransferOnTrailersOnly = true; using CompressionTraits = HttpStatusCompressor; static absl::string_view key() { return ":status"; } }; @@ -398,6 +421,7 @@ class GrpcLbClientStats; struct GrpcLbClientStatsMetadata { static constexpr bool kRepeatable = false; + static constexpr bool kTransferOnTrailersOnly = false; static absl::string_view key() { return "grpclb_client_stats"; } using ValueType = GrpcLbClientStats*; using MementoType = ValueType; @@ -422,6 +446,7 @@ inline size_t EncodedSizeOfKey(GrpcLbClientStatsMetadata, // lb-token metadata struct LbTokenMetadata : public SimpleSliceBasedMetadata { static constexpr bool kRepeatable = false; + static constexpr bool kTransferOnTrailersOnly = false; using CompressionTraits = NoCompressionCompressor; static absl::string_view key() { return "lb-token"; } }; @@ -429,6 +454,7 @@ struct LbTokenMetadata : public SimpleSliceBasedMetadata { // lb-cost-bin metadata struct LbCostBinMetadata { static constexpr bool kRepeatable = true; + static constexpr bool kTransferOnTrailersOnly = false; static absl::string_view key() { return "lb-cost-bin"; } struct ValueType { double cost; @@ -450,6 +476,7 @@ struct LbCostBinMetadata { struct GrpcStreamNetworkState { static absl::string_view DebugKey() { return "GrpcStreamNetworkState"; } static constexpr bool kRepeatable = false; + static constexpr bool kTransferOnTrailersOnly = false; enum ValueType : uint8_t { kNotSentOnWire, kNotSeenByServer, @@ -1148,6 +1175,9 @@ MetadataValueAsSlice(typename Which::ValueType value) { // struct GrpcXyzMetadata { // // Can this metadata field be repeated? // static constexpr bool kRepeatable = ...; +// // Should this metadata be transferred from server headers to trailers on +// // Trailers-Only response? +// static constexpr bool kTransferOnTrailersOnly = ...; // // The type that's stored on MetadataBatch // using ValueType = ...; // // The type that's stored in compression/decompression tables diff --git a/src/core/lib/transport/promise_endpoint.cc b/src/core/lib/transport/promise_endpoint.cc index 9f8ced08ef8..031f5194e02 100644 --- a/src/core/lib/transport/promise_endpoint.cc +++ b/src/core/lib/transport/promise_endpoint.cc @@ -19,6 +19,7 @@ #include #include +#include "absl/log/check.h" #include "absl/status/status.h" #include "absl/types/optional.h" @@ -38,7 +39,7 @@ PromiseEndpoint::PromiseEndpoint( endpoint, SliceBuffer already_received) : endpoint_(std::move(endpoint)) { - GPR_ASSERT(endpoint_ != nullptr); + CHECK_NE(endpoint_, nullptr); read_state_->endpoint = endpoint_; // TODO(ladynana): Replace this with `SliceBufferCast<>` when it is // available. @@ -72,7 +73,7 @@ void PromiseEndpoint::ReadState::Complete(absl::Status status, // Appends `pending_buffer` to `buffer`. pending_buffer.MoveFirstNBytesIntoSliceBuffer(pending_buffer.Length(), buffer); - GPR_DEBUG_ASSERT(pending_buffer.Count() == 0u); + DCHECK(pending_buffer.Count() == 0u); if (buffer.Length() < num_bytes_requested) { // A further read is needed. // Set read args with number of bytes needed as hint. diff --git a/src/core/lib/transport/promise_endpoint.h b/src/core/lib/transport/promise_endpoint.h index be49a1fccb0..12659aff583 100644 --- a/src/core/lib/transport/promise_endpoint.h +++ b/src/core/lib/transport/promise_endpoint.h @@ -25,6 +25,7 @@ #include #include "absl/base/thread_annotations.h" +#include "absl/log/check.h" #include "absl/status/status.h" #include "absl/status/statusor.h" #include "absl/types/optional.h" @@ -75,7 +76,7 @@ class PromiseEndpoint { // Start write and assert previous write finishes. auto prev = write_state_->state.exchange(WriteState::kWriting, std::memory_order_relaxed); - GPR_ASSERT(prev == WriteState::kIdle); + CHECK(prev == WriteState::kIdle); bool completed; if (data.Length() == 0) { completed = true; @@ -102,7 +103,7 @@ class PromiseEndpoint { return [write_state = write_state_]() { auto prev = write_state->state.exchange(WriteState::kIdle, std::memory_order_relaxed); - GPR_ASSERT(prev == WriteState::kWriting); + CHECK(prev == WriteState::kWriting); return absl::OkStatus(); }; }, @@ -120,7 +121,7 @@ class PromiseEndpoint { } // State was not Written; since we're polling it must be // Writing. Assert that and return Pending. - GPR_ASSERT(expected == WriteState::kWriting); + CHECK(expected == WriteState::kWriting); return Pending(); }; }); @@ -134,9 +135,9 @@ class PromiseEndpoint { // undefined behavior. auto Read(size_t num_bytes) { // Assert previous read finishes. - GPR_ASSERT(!read_state_->complete.load(std::memory_order_relaxed)); + CHECK(!read_state_->complete.load(std::memory_order_relaxed)); // Should not have pending reads. - GPR_ASSERT(read_state_->pending_buffer.Count() == 0u); + CHECK(read_state_->pending_buffer.Count() == 0u); bool complete = true; while (read_state_->buffer.Length() < num_bytes) { // Set read args with hinted bytes. @@ -156,7 +157,7 @@ class PromiseEndpoint { read_state_->waker = Waker(); read_state_->pending_buffer.MoveFirstNBytesIntoSliceBuffer( read_state_->pending_buffer.Length(), read_state_->buffer); - GPR_DEBUG_ASSERT(read_state_->pending_buffer.Count() == 0u); + DCHECK(read_state_->pending_buffer.Count() == 0u); } else { complete = false; break; @@ -233,8 +234,7 @@ class PromiseEndpoint { // Copy everything from read_state_->buffer into a single slice and // replace the contents of read_state_->buffer with that slice. grpc_slice slice = grpc_slice_malloc_large(read_state_->buffer.Length()); - GPR_ASSERT( - reinterpret_cast(GRPC_SLICE_START_PTR(slice)) % 64 == 0); + CHECK(reinterpret_cast(GRPC_SLICE_START_PTR(slice)) % 64 == 0); size_t ofs = 0; for (size_t i = 0; i < read_state_->buffer.Count(); i++) { memcpy( @@ -249,7 +249,7 @@ class PromiseEndpoint { read_state_->buffer.Clear(); read_state_->buffer.AppendIndexed( grpc_event_engine::experimental::Slice(slice)); - GPR_DEBUG_ASSERT(read_state_->buffer.Length() == ofs); + DCHECK(read_state_->buffer.Length() == ofs); } } @@ -305,7 +305,7 @@ class PromiseEndpoint { auto prev = state.exchange(kWritten, std::memory_order_release); // Previous state should be Writing. If we got anything else we've entered // the callback path twice. - GPR_ASSERT(prev == kWriting); + CHECK(prev == kWriting); w.Wakeup(); } }; diff --git a/src/core/lib/transport/timeout_encoding.cc b/src/core/lib/transport/timeout_encoding.cc index 265081aac34..deb82cb2cdc 100644 --- a/src/core/lib/transport/timeout_encoding.cc +++ b/src/core/lib/transport/timeout_encoding.cc @@ -21,6 +21,7 @@ #include #include "absl/base/attributes.h" +#include "absl/log/check.h" #include #include @@ -182,7 +183,7 @@ Timeout Timeout::FromMillis(int64_t millis) { } Timeout Timeout::FromSeconds(int64_t seconds) { - GPR_DEBUG_ASSERT(seconds != 0); + DCHECK_NE(seconds, 0); if (seconds < 1000) { if (seconds % kSecondsPerMinute != 0) { return Timeout(seconds, Unit::kSeconds); @@ -202,7 +203,7 @@ Timeout Timeout::FromSeconds(int64_t seconds) { } Timeout Timeout::FromMinutes(int64_t minutes) { - GPR_DEBUG_ASSERT(minutes != 0); + DCHECK_NE(minutes, 0); if (minutes < 1000) { if (minutes % kMinutesPerHour != 0) { return Timeout(minutes, Unit::kMinutes); @@ -222,7 +223,7 @@ Timeout Timeout::FromMinutes(int64_t minutes) { } Timeout Timeout::FromHours(int64_t hours) { - GPR_DEBUG_ASSERT(hours != 0); + DCHECK_NE(hours, 0); if (hours < kMaxHours) { return Timeout(hours, Unit::kHours); } diff --git a/src/core/lib/transport/transport.h b/src/core/lib/transport/transport.h index c824f0ae05c..5dbe2c6695f 100644 --- a/src/core/lib/transport/transport.h +++ b/src/core/lib/transport/transport.h @@ -55,6 +55,7 @@ #include "src/core/lib/promise/pipe.h" #include "src/core/lib/resource_quota/arena.h" #include "src/core/lib/slice/slice_buffer.h" +#include "src/core/lib/transport/call_destination.h" #include "src/core/lib/transport/call_final_info.h" #include "src/core/lib/transport/call_spine.h" #include "src/core/lib/transport/connectivity_state.h" @@ -481,6 +482,15 @@ typedef struct grpc_transport_op { grpc_handler_private_op_data handler_private; } grpc_transport_op; +// Allocate a grpc_transport_op, and preconfigure the on_complete closure to +// \a on_complete and then delete the returned transport op +grpc_transport_op* grpc_make_transport_op(grpc_closure* on_complete); +// Allocate a grpc_transport_stream_op_batch, and preconfigure the on_complete +// closure +// to \a on_complete and then delete the returned transport op +grpc_transport_stream_op_batch* grpc_make_transport_stream_op( + grpc_closure* on_complete); + void grpc_transport_stream_op_batch_finish_with_failure( grpc_transport_stream_op_batch* batch, grpc_error_handle error, grpc_core::CallCombiner* call_combiner); @@ -498,7 +508,69 @@ std::string grpc_transport_op_string(grpc_transport_op* op); namespace grpc_core { -class FilterStackTransport { +class FilterStackTransport; +class ClientTransport; +class ServerTransport; + +class Transport : public InternallyRefCounted { + public: + struct RawPointerChannelArgTag {}; + static absl::string_view ChannelArgName() { return GRPC_ARG_TRANSPORT; } + + // Though internally ref counted transports expose their "Ref" method to + // create a RefCountedPtr to themselves. The OrphanablePtr owner is the + // singleton decision maker on whether the transport should be destroyed or + // not. + // TODO(ctiller): consider moving to a DualRefCounted model (with the + // disadvantage that we would accidentally have many strong owners which is + // unnecessary for this type). + RefCountedPtr Ref() { + return InternallyRefCounted::Ref(); + } + template + RefCountedPtr RefAsSubclass() { + return InternallyRefCounted::RefAsSubclass(); + } + + virtual FilterStackTransport* filter_stack_transport() = 0; + virtual ClientTransport* client_transport() = 0; + virtual ServerTransport* server_transport() = 0; + + // name of this transport implementation + virtual absl::string_view GetTransportName() const = 0; + + // implementation of grpc_transport_set_pollset + virtual void SetPollset(grpc_stream* stream, grpc_pollset* pollset) = 0; + + // implementation of grpc_transport_set_pollset + virtual void SetPollsetSet(grpc_stream* stream, + grpc_pollset_set* pollset_set) = 0; + + void SetPollingEntity(grpc_stream* stream, + grpc_polling_entity* pollset_or_pollset_set); + + // implementation of grpc_transport_perform_op + virtual void PerformOp(grpc_transport_op* op) = 0; + + void StartConnectivityWatch( + OrphanablePtr watcher) { + grpc_transport_op* op = grpc_make_transport_op(nullptr); + op->start_connectivity_watch = std::move(watcher); + PerformOp(op); + } + + void DisconnectWithError(grpc_error_handle error) { + CHECK(!error.ok()) << error; + grpc_transport_op* op = grpc_make_transport_op(nullptr); + op->disconnect_with_error = error; + PerformOp(op); + } + + // implementation of grpc_transport_get_endpoint + virtual grpc_endpoint* GetEndpoint() = 0; +}; + +class FilterStackTransport : public Transport { public: // Memory required for a single stream element - this is allocated by upper // layers and initialized by the transport @@ -536,82 +608,29 @@ class FilterStackTransport { grpc_closure* then_schedule_closure) = 0; protected: - ~FilterStackTransport() = default; + ~FilterStackTransport() override = default; }; -class ClientTransport { +class ClientTransport : public Transport { public: virtual void StartCall(CallHandler call_handler) = 0; protected: - ~ClientTransport() = default; + ~ClientTransport() override = default; }; -class ServerTransport { +class ServerTransport : public Transport { public: - // Acceptor helps transports create calls. - class Acceptor { - public: - // Returns an arena that can be used to allocate memory for initial metadata - // parsing, and later passed to CreateCall() as the underlying arena for - // that call. - virtual Arena* CreateArena() = 0; - // Create a call at the server (or fail) - // arena must have been previously allocated by CreateArena() - virtual absl::StatusOr CreateCall( - ClientMetadataHandle client_initial_metadata, Arena* arena) = 0; - - protected: - ~Acceptor() = default; - }; - // Called once slightly after transport setup to register the accept function. - virtual void SetAcceptor(Acceptor* acceptor) = 0; + virtual void SetCallDestination( + RefCountedPtr unstarted_call_handler) = 0; protected: - ~ServerTransport() = default; -}; - -class Transport : public Orphanable { - public: - struct RawPointerChannelArgTag {}; - static absl::string_view ChannelArgName() { return GRPC_ARG_TRANSPORT; } - - virtual FilterStackTransport* filter_stack_transport() = 0; - virtual ClientTransport* client_transport() = 0; - virtual ServerTransport* server_transport() = 0; - - // name of this transport implementation - virtual absl::string_view GetTransportName() const = 0; - - // implementation of grpc_transport_set_pollset - virtual void SetPollset(grpc_stream* stream, grpc_pollset* pollset) = 0; - - // implementation of grpc_transport_set_pollset - virtual void SetPollsetSet(grpc_stream* stream, - grpc_pollset_set* pollset_set) = 0; - - void SetPollingEntity(grpc_stream* stream, - grpc_polling_entity* pollset_or_pollset_set); - - // implementation of grpc_transport_perform_op - virtual void PerformOp(grpc_transport_op* op) = 0; - - // implementation of grpc_transport_get_endpoint - virtual grpc_endpoint* GetEndpoint() = 0; + ~ServerTransport() override = default; }; } // namespace grpc_core -// Allocate a grpc_transport_op, and preconfigure the on_complete closure to -// \a on_complete and then delete the returned transport op -grpc_transport_op* grpc_make_transport_op(grpc_closure* on_complete); -// Allocate a grpc_transport_stream_op_batch, and preconfigure the on_complete -// closure -// to \a on_complete and then delete the returned transport op -grpc_transport_stream_op_batch* grpc_make_transport_stream_op( - grpc_closure* on_complete); - namespace grpc_core { // This is the key to be used for loading/storing keepalive_throttling in the // absl::Status object. diff --git a/src/core/lib/uri/uri_parser.cc b/src/core/lib/uri/uri_parser.cc index 1aa8ad7fd27..dfb71286c41 100644 --- a/src/core/lib/uri/uri_parser.cc +++ b/src/core/lib/uri/uri_parser.cc @@ -25,6 +25,7 @@ #include #include +#include "absl/log/check.h" #include "absl/status/status.h" #include "absl/strings/ascii.h" #include "absl/strings/escaping.h" @@ -141,7 +142,7 @@ std::string PercentEncode(absl::string_view str, for (char c : str) { if (!is_allowed_char(c)) { std::string hex = absl::BytesToHexString(absl::string_view(&c, 1)); - GPR_ASSERT(hex.size() == 2); + CHECK_EQ(hex.size(), 2u); // BytesToHexString() returns lower case, but // https://datatracker.ietf.org/doc/html/rfc3986#section-6.2.2.1 says // to prefer upper-case. diff --git a/src/core/load_balancing/child_policy_handler.cc b/src/core/load_balancing/child_policy_handler.cc index 7fca56266df..87e29859e57 100644 --- a/src/core/load_balancing/child_policy_handler.cc +++ b/src/core/load_balancing/child_policy_handler.cc @@ -19,6 +19,7 @@ #include #include +#include "absl/log/check.h" #include "absl/status/status.h" #include "absl/strings/str_cat.h" #include "absl/strings/string_view.h" @@ -114,12 +115,12 @@ class ChildPolicyHandler::Helper final private: bool CalledByPendingChild() const { - GPR_ASSERT(child_ != nullptr); + CHECK_NE(child_, nullptr); return child_ == parent()->pending_child_policy_.get(); } bool CalledByCurrentChild() const { - GPR_ASSERT(child_ != nullptr); + CHECK_NE(child_, nullptr); return child_ == parent()->child_policy_.get(); }; @@ -240,7 +241,7 @@ absl::Status ChildPolicyHandler::UpdateLocked(UpdateArgs args) { ? pending_child_policy_.get() : child_policy_.get(); } - GPR_ASSERT(policy_to_update != nullptr); + CHECK_NE(policy_to_update, nullptr); // Update the policy. if (GRPC_TRACE_FLAG_ENABLED(*tracer_)) { gpr_log(GPR_INFO, "[child_policy_handler %p] updating %schild policy %p", diff --git a/src/core/load_balancing/endpoint_list.cc b/src/core/load_balancing/endpoint_list.cc index f86d5af16ff..84b5848e7b9 100644 --- a/src/core/load_balancing/endpoint_list.cc +++ b/src/core/load_balancing/endpoint_list.cc @@ -22,6 +22,7 @@ #include #include +#include "absl/log/check.h" #include "absl/status/status.h" #include "absl/status/statusor.h" #include "absl/types/optional.h" @@ -87,7 +88,7 @@ class EndpointList::Endpoint::Helper final // EndpointList::Endpoint // -void EndpointList::Endpoint::Init( +absl::Status EndpointList::Endpoint::Init( const EndpointAddresses& addresses, const ChannelArgs& args, std::shared_ptr work_serializer) { ChannelArgs child_args = @@ -117,15 +118,13 @@ void EndpointList::Endpoint::Init( CoreConfiguration::Get().lb_policy_registry().ParseLoadBalancingConfig( Json::FromArray( {Json::FromObject({{"pick_first", Json::FromObject({})}})})); - GPR_ASSERT(config.ok()); + CHECK(config.ok()); // Update child policy. LoadBalancingPolicy::UpdateArgs update_args; update_args.addresses = std::make_shared(addresses); update_args.args = child_args; update_args.config = std::move(*config); - // TODO(roth): If the child reports a non-OK status with the update, - // we need to propagate that back to the resolver somehow. - (void)child_policy_->UpdateLocked(std::move(update_args)); + return child_policy_->UpdateLocked(std::move(update_args)); } void EndpointList::Endpoint::Orphan() { diff --git a/src/core/load_balancing/endpoint_list.h b/src/core/load_balancing/endpoint_list.h index daf4f1fe366..cd8276bf51a 100644 --- a/src/core/load_balancing/endpoint_list.h +++ b/src/core/load_balancing/endpoint_list.h @@ -53,7 +53,8 @@ class MyEndpointList : public EndpointList { public: MyEndpointList(RefCountedPtr lb_policy, EndpointAddressesIterator* endpoints, - const ChannelArgs& args) + const ChannelArgs& args, + std::vector* errors) : EndpointList(std::move(lb_policy), GRPC_TRACE_FLAG_ENABLED(grpc_my_tracer) ? "MyEndpointList" @@ -63,7 +64,7 @@ class MyEndpointList : public EndpointList { const EndpointAddresses& addresses, const ChannelArgs& args) { return MakeOrphanable( std::move(endpoint_list), addresses, args, - policy()->work_serializer()); + policy()->work_serializer(), errors); }); } @@ -71,10 +72,15 @@ class MyEndpointList : public EndpointList { class MyEndpoint : public Endpoint { public: MyEndpoint(RefCountedPtr endpoint_list, - const EndpointAddresses& address, const ChannelArgs& args, - std::shared_ptr work_serializer) + const EndpointAddresses& addresses, const ChannelArgs& args, + std::shared_ptr work_serializer, + std::vector* errors) : Endpoint(std::move(endpoint_list)) { - Init(addresses, args, std::move(work_serializer)); + absl::Status status = Init(addresses, args, std::move(work_serializer)); + if (!status.ok()) { + errors->emplace_back(absl::StrCat( + "endpoint ", addresses.ToString(), ": ", status.ToString())); + } } private: @@ -120,8 +126,9 @@ class EndpointList : public InternallyRefCounted { explicit Endpoint(RefCountedPtr endpoint_list) : endpoint_list_(std::move(endpoint_list)) {} - void Init(const EndpointAddresses& addresses, const ChannelArgs& args, - std::shared_ptr work_serializer); + absl::Status Init(const EndpointAddresses& addresses, + const ChannelArgs& args, + std::shared_ptr work_serializer); // Templated for convenience, to provide a short-hand for // down-casting in the caller. diff --git a/src/core/load_balancing/grpclb/client_load_reporting_filter.cc b/src/core/load_balancing/grpclb/client_load_reporting_filter.cc index c3de43e4b94..e03fe8d70ce 100644 --- a/src/core/load_balancing/grpclb/client_load_reporting_filter.cc +++ b/src/core/load_balancing/grpclb/client_load_reporting_filter.cc @@ -41,6 +41,7 @@ namespace grpc_core { const NoInterceptor ClientLoadReportingFilter::Call::OnServerToClientMessage; const NoInterceptor ClientLoadReportingFilter::Call::OnClientToServerMessage; +const NoInterceptor ClientLoadReportingFilter::Call::OnClientToServerHalfClose; const NoInterceptor ClientLoadReportingFilter::Call::OnFinalize; const grpc_channel_filter ClientLoadReportingFilter::kFilter = diff --git a/src/core/load_balancing/grpclb/client_load_reporting_filter.h b/src/core/load_balancing/grpclb/client_load_reporting_filter.h index 941b97abf99..f8c5b7fbcc4 100644 --- a/src/core/load_balancing/grpclb/client_load_reporting_filter.h +++ b/src/core/load_balancing/grpclb/client_load_reporting_filter.h @@ -43,6 +43,7 @@ class ClientLoadReportingFilter final void OnServerTrailingMetadata(ServerMetadata& server_trailing_metadata); static const NoInterceptor OnServerToClientMessage; static const NoInterceptor OnClientToServerMessage; + static const NoInterceptor OnClientToServerHalfClose; static const NoInterceptor OnFinalize; private: diff --git a/src/core/load_balancing/grpclb/grpclb.cc b/src/core/load_balancing/grpclb/grpclb.cc index 0b62235f51e..fcc3034bf03 100644 --- a/src/core/load_balancing/grpclb/grpclb.cc +++ b/src/core/load_balancing/grpclb/grpclb.cc @@ -72,6 +72,7 @@ #include "absl/container/inlined_vector.h" #include "absl/functional/function_ref.h" +#include "absl/log/check.h" #include "absl/status/status.h" #include "absl/status/statusor.h" #include "absl/strings/str_cat.h" @@ -92,16 +93,14 @@ #include #include +#include "src/core/channelz/channelz.h" #include "src/core/client_channel/client_channel_filter.h" #include "src/core/lib/address_utils/sockaddr_utils.h" #include "src/core/lib/backoff/backoff.h" #include "src/core/lib/channel/channel_args.h" -#include "src/core/lib/channel/channelz.h" #include "src/core/lib/config/core_configuration.h" #include "src/core/lib/debug/trace.h" #include "src/core/lib/experiments/experiments.h" -#include "src/core/lib/gpr/string.h" -#include "src/core/lib/gpr/useful.h" #include "src/core/lib/gprpp/crash.h" #include "src/core/lib/gprpp/debug_location.h" #include "src/core/lib/gprpp/orphanable.h" @@ -142,6 +141,8 @@ #include "src/core/resolver/endpoint_addresses.h" #include "src/core/resolver/fake/fake_resolver.h" #include "src/core/resolver/resolver.h" +#include "src/core/util/string.h" +#include "src/core/util/useful.h" #define GRPC_GRPCLB_INITIAL_CONNECT_BACKOFF_SECONDS 1 #define GRPC_GRPCLB_RECONNECT_BACKOFF_MULTIPLIER 1.6 @@ -884,8 +885,8 @@ GrpcLb::BalancerCallState::BalancerCallState( GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace) ? "BalancerCallState" : nullptr), grpclb_policy_(std::move(parent_grpclb_policy)) { - GPR_ASSERT(grpclb_policy_ != nullptr); - GPR_ASSERT(!grpclb_policy()->shutting_down_); + CHECK(grpclb_policy_ != nullptr); + CHECK(!grpclb_policy()->shutting_down_); // Init the LB call. Note that the LB call will progress every time there's // activity in grpclb_policy_->interested_parties(), which is comprised of // the polling entities from client_channel. @@ -922,7 +923,7 @@ GrpcLb::BalancerCallState::BalancerCallState( } GrpcLb::BalancerCallState::~BalancerCallState() { - GPR_ASSERT(lb_call_ != nullptr); + CHECK_NE(lb_call_, nullptr); grpc_call_unref(lb_call_); grpc_metadata_array_destroy(&lb_initial_metadata_recv_); grpc_metadata_array_destroy(&lb_trailing_metadata_recv_); @@ -932,7 +933,7 @@ GrpcLb::BalancerCallState::~BalancerCallState() { } void GrpcLb::BalancerCallState::Orphan() { - GPR_ASSERT(lb_call_ != nullptr); + CHECK_NE(lb_call_, nullptr); // If we are here because grpclb_policy wants to cancel the call, // lb_on_balancer_status_received_ will complete the cancellation and clean // up. Otherwise, we are here because grpclb_policy has to orphan a failed @@ -949,7 +950,7 @@ void GrpcLb::BalancerCallState::Orphan() { } void GrpcLb::BalancerCallState::StartQuery() { - GPR_ASSERT(lb_call_ != nullptr); + CHECK_NE(lb_call_, nullptr); if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) { gpr_log(GPR_INFO, "[grpclb %p] lb_calld=%p: Starting LB call %p", grpclb_policy_.get(), this, lb_call_); @@ -967,7 +968,7 @@ void GrpcLb::BalancerCallState::StartQuery() { op->reserved = nullptr; op++; // Op: send request message. - GPR_ASSERT(send_message_payload_ != nullptr); + CHECK_NE(send_message_payload_, nullptr); op->op = GRPC_OP_SEND_MESSAGE; op->data.send_message.send_message = send_message_payload_; op->flags = 0; @@ -981,7 +982,7 @@ void GrpcLb::BalancerCallState::StartQuery() { call_error = grpc_call_start_batch_and_execute(lb_call_, ops, static_cast(op - ops), &lb_on_initial_request_sent_); - GPR_ASSERT(GRPC_CALL_OK == call_error); + CHECK_EQ(call_error, GRPC_CALL_OK); // Op: recv initial metadata. op = ops; op->op = GRPC_OP_RECV_INITIAL_METADATA; @@ -1004,7 +1005,7 @@ void GrpcLb::BalancerCallState::StartQuery() { call_error = grpc_call_start_batch_and_execute( lb_call_, ops, static_cast(op - ops), &lb_on_balancer_message_received_); - GPR_ASSERT(GRPC_CALL_OK == call_error); + CHECK_EQ(call_error, GRPC_CALL_OK); // Op: recv server status. op = ops; op->op = GRPC_OP_RECV_STATUS_ON_CLIENT; @@ -1021,7 +1022,7 @@ void GrpcLb::BalancerCallState::StartQuery() { call_error = grpc_call_start_batch_and_execute( lb_call_, ops, static_cast(op - ops), &lb_on_balancer_status_received_); - GPR_ASSERT(GRPC_CALL_OK == call_error); + CHECK_EQ(call_error, GRPC_CALL_OK); } void GrpcLb::BalancerCallState::ScheduleNextClientLoadReportLocked() { @@ -1053,7 +1054,7 @@ void GrpcLb::BalancerCallState::MaybeSendClientLoadReportLocked() { void GrpcLb::BalancerCallState::SendClientLoadReportLocked() { // Construct message payload. - GPR_ASSERT(send_message_payload_ == nullptr); + CHECK_EQ(send_message_payload_, nullptr); // Get snapshot of stats. int64_t num_calls_started; int64_t num_calls_finished; @@ -1097,7 +1098,7 @@ void GrpcLb::BalancerCallState::SendClientLoadReportLocked() { gpr_log(GPR_ERROR, "[grpclb %p] lb_calld=%p call_error=%d sending client load report", grpclb_policy_.get(), this, call_error); - GPR_ASSERT(GRPC_CALL_OK == call_error); + CHECK_EQ(call_error, GRPC_CALL_OK); } } @@ -1197,7 +1198,7 @@ void GrpcLb::BalancerCallState::OnBalancerMessageReceivedLocked() { break; } case response.SERVERLIST: { - GPR_ASSERT(lb_call_ != nullptr); + CHECK_NE(lb_call_, nullptr); auto serverlist_wrapper = MakeRefCounted(std::move(response.serverlist)); if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) { @@ -1302,7 +1303,7 @@ void GrpcLb::BalancerCallState::OnBalancerMessageReceivedLocked() { // Reuse the "OnBalancerMessageReceivedLocked" ref taken in StartQuery(). const grpc_call_error call_error = grpc_call_start_batch_and_execute( lb_call_, &op, 1, &lb_on_balancer_message_received_); - GPR_ASSERT(GRPC_CALL_OK == call_error); + CHECK_EQ(call_error, GRPC_CALL_OK); } else { Unref(DEBUG_LOCATION, "on_message_received+grpclb_shutdown"); } @@ -1318,7 +1319,7 @@ void GrpcLb::BalancerCallState::OnBalancerStatusReceived( void GrpcLb::BalancerCallState::OnBalancerStatusReceivedLocked( grpc_error_handle error) { - GPR_ASSERT(lb_call_ != nullptr); + CHECK_NE(lb_call_, nullptr); if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) { char* status_details = grpc_slice_to_c_string(lb_call_status_details_); gpr_log(GPR_INFO, @@ -1337,7 +1338,7 @@ void GrpcLb::BalancerCallState::OnBalancerStatusReceivedLocked( // case. grpclb_policy()->lb_calld_.reset(); if (grpclb_policy()->fallback_at_startup_checks_pending_) { - GPR_ASSERT(!seen_serverlist_); + CHECK(!seen_serverlist_); gpr_log(GPR_INFO, "[grpclb %p] Balancer call finished without receiving " "serverlist; entering fallback mode", @@ -1352,7 +1353,7 @@ void GrpcLb::BalancerCallState::OnBalancerStatusReceivedLocked( // This handles the fallback-after-startup case. grpclb_policy()->MaybeEnterFallbackModeAfterStartup(); } - GPR_ASSERT(!grpclb_policy()->shutting_down_); + CHECK(!grpclb_policy()->shutting_down_); grpclb_policy()->channel_control_helper()->RequestReresolution(); if (seen_initial_response_) { // If we lose connection to the LB server, reset the backoff and restart @@ -1508,7 +1509,7 @@ void GrpcLb::ShutdownLocked() { if (lb_channel_ != nullptr) { if (parent_channelz_node_ != nullptr) { channelz::ChannelNode* child_channelz_node = lb_channel_->channelz_node(); - GPR_ASSERT(child_channelz_node != nullptr); + CHECK_NE(child_channelz_node, nullptr); parent_channelz_node_->RemoveChildChannel(child_channelz_node->uuid()); } lb_channel_.reset(); @@ -1560,7 +1561,7 @@ absl::Status GrpcLb::UpdateLocked(UpdateArgs args) { } const bool is_initial_update = lb_channel_ == nullptr; config_ = args.config.TakeAsSubclass(); - GPR_ASSERT(config_ != nullptr); + CHECK(config_ != nullptr); args_ = std::move(args.args); // Update fallback address list. if (!args.addresses.ok()) { @@ -1634,7 +1635,7 @@ absl::Status GrpcLb::UpdateBalancerChannelLocked() { lb_channel_.reset(Channel::FromC( grpc_channel_create(uri_str.c_str(), channel_credentials.get(), lb_channel_args.ToC().get()))); - GPR_ASSERT(lb_channel_ != nullptr); + CHECK(lb_channel_ != nullptr); // Set up channelz linkage. channelz::ChannelNode* child_channelz_node = lb_channel_->channelz_node(); auto parent_channelz_node = args_.GetObjectRef(); @@ -1664,10 +1665,10 @@ void GrpcLb::CancelBalancerChannelConnectivityWatchLocked() { // void GrpcLb::StartBalancerCallLocked() { - GPR_ASSERT(lb_channel_ != nullptr); + CHECK(lb_channel_ != nullptr); if (shutting_down_) return; // Init the LB call data. - GPR_ASSERT(lb_calld_ == nullptr); + CHECK(lb_calld_ == nullptr); lb_calld_ = MakeOrphanable(Ref()); if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) { gpr_log(GPR_INFO, @@ -1826,7 +1827,7 @@ void GrpcLb::CreateOrUpdateChildPolicyLocked() { } update_args.args = CreateChildPolicyArgsLocked(is_backend_from_grpclb_load_balancer); - GPR_ASSERT(update_args.args != ChannelArgs()); + CHECK(update_args.args != ChannelArgs()); update_args.config = config_->child_policy(); // Create child policy if needed. if (child_policy_ == nullptr) { @@ -1856,7 +1857,7 @@ void GrpcLb::CacheDeletedSubchannelLocked( } void GrpcLb::StartSubchannelCacheTimerLocked() { - GPR_ASSERT(!cached_subchannels_.empty()); + CHECK(!cached_subchannels_.empty()); subchannel_cache_timer_handle_ = channel_control_helper()->GetEventEngine()->RunAfter( cached_subchannels_.begin()->first - Timestamp::Now(), diff --git a/src/core/load_balancing/grpclb/grpclb_balancer_addresses.cc b/src/core/load_balancing/grpclb/grpclb_balancer_addresses.cc index 17f817eb7a1..a0552c57c70 100644 --- a/src/core/load_balancing/grpclb/grpclb_balancer_addresses.cc +++ b/src/core/load_balancing/grpclb/grpclb_balancer_addresses.cc @@ -23,7 +23,7 @@ #include #include "src/core/lib/channel/channel_args.h" -#include "src/core/lib/gpr/useful.h" +#include "src/core/util/useful.h" // Channel arg key for the list of balancer addresses. #define GRPC_ARG_GRPCLB_BALANCER_ADDRESSES \ diff --git a/src/core/load_balancing/health_check_client.cc b/src/core/load_balancing/health_check_client.cc index 455dc789adb..ba70c0702f8 100644 --- a/src/core/load_balancing/health_check_client.cc +++ b/src/core/load_balancing/health_check_client.cc @@ -24,6 +24,7 @@ #include #include +#include "absl/log/check.h" #include "absl/status/status.h" #include "absl/status/statusor.h" #include "absl/strings/str_cat.h" @@ -39,13 +40,12 @@ #include #include -#include "src/core/client_channel/client_channel_channelz.h" +#include "src/core/channelz/channel_trace.h" #include "src/core/client_channel/client_channel_internal.h" #include "src/core/client_channel/subchannel.h" #include "src/core/client_channel/subchannel_stream_client.h" #include "src/core/lib/address_utils/sockaddr_utils.h" #include "src/core/lib/channel/channel_args.h" -#include "src/core/lib/channel/channel_trace.h" #include "src/core/lib/debug/trace.h" #include "src/core/lib/gprpp/debug_location.h" #include "src/core/lib/gprpp/orphanable.h" @@ -133,7 +133,7 @@ void HealthProducer::HealthChecker::OnConnectivityStateChangeLocked( state_ = GRPC_CHANNEL_CONNECTING; status_ = absl::OkStatus(); } else { - GPR_ASSERT(state_ == GRPC_CHANNEL_CONNECTING); + CHECK(state_ == GRPC_CHANNEL_CONNECTING); } // Start the health watch stream. StartHealthStreamLocked(); diff --git a/src/core/load_balancing/lb_policy_registry.cc b/src/core/load_balancing/lb_policy_registry.cc index 6a639377a42..2161f256d16 100644 --- a/src/core/load_balancing/lb_policy_registry.cc +++ b/src/core/load_balancing/lb_policy_registry.cc @@ -22,6 +22,7 @@ #include #include +#include "absl/log/check.h" #include "absl/status/status.h" #include "absl/strings/str_cat.h" #include "absl/strings/str_format.h" @@ -44,7 +45,7 @@ void LoadBalancingPolicyRegistry::Builder::RegisterLoadBalancingPolicyFactory( std::unique_ptr factory) { gpr_log(GPR_DEBUG, "registering LB policy factory for \"%s\"", std::string(factory->name()).c_str()); - GPR_ASSERT(factories_.find(factory->name()) == factories_.end()); + CHECK(factories_.find(factory->name()) == factories_.end()); factories_.emplace(factory->name(), std::move(factory)); } diff --git a/src/core/load_balancing/oob_backend_metric.cc b/src/core/load_balancing/oob_backend_metric.cc index 6d4bdd03164..0a022825e47 100644 --- a/src/core/load_balancing/oob_backend_metric.cc +++ b/src/core/load_balancing/oob_backend_metric.cc @@ -23,6 +23,7 @@ #include #include +#include "absl/log/check.h" #include "absl/status/status.h" #include "absl/strings/string_view.h" #include "google/protobuf/duration.upb.h" @@ -37,10 +38,9 @@ #include #include -#include "src/core/client_channel/client_channel_channelz.h" +#include "src/core/channelz/channel_trace.h" #include "src/core/client_channel/subchannel.h" #include "src/core/client_channel/subchannel_stream_client.h" -#include "src/core/lib/channel/channel_trace.h" #include "src/core/lib/debug/trace.h" #include "src/core/lib/gprpp/debug_location.h" #include "src/core/lib/gprpp/memory.h" @@ -225,7 +225,7 @@ void OrcaProducer::Orphaned() { MutexLock lock(&mu_); stream_client_.reset(); } - GPR_ASSERT(subchannel_ != nullptr); // Should not be called before Start(). + CHECK(subchannel_ != nullptr); // Should not be called before Start(). subchannel_->CancelConnectivityStateWatch(connectivity_watcher_); subchannel_->RemoveDataProducer(this); } diff --git a/src/core/load_balancing/outlier_detection/outlier_detection.cc b/src/core/load_balancing/outlier_detection/outlier_detection.cc index b955e0cc1ce..ffafdedbf86 100644 --- a/src/core/load_balancing/outlier_detection/outlier_detection.cc +++ b/src/core/load_balancing/outlier_detection/outlier_detection.cc @@ -31,6 +31,7 @@ #include #include "absl/base/thread_annotations.h" +#include "absl/log/check.h" #include "absl/meta/type_traits.h" #include "absl/random/random.h" #include "absl/status/status.h" @@ -333,7 +334,7 @@ class OutlierDetectionLb final : public LoadBalancingPolicy { --multiplier_; } } else { - GPR_ASSERT(ejection_time_.has_value()); + CHECK(ejection_time_.has_value()); auto change_time = ejection_time_.value() + Duration::Milliseconds(std::min( base_ejection_time_in_millis * multiplier_, diff --git a/src/core/load_balancing/pick_first/pick_first.cc b/src/core/load_balancing/pick_first/pick_first.cc index 7204b16f8be..ae5cb82489b 100644 --- a/src/core/load_balancing/pick_first/pick_first.cc +++ b/src/core/load_balancing/pick_first/pick_first.cc @@ -27,6 +27,7 @@ #include #include "absl/algorithm/container.h" +#include "absl/log/check.h" #include "absl/random/random.h" #include "absl/status/status.h" #include "absl/status/statusor.h" @@ -46,7 +47,6 @@ #include "src/core/lib/config/core_configuration.h" #include "src/core/lib/debug/trace.h" #include "src/core/lib/experiments/experiments.h" -#include "src/core/lib/gpr/useful.h" #include "src/core/lib/gprpp/crash.h" #include "src/core/lib/gprpp/debug_location.h" #include "src/core/lib/gprpp/orphanable.h" @@ -65,6 +65,7 @@ #include "src/core/load_balancing/lb_policy_factory.h" #include "src/core/load_balancing/subchannel_interface.h" #include "src/core/resolver/endpoint_addresses.h" +#include "src/core/util/useful.h" namespace grpc_core { @@ -83,19 +84,25 @@ const auto kMetricDisconnections = "grpc.lb.pick_first.disconnections", "EXPERIMENTAL. Number of times the selected subchannel becomes " "disconnected.", - "{disconnection}", {kMetricLabelTarget}, {}, false); + "{disconnection}", false) + .Labels(kMetricLabelTarget) + .Build(); const auto kMetricConnectionAttemptsSucceeded = GlobalInstrumentsRegistry::RegisterUInt64Counter( "grpc.lb.pick_first.connection_attempts_succeeded", "EXPERIMENTAL. Number of successful connection attempts.", "{attempt}", - {kMetricLabelTarget}, {}, false); + false) + .Labels(kMetricLabelTarget) + .Build(); const auto kMetricConnectionAttemptsFailed = GlobalInstrumentsRegistry::RegisterUInt64Counter( "grpc.lb.pick_first.connection_attempts_failed", "EXPERIMENTAL. Number of failed connection attempts.", "{attempt}", - {kMetricLabelTarget}, {}, false); + false) + .Labels(kMetricLabelTarget) + .Build(); class PickFirstConfig final : public LoadBalancingPolicy::Config { public: @@ -424,7 +431,7 @@ PickFirst::~PickFirst() { if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_pick_first_trace)) { gpr_log(GPR_INFO, "Destroying Pick First %p", this); } - GPR_ASSERT(subchannel_list_ == nullptr); + CHECK(subchannel_list_ == nullptr); } void PickFirst::ShutdownLocked() { @@ -698,7 +705,7 @@ void PickFirst::SubchannelList::SubchannelData::SubchannelState::Select() { gpr_log(GPR_INFO, "Pick First %p selected subchannel %p", pick_first_.get(), subchannel_.get()); } - GPR_ASSERT(subchannel_data_ != nullptr); + CHECK_NE(subchannel_data_, nullptr); pick_first_->UnsetSelectedSubchannel(); // Cancel health watch, if any. pick_first_->selected_ = std::move(subchannel_data_->subchannel_state_); // If health checking is enabled, start the health watch, but don't @@ -766,7 +773,7 @@ void PickFirst::SubchannelList::SubchannelData::SubchannelState:: return; } // We aren't trying to connect, so we must be the selected subchannel. - GPR_ASSERT(pick_first_->selected_.get() == this); + CHECK(pick_first_->selected_.get() == this); if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_pick_first_trace)) { gpr_log(GPR_INFO, "Pick First %p selected subchannel connectivity changed to %s", @@ -822,12 +829,12 @@ void PickFirst::SubchannelList::SubchannelData::OnConnectivityStateChange( } if (subchannel_list_->shutting_down_) return; // The notification must be for a subchannel in the current list. - GPR_ASSERT(subchannel_list_ == p->subchannel_list_.get()); + CHECK(subchannel_list_ == p->subchannel_list_.get()); // SHUTDOWN should never happen. - GPR_ASSERT(new_state != GRPC_CHANNEL_SHUTDOWN); + CHECK(new_state != GRPC_CHANNEL_SHUTDOWN); // READY should be caught by SubchannelState, in which case it will // not call us in the first place. - GPR_ASSERT(new_state != GRPC_CHANNEL_READY); + CHECK(new_state != GRPC_CHANNEL_READY); // Update state. absl::optional old_state = connectivity_state_; connectivity_state_ = new_state; @@ -949,11 +956,11 @@ void PickFirst::SubchannelList::SubchannelData::OnConnectivityStateChange( } void PickFirst::SubchannelList::SubchannelData::RequestConnectionWithTimer() { - GPR_ASSERT(connectivity_state_.has_value()); + CHECK(connectivity_state_.has_value()); if (connectivity_state_ == GRPC_CHANNEL_IDLE) { subchannel_state_->RequestConnection(); } else { - GPR_ASSERT(connectivity_state_ == GRPC_CHANNEL_CONNECTING); + CHECK(connectivity_state_ == GRPC_CHANNEL_CONNECTING); } // If this is not the last subchannel in the list, start the timer. if (index_ != subchannel_list_->size() - 1) { @@ -1016,7 +1023,7 @@ PickFirst::SubchannelList::SubchannelList(RefCountedPtr policy, if (addresses == nullptr) return; // Create a subchannel for each address. addresses->ForEach([&](const EndpointAddresses& address) { - GPR_ASSERT(address.addresses().size() == 1); + CHECK_EQ(address.addresses().size(), 1u); RefCountedPtr subchannel = policy_->channel_control_helper()->CreateSubchannel( address.address(), address.args(), args_); @@ -1053,7 +1060,7 @@ void PickFirst::SubchannelList::Orphan() { gpr_log(GPR_INFO, "[PF %p] Shutting down subchannel_list %p", policy_.get(), this); } - GPR_ASSERT(!shutting_down_); + CHECK(!shutting_down_); shutting_down_ = true; // Cancel Happy Eyeballs timer, if any. if (timer_handle_.has_value()) { @@ -1074,7 +1081,7 @@ void PickFirst::SubchannelList::StartConnectingNextSubchannel() { // large recursion that could overflow the stack. for (; attempting_index_ < size(); ++attempting_index_) { SubchannelData* sc = subchannels_[attempting_index_].get(); - GPR_ASSERT(sc->connectivity_state().has_value()); + CHECK(sc->connectivity_state().has_value()); if (sc->connectivity_state() != GRPC_CHANNEL_TRANSIENT_FAILURE) { // Found a subchannel not in TRANSIENT_FAILURE, so trigger a // connection attempt. @@ -1398,8 +1405,8 @@ OldPickFirst::~OldPickFirst() { if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_pick_first_trace)) { gpr_log(GPR_INFO, "Destroying Pick First %p", this); } - GPR_ASSERT(subchannel_list_ == nullptr); - GPR_ASSERT(latest_pending_subchannel_list_ == nullptr); + CHECK(subchannel_list_ == nullptr); + CHECK(latest_pending_subchannel_list_ == nullptr); } void OldPickFirst::ShutdownLocked() { @@ -1667,15 +1674,15 @@ void OldPickFirst::SubchannelList::SubchannelData::OnConnectivityStateChange( ->GetStatsPluginGroup(); // The notification must be for a subchannel in either the current or // latest pending subchannel lists. - GPR_ASSERT(subchannel_list_ == p->subchannel_list_.get() || - subchannel_list_ == p->latest_pending_subchannel_list_.get()); - GPR_ASSERT(new_state != GRPC_CHANNEL_SHUTDOWN); + CHECK(subchannel_list_ == p->subchannel_list_.get() || + subchannel_list_ == p->latest_pending_subchannel_list_.get()); + CHECK(new_state != GRPC_CHANNEL_SHUTDOWN); absl::optional old_state = connectivity_state_; connectivity_state_ = new_state; connectivity_status_ = std::move(status); // Handle updates for the currently selected subchannel. if (p->selected_ == this) { - GPR_ASSERT(subchannel_list_ == p->subchannel_list_.get()); + CHECK(subchannel_list_ == p->subchannel_list_.get()); if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_pick_first_trace)) { gpr_log(GPR_INFO, "Pick First %p selected subchannel connectivity changed to %s", p, @@ -1850,11 +1857,11 @@ void OldPickFirst::SubchannelList::SubchannelData::OnConnectivityStateChange( void OldPickFirst::SubchannelList::SubchannelData:: RequestConnectionWithTimer() { - GPR_ASSERT(connectivity_state_.has_value()); + CHECK(connectivity_state_.has_value()); if (connectivity_state_ == GRPC_CHANNEL_IDLE) { subchannel_->RequestConnection(); } else { - GPR_ASSERT(connectivity_state_ == GRPC_CHANNEL_CONNECTING); + CHECK(connectivity_state_ == GRPC_CHANNEL_CONNECTING); } // If this is not the last subchannel in the list, start the timer. if (index_ != subchannel_list_->size() - 1) { @@ -1913,8 +1920,8 @@ void OldPickFirst::SubchannelList::SubchannelData:: // for a subchannel in p->latest_pending_subchannel_list_. The // goal here is to find a subchannel from the update that we can // select in place of the current one. - GPR_ASSERT(subchannel_list_ == p->subchannel_list_.get() || - subchannel_list_ == p->latest_pending_subchannel_list_.get()); + CHECK(subchannel_list_ == p->subchannel_list_.get() || + subchannel_list_ == p->latest_pending_subchannel_list_.get()); // Case 2. Promote p->latest_pending_subchannel_list_ to p->subchannel_list_. if (subchannel_list_ == p->latest_pending_subchannel_list_.get()) { if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_pick_first_trace)) { @@ -1981,7 +1988,7 @@ OldPickFirst::SubchannelList::SubchannelList( if (addresses == nullptr) return; // Create a subchannel for each address. addresses->ForEach([&](const EndpointAddresses& address) { - GPR_ASSERT(address.addresses().size() == 1); + CHECK_EQ(address.addresses().size(), 1u); RefCountedPtr subchannel = policy_->channel_control_helper()->CreateSubchannel( address.address(), address.args(), args_); @@ -2017,7 +2024,7 @@ void OldPickFirst::SubchannelList::Orphan() { gpr_log(GPR_INFO, "[PF %p] Shutting down subchannel_list %p", policy_.get(), this); } - GPR_ASSERT(!shutting_down_); + CHECK(!shutting_down_); shutting_down_ = true; for (auto& sd : subchannels_) { sd.ShutdownLocked(); @@ -2040,7 +2047,7 @@ void OldPickFirst::SubchannelList::StartConnectingNextSubchannel() { // large recursion that could overflow the stack. for (; attempting_index_ < size(); ++attempting_index_) { SubchannelData* sc = &subchannels_[attempting_index_]; - GPR_ASSERT(sc->connectivity_state().has_value()); + CHECK(sc->connectivity_state().has_value()); if (sc->connectivity_state() != GRPC_CHANNEL_TRANSIENT_FAILURE) { // Found a subchannel not in TRANSIENT_FAILURE, so trigger a // connection attempt. diff --git a/src/core/load_balancing/priority/priority.cc b/src/core/load_balancing/priority/priority.cc index ac3eea9c371..2c8d483055b 100644 --- a/src/core/load_balancing/priority/priority.cc +++ b/src/core/load_balancing/priority/priority.cc @@ -25,6 +25,7 @@ #include #include +#include "absl/log/check.h" #include "absl/status/status.h" #include "absl/status/statusor.h" #include "absl/strings/str_cat.h" @@ -414,12 +415,17 @@ void PriorityLb::ChoosePriorityLocked() { RefAsSubclass(DEBUG_LOCATION, "ChildPriority"), child_name); auto child_config = config_->children().find(child_name); - GPR_DEBUG_ASSERT(child_config != config_->children().end()); - // TODO(roth): If the child reports a non-OK status with the - // update, we need to propagate that back to the resolver somehow. - (void)child->UpdateLocked( + DCHECK(child_config != config_->children().end()); + // If the child policy returns a non-OK status, request re-resolution. + // Note that this will initially cause fixed backoff delay in the + // resolver instead of exponential delay. However, once the + // resolver returns the initial re-resolution, we will be able to + // return non-OK from UpdateLocked(), which will trigger + // exponential backoff instead. + absl::Status status = child->UpdateLocked( child_config->second.config, child_config->second.ignore_reresolution_requests); + if (!status.ok()) channel_control_helper()->RequestReresolution(); } else { // The child already exists. Reactivate if needed. child->MaybeReactivateLocked(); @@ -464,7 +470,7 @@ void PriorityLb::ChoosePriorityLocked() { priority, child_name.c_str()); } auto& child = children_[child_name]; - GPR_ASSERT(child != nullptr); + CHECK(child != nullptr); if (child->connectivity_state() == GRPC_CHANNEL_CONNECTING) { SetCurrentPriorityLocked(priority, /*deactivate_lower_priorities=*/false, "CONNECTING (pass 2)"); @@ -496,7 +502,7 @@ void PriorityLb::SetCurrentPriorityLocked(int32_t priority, } } auto& child = children_[config_->priorities()[priority]]; - GPR_ASSERT(child != nullptr); + CHECK(child != nullptr); channel_control_helper()->UpdateState(child->connectivity_state(), child->connectivity_status(), child->GetPicker()); diff --git a/src/core/load_balancing/ring_hash/ring_hash.cc b/src/core/load_balancing/ring_hash/ring_hash.cc index 41782c70655..114c13b645a 100644 --- a/src/core/load_balancing/ring_hash/ring_hash.cc +++ b/src/core/load_balancing/ring_hash/ring_hash.cc @@ -29,6 +29,7 @@ #include "absl/base/attributes.h" #include "absl/container/inlined_vector.h" +#include "absl/log/check.h" #include "absl/status/status.h" #include "absl/status/statusor.h" #include "absl/strings/str_cat.h" @@ -169,7 +170,7 @@ class RingHash final : public LoadBalancingPolicy { size_t index() const { return index_; } - void UpdateLocked(size_t index); + absl::Status UpdateLocked(size_t index); grpc_connectivity_state connectivity_state() const { return connectivity_state_; @@ -196,7 +197,7 @@ class RingHash final : public LoadBalancingPolicy { class Helper; void CreateChildPolicy(); - void UpdateChildPolicyLocked(); + absl::Status UpdateChildPolicyLocked(); // Called when the child policy reports a connectivity state update. void OnStateUpdate(grpc_connectivity_state new_state, @@ -498,9 +499,10 @@ void RingHash::RingHashEndpoint::Orphan() { Unref(); } -void RingHash::RingHashEndpoint::UpdateLocked(size_t index) { +absl::Status RingHash::RingHashEndpoint::UpdateLocked(size_t index) { index_ = index; - if (child_policy_ != nullptr) UpdateChildPolicyLocked(); + if (child_policy_ == nullptr) return absl::OkStatus(); + return UpdateChildPolicyLocked(); } void RingHash::RingHashEndpoint::ResetBackoffLocked() { @@ -516,7 +518,7 @@ void RingHash::RingHashEndpoint::RequestConnectionLocked() { } void RingHash::RingHashEndpoint::CreateChildPolicy() { - GPR_ASSERT(child_policy_ == nullptr); + CHECK(child_policy_ == nullptr); LoadBalancingPolicy::Args lb_policy_args; lb_policy_args.work_serializer = ring_hash_->work_serializer(); lb_policy_args.args = @@ -541,25 +543,32 @@ void RingHash::RingHashEndpoint::CreateChildPolicy() { // this policy, which in turn is tied to the application's call. grpc_pollset_set_add_pollset_set(child_policy_->interested_parties(), ring_hash_->interested_parties()); - UpdateChildPolicyLocked(); + // If the child policy returns a non-OK status, request re-resolution. + // Note that this will initially cause fixed backoff delay in the + // resolver instead of exponential delay. However, once the + // resolver returns the initial re-resolution, we will be able to + // return non-OK from UpdateLocked(), which will trigger + // exponential backoff instead. + absl::Status status = UpdateChildPolicyLocked(); + if (!status.ok()) { + ring_hash_->channel_control_helper()->RequestReresolution(); + } } -void RingHash::RingHashEndpoint::UpdateChildPolicyLocked() { +absl::Status RingHash::RingHashEndpoint::UpdateChildPolicyLocked() { // Construct pick_first config. auto config = CoreConfiguration::Get().lb_policy_registry().ParseLoadBalancingConfig( Json::FromArray( {Json::FromObject({{"pick_first", Json::FromObject({})}})})); - GPR_ASSERT(config.ok()); + CHECK(config.ok()); // Update child policy. LoadBalancingPolicy::UpdateArgs update_args; update_args.addresses = std::make_shared(ring_hash_->endpoints_[index_]); update_args.args = ring_hash_->args_; update_args.config = std::move(*config); - // TODO(roth): If the child reports a non-OK status with the update, - // we need to propagate that back to the resolver somehow. - (void)child_policy_->UpdateLocked(std::move(update_args)); + return child_policy_->UpdateLocked(std::move(update_args)); } void RingHash::RingHashEndpoint::OnStateUpdate( @@ -667,13 +676,18 @@ absl::Status RingHash::UpdateLocked(UpdateArgs args) { this, static_cast(args.config.get())); // Update endpoint map. std::map> endpoint_map; + std::vector errors; for (size_t i = 0; i < endpoints_.size(); ++i) { const EndpointAddresses& addresses = endpoints_[i]; const EndpointAddressSet address_set(addresses.addresses()); // If present in old map, retain it; otherwise, create a new one. auto it = endpoint_map_.find(address_set); if (it != endpoint_map_.end()) { - it->second->UpdateLocked(i); + absl::Status status = it->second->UpdateLocked(i); + if (!status.ok()) { + errors.emplace_back(absl::StrCat("endpoint ", address_set.ToString(), + ": ", status.ToString())); + } endpoint_map.emplace(address_set, std::move(it->second)); } else { endpoint_map.emplace(address_set, MakeOrphanable( @@ -695,6 +709,10 @@ absl::Status RingHash::UpdateLocked(UpdateArgs args) { // Return a new picker. UpdateAggregatedConnectivityStateLocked(/*entered_transient_failure=*/false, absl::OkStatus()); + if (!errors.empty()) { + return absl::UnavailableError(absl::StrCat( + "errors from children: [", absl::StrJoin(errors, "; "), "]")); + } return absl::OkStatus(); } @@ -817,7 +835,7 @@ void RingHash::UpdateAggregatedConnectivityStateLocked( for (size_t i = 0; i < endpoints_.size(); ++i) { auto it = endpoint_map_.find(EndpointAddressSet(endpoints_[i].addresses())); - GPR_ASSERT(it != endpoint_map_.end()); + CHECK(it != endpoint_map_.end()); if (it->second->connectivity_state() == GRPC_CHANNEL_CONNECTING) { first_idle_index = endpoints_.size(); break; @@ -830,7 +848,7 @@ void RingHash::UpdateAggregatedConnectivityStateLocked( if (first_idle_index != endpoints_.size()) { auto it = endpoint_map_.find( EndpointAddressSet(endpoints_[first_idle_index].addresses())); - GPR_ASSERT(it != endpoint_map_.end()); + CHECK(it != endpoint_map_.end()); if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_ring_hash_trace)) { gpr_log(GPR_INFO, "[RH %p] triggering internal connection attempt for endpoint " diff --git a/src/core/load_balancing/rls/rls.cc b/src/core/load_balancing/rls/rls.cc index ea7c1c909bd..53480d6f091 100644 --- a/src/core/load_balancing/rls/rls.cc +++ b/src/core/load_balancing/rls/rls.cc @@ -41,6 +41,7 @@ #include "absl/base/thread_annotations.h" #include "absl/hash/hash.h" +#include "absl/log/check.h" #include "absl/random/random.h" #include "absl/status/status.h" #include "absl/status/statusor.h" @@ -65,10 +66,10 @@ #include #include +#include "src/core/channelz/channelz.h" #include "src/core/client_channel/client_channel_filter.h" #include "src/core/lib/backoff/backoff.h" #include "src/core/lib/channel/channel_args.h" -#include "src/core/lib/channel/channelz.h" #include "src/core/lib/channel/metrics.h" #include "src/core/lib/config/core_configuration.h" #include "src/core/lib/debug/trace.h" @@ -127,26 +128,27 @@ constexpr absl::string_view kMetricLabelPickResult = "grpc.lb.pick_result"; const auto kMetricCacheSize = GlobalInstrumentsRegistry::RegisterCallbackInt64Gauge( "grpc.lb.rls.cache_size", "EXPERIMENTAL. Size of the RLS cache.", "By", - {kMetricLabelTarget, kMetricLabelRlsServerTarget, - kMetricLabelRlsInstanceUuid}, - {}, false); + false) + .Labels(kMetricLabelTarget, kMetricLabelRlsServerTarget, + kMetricLabelRlsInstanceUuid) + .Build(); const auto kMetricCacheEntries = GlobalInstrumentsRegistry::RegisterCallbackInt64Gauge( "grpc.lb.rls.cache_entries", - "EXPERIMENTAL. Number of entries in the RLS cache.", "{entry}", - {kMetricLabelTarget, kMetricLabelRlsServerTarget, - kMetricLabelRlsInstanceUuid}, - {}, false); + "EXPERIMENTAL. Number of entries in the RLS cache.", "{entry}", false) + .Labels(kMetricLabelTarget, kMetricLabelRlsServerTarget, + kMetricLabelRlsInstanceUuid) + .Build(); const auto kMetricDefaultTargetPicks = GlobalInstrumentsRegistry::RegisterUInt64Counter( "grpc.lb.rls.default_target_picks", "EXPERIMENTAL. Number of LB picks sent to the default target.", - "{pick}", - {kMetricLabelTarget, kMetricLabelRlsServerTarget, - kMetricRlsDataPlaneTarget, kMetricLabelPickResult}, - {}, false); + "{pick}", false) + .Labels(kMetricLabelTarget, kMetricLabelRlsServerTarget, + kMetricRlsDataPlaneTarget, kMetricLabelPickResult) + .Build(); const auto kMetricTargetPicks = GlobalInstrumentsRegistry::RegisterUInt64Counter( @@ -155,17 +157,19 @@ const auto kMetricTargetPicks = "if the default target is also returned by the RLS server, RPCs sent " "to that target from the cache will be counted in this metric, not " "in grpc.rls.default_target_picks.", - "{pick}", - {kMetricLabelTarget, kMetricLabelRlsServerTarget, - kMetricRlsDataPlaneTarget, kMetricLabelPickResult}, - {}, false); + "{pick}", false) + .Labels(kMetricLabelTarget, kMetricLabelRlsServerTarget, + kMetricRlsDataPlaneTarget, kMetricLabelPickResult) + .Build(); const auto kMetricFailedPicks = GlobalInstrumentsRegistry::RegisterUInt64Counter( "grpc.lb.rls.failed_picks", "EXPERIMENTAL. Number of LB picks failed due to either a failed RLS " "request or the RLS channel being throttled.", - "{pick}", {kMetricLabelTarget, kMetricLabelRlsServerTarget}, {}, false); + "{pick}", false) + .Labels(kMetricLabelTarget, kMetricLabelRlsServerTarget) + .Build(); constexpr absl::string_view kRls = "rls_experimental"; const char kGrpc[] = "grpc"; @@ -753,9 +757,9 @@ class RlsLb final : public LoadBalancingPolicy { // Updates the picker in the work serializer. void UpdatePickerLocked() ABSL_LOCKS_EXCLUDED(&mu_); - void MaybeExportPickCount( - GlobalInstrumentsRegistry::GlobalUInt64CounterHandle handle, - absl::string_view target, const PickResult& pick_result); + template + void MaybeExportPickCount(HandleType handle, absl::string_view target, + const PickResult& pick_result); const std::string instance_uuid_; @@ -860,7 +864,7 @@ void RlsLb::ChildPolicyWrapper::StartUpdate() { auto child_policy_config = InsertOrUpdateChildPolicyField( lb_policy_->config_->child_policy_config_target_field_name(), target_, lb_policy_->config_->child_policy_config(), &errors); - GPR_ASSERT(child_policy_config.has_value()); + CHECK(child_policy_config.has_value()); if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_rls_trace)) { gpr_log( GPR_INFO, @@ -950,7 +954,7 @@ void RlsLb::ChildPolicyWrapper::ChildPolicyHelper::UpdateState( return; } wrapper_->connectivity_state_ = state; - GPR_DEBUG_ASSERT(picker != nullptr); + DCHECK(picker != nullptr); if (picker != nullptr) { wrapper_->picker_ = std::move(picker); } @@ -973,7 +977,7 @@ std::map BuildKeyMap( if (it == key_builder_map.end()) { // Didn't find exact match, try method wildcard. last_slash_pos = path.rfind('/'); - GPR_DEBUG_ASSERT(last_slash_pos != path.npos); + DCHECK(last_slash_pos != path.npos); if (GPR_UNLIKELY(last_slash_pos == path.npos)) return {}; std::string service(path.substr(0, last_slash_pos + 1)); it = key_builder_map.find(service); @@ -1007,7 +1011,7 @@ std::map BuildKeyMap( if (!key_builder->service_key.empty()) { if (last_slash_pos == path.npos) { last_slash_pos = path.rfind('/'); - GPR_DEBUG_ASSERT(last_slash_pos != path.npos); + DCHECK(last_slash_pos != path.npos); if (GPR_UNLIKELY(last_slash_pos == path.npos)) return {}; } key_map[key_builder->service_key] = @@ -1017,7 +1021,7 @@ std::map BuildKeyMap( if (!key_builder->method_key.empty()) { if (last_slash_pos == path.npos) { last_slash_pos = path.rfind('/'); - GPR_DEBUG_ASSERT(last_slash_pos != path.npos); + DCHECK(last_slash_pos != path.npos); if (GPR_UNLIKELY(last_slash_pos == path.npos)) return {}; } key_map[key_builder->method_key] = @@ -1221,7 +1225,7 @@ void RlsLb::Cache::Entry::Orphan() { size_t RlsLb::Cache::Entry::Size() const { // lru_iterator_ is not valid once we're shut down. - GPR_ASSERT(!is_shutdown_); + CHECK(!is_shutdown_); return lb_policy_->cache_.EntrySizeForKey(*lru_iterator_); } @@ -1507,7 +1511,7 @@ void RlsLb::Cache::MaybeShrinkSize(size_t bytes) { auto lru_it = lru_list_.begin(); if (GPR_UNLIKELY(lru_it == lru_list_.end())) break; auto map_it = map_.find(*lru_it); - GPR_ASSERT(map_it != map_.end()); + CHECK(map_it != map_.end()); if (!map_it->second->CanEvict()) break; if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_rls_trace)) { gpr_log(GPR_INFO, "[rlslb %p] LRU eviction: removing entry %p %s", @@ -1662,7 +1666,7 @@ void RlsLb::RlsChannel::Orphan() { // Remove channelz linkage. if (parent_channelz_node_ != nullptr) { channelz::ChannelNode* child_channelz_node = channel_->channelz_node(); - GPR_ASSERT(child_channelz_node != nullptr); + CHECK_NE(child_channelz_node, nullptr); parent_channelz_node_->RemoveChildChannel(child_channelz_node->uuid()); } // Stop connectivity watch. @@ -1698,7 +1702,7 @@ void RlsLb::RlsChannel::ReportResponseLocked(bool response_succeeded) { } void RlsLb::RlsChannel::ResetBackoff() { - GPR_DEBUG_ASSERT(channel_ != nullptr); + DCHECK(channel_ != nullptr); channel_->ResetConnectionBackoff(); } @@ -1732,7 +1736,7 @@ RlsLb::RlsRequest::RlsRequest(RefCountedPtr lb_policy, RequestKey key, absl::OkStatus()); } -RlsLb::RlsRequest::~RlsRequest() { GPR_ASSERT(call_ == nullptr); } +RlsLb::RlsRequest::~RlsRequest() { CHECK_EQ(call_, nullptr); } void RlsLb::RlsRequest::Orphan() { if (call_ != nullptr) { @@ -1795,7 +1799,7 @@ void RlsLb::RlsRequest::StartCallLocked() { Ref(DEBUG_LOCATION, "OnRlsCallComplete").release(); auto call_error = grpc_call_start_batch_and_execute( call_, ops, static_cast(op - ops), &call_complete_cb_); - GPR_ASSERT(call_error == GRPC_CALL_OK); + CHECK_EQ(call_error, GRPC_CALL_OK); } void RlsLb::RlsRequest::OnRlsCallComplete(void* arg, grpc_error_handle error) { @@ -1860,9 +1864,16 @@ void RlsLb::RlsRequest::OnRlsCallCompleteLocked(grpc_error_handle error) { // Now that we've released the lock, finish the update on any newly // created child policies. for (ChildPolicyWrapper* child : child_policies_to_finish_update) { - // TODO(roth): If the child reports an error with the update, we - // need to propagate that back to the resolver somehow. - (void)child->MaybeFinishUpdate(); + // If the child policy returns a non-OK status, request re-resolution. + // Note that this will initially cause fixed backoff delay in the + // resolver instead of exponential delay. However, once the + // resolver returns the initial re-resolution, we will be able to + // return non-OK from UpdateLocked(), which will trigger + // exponential backoff instead. + absl::Status status = child->MaybeFinishUpdate(); + if (!status.ok()) { + lb_policy_->channel_control_helper()->RequestReresolution(); + } } } @@ -1953,7 +1964,7 @@ RlsLb::RlsLb(Args args) MutexLock lock(&mu_); cache_.ReportMetricsLocked(reporter); }, - {kMetricCacheSize, kMetricCacheEntries})) { + Duration::Seconds(5), kMetricCacheSize, kMetricCacheEntries)) { if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_rls_trace)) { gpr_log(GPR_INFO, "[rlslb %p] policy created", this); } @@ -2222,9 +2233,9 @@ void RlsLb::UpdatePickerLocked() { MakeRefCounted(RefAsSubclass(DEBUG_LOCATION, "Picker"))); } -void RlsLb::MaybeExportPickCount( - GlobalInstrumentsRegistry::GlobalUInt64CounterHandle handle, - absl::string_view target, const PickResult& pick_result) { +template +void RlsLb::MaybeExportPickCount(HandleType handle, absl::string_view target, + const PickResult& pick_result) { absl::string_view pick_result_string = Match( pick_result.result, [](const LoadBalancingPolicy::PickResult::Complete&) { diff --git a/src/core/load_balancing/round_robin/round_robin.cc b/src/core/load_balancing/round_robin/round_robin.cc index 85d524e10f3..27f7f8b0a21 100644 --- a/src/core/load_balancing/round_robin/round_robin.cc +++ b/src/core/load_balancing/round_robin/round_robin.cc @@ -24,6 +24,7 @@ #include #include +#include "absl/log/check.h" #include "absl/meta/type_traits.h" #include "absl/random/random.h" #include "absl/status/status.h" @@ -72,7 +73,8 @@ class RoundRobin final : public LoadBalancingPolicy { public: RoundRobinEndpointList(RefCountedPtr round_robin, EndpointAddressesIterator* endpoints, - const ChannelArgs& args) + const ChannelArgs& args, + std::vector* errors) : EndpointList(std::move(round_robin), GRPC_TRACE_FLAG_ENABLED(grpc_lb_round_robin_trace) ? "RoundRobinEndpointList" @@ -82,7 +84,7 @@ class RoundRobin final : public LoadBalancingPolicy { const EndpointAddresses& addresses, const ChannelArgs& args) { return MakeOrphanable( std::move(endpoint_list), addresses, args, - policy()->work_serializer()); + policy()->work_serializer(), errors); }); } @@ -92,9 +94,14 @@ class RoundRobin final : public LoadBalancingPolicy { RoundRobinEndpoint(RefCountedPtr endpoint_list, const EndpointAddresses& addresses, const ChannelArgs& args, - std::shared_ptr work_serializer) + std::shared_ptr work_serializer, + std::vector* errors) : Endpoint(std::move(endpoint_list)) { - Init(addresses, args, std::move(work_serializer)); + absl::Status status = Init(addresses, args, std::move(work_serializer)); + if (!status.ok()) { + errors->emplace_back(absl::StrCat("endpoint ", addresses.ToString(), + ": ", status.ToString())); + } } private: @@ -213,8 +220,8 @@ RoundRobin::~RoundRobin() { if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_round_robin_trace)) { gpr_log(GPR_INFO, "[RR %p] Destroying Round Robin policy", this); } - GPR_ASSERT(endpoint_list_ == nullptr); - GPR_ASSERT(latest_pending_endpoint_list_ == nullptr); + CHECK(endpoint_list_ == nullptr); + CHECK(latest_pending_endpoint_list_ == nullptr); } void RoundRobin::ShutdownLocked() { @@ -255,9 +262,10 @@ absl::Status RoundRobin::UpdateLocked(UpdateArgs args) { gpr_log(GPR_INFO, "[RR %p] replacing previous pending child list %p", this, latest_pending_endpoint_list_.get()); } + std::vector errors; latest_pending_endpoint_list_ = MakeOrphanable( RefAsSubclass(DEBUG_LOCATION, "RoundRobinEndpointList"), - addresses, args.args); + addresses, args.args, &errors); // If the new list is empty, immediately promote it to // endpoint_list_ and report TRANSIENT_FAILURE. if (latest_pending_endpoint_list_->size() == 0) { @@ -281,6 +289,10 @@ absl::Status RoundRobin::UpdateLocked(UpdateArgs args) { if (endpoint_list_ == nullptr) { endpoint_list_ = std::move(latest_pending_endpoint_list_); } + if (!errors.empty()) { + return absl::UnavailableError(absl::StrCat( + "errors from children: [", absl::StrJoin(errors, "; "), "]")); + } return absl::OkStatus(); } @@ -327,20 +339,20 @@ void RoundRobin::RoundRobinEndpointList::UpdateStateCountersLocked( // We treat IDLE the same as CONNECTING, since it will immediately // transition into that state anyway. if (old_state.has_value()) { - GPR_ASSERT(*old_state != GRPC_CHANNEL_SHUTDOWN); + CHECK(*old_state != GRPC_CHANNEL_SHUTDOWN); if (*old_state == GRPC_CHANNEL_READY) { - GPR_ASSERT(num_ready_ > 0); + CHECK_GT(num_ready_, 0u); --num_ready_; } else if (*old_state == GRPC_CHANNEL_CONNECTING || *old_state == GRPC_CHANNEL_IDLE) { - GPR_ASSERT(num_connecting_ > 0); + CHECK_GT(num_connecting_, 0u); --num_connecting_; } else if (*old_state == GRPC_CHANNEL_TRANSIENT_FAILURE) { - GPR_ASSERT(num_transient_failure_ > 0); + CHECK_GT(num_transient_failure_, 0u); --num_transient_failure_; } } - GPR_ASSERT(new_state != GRPC_CHANNEL_SHUTDOWN); + CHECK(new_state != GRPC_CHANNEL_SHUTDOWN); if (new_state == GRPC_CHANNEL_READY) { ++num_ready_; } else if (new_state == GRPC_CHANNEL_CONNECTING || @@ -397,7 +409,7 @@ void RoundRobin::RoundRobinEndpointList:: pickers.push_back(endpoint->picker()); } } - GPR_ASSERT(!pickers.empty()); + CHECK(!pickers.empty()); round_robin->channel_control_helper()->UpdateState( GRPC_CHANNEL_READY, absl::OkStatus(), MakeRefCounted(round_robin, std::move(pickers))); diff --git a/src/core/load_balancing/weighted_round_robin/static_stride_scheduler.cc b/src/core/load_balancing/weighted_round_robin/static_stride_scheduler.cc index ba3f3d5a36a..0c0d0f10488 100644 --- a/src/core/load_balancing/weighted_round_robin/static_stride_scheduler.cc +++ b/src/core/load_balancing/weighted_round_robin/static_stride_scheduler.cc @@ -23,6 +23,7 @@ #include #include "absl/functional/any_invocable.h" +#include "absl/log/check.h" #include #include @@ -146,7 +147,7 @@ absl::optional StaticStrideScheduler::Make( } } - GPR_ASSERT(weights.size() == float_weights.size()); + CHECK(weights.size() == float_weights.size()); return StaticStrideScheduler{std::move(weights), std::move(next_sequence_func)}; } @@ -156,7 +157,7 @@ StaticStrideScheduler::StaticStrideScheduler( absl::AnyInvocable next_sequence_func) : next_sequence_func_(std::move(next_sequence_func)), weights_(std::move(weights)) { - GPR_ASSERT(next_sequence_func_ != nullptr); + CHECK(next_sequence_func_ != nullptr); } size_t StaticStrideScheduler::Pick() const { diff --git a/src/core/load_balancing/weighted_round_robin/weighted_round_robin.cc b/src/core/load_balancing/weighted_round_robin/weighted_round_robin.cc index b93f51f410a..d0a4165f393 100644 --- a/src/core/load_balancing/weighted_round_robin/weighted_round_robin.cc +++ b/src/core/load_balancing/weighted_round_robin/weighted_round_robin.cc @@ -28,6 +28,7 @@ #include #include "absl/base/thread_annotations.h" +#include "absl/log/check.h" #include "absl/meta/type_traits.h" #include "absl/random/random.h" #include "absl/status/status.h" @@ -84,12 +85,16 @@ constexpr absl::string_view kWeightedRoundRobin = "weighted_round_robin"; constexpr absl::string_view kMetricLabelLocality = "grpc.lb.locality"; -const auto kMetricRrFallback = GlobalInstrumentsRegistry::RegisterUInt64Counter( - "grpc.lb.wrr.rr_fallback", - "EXPERIMENTAL. Number of scheduler updates in which there were not " - "enough endpoints with valid weight, which caused the WRR policy to " - "fall back to RR behavior.", - "{update}", {kMetricLabelTarget}, {kMetricLabelLocality}, false); +const auto kMetricRrFallback = + GlobalInstrumentsRegistry::RegisterUInt64Counter( + "grpc.lb.wrr.rr_fallback", + "EXPERIMENTAL. Number of scheduler updates in which there were not " + "enough endpoints with valid weight, which caused the WRR policy to " + "fall back to RR behavior.", + "{update}", false) + .Labels(kMetricLabelTarget) + .OptionalLabels(kMetricLabelLocality) + .Build(); const auto kMetricEndpointWeightNotYetUsable = GlobalInstrumentsRegistry::RegisterUInt64Counter( @@ -98,14 +103,20 @@ const auto kMetricEndpointWeightNotYetUsable = "don't yet have usable weight information (i.e., either the load " "report has not yet been received, or it is within the blackout " "period).", - "{endpoint}", {kMetricLabelTarget}, {kMetricLabelLocality}, false); + "{endpoint}", false) + .Labels(kMetricLabelTarget) + .OptionalLabels(kMetricLabelLocality) + .Build(); const auto kMetricEndpointWeightStale = GlobalInstrumentsRegistry::RegisterUInt64Counter( "grpc.lb.wrr.endpoint_weight_stale", "EXPERIMENTAL. Number of endpoints from each scheduler update whose " "latest weight is older than the expiration period.", - "{endpoint}", {kMetricLabelTarget}, {kMetricLabelLocality}, false); + "{endpoint}", false) + .Labels(kMetricLabelTarget) + .OptionalLabels(kMetricLabelLocality) + .Build(); const auto kMetricEndpointWeights = GlobalInstrumentsRegistry::RegisterDoubleHistogram( @@ -114,7 +125,10 @@ const auto kMetricEndpointWeights = "Each bucket will be a counter that is incremented once for every " "endpoint whose weight is within that range. Note that endpoints " "without usable weights will have weight 0.", - "{weight}", {kMetricLabelTarget}, {kMetricLabelLocality}, false); + "{weight}", false) + .Labels(kMetricLabelTarget) + .OptionalLabels(kMetricLabelLocality) + .Build(); // Config for WRR policy. class WeightedRoundRobinConfig final : public LoadBalancingPolicy::Config { @@ -221,11 +235,16 @@ class WeightedRoundRobin final : public LoadBalancingPolicy { public: WrrEndpoint(RefCountedPtr endpoint_list, const EndpointAddresses& addresses, const ChannelArgs& args, - std::shared_ptr work_serializer) + std::shared_ptr work_serializer, + std::vector* errors) : Endpoint(std::move(endpoint_list)), weight_(policy()->GetOrCreateWeight( addresses.addresses())) { - Init(addresses, args, std::move(work_serializer)); + absl::Status status = Init(addresses, args, std::move(work_serializer)); + if (!status.ok()) { + errors->emplace_back(absl::StrCat("endpoint ", addresses.ToString(), + ": ", status.ToString())); + } } RefCountedPtr weight() const { return weight_; } @@ -261,7 +280,7 @@ class WeightedRoundRobin final : public LoadBalancingPolicy { WrrEndpointList(RefCountedPtr wrr, EndpointAddressesIterator* endpoints, - const ChannelArgs& args) + const ChannelArgs& args, std::vector* errors) : EndpointList(std::move(wrr), GRPC_TRACE_FLAG_ENABLED(grpc_lb_wrr_trace) ? "WrrEndpointList" @@ -271,7 +290,7 @@ class WeightedRoundRobin final : public LoadBalancingPolicy { const EndpointAddresses& addresses, const ChannelArgs& args) { return MakeOrphanable( std::move(endpoint_list), addresses, args, - policy()->work_serializer()); + policy()->work_serializer(), errors); }); } @@ -566,7 +585,7 @@ void WeightedRoundRobin::Picker::Orphaned() { WeightedRoundRobin::PickResult WeightedRoundRobin::Picker::Pick(PickArgs args) { size_t index = PickIndex(); - GPR_ASSERT(index < endpoints_.size()); + CHECK(index < endpoints_.size()); auto& endpoint_info = endpoints_[index]; if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_wrr_trace)) { gpr_log(GPR_INFO, @@ -700,8 +719,8 @@ WeightedRoundRobin::~WeightedRoundRobin() { if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_wrr_trace)) { gpr_log(GPR_INFO, "[WRR %p] Destroying Round Robin policy", this); } - GPR_ASSERT(endpoint_list_ == nullptr); - GPR_ASSERT(latest_pending_endpoint_list_ == nullptr); + CHECK(endpoint_list_ == nullptr); + CHECK(latest_pending_endpoint_list_ == nullptr); } void WeightedRoundRobin::ShutdownLocked() { @@ -767,8 +786,9 @@ absl::Status WeightedRoundRobin::UpdateLocked(UpdateArgs args) { gpr_log(GPR_INFO, "[WRR %p] replacing previous pending endpoint list %p", this, latest_pending_endpoint_list_.get()); } + std::vector errors; latest_pending_endpoint_list_ = MakeOrphanable( - RefAsSubclass(), addresses.get(), args.args); + RefAsSubclass(), addresses.get(), args.args, &errors); // If the new list is empty, immediately promote it to // endpoint_list_ and report TRANSIENT_FAILURE. if (latest_pending_endpoint_list_->size() == 0) { @@ -792,6 +812,10 @@ absl::Status WeightedRoundRobin::UpdateLocked(UpdateArgs args) { if (endpoint_list_.get() == nullptr) { endpoint_list_ = std::move(latest_pending_endpoint_list_); } + if (!errors.empty()) { + return absl::UnavailableError(absl::StrCat( + "errors from children: [", absl::StrJoin(errors, "; "), "]")); + } return absl::OkStatus(); } @@ -903,20 +927,20 @@ void WeightedRoundRobin::WrrEndpointList::UpdateStateCountersLocked( // We treat IDLE the same as CONNECTING, since it will immediately // transition into that state anyway. if (old_state.has_value()) { - GPR_ASSERT(*old_state != GRPC_CHANNEL_SHUTDOWN); + CHECK(*old_state != GRPC_CHANNEL_SHUTDOWN); if (*old_state == GRPC_CHANNEL_READY) { - GPR_ASSERT(num_ready_ > 0); + CHECK_GT(num_ready_, 0u); --num_ready_; } else if (*old_state == GRPC_CHANNEL_CONNECTING || *old_state == GRPC_CHANNEL_IDLE) { - GPR_ASSERT(num_connecting_ > 0); + CHECK_GT(num_connecting_, 0u); --num_connecting_; } else if (*old_state == GRPC_CHANNEL_TRANSIENT_FAILURE) { - GPR_ASSERT(num_transient_failure_ > 0); + CHECK_GT(num_transient_failure_, 0u); --num_transient_failure_; } } - GPR_ASSERT(new_state != GRPC_CHANNEL_SHUTDOWN); + CHECK(new_state != GRPC_CHANNEL_SHUTDOWN); if (new_state == GRPC_CHANNEL_READY) { ++num_ready_; } else if (new_state == GRPC_CHANNEL_CONNECTING || diff --git a/src/core/load_balancing/weighted_target/weighted_target.cc b/src/core/load_balancing/weighted_target/weighted_target.cc index 7da39858acd..19f5c9d5bcf 100644 --- a/src/core/load_balancing/weighted_target/weighted_target.cc +++ b/src/core/load_balancing/weighted_target/weighted_target.cc @@ -27,6 +27,7 @@ #include #include "absl/base/thread_annotations.h" +#include "absl/log/check.h" #include "absl/meta/type_traits.h" #include "absl/random/random.h" #include "absl/status/status.h" @@ -274,7 +275,7 @@ WeightedTargetLb::PickResult WeightedTargetLb::WeightedPicker::Pick( } } if (index == 0) index = start_index; - GPR_ASSERT(pickers_[index].first > key); + CHECK(pickers_[index].first > key); // Delegate to the child picker. return pickers_[index].second->Pick(args); } @@ -420,7 +421,7 @@ void WeightedTargetLb::UpdateStateLocked() { } switch (child->connectivity_state()) { case GRPC_CHANNEL_READY: { - GPR_ASSERT(child->weight() > 0); + CHECK_GT(child->weight(), 0u); ready_end += child->weight(); ready_picker_list.emplace_back(ready_end, std::move(child_picker)); break; @@ -434,7 +435,7 @@ void WeightedTargetLb::UpdateStateLocked() { break; } case GRPC_CHANNEL_TRANSIENT_FAILURE: { - GPR_ASSERT(child->weight() > 0); + CHECK_GT(child->weight(), 0u); tf_end += child->weight(); tf_picker_list.emplace_back(tf_end, std::move(child_picker)); break; @@ -513,7 +514,7 @@ void WeightedTargetLb::WeightedChild::DelayedRemovalTimer::Orphan() { } void WeightedTargetLb::WeightedChild::DelayedRemovalTimer::OnTimerLocked() { - GPR_ASSERT(timer_handle_.has_value()); + CHECK(timer_handle_.has_value()); timer_handle_.reset(); weighted_child_->weighted_target_policy_->targets_.erase( weighted_child_->name_); diff --git a/src/core/load_balancing/xds/cds.cc b/src/core/load_balancing/xds/cds.cc index 2a53ed21115..be516ce09c9 100644 --- a/src/core/load_balancing/xds/cds.cc +++ b/src/core/load_balancing/xds/cds.cc @@ -23,6 +23,7 @@ #include #include +#include "absl/log/check.h" #include "absl/status/status.h" #include "absl/status/statusor.h" #include "absl/strings/str_cat.h" @@ -36,9 +37,6 @@ #include #include -#include "src/core/ext/xds/xds_cluster.h" -#include "src/core/ext/xds/xds_common_types.h" -#include "src/core/ext/xds/xds_health_status.h" #include "src/core/lib/channel/channel_args.h" #include "src/core/lib/config/core_configuration.h" #include "src/core/lib/debug/trace.h" @@ -63,6 +61,9 @@ #include "src/core/load_balancing/outlier_detection/outlier_detection.h" #include "src/core/load_balancing/xds/xds_channel_args.h" #include "src/core/resolver/xds/xds_dependency_manager.h" +#include "src/core/xds/grpc/xds_cluster.h" +#include "src/core/xds/grpc/xds_common_types.h" +#include "src/core/xds/grpc/xds_health_status.h" namespace grpc_core { @@ -285,13 +286,13 @@ absl::Status CdsLb::UpdateLocked(UpdateArgs args) { gpr_log(GPR_INFO, "[cdslb %p] received update: cluster=%s is_dynamic=%d", this, new_config->cluster().c_str(), new_config->is_dynamic()); } - GPR_ASSERT(new_config != nullptr); + CHECK(new_config != nullptr); // Cluster name should never change, because we should use a different // child name in xds_cluster_manager in that case. if (cluster_name_.empty()) { cluster_name_ = new_config->cluster(); } else { - GPR_ASSERT(cluster_name_ == new_config->cluster()); + CHECK(cluster_name_ == new_config->cluster()); } // Start dynamic subscription if needed. if (new_config->is_dynamic() && subscription_ == nullptr) { @@ -347,7 +348,7 @@ absl::Status CdsLb::UpdateLocked(UpdateArgs args) { ReportTransientFailure(new_cluster_config.status()); return new_cluster_config.status(); } - GPR_ASSERT(new_cluster_config->cluster != nullptr); + CHECK_NE(new_cluster_config->cluster, nullptr); // Find old cluster, if any. const XdsConfig::ClusterConfig* old_cluster_config = nullptr; if (xds_config_ != nullptr) { @@ -387,7 +388,7 @@ absl::Status CdsLb::UpdateLocked(UpdateArgs args) { ReportTransientFailure(aggregate_cluster_config.status()); return aggregate_cluster_config.status(); } - GPR_ASSERT(aggregate_cluster_config->cluster != nullptr); + CHECK_NE(aggregate_cluster_config->cluster, nullptr); aggregate_cluster_resource = aggregate_cluster_config->cluster.get(); } } else { @@ -469,9 +470,8 @@ CdsLb::ChildNameState CdsLb::ComputeChildNames( const XdsConfig::ClusterConfig* old_cluster, const XdsConfig::ClusterConfig& new_cluster, const XdsConfig::ClusterConfig::EndpointConfig& endpoint_config) const { - GPR_ASSERT( - !absl::holds_alternative( - new_cluster.children)); + CHECK(!absl::holds_alternative( + new_cluster.children)); // First, build some maps from locality to child number and the reverse // from old_cluster and child_name_state_. std::map diff --git a/src/core/load_balancing/xds/xds_cluster_impl.cc b/src/core/load_balancing/xds/xds_cluster_impl.cc index acb1454a0b7..0554e28b4e7 100644 --- a/src/core/load_balancing/xds/xds_cluster_impl.cc +++ b/src/core/load_balancing/xds/xds_cluster_impl.cc @@ -25,6 +25,7 @@ #include #include "absl/base/thread_annotations.h" +#include "absl/log/check.h" #include "absl/status/status.h" #include "absl/status/statusor.h" #include "absl/strings/str_cat.h" @@ -37,12 +38,6 @@ #include #include "src/core/client_channel/client_channel_internal.h" -#include "src/core/ext/xds/xds_bootstrap.h" -#include "src/core/ext/xds/xds_bootstrap_grpc.h" -#include "src/core/ext/xds/xds_client.h" -#include "src/core/ext/xds/xds_client_grpc.h" -#include "src/core/ext/xds/xds_client_stats.h" -#include "src/core/ext/xds/xds_endpoint.h" #include "src/core/lib/channel/call_tracer.h" #include "src/core/lib/channel/channel_args.h" #include "src/core/lib/config/core_configuration.h" @@ -72,6 +67,12 @@ #include "src/core/load_balancing/xds/xds_channel_args.h" #include "src/core/resolver/endpoint_addresses.h" #include "src/core/resolver/xds/xds_dependency_manager.h" +#include "src/core/xds/grpc/xds_bootstrap_grpc.h" +#include "src/core/xds/grpc/xds_client_grpc.h" +#include "src/core/xds/grpc/xds_endpoint.h" +#include "src/core/xds/xds_client/xds_bootstrap.h" +#include "src/core/xds/xds_client/xds_client.h" +#include "src/core/xds/xds_client/xds_client_stats.h" namespace grpc_core { @@ -328,7 +329,7 @@ class XdsClusterImplLb::Picker::SubchannelCallTracker final locality_stats_.reset(DEBUG_LOCATION, "SubchannelCallTracker"); call_counter_.reset(DEBUG_LOCATION, "SubchannelCallTracker"); #ifndef NDEBUG - GPR_DEBUG_ASSERT(!started_); + DCHECK(!started_); #endif } @@ -553,7 +554,7 @@ absl::Status XdsClusterImplLb::UpdateLocked(UpdateArgs args) { // different priority child name if that happens, which means that this // policy instance will get replaced instead of being updated. if (config_ != nullptr) { - GPR_ASSERT(config_->cluster_name() == new_config->cluster_name()); + CHECK(config_->cluster_name() == new_config->cluster_name()); } // Get xDS config. auto new_xds_config = args.args.GetObjectRef(); diff --git a/src/core/load_balancing/xds/xds_override_host.cc b/src/core/load_balancing/xds/xds_override_host.cc index d0316742f37..41b3eb36ef6 100644 --- a/src/core/load_balancing/xds/xds_override_host.cc +++ b/src/core/load_balancing/xds/xds_override_host.cc @@ -31,6 +31,8 @@ #include "absl/base/thread_annotations.h" #include "absl/functional/function_ref.h" +#include "absl/log/check.h" +#include "absl/log/log.h" #include "absl/status/status.h" #include "absl/status/statusor.h" #include "absl/strings/str_cat.h" @@ -48,7 +50,6 @@ #include "src/core/client_channel/client_channel_internal.h" #include "src/core/ext/filters/stateful_session/stateful_session_filter.h" -#include "src/core/ext/xds/xds_health_status.h" #include "src/core/lib/address_utils/parse_address.h" #include "src/core/lib/address_utils/sockaddr_utils.h" #include "src/core/lib/channel/channel_args.h" @@ -81,6 +82,7 @@ #include "src/core/load_balancing/subchannel_interface.h" #include "src/core/resolver/endpoint_addresses.h" #include "src/core/resolver/xds/xds_dependency_manager.h" +#include "src/core/xds/grpc/xds_health_status.h" namespace grpc_core { @@ -228,7 +230,7 @@ class XdsOverrideHostLb final : public LoadBalancingPolicy { // already has an owned subchannel. void SetOwnedSubchannel(RefCountedPtr subchannel) ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsOverrideHostLb::mu_) { - GPR_DEBUG_ASSERT(!HasOwnedSubchannel()); + DCHECK(!HasOwnedSubchannel()); subchannel_ = std::move(subchannel); } @@ -474,7 +476,7 @@ XdsOverrideHostLb::Picker::Picker( absl::optional XdsOverrideHostLb::Picker::PickOverridenHost( XdsOverrideHostAttribute* override_host_attr) const { - GPR_ASSERT(override_host_attr != nullptr); + CHECK_NE(override_host_attr, nullptr); auto cookie_address_list = override_host_attr->cookie_address_list(); if (cookie_address_list.empty()) return absl::nullopt; // The cookie has an address list, so look through the addresses in order. @@ -529,7 +531,7 @@ XdsOverrideHostLb::Picker::PickOverridenHost( // a connection attempt and queue the pick until that attempt completes. if (idle_subchannel != nullptr) { if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_xds_override_host_trace)) { - gpr_log(GPR_INFO, "Picker override found IDLE subchannel"); + LOG(INFO) << "Picker override found IDLE subchannel"; } // Deletes itself after the connection is requested. new SubchannelConnectionRequester(std::move(idle_subchannel)); @@ -539,7 +541,7 @@ XdsOverrideHostLb::Picker::PickOverridenHost( // queue the pick and wait for the connection attempt to complete. if (found_connecting) { if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_xds_override_host_trace)) { - gpr_log(GPR_INFO, "Picker override found CONNECTING subchannel"); + LOG(INFO) << "Picker override found CONNECTING subchannel"; } return PickResult::Queue(); } @@ -548,7 +550,7 @@ XdsOverrideHostLb::Picker::PickOverridenHost( // creation of a subchannel for that entry. if (!address_with_no_subchannel.empty()) { if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_xds_override_host_trace)) { - gpr_log(GPR_INFO, "Picker override found entry with no subchannel"); + LOG(INFO) << "Picker override found entry with no subchannel"; } if (!IsWorkSerializerDispatchEnabled()) { new SubchannelCreationRequester(policy_, address_with_no_subchannel); @@ -994,7 +996,7 @@ void XdsOverrideHostLb::CreateSubchannelForAddress(absl::string_view address) { std::string(address).c_str()); } auto addr = StringToSockaddr(address); - GPR_ASSERT(addr.ok()); + CHECK(addr.ok()); // Note: We don't currently have any cases where per_address_args need to // be passed through. If we encounter any such cases in the future, we // will need to change this to store those attributes from the resolver diff --git a/src/core/load_balancing/xds/xds_wrr_locality.cc b/src/core/load_balancing/xds/xds_wrr_locality.cc index 6aa2194d7b7..ac79f69f417 100644 --- a/src/core/load_balancing/xds/xds_wrr_locality.cc +++ b/src/core/load_balancing/xds/xds_wrr_locality.cc @@ -31,7 +31,6 @@ #include #include -#include "src/core/ext/xds/xds_client_stats.h" #include "src/core/lib/channel/channel_args.h" #include "src/core/lib/config/core_configuration.h" #include "src/core/lib/debug/trace.h" @@ -51,6 +50,7 @@ #include "src/core/load_balancing/lb_policy_registry.h" #include "src/core/load_balancing/xds/xds_channel_args.h" #include "src/core/resolver/endpoint_addresses.h" +#include "src/core/xds/xds_client/xds_client_stats.h" namespace grpc_core { diff --git a/src/core/plugin_registry/grpc_plugin_registry.cc b/src/core/plugin_registry/grpc_plugin_registry.cc index 44c2336a8f7..80b4010593e 100644 --- a/src/core/plugin_registry/grpc_plugin_registry.cc +++ b/src/core/plugin_registry/grpc_plugin_registry.cc @@ -19,14 +19,14 @@ #include #include -#include "src/core/lib/channel/server_call_tracer_filter.h" +#include "src/core/handshaker/endpoint_info/endpoint_info_handshaker.h" +#include "src/core/handshaker/http_connect/http_connect_handshaker.h" +#include "src/core/handshaker/tcp_connect/tcp_connect_handshaker.h" #include "src/core/lib/config/core_configuration.h" #include "src/core/lib/surface/channel_stack_type.h" #include "src/core/lib/surface/lame_client.h" -#include "src/core/lib/surface/server.h" -#include "src/core/lib/transport/endpoint_info_handshaker.h" -#include "src/core/lib/transport/http_connect_handshaker.h" -#include "src/core/lib/transport/tcp_connect_handshaker.h" +#include "src/core/server/server.h" +#include "src/core/server/server_call_tracer_filter.h" namespace grpc_event_engine { namespace experimental { @@ -44,7 +44,6 @@ extern void SecurityRegisterHandshakerFactories( extern void RegisterClientAuthorityFilter(CoreConfiguration::Builder* builder); extern void RegisterLegacyChannelIdleFilters( CoreConfiguration::Builder* builder); -extern void RegisterDeadlineFilter(CoreConfiguration::Builder* builder); extern void RegisterGrpcLbPolicy(CoreConfiguration::Builder* builder); extern void RegisterHttpFilters(CoreConfiguration::Builder* builder); extern void RegisterMessageSizeFilter(CoreConfiguration::Builder* builder); @@ -80,10 +79,11 @@ namespace { void RegisterBuiltins(CoreConfiguration::Builder* builder) { RegisterServerCallTracerFilter(builder); builder->channel_init() - ->RegisterFilter(GRPC_CLIENT_LAME_CHANNEL) + ->RegisterV2Filter(GRPC_CLIENT_LAME_CHANNEL) .Terminal(); builder->channel_init() ->RegisterFilter(GRPC_SERVER_CHANNEL, &Server::kServerTopFilter) + .SkipV3() .BeforeAll(); } @@ -111,7 +111,6 @@ void BuildCoreConfiguration(CoreConfiguration::Builder* builder) { RegisterConnectedChannel(builder); RegisterGrpcLbPolicy(builder); RegisterHttpFilters(builder); - RegisterDeadlineFilter(builder); RegisterMessageSizeFilter(builder); RegisterServiceConfigChannelArgFilter(builder); RegisterResourceQuota(builder); diff --git a/src/core/resolver/binder/binder_resolver.cc b/src/core/resolver/binder/binder_resolver.cc index 903a5528470..7cd03f29193 100644 --- a/src/core/resolver/binder/binder_resolver.cc +++ b/src/core/resolver/binder/binder_resolver.cc @@ -37,6 +37,7 @@ #include #include +#include "absl/log/log.h" #include "absl/status/statusor.h" #include "absl/strings/str_cat.h" #include "absl/strings/string_view.h" @@ -126,12 +127,12 @@ class BinderResolverFactory final : public ResolverFactory { grpc_resolved_address addr; { if (!uri.authority().empty()) { - gpr_log(GPR_ERROR, "authority is not supported in binder scheme"); + LOG(ERROR) << "authority is not supported in binder scheme"; return false; } grpc_error_handle error = BinderAddrPopulate(uri.path(), &addr); if (!error.ok()) { - gpr_log(GPR_ERROR, "%s", StatusToString(error).c_str()); + LOG(ERROR) << StatusToString(error); return false; } } diff --git a/src/core/resolver/dns/c_ares/dns_resolver_ares.cc b/src/core/resolver/dns/c_ares/dns_resolver_ares.cc index 4fa22539ba1..06b9985c948 100644 --- a/src/core/resolver/dns/c_ares/dns_resolver_ares.cc +++ b/src/core/resolver/dns/c_ares/dns_resolver_ares.cc @@ -24,6 +24,7 @@ #include #include "absl/base/thread_annotations.h" +#include "absl/log/log.h" #include "absl/status/status.h" #include "absl/status/statusor.h" #include "absl/strings/match.h" @@ -348,7 +349,7 @@ class AresClientChannelDNSResolverFactory final : public ResolverFactory { bool IsValidUri(const URI& uri) const override { if (absl::StripPrefix(uri.path(), "/").empty()) { - gpr_log(GPR_ERROR, "no server name supplied in dns URI"); + LOG(ERROR) << "no server name supplied in dns URI"; return false; } return true; diff --git a/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc b/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc index 501e1105ef7..07738942206 100644 --- a/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +++ b/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc @@ -36,6 +36,7 @@ #include #include "absl/base/thread_annotations.h" +#include "absl/log/check.h" #include "absl/strings/str_cat.h" #include @@ -116,7 +117,7 @@ class GrpcPolledFdFactoryPosix final : public GrpcPolledFdFactory { GrpcPolledFd* NewGrpcPolledFdLocked( ares_socket_t as, grpc_pollset_set* driver_pollset_set) override { auto insert_result = owned_fds_.insert(as); - GPR_ASSERT(insert_result.second); + CHECK(insert_result.second); return new GrpcPolledFdPosix(as, driver_pollset_set); } diff --git a/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc b/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc index ab03f8132bf..ef70bfc5b67 100644 --- a/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +++ b/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc @@ -29,6 +29,7 @@ #include #include "absl/functional/any_invocable.h" +#include "absl/log/check.h" #include "absl/strings/str_format.h" #include @@ -38,7 +39,6 @@ #include #include "src/core/lib/address_utils/sockaddr_utils.h" -#include "src/core/lib/gpr/string.h" #include "src/core/lib/gprpp/crash.h" #include "src/core/lib/gprpp/memory.h" #include "src/core/lib/iomgr/iocp_windows.h" @@ -49,6 +49,7 @@ #include "src/core/lib/slice/slice_internal.h" #include "src/core/resolver/dns/c_ares/grpc_ares_ev_driver.h" #include "src/core/resolver/dns/c_ares/grpc_ares_wrapper.h" +#include "src/core/util/string.h" // TODO(apolcyn): remove this hack after fixing upstream. // Our grpc/c-ares code on Windows uses the ares_set_socket_functions API, @@ -136,8 +137,8 @@ class GrpcPolledFdWindows final : public GrpcPolledFd { GetName(), shutdown_called_); CSliceUnref(read_buf_); CSliceUnref(write_buf_); - GPR_ASSERT(read_closure_ == nullptr); - GPR_ASSERT(write_closure_ == nullptr); + CHECK_EQ(read_closure_, nullptr); + CHECK_EQ(write_closure_, nullptr); if (!shutdown_called_) { // This can happen if the socket was never seen by grpc ares wrapper // code, i.e. if we never started I/O polling on it. @@ -157,16 +158,16 @@ class GrpcPolledFdWindows final : public GrpcPolledFd { } void RegisterForOnReadableLocked(grpc_closure* read_closure) override { - GPR_ASSERT(read_closure_ == nullptr); + CHECK_EQ(read_closure_, nullptr); read_closure_ = read_closure; - GPR_ASSERT(GRPC_SLICE_LENGTH(read_buf_) == 0); + CHECK_EQ(GRPC_SLICE_LENGTH(read_buf_), 0); CSliceUnref(read_buf_); - GPR_ASSERT(!read_buf_has_data_); + CHECK(!read_buf_has_data_); read_buf_ = GRPC_SLICE_MALLOC(4192); if (connect_done_) { ContinueRegisterForOnReadableLocked(); } else { - GPR_ASSERT(pending_continue_register_for_on_readable_locked_ == false); + CHECK(pending_continue_register_for_on_readable_locked_ == false); pending_continue_register_for_on_readable_locked_ = true; } } @@ -176,7 +177,7 @@ class GrpcPolledFdWindows final : public GrpcPolledFd { "fd:|%s| ContinueRegisterForOnReadableLocked " "wsa_connect_error_:%d", GetName(), wsa_connect_error_); - GPR_ASSERT(connect_done_); + CHECK(connect_done_); if (wsa_connect_error_ != 0) { ScheduleAndNullReadClosure(GRPC_WSA_ERROR(wsa_connect_error_, "connect")); return; @@ -212,16 +213,16 @@ class GrpcPolledFdWindows final : public GrpcPolledFd { GRPC_CARES_TRACE_LOG("fd:|%s| RegisterForOnWriteableLocked called", GetName()); } else { - GPR_ASSERT(socket_type_ == SOCK_STREAM); + CHECK(socket_type_ == SOCK_STREAM); GRPC_CARES_TRACE_LOG( "fd:|%s| RegisterForOnWriteableLocked called tcp_write_state_: %d " "connect_done_: %d", GetName(), tcp_write_state_, connect_done_); } - GPR_ASSERT(write_closure_ == nullptr); + CHECK_EQ(write_closure_, nullptr); write_closure_ = write_closure; if (!connect_done_) { - GPR_ASSERT(!pending_continue_register_for_on_writeable_locked_); + CHECK(!pending_continue_register_for_on_writeable_locked_); pending_continue_register_for_on_writeable_locked_ = true; // Register an async OnTcpConnect callback here rather than when the // connect was initiated, since we are now guaranteed to hold a ref of the @@ -237,7 +238,7 @@ class GrpcPolledFdWindows final : public GrpcPolledFd { "fd:|%s| ContinueRegisterForOnWriteableLocked " "wsa_connect_error_:%d", GetName(), wsa_connect_error_); - GPR_ASSERT(connect_done_); + CHECK(connect_done_); if (wsa_connect_error_ != 0) { ScheduleAndNullWriteClosure( GRPC_WSA_ERROR(wsa_connect_error_, "connect")); @@ -246,7 +247,7 @@ class GrpcPolledFdWindows final : public GrpcPolledFd { if (socket_type_ == SOCK_DGRAM) { ScheduleAndNullWriteClosure(absl::OkStatus()); } else { - GPR_ASSERT(socket_type_ == SOCK_STREAM); + CHECK(socket_type_ == SOCK_STREAM); int wsa_error_code = 0; switch (tcp_write_state_) { case WRITE_IDLE: @@ -272,7 +273,7 @@ class GrpcPolledFdWindows final : public GrpcPolledFd { bool IsFdStillReadableLocked() override { return read_buf_has_data_; } void ShutdownLocked(grpc_error_handle /* error */) override { - GPR_ASSERT(!shutdown_called_); + CHECK(!shutdown_called_); shutdown_called_ = true; on_shutdown_locked_(); grpc_winsocket_shutdown(winsocket_); @@ -308,7 +309,7 @@ class GrpcPolledFdWindows final : public GrpcPolledFd { // c-ares overloads this recv_from virtual socket function to receive // data on both UDP and TCP sockets, and from is nullptr for TCP. if (from != nullptr) { - GPR_ASSERT(*from_len <= recv_from_source_addr_len_); + CHECK(*from_len <= recv_from_source_addr_len_); memcpy(from, &recv_from_source_addr_, recv_from_source_addr_len_); *from_len = recv_from_source_addr_len_; } @@ -377,7 +378,7 @@ class GrpcPolledFdWindows final : public GrpcPolledFd { // Therefore, the sendv handler for UDP sockets must only attempt // to write everything inline. GRPC_CARES_TRACE_LOG("fd:|%s| SendVUDP called", GetName()); - GPR_ASSERT(GRPC_SLICE_LENGTH(write_buf_) == 0); + CHECK_EQ(GRPC_SLICE_LENGTH(write_buf_), 0); CSliceUnref(write_buf_); write_buf_ = FlattenIovec(iov, iov_count); DWORD bytes_sent = 0; @@ -410,7 +411,7 @@ class GrpcPolledFdWindows final : public GrpcPolledFd { switch (tcp_write_state_) { case WRITE_IDLE: tcp_write_state_ = WRITE_REQUESTED; - GPR_ASSERT(GRPC_SLICE_LENGTH(write_buf_) == 0); + CHECK_EQ(GRPC_SLICE_LENGTH(write_buf_), 0); CSliceUnref(write_buf_); write_buf_ = FlattenIovec(iov, iov_count); wsa_error_ctx->SetWSAError(WSAEWOULDBLOCK); @@ -426,12 +427,12 @@ class GrpcPolledFdWindows final : public GrpcPolledFd { // send again. If c-ares still needs to send even more data, we'll get // to it eventually. grpc_slice currently_attempted = FlattenIovec(iov, iov_count); - GPR_ASSERT(GRPC_SLICE_LENGTH(currently_attempted) >= - GRPC_SLICE_LENGTH(write_buf_)); + CHECK(GRPC_SLICE_LENGTH(currently_attempted) >= + GRPC_SLICE_LENGTH(write_buf_)); ares_ssize_t total_sent = 0; for (size_t i = 0; i < GRPC_SLICE_LENGTH(write_buf_); i++) { - GPR_ASSERT(GRPC_SLICE_START_PTR(currently_attempted)[i] == - GRPC_SLICE_START_PTR(write_buf_)[i]); + CHECK(GRPC_SLICE_START_PTR(currently_attempted)[i] == + GRPC_SLICE_START_PTR(write_buf_)[i]); total_sent++; } CSliceUnref(currently_attempted); @@ -456,9 +457,9 @@ class GrpcPolledFdWindows final : public GrpcPolledFd { GetName(), StatusToString(error).c_str(), pending_continue_register_for_on_readable_locked_, pending_continue_register_for_on_writeable_locked_); - GPR_ASSERT(!connect_done_); + CHECK(!connect_done_); connect_done_ = true; - GPR_ASSERT(wsa_connect_error_ == 0); + CHECK_EQ(wsa_connect_error_, 0); if (!error.ok() || shutdown_called_) { wsa_connect_error_ = WSA_OPERATION_ABORTED; } else { @@ -468,7 +469,7 @@ class GrpcPolledFdWindows final : public GrpcPolledFd { WSAGetOverlappedResult(grpc_winsocket_wrapped_socket(winsocket_), &winsocket_->write_info.overlapped, &transferred_bytes, FALSE, &flags); - GPR_ASSERT(transferred_bytes == 0); + CHECK_EQ(transferred_bytes, 0); if (!wsa_success) { wsa_connect_error_ = WSAGetLastError(); char* msg = gpr_format_message(wsa_connect_error_); @@ -502,8 +503,8 @@ class GrpcPolledFdWindows final : public GrpcPolledFd { int ConnectUDP(WSAErrorContext* wsa_error_ctx, const struct sockaddr* target, ares_socklen_t target_len) { GRPC_CARES_TRACE_LOG("fd:%s ConnectUDP", GetName()); - GPR_ASSERT(!connect_done_); - GPR_ASSERT(wsa_connect_error_ == 0); + CHECK(!connect_done_); + CHECK_EQ(wsa_connect_error_, 0); SOCKET s = grpc_winsocket_wrapped_socket(winsocket_); int out = WSAConnect(s, target, target_len, nullptr, nullptr, nullptr, nullptr); @@ -639,7 +640,7 @@ class GrpcPolledFdWindows final : public GrpcPolledFd { void OnIocpWriteableLocked(grpc_error_handle error) { GRPC_CARES_TRACE_LOG("OnIocpWriteableInner. fd:|%s|", GetName()); - GPR_ASSERT(socket_type_ == SOCK_STREAM); + CHECK(socket_type_ == SOCK_STREAM); if (error.ok()) { if (winsocket_->write_info.wsa_error != 0) { error = GRPC_WSA_ERROR(winsocket_->write_info.wsa_error, @@ -651,7 +652,7 @@ class GrpcPolledFdWindows final : public GrpcPolledFd { StatusToString(error).c_str()); } } - GPR_ASSERT(tcp_write_state_ == WRITE_PENDING); + CHECK(tcp_write_state_ == WRITE_PENDING); if (error.ok()) { tcp_write_state_ = WRITE_WAITING_FOR_VERIFICATION_UPON_RETRY; write_buf_ = grpc_slice_sub_no_ref( @@ -710,7 +711,7 @@ class GrpcPolledFdFactoryWindows final : public GrpcPolledFdFactory { GrpcPolledFd* NewGrpcPolledFdLocked( ares_socket_t as, grpc_pollset_set* /* driver_pollset_set */) override { auto it = sockets_.find(as); - GPR_ASSERT(it != sockets_.end()); + CHECK(it != sockets_.end()); return it->second; } @@ -757,7 +758,7 @@ class GrpcPolledFdFactoryWindows final : public GrpcPolledFdFactory { GRPC_CARES_TRACE_LOG( "fd:|%s| created with params af:%d type:%d protocol:%d", polled_fd->GetName(), af, type, protocol); - GPR_ASSERT(self->sockets_.insert({s, polled_fd}).second); + CHECK(self->sockets_.insert({s, polled_fd}).second); return s; } @@ -767,7 +768,7 @@ class GrpcPolledFdFactoryWindows final : public GrpcPolledFdFactory { GrpcPolledFdFactoryWindows* self = static_cast(user_data); auto it = self->sockets_.find(as); - GPR_ASSERT(it != self->sockets_.end()); + CHECK(it != self->sockets_.end()); return it->second->Connect(&wsa_error_ctx, target, target_len); } @@ -777,7 +778,7 @@ class GrpcPolledFdFactoryWindows final : public GrpcPolledFdFactory { GrpcPolledFdFactoryWindows* self = static_cast(user_data); auto it = self->sockets_.find(as); - GPR_ASSERT(it != self->sockets_.end()); + CHECK(it != self->sockets_.end()); return it->second->SendV(&wsa_error_ctx, iov, iovec_count); } @@ -788,7 +789,7 @@ class GrpcPolledFdFactoryWindows final : public GrpcPolledFdFactory { GrpcPolledFdFactoryWindows* self = static_cast(user_data); auto it = self->sockets_.find(as); - GPR_ASSERT(it != self->sockets_.end()); + CHECK(it != self->sockets_.end()); return it->second->RecvFrom(&wsa_error_ctx, data, data_len, flags, from, from_len); } diff --git a/src/core/resolver/dns/c_ares/grpc_ares_wrapper.cc b/src/core/resolver/dns/c_ares/grpc_ares_wrapper.cc index c27561dd06b..7994a1900a5 100644 --- a/src/core/resolver/dns/c_ares/grpc_ares_wrapper.cc +++ b/src/core/resolver/dns/c_ares/grpc_ares_wrapper.cc @@ -19,6 +19,7 @@ #include #include +#include "absl/log/log.h" #include "absl/strings/string_view.h" #include @@ -46,6 +47,7 @@ #include #include +#include "absl/log/check.h" #include "absl/status/status.h" #include "absl/status/statusor.h" #include "absl/strings/str_cat.h" @@ -59,7 +61,6 @@ #include "src/core/lib/address_utils/parse_address.h" #include "src/core/lib/address_utils/sockaddr_utils.h" #include "src/core/lib/channel/channel_args.h" -#include "src/core/lib/gpr/string.h" #include "src/core/lib/gprpp/debug_location.h" #include "src/core/lib/gprpp/host_port.h" #include "src/core/lib/gprpp/time.h" @@ -70,6 +71,7 @@ #include "src/core/lib/iomgr/timer.h" #include "src/core/resolver/dns/c_ares/grpc_ares_ev_driver.h" #include "src/core/resolver/dns/c_ares/grpc_ares_wrapper.h" +#include "src/core/util/string.h" using grpc_core::EndpointAddresses; using grpc_core::EndpointAddressesList; @@ -204,7 +206,7 @@ static void grpc_ares_ev_driver_unref(grpc_ares_ev_driver* ev_driver) if (gpr_unref(&ev_driver->refs)) { GRPC_CARES_TRACE_LOG("request:%p destroy ev_driver %p", ev_driver->request, ev_driver); - GPR_ASSERT(ev_driver->fds == nullptr); + CHECK_EQ(ev_driver->fds, nullptr); ares_destroy(ev_driver->channel); grpc_ares_complete_request_locked(ev_driver->request); delete ev_driver; @@ -215,9 +217,9 @@ static void fd_node_destroy_locked(fd_node* fdn) ABSL_EXCLUSIVE_LOCKS_REQUIRED(&grpc_ares_request::mu) { GRPC_CARES_TRACE_LOG("request:%p delete fd: %s", fdn->ev_driver->request, fdn->grpc_polled_fd->GetName()); - GPR_ASSERT(!fdn->readable_registered); - GPR_ASSERT(!fdn->writable_registered); - GPR_ASSERT(fdn->already_shutdown); + CHECK(!fdn->readable_registered); + CHECK(!fdn->writable_registered); + CHECK(fdn->already_shutdown); delete fdn->grpc_polled_fd; delete fdn; } @@ -357,7 +359,7 @@ static void on_ares_backup_poll_alarm(void* arg, grpc_error_handle error) { static void on_readable(void* arg, grpc_error_handle error) { fd_node* fdn = static_cast(arg); grpc_core::MutexLock lock(&fdn->ev_driver->request->mu); - GPR_ASSERT(fdn->readable_registered); + CHECK(fdn->readable_registered); grpc_ares_ev_driver* ev_driver = fdn->ev_driver; const ares_socket_t as = fdn->grpc_polled_fd->GetWrappedAresSocketLocked(); fdn->readable_registered = false; @@ -381,7 +383,7 @@ static void on_readable(void* arg, grpc_error_handle error) { static void on_writable(void* arg, grpc_error_handle error) { fd_node* fdn = static_cast(arg); grpc_core::MutexLock lock(&fdn->ev_driver->request->mu); - GPR_ASSERT(fdn->writable_registered); + CHECK(fdn->writable_registered); grpc_ares_ev_driver* ev_driver = fdn->ev_driver; const ares_socket_t as = fdn->grpc_polled_fd->GetWrappedAresSocketLocked(); fdn->writable_registered = false; @@ -929,7 +931,7 @@ static bool inner_resolve_as_ip_literal_locked( false /* log errors */) || grpc_parse_ipv6_hostport(hostport->c_str(), &addr, false /* log errors */)) { - GPR_ASSERT(*addrs == nullptr); + CHECK(*addrs == nullptr); *addrs = std::make_unique(); (*addrs)->emplace_back(addr, grpc_core::ChannelArgs()); return true; @@ -951,7 +953,7 @@ static bool resolve_as_ip_literal_locked( static bool target_matches_localhost_inner(const char* name, std::string* host, std::string* port) { if (!grpc_core::SplitHostPort(name, host, port)) { - gpr_log(GPR_ERROR, "Unable to split host and port for name: %s", name); + LOG(ERROR) << "Unable to split host and port for name: " << name; return false; } return gpr_stricmp(host->c_str(), "localhost") == 0; @@ -987,7 +989,7 @@ static bool inner_maybe_resolve_localhost_manually_locked( *port = default_port; } if (gpr_stricmp(host->c_str(), "localhost") == 0) { - GPR_ASSERT(*addrs == nullptr); + CHECK(*addrs == nullptr); *addrs = std::make_unique(); uint16_t numeric_port = grpc_strhtons(port->c_str()); grpc_resolved_address address; @@ -1184,7 +1186,7 @@ grpc_ares_request* (*grpc_dns_lookup_txt_ares)( int query_timeout_ms) = grpc_dns_lookup_txt_ares_impl; static void grpc_cancel_ares_request_impl(grpc_ares_request* r) { - GPR_ASSERT(r != nullptr); + CHECK_NE(r, nullptr); grpc_core::MutexLock lock(&r->mu); GRPC_CARES_TRACE_LOG("request:%p grpc_cancel_ares_request ev_driver:%p", r, r->ev_driver); diff --git a/src/core/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc b/src/core/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc index 9b87b56c1f1..22b56fdd42c 100644 --- a/src/core/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +++ b/src/core/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc @@ -25,10 +25,10 @@ #include #include "src/core/lib/address_utils/parse_address.h" -#include "src/core/lib/gpr/string.h" #include "src/core/lib/iomgr/socket_windows.h" #include "src/core/resolver/dns/c_ares/grpc_ares_wrapper.h" #include "src/core/resolver/endpoint_addresses.h" +#include "src/core/util/string.h" bool grpc_ares_query_ipv6() { return grpc_ipv6_loopback_available(); } diff --git a/src/core/resolver/dns/dns_resolver_plugin.cc b/src/core/resolver/dns/dns_resolver_plugin.cc index a0f92a6c600..122c3fd740e 100644 --- a/src/core/resolver/dns/dns_resolver_plugin.cc +++ b/src/core/resolver/dns/dns_resolver_plugin.cc @@ -15,6 +15,7 @@ #include +#include "absl/log/log.h" #include "absl/strings/match.h" #include @@ -32,14 +33,14 @@ namespace grpc_core { void RegisterDnsResolver(CoreConfiguration::Builder* builder) { #ifdef GRPC_IOS_EVENT_ENGINE_CLIENT - gpr_log(GPR_DEBUG, "Using EventEngine dns resolver"); + VLOG(2) << "Using EventEngine dns resolver"; builder->resolver_registry()->RegisterResolverFactory( std::make_unique()); return; #endif #ifndef GRPC_DO_NOT_INSTANTIATE_POSIX_POLLER if (IsEventEngineDnsEnabled()) { - gpr_log(GPR_DEBUG, "Using EventEngine dns resolver"); + VLOG(2) << "Using EventEngine dns resolver"; builder->resolver_registry()->RegisterResolverFactory( std::make_unique()); return; @@ -48,14 +49,14 @@ void RegisterDnsResolver(CoreConfiguration::Builder* builder) { auto resolver = ConfigVars::Get().DnsResolver(); // ---- Ares resolver ---- if (ShouldUseAresDnsResolver(resolver)) { - gpr_log(GPR_DEBUG, "Using ares dns resolver"); + VLOG(2) << "Using ares dns resolver"; RegisterAresDnsResolver(builder); return; } // ---- Native resolver ---- if (absl::EqualsIgnoreCase(resolver, "native") || !builder->resolver_registry()->HasResolverFactory("dns")) { - gpr_log(GPR_DEBUG, "Using native dns resolver"); + VLOG(2) << "Using native dns resolver"; RegisterNativeDnsResolver(builder); return; } diff --git a/src/core/resolver/dns/event_engine/event_engine_client_channel_resolver.cc b/src/core/resolver/dns/event_engine/event_engine_client_channel_resolver.cc index da806a809e1..743422ab603 100644 --- a/src/core/resolver/dns/event_engine/event_engine_client_channel_resolver.cc +++ b/src/core/resolver/dns/event_engine/event_engine_client_channel_resolver.cc @@ -25,6 +25,8 @@ #include "absl/base/thread_annotations.h" #include "absl/cleanup/cleanup.h" +#include "absl/log/check.h" +#include "absl/log/log.h" #include "absl/status/status.h" #include "absl/status/statusor.h" #include "absl/strings/match.h" @@ -434,7 +436,7 @@ void EventEngineClientChannelDNSResolver::EventEngineDNSRequestWrapper:: // Make sure field destroys before cleanup. ValidationErrors::ScopedField field(&errors_, "txt lookup"); if (orphaned_) return; - GPR_ASSERT(is_txt_inflight_); + CHECK(is_txt_inflight_); is_txt_inflight_ = false; if (!service_config.ok()) { errors_.AddError(service_config.status().message()); @@ -566,7 +568,7 @@ absl::optional EventEngineClientChannelDNSResolver:: bool EventEngineClientChannelDNSResolverFactory::IsValidUri( const URI& uri) const { if (absl::StripPrefix(uri.path(), "/").empty()) { - gpr_log(GPR_ERROR, "no server name supplied in dns URI"); + LOG(ERROR) << "no server name supplied in dns URI"; return false; } return true; diff --git a/src/core/resolver/dns/native/dns_resolver.cc b/src/core/resolver/dns/native/dns_resolver.cc index 43dddc719a4..8ecb92d4857 100644 --- a/src/core/resolver/dns/native/dns_resolver.cc +++ b/src/core/resolver/dns/native/dns_resolver.cc @@ -20,6 +20,7 @@ #include #include "absl/functional/bind_front.h" +#include "absl/log/log.h" #include "absl/status/status.h" #include "absl/status/statusor.h" #include "absl/strings/str_cat.h" @@ -150,11 +151,11 @@ class NativeClientChannelDNSResolverFactory final : public ResolverFactory { bool IsValidUri(const URI& uri) const override { if (GPR_UNLIKELY(!uri.authority().empty())) { - gpr_log(GPR_ERROR, "authority based dns uri's not supported"); + LOG(ERROR) << "authority based dns uri's not supported"; return false; } if (absl::StripPrefix(uri.path(), "/").empty()) { - gpr_log(GPR_ERROR, "no server name supplied in dns URI"); + LOG(ERROR) << "no server name supplied in dns URI"; return false; } return true; diff --git a/src/core/resolver/endpoint_addresses.cc b/src/core/resolver/endpoint_addresses.cc index a5b29010b2c..19fbfdfbc16 100644 --- a/src/core/resolver/endpoint_addresses.cc +++ b/src/core/resolver/endpoint_addresses.cc @@ -24,6 +24,7 @@ #include #include +#include "absl/log/check.h" #include "absl/status/status.h" #include "absl/status/statusor.h" #include "absl/strings/str_cat.h" @@ -34,7 +35,7 @@ #include "src/core/lib/address_utils/sockaddr_utils.h" #include "src/core/lib/channel/channel_args.h" -#include "src/core/lib/gpr/useful.h" +#include "src/core/util/useful.h" // IWYU pragma: no_include @@ -47,7 +48,7 @@ EndpointAddresses::EndpointAddresses(const grpc_resolved_address& address, EndpointAddresses::EndpointAddresses( std::vector addresses, const ChannelArgs& args) : addresses_(std::move(addresses)), args_(args) { - GPR_ASSERT(!addresses_.empty()); + CHECK(!addresses_.empty()); } EndpointAddresses::EndpointAddresses(const EndpointAddresses& other) @@ -110,7 +111,7 @@ bool EndpointAddressSet::operator==(const EndpointAddressSet& other) const { if (addresses_.size() != other.addresses_.size()) return false; auto other_it = other.addresses_.begin(); for (auto it = addresses_.begin(); it != addresses_.end(); ++it) { - GPR_ASSERT(other_it != other.addresses_.end()); + CHECK(other_it != other.addresses_.end()); if (it->len != other_it->len || memcmp(it->addr, other_it->addr, it->len) != 0) { return false; diff --git a/src/core/resolver/fake/fake_resolver.cc b/src/core/resolver/fake/fake_resolver.cc index 08f7404b964..99703f8a6ea 100644 --- a/src/core/resolver/fake/fake_resolver.cc +++ b/src/core/resolver/fake/fake_resolver.cc @@ -23,6 +23,7 @@ #include #include +#include "absl/log/check.h" #include "absl/strings/string_view.h" #include @@ -30,12 +31,12 @@ #include "src/core/lib/channel/channel_args.h" #include "src/core/lib/config/core_configuration.h" -#include "src/core/lib/gpr/useful.h" #include "src/core/lib/gprpp/debug_location.h" #include "src/core/lib/gprpp/orphanable.h" #include "src/core/lib/gprpp/work_serializer.h" #include "src/core/lib/uri/uri_parser.h" #include "src/core/resolver/resolver_factory.h" +#include "src/core/util/useful.h" namespace grpc_core { @@ -95,7 +96,7 @@ void FakeResolver::StartLocked() { void FakeResolver::RequestReresolutionLocked() { // Re-resolution can't happen until after we return an initial result. - GPR_ASSERT(response_generator_ != nullptr); + CHECK(response_generator_ != nullptr); response_generator_->ReresolutionRequested(); } diff --git a/src/core/resolver/fake/fake_resolver.h b/src/core/resolver/fake/fake_resolver.h index c164c04ab38..75dc3ab0ca4 100644 --- a/src/core/resolver/fake/fake_resolver.h +++ b/src/core/resolver/fake/fake_resolver.h @@ -27,12 +27,12 @@ #include #include -#include "src/core/lib/gpr/useful.h" #include "src/core/lib/gprpp/notification.h" #include "src/core/lib/gprpp/ref_counted.h" #include "src/core/lib/gprpp/ref_counted_ptr.h" #include "src/core/lib/gprpp/sync.h" #include "src/core/resolver/resolver.h" +#include "src/core/util/useful.h" #define GRPC_ARG_FAKE_RESOLVER_RESPONSE_GENERATOR \ "grpc.fake_resolver.response_generator" diff --git a/src/core/resolver/google_c2p/google_c2p_resolver.cc b/src/core/resolver/google_c2p/google_c2p_resolver.cc index 18705a896d0..d58e9a81b3e 100644 --- a/src/core/resolver/google_c2p/google_c2p_resolver.cc +++ b/src/core/resolver/google_c2p/google_c2p_resolver.cc @@ -21,6 +21,8 @@ #include #include +#include "absl/log/check.h" +#include "absl/log/log.h" #include "absl/status/statusor.h" #include "absl/strings/str_cat.h" #include "absl/strings/string_view.h" @@ -32,8 +34,6 @@ #include #include "src/core/ext/gcp/metadata_query.h" -#include "src/core/ext/xds/xds_bootstrap.h" -#include "src/core/ext/xds/xds_client_grpc.h" #include "src/core/lib/channel/channel_args.h" #include "src/core/lib/config/core_configuration.h" #include "src/core/lib/gprpp/debug_location.h" @@ -51,6 +51,8 @@ #include "src/core/resolver/resolver.h" #include "src/core/resolver/resolver_factory.h" #include "src/core/resolver/resolver_registry.h" +#include "src/core/xds/grpc/xds_client_grpc.h" +#include "src/core/xds/xds_client/xds_bootstrap.h" namespace grpc_core { @@ -122,7 +124,7 @@ GoogleCloud2ProdResolver::GoogleCloud2ProdResolver(ResolverArgs args) CoreConfiguration::Get().resolver_registry().CreateResolver( absl::StrCat("dns:", name_to_resolve), args.args, args.pollset_set, work_serializer_, std::move(args.result_handler)); - GPR_ASSERT(child_resolver_ != nullptr); + CHECK(child_resolver_ != nullptr); return; } // Maybe override metadata server name for testing @@ -141,7 +143,7 @@ GoogleCloud2ProdResolver::GoogleCloud2ProdResolver(ResolverArgs args) child_resolver_ = CoreConfiguration::Get().resolver_registry().CreateResolver( xds_uri, args.args, args.pollset_set, work_serializer_, std::move(args.result_handler)); - GPR_ASSERT(child_resolver_ != nullptr); + CHECK(child_resolver_ != nullptr); } void GoogleCloud2ProdResolver::StartLocked() { @@ -281,7 +283,7 @@ class GoogleCloud2ProdResolverFactory final : public ResolverFactory { bool IsValidUri(const URI& uri) const override { if (GPR_UNLIKELY(!uri.authority().empty())) { - gpr_log(GPR_ERROR, "google-c2p URI scheme does not support authorities"); + LOG(ERROR) << "google-c2p URI scheme does not support authorities"; return false; } return true; diff --git a/src/core/resolver/polling_resolver.cc b/src/core/resolver/polling_resolver.cc index 0a1f79a52e2..d4aa7c73d66 100644 --- a/src/core/resolver/polling_resolver.cc +++ b/src/core/resolver/polling_resolver.cc @@ -23,6 +23,7 @@ #include #include +#include "absl/log/check.h" #include "absl/status/status.h" #include "absl/status/statusor.h" #include "absl/strings/str_cat.h" @@ -171,7 +172,7 @@ void PollingResolver::OnRequestCompleteLocked(Result result) { : result.service_config.status().ToString().c_str(), result.resolution_note.c_str()); } - GPR_ASSERT(result.result_health_callback == nullptr); + CHECK(result.result_health_callback == nullptr); result.result_health_callback = [self = RefAsSubclass( DEBUG_LOCATION, "result_health_callback")](absl::Status status) { @@ -206,7 +207,7 @@ void PollingResolver::GetResultStatus(absl::Status status) { ExecCtx::Get()->InvalidateNow(); const Timestamp next_try = backoff_.NextAttemptTime(); const Duration timeout = next_try - Timestamp::Now(); - GPR_ASSERT(!next_resolution_timer_handle_.has_value()); + CHECK(!next_resolution_timer_handle_.has_value()); if (GPR_UNLIKELY(tracer_ != nullptr && tracer_->enabled())) { if (timeout > Duration::Zero()) { gpr_log(GPR_INFO, "[polling resolver %p] retrying in %" PRId64 " ms", diff --git a/src/core/resolver/resolver_registry.cc b/src/core/resolver/resolver_registry.cc index 47930c25cb4..df52dba8377 100644 --- a/src/core/resolver/resolver_registry.cc +++ b/src/core/resolver/resolver_registry.cc @@ -16,6 +16,7 @@ #include "src/core/resolver/resolver_registry.h" +#include "absl/log/check.h" #include "absl/status/status.h" #include "absl/status/statusor.h" #include "absl/strings/ascii.h" @@ -50,9 +51,9 @@ bool IsLowerCase(absl::string_view str) { void ResolverRegistry::Builder::RegisterResolverFactory( std::unique_ptr factory) { - GPR_ASSERT(IsLowerCase(factory->scheme())); + CHECK(IsLowerCase(factory->scheme())); auto p = state_.factories.emplace(factory->scheme(), std::move(factory)); - GPR_ASSERT(p.second); + CHECK(p.second); } bool ResolverRegistry::Builder::HasResolverFactory( @@ -130,7 +131,7 @@ ResolverFactory* ResolverRegistry::LookupResolverFactory( // point to the parsed URI. ResolverFactory* ResolverRegistry::FindResolverFactory( absl::string_view target, URI* uri, std::string* canonical_target) const { - GPR_ASSERT(uri != nullptr); + CHECK_NE(uri, nullptr); absl::StatusOr tmp_uri = URI::Parse(target); ResolverFactory* factory = tmp_uri.ok() ? LookupResolverFactory(tmp_uri->scheme()) : nullptr; diff --git a/src/core/resolver/xds/xds_dependency_manager.cc b/src/core/resolver/xds/xds_dependency_manager.cc index 182fe249e7e..566e16059ce 100644 --- a/src/core/resolver/xds/xds_dependency_manager.cc +++ b/src/core/resolver/xds/xds_dependency_manager.cc @@ -18,16 +18,17 @@ #include +#include "absl/log/check.h" #include "absl/strings/str_join.h" #include -#include "src/core/ext/xds/xds_routing.h" #include "src/core/lib/config/core_configuration.h" #include "src/core/lib/gprpp/match.h" #include "src/core/load_balancing/xds/xds_channel_args.h" #include "src/core/resolver/fake/fake_resolver.h" #include "src/core/resolver/xds/xds_resolver_trace.h" +#include "src/core/xds/grpc/xds_routing.h" namespace grpc_core { @@ -729,7 +730,7 @@ bool XdsDependencyManager::PopulateClusterConfigMap( std::set* eds_resources_seen, std::set* dns_names_seen, absl::StatusOr>* leaf_clusters) { - if (depth > 0) GPR_ASSERT(leaf_clusters != nullptr); + if (depth > 0) CHECK_NE(leaf_clusters, nullptr); if (depth == kMaxXdsAggregateClusterRecursionDepth) { *leaf_clusters = absl::UnavailableError("aggregate cluster graph exceeds max depth"); diff --git a/src/core/resolver/xds/xds_dependency_manager.h b/src/core/resolver/xds/xds_dependency_manager.h index 903c8b95e89..9b2a5580601 100644 --- a/src/core/resolver/xds/xds_dependency_manager.h +++ b/src/core/resolver/xds/xds_dependency_manager.h @@ -23,13 +23,13 @@ #include -#include "src/core/ext/xds/xds_client_grpc.h" -#include "src/core/ext/xds/xds_cluster.h" -#include "src/core/ext/xds/xds_endpoint.h" -#include "src/core/ext/xds/xds_listener.h" -#include "src/core/ext/xds/xds_route_config.h" #include "src/core/lib/gprpp/ref_counted.h" #include "src/core/resolver/resolver.h" +#include "src/core/xds/grpc/xds_client_grpc.h" +#include "src/core/xds/grpc/xds_cluster.h" +#include "src/core/xds/grpc/xds_endpoint.h" +#include "src/core/xds/grpc/xds_listener.h" +#include "src/core/xds/grpc/xds_route_config.h" namespace grpc_core { diff --git a/src/core/resolver/xds/xds_resolver.cc b/src/core/resolver/xds/xds_resolver.cc index 537401f4361..6e51ab1d856 100644 --- a/src/core/resolver/xds/xds_resolver.cc +++ b/src/core/resolver/xds/xds_resolver.cc @@ -26,6 +26,7 @@ #include #include +#include "absl/log/check.h" #include "absl/meta/type_traits.h" #include "absl/random/random.h" #include "absl/status/status.h" @@ -49,13 +50,6 @@ #include "src/core/client_channel/client_channel_internal.h" #include "src/core/client_channel/config_selector.h" -#include "src/core/ext/xds/xds_bootstrap.h" -#include "src/core/ext/xds/xds_bootstrap_grpc.h" -#include "src/core/ext/xds/xds_client_grpc.h" -#include "src/core/ext/xds/xds_http_filters.h" -#include "src/core/ext/xds/xds_listener.h" -#include "src/core/ext/xds/xds_route_config.h" -#include "src/core/ext/xds/xds_routing.h" #include "src/core/lib/channel/channel_args.h" #include "src/core/lib/channel/channel_fwd.h" #include "src/core/lib/channel/channel_stack.h" @@ -92,6 +86,13 @@ #include "src/core/resolver/xds/xds_resolver_trace.h" #include "src/core/service_config/service_config.h" #include "src/core/service_config/service_config_impl.h" +#include "src/core/xds/grpc/xds_bootstrap_grpc.h" +#include "src/core/xds/grpc/xds_client_grpc.h" +#include "src/core/xds/grpc/xds_http_filters.h" +#include "src/core/xds/grpc/xds_listener.h" +#include "src/core/xds/grpc/xds_route_config.h" +#include "src/core/xds/grpc/xds_routing.h" +#include "src/core/xds/xds_client/xds_bootstrap.h" namespace grpc_core { @@ -329,6 +330,7 @@ class XdsResolver final : public Resolver { static const NoInterceptor OnServerInitialMetadata; static const NoInterceptor OnServerTrailingMetadata; static const NoInterceptor OnClientToServerMessage; + static const NoInterceptor OnClientToServerHalfClose; static const NoInterceptor OnServerToClientMessage; static const NoInterceptor OnFinalize; }; @@ -382,6 +384,8 @@ const NoInterceptor XdsResolver::ClusterSelectionFilter::Call::OnServerTrailingMetadata; const NoInterceptor XdsResolver::ClusterSelectionFilter::Call::OnClientToServerMessage; +const NoInterceptor + XdsResolver::ClusterSelectionFilter::Call::OnClientToServerHalfClose; const NoInterceptor XdsResolver::ClusterSelectionFilter::Call::OnServerToClientMessage; const NoInterceptor XdsResolver::ClusterSelectionFilter::Call::OnFinalize; @@ -638,7 +642,7 @@ XdsResolver::XdsConfigSelector::XdsConfigSelector( const XdsHttpFilterImpl* filter_impl = http_filter_registry.GetFilterForType( http_filter.config.config_proto_type_name); - GPR_ASSERT(filter_impl != nullptr); + CHECK_NE(filter_impl, nullptr); // Add C-core filter to list. if (filter_impl->channel_filter() != nullptr) { filters_.push_back(filter_impl->channel_filter()); @@ -688,7 +692,7 @@ absl::optional HeaderHashHelper( absl::Status XdsResolver::XdsConfigSelector::GetCallConfig( GetCallConfigArgs args) { Slice* path = args.initial_metadata->get_pointer(HttpPathMetadata()); - GPR_ASSERT(path != nullptr); + CHECK_NE(path, nullptr); auto* entry = route_config_data_->GetRouteForRequest(path->as_string_view(), args.initial_metadata); if (entry == nullptr) { @@ -736,7 +740,7 @@ absl::Status XdsResolver::XdsConfigSelector::GetCallConfig( } } if (index == 0) index = start_index; - GPR_ASSERT(entry->weighted_cluster_state[index].range_end > key); + CHECK(entry->weighted_cluster_state[index].range_end > key); cluster_name = absl::StrCat( "cluster:", entry->weighted_cluster_state[index].cluster); method_config = entry->weighted_cluster_state[index].method_config; @@ -750,7 +754,7 @@ absl::Status XdsResolver::XdsConfigSelector::GetCallConfig( method_config = entry->method_config; }); auto cluster = route_config_data_->FindClusterRef(cluster_name); - GPR_ASSERT(cluster != nullptr); + CHECK(cluster != nullptr); // Generate a hash. absl::optional hash; for (const auto& hash_policy : route_action->hash_policies) { @@ -854,7 +858,7 @@ void XdsResolver::ClusterSelectionFilter::Call::OnClientInitialMetadata( GetContext() [GRPC_CONTEXT_SERVICE_CONFIG_CALL_DATA] .value); - GPR_ASSERT(service_config_call_data != nullptr); + CHECK_NE(service_config_call_data, nullptr); auto* route_state_attribute = static_cast( service_config_call_data->GetCallAttribute()); auto* cluster_name_attribute = @@ -992,7 +996,7 @@ void XdsResolver::OnResourceDoesNotExist(std::string context) { Result result; result.addresses.emplace(); result.service_config = ServiceConfigImpl::Create(args_, "{}"); - GPR_ASSERT(result.service_config.ok()); + CHECK(result.service_config.ok()); result.resolution_note = std::move(context); result.args = args_; result_handler_->ReportResult(std::move(result)); diff --git a/src/core/lib/surface/server.cc b/src/core/server/server.cc similarity index 80% rename from src/core/lib/surface/server.cc rename to src/core/server/server.cc index 5e974ec25a6..b891001f3d4 100644 --- a/src/core/lib/surface/server.cc +++ b/src/core/server/server.cc @@ -14,7 +14,7 @@ // limitations under the License. // -#include "src/core/lib/surface/server.h" +#include "src/core/server/server.h" #include #include @@ -32,6 +32,8 @@ #include "absl/cleanup/cleanup.h" #include "absl/container/flat_hash_map.h" +#include "absl/log/check.h" +#include "absl/log/log.h" #include "absl/status/status.h" #include "absl/types/optional.h" @@ -45,17 +47,17 @@ #include #include +#include "src/core/channelz/channel_trace.h" +#include "src/core/channelz/channelz.h" #include "src/core/lib/channel/channel_args.h" #include "src/core/lib/channel/channel_args_preconditioning.h" -#include "src/core/lib/channel/channel_trace.h" -#include "src/core/lib/channel/channelz.h" #include "src/core/lib/config/core_configuration.h" #include "src/core/lib/debug/stats.h" #include "src/core/lib/experiments/experiments.h" -#include "src/core/lib/gpr/useful.h" #include "src/core/lib/gprpp/crash.h" #include "src/core/lib/gprpp/debug_location.h" #include "src/core/lib/gprpp/mpscq.h" +#include "src/core/lib/gprpp/orphanable.h" #include "src/core/lib/gprpp/status_helper.h" #include "src/core/lib/iomgr/exec_ctx.h" #include "src/core/lib/iomgr/pollset_set.h" @@ -80,6 +82,8 @@ #include "src/core/lib/surface/wait_for_cq_end_op.h" #include "src/core/lib/transport/connectivity_state.h" #include "src/core/lib/transport/error_utils.h" +#include "src/core/lib/transport/interception_chain.h" +#include "src/core/util/useful.h" namespace grpc_core { @@ -234,10 +238,11 @@ struct Server::RequestedCall { template void Complete(OptionalPayload payload, ClientMetadata& md) { - Timestamp deadline = GetContext()->deadline(); + Timestamp deadline = + md.get(GrpcTimeoutMetadata()).value_or(Timestamp::InfFuture()); switch (type) { case RequestedCall::Type::BATCH_CALL: - GPR_ASSERT(!payload.has_value()); + CHECK(!payload.has_value()); data.batch.details->host = CSliceRef(md.get_pointer(HttpAuthorityMetadata())->c_slice()); data.batch.details->method = @@ -287,23 +292,29 @@ struct Server::RequestedCall { // application to explicitly request RPCs and then matching those to incoming // RPCs, along with a slow path by which incoming RPCs are put on a locked // pending list if they aren't able to be matched to an application request. -class Server::RealRequestMatcherFilterStack : public RequestMatcherInterface { +class Server::RealRequestMatcher : public RequestMatcherInterface { public: - explicit RealRequestMatcherFilterStack(Server* server) + explicit RealRequestMatcher(Server* server) : server_(server), requests_per_cq_(server->cqs_.size()) {} - ~RealRequestMatcherFilterStack() override { + ~RealRequestMatcher() override { for (LockedMultiProducerSingleConsumerQueue& queue : requests_per_cq_) { - GPR_ASSERT(queue.Pop() == nullptr); + CHECK_EQ(queue.Pop(), nullptr); } - GPR_ASSERT(pending_.empty()); + CHECK(pending_filter_stack_.empty()); + CHECK(pending_promises_.empty()); } void ZombifyPending() override { - while (!pending_.empty()) { - pending_.front().calld->SetState(CallData::CallState::ZOMBIED); - pending_.front().calld->KillZombie(); - pending_.pop(); + while (!pending_filter_stack_.empty()) { + pending_filter_stack_.front().calld->SetState( + CallData::CallState::ZOMBIED); + pending_filter_stack_.front().calld->KillZombie(); + pending_filter_stack_.pop(); + } + while (!pending_promises_.empty()) { + pending_promises_.front()->Finish(absl::InternalError("Server closed")); + pending_promises_.pop(); } } @@ -328,35 +339,56 @@ class Server::RealRequestMatcherFilterStack : public RequestMatcherInterface { // matching calls struct NextPendingCall { RequestedCall* rc = nullptr; - CallData* pending; + CallData* pending_filter_stack = nullptr; + PendingCallPromises pending_promise; }; while (true) { NextPendingCall pending_call; { MutexLock lock(&server_->mu_call_); - while (!pending_.empty() && - pending_.front().Age() > server_->max_time_in_pending_queue_) { - pending_.front().calld->SetState(CallData::CallState::ZOMBIED); - pending_.front().calld->KillZombie(); - pending_.pop(); + while (!pending_filter_stack_.empty() && + pending_filter_stack_.front().Age() > + server_->max_time_in_pending_queue_) { + pending_filter_stack_.front().calld->SetState( + CallData::CallState::ZOMBIED); + pending_filter_stack_.front().calld->KillZombie(); + pending_filter_stack_.pop(); } - if (!pending_.empty()) { + if (!pending_promises_.empty()) { pending_call.rc = reinterpret_cast( requests_per_cq_[request_queue_index].Pop()); if (pending_call.rc != nullptr) { - pending_call.pending = pending_.front().calld; - pending_.pop(); + pending_call.pending_promise = + std::move(pending_promises_.front()); + pending_promises_.pop(); + } + } else if (!pending_filter_stack_.empty()) { + pending_call.rc = reinterpret_cast( + requests_per_cq_[request_queue_index].Pop()); + if (pending_call.rc != nullptr) { + pending_call.pending_filter_stack = + pending_filter_stack_.front().calld; + pending_filter_stack_.pop(); } } } if (pending_call.rc == nullptr) break; - if (!pending_call.pending->MaybeActivate()) { - // Zombied Call - pending_call.pending->KillZombie(); - requests_per_cq_[request_queue_index].Push( - &pending_call.rc->mpscq_node); + if (pending_call.pending_filter_stack != nullptr) { + if (!pending_call.pending_filter_stack->MaybeActivate()) { + // Zombied Call + pending_call.pending_filter_stack->KillZombie(); + requests_per_cq_[request_queue_index].Push( + &pending_call.rc->mpscq_node); + } else { + pending_call.pending_filter_stack->Publish(request_queue_index, + pending_call.rc); + } } else { - pending_call.pending->Publish(request_queue_index, pending_call.rc); + if (!pending_call.pending_promise->Finish( + server(), request_queue_index, pending_call.rc)) { + requests_per_cq_[request_queue_index].Push( + &pending_call.rc->mpscq_node); + } } } } @@ -394,7 +426,7 @@ class Server::RealRequestMatcherFilterStack : public RequestMatcherInterface { } if (rc == nullptr) { calld->SetState(CallData::CallState::PENDING); - pending_.push(PendingCall{calld}); + pending_filter_stack_.push(PendingCallFilterStack{calld}); return; } } @@ -402,91 +434,6 @@ class Server::RealRequestMatcherFilterStack : public RequestMatcherInterface { calld->Publish(cq_idx, rc); } - ArenaPromise> MatchRequest(size_t) override { - Crash("not implemented for filter stack request matcher"); - } - - Server* server() const final { return server_; } - - private: - Server* const server_; - struct PendingCall { - CallData* calld; - Timestamp created = Timestamp::Now(); - Duration Age() { return Timestamp::Now() - created; } - }; - std::queue pending_; - std::vector requests_per_cq_; -}; - -class Server::RealRequestMatcherPromises : public RequestMatcherInterface { - public: - explicit RealRequestMatcherPromises(Server* server) - : server_(server), requests_per_cq_(server->cqs_.size()) {} - - ~RealRequestMatcherPromises() override { - for (LockedMultiProducerSingleConsumerQueue& queue : requests_per_cq_) { - GPR_ASSERT(queue.Pop() == nullptr); - } - } - - void ZombifyPending() override { - while (!pending_.empty()) { - pending_.front()->Finish(absl::InternalError("Server closed")); - pending_.pop(); - } - } - - void KillRequests(grpc_error_handle error) override { - for (size_t i = 0; i < requests_per_cq_.size(); i++) { - RequestedCall* rc; - while ((rc = reinterpret_cast( - requests_per_cq_[i].Pop())) != nullptr) { - server_->FailCall(i, rc, error); - } - } - } - - size_t request_queue_count() const override { - return requests_per_cq_.size(); - } - - void RequestCallWithPossiblePublish(size_t request_queue_index, - RequestedCall* call) override { - if (requests_per_cq_[request_queue_index].Push(&call->mpscq_node)) { - // this was the first queued request: we need to lock and start - // matching calls - struct NextPendingCall { - RequestedCall* rc = nullptr; - PendingCall pending; - }; - while (true) { - NextPendingCall pending_call; - { - MutexLock lock(&server_->mu_call_); - if (!pending_.empty()) { - pending_call.rc = reinterpret_cast( - requests_per_cq_[request_queue_index].Pop()); - if (pending_call.rc != nullptr) { - pending_call.pending = std::move(pending_.front()); - pending_.pop(); - } - } - } - if (pending_call.rc == nullptr) break; - if (!pending_call.pending->Finish(server(), request_queue_index, - pending_call.rc)) { - requests_per_cq_[request_queue_index].Push( - &pending_call.rc->mpscq_node); - } - } - } - } - - void MatchOrQueue(size_t, CallData*) override { - Crash("not implemented for promises"); - } - ArenaPromise> MatchRequest( size_t start_request_queue_index) override { for (size_t i = 0; i < requests_per_cq_.size(); i++) { @@ -508,10 +455,11 @@ class Server::RealRequestMatcherPromises : public RequestMatcherInterface { { std::vector> removed_pending; MutexLock lock(&server_->mu_call_); - while (!pending_.empty() && - pending_.front()->Age() > server_->max_time_in_pending_queue_) { - removed_pending.push_back(std::move(pending_.front())); - pending_.pop(); + while (!pending_promises_.empty() && + pending_promises_.front()->Age() > + server_->max_time_in_pending_queue_) { + removed_pending.push_back(std::move(pending_promises_.front())); + pending_promises_.pop(); } for (loop_count = 0; loop_count < requests_per_cq_.size(); loop_count++) { cq_idx = @@ -520,14 +468,14 @@ class Server::RealRequestMatcherPromises : public RequestMatcherInterface { if (rc != nullptr) break; } if (rc == nullptr) { - if (server_->pending_backlog_protector_.Reject(pending_.size(), + if (server_->pending_backlog_protector_.Reject(pending_promises_.size(), server_->bitgen_)) { return Immediate(absl::ResourceExhaustedError( "Too many pending requests for this server")); } auto w = std::make_shared( GetContext()->MakeOwningWaker()); - pending_.push(w); + pending_promises_.push(w); return OnCancel( [w]() -> Poll> { std::unique_ptr> r( @@ -545,6 +493,11 @@ class Server::RealRequestMatcherPromises : public RequestMatcherInterface { private: Server* const server_; + struct PendingCallFilterStack { + CallData* calld; + Timestamp created = Timestamp::Now(); + Duration Age() { return Timestamp::Now() - created; } + }; struct ActivityWaiter { using ResultType = absl::StatusOr; explicit ActivityWaiter(Waker waker) : waker(std::move(waker)) {} @@ -563,7 +516,7 @@ class Server::RealRequestMatcherPromises : public RequestMatcherInterface { if (!result.compare_exchange_strong(expected, new_value, std::memory_order_acq_rel, std::memory_order_acquire)) { - GPR_ASSERT(new_value->value().TakeCall() == requested_call); + CHECK(new_value->value().TakeCall() == requested_call); delete new_value; return false; } @@ -579,8 +532,9 @@ class Server::RealRequestMatcherPromises : public RequestMatcherInterface { std::atomic result{nullptr}; const Timestamp created = Timestamp::Now(); }; - using PendingCall = std::shared_ptr; - std::queue pending_; + using PendingCallPromises = std::shared_ptr; + std::queue pending_filter_stack_; + std::queue pending_promises_; std::vector requests_per_cq_; }; @@ -600,7 +554,7 @@ class Server::AllocatingRequestMatcherBase : public RequestMatcherInterface { break; } } - GPR_ASSERT(idx < server->cqs_.size()); + CHECK(idx < server->cqs_.size()); cq_idx_ = idx; } @@ -646,9 +600,9 @@ class Server::AllocatingRequestMatcherBatch absl::MakeCleanup([this] { server()->ShutdownUnrefOnRequest(); }); if (still_running) { BatchCallAllocation call_info = allocator_(); - GPR_ASSERT(server()->ValidateServerRequest( - cq(), static_cast(call_info.tag), nullptr, - nullptr) == GRPC_CALL_OK); + CHECK(server()->ValidateServerRequest(cq(), + static_cast(call_info.tag), + nullptr, nullptr) == GRPC_CALL_OK); RequestedCall* rc = new RequestedCall( static_cast(call_info.tag), call_info.cq, call_info.call, call_info.initial_metadata, call_info.details); @@ -662,9 +616,9 @@ class Server::AllocatingRequestMatcherBatch ArenaPromise> MatchRequest( size_t /*start_request_queue_index*/) override { BatchCallAllocation call_info = allocator_(); - GPR_ASSERT(server()->ValidateServerRequest( - cq(), static_cast(call_info.tag), nullptr, nullptr) == - GRPC_CALL_OK); + CHECK(server()->ValidateServerRequest(cq(), + static_cast(call_info.tag), + nullptr, nullptr) == GRPC_CALL_OK); RequestedCall* rc = new RequestedCall( static_cast(call_info.tag), call_info.cq, call_info.call, call_info.initial_metadata, call_info.details); @@ -692,9 +646,9 @@ class Server::AllocatingRequestMatcherRegistered absl::MakeCleanup([this] { server()->ShutdownUnrefOnRequest(); }); if (server()->ShutdownRefOnRequest()) { RegisteredCallAllocation call_info = allocator_(); - GPR_ASSERT(server()->ValidateServerRequest( - cq(), call_info.tag, call_info.optional_payload, - registered_method_) == GRPC_CALL_OK); + CHECK(server()->ValidateServerRequest( + cq(), call_info.tag, call_info.optional_payload, + registered_method_) == GRPC_CALL_OK); RequestedCall* rc = new RequestedCall(call_info.tag, call_info.cq, call_info.call, call_info.initial_metadata, registered_method_, @@ -709,9 +663,9 @@ class Server::AllocatingRequestMatcherRegistered ArenaPromise> MatchRequest( size_t /*start_request_queue_index*/) override { RegisteredCallAllocation call_info = allocator_(); - GPR_ASSERT(server()->ValidateServerRequest( - cq(), call_info.tag, call_info.optional_payload, - registered_method_) == GRPC_CALL_OK); + CHECK(server()->ValidateServerRequest(cq(), call_info.tag, + call_info.optional_payload, + registered_method_) == GRPC_CALL_OK); RequestedCall* rc = new RequestedCall( call_info.tag, call_info.cq, call_info.call, call_info.initial_metadata, registered_method_, call_info.deadline, call_info.optional_payload); @@ -736,7 +690,7 @@ class ChannelBroadcaster { // Copies over the channels from the locked server. void FillChannelsLocked(std::vector> channels) { - GPR_DEBUG_ASSERT(channels_.empty()); + DCHECK(channels_.empty()); channels_ = std::move(channels); } @@ -783,13 +737,40 @@ class ChannelBroadcaster { } // namespace +// +// Server::TransportConnectivityWatcher +// + +class Server::TransportConnectivityWatcher + : public AsyncConnectivityStateWatcherInterface { + public: + TransportConnectivityWatcher(RefCountedPtr transport, + RefCountedPtr server) + : transport_(std::move(transport)), server_(std::move(server)) {} + + private: + void OnConnectivityStateChange(grpc_connectivity_state new_state, + const absl::Status& /*status*/) override { + // Don't do anything until we are being shut down. + if (new_state != GRPC_CHANNEL_SHUTDOWN) return; + // Shut down channel. + MutexLock lock(&server_->mu_global_); + server_->connections_.erase(transport_.get()); + --server_->connections_open_; + server_->MaybeFinishShutdown(); + } + + RefCountedPtr transport_; + RefCountedPtr server_; +}; + // // Server // const grpc_channel_filter Server::kServerTopFilter = { Server::CallData::StartTransportStreamOpBatch, - Server::ChannelData::MakeCallPromise, + nullptr, [](grpc_channel_element*, CallSpineInterface*) { // TODO(ctiller): remove the server filter when call-v3 is finalized }, @@ -825,12 +806,91 @@ RefCountedPtr CreateChannelzNode( return channelz_node; } +absl::StatusOr CheckClientMetadata( + ValueOrFailure md) { + if (!md.ok()) { + return absl::InternalError("Missing metadata"); + } + if (!md.value()->get_pointer(HttpPathMetadata())) { + return absl::InternalError("Missing :path header"); + } + if (!md.value()->get_pointer(HttpAuthorityMetadata())) { + return absl::InternalError("Missing :authority header"); + } + return std::move(*md); +} } // namespace +auto Server::MatchAndPublishCall(CallHandler call_handler) { + call_handler.SpawnGuarded("request_matcher", [this, call_handler]() mutable { + return TrySeq( + // Wait for initial metadata to pass through all filters + Map(call_handler.PullClientInitialMetadata(), CheckClientMetadata), + // Match request with requested call + [this, call_handler](ClientMetadataHandle md) mutable { + auto* registered_method = static_cast( + md->get(GrpcRegisteredMethod()).value_or(nullptr)); + RequestMatcherInterface* rm; + grpc_server_register_method_payload_handling payload_handling = + GRPC_SRM_PAYLOAD_NONE; + if (registered_method == nullptr) { + rm = unregistered_request_matcher_.get(); + } else { + payload_handling = registered_method->payload_handling; + rm = registered_method->matcher.get(); + } + auto maybe_read_first_message = If( + payload_handling == GRPC_SRM_PAYLOAD_READ_INITIAL_BYTE_BUFFER, + [call_handler]() mutable { return call_handler.PullMessage(); }, + []() -> ValueOrFailure> { + return ValueOrFailure>( + absl::nullopt); + }); + return TryJoin( + std::move(maybe_read_first_message), rm->MatchRequest(0), + [md = std::move(md)]() mutable { + return ValueOrFailure(std::move(md)); + }); + }, + // Publish call to cq + [call_handler, this](std::tuple, + RequestMatcherInterface::MatchResult, + ClientMetadataHandle> + r) { + RequestMatcherInterface::MatchResult& mr = std::get<1>(r); + auto md = std::move(std::get<2>(r)); + auto* rc = mr.TakeCall(); + rc->Complete(std::move(std::get<0>(r)), *md); + grpc_call* call = + MakeServerCall(call_handler, std::move(md), this, + rc->cq_bound_to_call, rc->initial_metadata); + *rc->call = call; + return Map(WaitForCqEndOp(false, rc->tag, absl::OkStatus(), mr.cq()), + [rc = std::unique_ptr(rc)](Empty) { + return absl::OkStatus(); + }); + }); + }); +} + +absl::StatusOr> +Server::MakeCallDestination(const ChannelArgs& args) { + InterceptionChainBuilder builder(args); + builder.AddOnClientInitialMetadata( + [this](ClientMetadata& md) { SetRegisteredMethodOnMetadata(md); }); + CoreConfiguration::Get().channel_init().AddToInterceptionChainBuilder( + GRPC_SERVER_CHANNEL, builder); + return builder.Build( + MakeCallDestinationFromHandlerFunction([this](CallHandler handler) { + return MatchAndPublishCall(std::move(handler)); + })); +} + Server::Server(const ChannelArgs& args) : channel_args_(args), channelz_node_(CreateChannelzNode(args)), server_call_tracer_factory_(ServerCallTracerFactory::Get(args)), + compression_options_(CompressionOptionsFromChannelArgs(args)), max_time_in_pending_queue_(Duration::Seconds( channel_args_ .GetInt(GRPC_ARG_SERVER_MAX_UNREQUESTED_TIME_IN_SERVER_SECONDS) @@ -861,15 +921,6 @@ void Server::AddListener(OrphanablePtr listener) { } void Server::Start() { - auto make_real_request_matcher = - [this]() -> std::unique_ptr { - if (IsPromiseBasedServerCallEnabled()) { - return std::make_unique(this); - } else { - return std::make_unique(this); - } - }; - started_ = true; for (grpc_completion_queue* cq : cqs_) { if (grpc_cq_can_listen(cq)) { @@ -877,11 +928,11 @@ void Server::Start() { } } if (unregistered_request_matcher_ == nullptr) { - unregistered_request_matcher_ = make_real_request_matcher(); + unregistered_request_matcher_ = std::make_unique(this); } for (auto& rm : registered_methods_) { if (rm.second->matcher == nullptr) { - rm.second->matcher = make_real_request_matcher(); + rm.second->matcher = std::make_unique(this); } } { @@ -912,37 +963,61 @@ grpc_error_handle Server::SetupTransport( const RefCountedPtr& socket_node) { // Create channel. global_stats().IncrementServerChannelsCreated(); - absl::StatusOr> channel = - LegacyChannel::Create("", args.SetObject(transport), GRPC_SERVER_CHANNEL); - if (!channel.ok()) { - return absl_status_to_grpc_error(channel.status()); - } - ChannelData* chand = static_cast( - grpc_channel_stack_element((*channel)->channel_stack(), 0)->channel_data); - // Set up CQs. - size_t cq_idx; - for (cq_idx = 0; cq_idx < cqs_.size(); cq_idx++) { - if (grpc_cq_pollset(cqs_[cq_idx]) == accepting_pollset) break; - } - if (cq_idx == cqs_.size()) { - // Completion queue not found. Pick a random one to publish new calls to. - cq_idx = static_cast(rand()) % std::max(1, cqs_.size()); - } // Set up channelz node. - intptr_t channelz_socket_uuid = 0; - if (socket_node != nullptr) { - channelz_socket_uuid = socket_node->uuid(); - channelz_node_->AddChildSocket(socket_node); - } - // Initialize chand. - chand->InitTransport(Ref(), std::move(*channel), cq_idx, transport, - channelz_socket_uuid); + if (transport->server_transport() != nullptr) { + // Take ownership + // TODO(ctiller): post-v3-transition make this method take an + // OrphanablePtr directly. + OrphanablePtr t(transport->server_transport()); + auto destination = MakeCallDestination(args.SetObject(transport)); + if (!destination.ok()) { + return absl_status_to_grpc_error(destination.status()); + } + // TODO(ctiller): add channelz node + t->SetCallDestination(std::move(*destination)); + MutexLock lock(&mu_global_); + if (ShutdownCalled()) { + t->DisconnectWithError(GRPC_ERROR_CREATE("Server shutdown")); + } + t->StartConnectivityWatch(MakeOrphanable( + t->RefAsSubclass(), Ref())); + LOG(INFO) << "Adding connection"; + connections_.emplace(std::move(t)); + ++connections_open_; + } else { + CHECK(transport->filter_stack_transport() != nullptr); + absl::StatusOr> channel = LegacyChannel::Create( + "", args.SetObject(transport), GRPC_SERVER_CHANNEL); + if (!channel.ok()) { + return absl_status_to_grpc_error(channel.status()); + } + ChannelData* chand = static_cast( + grpc_channel_stack_element((*channel)->channel_stack(), 0) + ->channel_data); + // Set up CQs. + size_t cq_idx; + for (cq_idx = 0; cq_idx < cqs_.size(); cq_idx++) { + if (grpc_cq_pollset(cqs_[cq_idx]) == accepting_pollset) break; + } + if (cq_idx == cqs_.size()) { + // Completion queue not found. Pick a random one to publish new calls to. + cq_idx = static_cast(rand()) % std::max(1, cqs_.size()); + } + intptr_t channelz_socket_uuid = 0; + if (socket_node != nullptr) { + channelz_socket_uuid = socket_node->uuid(); + channelz_node_->AddChildSocket(socket_node); + } + // Initialize chand. + chand->InitTransport(Ref(), std::move(*channel), cq_idx, transport, + channelz_socket_uuid); + } return absl::OkStatus(); } bool Server::HasOpenConnections() { MutexLock lock(&mu_global_); - return !channels_.empty(); + return !channels_.empty() || !connections_.empty(); } void Server::SetRegisteredMethodAllocator( @@ -955,7 +1030,7 @@ void Server::SetRegisteredMethodAllocator( void Server::SetBatchMethodAllocator( grpc_completion_queue* cq, std::function allocator) { - GPR_DEBUG_ASSERT(unregistered_request_matcher_ == nullptr); + DCHECK(unregistered_request_matcher_ == nullptr); unregistered_request_matcher_ = std::make_unique(this, cq, std::move(allocator)); @@ -1007,7 +1082,7 @@ void Server::FailCall(size_t cq_idx, RequestedCall* rc, grpc_error_handle error) { *rc->call = nullptr; rc->initial_metadata->count = 0; - GPR_ASSERT(!error.ok()); + CHECK(!error.ok()); grpc_cq_end_op(cqs_[cq_idx], rc->tag, error, DoneRequestEvent, rc, &rc->completion); } @@ -1022,16 +1097,18 @@ void Server::MaybeFinishShutdown() { MutexLock lock(&mu_call_); KillPendingWorkLocked(GRPC_ERROR_CREATE("Server Shutdown")); } - if (!channels_.empty() || listeners_destroyed_ < listeners_.size()) { + if (!channels_.empty() || connections_open_ > 0 || + listeners_destroyed_ < listeners_.size()) { if (gpr_time_cmp(gpr_time_sub(gpr_now(GPR_CLOCK_REALTIME), last_shutdown_message_time_), gpr_time_from_seconds(1, GPR_TIMESPAN)) >= 0) { last_shutdown_message_time_ = gpr_now(GPR_CLOCK_REALTIME); gpr_log(GPR_DEBUG, - "Waiting for %" PRIuPTR " channels and %" PRIuPTR "/%" PRIuPTR + "Waiting for %" PRIuPTR " channels %" PRIuPTR + " connections and %" PRIuPTR "/%" PRIuPTR " listeners to be destroyed before shutting down server", - channels_.size(), listeners_.size() - listeners_destroyed_, - listeners_.size()); + channels_.size(), connections_open_, + listeners_.size() - listeners_destroyed_, listeners_.size()); } return; } @@ -1094,6 +1171,7 @@ void DonePublishedShutdown(void* /*done_arg*/, grpc_cq_completion* storage) { // -- Once there are no more calls in progress, the channel is closed. void Server::ShutdownAndNotify(grpc_completion_queue* cq, void* tag) { ChannelBroadcaster broadcaster; + absl::flat_hash_set> removing_connections; { // Wait for startup to be finished. Locks mu_global. MutexLock lock(&mu_global_); @@ -1101,7 +1179,7 @@ void Server::ShutdownAndNotify(grpc_completion_queue* cq, void* tag) { starting_cv_.Wait(&mu_global_); } // Stay locked, and gather up some stuff to do. - GPR_ASSERT(grpc_cq_begin_op(cq, tag)); + CHECK(grpc_cq_begin_op(cq, tag)); if (shutdown_published_) { grpc_cq_end_op(cq, tag, absl::OkStatus(), DonePublishedShutdown, nullptr, new grpc_cq_completion); @@ -1113,6 +1191,7 @@ void Server::ShutdownAndNotify(grpc_completion_queue* cq, void* tag) { } last_shutdown_message_time_ = gpr_now(GPR_CLOCK_REALTIME); broadcaster.FillChannelsLocked(GetChannelsLocked()); + removing_connections.swap(connections_); // Collect all unregistered then registered calls. { MutexLock lock(&mu_call_); @@ -1162,8 +1241,8 @@ void Server::SendGoaways() { void Server::Orphan() { { MutexLock lock(&mu_global_); - GPR_ASSERT(ShutdownCalled() || listeners_.empty()); - GPR_ASSERT(listeners_destroyed_ == listeners_.size()); + CHECK(ShutdownCalled() || listeners_.empty()); + CHECK(listeners_destroyed_ == listeners_.size()); } Unref(); } @@ -1299,17 +1378,6 @@ Server::ChannelData::~ChannelData() { } } -Arena* Server::ChannelData::CreateArena() { return channel_->CreateArena(); } - -absl::StatusOr Server::ChannelData::CreateCall( - ClientMetadataHandle client_initial_metadata, Arena* arena) { - SetRegisteredMethodOnMetadata(*client_initial_metadata); - auto call = MakeServerCall(std::move(client_initial_metadata), server_.get(), - channel_.get(), arena); - InitCall(call); - return CallInitiator(std::move(call)); -} - void Server::ChannelData::InitTransport(RefCountedPtr server, OrphanablePtr channel, size_t cq_idx, Transport* transport, @@ -1326,22 +1394,15 @@ void Server::ChannelData::InitTransport(RefCountedPtr server, } // Start accept_stream transport op. grpc_transport_op* op = grpc_make_transport_op(nullptr); - int accept_stream_types = 0; - if (transport->filter_stack_transport() != nullptr) { - ++accept_stream_types; - op->set_accept_stream = true; - op->set_accept_stream_fn = AcceptStream; - op->set_registered_method_matcher_fn = [](void* arg, - ClientMetadata* metadata) { - static_cast(arg)->SetRegisteredMethodOnMetadata(*metadata); - }; - op->set_accept_stream_user_data = this; - } - if (transport->server_transport() != nullptr) { - ++accept_stream_types; - transport->server_transport()->SetAcceptor(this); - } - GPR_ASSERT(accept_stream_types == 1); + CHECK(transport->filter_stack_transport() != nullptr); + op->set_accept_stream = true; + op->set_accept_stream_fn = AcceptStream; + op->set_registered_method_matcher_fn = [](void* arg, + ClientMetadata* metadata) { + static_cast(arg)->server_->SetRegisteredMethodOnMetadata( + *metadata); + }; + op->set_accept_stream_user_data = this; op->start_connectivity_watch = MakeOrphanable(this); if (server_->ShutdownCalled()) { op->disconnect_with_error = GRPC_ERROR_CREATE("Server shutdown"); @@ -1349,24 +1410,23 @@ void Server::ChannelData::InitTransport(RefCountedPtr server, transport->PerformOp(op); } -Server::RegisteredMethod* Server::ChannelData::GetRegisteredMethod( +Server::RegisteredMethod* Server::GetRegisteredMethod( const absl::string_view& host, const absl::string_view& path) { - if (server_->registered_methods_.empty()) return nullptr; + if (registered_methods_.empty()) return nullptr; // check for an exact match with host - auto it = server_->registered_methods_.find(std::make_pair(host, path)); - if (it != server_->registered_methods_.end()) { + auto it = registered_methods_.find(std::make_pair(host, path)); + if (it != registered_methods_.end()) { return it->second.get(); } // check for wildcard method definition (no host set) - it = server_->registered_methods_.find(std::make_pair("", path)); - if (it != server_->registered_methods_.end()) { + it = registered_methods_.find(std::make_pair("", path)); + if (it != registered_methods_.end()) { return it->second.get(); } return nullptr; } -void Server::ChannelData::SetRegisteredMethodOnMetadata( - ClientMetadata& metadata) { +void Server::SetRegisteredMethodOnMetadata(ClientMetadata& metadata) { auto* authority = metadata.get_pointer(HttpAuthorityMetadata()); if (authority == nullptr) { authority = metadata.get_pointer(HostMetadata()); @@ -1402,184 +1462,14 @@ void Server::ChannelData::AcceptStream(void* arg, Transport* /*transport*/, grpc_call* call; grpc_error_handle error = grpc_call_create(&args, &call); grpc_call_stack* call_stack = grpc_call_get_call_stack(call); - if (call_stack == nullptr) { // Promise based calls do not have a call stack - GPR_ASSERT(error.ok()); - GPR_ASSERT(IsPromiseBasedServerCallEnabled()); + CHECK_NE(call_stack, nullptr); + grpc_call_element* elem = grpc_call_stack_element(call_stack, 0); + auto* calld = static_cast(elem->call_data); + if (!error.ok()) { + calld->FailCallCreation(); return; - } else { - grpc_call_element* elem = grpc_call_stack_element(call_stack, 0); - auto* calld = static_cast(elem->call_data); - if (!error.ok()) { - calld->FailCallCreation(); - return; - } - calld->Start(elem); - } -} - -namespace { -auto CancelledDueToServerShutdown() { - return [] { - return ServerMetadataFromStatus(absl::CancelledError("Server shutdown")); - }; -} -} // namespace - -void Server::ChannelData::InitCall(RefCountedPtr call) { - call->SpawnGuarded("request_matcher", [this, call]() { - return TrySeq( - // Wait for initial metadata to pass through all filters - Map(call->PullClientInitialMetadata(), - [](ValueOrFailure md) - -> absl::StatusOr { - if (!md.ok()) { - return absl::InternalError("Missing metadata"); - } - if (!md.value()->get_pointer(HttpPathMetadata())) { - return absl::InternalError("Missing :path header"); - } - if (!md.value()->get_pointer(HttpAuthorityMetadata())) { - return absl::InternalError("Missing :authority header"); - } - return std::move(*md); - }), - // Match request with requested call - [this, call](ClientMetadataHandle md) { - auto* registered_method = static_cast( - md->get(GrpcRegisteredMethod()).value_or(nullptr)); - RequestMatcherInterface* rm; - grpc_server_register_method_payload_handling payload_handling = - GRPC_SRM_PAYLOAD_NONE; - if (registered_method == nullptr) { - rm = server_->unregistered_request_matcher_.get(); - } else { - payload_handling = registered_method->payload_handling; - rm = registered_method->matcher.get(); - } - auto maybe_read_first_message = If( - payload_handling == GRPC_SRM_PAYLOAD_READ_INITIAL_BYTE_BUFFER, - [call]() { return call->PullClientToServerMessage(); }, - []() -> ValueOrFailure> { - return ValueOrFailure>( - absl::nullopt); - }); - return TryJoin( - std::move(maybe_read_first_message), rm->MatchRequest(cq_idx()), - [md = std::move(md)]() mutable { - return ValueOrFailure(std::move(md)); - }); - }, - // Publish call to cq - [](std::tuple, - RequestMatcherInterface::MatchResult, - ClientMetadataHandle> - r) { - RequestMatcherInterface::MatchResult& mr = std::get<1>(r); - auto md = std::move(std::get<2>(r)); - auto* rc = mr.TakeCall(); - rc->Complete(std::move(std::get<0>(r)), *md); - auto* call_context = GetContext(); - *rc->call = call_context->c_call(); - grpc_call_ref(*rc->call); - grpc_call_set_completion_queue(call_context->c_call(), - rc->cq_bound_to_call); - call_context->server_call_context()->PublishInitialMetadata( - std::move(md), rc->initial_metadata); - // TODO(ctiller): publish metadata - return Map(WaitForCqEndOp(false, rc->tag, absl::OkStatus(), mr.cq()), - [rc = std::unique_ptr(rc)](Empty) { - return absl::OkStatus(); - }); - }); - }); -} - -ArenaPromise Server::ChannelData::MakeCallPromise( - grpc_channel_element* elem, CallArgs call_args, NextPromiseFactory) { - auto* chand = static_cast(elem->channel_data); - auto* server = chand->server_.get(); - if (server->ShutdownCalled()) return CancelledDueToServerShutdown(); - auto cleanup_ref = - absl::MakeCleanup([server] { server->ShutdownUnrefOnRequest(); }); - if (!server->ShutdownRefOnRequest()) return CancelledDueToServerShutdown(); - auto path_ptr = - call_args.client_initial_metadata->get_pointer(HttpPathMetadata()); - if (path_ptr == nullptr) { - return [] { - return ServerMetadataFromStatus( - absl::InternalError("Missing :path header")); - }; - } - auto host_ptr = - call_args.client_initial_metadata->get_pointer(HttpAuthorityMetadata()); - if (host_ptr == nullptr) { - return [] { - return ServerMetadataFromStatus( - absl::InternalError("Missing :authority header")); - }; } - // Find request matcher. - RequestMatcherInterface* matcher; - RegisteredMethod* rm = static_cast( - call_args.client_initial_metadata->get(GrpcRegisteredMethod()) - .value_or(nullptr)); - ArenaPromise>> - maybe_read_first_message([] { return NextResult(); }); - if (rm != nullptr) { - matcher = rm->matcher.get(); - switch (rm->payload_handling) { - case GRPC_SRM_PAYLOAD_NONE: - break; - case GRPC_SRM_PAYLOAD_READ_INITIAL_BYTE_BUFFER: - maybe_read_first_message = - Map(call_args.client_to_server_messages->Next(), - [](NextResult msg) - -> absl::StatusOr> { - return std::move(msg); - }); - } - } else { - matcher = server->unregistered_request_matcher_.get(); - } - return TrySeq( - std::move(maybe_read_first_message), - [cleanup_ref = std::move(cleanup_ref), matcher, - chand](NextResult payload) mutable { - return Map( - [cleanup_ref = std::move(cleanup_ref), - mr = matcher->MatchRequest(chand->cq_idx())]() mutable { - return mr(); - }, - [payload = std::move(payload)]( - absl::StatusOr mr) mutable - -> absl::StatusOr>> { - if (!mr.ok()) return mr.status(); - return std::make_pair(std::move(*mr), std::move(payload)); - }); - }, - [call_args = - std::move(call_args)](std::pair> - r) mutable { - auto& mr = r.first; - auto& payload = r.second; - auto* rc = mr.TakeCall(); - auto* cq_for_new_request = mr.cq(); - auto* server_call_context = - GetContext()->server_call_context(); - rc->Complete(std::move(payload), *call_args.client_initial_metadata); - server_call_context->PublishInitialMetadata( - std::move(call_args.client_initial_metadata), rc->initial_metadata); - return server_call_context->MakeTopOfServerCallPromise( - std::move(call_args), rc->cq_bound_to_call, - [rc, cq_for_new_request](grpc_call* call) { - *rc->call = call; - grpc_cq_end_op(cq_for_new_request, rc->tag, absl::OkStatus(), - Server::DoneRequestEvent, rc, &rc->completion, - true); - }); - }); + calld->Start(elem); } void Server::ChannelData::FinishDestroy(void* arg, @@ -1594,7 +1484,7 @@ void Server::ChannelData::FinishDestroy(void* arg, void Server::ChannelData::Destroy() { if (!list_position_.has_value()) return; - GPR_ASSERT(server_ != nullptr); + CHECK(server_ != nullptr); server_->channels_.erase(*list_position_); list_position_.reset(); server_->Ref().release(); @@ -1605,7 +1495,7 @@ void Server::ChannelData::Destroy() { GRPC_CLOSURE_INIT(&finish_destroy_channel_closure_, FinishDestroy, this, grpc_schedule_on_exec_ctx); if (GRPC_TRACE_FLAG_ENABLED(grpc_server_channel_trace)) { - gpr_log(GPR_INFO, "Disconnected client"); + LOG(INFO) << "Disconnected client"; } grpc_transport_op* op = grpc_make_transport_op(&finish_destroy_channel_closure_); @@ -1616,8 +1506,8 @@ void Server::ChannelData::Destroy() { grpc_error_handle Server::ChannelData::InitChannelElement( grpc_channel_element* elem, grpc_channel_element_args* args) { - GPR_ASSERT(args->is_first); - GPR_ASSERT(!args->is_last); + CHECK(args->is_first); + CHECK(!args->is_last); new (elem->channel_data) ChannelData(); return absl::OkStatus(); } @@ -1644,7 +1534,7 @@ Server::CallData::CallData(grpc_call_element* elem, } Server::CallData::~CallData() { - GPR_ASSERT(state_.load(std::memory_order_relaxed) != CallState::PENDING); + CHECK(state_.load(std::memory_order_relaxed) != CallState::PENDING); grpc_metadata_array_destroy(&initial_metadata_); grpc_byte_buffer_destroy(payload_); } @@ -1695,8 +1585,8 @@ void Server::CallData::Publish(size_t cq_idx, RequestedCall* rc) { std::swap(*rc->initial_metadata, initial_metadata_); switch (rc->type) { case RequestedCall::Type::BATCH_CALL: - GPR_ASSERT(host_.has_value()); - GPR_ASSERT(path_.has_value()); + CHECK(host_.has_value()); + CHECK(path_.has_value()); rc->data.batch.details->host = CSliceRef(host_->c_slice()); rc->data.batch.details->method = CSliceRef(path_->c_slice()); rc->data.batch.details->deadline = @@ -1828,6 +1718,7 @@ void Server::CallData::RecvInitialMetadataReady(void* arg, auto op_deadline = calld->recv_initial_metadata_->get(GrpcTimeoutMetadata()); if (op_deadline.has_value()) { calld->deadline_ = *op_deadline; + Call::FromC(calld->call_)->UpdateDeadline(*op_deadline); } if (calld->host_.has_value() && calld->path_.has_value()) { // do nothing @@ -1909,7 +1800,7 @@ void grpc_server_register_completion_queue(grpc_server* server, GRPC_API_TRACE( "grpc_server_register_completion_queue(server=%p, cq=%p, reserved=%p)", 3, (server, cq, reserved)); - GPR_ASSERT(!reserved); + CHECK(!reserved); auto cq_type = grpc_get_cq_completion_type(cq); if (cq_type != GRPC_CQ_NEXT && cq_type != GRPC_CQ_CALLBACK) { gpr_log(GPR_INFO, diff --git a/src/core/lib/surface/server.h b/src/core/server/server.h similarity index 92% rename from src/core/lib/surface/server.h rename to src/core/server/server.h index 356bcc40269..01b541c233e 100644 --- a/src/core/lib/surface/server.h +++ b/src/core/server/server.h @@ -14,8 +14,8 @@ // limitations under the License. // -#ifndef GRPC_SRC_CORE_LIB_SURFACE_SERVER_H -#define GRPC_SRC_CORE_LIB_SURFACE_SERVER_H +#ifndef GRPC_SRC_CORE_SERVER_SERVER_H +#define GRPC_SRC_CORE_SERVER_SERVER_H #include #include @@ -38,17 +38,19 @@ #include "absl/strings/string_view.h" #include "absl/types/optional.h" +#include #include +#include #include #include #include +#include "src/core/channelz/channelz.h" #include "src/core/lib/backoff/random_early_detection.h" #include "src/core/lib/channel/call_tracer.h" #include "src/core/lib/channel/channel_args.h" #include "src/core/lib/channel/channel_fwd.h" #include "src/core/lib/channel/channel_stack.h" -#include "src/core/lib/channel/channelz.h" #include "src/core/lib/debug/trace.h" #include "src/core/lib/gprpp/cpp_impl_of.h" #include "src/core/lib/gprpp/dual_ref_counted.h" @@ -65,15 +67,18 @@ #include "src/core/lib/slice/slice.h" #include "src/core/lib/surface/channel.h" #include "src/core/lib/surface/completion_queue.h" -#include "src/core/lib/surface/server_interface.h" #include "src/core/lib/transport/metadata_batch.h" #include "src/core/lib/transport/transport.h" +#include "src/core/server/server_interface.h" #define GRPC_ARG_SERVER_MAX_PENDING_REQUESTS "grpc.server.max_pending_requests" #define GRPC_ARG_SERVER_MAX_PENDING_REQUESTS_HARD_LIMIT \ "grpc.server.max_pending_requests_hard_limit" namespace grpc_core { +namespace experimental { +class PassiveListenerImpl; +} // namespace experimental extern TraceFlag grpc_server_channel_trace; @@ -112,7 +117,7 @@ class Server : public ServerInterface, /// Interface for listeners. /// Implementations must override the Orphan() method, which should stop /// listening and initiate destruction of the listener. - class ListenerInterface : public Orphanable { + class ListenerInterface : public InternallyRefCounted { public: ~ListenerInterface() override = default; @@ -211,17 +216,28 @@ class Server : public ServerInterface, void SendGoaways() ABSL_LOCKS_EXCLUDED(mu_global_, mu_call_); + grpc_compression_options compression_options() const override { + return compression_options_; + } + private: + // note: the grpc_core::Server redundant namespace qualification is + // required for older gcc versions. + // TODO(yashykt): eliminate this friend statement as part of your upcoming + // server listener refactoring. + friend absl::Status(::grpc_server_add_passive_listener)( + grpc_core::Server* server, grpc_server_credentials* credentials, + std::shared_ptr + passive_listener); struct RequestedCall; class RequestMatcherInterface; - class RealRequestMatcherFilterStack; - class RealRequestMatcherPromises; + class RealRequestMatcher; class AllocatingRequestMatcherBase; class AllocatingRequestMatcherBatch; class AllocatingRequestMatcherRegistered; - class ChannelData final : public ServerTransport::Acceptor { + class ChannelData final { public: ChannelData() = default; ~ChannelData(); @@ -234,26 +250,17 @@ class Server : public ServerInterface, Channel* channel() const { return channel_.get(); } size_t cq_idx() const { return cq_idx_; } - RegisteredMethod* GetRegisteredMethod(const absl::string_view& host, - const absl::string_view& path); // Filter vtable functions. static grpc_error_handle InitChannelElement( grpc_channel_element* elem, grpc_channel_element_args* args); static void DestroyChannelElement(grpc_channel_element* elem); - static ArenaPromise MakeCallPromise( - grpc_channel_element* elem, CallArgs call_args, NextPromiseFactory); void InitCall(RefCountedPtr call); - Arena* CreateArena() override; - absl::StatusOr CreateCall( - ClientMetadataHandle client_initial_metadata, Arena* arena) override; - private: class ConnectivityWatcher; static void AcceptStream(void* arg, Transport* /*transport*/, const void* transport_server_data); - void SetRegisteredMethodOnMetadata(ClientMetadata& metadata); void Destroy() ABSL_EXCLUSIVE_LOCKS_REQUIRED(server_->mu_global_); @@ -384,6 +391,12 @@ class Server : public ServerInterface, using is_transparent = void; }; + class TransportConnectivityWatcher; + + RegisteredMethod* GetRegisteredMethod(const absl::string_view& host, + const absl::string_view& path); + void SetRegisteredMethodOnMetadata(ClientMetadata& metadata); + static void ListenerDestroyDone(void* arg, grpc_error_handle error); static void DoneShutdownEvent(void* server, @@ -445,6 +458,10 @@ class Server : public ServerInterface, return shutdown_refs_.load(std::memory_order_acquire) == 0; } + auto MatchAndPublishCall(CallHandler call_handler); + absl::StatusOr> MakeCallDestination( + const ChannelArgs& args); + ChannelArgs const channel_args_; RefCountedPtr channelz_node_; std::unique_ptr config_fetcher_; @@ -453,6 +470,7 @@ class Server : public ServerInterface, std::vector cqs_; std::vector pollsets_; bool started_ = false; + const grpc_compression_options compression_options_; // The two following mutexes control access to server-state. // mu_global_ controls access to non-call-related state (e.g., channel state). @@ -500,6 +518,9 @@ class Server : public ServerInterface, absl::BitGen bitgen_ ABSL_GUARDED_BY(mu_call_); std::list channels_; + absl::flat_hash_set> connections_ + ABSL_GUARDED_BY(mu_global_); + size_t connections_open_ ABSL_GUARDED_BY(mu_global_) = 0; std::list listeners_; size_t listeners_destroyed_ = 0; @@ -551,4 +572,4 @@ inline void Server::set_config_fetcher( } // namespace grpc_core -#endif // GRPC_SRC_CORE_LIB_SURFACE_SERVER_H +#endif // GRPC_SRC_CORE_SERVER_SERVER_H diff --git a/src/core/lib/channel/server_call_tracer_filter.cc b/src/core/server/server_call_tracer_filter.cc similarity index 95% rename from src/core/lib/channel/server_call_tracer_filter.cc rename to src/core/server/server_call_tracer_filter.cc index 5effe8f8538..6ceb637d481 100644 --- a/src/core/lib/channel/server_call_tracer_filter.cc +++ b/src/core/server/server_call_tracer_filter.cc @@ -14,7 +14,7 @@ // limitations under the License. // -#include "src/core/lib/channel/server_call_tracer_filter.h" +#include "src/core/server/server_call_tracer_filter.h" #include #include @@ -80,6 +80,7 @@ class ServerCallTracerFilter } static const NoInterceptor OnClientToServerMessage; + static const NoInterceptor OnClientToServerHalfClose; static const NoInterceptor OnServerToClientMessage; private: @@ -92,6 +93,7 @@ class ServerCallTracerFilter }; const NoInterceptor ServerCallTracerFilter::Call::OnClientToServerMessage; +const NoInterceptor ServerCallTracerFilter::Call::OnClientToServerHalfClose; const NoInterceptor ServerCallTracerFilter::Call::OnServerToClientMessage; const grpc_channel_filter ServerCallTracerFilter::kFilter = diff --git a/src/core/lib/channel/server_call_tracer_filter.h b/src/core/server/server_call_tracer_filter.h similarity index 81% rename from src/core/lib/channel/server_call_tracer_filter.h rename to src/core/server/server_call_tracer_filter.h index e34fcb416d0..af554b84aff 100644 --- a/src/core/lib/channel/server_call_tracer_filter.h +++ b/src/core/server/server_call_tracer_filter.h @@ -12,8 +12,8 @@ // See the License for the specific language governing permissions and // limitations under the License. -#ifndef GRPC_SRC_CORE_LIB_CHANNEL_SERVER_CALL_TRACER_FILTER_H -#define GRPC_SRC_CORE_LIB_CHANNEL_SERVER_CALL_TRACER_FILTER_H +#ifndef GRPC_SRC_CORE_SERVER_SERVER_CALL_TRACER_FILTER_H +#define GRPC_SRC_CORE_SERVER_SERVER_CALL_TRACER_FILTER_H #include @@ -25,4 +25,4 @@ void RegisterServerCallTracerFilter(CoreConfiguration::Builder* builder); } // namespace grpc_core -#endif // GRPC_SRC_CORE_LIB_CHANNEL_SERVER_CALL_TRACER_FILTER_H +#endif // GRPC_SRC_CORE_SERVER_SERVER_CALL_TRACER_FILTER_H diff --git a/src/core/ext/filters/server_config_selector/server_config_selector.h b/src/core/server/server_config_selector.h similarity index 90% rename from src/core/ext/filters/server_config_selector/server_config_selector.h rename to src/core/server/server_config_selector.h index 924aed3778d..c6274f49f35 100644 --- a/src/core/ext/filters/server_config_selector/server_config_selector.h +++ b/src/core/server/server_config_selector.h @@ -14,23 +14,23 @@ // limitations under the License. // -#ifndef GRPC_SRC_CORE_EXT_FILTERS_SERVER_CONFIG_SELECTOR_SERVER_CONFIG_SELECTOR_H -#define GRPC_SRC_CORE_EXT_FILTERS_SERVER_CONFIG_SELECTOR_SERVER_CONFIG_SELECTOR_H - -#include +#ifndef GRPC_SRC_CORE_SERVER_SERVER_CONFIG_SELECTOR_H +#define GRPC_SRC_CORE_SERVER_SERVER_CONFIG_SELECTOR_H #include #include "absl/status/statusor.h" #include "absl/strings/string_view.h" -#include "src/core/lib/gpr/useful.h" +#include + #include "src/core/lib/gprpp/dual_ref_counted.h" #include "src/core/lib/gprpp/ref_counted.h" #include "src/core/lib/gprpp/ref_counted_ptr.h" #include "src/core/lib/transport/metadata_batch.h" #include "src/core/service_config/service_config.h" #include "src/core/service_config/service_config_parser.h" +#include "src/core/util/useful.h" namespace grpc_core { @@ -80,4 +80,4 @@ class ServerConfigSelectorProvider } // namespace grpc_core -#endif // GRPC_SRC_CORE_EXT_FILTERS_SERVER_CONFIG_SELECTOR_SERVER_CONFIG_SELECTOR_H +#endif // GRPC_SRC_CORE_SERVER_SERVER_CONFIG_SELECTOR_H diff --git a/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc b/src/core/server/server_config_selector_filter.cc similarity index 94% rename from src/core/ext/filters/server_config_selector/server_config_selector_filter.cc rename to src/core/server/server_config_selector_filter.cc index 0d37c5c646c..b4acec5329e 100644 --- a/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +++ b/src/core/server/server_config_selector_filter.cc @@ -12,22 +12,21 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include - -#include "src/core/ext/filters/server_config_selector/server_config_selector_filter.h" +#include "src/core/server/server_config_selector_filter.h" #include #include #include #include "absl/base/thread_annotations.h" +#include "absl/log/check.h" #include "absl/status/status.h" #include "absl/status/statusor.h" #include "absl/types/optional.h" #include +#include -#include "src/core/ext/filters/server_config_selector/server_config_selector.h" #include "src/core/lib/channel/channel_args.h" #include "src/core/lib/channel/context.h" #include "src/core/lib/channel/promise_based_filter.h" @@ -41,6 +40,7 @@ #include "src/core/lib/resource_quota/arena.h" #include "src/core/lib/transport/metadata_batch.h" #include "src/core/lib/transport/transport.h" +#include "src/core/server/server_config_selector.h" #include "src/core/service_config/service_config.h" #include "src/core/service_config/service_config_call_data.h" @@ -72,6 +72,7 @@ class ServerConfigSelectorFilter final static const NoInterceptor OnServerInitialMetadata; static const NoInterceptor OnServerTrailingMetadata; static const NoInterceptor OnClientToServerMessage; + static const NoInterceptor OnClientToServerHalfClose; static const NoInterceptor OnServerToClientMessage; static const NoInterceptor OnFinalize; }; @@ -120,7 +121,7 @@ ServerConfigSelectorFilter::ServerConfigSelectorFilter( RefCountedPtr server_config_selector_provider) : server_config_selector_provider_( std::move(server_config_selector_provider)) { - GPR_ASSERT(server_config_selector_provider_ != nullptr); + CHECK(server_config_selector_provider_ != nullptr); auto server_config_selector_watcher = std::make_unique(Ref()); auto config_selector = server_config_selector_provider_->Watch( @@ -158,6 +159,7 @@ absl::Status ServerConfigSelectorFilter::Call::OnClientInitialMetadata( const NoInterceptor ServerConfigSelectorFilter::Call::OnServerInitialMetadata; const NoInterceptor ServerConfigSelectorFilter::Call::OnServerTrailingMetadata; const NoInterceptor ServerConfigSelectorFilter::Call::OnClientToServerMessage; +const NoInterceptor ServerConfigSelectorFilter::Call::OnClientToServerHalfClose; const NoInterceptor ServerConfigSelectorFilter::Call::OnServerToClientMessage; const NoInterceptor ServerConfigSelectorFilter::Call::OnFinalize; diff --git a/src/core/ext/filters/server_config_selector/server_config_selector_filter.h b/src/core/server/server_config_selector_filter.h similarity index 75% rename from src/core/ext/filters/server_config_selector/server_config_selector_filter.h rename to src/core/server/server_config_selector_filter.h index 7e1d5b78296..1cc77358836 100644 --- a/src/core/ext/filters/server_config_selector/server_config_selector_filter.h +++ b/src/core/server/server_config_selector_filter.h @@ -16,8 +16,8 @@ // // -#ifndef GRPC_SRC_CORE_EXT_FILTERS_SERVER_CONFIG_SELECTOR_SERVER_CONFIG_SELECTOR_FILTER_H -#define GRPC_SRC_CORE_EXT_FILTERS_SERVER_CONFIG_SELECTOR_SERVER_CONFIG_SELECTOR_FILTER_H +#ifndef GRPC_SRC_CORE_SERVER_SERVER_CONFIG_SELECTOR_FILTER_H +#define GRPC_SRC_CORE_SERVER_SERVER_CONFIG_SELECTOR_FILTER_H #include @@ -30,4 +30,4 @@ extern const grpc_channel_filter kServerConfigSelectorFilter; } // namespace grpc_core -#endif // GRPC_SRC_CORE_EXT_FILTERS_SERVER_CONFIG_SELECTOR_SERVER_CONFIG_SELECTOR_FILTER_H +#endif // GRPC_SRC_CORE_SERVER_SERVER_CONFIG_SELECTOR_FILTER_H diff --git a/src/core/lib/surface/server_interface.h b/src/core/server/server_interface.h similarity index 80% rename from src/core/lib/surface/server_interface.h rename to src/core/server/server_interface.h index ea1081287d2..431ad369714 100644 --- a/src/core/lib/surface/server_interface.h +++ b/src/core/server/server_interface.h @@ -14,13 +14,14 @@ // limitations under the License. // -#ifndef GRPC_SRC_CORE_LIB_SURFACE_SERVER_INTERFACE_H -#define GRPC_SRC_CORE_LIB_SURFACE_SERVER_INTERFACE_H +#ifndef GRPC_SRC_CORE_SERVER_SERVER_INTERFACE_H +#define GRPC_SRC_CORE_SERVER_SERVER_INTERFACE_H +#include #include +#include "src/core/channelz/channelz.h" #include "src/core/lib/channel/channel_args.h" -#include "src/core/lib/channel/channelz.h" namespace grpc_core { @@ -36,8 +37,9 @@ class ServerInterface { virtual const ChannelArgs& channel_args() const = 0; virtual channelz::ServerNode* channelz_node() const = 0; virtual ServerCallTracerFactory* server_call_tracer_factory() const = 0; + virtual grpc_compression_options compression_options() const = 0; }; } // namespace grpc_core -#endif // GRPC_SRC_CORE_LIB_SURFACE_SERVER_INTERFACE_H +#endif // GRPC_SRC_CORE_SERVER_SERVER_INTERFACE_H diff --git a/src/core/ext/xds/xds_channel_stack_modifier.cc b/src/core/server/xds_channel_stack_modifier.cc similarity index 97% rename from src/core/ext/xds/xds_channel_stack_modifier.cc rename to src/core/server/xds_channel_stack_modifier.cc index eeb1f26809d..f9e280ea28a 100644 --- a/src/core/ext/xds/xds_channel_stack_modifier.cc +++ b/src/core/server/xds_channel_stack_modifier.cc @@ -16,7 +16,7 @@ // // -#include "src/core/ext/xds/xds_channel_stack_modifier.h" +#include "src/core/server/xds_channel_stack_modifier.h" #include #include @@ -27,9 +27,9 @@ #include "src/core/lib/channel/channel_args.h" #include "src/core/lib/channel/channel_stack.h" #include "src/core/lib/config/core_configuration.h" -#include "src/core/lib/gpr/useful.h" #include "src/core/lib/surface/channel_init.h" #include "src/core/lib/surface/channel_stack_type.h" +#include "src/core/util/useful.h" namespace grpc_core { namespace { diff --git a/src/core/ext/xds/xds_channel_stack_modifier.h b/src/core/server/xds_channel_stack_modifier.h similarity index 89% rename from src/core/ext/xds/xds_channel_stack_modifier.h rename to src/core/server/xds_channel_stack_modifier.h index 740c2aefc5d..4cea9e165e7 100644 --- a/src/core/ext/xds/xds_channel_stack_modifier.h +++ b/src/core/server/xds_channel_stack_modifier.h @@ -16,8 +16,8 @@ // // -#ifndef GRPC_SRC_CORE_EXT_XDS_XDS_CHANNEL_STACK_MODIFIER_H -#define GRPC_SRC_CORE_EXT_XDS_XDS_CHANNEL_STACK_MODIFIER_H +#ifndef GRPC_SRC_CORE_SERVER_XDS_CHANNEL_STACK_MODIFIER_H +#define GRPC_SRC_CORE_SERVER_XDS_CHANNEL_STACK_MODIFIER_H #include #include @@ -29,9 +29,9 @@ #include "src/core/lib/channel/channel_fwd.h" #include "src/core/lib/channel/channel_stack_builder.h" -#include "src/core/lib/gpr/useful.h" #include "src/core/lib/gprpp/ref_counted.h" #include "src/core/lib/gprpp/ref_counted_ptr.h" +#include "src/core/util/useful.h" namespace grpc_core { @@ -60,4 +60,4 @@ class XdsChannelStackModifier final } // namespace grpc_core -#endif // GRPC_SRC_CORE_EXT_XDS_XDS_CHANNEL_STACK_MODIFIER_H +#endif // GRPC_SRC_CORE_SERVER_XDS_CHANNEL_STACK_MODIFIER_H diff --git a/src/core/ext/xds/xds_server_config_fetcher.cc b/src/core/server/xds_server_config_fetcher.cc similarity index 98% rename from src/core/ext/xds/xds_server_config_fetcher.cc rename to src/core/server/xds_server_config_fetcher.cc index a236fd05d75..885e21120ba 100644 --- a/src/core/ext/xds/xds_server_config_fetcher.cc +++ b/src/core/server/xds_server_config_fetcher.cc @@ -27,6 +27,7 @@ #include #include "absl/base/thread_annotations.h" +#include "absl/log/check.h" #include "absl/status/status.h" #include "absl/status/statusor.h" #include "absl/strings/match.h" @@ -46,19 +47,6 @@ #include #include -#include "src/core/ext/filters/server_config_selector/server_config_selector.h" -#include "src/core/ext/filters/server_config_selector/server_config_selector_filter.h" -#include "src/core/ext/xds/certificate_provider_store.h" -#include "src/core/ext/xds/xds_bootstrap_grpc.h" -#include "src/core/ext/xds/xds_certificate_provider.h" -#include "src/core/ext/xds/xds_channel_stack_modifier.h" -#include "src/core/ext/xds/xds_client.h" -#include "src/core/ext/xds/xds_client_grpc.h" -#include "src/core/ext/xds/xds_common_types.h" -#include "src/core/ext/xds/xds_http_filters.h" -#include "src/core/ext/xds/xds_listener.h" -#include "src/core/ext/xds/xds_route_config.h" -#include "src/core/ext/xds/xds_routing.h" #include "src/core/lib/address_utils/parse_address.h" #include "src/core/lib/address_utils/sockaddr_utils.h" #include "src/core/lib/channel/channel_args.h" @@ -83,11 +71,24 @@ #include "src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h" #include "src/core/lib/security/credentials/xds/xds_credentials.h" #include "src/core/lib/surface/api_trace.h" -#include "src/core/lib/surface/server.h" #include "src/core/lib/transport/metadata_batch.h" #include "src/core/lib/uri/uri_parser.h" +#include "src/core/server/server.h" +#include "src/core/server/server_config_selector.h" +#include "src/core/server/server_config_selector_filter.h" +#include "src/core/server/xds_channel_stack_modifier.h" #include "src/core/service_config/service_config.h" #include "src/core/service_config/service_config_impl.h" +#include "src/core/xds/grpc/certificate_provider_store.h" +#include "src/core/xds/grpc/xds_bootstrap_grpc.h" +#include "src/core/xds/grpc/xds_certificate_provider.h" +#include "src/core/xds/grpc/xds_client_grpc.h" +#include "src/core/xds/grpc/xds_common_types.h" +#include "src/core/xds/grpc/xds_http_filters.h" +#include "src/core/xds/grpc/xds_listener.h" +#include "src/core/xds/grpc/xds_route_config.h" +#include "src/core/xds/grpc/xds_routing.h" +#include "src/core/xds/xds_client/xds_client.h" namespace grpc_core { namespace { @@ -405,7 +406,7 @@ class XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager:: absl::StatusOr> Watch( std::unique_ptr watcher) override { - GPR_ASSERT(watcher_ == nullptr); + CHECK(watcher_ == nullptr); watcher_ = std::move(watcher); if (!static_resource_.ok()) { return static_resource_.status(); @@ -518,7 +519,7 @@ XdsServerConfigFetcher::XdsServerConfigFetcher( RefCountedPtr xds_client, grpc_server_xds_status_notifier notifier) : xds_client_(std::move(xds_client)), serving_status_notifier_(notifier) { - GPR_ASSERT(xds_client_ != nullptr); + CHECK(xds_client_ != nullptr); } std::string ListenerResourceName(absl::string_view resource_name_template, @@ -1102,7 +1103,7 @@ absl::StatusOr XdsServerConfigFetcher::ListenerWatcher:: const XdsHttpFilterImpl* filter_impl = http_filter_registry.GetFilterForType( http_filter.config.config_proto_type_name); - GPR_ASSERT(filter_impl != nullptr); + CHECK_NE(filter_impl, nullptr); // Some filters like the router filter are no-op filters and do not have // an implementation. if (filter_impl->channel_filter() != nullptr) { @@ -1151,7 +1152,7 @@ absl::StatusOr XdsServerConfigFetcher::ListenerWatcher:: return result.status(); } xds_certificate_provider = std::move(*result); - GPR_ASSERT(xds_certificate_provider != nullptr); + CHECK(xds_certificate_provider != nullptr); args = args.SetObject(xds_certificate_provider); } return args; @@ -1269,7 +1270,7 @@ XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager:: resource_name_(std::move(resource_name)), http_filters_(std::move(http_filters)), resource_(std::move(initial_resource)) { - GPR_ASSERT(!resource_name_.empty()); + CHECK(!resource_name_.empty()); // RouteConfigWatcher is being created here instead of in Watch() to avoid // deadlocks from invoking XdsRouteConfigResourceType::StartWatch whilst in a // critical region. @@ -1296,7 +1297,7 @@ XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager:: absl::StatusOr> resource; { MutexLock lock(&mu_); - GPR_ASSERT(watcher_ == nullptr); + CHECK(watcher_ == nullptr); watcher_ = std::move(watcher); resource = resource_; } diff --git a/src/core/service_config/service_config.h b/src/core/service_config/service_config.h index 7935150fb2c..ba5fa8262ae 100644 --- a/src/core/service_config/service_config.h +++ b/src/core/service_config/service_config.h @@ -24,9 +24,9 @@ #include #include -#include "src/core/lib/gpr/useful.h" #include "src/core/lib/gprpp/ref_counted.h" #include "src/core/service_config/service_config_parser.h" +#include "src/core/util/useful.h" // The main purpose of the code here is to parse the service config in // JSON form, which will look like this: diff --git a/src/core/service_config/service_config_channel_arg_filter.cc b/src/core/service_config/service_config_channel_arg_filter.cc index a2c9a973129..9afa99018fc 100644 --- a/src/core/service_config/service_config_channel_arg_filter.cc +++ b/src/core/service_config/service_config_channel_arg_filter.cc @@ -22,6 +22,7 @@ #include #include +#include "absl/log/log.h" #include "absl/status/status.h" #include "absl/status/statusor.h" #include "absl/types/optional.h" @@ -69,7 +70,7 @@ class ServiceConfigChannelArgFilter final auto service_config = ServiceConfigImpl::Create(args, *service_config_str); if (!service_config.ok()) { - gpr_log(GPR_ERROR, "%s", service_config.status().ToString().c_str()); + LOG(ERROR) << service_config.status().ToString(); } else { service_config_ = std::move(*service_config); } @@ -83,6 +84,7 @@ class ServiceConfigChannelArgFilter final static const NoInterceptor OnServerInitialMetadata; static const NoInterceptor OnServerTrailingMetadata; static const NoInterceptor OnClientToServerMessage; + static const NoInterceptor OnClientToServerHalfClose; static const NoInterceptor OnServerToClientMessage; static const NoInterceptor OnFinalize; }; @@ -97,6 +99,8 @@ const NoInterceptor ServiceConfigChannelArgFilter::Call::OnServerTrailingMetadata; const NoInterceptor ServiceConfigChannelArgFilter::Call::OnClientToServerMessage; +const NoInterceptor + ServiceConfigChannelArgFilter::Call::OnClientToServerHalfClose; const NoInterceptor ServiceConfigChannelArgFilter::Call::OnServerToClientMessage; const NoInterceptor ServiceConfigChannelArgFilter::Call::OnFinalize; diff --git a/src/core/service_config/service_config_impl.h b/src/core/service_config/service_config_impl.h index 2de5f7377be..3b5b96e182d 100644 --- a/src/core/service_config/service_config_impl.h +++ b/src/core/service_config/service_config_impl.h @@ -24,6 +24,7 @@ #include #include +#include "absl/log/check.h" #include "absl/status/statusor.h" #include "absl/strings/string_view.h" @@ -89,7 +90,7 @@ class ServiceConfigImpl final : public ServiceConfig { /// ServiceConfig object. ServiceConfigParser::ParsedConfig* GetGlobalParsedConfig( size_t index) override { - GPR_DEBUG_ASSERT(index < parsed_global_configs_.size()); + DCHECK(index < parsed_global_configs_.size()); return parsed_global_configs_[index].get(); } diff --git a/src/core/tsi/alts/frame_protector/alts_frame_protector.cc b/src/core/tsi/alts/frame_protector/alts_frame_protector.cc index 9b48b181d1f..09415c413d6 100644 --- a/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +++ b/src/core/tsi/alts/frame_protector/alts_frame_protector.cc @@ -24,10 +24,10 @@ #include #include +#include "absl/log/log.h" #include "absl/types/span.h" #include -#include #include #include "src/core/lib/gprpp/memory.h" @@ -70,7 +70,7 @@ static tsi_result seal(alts_frame_protector* impl) { &output_size, &error_details); impl->in_place_protect_bytes_buffered = output_size; if (status != GRPC_STATUS_OK) { - gpr_log(GPR_ERROR, "%s", error_details); + LOG(ERROR) << error_details; gpr_free(error_details); return TSI_INTERNAL_ERROR; } @@ -88,7 +88,7 @@ static tsi_result alts_protect_flush(tsi_frame_protector* self, if (self == nullptr || protected_output_frames == nullptr || protected_output_frames_size == nullptr || still_pending_size == nullptr) { - gpr_log(GPR_ERROR, "Invalid nullptr arguments to alts_protect_flush()."); + LOG(ERROR) << "Invalid nullptr arguments to alts_protect_flush()."; return TSI_INVALID_ARGUMENT; } alts_frame_protector* impl = reinterpret_cast(self); @@ -113,7 +113,7 @@ static tsi_result alts_protect_flush(tsi_frame_protector* self, } if (!alts_reset_frame_writer(impl->writer, impl->in_place_protect_buffer, impl->in_place_protect_bytes_buffered)) { - gpr_log(GPR_ERROR, "Couldn't reset frame writer."); + LOG(ERROR) << "Couldn't reset frame writer."; return TSI_INTERNAL_ERROR; } } @@ -126,7 +126,7 @@ static tsi_result alts_protect_flush(tsi_frame_protector* self, size_t written_frame_bytes = *protected_output_frames_size; if (!alts_write_frame_bytes(impl->writer, protected_output_frames, &written_frame_bytes)) { - gpr_log(GPR_ERROR, "Couldn't write frame bytes."); + LOG(ERROR) << "Couldn't write frame bytes."; return TSI_INTERNAL_ERROR; } *protected_output_frames_size = written_frame_bytes; @@ -149,7 +149,7 @@ static tsi_result alts_protect(tsi_frame_protector* self, if (self == nullptr || unprotected_bytes == nullptr || unprotected_bytes_size == nullptr || protected_output_frames == nullptr || protected_output_frames_size == nullptr) { - gpr_log(GPR_ERROR, "Invalid nullptr arguments to alts_protect()."); + LOG(ERROR) << "Invalid nullptr arguments to alts_protect()."; return TSI_INVALID_ARGUMENT; } alts_frame_protector* impl = reinterpret_cast(self); @@ -202,7 +202,7 @@ static tsi_result unseal(alts_frame_protector* impl) { impl->max_unprotected_frame_size, alts_get_output_bytes_read(impl->reader), &output_size, &error_details); if (status != GRPC_STATUS_OK) { - gpr_log(GPR_ERROR, "%s", error_details); + LOG(ERROR) << error_details; gpr_free(error_details); return TSI_DATA_CORRUPTED; } @@ -241,7 +241,7 @@ static tsi_result alts_unprotect(tsi_frame_protector* self, if (self == nullptr || protected_frames_bytes == nullptr || protected_frames_bytes_size == nullptr || unprotected_bytes == nullptr || unprotected_bytes_size == nullptr) { - gpr_log(GPR_ERROR, "Invalid nullptr arguments to alts_unprotect()."); + LOG(ERROR) << "Invalid nullptr arguments to alts_unprotect()."; return TSI_INVALID_ARGUMENT; } alts_frame_protector* impl = reinterpret_cast(self); @@ -256,7 +256,7 @@ static tsi_result alts_unprotect(tsi_frame_protector* self, impl->in_place_unprotect_bytes_processed + impl->overhead_length))) { if (!alts_reset_frame_reader(impl->reader, impl->in_place_unprotect_buffer)) { - gpr_log(GPR_ERROR, "Couldn't reset frame reader."); + LOG(ERROR) << "Couldn't reset frame reader."; return TSI_INTERNAL_ERROR; } impl->in_place_unprotect_bytes_processed = 0; @@ -276,7 +276,7 @@ static tsi_result alts_unprotect(tsi_frame_protector* self, size_t read_frames_bytes_size = *protected_frames_bytes_size; if (!alts_read_frame_bytes(impl->reader, protected_frames_bytes, &read_frames_bytes_size)) { - gpr_log(GPR_ERROR, "Failed to process frame."); + LOG(ERROR) << "Failed to process frame."; return TSI_INTERNAL_ERROR; } *protected_frames_bytes_size = read_frames_bytes_size; @@ -370,8 +370,7 @@ tsi_result alts_create_frame_protector(const uint8_t* key, size_t key_size, size_t* max_protected_frame_size, tsi_frame_protector** self) { if (key == nullptr || self == nullptr) { - gpr_log(GPR_ERROR, - "Invalid nullptr arguments to alts_create_frame_protector()."); + LOG(ERROR) << "Invalid nullptr arguments to alts_create_frame_protector()."; return TSI_INTERNAL_ERROR; } char* error_details = nullptr; @@ -379,7 +378,7 @@ tsi_result alts_create_frame_protector(const uint8_t* key, size_t key_size, grpc_status_code status = create_alts_crypters( key, key_size, is_client, is_rekey, impl, &error_details); if (status != GRPC_STATUS_OK) { - gpr_log(GPR_ERROR, "Failed to create ALTS crypters, %s.", error_details); + LOG(ERROR) << "Failed to create ALTS crypters, " << error_details; gpr_free(error_details); return TSI_INTERNAL_ERROR; } diff --git a/src/core/tsi/alts/handshaker/alts_handshaker_client.cc b/src/core/tsi/alts/handshaker/alts_handshaker_client.cc index 65113b17dcc..91afee2e5f5 100644 --- a/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +++ b/src/core/tsi/alts/handshaker/alts_handshaker_client.cc @@ -20,6 +20,8 @@ #include +#include "absl/log/check.h" +#include "absl/log/log.h" #include "absl/strings/numbers.h" #include "upb/mem/arena.hpp" @@ -117,13 +119,13 @@ typedef struct alts_grpc_handshaker_client { static void handshaker_client_send_buffer_destroy( alts_grpc_handshaker_client* client) { - GPR_ASSERT(client != nullptr); + CHECK_NE(client, nullptr); grpc_byte_buffer_destroy(client->send_buffer); client->send_buffer = nullptr; } static bool is_handshake_finished_properly(grpc_gcp_HandshakerResp* resp) { - GPR_ASSERT(resp != nullptr); + CHECK_NE(resp, nullptr); return grpc_gcp_HandshakerResp_result(resp) != nullptr; } @@ -156,7 +158,7 @@ static void maybe_complete_tsi_next( grpc_core::MutexLock lock(&client->mu); client->receive_status_finished |= receive_status_finished; if (pending_recv_message_result != nullptr) { - GPR_ASSERT(client->pending_recv_message_result == nullptr); + CHECK_EQ(client->pending_recv_message_result, nullptr); client->pending_recv_message_result = pending_recv_message_result; } if (client->pending_recv_message_result == nullptr) { @@ -197,20 +199,20 @@ static void handle_response_done(alts_grpc_handshaker_client* client, void alts_handshaker_client_handle_response(alts_handshaker_client* c, bool is_ok) { - GPR_ASSERT(c != nullptr); + CHECK_NE(c, nullptr); alts_grpc_handshaker_client* client = reinterpret_cast(c); grpc_byte_buffer* recv_buffer = client->recv_buffer; alts_tsi_handshaker* handshaker = client->handshaker; // Invalid input check. if (client->cb == nullptr) { - gpr_log(GPR_ERROR, - "client->cb is nullptr in alts_tsi_handshaker_handle_response()"); + LOG(ERROR) + << "client->cb is nullptr in alts_tsi_handshaker_handle_response()"; return; } if (handshaker == nullptr) { - gpr_log(GPR_ERROR, - "handshaker is nullptr in alts_tsi_handshaker_handle_response()"); + LOG(ERROR) + << "handshaker is nullptr in alts_tsi_handshaker_handle_response()"; handle_response_done( client, TSI_INTERNAL_ERROR, "handshaker is nullptr in alts_tsi_handshaker_handle_response()", @@ -219,14 +221,14 @@ void alts_handshaker_client_handle_response(alts_handshaker_client* c, } // TSI handshake has been shutdown. if (alts_tsi_handshaker_has_shutdown(handshaker)) { - gpr_log(GPR_INFO, "TSI handshake shutdown"); + LOG(INFO) << "TSI handshake shutdown"; handle_response_done(client, TSI_HANDSHAKE_SHUTDOWN, "TSI handshake shutdown", nullptr, 0, nullptr); return; } // Check for failed grpc read. if (!is_ok || client->inject_read_failure) { - gpr_log(GPR_INFO, "read failed on grpc call to handshaker service"); + LOG(INFO) << "read failed on grpc call to handshaker service"; handle_response_done(client, TSI_INTERNAL_ERROR, "read failed on grpc call to handshaker service", nullptr, 0, nullptr); @@ -248,7 +250,7 @@ void alts_handshaker_client_handle_response(alts_handshaker_client* c, client->recv_buffer = nullptr; // Invalid handshaker response check. if (resp == nullptr) { - gpr_log(GPR_ERROR, "alts_tsi_utils_deserialize_response() failed"); + LOG(ERROR) << "alts_tsi_utils_deserialize_response() failed"; handle_response_done(client, TSI_DATA_CORRUPTED, "alts_tsi_utils_deserialize_response() failed", nullptr, 0, nullptr); @@ -257,7 +259,7 @@ void alts_handshaker_client_handle_response(alts_handshaker_client* c, const grpc_gcp_HandshakerStatus* resp_status = grpc_gcp_HandshakerResp_status(resp); if (resp_status == nullptr) { - gpr_log(GPR_ERROR, "No status in HandshakerResp"); + LOG(ERROR) << "No status in HandshakerResp"; handle_response_done(client, TSI_DATA_CORRUPTED, "No status in HandshakerResp", nullptr, 0, nullptr); return; @@ -280,7 +282,7 @@ void alts_handshaker_client_handle_response(alts_handshaker_client* c, tsi_result status = alts_tsi_handshaker_result_create(resp, client->is_client, &result); if (status != TSI_OK) { - gpr_log(GPR_ERROR, "alts_tsi_handshaker_result_create() failed"); + LOG(ERROR) << "alts_tsi_handshaker_result_create() failed"; handle_response_done(client, status, "alts_tsi_handshaker_result_create() failed", nullptr, 0, nullptr); @@ -298,7 +300,7 @@ void alts_handshaker_client_handle_response(alts_handshaker_client* c, if (details.size > 0) { error = absl::StrCat("Status ", code, " from handshaker service: ", absl::string_view(details.data, details.size)); - gpr_log(GPR_ERROR, "%s", error.c_str()); + LOG(ERROR) << error; } } // TODO(apolcyn): consider short ciruiting handle_response_done and @@ -312,7 +314,7 @@ void alts_handshaker_client_handle_response(alts_handshaker_client* c, static tsi_result continue_make_grpc_call(alts_grpc_handshaker_client* client, bool is_start) { - GPR_ASSERT(client != nullptr); + CHECK_NE(client, nullptr); grpc_op ops[kHandshakerClientOpNum]; memset(ops, 0, sizeof(ops)); grpc_op* op = ops; @@ -325,38 +327,38 @@ static tsi_result continue_make_grpc_call(alts_grpc_handshaker_client* client, op->flags = 0; op->reserved = nullptr; op++; - GPR_ASSERT(op - ops <= kHandshakerClientOpNum); + CHECK(op - ops <= kHandshakerClientOpNum); gpr_ref(&client->refs); grpc_call_error call_error = client->grpc_caller(client->call, ops, static_cast(op - ops), &client->on_status_received); // TODO(apolcyn): return the error here instead, as done for other ops? - GPR_ASSERT(call_error == GRPC_CALL_OK); + CHECK_EQ(call_error, GRPC_CALL_OK); memset(ops, 0, sizeof(ops)); op = ops; op->op = GRPC_OP_SEND_INITIAL_METADATA; op->data.send_initial_metadata.count = 0; op++; - GPR_ASSERT(op - ops <= kHandshakerClientOpNum); + CHECK(op - ops <= kHandshakerClientOpNum); op->op = GRPC_OP_RECV_INITIAL_METADATA; op->data.recv_initial_metadata.recv_initial_metadata = &client->recv_initial_metadata; op++; - GPR_ASSERT(op - ops <= kHandshakerClientOpNum); + CHECK(op - ops <= kHandshakerClientOpNum); } op->op = GRPC_OP_SEND_MESSAGE; op->data.send_message.send_message = client->send_buffer; op++; - GPR_ASSERT(op - ops <= kHandshakerClientOpNum); + CHECK(op - ops <= kHandshakerClientOpNum); op->op = GRPC_OP_RECV_MESSAGE; op->data.recv_message.recv_message = &client->recv_buffer; op++; - GPR_ASSERT(op - ops <= kHandshakerClientOpNum); - GPR_ASSERT(client->grpc_caller != nullptr); + CHECK(op - ops <= kHandshakerClientOpNum); + CHECK_NE(client->grpc_caller, nullptr); if (client->grpc_caller(client->call, ops, static_cast(op - ops), &client->on_handshaker_service_resp_recv) != GRPC_CALL_OK) { - gpr_log(GPR_ERROR, "Start batch operation failed"); + LOG(ERROR) << "Start batch operation failed"; return TSI_INTERNAL_ERROR; } return TSI_OK; @@ -450,7 +452,7 @@ void HandshakeDone(bool is_client) { /// make a grpc call. /// static tsi_result make_grpc_call(alts_handshaker_client* c, bool is_start) { - GPR_ASSERT(c != nullptr); + CHECK_NE(c, nullptr); alts_grpc_handshaker_client* client = reinterpret_cast(c); if (is_start) { @@ -500,7 +502,7 @@ static grpc_byte_buffer* get_serialized_handshaker_req( // Create and populate a client_start handshaker request, then serialize it. static grpc_byte_buffer* get_serialized_start_client( alts_handshaker_client* c) { - GPR_ASSERT(c != nullptr); + CHECK_NE(c, nullptr); alts_grpc_handshaker_client* client = reinterpret_cast(c); upb::Arena arena; @@ -543,21 +545,21 @@ static grpc_byte_buffer* get_serialized_start_client( static tsi_result handshaker_client_start_client(alts_handshaker_client* c) { if (c == nullptr) { - gpr_log(GPR_ERROR, "client is nullptr in handshaker_client_start_client()"); + LOG(ERROR) << "client is nullptr in handshaker_client_start_client()"; return TSI_INVALID_ARGUMENT; } grpc_byte_buffer* buffer = get_serialized_start_client(c); alts_grpc_handshaker_client* client = reinterpret_cast(c); if (buffer == nullptr) { - gpr_log(GPR_ERROR, "get_serialized_start_client() failed"); + LOG(ERROR) << "get_serialized_start_client() failed"; return TSI_INTERNAL_ERROR; } handshaker_client_send_buffer_destroy(client); client->send_buffer = buffer; tsi_result result = make_grpc_call(&client->base, true /* is_start */); if (result != TSI_OK) { - gpr_log(GPR_ERROR, "make_grpc_call() failed"); + LOG(ERROR) << "make_grpc_call() failed"; } return result; } @@ -565,8 +567,8 @@ static tsi_result handshaker_client_start_client(alts_handshaker_client* c) { // Create and populate a start_server handshaker request, then serialize it. static grpc_byte_buffer* get_serialized_start_server( alts_handshaker_client* c, grpc_slice* bytes_received) { - GPR_ASSERT(c != nullptr); - GPR_ASSERT(bytes_received != nullptr); + CHECK_NE(c, nullptr); + CHECK_NE(bytes_received, nullptr); alts_grpc_handshaker_client* client = reinterpret_cast(c); @@ -602,28 +604,28 @@ static grpc_byte_buffer* get_serialized_start_server( static tsi_result handshaker_client_start_server(alts_handshaker_client* c, grpc_slice* bytes_received) { if (c == nullptr || bytes_received == nullptr) { - gpr_log(GPR_ERROR, "Invalid arguments to handshaker_client_start_server()"); + LOG(ERROR) << "Invalid arguments to handshaker_client_start_server()"; return TSI_INVALID_ARGUMENT; } alts_grpc_handshaker_client* client = reinterpret_cast(c); grpc_byte_buffer* buffer = get_serialized_start_server(c, bytes_received); if (buffer == nullptr) { - gpr_log(GPR_ERROR, "get_serialized_start_server() failed"); + LOG(ERROR) << "get_serialized_start_server() failed"; return TSI_INTERNAL_ERROR; } handshaker_client_send_buffer_destroy(client); client->send_buffer = buffer; tsi_result result = make_grpc_call(&client->base, true /* is_start */); if (result != TSI_OK) { - gpr_log(GPR_ERROR, "make_grpc_call() failed"); + LOG(ERROR) << "make_grpc_call() failed"; } return result; } // Create and populate a next handshaker request, then serialize it. static grpc_byte_buffer* get_serialized_next(grpc_slice* bytes_received) { - GPR_ASSERT(bytes_received != nullptr); + CHECK_NE(bytes_received, nullptr); upb::Arena arena; grpc_gcp_HandshakerReq* req = grpc_gcp_HandshakerReq_new(arena.ptr()); grpc_gcp_NextHandshakeMessageReq* next = @@ -639,7 +641,7 @@ static grpc_byte_buffer* get_serialized_next(grpc_slice* bytes_received) { static tsi_result handshaker_client_next(alts_handshaker_client* c, grpc_slice* bytes_received) { if (c == nullptr || bytes_received == nullptr) { - gpr_log(GPR_ERROR, "Invalid arguments to handshaker_client_next()"); + LOG(ERROR) << "Invalid arguments to handshaker_client_next()"; return TSI_INVALID_ARGUMENT; } alts_grpc_handshaker_client* client = @@ -648,20 +650,20 @@ static tsi_result handshaker_client_next(alts_handshaker_client* c, client->recv_bytes = grpc_core::CSliceRef(*bytes_received); grpc_byte_buffer* buffer = get_serialized_next(bytes_received); if (buffer == nullptr) { - gpr_log(GPR_ERROR, "get_serialized_next() failed"); + LOG(ERROR) << "get_serialized_next() failed"; return TSI_INTERNAL_ERROR; } handshaker_client_send_buffer_destroy(client); client->send_buffer = buffer; tsi_result result = make_grpc_call(&client->base, false /* is_start */); if (result != TSI_OK) { - gpr_log(GPR_ERROR, "make_grpc_call() failed"); + LOG(ERROR) << "make_grpc_call() failed"; } return result; } static void handshaker_client_shutdown(alts_handshaker_client* c) { - GPR_ASSERT(c != nullptr); + CHECK_NE(c, nullptr); alts_grpc_handshaker_client* client = reinterpret_cast(c); if (client->call != nullptr) { @@ -715,7 +717,7 @@ alts_handshaker_client* alts_grpc_handshaker_client_create( void* user_data, alts_handshaker_client_vtable* vtable_for_testing, bool is_client, size_t max_frame_size, std::string* error) { if (channel == nullptr || handshaker_service_url == nullptr) { - gpr_log(GPR_ERROR, "Invalid arguments to alts_handshaker_client_create()"); + LOG(ERROR) << "Invalid arguments to alts_handshaker_client_create()"; return nullptr; } alts_grpc_handshaker_client* client = new alts_grpc_handshaker_client(); @@ -759,7 +761,8 @@ namespace internal { void alts_handshaker_client_set_grpc_caller_for_testing( alts_handshaker_client* c, alts_grpc_caller caller) { - GPR_ASSERT(c != nullptr && caller != nullptr); + CHECK(c != nullptr); + CHECK_NE(caller, nullptr); alts_grpc_handshaker_client* client = reinterpret_cast(c); client->grpc_caller = caller; @@ -767,7 +770,7 @@ void alts_handshaker_client_set_grpc_caller_for_testing( grpc_byte_buffer* alts_handshaker_client_get_send_buffer_for_testing( alts_handshaker_client* c) { - GPR_ASSERT(c != nullptr); + CHECK_NE(c, nullptr); alts_grpc_handshaker_client* client = reinterpret_cast(c); return client->send_buffer; @@ -775,7 +778,7 @@ grpc_byte_buffer* alts_handshaker_client_get_send_buffer_for_testing( grpc_byte_buffer** alts_handshaker_client_get_recv_buffer_addr_for_testing( alts_handshaker_client* c) { - GPR_ASSERT(c != nullptr); + CHECK_NE(c, nullptr); alts_grpc_handshaker_client* client = reinterpret_cast(c); return &client->recv_buffer; @@ -783,7 +786,7 @@ grpc_byte_buffer** alts_handshaker_client_get_recv_buffer_addr_for_testing( grpc_metadata_array* alts_handshaker_client_get_initial_metadata_for_testing( alts_handshaker_client* c) { - GPR_ASSERT(c != nullptr); + CHECK_NE(c, nullptr); alts_grpc_handshaker_client* client = reinterpret_cast(c); return &client->recv_initial_metadata; @@ -791,7 +794,7 @@ grpc_metadata_array* alts_handshaker_client_get_initial_metadata_for_testing( void alts_handshaker_client_set_recv_bytes_for_testing( alts_handshaker_client* c, grpc_slice* recv_bytes) { - GPR_ASSERT(c != nullptr); + CHECK_NE(c, nullptr); alts_grpc_handshaker_client* client = reinterpret_cast(c); client->recv_bytes = CSliceRef(*recv_bytes); @@ -801,7 +804,7 @@ void alts_handshaker_client_set_fields_for_testing( alts_handshaker_client* c, alts_tsi_handshaker* handshaker, tsi_handshaker_on_next_done_cb cb, void* user_data, grpc_byte_buffer* recv_buffer, bool inject_read_failure) { - GPR_ASSERT(c != nullptr); + CHECK_NE(c, nullptr); alts_grpc_handshaker_client* client = reinterpret_cast(c); client->handshaker = handshaker; @@ -814,22 +817,22 @@ void alts_handshaker_client_set_fields_for_testing( void alts_handshaker_client_check_fields_for_testing( alts_handshaker_client* c, tsi_handshaker_on_next_done_cb cb, void* user_data, bool has_sent_start_message, grpc_slice* recv_bytes) { - GPR_ASSERT(c != nullptr); + CHECK_NE(c, nullptr); alts_grpc_handshaker_client* client = reinterpret_cast(c); - GPR_ASSERT(client->cb == cb); - GPR_ASSERT(client->user_data == user_data); + CHECK(client->cb == cb); + CHECK(client->user_data == user_data); if (recv_bytes != nullptr) { - GPR_ASSERT(grpc_slice_cmp(client->recv_bytes, *recv_bytes) == 0); + CHECK_EQ(grpc_slice_cmp(client->recv_bytes, *recv_bytes), 0); } - GPR_ASSERT(alts_tsi_handshaker_get_has_sent_start_message_for_testing( - client->handshaker) == has_sent_start_message); + CHECK(alts_tsi_handshaker_get_has_sent_start_message_for_testing( + client->handshaker) == has_sent_start_message); } void alts_handshaker_client_set_vtable_for_testing( alts_handshaker_client* c, alts_handshaker_client_vtable* vtable) { - GPR_ASSERT(c != nullptr); - GPR_ASSERT(vtable != nullptr); + CHECK_NE(c, nullptr); + CHECK_NE(vtable, nullptr); alts_grpc_handshaker_client* client = reinterpret_cast(c); client->base.vtable = vtable; @@ -837,7 +840,7 @@ void alts_handshaker_client_set_vtable_for_testing( alts_tsi_handshaker* alts_handshaker_client_get_handshaker_for_testing( alts_handshaker_client* c) { - GPR_ASSERT(c != nullptr); + CHECK_NE(c, nullptr); alts_grpc_handshaker_client* client = reinterpret_cast(c); return client->handshaker; @@ -845,7 +848,7 @@ alts_tsi_handshaker* alts_handshaker_client_get_handshaker_for_testing( void alts_handshaker_client_set_cb_for_testing( alts_handshaker_client* c, tsi_handshaker_on_next_done_cb cb) { - GPR_ASSERT(c != nullptr); + CHECK_NE(c, nullptr); alts_grpc_handshaker_client* client = reinterpret_cast(c); client->cb = cb; @@ -853,7 +856,7 @@ void alts_handshaker_client_set_cb_for_testing( grpc_closure* alts_handshaker_client_get_closure_for_testing( alts_handshaker_client* c) { - GPR_ASSERT(c != nullptr); + CHECK_NE(c, nullptr); alts_grpc_handshaker_client* client = reinterpret_cast(c); return &client->on_handshaker_service_resp_recv; @@ -889,8 +892,7 @@ tsi_result alts_handshaker_client_start_client(alts_handshaker_client* client) { client->vtable->client_start != nullptr) { return client->vtable->client_start(client); } - gpr_log(GPR_ERROR, - "client or client->vtable has not been initialized properly"); + LOG(ERROR) << "client or client->vtable has not been initialized properly"; return TSI_INVALID_ARGUMENT; } @@ -900,8 +902,7 @@ tsi_result alts_handshaker_client_start_server(alts_handshaker_client* client, client->vtable->server_start != nullptr) { return client->vtable->server_start(client, bytes_received); } - gpr_log(GPR_ERROR, - "client or client->vtable has not been initialized properly"); + LOG(ERROR) << "client or client->vtable has not been initialized properly"; return TSI_INVALID_ARGUMENT; } @@ -911,8 +912,7 @@ tsi_result alts_handshaker_client_next(alts_handshaker_client* client, client->vtable->next != nullptr) { return client->vtable->next(client, bytes_received); } - gpr_log(GPR_ERROR, - "client or client->vtable has not been initialized properly"); + LOG(ERROR) << "client or client->vtable has not been initialized properly"; return TSI_INVALID_ARGUMENT; } diff --git a/src/core/tsi/alts/handshaker/alts_shared_resource.cc b/src/core/tsi/alts/handshaker/alts_shared_resource.cc index 843335935a5..03e2b4439e1 100644 --- a/src/core/tsi/alts/handshaker/alts_shared_resource.cc +++ b/src/core/tsi/alts/handshaker/alts_shared_resource.cc @@ -18,6 +18,8 @@ #include "src/core/tsi/alts/handshaker/alts_shared_resource.h" +#include "absl/log/check.h" + #include #include @@ -36,11 +38,11 @@ static void thread_worker(void* /*arg*/) { grpc_event event = grpc_completion_queue_next(g_alts_resource_dedicated.cq, gpr_inf_future(GPR_CLOCK_REALTIME), nullptr); - GPR_ASSERT(event.type != GRPC_QUEUE_TIMEOUT); + CHECK(event.type != GRPC_QUEUE_TIMEOUT); if (event.type == GRPC_QUEUE_SHUTDOWN) { break; } - GPR_ASSERT(event.type == GRPC_OP_COMPLETE); + CHECK(event.type == GRPC_OP_COMPLETE); alts_handshaker_client* client = static_cast(event.tag); alts_handshaker_client_handle_response(client, event.success); diff --git a/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc b/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc index ac7372cb464..fa22ca884b7 100644 --- a/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +++ b/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc @@ -22,6 +22,8 @@ #include #include +#include "absl/log/check.h" +#include "absl/log/log.h" #include "upb/mem/arena.hpp" #include @@ -86,68 +88,68 @@ typedef struct alts_tsi_handshaker_result { static tsi_result handshaker_result_extract_peer( const tsi_handshaker_result* self, tsi_peer* peer) { if (self == nullptr || peer == nullptr) { - gpr_log(GPR_ERROR, "Invalid argument to handshaker_result_extract_peer()"); + LOG(ERROR) << "Invalid argument to handshaker_result_extract_peer()"; return TSI_INVALID_ARGUMENT; } alts_tsi_handshaker_result* result = reinterpret_cast( const_cast(self)); - GPR_ASSERT(kTsiAltsNumOfPeerProperties == 5); + CHECK_EQ(kTsiAltsNumOfPeerProperties, 5u); tsi_result ok = tsi_construct_peer(kTsiAltsNumOfPeerProperties, peer); int index = 0; if (ok != TSI_OK) { - gpr_log(GPR_ERROR, "Failed to construct tsi peer"); + LOG(ERROR) << "Failed to construct tsi peer"; return ok; } - GPR_ASSERT(&peer->properties[index] != nullptr); + CHECK_NE(&peer->properties[index], nullptr); ok = tsi_construct_string_peer_property_from_cstring( TSI_CERTIFICATE_TYPE_PEER_PROPERTY, TSI_ALTS_CERTIFICATE_TYPE, &peer->properties[index]); if (ok != TSI_OK) { tsi_peer_destruct(peer); - gpr_log(GPR_ERROR, "Failed to set tsi peer property"); + LOG(ERROR) << "Failed to set tsi peer property"; return ok; } index++; - GPR_ASSERT(&peer->properties[index] != nullptr); + CHECK_NE(&peer->properties[index], nullptr); ok = tsi_construct_string_peer_property_from_cstring( TSI_ALTS_SERVICE_ACCOUNT_PEER_PROPERTY, result->peer_identity, &peer->properties[index]); if (ok != TSI_OK) { tsi_peer_destruct(peer); - gpr_log(GPR_ERROR, "Failed to set tsi peer property"); + LOG(ERROR) << "Failed to set tsi peer property"; } index++; - GPR_ASSERT(&peer->properties[index] != nullptr); + CHECK_NE(&peer->properties[index], nullptr); ok = tsi_construct_string_peer_property( TSI_ALTS_RPC_VERSIONS, reinterpret_cast(GRPC_SLICE_START_PTR(result->rpc_versions)), GRPC_SLICE_LENGTH(result->rpc_versions), &peer->properties[index]); if (ok != TSI_OK) { tsi_peer_destruct(peer); - gpr_log(GPR_ERROR, "Failed to set tsi peer property"); + LOG(ERROR) << "Failed to set tsi peer property"; } index++; - GPR_ASSERT(&peer->properties[index] != nullptr); + CHECK_NE(&peer->properties[index], nullptr); ok = tsi_construct_string_peer_property( TSI_ALTS_CONTEXT, reinterpret_cast(GRPC_SLICE_START_PTR(result->serialized_context)), GRPC_SLICE_LENGTH(result->serialized_context), &peer->properties[index]); if (ok != TSI_OK) { tsi_peer_destruct(peer); - gpr_log(GPR_ERROR, "Failed to set tsi peer property"); + LOG(ERROR) << "Failed to set tsi peer property"; } index++; - GPR_ASSERT(&peer->properties[index] != nullptr); + CHECK_NE(&peer->properties[index], nullptr); ok = tsi_construct_string_peer_property_from_cstring( TSI_SECURITY_LEVEL_PEER_PROPERTY, tsi_security_level_to_string(TSI_PRIVACY_AND_INTEGRITY), &peer->properties[index]); if (ok != TSI_OK) { tsi_peer_destruct(peer); - gpr_log(GPR_ERROR, "Failed to set tsi peer property"); + LOG(ERROR) << "Failed to set tsi peer property"; } - GPR_ASSERT(++index == kTsiAltsNumOfPeerProperties); + CHECK(++index == kTsiAltsNumOfPeerProperties); return ok; } @@ -162,8 +164,7 @@ static tsi_result handshaker_result_create_zero_copy_grpc_protector( const tsi_handshaker_result* self, size_t* max_output_protected_frame_size, tsi_zero_copy_grpc_protector** protector) { if (self == nullptr || protector == nullptr) { - gpr_log(GPR_ERROR, - "Invalid arguments to create_zero_copy_grpc_protector()"); + LOG(ERROR) << "Invalid arguments to create_zero_copy_grpc_protector()"; return TSI_INVALID_ARGUMENT; } alts_tsi_handshaker_result* result = @@ -197,7 +198,7 @@ static tsi_result handshaker_result_create_zero_copy_grpc_protector( /*is_integrity_only=*/false, /*enable_extra_copy=*/false, max_output_protected_frame_size, protector); if (ok != TSI_OK) { - gpr_log(GPR_ERROR, "Failed to create zero-copy grpc protector"); + LOG(ERROR) << "Failed to create zero-copy grpc protector"; } return ok; } @@ -206,8 +207,8 @@ static tsi_result handshaker_result_create_frame_protector( const tsi_handshaker_result* self, size_t* max_output_protected_frame_size, tsi_frame_protector** protector) { if (self == nullptr || protector == nullptr) { - gpr_log(GPR_ERROR, - "Invalid arguments to handshaker_result_create_frame_protector()"); + LOG(ERROR) + << "Invalid arguments to handshaker_result_create_frame_protector()"; return TSI_INVALID_ARGUMENT; } alts_tsi_handshaker_result* result = @@ -218,7 +219,7 @@ static tsi_result handshaker_result_create_frame_protector( kAltsAes128GcmRekeyKeyLength, result->is_client, /*is_rekey=*/true, max_output_protected_frame_size, protector); if (ok != TSI_OK) { - gpr_log(GPR_ERROR, "Failed to create frame protector"); + LOG(ERROR) << "Failed to create frame protector"; } return ok; } @@ -227,8 +228,7 @@ static tsi_result handshaker_result_get_unused_bytes( const tsi_handshaker_result* self, const unsigned char** bytes, size_t* bytes_size) { if (self == nullptr || bytes == nullptr || bytes_size == nullptr) { - gpr_log(GPR_ERROR, - "Invalid arguments to handshaker_result_get_unused_bytes()"); + LOG(ERROR) << "Invalid arguments to handshaker_result_get_unused_bytes()"; return TSI_INVALID_ARGUMENT; } alts_tsi_handshaker_result* result = @@ -266,7 +266,7 @@ tsi_result alts_tsi_handshaker_result_create(grpc_gcp_HandshakerResp* resp, bool is_client, tsi_handshaker_result** result) { if (result == nullptr || resp == nullptr) { - gpr_log(GPR_ERROR, "Invalid arguments to create_handshaker_result()"); + LOG(ERROR) << "Invalid arguments to create_handshaker_result()"; return TSI_INVALID_ARGUMENT; } const grpc_gcp_HandshakerResult* hresult = @@ -274,42 +274,42 @@ tsi_result alts_tsi_handshaker_result_create(grpc_gcp_HandshakerResp* resp, const grpc_gcp_Identity* identity = grpc_gcp_HandshakerResult_peer_identity(hresult); if (identity == nullptr) { - gpr_log(GPR_ERROR, "Invalid identity"); + LOG(ERROR) << "Invalid identity"; return TSI_FAILED_PRECONDITION; } upb_StringView peer_service_account = grpc_gcp_Identity_service_account(identity); if (peer_service_account.size == 0) { - gpr_log(GPR_ERROR, "Invalid peer service account"); + LOG(ERROR) << "Invalid peer service account"; return TSI_FAILED_PRECONDITION; } upb_StringView key_data = grpc_gcp_HandshakerResult_key_data(hresult); if (key_data.size < kAltsAes128GcmRekeyKeyLength) { - gpr_log(GPR_ERROR, "Bad key length"); + LOG(ERROR) << "Bad key length"; return TSI_FAILED_PRECONDITION; } const grpc_gcp_RpcProtocolVersions* peer_rpc_version = grpc_gcp_HandshakerResult_peer_rpc_versions(hresult); if (peer_rpc_version == nullptr) { - gpr_log(GPR_ERROR, "Peer does not set RPC protocol versions."); + LOG(ERROR) << "Peer does not set RPC protocol versions."; return TSI_FAILED_PRECONDITION; } upb_StringView application_protocol = grpc_gcp_HandshakerResult_application_protocol(hresult); if (application_protocol.size == 0) { - gpr_log(GPR_ERROR, "Invalid application protocol"); + LOG(ERROR) << "Invalid application protocol"; return TSI_FAILED_PRECONDITION; } upb_StringView record_protocol = grpc_gcp_HandshakerResult_record_protocol(hresult); if (record_protocol.size == 0) { - gpr_log(GPR_ERROR, "Invalid record protocol"); + LOG(ERROR) << "Invalid record protocol"; return TSI_FAILED_PRECONDITION; } const grpc_gcp_Identity* local_identity = grpc_gcp_HandshakerResult_local_identity(hresult); if (local_identity == nullptr) { - gpr_log(GPR_ERROR, "Invalid local identity"); + LOG(ERROR) << "Invalid local identity"; return TSI_FAILED_PRECONDITION; } upb_StringView local_service_account = @@ -330,7 +330,7 @@ tsi_result alts_tsi_handshaker_result_create(grpc_gcp_HandshakerResp* resp, bool serialized = grpc_gcp_rpc_protocol_versions_encode( peer_rpc_version, rpc_versions_arena.ptr(), &sresult->rpc_versions); if (!serialized) { - gpr_log(GPR_ERROR, "Failed to serialize peer's RPC protocol versions."); + LOG(ERROR) << "Failed to serialize peer's RPC protocol versions."; return TSI_FAILED_PRECONDITION; } upb::Arena context_arena; @@ -347,7 +347,7 @@ tsi_result alts_tsi_handshaker_result_create(grpc_gcp_HandshakerResp* resp, context, const_cast(peer_rpc_version)); grpc_gcp_Identity* peer_identity = const_cast(identity); if (peer_identity == nullptr) { - gpr_log(GPR_ERROR, "Null peer identity in ALTS context."); + LOG(ERROR) << "Null peer identity in ALTS context."; return TSI_FAILED_PRECONDITION; } if (grpc_gcp_Identity_attributes_size(identity) != 0) { @@ -371,7 +371,7 @@ tsi_result alts_tsi_handshaker_result_create(grpc_gcp_HandshakerResp* resp, char* serialized_ctx = grpc_gcp_AltsContext_serialize( context, context_arena.ptr(), &serialized_ctx_length); if (serialized_ctx == nullptr) { - gpr_log(GPR_ERROR, "Failed to serialize peer's ALTS context."); + LOG(ERROR) << "Failed to serialize peer's ALTS context."; return TSI_FAILED_PRECONDITION; } sresult->serialized_context = @@ -387,7 +387,7 @@ static void on_handshaker_service_resp_recv(void* arg, grpc_error_handle error) { alts_handshaker_client* client = static_cast(arg); if (client == nullptr) { - gpr_log(GPR_ERROR, "ALTS handshaker client is nullptr"); + LOG(ERROR) << "ALTS handshaker client is nullptr"; return; } bool success = true; @@ -423,7 +423,7 @@ static tsi_result alts_tsi_handshaker_continue_handshaker_next( handshaker->handshaker_service_url); handshaker->interested_parties = grpc_alts_get_shared_resource_dedicated()->interested_parties; - GPR_ASSERT(handshaker->interested_parties != nullptr); + CHECK_NE(handshaker->interested_parties, nullptr); } grpc_iomgr_cb_func grpc_cb = handshaker->channel == nullptr ? on_handshaker_service_resp_recv_dedicated @@ -439,16 +439,16 @@ static tsi_result alts_tsi_handshaker_continue_handshaker_next( handshaker->client_vtable_for_testing, handshaker->is_client, handshaker->max_frame_size, error); if (client == nullptr) { - gpr_log(GPR_ERROR, "Failed to create ALTS handshaker client"); + LOG(ERROR) << "Failed to create ALTS handshaker client"; if (error != nullptr) *error = "Failed to create ALTS handshaker client"; return TSI_FAILED_PRECONDITION; } { grpc_core::MutexLock lock(&handshaker->mu); - GPR_ASSERT(handshaker->client == nullptr); + CHECK_EQ(handshaker->client, nullptr); handshaker->client = client; if (handshaker->shutdown) { - gpr_log(GPR_INFO, "TSI handshake shutdown"); + LOG(INFO) << "TSI handshake shutdown"; if (error != nullptr) *error = "TSI handshaker shutdown"; return TSI_HANDSHAKE_SHUTDOWN; } @@ -457,8 +457,8 @@ static tsi_result alts_tsi_handshaker_continue_handshaker_next( } if (handshaker->channel == nullptr && handshaker->client_vtable_for_testing == nullptr) { - GPR_ASSERT(grpc_cq_begin_op(grpc_alts_get_shared_resource_dedicated()->cq, - handshaker->client)); + CHECK(grpc_cq_begin_op(grpc_alts_get_shared_resource_dedicated()->cq, + handshaker->client)); } grpc_slice slice = (received_bytes == nullptr || received_bytes_size == 0) ? grpc_empty_slice() @@ -500,7 +500,7 @@ static void alts_tsi_handshaker_create_channel( alts_tsi_handshaker_continue_handshaker_next_args* next_args = static_cast(arg); alts_tsi_handshaker* handshaker = next_args->handshaker; - GPR_ASSERT(handshaker->channel == nullptr); + CHECK_EQ(handshaker->channel, nullptr); grpc_channel_credentials* creds = grpc_insecure_credentials_create(); // Disable retries so that we quickly get a signal when the // handshake server is not reachable. @@ -528,7 +528,7 @@ static tsi_result handshaker_next( size_t* /*bytes_to_send_size*/, tsi_handshaker_result** /*result*/, tsi_handshaker_on_next_done_cb cb, void* user_data, std::string* error) { if (self == nullptr || cb == nullptr) { - gpr_log(GPR_ERROR, "Invalid arguments to handshaker_next()"); + LOG(ERROR) << "Invalid arguments to handshaker_next()"; if (error != nullptr) *error = "invalid argument"; return TSI_INVALID_ARGUMENT; } @@ -537,7 +537,7 @@ static tsi_result handshaker_next( { grpc_core::MutexLock lock(&handshaker->mu); if (handshaker->shutdown) { - gpr_log(GPR_INFO, "TSI handshake shutdown"); + LOG(INFO) << "TSI handshake shutdown"; if (error != nullptr) *error = "handshake shutdown"; return TSI_HANDSHAKE_SHUTDOWN; } @@ -568,7 +568,7 @@ static tsi_result handshaker_next( tsi_result ok = alts_tsi_handshaker_continue_handshaker_next( handshaker, received_bytes, received_bytes_size, cb, user_data, error); if (ok != TSI_OK) { - gpr_log(GPR_ERROR, "Failed to schedule ALTS handshaker requests"); + LOG(ERROR) << "Failed to schedule ALTS handshaker requests"; return ok; } } @@ -592,7 +592,7 @@ static tsi_result handshaker_next_dedicated( } static void handshaker_shutdown(tsi_handshaker* self) { - GPR_ASSERT(self != nullptr); + CHECK_NE(self, nullptr); alts_tsi_handshaker* handshaker = reinterpret_cast(self); grpc_core::MutexLock lock(&handshaker->mu); @@ -638,7 +638,7 @@ static const tsi_handshaker_vtable handshaker_vtable_dedicated = { handshaker_shutdown}; bool alts_tsi_handshaker_has_shutdown(alts_tsi_handshaker* handshaker) { - GPR_ASSERT(handshaker != nullptr); + CHECK_NE(handshaker, nullptr); grpc_core::MutexLock lock(&handshaker->mu); return handshaker->shutdown; } @@ -650,7 +650,7 @@ tsi_result alts_tsi_handshaker_create( size_t user_specified_max_frame_size) { if (handshaker_service_url == nullptr || self == nullptr || options == nullptr || (is_client && target_name == nullptr)) { - gpr_log(GPR_ERROR, "Invalid arguments to alts_tsi_handshaker_create()"); + LOG(ERROR) << "Invalid arguments to alts_tsi_handshaker_create()"; return TSI_INVALID_ARGUMENT; } bool use_dedicated_cq = interested_parties == nullptr; @@ -676,7 +676,8 @@ tsi_result alts_tsi_handshaker_create( void alts_tsi_handshaker_result_set_unused_bytes(tsi_handshaker_result* result, grpc_slice* recv_bytes, size_t bytes_consumed) { - GPR_ASSERT(recv_bytes != nullptr && result != nullptr); + CHECK(recv_bytes != nullptr); + CHECK_NE(result, nullptr); if (GRPC_SLICE_LENGTH(*recv_bytes) == bytes_consumed) { return; } @@ -695,19 +696,19 @@ namespace internal { bool alts_tsi_handshaker_get_has_sent_start_message_for_testing( alts_tsi_handshaker* handshaker) { - GPR_ASSERT(handshaker != nullptr); + CHECK_NE(handshaker, nullptr); return handshaker->has_sent_start_message; } void alts_tsi_handshaker_set_client_vtable_for_testing( alts_tsi_handshaker* handshaker, alts_handshaker_client_vtable* vtable) { - GPR_ASSERT(handshaker != nullptr); + CHECK_NE(handshaker, nullptr); handshaker->client_vtable_for_testing = vtable; } bool alts_tsi_handshaker_get_is_client_for_testing( alts_tsi_handshaker* handshaker) { - GPR_ASSERT(handshaker != nullptr); + CHECK_NE(handshaker, nullptr); return handshaker->is_client; } diff --git a/src/core/tsi/alts/handshaker/alts_tsi_utils.cc b/src/core/tsi/alts/handshaker/alts_tsi_utils.cc index 762af6d2679..0c4325844bd 100644 --- a/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +++ b/src/core/tsi/alts/handshaker/alts_tsi_utils.cc @@ -18,6 +18,9 @@ #include "src/core/tsi/alts/handshaker/alts_tsi_utils.h" +#include "absl/log/check.h" +#include "absl/log/log.h" + #include #include @@ -43,8 +46,8 @@ tsi_result alts_tsi_utils_convert_to_tsi_result(grpc_status_code code) { grpc_gcp_HandshakerResp* alts_tsi_utils_deserialize_response( grpc_byte_buffer* resp_buffer, upb_Arena* arena) { - GPR_ASSERT(resp_buffer != nullptr); - GPR_ASSERT(arena != nullptr); + CHECK_NE(resp_buffer, nullptr); + CHECK_NE(arena, nullptr); grpc_byte_buffer_reader bbr; grpc_byte_buffer_reader_init(&bbr, resp_buffer); grpc_slice slice = grpc_byte_buffer_reader_readall(&bbr); @@ -57,7 +60,7 @@ grpc_gcp_HandshakerResp* alts_tsi_utils_deserialize_response( grpc_core::CSliceUnref(slice); grpc_byte_buffer_reader_destroy(&bbr); if (resp == nullptr) { - gpr_log(GPR_ERROR, "grpc_gcp_handshaker_resp_decode() failed"); + LOG(ERROR) << "grpc_gcp_handshaker_resp_decode() failed"; return nullptr; } return resp; diff --git a/src/core/tsi/alts/handshaker/transport_security_common_api.cc b/src/core/tsi/alts/handshaker/transport_security_common_api.cc index bb3c209a711..79fafc8f0af 100644 --- a/src/core/tsi/alts/handshaker/transport_security_common_api.cc +++ b/src/core/tsi/alts/handshaker/transport_security_common_api.cc @@ -18,6 +18,7 @@ #include "src/core/tsi/alts/handshaker/transport_security_common_api.h" +#include "absl/log/log.h" #include "upb/mem/arena.hpp" #include @@ -100,7 +101,7 @@ bool grpc_gcp_rpc_protocol_versions_decode( reinterpret_cast(GRPC_SLICE_START_PTR(slice)), GRPC_SLICE_LENGTH(slice), arena.ptr()); if (versions_msg == nullptr) { - gpr_log(GPR_ERROR, "cannot deserialize RpcProtocolVersions message"); + LOG(ERROR) << "cannot deserialize RpcProtocolVersions message"; return false; } grpc_gcp_rpc_protocol_versions_assign_from_upb(versions, versions_msg); diff --git a/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc b/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc index 01cf48f635a..8d9a98dbc45 100644 --- a/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +++ b/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc @@ -20,6 +20,9 @@ #include +#include "absl/log/check.h" +#include "absl/log/log.h" + #include #include #include @@ -67,7 +70,7 @@ static tsi_result alts_grpc_integrity_only_extra_copy_protect( grpc_status_code status = alts_iovec_record_protocol_integrity_only_protect( rp->iovec_rp, rp->iovec_buf, 1, header_iovec, tag_iovec, &error_details); if (status != GRPC_STATUS_OK) { - gpr_log(GPR_ERROR, "Failed to protect, %s", error_details); + LOG(ERROR) << "Failed to protect, " << error_details; gpr_free(error_details); return TSI_INTERNAL_ERROR; } @@ -107,7 +110,7 @@ static tsi_result alts_grpc_integrity_only_protect( rp->iovec_rp, rp->iovec_buf, unprotected_slices->count, header_iovec, tag_iovec, &error_details); if (status != GRPC_STATUS_OK) { - gpr_log(GPR_ERROR, "Failed to protect, %s", error_details); + LOG(ERROR) << "Failed to protect, " << error_details; gpr_free(error_details); return TSI_INTERNAL_ERROR; } @@ -130,7 +133,7 @@ static tsi_result alts_grpc_integrity_only_unprotect( return TSI_INVALID_ARGUMENT; } if (protected_slices->length < rp->header_length + rp->tag_length) { - gpr_log(GPR_ERROR, "Protected slices do not have sufficient data."); + LOG(ERROR) << "Protected slices do not have sufficient data."; return TSI_INVALID_ARGUMENT; } // In this method, rp points to alts_grpc_record_protocol struct @@ -142,14 +145,14 @@ static tsi_result alts_grpc_integrity_only_unprotect( grpc_slice_buffer_reset_and_unref(&rp->header_sb); grpc_slice_buffer_move_first(protected_slices, rp->header_length, &rp->header_sb); - GPR_ASSERT(rp->header_sb.length == rp->header_length); + CHECK(rp->header_sb.length == rp->header_length); iovec_t header_iovec = alts_grpc_record_protocol_get_header_iovec(rp); // Moves protected slices data to data_sb and leaves the remaining tag. grpc_slice_buffer_reset_and_unref(&integrity_only_record_protocol->data_sb); grpc_slice_buffer_move_first(protected_slices, protected_slices->length - rp->tag_length, &integrity_only_record_protocol->data_sb); - GPR_ASSERT(protected_slices->length == rp->tag_length); + CHECK(protected_slices->length == rp->tag_length); iovec_t tag_iovec = {nullptr, rp->tag_length}; if (protected_slices->count == 1) { tag_iovec.iov_base = GRPC_SLICE_START_PTR(protected_slices->slices[0]); @@ -169,7 +172,7 @@ static tsi_result alts_grpc_integrity_only_unprotect( integrity_only_record_protocol->data_sb.count, header_iovec, tag_iovec, &error_details); if (status != GRPC_STATUS_OK) { - gpr_log(GPR_ERROR, "Failed to unprotect, %s", error_details); + LOG(ERROR) << "Failed to unprotect, " << error_details; gpr_free(error_details); return TSI_INTERNAL_ERROR; } diff --git a/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.cc b/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.cc index 768c8b775b7..a9aac4948a9 100644 --- a/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.cc +++ b/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.cc @@ -18,6 +18,8 @@ #include "src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.h" +#include "absl/log/log.h" + #include #include #include @@ -60,7 +62,7 @@ static tsi_result alts_grpc_privacy_integrity_protect( rp->iovec_rp, rp->iovec_buf, unprotected_slices->count, protected_iovec, &error_details); if (status != GRPC_STATUS_OK) { - gpr_log(GPR_ERROR, "Failed to protect, %s", error_details); + LOG(ERROR) << "Failed to protect, " << error_details; gpr_free(error_details); grpc_core::CSliceUnref(protected_slice); return TSI_INTERNAL_ERROR; @@ -84,7 +86,7 @@ static tsi_result alts_grpc_privacy_integrity_unprotect( // Allocates memory for output frame. In privacy-integrity unprotect, the // unprotected data are stored in a newly allocated buffer. if (protected_slices->length < rp->header_length + rp->tag_length) { - gpr_log(GPR_ERROR, "Protected slices do not have sufficient data."); + LOG(ERROR) << "Protected slices do not have sufficient data."; return TSI_INVALID_ARGUMENT; } size_t unprotected_frame_size = @@ -105,7 +107,7 @@ static tsi_result alts_grpc_privacy_integrity_unprotect( rp->iovec_rp, header_iovec, rp->iovec_buf, protected_slices->count, unprotected_iovec, &error_details); if (status != GRPC_STATUS_OK) { - gpr_log(GPR_ERROR, "Failed to unprotect, %s", error_details); + LOG(ERROR) << "Failed to unprotect, " << error_details; gpr_free(error_details); grpc_core::CSliceUnref(unprotected_slice); return TSI_INTERNAL_ERROR; diff --git a/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc b/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc index c03dde032d0..da2eaf4bfad 100644 --- a/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +++ b/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc @@ -20,21 +20,24 @@ #include +#include "absl/log/check.h" + #include #include #include -#include "src/core/lib/gpr/useful.h" #include "src/core/lib/gprpp/crash.h" #include "src/core/lib/iomgr/exec_ctx.h" #include "src/core/lib/slice/slice_internal.h" +#include "src/core/util/useful.h" const size_t kInitialIovecBufferSize = 8; // Makes sure iovec_buf in alts_grpc_record_protocol is large enough. static void ensure_iovec_buf_size(alts_grpc_record_protocol* rp, const grpc_slice_buffer* sb) { - GPR_ASSERT(rp != nullptr && sb != nullptr); + CHECK(rp != nullptr); + CHECK_NE(sb, nullptr); if (sb->count <= rp->iovec_buf_length) { return; } @@ -49,7 +52,8 @@ static void ensure_iovec_buf_size(alts_grpc_record_protocol* rp, void alts_grpc_record_protocol_convert_slice_buffer_to_iovec( alts_grpc_record_protocol* rp, const grpc_slice_buffer* sb) { - GPR_ASSERT(rp != nullptr && sb != nullptr); + CHECK(rp != nullptr); + CHECK_NE(sb, nullptr); ensure_iovec_buf_size(rp, sb); for (size_t i = 0; i < sb->count; i++) { rp->iovec_buf[i].iov_base = GRPC_SLICE_START_PTR(sb->slices[i]); @@ -59,7 +63,8 @@ void alts_grpc_record_protocol_convert_slice_buffer_to_iovec( void alts_grpc_record_protocol_copy_slice_buffer(const grpc_slice_buffer* src, unsigned char* dst) { - GPR_ASSERT(src != nullptr && dst != nullptr); + CHECK(src != nullptr); + CHECK_NE(dst, nullptr); for (size_t i = 0; i < src->count; i++) { size_t slice_length = GRPC_SLICE_LENGTH(src->slices[i]); memcpy(dst, GRPC_SLICE_START_PTR(src->slices[i]), slice_length); diff --git a/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc b/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc index 617a19b7f3d..3d29dc6de9e 100644 --- a/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +++ b/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc @@ -23,6 +23,9 @@ #include #include +#include "absl/log/check.h" +#include "absl/log/log.h" + #include #include #include @@ -84,14 +87,14 @@ static bool read_frame_size(const grpc_slice_buffer* sb, remaining -= slice_length; } } - GPR_ASSERT(remaining == 0); + CHECK_EQ(remaining, 0u); // Gets little-endian frame size. uint32_t frame_size = (static_cast(frame_size_buffer[3]) << 24) | (static_cast(frame_size_buffer[2]) << 16) | (static_cast(frame_size_buffer[1]) << 8) | static_cast(frame_size_buffer[0]); if (frame_size > kMaxFrameLength) { - gpr_log(GPR_ERROR, "Frame size is larger than maximum frame size"); + LOG(ERROR) << "Frame size is larger than maximum frame size"; return false; } // Returns frame size including frame length field. @@ -122,7 +125,7 @@ static tsi_result create_alts_grpc_record_protocol( kAesGcmTagLength, &crypter, &error_details); if (status != GRPC_STATUS_OK) { - gpr_log(GPR_ERROR, "Failed to create AEAD crypter, %s", error_details); + LOG(ERROR) << "Failed to create AEAD crypter, " << error_details; gpr_free(error_details); return TSI_INTERNAL_ERROR; } @@ -151,7 +154,7 @@ static tsi_result alts_zero_copy_grpc_protector_protect( grpc_slice_buffer* protected_slices) { if (self == nullptr || unprotected_slices == nullptr || protected_slices == nullptr) { - gpr_log(GPR_ERROR, "Invalid nullptr arguments to zero-copy grpc protect."); + LOG(ERROR) << "Invalid nullptr arguments to zero-copy grpc protect."; return TSI_INVALID_ARGUMENT; } alts_zero_copy_grpc_protector* protector = @@ -294,7 +297,7 @@ tsi_result alts_zero_copy_grpc_protector_create( impl->max_unprotected_data_size = alts_grpc_record_protocol_max_unprotected_data_size( impl->record_protocol, max_protected_frame_size_to_set); - GPR_ASSERT(impl->max_unprotected_data_size > 0); + CHECK_GT(impl->max_unprotected_data_size, 0u); // Allocates internal slice buffers. grpc_slice_buffer_init(&impl->unprotected_staging_sb); grpc_slice_buffer_init(&impl->protected_sb); diff --git a/src/core/tsi/fake_transport_security.cc b/src/core/tsi/fake_transport_security.cc index e612af27d3c..2fffb042bb8 100644 --- a/src/core/tsi/fake_transport_security.cc +++ b/src/core/tsi/fake_transport_security.cc @@ -21,15 +21,18 @@ #include #include +#include "absl/log/check.h" +#include "absl/log/log.h" + #include #include #include -#include "src/core/lib/gpr/useful.h" #include "src/core/lib/gprpp/crash.h" #include "src/core/lib/gprpp/memory.h" #include "src/core/lib/slice/slice_internal.h" #include "src/core/tsi/transport_security_grpc.h" +#include "src/core/tsi/transport_security_interface.h" // --- Constants. --- #define TSI_FAKE_FRAME_HEADER_SIZE 4 @@ -89,7 +92,7 @@ static const char* tsi_fake_handshake_message_strings[] = { static const char* tsi_fake_handshake_message_to_string(int msg) { if (msg < 0 || msg >= TSI_FAKE_HANDSHAKE_MESSAGE_MAX) { - gpr_log(GPR_ERROR, "Invalid message %d", msg); + LOG(ERROR) << "Invalid message " << msg; return "UNKNOWN"; } return tsi_fake_handshake_message_strings[msg]; @@ -105,7 +108,7 @@ static tsi_result tsi_fake_handshake_message_from_string( return TSI_OK; } } - gpr_log(GPR_ERROR, "Invalid handshake message."); + LOG(ERROR) << "Invalid handshake message."; if (error != nullptr) *error = "invalid handshake message"; return TSI_DATA_CORRUPTED; } @@ -124,7 +127,8 @@ static void store32_little_endian(uint32_t value, unsigned char* buf) { } static uint32_t read_frame_size(const grpc_slice_buffer* sb) { - GPR_ASSERT(sb != nullptr && sb->length >= TSI_FAKE_FRAME_HEADER_SIZE); + CHECK(sb != nullptr); + CHECK(sb->length >= TSI_FAKE_FRAME_HEADER_SIZE); uint8_t frame_size_buffer[TSI_FAKE_FRAME_HEADER_SIZE]; uint8_t* buf = frame_size_buffer; // Copies the first 4 bytes to a temporary buffer. @@ -141,7 +145,7 @@ static uint32_t read_frame_size(const grpc_slice_buffer* sb) { remaining -= slice_length; } } - GPR_ASSERT(remaining == 0); + CHECK_EQ(remaining, 0u); return load32_little_endian(frame_size_buffer); } @@ -309,8 +313,8 @@ static tsi_result fake_protector_protect(tsi_frame_protector* self, result = tsi_fake_frame_decode(frame_header, &written_in_frame_size, frame, /*error=*/nullptr); if (result != TSI_INCOMPLETE_DATA) { - gpr_log(GPR_ERROR, "tsi_fake_frame_decode returned %s", - tsi_result_to_string(result)); + LOG(ERROR) << "tsi_fake_frame_decode returned " + << tsi_result_to_string(result); return result; } } @@ -466,7 +470,7 @@ static tsi_result fake_zero_copy_grpc_protector_unprotect( if (impl->parsed_frame_size == 0) { impl->parsed_frame_size = read_frame_size(&impl->protected_sb); if (impl->parsed_frame_size <= 4) { - gpr_log(GPR_ERROR, "Invalid frame size."); + LOG(ERROR) << "Invalid frame size."; return TSI_DATA_CORRUPTED; } } @@ -650,7 +654,7 @@ static tsi_result fake_handshaker_get_bytes_to_send_to_peer( impl->next_message_to_send == TSI_FAKE_HANDSHAKE_MESSAGE_MAX) { // We're done. if (GRPC_TRACE_FLAG_ENABLED(tsi_tracing_enabled)) { - gpr_log(GPR_INFO, "Server is done."); + LOG(INFO) << "Server is done."; } impl->result = TSI_OK; } else { @@ -691,15 +695,15 @@ static tsi_result fake_handshaker_process_bytes_from_peer( tsi_fake_handshake_message_to_string(expected_msg)); } if (GRPC_TRACE_FLAG_ENABLED(tsi_tracing_enabled)) { - gpr_log(GPR_INFO, "%s received %s.", impl->is_client ? "Client" : "Server", - tsi_fake_handshake_message_to_string(received_msg)); + LOG(INFO) << (impl->is_client ? "Client" : "Server") << " received " + << tsi_fake_handshake_message_to_string(received_msg); } tsi_fake_frame_reset(&impl->incoming_frame, 0 /* needs_draining */); impl->needs_incoming_message = 0; if (impl->next_message_to_send == TSI_FAKE_HANDSHAKE_MESSAGE_MAX) { // We're done. if (GRPC_TRACE_FLAG_ENABLED(tsi_tracing_enabled)) { - gpr_log(GPR_INFO, "%s is done.", impl->is_client ? "Client" : "Server"); + LOG(INFO) << (impl->is_client ? "Client" : "Server") << " is done."; } impl->result = TSI_OK; } diff --git a/src/core/tsi/local_transport_security.cc b/src/core/tsi/local_transport_security.cc index 944aee67145..30a2ef7f670 100644 --- a/src/core/tsi/local_transport_security.cc +++ b/src/core/tsi/local_transport_security.cc @@ -22,8 +22,9 @@ #include #include +#include "absl/log/log.h" + #include -#include #include #include @@ -68,7 +69,7 @@ tsi_result handshaker_result_get_unused_bytes(const tsi_handshaker_result* self, const unsigned char** bytes, size_t* bytes_size) { if (self == nullptr || bytes == nullptr || bytes_size == nullptr) { - gpr_log(GPR_ERROR, "Invalid arguments to get_unused_bytes()"); + LOG(ERROR) << "Invalid arguments to get_unused_bytes()"; return TSI_INVALID_ARGUMENT; } auto* result = reinterpret_cast( @@ -101,7 +102,7 @@ tsi_result create_handshaker_result(const unsigned char* received_bytes, size_t received_bytes_size, tsi_handshaker_result** self) { if (self == nullptr) { - gpr_log(GPR_ERROR, "Invalid arguments to create_handshaker_result()"); + LOG(ERROR) << "Invalid arguments to create_handshaker_result()"; return TSI_INVALID_ARGUMENT; } local_tsi_handshaker_result* result = @@ -128,7 +129,7 @@ tsi_result handshaker_next(tsi_handshaker* self, tsi_handshaker_on_next_done_cb /*cb*/, void* /*user_data*/, std::string* error) { if (self == nullptr) { - gpr_log(GPR_ERROR, "Invalid arguments to handshaker_next()"); + LOG(ERROR) << "Invalid arguments to handshaker_next()"; if (error != nullptr) *error = "invalid argument"; return TSI_INVALID_ARGUMENT; } @@ -164,7 +165,7 @@ const tsi_handshaker_vtable handshaker_vtable = { tsi_result tsi_local_handshaker_create(tsi_handshaker** self) { if (self == nullptr) { - gpr_log(GPR_ERROR, "Invalid arguments to local_tsi_handshaker_create()"); + LOG(ERROR) << "Invalid arguments to local_tsi_handshaker_create()"; return TSI_INVALID_ARGUMENT; } local_tsi_handshaker* handshaker = grpc_core::Zalloc(); diff --git a/src/core/tsi/ssl/key_logging/ssl_key_logging.cc b/src/core/tsi/ssl/key_logging/ssl_key_logging.cc index d290ed30feb..e1a496cc519 100644 --- a/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +++ b/src/core/tsi/ssl/key_logging/ssl_key_logging.cc @@ -16,6 +16,8 @@ #include +#include "absl/log/check.h" + #include #include @@ -47,8 +49,8 @@ TlsSessionKeyLoggerCache::TlsSessionKeyLogger::TlsSessionKeyLogger( grpc_core::RefCountedPtr cache) : tls_session_key_log_file_path_(std::move(tls_session_key_log_file_path)), cache_(std::move(cache)) { - GPR_ASSERT(!tls_session_key_log_file_path_.empty()); - GPR_ASSERT(cache_ != nullptr); + CHECK(!tls_session_key_log_file_path_.empty()); + CHECK(cache_ != nullptr); fd_ = fopen(tls_session_key_log_file_path_.c_str(), "a"); if (fd_ == nullptr) { grpc_error_handle error = GRPC_OS_ERROR(errno, "fopen"); @@ -109,7 +111,7 @@ TlsSessionKeyLoggerCache::~TlsSessionKeyLoggerCache() { grpc_core::RefCountedPtr TlsSessionKeyLoggerCache::Get( std::string tls_session_key_log_file_path) { gpr_once_init(&g_cache_mutex_init, do_cache_mutex_init); - GPR_DEBUG_ASSERT(g_tls_session_key_log_cache_mu != nullptr); + DCHECK_NE(g_tls_session_key_log_cache_mu, nullptr); if (tls_session_key_log_file_path.empty()) { return nullptr; } diff --git a/src/core/tsi/ssl/session_cache/ssl_session_cache.cc b/src/core/tsi/ssl/session_cache/ssl_session_cache.cc index 26f751fd600..de89e3e85fe 100644 --- a/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +++ b/src/core/tsi/ssl/session_cache/ssl_session_cache.cc @@ -18,6 +18,9 @@ #include "src/core/tsi/ssl/session_cache/ssl_session_cache.h" +#include "absl/log/check.h" +#include "absl/log/log.h" + #include #include #include @@ -62,9 +65,8 @@ class SslSessionLRUCache::Node { SslSessionLRUCache::SslSessionLRUCache(size_t capacity) : capacity_(capacity) { if (capacity == 0) { - gpr_log( - GPR_ERROR, - "SslSessionLRUCache capacity is zero. SSL sessions cannot be resumed."); + LOG(ERROR) << "SslSessionLRUCache capacity is zero. SSL sessions cannot be " + "resumed."; } } @@ -98,7 +100,7 @@ SslSessionLRUCache::Node* SslSessionLRUCache::FindLocked( void SslSessionLRUCache::Put(const char* key, SslSessionPtr session) { if (session == nullptr) { - gpr_log(GPR_ERROR, "Attempted to put null SSL session in session cache."); + LOG(ERROR) << "Attempted to put null SSL session in session cache."; return; } grpc_core::MutexLock lock(&lock_); @@ -112,7 +114,7 @@ void SslSessionLRUCache::Put(const char* key, SslSessionPtr session) { entry_by_key_.emplace(key, node); AssertInvariants(); if (use_order_list_size_ > capacity_) { - GPR_ASSERT(use_order_list_tail_); + CHECK(use_order_list_tail_); node = use_order_list_tail_; Remove(node); // Order matters, key is destroyed after deleting node. @@ -143,7 +145,7 @@ void SslSessionLRUCache::Remove(SslSessionLRUCache::Node* node) { } else { node->next_->prev_ = node->prev_; } - GPR_ASSERT(use_order_list_size_ >= 1); + CHECK_GE(use_order_list_size_, 1u); use_order_list_size_--; } @@ -169,16 +171,16 @@ void SslSessionLRUCache::AssertInvariants() { Node* current = use_order_list_head_; while (current != nullptr) { size++; - GPR_ASSERT(current->prev_ == prev); + CHECK(current->prev_ == prev); auto it = entry_by_key_.find(current->key()); - GPR_ASSERT(it != entry_by_key_.end()); - GPR_ASSERT(it->second == current); + CHECK(it != entry_by_key_.end()); + CHECK(it->second == current); prev = current; current = current->next_; } - GPR_ASSERT(prev == use_order_list_tail_); - GPR_ASSERT(size == use_order_list_size_); - GPR_ASSERT(entry_by_key_.size() == use_order_list_size_); + CHECK(prev == use_order_list_tail_); + CHECK(size == use_order_list_size_); + CHECK(entry_by_key_.size() == use_order_list_size_); } #else void SslSessionLRUCache::AssertInvariants() {} diff --git a/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc b/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc index ba797476e24..ad427950e1d 100644 --- a/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +++ b/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc @@ -15,8 +15,8 @@ // limitations under the License. // // +#include "absl/log/check.h" -#include #include #include "src/core/lib/gprpp/crash.h" @@ -43,11 +43,11 @@ class OpenSslCachedSession : public SslCachedSession { public: OpenSslCachedSession(SslSessionPtr session) { int size = i2d_SSL_SESSION(session.get(), nullptr); - GPR_ASSERT(size > 0); + CHECK_GT(size, 0); grpc_slice slice = grpc_slice_malloc(size_t(size)); unsigned char* start = GRPC_SLICE_START_PTR(slice); int second_size = i2d_SSL_SESSION(session.get(), &start); - GPR_ASSERT(size == second_size); + CHECK(size == second_size); serialized_session_ = slice; } diff --git a/src/core/tsi/ssl_transport_security.cc b/src/core/tsi/ssl_transport_security.cc index d705abc1c2c..6ec4e0a2546 100644 --- a/src/core/tsi/ssl_transport_security.cc +++ b/src/core/tsi/ssl_transport_security.cc @@ -23,6 +23,8 @@ #include +#include "src/core/tsi/transport_security_interface.h" + // TODO(jboeuf): refactor inet_ntop into a portability header. // Note: for whomever reads this and tries to refactor this, this // can't be in grpc, it has to be in gpr. @@ -45,6 +47,8 @@ #include #include +#include "absl/log/check.h" +#include "absl/log/log.h" #include "absl/strings/match.h" #include "absl/strings/str_cat.h" #include "absl/strings/string_view.h" @@ -52,12 +56,10 @@ #include #include #include -#include #include #include #include -#include "src/core/lib/gpr/useful.h" #include "src/core/lib/gprpp/crash.h" #include "src/core/lib/security/credentials/tls/grpc_tls_crl_provider.h" #include "src/core/tsi/ssl/key_logging/ssl_key_logging.h" @@ -65,6 +67,7 @@ #include "src/core/tsi/ssl_transport_security_utils.h" #include "src/core/tsi/ssl_types.h" #include "src/core/tsi/transport_security.h" +#include "src/core/util/useful.h" // --- Constants. --- @@ -194,7 +197,7 @@ static void init_openssl(void) { #if OPENSSL_VERSION_NUMBER < 0x10100000 if (!CRYPTO_get_locking_callback()) { int num_locks = CRYPTO_num_locks(); - GPR_ASSERT(num_locks > 0); + CHECK_GT(num_locks, 0); g_openssl_mutexes = static_cast( gpr_malloc(static_cast(num_locks) * sizeof(gpr_mu))); for (int i = 0; i < num_locks; i++) { @@ -203,20 +206,20 @@ static void init_openssl(void) { CRYPTO_set_locking_callback(openssl_locking_cb); CRYPTO_set_id_callback(openssl_thread_id_cb); } else { - gpr_log(GPR_INFO, "OpenSSL callback has already been set."); + LOG(INFO) << "OpenSSL callback has already been set."; } #endif g_ssl_ctx_ex_factory_index = SSL_CTX_get_ex_new_index(0, nullptr, nullptr, nullptr, nullptr); - GPR_ASSERT(g_ssl_ctx_ex_factory_index != -1); + CHECK_NE(g_ssl_ctx_ex_factory_index, -1); g_ssl_ctx_ex_crl_provider_index = SSL_CTX_get_ex_new_index(0, nullptr, nullptr, nullptr, nullptr); - GPR_ASSERT(g_ssl_ctx_ex_crl_provider_index != -1); + CHECK_NE(g_ssl_ctx_ex_crl_provider_index, -1); g_ssl_ex_verified_root_cert_index = SSL_get_ex_new_index( 0, nullptr, nullptr, nullptr, verified_root_cert_free); - GPR_ASSERT(g_ssl_ex_verified_root_cert_index != -1); + CHECK_NE(g_ssl_ex_verified_root_cert_index, -1); } // --- Ssl utils. --- @@ -233,7 +236,7 @@ static void ssl_log_where_info(const SSL* ssl, int where, int flag, // Used for debugging. TODO(jboeuf): Remove when code is mature enough. static void ssl_info_callback(const SSL* ssl, int where, int ret) { if (ret == 0) { - gpr_log(GPR_ERROR, "ssl_info_callback: error occurred.\n"); + LOG(ERROR) << "ssl_info_callback: error occurred.\n"; return; } @@ -276,30 +279,28 @@ static tsi_result ssl_get_x509_common_name(X509* cert, unsigned char** utf8, X509_NAME* subject_name = X509_get_subject_name(cert); int utf8_returned_size = 0; if (subject_name == nullptr) { - gpr_log(GPR_DEBUG, "Could not get subject name from certificate."); + VLOG(2) << "Could not get subject name from certificate."; return TSI_NOT_FOUND; } common_name_index = X509_NAME_get_index_by_NID(subject_name, NID_commonName, -1); if (common_name_index == -1) { - gpr_log(GPR_DEBUG, - "Could not get common name of subject from certificate."); + VLOG(2) << "Could not get common name of subject from certificate."; return TSI_NOT_FOUND; } common_name_entry = X509_NAME_get_entry(subject_name, common_name_index); if (common_name_entry == nullptr) { - gpr_log(GPR_ERROR, "Could not get common name entry from certificate."); + LOG(ERROR) << "Could not get common name entry from certificate."; return TSI_INTERNAL_ERROR; } common_name_asn1 = X509_NAME_ENTRY_get_data(common_name_entry); if (common_name_asn1 == nullptr) { - gpr_log(GPR_ERROR, - "Could not get common name entry asn1 from certificate."); + LOG(ERROR) << "Could not get common name entry asn1 from certificate."; return TSI_INTERNAL_ERROR; } utf8_returned_size = ASN1_STRING_to_UTF8(utf8, common_name_asn1); if (utf8_returned_size < 0) { - gpr_log(GPR_ERROR, "Could not extract utf8 from asn1 string."); + LOG(ERROR) << "Could not extract utf8 from asn1 string."; return TSI_OUT_OF_RESOURCES; } *utf8_size = static_cast(utf8_returned_size); @@ -335,7 +336,7 @@ static tsi_result peer_property_from_x509_subject(X509* cert, bool is_verified_root_cert) { X509_NAME* subject_name = X509_get_subject_name(cert); if (subject_name == nullptr) { - gpr_log(GPR_INFO, "Could not get subject name from certificate."); + LOG(INFO) << "Could not get subject name from certificate."; return TSI_NOT_FOUND; } BIO* bio = BIO_new(BIO_s_mem()); @@ -343,7 +344,7 @@ static tsi_result peer_property_from_x509_subject(X509* cert, char* contents; long len = BIO_get_mem_data(bio, &contents); if (len < 0) { - gpr_log(GPR_ERROR, "Could not get subject entry from certificate."); + LOG(ERROR) << "Could not get subject entry from certificate."; BIO_free(bio); return TSI_INTERNAL_ERROR; } @@ -408,7 +409,7 @@ static tsi_result add_subject_alt_names_properties_to_peer( property_name = TSI_X509_URI_PEER_PROPERTY; } if (name_size < 0) { - gpr_log(GPR_ERROR, "Could not get utf8 from asn1 string."); + LOG(ERROR) << "Could not get utf8 from asn1 string."; result = TSI_INTERNAL_ERROR; break; } @@ -434,14 +435,14 @@ static tsi_result add_subject_alt_names_properties_to_peer( } else if (subject_alt_name->d.iPAddress->length == 16) { af = AF_INET6; } else { - gpr_log(GPR_ERROR, "SAN IP Address contained invalid IP"); + LOG(ERROR) << "SAN IP Address contained invalid IP"; result = TSI_INTERNAL_ERROR; break; } const char* name = inet_ntop(af, subject_alt_name->d.iPAddress->data, ntop_buf, INET6_ADDRSTRLEN); if (name == nullptr) { - gpr_log(GPR_ERROR, "Could not get IP string from asn1 octet."); + LOG(ERROR) << "Could not get IP string from asn1 octet."; result = TSI_INTERNAL_ERROR; break; } @@ -475,7 +476,7 @@ static tsi_result peer_from_x509(X509* cert, int include_certificate_type, : 0; size_t property_count; tsi_result result; - GPR_ASSERT(subject_alt_name_count >= 0); + CHECK_GE(subject_alt_name_count, 0); property_count = (include_certificate_type ? size_t{1} : 0) + 3 /* subject, common name, certificate */ + static_cast(subject_alt_name_count); @@ -530,7 +531,7 @@ static tsi_result peer_from_x509(X509* cert, int include_certificate_type, } if (result != TSI_OK) tsi_peer_destruct(peer); - GPR_ASSERT((int)peer->property_count == current_insert_index); + CHECK((int)peer->property_count == current_insert_index); return result; } @@ -541,7 +542,7 @@ static tsi_result ssl_ctx_use_certificate_chain(SSL_CTX* context, tsi_result result = TSI_OK; X509* certificate = nullptr; BIO* pem; - GPR_ASSERT(pem_cert_chain_size <= INT_MAX); + CHECK_LE(pem_cert_chain_size, static_cast(INT_MAX)); pem = BIO_new_mem_buf(pem_cert_chain, static_cast(pem_cert_chain_size)); if (pem == nullptr) return TSI_OUT_OF_RESOURCES; @@ -604,7 +605,7 @@ static tsi_result ssl_ctx_use_engine_private_key(SSL_CTX* context, } engine_name = static_cast(gpr_zalloc(engine_name_length + 1)); memcpy(engine_name, engine_start, engine_name_length); - gpr_log(GPR_DEBUG, "ENGINE key: %s", engine_name); + VLOG(2) << "ENGINE key: " << engine_name; ENGINE_load_dynamic(); engine = ENGINE_by_id(engine_name); if (engine == nullptr) { @@ -612,7 +613,7 @@ static tsi_result ssl_ctx_use_engine_private_key(SSL_CTX* context, // current working directory. engine = ENGINE_by_id("dynamic"); if (engine == nullptr) { - gpr_log(GPR_ERROR, "Cannot load dynamic engine"); + LOG(ERROR) << "Cannot load dynamic engine"; result = TSI_INVALID_ARGUMENT; break; } @@ -621,29 +622,29 @@ static tsi_result ssl_ctx_use_engine_private_key(SSL_CTX* context, !ENGINE_ctrl_cmd_string(engine, "DIR_ADD", ".", 0) || !ENGINE_ctrl_cmd_string(engine, "LIST_ADD", "1", 0) || !ENGINE_ctrl_cmd_string(engine, "LOAD", NULL, 0)) { - gpr_log(GPR_ERROR, "Cannot find engine"); + LOG(ERROR) << "Cannot find engine"; result = TSI_INVALID_ARGUMENT; break; } } if (!ENGINE_set_default(engine, ENGINE_METHOD_ALL)) { - gpr_log(GPR_ERROR, "ENGINE_set_default with ENGINE_METHOD_ALL failed"); + LOG(ERROR) << "ENGINE_set_default with ENGINE_METHOD_ALL failed"; result = TSI_INVALID_ARGUMENT; break; } if (!ENGINE_init(engine)) { - gpr_log(GPR_ERROR, "ENGINE_init failed"); + LOG(ERROR) << "ENGINE_init failed"; result = TSI_INVALID_ARGUMENT; break; } private_key = ENGINE_load_private_key(engine, key_id, 0, 0); if (private_key == nullptr) { - gpr_log(GPR_ERROR, "ENGINE_load_private_key failed"); + LOG(ERROR) << "ENGINE_load_private_key failed"; result = TSI_INVALID_ARGUMENT; break; } if (!SSL_CTX_use_PrivateKey(context, private_key)) { - gpr_log(GPR_ERROR, "SSL_CTX_use_PrivateKey failed"); + LOG(ERROR) << "SSL_CTX_use_PrivateKey failed"; result = TSI_INVALID_ARGUMENT; break; } @@ -661,7 +662,7 @@ static tsi_result ssl_ctx_use_pem_private_key(SSL_CTX* context, tsi_result result = TSI_OK; EVP_PKEY* private_key = nullptr; BIO* pem; - GPR_ASSERT(pem_key_size <= INT_MAX); + CHECK_LE(pem_key_size, static_cast(INT_MAX)); pem = BIO_new_mem_buf(pem_key, static_cast(pem_key_size)); if (pem == nullptr) return TSI_OUT_OF_RESOURCES; do { @@ -706,7 +707,7 @@ static tsi_result x509_store_load_certs(X509_STORE* cert_store, X509* root = nullptr; X509_NAME* root_name = nullptr; BIO* pem; - GPR_ASSERT(pem_roots_size <= INT_MAX); + CHECK_LE(pem_roots_size, static_cast(INT_MAX)); pem = BIO_new_mem_buf(pem_roots, static_cast(pem_roots_size)); if (cert_store == nullptr) return TSI_INVALID_ARGUMENT; if (pem == nullptr) return TSI_OUT_OF_RESOURCES; @@ -724,7 +725,7 @@ static tsi_result x509_store_load_certs(X509_STORE* cert_store, if (root_names != nullptr) { root_name = X509_get_subject_name(root); if (root_name == nullptr) { - gpr_log(GPR_ERROR, "Could not get name from root certificate."); + LOG(ERROR) << "Could not get name from root certificate."; result = TSI_INVALID_ARGUMENT; break; } @@ -741,7 +742,7 @@ static tsi_result x509_store_load_certs(X509_STORE* cert_store, unsigned long error = ERR_get_error(); if (ERR_GET_LIB(error) != ERR_LIB_X509 || ERR_GET_REASON(error) != X509_R_CERT_ALREADY_IN_HASH_TABLE) { - gpr_log(GPR_ERROR, "Could not add root certificate to ssl context."); + LOG(ERROR) << "Could not add root certificate to ssl context."; result = TSI_INTERNAL_ERROR; break; } @@ -750,7 +751,7 @@ static tsi_result x509_store_load_certs(X509_STORE* cert_store, num_roots++; } if (num_roots == 0) { - gpr_log(GPR_ERROR, "Could not load any root certificate."); + LOG(ERROR) << "Could not load any root certificate."; result = TSI_INVALID_ARGUMENT; } @@ -789,7 +790,7 @@ static tsi_result populate_ssl_context( result = ssl_ctx_use_certificate_chain(context, key_cert_pair->cert_chain, strlen(key_cert_pair->cert_chain)); if (result != TSI_OK) { - gpr_log(GPR_ERROR, "Invalid cert chain file."); + LOG(ERROR) << "Invalid cert chain file."; return result; } } @@ -797,21 +798,21 @@ static tsi_result populate_ssl_context( result = ssl_ctx_use_private_key(context, key_cert_pair->private_key, strlen(key_cert_pair->private_key)); if (result != TSI_OK || !SSL_CTX_check_private_key(context)) { - gpr_log(GPR_ERROR, "Invalid private key."); + LOG(ERROR) << "Invalid private key."; return result != TSI_OK ? result : TSI_INVALID_ARGUMENT; } } } if ((cipher_list != nullptr) && !SSL_CTX_set_cipher_list(context, cipher_list)) { - gpr_log(GPR_ERROR, "Invalid cipher list: %s.", cipher_list); + LOG(ERROR) << "Invalid cipher list: " << cipher_list; return TSI_INVALID_ARGUMENT; } { #if OPENSSL_VERSION_NUMBER < 0x30000000L EC_KEY* ecdh = EC_KEY_new_by_curve_name(NID_X9_62_prime256v1); if (!SSL_CTX_set_tmp_ecdh(context, ecdh)) { - gpr_log(GPR_ERROR, "Could not set ephemeral ECDH key."); + LOG(ERROR) << "Could not set ephemeral ECDH key."; EC_KEY_free(ecdh); return TSI_INTERNAL_ERROR; } @@ -819,7 +820,7 @@ static tsi_result populate_ssl_context( EC_KEY_free(ecdh); #else if (!SSL_CTX_set1_groups(context, kSslEcCurveNames, 1)) { - gpr_log(GPR_ERROR, "Could not set ephemeral ECDH key."); + LOG(ERROR) << "Could not set ephemeral ECDH key."; return TSI_INTERNAL_ERROR; } SSL_CTX_set_options(context, SSL_OP_SINGLE_ECDH_USE); @@ -839,7 +840,7 @@ tsi_result tsi_ssl_extract_x509_subject_names_from_pem_cert( cert = PEM_read_bio_X509(pem, nullptr, nullptr, const_cast("")); if (cert == nullptr) { - gpr_log(GPR_ERROR, "Invalid certificate"); + LOG(ERROR) << "Invalid certificate"; result = TSI_INVALID_ARGUMENT; } else { result = peer_from_x509(cert, 0, peer); @@ -862,8 +863,7 @@ static tsi_result build_alpn_protocol_name_list( size_t length = alpn_protocols[i] == nullptr ? 0 : strlen(alpn_protocols[i]); if (length == 0 || length > 255) { - gpr_log(GPR_ERROR, "Invalid protocol name length: %d.", - static_cast(length)); + LOG(ERROR) << "Invalid protocol name length: " << length; return TSI_INVALID_ARGUMENT; } *protocol_name_list_length += length + 1; @@ -892,13 +892,12 @@ static tsi_result build_alpn_protocol_name_list( static int verify_cb(int ok, X509_STORE_CTX* ctx) { int cert_error = X509_STORE_CTX_get_error(ctx); if (cert_error == X509_V_ERR_UNABLE_TO_GET_CRL) { - gpr_log(GPR_INFO, - "Certificate verification failed to find relevant CRL file. " - "Ignoring error."); + LOG(INFO) << "Certificate verification failed to find relevant CRL file. " + "Ignoring error."; return 1; } if (cert_error != 0) { - gpr_log(GPR_ERROR, "Certificate verify failed with code %d", cert_error); + LOG(ERROR) << "Certificate verify failed with code " << cert_error; } return ok; } @@ -942,8 +941,8 @@ static int RootCertExtractCallback(X509_STORE_CTX* ctx, void* /*arg*/) { if (ssl_index < 0) { char err_str[256]; ERR_error_string_n(ERR_get_error(), err_str, sizeof(err_str)); - gpr_log(GPR_ERROR, - "error getting the SSL index from the X509_STORE_CTX: %s", err_str); + LOG(ERROR) << "error getting the SSL index from the X509_STORE_CTX: " + << err_str; return ret; } SSL* ssl = static_cast(X509_STORE_CTX_get_ex_data(ctx, ssl_index)); @@ -961,7 +960,7 @@ static int RootCertExtractCallback(X509_STORE_CTX* ctx, void* /*arg*/) { int success = SSL_set_ex_data(ssl, g_ssl_ex_verified_root_cert_index, root_cert); if (success == 0) { - gpr_log(GPR_INFO, "Could not set verified root cert in SSL's ex_data"); + LOG(INFO) << "Could not set verified root cert in SSL's ex_data"; } else { #if OPENSSL_VERSION_NUMBER >= 0x10100000L X509_up_ref(root_cert); @@ -987,8 +986,7 @@ static grpc_core::experimental::CrlProvider* GetCrlProvider( } SSL* ssl = static_cast(X509_STORE_CTX_get_ex_data(ctx, ssl_index)); if (ssl == nullptr) { - gpr_log(GPR_INFO, - "error while fetching from CrlProvider. SSL object is null"); + LOG(INFO) << "error while fetching from CrlProvider. SSL object is null"; return nullptr; } SSL_CTX* ssl_ctx = SSL_get_SSL_CTX(ssl); @@ -1006,13 +1004,13 @@ static absl::StatusOr GetCrlFromProvider( } absl::StatusOr issuer_name = grpc_core::IssuerFromCert(cert); if (!issuer_name.ok()) { - gpr_log(GPR_INFO, "Could not get certificate issuer name"); + LOG(INFO) << "Could not get certificate issuer name"; return absl::InvalidArgumentError(issuer_name.status().message()); } absl::StatusOr akid = grpc_core::AkidFromCertificate(cert); std::string akid_to_use; if (!akid.ok()) { - gpr_log(GPR_INFO, "Could not get certificate authority key identifier."); + LOG(INFO) << "Could not get certificate authority key identifier."; } else { akid_to_use = *akid; } @@ -1045,12 +1043,12 @@ static bool ValidateCrl(X509* cert, X509* issuer, X509_CRL* crl) { // 6.3.3b verify issuer and scope valid = grpc_core::VerifyCrlCertIssuerNamesMatch(crl, cert); if (!valid) { - gpr_log(GPR_DEBUG, "CRL and cert issuer names mismatched."); + VLOG(2) << "CRL and cert issuer names mismatched."; return valid; } valid = grpc_core::HasCrlSignBit(issuer); if (!valid) { - gpr_log(GPR_DEBUG, "CRL issuer not allowed to sign CRLs."); + VLOG(2) << "CRL issuer not allowed to sign CRLs."; return valid; } // 6.3.3c Not supporting deltas @@ -1061,7 +1059,7 @@ static bool ValidateCrl(X509* cert, X509* issuer, X509_CRL* crl) { // 6.3.3g Verify CRL Signature valid = grpc_core::VerifyCrlSignature(crl, issuer); if (!valid) { - gpr_log(GPR_DEBUG, "Crl signature check failed."); + VLOG(2) << "Crl signature check failed."; } return valid; } @@ -1151,7 +1149,7 @@ static int CheckChainRevocation( static int CustomVerificationFunction(X509_STORE_CTX* ctx, void* arg) { int ret = X509_verify_cert(ctx); if (ret <= 0) { - gpr_log(GPR_DEBUG, "Failed to verify cert chain."); + VLOG(2) << "Failed to verify cert chain."; // Verification failed. We shouldn't expect to have a verified chain, so // there is no need to attempt to extract the root cert from it, check for // revocation, or check anything else. @@ -1161,7 +1159,7 @@ static int CustomVerificationFunction(X509_STORE_CTX* ctx, void* arg) { if (provider != nullptr) { ret = CheckChainRevocation(ctx, provider); if (ret <= 0) { - gpr_log(GPR_DEBUG, "The chain failed revocation checks."); + VLOG(2) << "The chain failed revocation checks."; return ret; } } @@ -1175,8 +1173,8 @@ static tsi_result tsi_set_min_and_max_tls_versions( SSL_CTX* ssl_context, tsi_tls_version min_tls_version, tsi_tls_version max_tls_version) { if (ssl_context == nullptr) { - gpr_log(GPR_INFO, - "Invalid nullptr argument to |tsi_set_min_and_max_tls_versions|."); + LOG(INFO) << "Invalid nullptr argument to " + "|tsi_set_min_and_max_tls_versions|."; return TSI_INVALID_ARGUMENT; } #if OPENSSL_VERSION_NUMBER >= 0x10100000 @@ -1197,7 +1195,7 @@ static tsi_result tsi_set_min_and_max_tls_versions( break; #endif default: - gpr_log(GPR_INFO, "TLS version is not supported."); + LOG(INFO) << "TLS version is not supported."; return TSI_FAILED_PRECONDITION; } @@ -1216,7 +1214,7 @@ static tsi_result tsi_set_min_and_max_tls_versions( #endif break; default: - gpr_log(GPR_INFO, "TLS version is not supported."); + LOG(INFO) << "TLS version is not supported."; return TSI_FAILED_PRECONDITION; } #endif @@ -1228,25 +1226,25 @@ static tsi_result tsi_set_min_and_max_tls_versions( tsi_ssl_root_certs_store* tsi_ssl_root_certs_store_create( const char* pem_roots) { if (pem_roots == nullptr) { - gpr_log(GPR_ERROR, "The root certificates are empty."); + LOG(ERROR) << "The root certificates are empty."; return nullptr; } tsi_ssl_root_certs_store* root_store = static_cast( gpr_zalloc(sizeof(tsi_ssl_root_certs_store))); if (root_store == nullptr) { - gpr_log(GPR_ERROR, "Could not allocate buffer for ssl_root_certs_store."); + LOG(ERROR) << "Could not allocate buffer for ssl_root_certs_store."; return nullptr; } root_store->store = X509_STORE_new(); if (root_store->store == nullptr) { - gpr_log(GPR_ERROR, "Could not allocate buffer for X509_STORE."); + LOG(ERROR) << "Could not allocate buffer for X509_STORE."; gpr_free(root_store); return nullptr; } tsi_result result = x509_store_load_certs(root_store->store, pem_roots, strlen(pem_roots), nullptr); if (result != TSI_OK) { - gpr_log(GPR_ERROR, "Could not load root certificates."); + LOG(ERROR) << "Could not load root certificates."; X509_STORE_free(root_store->store); gpr_free(root_store); return nullptr; @@ -1282,10 +1280,6 @@ void tsi_ssl_session_cache_unref(tsi_ssl_session_cache* cache) { tsi::SslSessionLRUCache::FromC(cache)->Unref(); } -size_t tsi_ssl_session_cache_size(tsi_ssl_session_cache* cache) { - return tsi::SslSessionLRUCache::FromC(cache)->Size(); -} - // --- tsi_frame_protector methods implementation. --- static tsi_result ssl_protector_protect(tsi_frame_protector* self, @@ -1376,7 +1370,7 @@ static tsi_ssl_handshaker_factory_vtable handshaker_factory_vtable = {nullptr}; // allocating memory for the factory. static void tsi_ssl_handshaker_factory_init( tsi_ssl_handshaker_factory* factory) { - GPR_ASSERT(factory != nullptr); + CHECK_NE(factory, nullptr); factory->vtable = &handshaker_factory_vtable; gpr_ref_init(&factory->refcount, 1); @@ -1480,9 +1474,8 @@ static tsi_result ssl_handshaker_result_extract_peer( result = peer_property_from_x509_subject( verified_root_cert, &peer->properties[peer->property_count], true); if (result != TSI_OK) { - gpr_log(GPR_DEBUG, - "Problem extracting subject from verified_root_cert. result: %d", - static_cast(result)); + VLOG(2) << "Problem extracting subject from verified_root_cert. result: " + << result; } peer->property_count++; } @@ -1604,7 +1597,7 @@ static tsi_result ssl_handshaker_get_bytes_to_send_to_peer( if (error != nullptr) *error = "invalid argument"; return TSI_INVALID_ARGUMENT; } - GPR_ASSERT(*bytes_size <= INT_MAX); + CHECK_LE(*bytes_size, static_cast(INT_MAX)); bytes_read_from_ssl = BIO_read(impl->network_io, bytes, static_cast(*bytes_size)); if (bytes_read_from_ssl < 0) { @@ -1675,11 +1668,11 @@ static tsi_result ssl_handshaker_process_bytes_from_peer( if (error != nullptr) *error = "invalid argument"; return TSI_INVALID_ARGUMENT; } - GPR_ASSERT(*bytes_size <= INT_MAX); + CHECK_LE(*bytes_size, static_cast(INT_MAX)); bytes_written_into_ssl_size = BIO_write(impl->network_io, bytes, static_cast(*bytes_size)); if (bytes_written_into_ssl_size < 0) { - gpr_log(GPR_ERROR, "Could not write to memory BIO."); + LOG(ERROR) << "Could not write to memory BIO."; if (error != nullptr) *error = "could not write to memory BIO"; impl->result = TSI_INTERNAL_ERROR; return impl->result; @@ -1826,7 +1819,7 @@ static tsi_result ssl_handshaker_next(tsi_handshaker* self, ssl_bytes_remaining(impl, &unused_bytes, &unused_bytes_size, error); if (status != TSI_OK) return status; if (unused_bytes_size > received_bytes_size) { - gpr_log(GPR_ERROR, "More unused bytes than received bytes."); + LOG(ERROR) << "More unused bytes than received bytes."; gpr_free(unused_bytes); if (error != nullptr) *error = "More unused bytes than received bytes."; return TSI_INTERNAL_ERROR; @@ -1880,7 +1873,7 @@ static tsi_result create_tsi_ssl_handshaker(SSL_CTX* ctx, int is_client, tsi_ssl_handshaker* impl = nullptr; *handshaker = nullptr; if (ctx == nullptr) { - gpr_log(GPR_ERROR, "SSL Context is null. Should never happen."); + LOG(ERROR) << "SSL Context is null. Should never happen."; return TSI_INTERNAL_ERROR; } if (ssl == nullptr) { @@ -1890,7 +1883,7 @@ static tsi_result create_tsi_ssl_handshaker(SSL_CTX* ctx, int is_client, if (!BIO_new_bio_pair(&network_io, network_bio_buf_size, &ssl_io, ssl_bio_buf_size)) { - gpr_log(GPR_ERROR, "BIO_new_bio_pair failed."); + LOG(ERROR) << "BIO_new_bio_pair failed."; SSL_free(ssl); return TSI_OUT_OF_RESOURCES; } @@ -2079,7 +2072,7 @@ static int does_entry_match_name(absl::string_view entry, // Wildchar subdomain matching. if (entry.size() < 3 || entry[1] != '.') { // At least *.x - gpr_log(GPR_ERROR, "Invalid wildchar entry."); + LOG(ERROR) << "Invalid wildchar entry."; return 0; } size_t name_subdomain_pos = name.find('.'); @@ -2090,8 +2083,7 @@ static int does_entry_match_name(absl::string_view entry, entry.remove_prefix(2); // Remove *. size_t dot = name_subdomain.find('.'); if (dot == absl::string_view::npos || dot == name_subdomain.size() - 1) { - gpr_log(GPR_ERROR, "Invalid toplevel subdomain: %s", - std::string(name_subdomain).c_str()); + LOG(ERROR) << "Invalid toplevel subdomain: " << name_subdomain; return 0; } if (name_subdomain.back() == '.') { @@ -2118,7 +2110,7 @@ static int ssl_server_handshaker_factory_servername_callback(SSL* ssl, return SSL_TLSEXT_ERR_OK; } } - gpr_log(GPR_ERROR, "No match found for server name: %s.", servername); + LOG(ERROR) << "No match found for server name: " << servername; return SSL_TLSEXT_ERR_NOACK; } @@ -2139,7 +2131,7 @@ static int server_handshaker_factory_npn_advertised_callback( tsi_ssl_server_handshaker_factory* factory = static_cast(arg); *out = factory->alpn_protocol_list; - GPR_ASSERT(factory->alpn_protocol_list_length <= UINT_MAX); + CHECK(factory->alpn_protocol_list_length <= UINT_MAX); *outlen = static_cast(factory->alpn_protocol_list_length); return SSL_TLSEXT_ERR_OK; } @@ -2173,7 +2165,7 @@ static int server_handshaker_factory_new_session_callback( template static void ssl_keylogging_callback(const SSL* ssl, const char* info) { SSL_CTX* ssl_context = SSL_get_SSL_CTX(ssl); - GPR_ASSERT(ssl_context != nullptr); + CHECK_NE(ssl_context, nullptr); void* arg = SSL_CTX_get_ex_data(ssl_context, g_ssl_ctx_ex_factory_index); T* factory = static_cast(arg); factory->key_logger->LogSessionKeys(ssl_context, info); @@ -2225,7 +2217,7 @@ tsi_result tsi_create_ssl_client_handshaker_factory_with_options( #endif if (ssl_context == nullptr) { grpc_core::LogSslErrorStack(); - gpr_log(GPR_ERROR, "Could not create ssl context."); + LOG(ERROR) << "Could not create ssl context."; return TSI_INVALID_ARGUMENT; } @@ -2292,7 +2284,7 @@ tsi_result tsi_create_ssl_client_handshaker_factory_with_options( X509_VERIFY_PARAM_set_depth(param, kMaxChainLength); if (result != TSI_OK) { - gpr_log(GPR_ERROR, "Cannot load server root certificates."); + LOG(ERROR) << "Cannot load server root certificates."; break; } } @@ -2302,16 +2294,16 @@ tsi_result tsi_create_ssl_client_handshaker_factory_with_options( options->alpn_protocols, options->num_alpn_protocols, &impl->alpn_protocol_list, &impl->alpn_protocol_list_length); if (result != TSI_OK) { - gpr_log(GPR_ERROR, "Building alpn list failed with error %s.", - tsi_result_to_string(result)); + LOG(ERROR) << "Building alpn list failed with error " + << tsi_result_to_string(result); break; } #if TSI_OPENSSL_ALPN_SUPPORT - GPR_ASSERT(impl->alpn_protocol_list_length < UINT_MAX); + CHECK(impl->alpn_protocol_list_length < UINT_MAX); if (SSL_CTX_set_alpn_protos( ssl_context, impl->alpn_protocol_list, static_cast(impl->alpn_protocol_list_length))) { - gpr_log(GPR_ERROR, "Could not set alpn protocol list to context."); + LOG(ERROR) << "Could not set alpn protocol list to context."; result = TSI_INVALID_ARGUMENT; break; } @@ -2341,7 +2333,7 @@ tsi_result tsi_create_ssl_client_handshaker_factory_with_options( X509_STORE_set_verify_cb(cert_store, verify_cb); if (!X509_STORE_load_locations(cert_store, nullptr, options->crl_directory)) { - gpr_log(GPR_ERROR, "Failed to load CRL File from directory."); + LOG(ERROR) << "Failed to load CRL File from directory."; } else { X509_VERIFY_PARAM* param = X509_STORE_get0_param(cert_store); X509_VERIFY_PARAM_set_flags( @@ -2446,7 +2438,7 @@ tsi_result tsi_create_ssl_server_handshaker_factory_with_options( #endif if (impl->ssl_contexts[i] == nullptr) { grpc_core::LogSslErrorStack(); - gpr_log(GPR_ERROR, "Could not create ssl context."); + LOG(ERROR) << "Could not create ssl context."; result = TSI_OUT_OF_RESOURCES; break; } @@ -2468,7 +2460,7 @@ tsi_result tsi_create_ssl_server_handshaker_factory_with_options( impl->ssl_contexts[i], kSslSessionIdContext, GPR_ARRAY_SIZE(kSslSessionIdContext)); if (set_sid_ctx_result == 0) { - gpr_log(GPR_ERROR, "Failed to set session id context."); + LOG(ERROR) << "Failed to set session id context."; result = TSI_INTERNAL_ERROR; break; } @@ -2478,7 +2470,7 @@ tsi_result tsi_create_ssl_server_handshaker_factory_with_options( impl->ssl_contexts[i], const_cast(options->session_ticket_key), options->session_ticket_key_size) == 0) { - gpr_log(GPR_ERROR, "Invalid STEK size."); + LOG(ERROR) << "Invalid STEK size."; result = TSI_INVALID_ARGUMENT; break; } @@ -2491,7 +2483,7 @@ tsi_result tsi_create_ssl_server_handshaker_factory_with_options( strlen(options->pem_client_root_certs), options->send_client_ca_list ? &root_names : nullptr); if (result != TSI_OK) { - gpr_log(GPR_ERROR, "Invalid verification certs."); + LOG(ERROR) << "Invalid verification certs."; break; } if (options->send_client_ca_list) { @@ -2539,7 +2531,7 @@ tsi_result tsi_create_ssl_server_handshaker_factory_with_options( X509_STORE_set_verify_cb(cert_store, verify_cb); if (!X509_STORE_load_locations(cert_store, nullptr, options->crl_directory)) { - gpr_log(GPR_ERROR, "Failed to load CRL File from directory."); + LOG(ERROR) << "Failed to load CRL File from directory."; } else { X509_VERIFY_PARAM* param = X509_STORE_get0_param(cert_store); X509_VERIFY_PARAM_set_flags( @@ -2635,8 +2627,8 @@ int tsi_ssl_peer_matches_name(const tsi_peer* peer, absl::string_view name) { const tsi_ssl_handshaker_factory_vtable* tsi_ssl_handshaker_factory_swap_vtable( tsi_ssl_handshaker_factory* factory, tsi_ssl_handshaker_factory_vtable* new_vtable) { - GPR_ASSERT(factory != nullptr); - GPR_ASSERT(factory->vtable != nullptr); + CHECK_NE(factory, nullptr); + CHECK_NE(factory->vtable, nullptr); const tsi_ssl_handshaker_factory_vtable* orig_vtable = factory->vtable; factory->vtable = new_vtable; diff --git a/src/core/tsi/ssl_transport_security.h b/src/core/tsi/ssl_transport_security.h index d925f08840b..da3b260adbd 100644 --- a/src/core/tsi/ssl_transport_security.h +++ b/src/core/tsi/ssl_transport_security.h @@ -81,9 +81,6 @@ void tsi_ssl_session_cache_ref(tsi_ssl_session_cache* cache); // Decrement reference counter of \a cache. void tsi_ssl_session_cache_unref(tsi_ssl_session_cache* cache); -// Returns the size of the cache. -size_t tsi_ssl_session_cache_size(tsi_ssl_session_cache* cache); - // --- tsi_ssl_key_logger object --- // Experimental SSL Key logging functionality to enable decryption of diff --git a/src/core/tsi/ssl_transport_security_utils.cc b/src/core/tsi/ssl_transport_security_utils.cc index 6ba2ee7a23e..1a6747a60a2 100644 --- a/src/core/tsi/ssl_transport_security_utils.cc +++ b/src/core/tsi/ssl_transport_security_utils.cc @@ -23,6 +23,8 @@ #include #include +#include "absl/log/check.h" +#include "absl/log/log.h" #include "absl/status/status.h" #include "absl/status/statusor.h" @@ -62,25 +64,25 @@ void LogSslErrorStack(void) { while ((err = ERR_get_error()) != 0) { char details[256]; ERR_error_string_n(static_cast(err), details, sizeof(details)); - gpr_log(GPR_ERROR, "%s", details); + LOG(ERROR) << details; } } tsi_result DoSslWrite(SSL* ssl, unsigned char* unprotected_bytes, size_t unprotected_bytes_size) { - GPR_ASSERT(unprotected_bytes_size <= INT_MAX); + CHECK_LE(unprotected_bytes_size, static_cast(INT_MAX)); ERR_clear_error(); int ssl_write_result = SSL_write(ssl, unprotected_bytes, static_cast(unprotected_bytes_size)); if (ssl_write_result < 0) { ssl_write_result = SSL_get_error(ssl, ssl_write_result); if (ssl_write_result == SSL_ERROR_WANT_READ) { - gpr_log(GPR_ERROR, - "Peer tried to renegotiate SSL connection. This is unsupported."); + LOG(ERROR) + << "Peer tried to renegotiate SSL connection. This is unsupported."; return TSI_UNIMPLEMENTED; } else { - gpr_log(GPR_ERROR, "SSL_write failed with error %s.", - SslErrorString(ssl_write_result)); + LOG(ERROR) << "SSL_write failed with error " + << SslErrorString(ssl_write_result); return TSI_INTERNAL_ERROR; } } @@ -89,7 +91,7 @@ tsi_result DoSslWrite(SSL* ssl, unsigned char* unprotected_bytes, tsi_result DoSslRead(SSL* ssl, unsigned char* unprotected_bytes, size_t* unprotected_bytes_size) { - GPR_ASSERT(*unprotected_bytes_size <= INT_MAX); + CHECK_LE(*unprotected_bytes_size, static_cast(INT_MAX)); ERR_clear_error(); int read_from_ssl = SSL_read(ssl, unprotected_bytes, static_cast(*unprotected_bytes_size)); @@ -106,12 +108,12 @@ tsi_result DoSslRead(SSL* ssl, unsigned char* unprotected_bytes, "Peer tried to renegotiate SSL connection. This is unsupported."); return TSI_UNIMPLEMENTED; case SSL_ERROR_SSL: - gpr_log(GPR_ERROR, "Corruption detected."); + LOG(ERROR) << "Corruption detected."; LogSslErrorStack(); return TSI_DATA_CORRUPTED; default: - gpr_log(GPR_ERROR, "SSL_read failed with error %s.", - SslErrorString(read_from_ssl)); + LOG(ERROR) << "SSL_read failed with error " + << SslErrorString(read_from_ssl); return TSI_PROTOCOL_FAILURE; } } @@ -134,12 +136,11 @@ tsi_result SslProtectorProtect(const unsigned char* unprotected_bytes, int pending_in_ssl = static_cast(BIO_pending(network_io)); if (pending_in_ssl > 0) { *unprotected_bytes_size = 0; - GPR_ASSERT(*protected_output_frames_size <= INT_MAX); + CHECK_LE(*protected_output_frames_size, static_cast(INT_MAX)); read_from_ssl = BIO_read(network_io, protected_output_frames, static_cast(*protected_output_frames_size)); if (read_from_ssl < 0) { - gpr_log(GPR_ERROR, - "Could not read from BIO even though some data is pending"); + LOG(ERROR) << "Could not read from BIO even though some data is pending"; return TSI_INTERNAL_ERROR; } *protected_output_frames_size = static_cast(read_from_ssl); @@ -161,11 +162,11 @@ tsi_result SslProtectorProtect(const unsigned char* unprotected_bytes, result = DoSslWrite(ssl, buffer, buffer_size); if (result != TSI_OK) return result; - GPR_ASSERT(*protected_output_frames_size <= INT_MAX); + CHECK_LE(*protected_output_frames_size, static_cast(INT_MAX)); read_from_ssl = BIO_read(network_io, protected_output_frames, static_cast(*protected_output_frames_size)); if (read_from_ssl < 0) { - gpr_log(GPR_ERROR, "Could not read from BIO after SSL_write."); + LOG(ERROR) << "Could not read from BIO after SSL_write."; return TSI_INTERNAL_ERROR; } *protected_output_frames_size = static_cast(read_from_ssl); @@ -191,20 +192,20 @@ tsi_result SslProtectorProtectFlush(size_t& buffer_offset, } pending = static_cast(BIO_pending(network_io)); - GPR_ASSERT(pending >= 0); + CHECK_GE(pending, 0); *still_pending_size = static_cast(pending); if (*still_pending_size == 0) return TSI_OK; - GPR_ASSERT(*protected_output_frames_size <= INT_MAX); + CHECK_LE(*protected_output_frames_size, static_cast(INT_MAX)); read_from_ssl = BIO_read(network_io, protected_output_frames, static_cast(*protected_output_frames_size)); if (read_from_ssl <= 0) { - gpr_log(GPR_ERROR, "Could not read from BIO after SSL_write."); + LOG(ERROR) << "Could not read from BIO after SSL_write."; return TSI_INTERNAL_ERROR; } *protected_output_frames_size = static_cast(read_from_ssl); pending = static_cast(BIO_pending(network_io)); - GPR_ASSERT(pending >= 0); + CHECK_GE(pending, 0); *still_pending_size = static_cast(pending); return TSI_OK; } @@ -232,12 +233,12 @@ tsi_result SslProtectorUnprotect(const unsigned char* protected_frames_bytes, *unprotected_bytes_size = output_bytes_size - output_bytes_offset; // Then, try to write some data to ssl. - GPR_ASSERT(*protected_frames_bytes_size <= INT_MAX); + CHECK_LE(*protected_frames_bytes_size, static_cast(INT_MAX)); written_into_ssl = BIO_write(network_io, protected_frames_bytes, static_cast(*protected_frames_bytes_size)); if (written_into_ssl < 0) { - gpr_log(GPR_ERROR, "Sending protected frame to ssl failed with %d", - written_into_ssl); + LOG(ERROR) << "Sending protected frame to ssl failed with " + << written_into_ssl; return TSI_INTERNAL_ERROR; } *protected_frames_bytes_size = static_cast(written_into_ssl); @@ -259,16 +260,15 @@ bool VerifyCrlSignature(X509_CRL* crl, X509* issuer) { if (ikey == nullptr) { // Can't verify signature because we couldn't get the pubkey, fail the // check. - gpr_log(GPR_DEBUG, "Could not public key from certificate."); + VLOG(2) << "Could not public key from certificate."; EVP_PKEY_free(ikey); return false; } int ret = X509_CRL_verify(crl, ikey); if (ret < 0) { - gpr_log(GPR_DEBUG, - "There was an unexpected problem checking the CRL signature."); + VLOG(2) << "There was an unexpected problem checking the CRL signature."; } else if (ret == 0) { - gpr_log(GPR_DEBUG, "CRL failed verification."); + VLOG(2) << "CRL failed verification."; } EVP_PKEY_free(ikey); return ret == 1; diff --git a/src/core/lib/gpr/.clang-format b/src/core/util/.clang-format similarity index 100% rename from src/core/lib/gpr/.clang-format rename to src/core/util/.clang-format diff --git a/src/core/lib/gpr/README.md b/src/core/util/README.md similarity index 100% rename from src/core/lib/gpr/README.md rename to src/core/util/README.md diff --git a/src/core/lib/gpr/alloc.cc b/src/core/util/alloc.cc similarity index 94% rename from src/core/lib/gpr/alloc.cc rename to src/core/util/alloc.cc index 67e07f81f09..a8b92260a92 100644 --- a/src/core/lib/gpr/alloc.cc +++ b/src/core/util/alloc.cc @@ -21,6 +21,8 @@ #include #include +#include "absl/log/check.h" + #include #include @@ -59,7 +61,7 @@ void* gpr_realloc(void* p, size_t size) { } void* gpr_malloc_aligned(size_t size, size_t alignment) { - GPR_ASSERT(((alignment - 1) & alignment) == 0); // Must be power of 2. + CHECK_EQ(((alignment - 1) & alignment), 0u); // Must be power of 2. size_t extra = alignment - 1 + sizeof(void*); void* p = gpr_malloc(size + extra); void** ret = reinterpret_cast( diff --git a/src/core/lib/gpr/alloc.h b/src/core/util/alloc.h similarity index 87% rename from src/core/lib/gpr/alloc.h rename to src/core/util/alloc.h index de2e5697385..a369feb3ddd 100644 --- a/src/core/lib/gpr/alloc.h +++ b/src/core/util/alloc.h @@ -16,8 +16,8 @@ // // -#ifndef GRPC_SRC_CORE_LIB_GPR_ALLOC_H -#define GRPC_SRC_CORE_LIB_GPR_ALLOC_H +#ifndef GRPC_SRC_CORE_UTIL_ALLOC_H +#define GRPC_SRC_CORE_UTIL_ALLOC_H #include @@ -25,4 +25,4 @@ #define GPR_ROUND_UP_TO_ALIGNMENT_SIZE(x) \ (((x) + GPR_MAX_ALIGNMENT - 1u) & ~(GPR_MAX_ALIGNMENT - 1u)) -#endif // GRPC_SRC_CORE_LIB_GPR_ALLOC_H +#endif // GRPC_SRC_CORE_UTIL_ALLOC_H diff --git a/src/core/lib/gpr/android/log.cc b/src/core/util/android/log.cc similarity index 76% rename from src/core/lib/gpr/android/log.cc rename to src/core/util/android/log.cc index 34c705b8764..c368f3aa324 100644 --- a/src/core/lib/gpr/android/log.cc +++ b/src/core/util/android/log.cc @@ -57,23 +57,4 @@ void gpr_log(const char* file, int line, gpr_log_severity severity, free(message); } -void gpr_platform_log(gpr_log_func_args* args) { - const char* final_slash; - const char* display_file; - char* output = NULL; - - final_slash = strrchr(args->file, '/'); - if (final_slash == NULL) - display_file = args->file; - else - display_file = final_slash + 1; - - asprintf(&output, "%s:%d] %s", display_file, args->line, args->message); - - __android_log_write(severity_to_log_priority(args->severity), "GRPC", output); - - // allocated by asprintf => use free, not gpr_free - free(output); -} - #endif // GPR_ANDROID diff --git a/src/core/lib/gpr/atm.cc b/src/core/util/atm.cc similarity index 96% rename from src/core/lib/gpr/atm.cc rename to src/core/util/atm.cc index 73173539818..7e7a6834bb1 100644 --- a/src/core/lib/gpr/atm.cc +++ b/src/core/util/atm.cc @@ -20,7 +20,7 @@ #include -#include "src/core/lib/gpr/useful.h" +#include "src/core/util/useful.h" gpr_atm gpr_atm_no_barrier_clamped_add(gpr_atm* value, gpr_atm delta, gpr_atm min, gpr_atm max) { diff --git a/src/core/lib/gpr/iphone/cpu.cc b/src/core/util/iphone/cpu.cc similarity index 100% rename from src/core/lib/gpr/iphone/cpu.cc rename to src/core/util/iphone/cpu.cc diff --git a/src/core/lib/gpr/linux/cpu.cc b/src/core/util/linux/cpu.cc similarity index 100% rename from src/core/lib/gpr/linux/cpu.cc rename to src/core/util/linux/cpu.cc diff --git a/src/core/lib/gpr/linux/log.cc b/src/core/util/linux/log.cc similarity index 55% rename from src/core/lib/gpr/linux/log.cc rename to src/core/util/linux/log.cc index a24e28fa82c..f09ecb2dbbc 100644 --- a/src/core/lib/gpr/linux/log.cc +++ b/src/core/util/linux/log.cc @@ -47,10 +47,6 @@ #include "src/core/lib/gprpp/crash.h" #include "src/core/lib/gprpp/examine_stack.h" -int gpr_should_log_stacktrace(gpr_log_severity severity); - -static long sys_gettid(void) { return syscall(__NR_gettid); } - void gpr_log(const char* file, int line, gpr_log_severity severity, const char* format, ...) { // Avoid message construction if gpr_log_message won't log @@ -70,45 +66,4 @@ void gpr_log(const char* file, int line, gpr_log_severity severity, free(message); } -void gpr_platform_log(gpr_log_func_args* args) { - const char* final_slash; - const char* display_file; - char time_buffer[64]; - time_t timer; - gpr_timespec now = gpr_now(GPR_CLOCK_REALTIME); - struct tm tm; - static thread_local long tid(0); - if (tid == 0) tid = sys_gettid(); - - timer = static_cast(now.tv_sec); - final_slash = strrchr(args->file, '/'); - if (final_slash == nullptr) { - display_file = args->file; - } else { - display_file = final_slash + 1; - } - - if (!localtime_r(&timer, &tm)) { - strcpy(time_buffer, "error:localtime"); - } else if (0 == - strftime(time_buffer, sizeof(time_buffer), "%m%d %H:%M:%S", &tm)) { - strcpy(time_buffer, "error:strftime"); - } - - std::string prefix = absl::StrFormat( - "%s%s.%09" PRId32 " %7ld %s:%d]", gpr_log_severity_string(args->severity), - time_buffer, now.tv_nsec, tid, display_file, args->line); - - absl::optional stack_trace = - gpr_should_log_stacktrace(args->severity) - ? grpc_core::GetCurrentStackTrace() - : absl::nullopt; - if (stack_trace) { - fprintf(stderr, "%-70s %s\n%s\n", prefix.c_str(), args->message, - stack_trace->c_str()); - } else { - fprintf(stderr, "%-70s %s\n", prefix.c_str(), args->message); - } -} - #endif // GPR_LINUX_LOG diff --git a/src/core/lib/gpr/log.cc b/src/core/util/log.cc similarity index 93% rename from src/core/lib/gpr/log.cc rename to src/core/util/log.cc index 1755d99122d..9a6f68104e0 100644 --- a/src/core/lib/gpr/log.cc +++ b/src/core/util/log.cc @@ -31,8 +31,8 @@ #include #include "src/core/lib/config/config_vars.h" -#include "src/core/lib/gpr/string.h" #include "src/core/lib/gprpp/crash.h" +#include "src/core/util/string.h" #ifndef GPR_DEFAULT_LOG_VERBOSITY_STRING #define GPR_DEFAULT_LOG_VERBOSITY_STRING "ERROR" @@ -77,10 +77,6 @@ int gpr_should_log(gpr_log_severity severity) { } void gpr_default_log(gpr_log_func_args* args) { - if (!grpc_core::ConfigVars::Get().AbslLogging()) { - gpr_platform_log(args); - return; - } switch (args->severity) { case GPR_LOG_SEVERITY_DEBUG: // Log DEBUG messages as VLOG(2). @@ -99,13 +95,6 @@ void gpr_default_log(gpr_log_func_args* args) { } } -int gpr_should_log_stacktrace(gpr_log_severity severity) { - return static_cast(severity) >= - gpr_atm_no_barrier_load(&g_min_severity_to_print_stacktrace) - ? 1 - : 0; -} - void gpr_log_message(const char* file, int line, gpr_log_severity severity, const char* message) { if (gpr_should_log(severity) == 0) { diff --git a/src/core/lib/gpr/msys/tmpfile.cc b/src/core/util/msys/tmpfile.cc similarity index 94% rename from src/core/lib/gpr/msys/tmpfile.cc rename to src/core/util/msys/tmpfile.cc index 42372a5ce65..41a04f1c75d 100644 --- a/src/core/lib/gpr/msys/tmpfile.cc +++ b/src/core/util/msys/tmpfile.cc @@ -29,9 +29,9 @@ #include #include -#include "src/core/lib/gpr/string_windows.h" -#include "src/core/lib/gpr/tmpfile.h" #include "src/core/lib/gprpp/crash.h" +#include "src/core/util/string_windows.h" +#include "src/core/util/tmpfile.h" FILE* gpr_tmpfile(const char* prefix, char** tmp_filename_out) { FILE* result = NULL; diff --git a/src/core/lib/gpr/posix/cpu.cc b/src/core/util/posix/cpu.cc similarity index 98% rename from src/core/lib/gpr/posix/cpu.cc rename to src/core/util/posix/cpu.cc index 4b58d869f68..9d7c638aa12 100644 --- a/src/core/lib/gpr/posix/cpu.cc +++ b/src/core/util/posix/cpu.cc @@ -29,8 +29,8 @@ #include #include -#include "src/core/lib/gpr/useful.h" #include "src/core/lib/gprpp/crash.h" +#include "src/core/util/useful.h" static long ncpus = 0; diff --git a/src/core/lib/gpr/posix/log.cc b/src/core/util/posix/log.cc similarity index 58% rename from src/core/lib/gpr/posix/log.cc rename to src/core/util/posix/log.cc index 4e933b7c4be..09791014ef8 100644 --- a/src/core/lib/gpr/posix/log.cc +++ b/src/core/util/posix/log.cc @@ -38,10 +38,6 @@ #include "src/core/lib/gprpp/crash.h" #include "src/core/lib/gprpp/examine_stack.h" -int gpr_should_log_stacktrace(gpr_log_severity severity); - -static intptr_t sys_gettid(void) { return (intptr_t)pthread_self(); } - void gpr_log(const char* file, int line, gpr_log_severity severity, const char* format, ...) { // Avoid message construction if gpr_log_message won't log @@ -70,42 +66,4 @@ void gpr_log(const char* file, int line, gpr_log_severity severity, gpr_free(allocated); } -void gpr_platform_log(gpr_log_func_args* args) { - const char* final_slash; - const char* display_file; - char time_buffer[64]; - time_t timer; - gpr_timespec now = gpr_now(GPR_CLOCK_REALTIME); - struct tm tm; - - timer = (time_t)now.tv_sec; - final_slash = strrchr(args->file, '/'); - if (final_slash == nullptr) - display_file = args->file; - else - display_file = final_slash + 1; - - if (!localtime_r(&timer, &tm)) { - strcpy(time_buffer, "error:localtime"); - } else if (0 == - strftime(time_buffer, sizeof(time_buffer), "%m%d %H:%M:%S", &tm)) { - strcpy(time_buffer, "error:strftime"); - } - - std::string prefix = absl::StrFormat( - "%s%s.%09d %7" PRIdPTR " %s:%d]", gpr_log_severity_string(args->severity), - time_buffer, (int)(now.tv_nsec), sys_gettid(), display_file, args->line); - - absl::optional stack_trace = - gpr_should_log_stacktrace(args->severity) - ? grpc_core::GetCurrentStackTrace() - : absl::nullopt; - if (stack_trace) { - fprintf(stderr, "%-70s %s\n%s\n", prefix.c_str(), args->message, - stack_trace->c_str()); - } else { - fprintf(stderr, "%-70s %s\n", prefix.c_str(), args->message); - } -} - #endif // defined(GPR_POSIX_LOG) diff --git a/src/core/lib/gpr/posix/string.cc b/src/core/util/posix/string.cc similarity index 100% rename from src/core/lib/gpr/posix/string.cc rename to src/core/util/posix/string.cc diff --git a/src/core/lib/gpr/posix/sync.cc b/src/core/util/posix/sync.cc similarity index 73% rename from src/core/lib/gpr/posix/sync.cc rename to src/core/util/posix/sync.cc index 4e57b2c6181..912a1a6b48e 100644 --- a/src/core/lib/gpr/posix/sync.cc +++ b/src/core/util/posix/sync.cc @@ -24,6 +24,8 @@ #include #include +#include "absl/log/check.h" + #include #include #include @@ -33,36 +35,36 @@ void gpr_mu_init(gpr_mu* mu) { #ifdef GRPC_ASAN_ENABLED - GPR_ASSERT(pthread_mutex_init(&mu->mutex, nullptr) == 0); + CHECK_EQ(pthread_mutex_init(&mu->mutex, nullptr), 0); mu->leak_checker = static_cast(malloc(sizeof(*mu->leak_checker))); - GPR_ASSERT(mu->leak_checker != nullptr); + CHECK_NE(mu->leak_checker, nullptr); #else - GPR_ASSERT(pthread_mutex_init(mu, nullptr) == 0); + CHECK_EQ(pthread_mutex_init(mu, nullptr), 0); #endif } void gpr_mu_destroy(gpr_mu* mu) { #ifdef GRPC_ASAN_ENABLED - GPR_ASSERT(pthread_mutex_destroy(&mu->mutex) == 0); + CHECK_EQ(pthread_mutex_destroy(&mu->mutex), 0); free(mu->leak_checker); #else - GPR_ASSERT(pthread_mutex_destroy(mu) == 0); + CHECK_EQ(pthread_mutex_destroy(mu), 0); #endif } void gpr_mu_lock(gpr_mu* mu) { #ifdef GRPC_ASAN_ENABLED - GPR_ASSERT(pthread_mutex_lock(&mu->mutex) == 0); + CHECK_EQ(pthread_mutex_lock(&mu->mutex), 0); #else - GPR_ASSERT(pthread_mutex_lock(mu) == 0); + CHECK_EQ(pthread_mutex_lock(mu), 0); #endif } void gpr_mu_unlock(gpr_mu* mu) { #ifdef GRPC_ASAN_ENABLED - GPR_ASSERT(pthread_mutex_unlock(&mu->mutex) == 0); + CHECK_EQ(pthread_mutex_unlock(&mu->mutex), 0); #else - GPR_ASSERT(pthread_mutex_unlock(mu) == 0); + CHECK_EQ(pthread_mutex_unlock(mu), 0); #endif } @@ -73,7 +75,7 @@ int gpr_mu_trylock(gpr_mu* mu) { #else err = pthread_mutex_trylock(mu); #endif - GPR_ASSERT(err == 0 || err == EBUSY); + CHECK(err == 0 || err == EBUSY); return err == 0; } @@ -81,26 +83,26 @@ int gpr_mu_trylock(gpr_mu* mu) { void gpr_cv_init(gpr_cv* cv) { pthread_condattr_t attr; - GPR_ASSERT(pthread_condattr_init(&attr) == 0); + CHECK_EQ(pthread_condattr_init(&attr), 0); #if GPR_LINUX - GPR_ASSERT(pthread_condattr_setclock(&attr, CLOCK_MONOTONIC) == 0); + CHECK_EQ(pthread_condattr_setclock(&attr, CLOCK_MONOTONIC), 0); #endif // GPR_LINUX #ifdef GRPC_ASAN_ENABLED - GPR_ASSERT(pthread_cond_init(&cv->cond_var, &attr) == 0); + CHECK_EQ(pthread_cond_init(&cv->cond_var, &attr), 0); cv->leak_checker = static_cast(malloc(sizeof(*cv->leak_checker))); - GPR_ASSERT(cv->leak_checker != nullptr); + CHECK_NE(cv->leak_checker, nullptr); #else - GPR_ASSERT(pthread_cond_init(cv, &attr) == 0); + CHECK_EQ(pthread_cond_init(cv, &attr), 0); #endif } void gpr_cv_destroy(gpr_cv* cv) { #ifdef GRPC_ASAN_ENABLED - GPR_ASSERT(pthread_cond_destroy(&cv->cond_var) == 0); + CHECK_EQ(pthread_cond_destroy(&cv->cond_var), 0); free(cv->leak_checker); #else - GPR_ASSERT(pthread_cond_destroy(cv) == 0); + CHECK_EQ(pthread_cond_destroy(cv), 0); #endif } @@ -129,30 +131,30 @@ int gpr_cv_wait(gpr_cv* cv, gpr_mu* mu, gpr_timespec abs_deadline) { err = pthread_cond_timedwait(cv, mu, &abs_deadline_ts); #endif } - GPR_ASSERT(err == 0 || err == ETIMEDOUT || err == EAGAIN); + CHECK(err == 0 || err == ETIMEDOUT || err == EAGAIN); return err == ETIMEDOUT; } void gpr_cv_signal(gpr_cv* cv) { #ifdef GRPC_ASAN_ENABLED - GPR_ASSERT(pthread_cond_signal(&cv->cond_var) == 0); + CHECK_EQ(pthread_cond_signal(&cv->cond_var), 0); #else - GPR_ASSERT(pthread_cond_signal(cv) == 0); + CHECK_EQ(pthread_cond_signal(cv), 0); #endif } void gpr_cv_broadcast(gpr_cv* cv) { #ifdef GRPC_ASAN_ENABLED - GPR_ASSERT(pthread_cond_broadcast(&cv->cond_var) == 0); + CHECK_EQ(pthread_cond_broadcast(&cv->cond_var), 0); #else - GPR_ASSERT(pthread_cond_broadcast(cv) == 0); + CHECK_EQ(pthread_cond_broadcast(cv), 0); #endif } //---------------------------------------- void gpr_once_init(gpr_once* once, void (*init_function)(void)) { - GPR_ASSERT(pthread_once(once, init_function) == 0); + CHECK_EQ(pthread_once(once, init_function), 0); } #endif // defined(GPR_POSIX_SYNC) && !defined(GPR_ABSEIL_SYNC) && diff --git a/src/core/lib/gpr/posix/time.cc b/src/core/util/posix/time.cc similarity index 90% rename from src/core/lib/gpr/posix/time.cc rename to src/core/util/posix/time.cc index 050cbf87dbc..6624b0fd656 100644 --- a/src/core/lib/gpr/posix/time.cc +++ b/src/core/util/posix/time.cc @@ -18,7 +18,7 @@ #include -#include "src/core/lib/gpr/time_precise.h" +#include "src/core/util/time_precise.h" #ifdef GPR_POSIX_TIME @@ -28,6 +28,8 @@ #ifdef __linux__ #include #endif +#include "absl/log/check.h" + #include #include #include @@ -38,7 +40,8 @@ static struct timespec timespec_from_gpr(gpr_timespec gts) { struct timespec rv; if (sizeof(time_t) < sizeof(int64_t)) { // fine to assert, as this is only used in gpr_sleep_until - GPR_ASSERT(gts.tv_sec <= INT32_MAX && gts.tv_sec >= INT32_MIN); + CHECK(gts.tv_sec <= INT32_MAX); + CHECK(gts.tv_sec >= INT32_MIN); } rv.tv_sec = static_cast(gts.tv_sec); rv.tv_nsec = gts.tv_nsec; @@ -67,7 +70,7 @@ void gpr_time_init(void) { gpr_precise_clock_init(); } static gpr_timespec now_impl(gpr_clock_type clock_type) { struct timespec now; - GPR_ASSERT(clock_type != GPR_TIMESPAN); + CHECK(clock_type != GPR_TIMESPAN); if (clock_type == GPR_CLOCK_PRECISE) { gpr_timespec ret; gpr_precise_clock_now(&ret); @@ -87,12 +90,12 @@ gpr_timespec (*gpr_now_impl)(gpr_clock_type clock_type) = now_impl; gpr_timespec gpr_now(gpr_clock_type clock_type) { // validate clock type - GPR_ASSERT(clock_type == GPR_CLOCK_MONOTONIC || - clock_type == GPR_CLOCK_REALTIME || - clock_type == GPR_CLOCK_PRECISE); + CHECK(clock_type == GPR_CLOCK_MONOTONIC || clock_type == GPR_CLOCK_REALTIME || + clock_type == GPR_CLOCK_PRECISE); gpr_timespec ts = gpr_now_impl(clock_type); // tv_nsecs must be in the range [0, 1e9). - GPR_ASSERT(ts.tv_nsec >= 0 && ts.tv_nsec < 1e9); + CHECK(ts.tv_nsec >= 0); + CHECK(ts.tv_nsec < 1e9); return ts; } diff --git a/src/core/lib/gpr/posix/tmpfile.cc b/src/core/util/posix/tmpfile.cc similarity index 93% rename from src/core/lib/gpr/posix/tmpfile.cc rename to src/core/util/posix/tmpfile.cc index 4d838af72bc..dbf399dba63 100644 --- a/src/core/lib/gpr/posix/tmpfile.cc +++ b/src/core/util/posix/tmpfile.cc @@ -25,14 +25,16 @@ #include #include +#include "absl/log/check.h" + #include #include #include -#include "src/core/lib/gpr/string.h" -#include "src/core/lib/gpr/tmpfile.h" #include "src/core/lib/gprpp/crash.h" #include "src/core/lib/gprpp/strerror.h" +#include "src/core/util/string.h" +#include "src/core/util/tmpfile.h" FILE* gpr_tmpfile(const char* prefix, char** tmp_filename) { FILE* result = nullptr; @@ -42,7 +44,7 @@ FILE* gpr_tmpfile(const char* prefix, char** tmp_filename) { if (tmp_filename != nullptr) *tmp_filename = nullptr; gpr_asprintf(&filename_template, "/tmp/%s_XXXXXX", prefix); - GPR_ASSERT(filename_template != nullptr); + CHECK_NE(filename_template, nullptr); fd = mkstemp(filename_template); if (fd == -1) { diff --git a/src/core/lib/gpr/spinlock.h b/src/core/util/spinlock.h similarity index 93% rename from src/core/lib/gpr/spinlock.h rename to src/core/util/spinlock.h index 085ec8b37b1..b46db8e2a6f 100644 --- a/src/core/lib/gpr/spinlock.h +++ b/src/core/util/spinlock.h @@ -16,8 +16,8 @@ // // -#ifndef GRPC_SRC_CORE_LIB_GPR_SPINLOCK_H -#define GRPC_SRC_CORE_LIB_GPR_SPINLOCK_H +#ifndef GRPC_SRC_CORE_UTIL_SPINLOCK_H +#define GRPC_SRC_CORE_UTIL_SPINLOCK_H #include @@ -50,4 +50,4 @@ struct gpr_spinlock { do { \ } while (!gpr_spinlock_trylock((lock))) -#endif // GRPC_SRC_CORE_LIB_GPR_SPINLOCK_H +#endif // GRPC_SRC_CORE_UTIL_SPINLOCK_H diff --git a/src/core/lib/gpr/string.cc b/src/core/util/string.cc similarity index 99% rename from src/core/lib/gpr/string.cc rename to src/core/util/string.cc index 4d23c89c78b..7efbd09f51f 100644 --- a/src/core/lib/gpr/string.cc +++ b/src/core/util/string.cc @@ -18,7 +18,7 @@ #include -#include "src/core/lib/gpr/string.h" +#include "src/core/util/string.h" #include #include @@ -34,8 +34,8 @@ #include #include -#include "src/core/lib/gpr/useful.h" #include "src/core/lib/gprpp/crash.h" +#include "src/core/util/useful.h" char* gpr_strdup(const char* src) { char* dst; diff --git a/src/core/lib/gpr/string.h b/src/core/util/string.h similarity index 97% rename from src/core/lib/gpr/string.h rename to src/core/util/string.h index 7f4fae9df30..66f3d0f8344 100644 --- a/src/core/lib/gpr/string.h +++ b/src/core/util/string.h @@ -16,8 +16,8 @@ // // -#ifndef GRPC_SRC_CORE_LIB_GPR_STRING_H -#define GRPC_SRC_CORE_LIB_GPR_STRING_H +#ifndef GRPC_SRC_CORE_UTIL_STRING_H +#define GRPC_SRC_CORE_UTIL_STRING_H #include @@ -109,4 +109,4 @@ void* gpr_memrchr(const void* s, int c, size_t n); // Otherwise, it returns false. bool gpr_parse_bool_value(const char* value, bool* dst); -#endif // GRPC_SRC_CORE_LIB_GPR_STRING_H +#endif // GRPC_SRC_CORE_UTIL_STRING_H diff --git a/src/core/lib/gpr/subprocess.h b/src/core/util/subprocess.h similarity index 92% rename from src/core/lib/gpr/subprocess.h rename to src/core/util/subprocess.h index 71d4796fde6..569f10a0309 100644 --- a/src/core/lib/gpr/subprocess.h +++ b/src/core/util/subprocess.h @@ -16,8 +16,8 @@ // // -#ifndef GRPC_SRC_CORE_LIB_GPR_SUBPROCESS_H -#define GRPC_SRC_CORE_LIB_GPR_SUBPROCESS_H +#ifndef GRPC_SRC_CORE_UTIL_SUBPROCESS_H +#define GRPC_SRC_CORE_UTIL_SUBPROCESS_H #include @@ -43,4 +43,4 @@ int gpr_subprocess_join(gpr_subprocess* p); void gpr_subprocess_interrupt(gpr_subprocess* p); int gpr_subprocess_get_process_id(gpr_subprocess* p); -#endif // GRPC_SRC_CORE_LIB_GPR_SUBPROCESS_H +#endif // GRPC_SRC_CORE_UTIL_SUBPROCESS_H diff --git a/src/core/lib/gpr/subprocess_posix.cc b/src/core/util/subprocess_posix.cc similarity index 98% rename from src/core/lib/gpr/subprocess_posix.cc rename to src/core/util/subprocess_posix.cc index 5444bd82201..f7232d38229 100644 --- a/src/core/lib/gpr/subprocess_posix.cc +++ b/src/core/util/subprocess_posix.cc @@ -28,14 +28,15 @@ #include +#include "absl/log/check.h" #include "absl/strings/substitute.h" #include #include -#include "src/core/lib/gpr/subprocess.h" #include "src/core/lib/gprpp/memory.h" #include "src/core/lib/gprpp/strerror.h" +#include "src/core/util/subprocess.h" struct gpr_subprocess { int pid; @@ -81,8 +82,8 @@ gpr_subprocess* gpr_subprocess_create_with_envp(int argc, const char** argv, int stdout_pipe[2]; int p0 = pipe(stdin_pipe); int p1 = pipe(stdout_pipe); - GPR_ASSERT(p0 != -1); - GPR_ASSERT(p1 != -1); + CHECK_NE(p0, -1); + CHECK_NE(p1, -1); pid = fork(); if (pid == -1) { return nullptr; @@ -145,7 +146,7 @@ bool gpr_subprocess_communicate(gpr_subprocess* p, std::string& input_data, continue; } else { std::cerr << "select: " << strerror(errno) << std::endl; - GPR_ASSERT(0); + CHECK(0); } } @@ -192,7 +193,7 @@ bool gpr_subprocess_communicate(gpr_subprocess* p, std::string& input_data, while (waitpid(p->pid, &status, 0) == -1) { if (errno != EINTR) { std::cerr << "waitpid: " << strerror(errno) << std::endl; - GPR_ASSERT(0); + CHECK(0); } } diff --git a/src/core/lib/gpr/subprocess_windows.cc b/src/core/util/subprocess_windows.cc similarity index 97% rename from src/core/lib/gpr/subprocess_windows.cc rename to src/core/util/subprocess_windows.cc index 3efadd2a9b0..d85b04b8b58 100644 --- a/src/core/lib/gpr/subprocess_windows.cc +++ b/src/core/util/subprocess_windows.cc @@ -30,10 +30,10 @@ #include #include -#include "src/core/lib/gpr/string.h" -#include "src/core/lib/gpr/subprocess.h" #include "src/core/lib/gprpp/crash.h" #include "src/core/lib/gprpp/tchar.h" +#include "src/core/util/string.h" +#include "src/core/util/subprocess.h" struct gpr_subprocess { PROCESS_INFORMATION pi; diff --git a/src/core/lib/gpr/sync.cc b/src/core/util/sync.cc similarity index 96% rename from src/core/lib/gpr/sync.cc rename to src/core/util/sync.cc index 446fe523751..b70435a992b 100644 --- a/src/core/lib/gpr/sync.cc +++ b/src/core/util/sync.cc @@ -22,6 +22,8 @@ #include +#include "absl/log/check.h" + #include #include #include @@ -59,11 +61,11 @@ void gpr_event_init(gpr_event* ev) { void gpr_event_set(gpr_event* ev, void* value) { struct sync_array_s* s = hash(ev); gpr_mu_lock(&s->mu); - GPR_ASSERT(gpr_atm_acq_load(&ev->state) == 0); + CHECK_EQ(gpr_atm_acq_load(&ev->state), 0); gpr_atm_rel_store(&ev->state, (gpr_atm)value); gpr_cv_broadcast(&s->cv); gpr_mu_unlock(&s->mu); - GPR_ASSERT(value != nullptr); + CHECK_NE(value, nullptr); } void* gpr_event_get(gpr_event* ev) { @@ -102,7 +104,7 @@ void gpr_refn(gpr_refcount* r, int n) { int gpr_unref(gpr_refcount* r) { gpr_atm prior = gpr_atm_full_fetch_add(&r->count, -1); - GPR_ASSERT(prior > 0); + CHECK_GT(prior, 0); return prior == 1; } diff --git a/src/core/lib/gpr/sync_abseil.cc b/src/core/util/sync_abseil.cc similarity index 100% rename from src/core/lib/gpr/sync_abseil.cc rename to src/core/util/sync_abseil.cc diff --git a/src/core/lib/gpr/time.cc b/src/core/util/time.cc similarity index 95% rename from src/core/lib/gpr/time.cc rename to src/core/util/time.cc index 472cd204e11..a46e95ef352 100644 --- a/src/core/lib/gpr/time.cc +++ b/src/core/util/time.cc @@ -24,6 +24,8 @@ #include #include +#include "absl/log/check.h" + #include #include @@ -31,7 +33,7 @@ int gpr_time_cmp(gpr_timespec a, gpr_timespec b) { int cmp = (a.tv_sec > b.tv_sec) - (a.tv_sec < b.tv_sec); - GPR_ASSERT(a.clock_type == b.clock_type); + CHECK(a.clock_type == b.clock_type); if (cmp == 0 && a.tv_sec != INT64_MAX && a.tv_sec != INT64_MIN) { cmp = (a.tv_nsec > b.tv_nsec) - (a.tv_nsec < b.tv_nsec); } @@ -79,7 +81,7 @@ static gpr_timespec to_seconds_from_sub_second_time(int64_t time_in_units, } else if (time_in_units == INT64_MIN) { out = gpr_inf_past(type); } else { - GPR_DEBUG_ASSERT(GPR_NS_PER_SEC % units_per_sec == 0); + DCHECK_EQ(GPR_NS_PER_SEC % units_per_sec, 0); out.tv_sec = time_in_units / units_per_sec; out.tv_nsec = @@ -139,11 +141,11 @@ gpr_timespec gpr_time_from_hours(int64_t h, gpr_clock_type clock_type) { gpr_timespec gpr_time_add(gpr_timespec a, gpr_timespec b) { gpr_timespec sum; int64_t inc = 0; - GPR_ASSERT(b.clock_type == GPR_TIMESPAN); + CHECK(b.clock_type == GPR_TIMESPAN); // tv_nsec in a timespan is always +ve. -ve timespan is represented as (-ve // tv_sec, +ve tv_nsec). For example, timespan = -2.5 seconds is represented // as {-3, 5e8, GPR_TIMESPAN} - GPR_ASSERT(b.tv_nsec >= 0); + CHECK_GE(b.tv_nsec, 0); sum.clock_type = a.clock_type; sum.tv_nsec = a.tv_nsec + b.tv_nsec; if (sum.tv_nsec >= GPR_NS_PER_SEC) { @@ -177,9 +179,9 @@ gpr_timespec gpr_time_sub(gpr_timespec a, gpr_timespec b) { // tv_nsec in a timespan is always +ve. -ve timespan is represented as (-ve // tv_sec, +ve tv_nsec). For example, timespan = -2.5 seconds is represented // as {-3, 5e8, GPR_TIMESPAN} - GPR_ASSERT(b.tv_nsec >= 0); + CHECK_GE(b.tv_nsec, 0); } else { - GPR_ASSERT(a.clock_type == b.clock_type); + CHECK(a.clock_type == b.clock_type); diff.clock_type = GPR_TIMESPAN; } diff.tv_nsec = a.tv_nsec - b.tv_nsec; @@ -210,8 +212,8 @@ gpr_timespec gpr_time_sub(gpr_timespec a, gpr_timespec b) { int gpr_time_similar(gpr_timespec a, gpr_timespec b, gpr_timespec threshold) { int cmp_ab; - GPR_ASSERT(a.clock_type == b.clock_type); - GPR_ASSERT(threshold.clock_type == GPR_TIMESPAN); + CHECK(a.clock_type == b.clock_type); + CHECK(threshold.clock_type == GPR_TIMESPAN); cmp_ab = gpr_time_cmp(a, b); if (cmp_ab == 0) return 1; diff --git a/src/core/lib/gpr/time_precise.cc b/src/core/util/time_precise.cc similarity index 99% rename from src/core/lib/gpr/time_precise.cc rename to src/core/util/time_precise.cc index 46efc61722e..b675777a19e 100644 --- a/src/core/lib/gpr/time_precise.cc +++ b/src/core/util/time_precise.cc @@ -28,8 +28,8 @@ #include #include -#include "src/core/lib/gpr/time_precise.h" #include "src/core/lib/gprpp/crash.h" +#include "src/core/util/time_precise.h" #ifndef GPR_CYCLE_COUNTER_CUSTOM #if GPR_CYCLE_COUNTER_RDTSC_32 || GPR_CYCLE_COUNTER_RDTSC_64 diff --git a/src/core/lib/gpr/time_precise.h b/src/core/util/time_precise.h similarity index 93% rename from src/core/lib/gpr/time_precise.h rename to src/core/util/time_precise.h index 0afb01e84ca..9decb6d4cfd 100644 --- a/src/core/lib/gpr/time_precise.h +++ b/src/core/util/time_precise.h @@ -16,8 +16,8 @@ // // -#ifndef GRPC_SRC_CORE_LIB_GPR_TIME_PRECISE_H -#define GRPC_SRC_CORE_LIB_GPR_TIME_PRECISE_H +#ifndef GRPC_SRC_CORE_UTIL_TIME_PRECISE_H +#define GRPC_SRC_CORE_UTIL_TIME_PRECISE_H #include @@ -66,4 +66,4 @@ void gpr_precise_clock_now(gpr_timespec* clk); gpr_timespec gpr_cycle_counter_to_time(gpr_cycle_counter cycles); gpr_timespec gpr_cycle_counter_sub(gpr_cycle_counter a, gpr_cycle_counter b); -#endif // GRPC_SRC_CORE_LIB_GPR_TIME_PRECISE_H +#endif // GRPC_SRC_CORE_UTIL_TIME_PRECISE_H diff --git a/src/core/lib/gpr/tmpfile.h b/src/core/util/tmpfile.h similarity index 88% rename from src/core/lib/gpr/tmpfile.h rename to src/core/util/tmpfile.h index 54826b03e75..d1ed3d0558c 100644 --- a/src/core/lib/gpr/tmpfile.h +++ b/src/core/util/tmpfile.h @@ -16,8 +16,8 @@ // // -#ifndef GRPC_SRC_CORE_LIB_GPR_TMPFILE_H -#define GRPC_SRC_CORE_LIB_GPR_TMPFILE_H +#ifndef GRPC_SRC_CORE_UTIL_TMPFILE_H +#define GRPC_SRC_CORE_UTIL_TMPFILE_H #include @@ -29,4 +29,4 @@ // unless an error occurs in which case it will be set to NULL. FILE* gpr_tmpfile(const char* prefix, char** tmp_filename); -#endif // GRPC_SRC_CORE_LIB_GPR_TMPFILE_H +#endif // GRPC_SRC_CORE_UTIL_TMPFILE_H diff --git a/src/core/lib/gpr/useful.h b/src/core/util/useful.h similarity index 97% rename from src/core/lib/gpr/useful.h rename to src/core/util/useful.h index b1196d449c4..d3ff937561e 100644 --- a/src/core/lib/gpr/useful.h +++ b/src/core/util/useful.h @@ -16,8 +16,8 @@ // // -#ifndef GRPC_SRC_CORE_LIB_GPR_USEFUL_H -#define GRPC_SRC_CORE_LIB_GPR_USEFUL_H +#ifndef GRPC_SRC_CORE_UTIL_USEFUL_H +#define GRPC_SRC_CORE_UTIL_USEFUL_H #include @@ -181,4 +181,4 @@ inline uint32_t RoundUpToPowerOf2(uint32_t v) { #define GPR_ARRAY_SIZE(array) (sizeof(array) / sizeof(*(array))) -#endif // GRPC_SRC_CORE_LIB_GPR_USEFUL_H +#endif // GRPC_SRC_CORE_UTIL_USEFUL_H diff --git a/src/core/lib/gpr/windows/cpu.cc b/src/core/util/windows/cpu.cc similarity index 100% rename from src/core/lib/gpr/windows/cpu.cc rename to src/core/util/windows/cpu.cc diff --git a/src/core/lib/gpr/windows/log.cc b/src/core/util/windows/log.cc similarity index 57% rename from src/core/lib/gpr/windows/log.cc rename to src/core/util/windows/log.cc index 4dc48698140..722e4bd9a83 100644 --- a/src/core/lib/gpr/windows/log.cc +++ b/src/core/util/windows/log.cc @@ -29,11 +29,9 @@ #include #include -#include "src/core/lib/gpr/string.h" #include "src/core/lib/gprpp/crash.h" #include "src/core/lib/gprpp/examine_stack.h" - -int gpr_should_log_stacktrace(gpr_log_severity severity); +#include "src/core/util/string.h" void gpr_log(const char* file, int line, gpr_log_severity severity, const char* format, ...) { @@ -72,45 +70,4 @@ void gpr_log(const char* file, int line, gpr_log_severity severity, gpr_free(message); } -// Simple starter implementation -void gpr_platform_log(gpr_log_func_args* args) { - const char* final_slash; - const char* display_file; - char time_buffer[64]; - time_t timer; - gpr_timespec now = gpr_now(GPR_CLOCK_REALTIME); - struct tm tm; - - timer = (time_t)now.tv_sec; - final_slash = strrchr(args->file, '\\'); - if (final_slash == NULL) - display_file = args->file; - else - display_file = final_slash + 1; - - if (localtime_s(&tm, &timer)) { - strcpy(time_buffer, "error:localtime"); - } else if (0 == - strftime(time_buffer, sizeof(time_buffer), "%m%d %H:%M:%S", &tm)) { - strcpy(time_buffer, "error:strftime"); - } - - absl::optional stack_trace = - gpr_should_log_stacktrace(args->severity) - ? grpc_core::GetCurrentStackTrace() - : absl::nullopt; - if (stack_trace) { - fprintf(stderr, "%s%s.%09u %5lu %s:%d] %s\n%s\n", - gpr_log_severity_string(args->severity), time_buffer, - (int)(now.tv_nsec), GetCurrentThreadId(), display_file, args->line, - args->message, stack_trace->c_str()); - } else { - fprintf(stderr, "%s%s.%09u %5lu %s:%d] %s\n", - gpr_log_severity_string(args->severity), time_buffer, - (int)(now.tv_nsec), GetCurrentThreadId(), display_file, args->line, - args->message); - } - fflush(stderr); -} - #endif // GPR_WINDOWS_LOG diff --git a/src/core/lib/gpr/windows/string.cc b/src/core/util/windows/string.cc similarity index 97% rename from src/core/lib/gpr/windows/string.cc rename to src/core/util/windows/string.cc index 603303120b1..c95c4b3fb16 100644 --- a/src/core/lib/gpr/windows/string.cc +++ b/src/core/util/windows/string.cc @@ -29,7 +29,7 @@ #include #include -#include "src/core/lib/gpr/string.h" +#include "src/core/util/string.h" int gpr_asprintf(char** strp, const char* format, ...) { va_list args; diff --git a/src/core/lib/gpr/windows/string_util.cc b/src/core/util/windows/string_util.cc similarity index 97% rename from src/core/lib/gpr/windows/string_util.cc rename to src/core/util/windows/string_util.cc index b56fdd17926..c39152e6037 100644 --- a/src/core/lib/gpr/windows/string_util.cc +++ b/src/core/util/windows/string_util.cc @@ -36,8 +36,8 @@ #include #include -#include "src/core/lib/gpr/string.h" #include "src/core/lib/gprpp/tchar.h" +#include "src/core/util/string.h" char* gpr_format_message(int messageid) { LPTSTR tmessage; diff --git a/src/core/lib/gpr/windows/sync.cc b/src/core/util/windows/sync.cc similarity index 98% rename from src/core/lib/gpr/windows/sync.cc rename to src/core/util/windows/sync.cc index 2fb6748f89b..800188bf29d 100644 --- a/src/core/lib/gpr/windows/sync.cc +++ b/src/core/util/windows/sync.cc @@ -23,6 +23,8 @@ #if defined(GPR_WINDOWS) && !defined(GPR_ABSEIL_SYNC) && \ !defined(GPR_CUSTOM_SYNC) +#include "absl/log/check.h" + #include #include #include @@ -38,7 +40,7 @@ void gpr_mu_destroy(gpr_mu* mu) { DeleteCriticalSection(&mu->cs); } void gpr_mu_lock(gpr_mu* mu) { EnterCriticalSection(&mu->cs); - GPR_ASSERT(!mu->locked); + CHECK(!mu->locked); mu->locked = 1; } diff --git a/src/core/lib/gpr/windows/time.cc b/src/core/util/windows/time.cc similarity index 95% rename from src/core/lib/gpr/windows/time.cc rename to src/core/util/windows/time.cc index 52b23c421d8..b80a4a5a14b 100644 --- a/src/core/lib/gpr/windows/time.cc +++ b/src/core/util/windows/time.cc @@ -26,11 +26,13 @@ #include #include +#include "absl/log/check.h" + #include #include -#include "src/core/lib/gpr/time_precise.h" #include "src/core/lib/gprpp/crash.h" +#include "src/core/util/time_precise.h" static LARGE_INTEGER g_start_time = []() { LARGE_INTEGER x; @@ -97,7 +99,8 @@ void gpr_sleep_until(gpr_timespec until) { delta = gpr_time_sub(until, now); sleep_millis = delta.tv_sec * GPR_MS_PER_SEC + delta.tv_nsec / GPR_NS_PER_MS; - GPR_ASSERT((sleep_millis >= 0) && (sleep_millis <= INT_MAX)); + CHECK_GE(sleep_millis, 0); + CHECK_LE(sleep_millis, INT_MAX); Sleep((DWORD)sleep_millis); } } diff --git a/src/core/lib/gpr/windows/tmpfile.cc b/src/core/util/windows/tmpfile.cc similarity index 98% rename from src/core/lib/gpr/windows/tmpfile.cc rename to src/core/util/windows/tmpfile.cc index 37ac4f64bcb..cd3838bc4ee 100644 --- a/src/core/lib/gpr/windows/tmpfile.cc +++ b/src/core/util/windows/tmpfile.cc @@ -29,9 +29,9 @@ #include #include -#include "src/core/lib/gpr/tmpfile.h" #include "src/core/lib/gprpp/crash.h" #include "src/core/lib/gprpp/tchar.h" +#include "src/core/util/tmpfile.h" FILE* gpr_tmpfile(const char* prefix, char** tmp_filename_out) { FILE* result = NULL; diff --git a/src/core/ext/xds/certificate_provider_store.cc b/src/core/xds/grpc/certificate_provider_store.cc similarity index 98% rename from src/core/ext/xds/certificate_provider_store.cc rename to src/core/xds/grpc/certificate_provider_store.cc index 9bfd22428e7..9915780957f 100644 --- a/src/core/ext/xds/certificate_provider_store.cc +++ b/src/core/xds/grpc/certificate_provider_store.cc @@ -16,7 +16,7 @@ // // -#include "src/core/ext/xds/certificate_provider_store.h" +#include "src/core/xds/grpc/certificate_provider_store.h" #include "absl/strings/str_cat.h" diff --git a/src/core/ext/xds/certificate_provider_store.h b/src/core/xds/grpc/certificate_provider_store.h similarity index 95% rename from src/core/ext/xds/certificate_provider_store.h rename to src/core/xds/grpc/certificate_provider_store.h index 643f1019c6f..ffee3b0efba 100644 --- a/src/core/ext/xds/certificate_provider_store.h +++ b/src/core/xds/grpc/certificate_provider_store.h @@ -16,8 +16,8 @@ // // -#ifndef GRPC_SRC_CORE_EXT_XDS_CERTIFICATE_PROVIDER_STORE_H -#define GRPC_SRC_CORE_EXT_XDS_CERTIFICATE_PROVIDER_STORE_H +#ifndef GRPC_SRC_CORE_XDS_GRPC_CERTIFICATE_PROVIDER_STORE_H +#define GRPC_SRC_CORE_XDS_GRPC_CERTIFICATE_PROVIDER_STORE_H #include #include @@ -29,7 +29,6 @@ #include #include -#include "src/core/lib/gpr/useful.h" #include "src/core/lib/gprpp/orphanable.h" #include "src/core/lib/gprpp/ref_counted_ptr.h" #include "src/core/lib/gprpp/sync.h" @@ -41,6 +40,7 @@ #include "src/core/lib/security/certificate_provider/certificate_provider_factory.h" #include "src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h" #include "src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h" +#include "src/core/util/useful.h" namespace grpc_core { @@ -130,4 +130,4 @@ class CertificateProviderStore final } // namespace grpc_core -#endif // GRPC_SRC_CORE_EXT_XDS_CERTIFICATE_PROVIDER_STORE_H +#endif // GRPC_SRC_CORE_XDS_GRPC_CERTIFICATE_PROVIDER_STORE_H diff --git a/src/core/ext/xds/file_watcher_certificate_provider_factory.cc b/src/core/xds/grpc/file_watcher_certificate_provider_factory.cc similarity index 98% rename from src/core/ext/xds/file_watcher_certificate_provider_factory.cc rename to src/core/xds/grpc/file_watcher_certificate_provider_factory.cc index 8671ac4c6d5..0d9acdca546 100644 --- a/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +++ b/src/core/xds/grpc/file_watcher_certificate_provider_factory.cc @@ -16,7 +16,7 @@ // // -#include "src/core/ext/xds/file_watcher_certificate_provider_factory.h" +#include "src/core/xds/grpc/file_watcher_certificate_provider_factory.h" #include #include diff --git a/src/core/ext/xds/file_watcher_certificate_provider_factory.h b/src/core/xds/grpc/file_watcher_certificate_provider_factory.h similarity index 91% rename from src/core/ext/xds/file_watcher_certificate_provider_factory.h rename to src/core/xds/grpc/file_watcher_certificate_provider_factory.h index 94871771e88..06f680148d2 100644 --- a/src/core/ext/xds/file_watcher_certificate_provider_factory.h +++ b/src/core/xds/grpc/file_watcher_certificate_provider_factory.h @@ -16,8 +16,8 @@ // // -#ifndef GRPC_SRC_CORE_EXT_XDS_FILE_WATCHER_CERTIFICATE_PROVIDER_FACTORY_H -#define GRPC_SRC_CORE_EXT_XDS_FILE_WATCHER_CERTIFICATE_PROVIDER_FACTORY_H +#ifndef GRPC_SRC_CORE_XDS_GRPC_FILE_WATCHER_CERTIFICATE_PROVIDER_FACTORY_H +#define GRPC_SRC_CORE_XDS_GRPC_FILE_WATCHER_CERTIFICATE_PROVIDER_FACTORY_H #include @@ -78,4 +78,4 @@ class FileWatcherCertificateProviderFactory final } // namespace grpc_core -#endif // GRPC_SRC_CORE_EXT_XDS_FILE_WATCHER_CERTIFICATE_PROVIDER_FACTORY_H +#endif // GRPC_SRC_CORE_XDS_GRPC_FILE_WATCHER_CERTIFICATE_PROVIDER_FACTORY_H diff --git a/src/core/ext/xds/upb_utils.h b/src/core/xds/grpc/upb_utils.h similarity index 90% rename from src/core/ext/xds/upb_utils.h rename to src/core/xds/grpc/upb_utils.h index 3c994cdd5ee..e2123f39cbc 100644 --- a/src/core/ext/xds/upb_utils.h +++ b/src/core/xds/grpc/upb_utils.h @@ -14,8 +14,8 @@ // limitations under the License. // -#ifndef GRPC_SRC_CORE_EXT_XDS_UPB_UTILS_H -#define GRPC_SRC_CORE_EXT_XDS_UPB_UTILS_H +#ifndef GRPC_SRC_CORE_XDS_GRPC_UPB_UTILS_H +#define GRPC_SRC_CORE_XDS_GRPC_UPB_UTILS_H #include @@ -42,4 +42,4 @@ inline std::string UpbStringToStdString(const upb_StringView& str) { } // namespace grpc_core -#endif // GRPC_SRC_CORE_EXT_XDS_UPB_UTILS_H +#endif // GRPC_SRC_CORE_XDS_GRPC_UPB_UTILS_H diff --git a/src/core/ext/xds/xds_audit_logger_registry.cc b/src/core/xds/grpc/xds_audit_logger_registry.cc similarity index 97% rename from src/core/ext/xds/xds_audit_logger_registry.cc rename to src/core/xds/grpc/xds_audit_logger_registry.cc index ac76cac13d0..328849808ce 100644 --- a/src/core/ext/xds/xds_audit_logger_registry.cc +++ b/src/core/xds/grpc/xds_audit_logger_registry.cc @@ -14,7 +14,7 @@ // limitations under the License. // -#include "src/core/ext/xds/xds_audit_logger_registry.h" +#include "src/core/xds/grpc/xds_audit_logger_registry.h" #include #include @@ -28,10 +28,10 @@ #include -#include "src/core/ext/xds/xds_common_types.h" #include "src/core/lib/gprpp/match.h" #include "src/core/lib/gprpp/validation_errors.h" #include "src/core/lib/security/authorization/audit_logging.h" +#include "src/core/xds/grpc/xds_common_types.h" namespace grpc_core { diff --git a/src/core/ext/xds/xds_audit_logger_registry.h b/src/core/xds/grpc/xds_audit_logger_registry.h similarity index 89% rename from src/core/ext/xds/xds_audit_logger_registry.h rename to src/core/xds/grpc/xds_audit_logger_registry.h index c9b0b6f4cb5..ba9ad888fec 100644 --- a/src/core/ext/xds/xds_audit_logger_registry.h +++ b/src/core/xds/grpc/xds_audit_logger_registry.h @@ -14,8 +14,8 @@ // limitations under the License. // -#ifndef GRPC_SRC_CORE_EXT_XDS_XDS_AUDIT_LOGGER_REGISTRY_H -#define GRPC_SRC_CORE_EXT_XDS_XDS_AUDIT_LOGGER_REGISTRY_H +#ifndef GRPC_SRC_CORE_XDS_GRPC_XDS_AUDIT_LOGGER_REGISTRY_H +#define GRPC_SRC_CORE_XDS_GRPC_XDS_AUDIT_LOGGER_REGISTRY_H #include #include @@ -25,9 +25,9 @@ #include -#include "src/core/ext/xds/xds_resource_type.h" #include "src/core/lib/gprpp/validation_errors.h" #include "src/core/lib/json/json.h" +#include "src/core/xds/xds_client/xds_resource_type.h" namespace grpc_core { @@ -65,4 +65,4 @@ class XdsAuditLoggerRegistry final { } // namespace grpc_core -#endif // GRPC_SRC_CORE_EXT_XDS_XDS_AUDIT_LOGGER_REGISTRY_H +#endif // GRPC_SRC_CORE_XDS_GRPC_XDS_AUDIT_LOGGER_REGISTRY_H diff --git a/src/core/ext/xds/xds_bootstrap_grpc.cc b/src/core/xds/grpc/xds_bootstrap_grpc.cc similarity index 99% rename from src/core/ext/xds/xds_bootstrap_grpc.cc rename to src/core/xds/grpc/xds_bootstrap_grpc.cc index b5b0642cfa7..e6f97cdbfeb 100644 --- a/src/core/ext/xds/xds_bootstrap_grpc.cc +++ b/src/core/xds/grpc/xds_bootstrap_grpc.cc @@ -14,7 +14,7 @@ // limitations under the License. // -#include "src/core/ext/xds/xds_bootstrap_grpc.h" +#include "src/core/xds/grpc/xds_bootstrap_grpc.h" #include @@ -37,7 +37,6 @@ #include #include "src/core/lib/config/core_configuration.h" -#include "src/core/lib/gpr/string.h" #include "src/core/lib/gprpp/env.h" #include "src/core/lib/gprpp/ref_counted_ptr.h" #include "src/core/lib/json/json.h" @@ -45,6 +44,7 @@ #include "src/core/lib/json/json_reader.h" #include "src/core/lib/json/json_writer.h" #include "src/core/lib/security/credentials/channel_creds_registry.h" +#include "src/core/util/string.h" namespace grpc_core { diff --git a/src/core/ext/xds/xds_bootstrap_grpc.h b/src/core/xds/grpc/xds_bootstrap_grpc.h similarity index 92% rename from src/core/ext/xds/xds_bootstrap_grpc.h rename to src/core/xds/grpc/xds_bootstrap_grpc.h index 7134cac22ee..a4a41b4e50e 100644 --- a/src/core/ext/xds/xds_bootstrap_grpc.h +++ b/src/core/xds/grpc/xds_bootstrap_grpc.h @@ -14,8 +14,8 @@ // limitations under the License. // -#ifndef GRPC_SRC_CORE_EXT_XDS_XDS_BOOTSTRAP_GRPC_H -#define GRPC_SRC_CORE_EXT_XDS_XDS_BOOTSTRAP_GRPC_H +#ifndef GRPC_SRC_CORE_XDS_GRPC_XDS_BOOTSTRAP_GRPC_H +#define GRPC_SRC_CORE_XDS_GRPC_XDS_BOOTSTRAP_GRPC_H #include #include @@ -29,18 +29,18 @@ #include -#include "src/core/ext/xds/certificate_provider_store.h" -#include "src/core/ext/xds/xds_audit_logger_registry.h" -#include "src/core/ext/xds/xds_bootstrap.h" -#include "src/core/ext/xds/xds_cluster_specifier_plugin.h" -#include "src/core/ext/xds/xds_http_filters.h" -#include "src/core/ext/xds/xds_lb_policy_registry.h" #include "src/core/lib/gprpp/ref_counted_ptr.h" #include "src/core/lib/gprpp/validation_errors.h" #include "src/core/lib/json/json.h" #include "src/core/lib/json/json_args.h" #include "src/core/lib/json/json_object_loader.h" #include "src/core/lib/security/credentials/channel_creds_registry.h" +#include "src/core/xds/grpc/certificate_provider_store.h" +#include "src/core/xds/grpc/xds_audit_logger_registry.h" +#include "src/core/xds/grpc/xds_cluster_specifier_plugin.h" +#include "src/core/xds/grpc/xds_http_filters.h" +#include "src/core/xds/grpc/xds_lb_policy_registry.h" +#include "src/core/xds/xds_client/xds_bootstrap.h" namespace grpc_core { @@ -194,4 +194,4 @@ class GrpcXdsBootstrap final : public XdsBootstrap { } // namespace grpc_core -#endif // GRPC_SRC_CORE_EXT_XDS_XDS_BOOTSTRAP_GRPC_H +#endif // GRPC_SRC_CORE_XDS_GRPC_XDS_BOOTSTRAP_GRPC_H diff --git a/src/core/ext/xds/xds_certificate_provider.cc b/src/core/xds/grpc/xds_certificate_provider.cc similarity index 97% rename from src/core/ext/xds/xds_certificate_provider.cc rename to src/core/xds/grpc/xds_certificate_provider.cc index 365294923de..58ce2da4446 100644 --- a/src/core/ext/xds/xds_certificate_provider.cc +++ b/src/core/xds/grpc/xds_certificate_provider.cc @@ -16,11 +16,12 @@ // // -#include "src/core/ext/xds/xds_certificate_provider.h" +#include "src/core/xds/grpc/xds_certificate_provider.h" #include #include "absl/functional/bind_front.h" +#include "absl/log/check.h" #include "absl/types/optional.h" #include @@ -186,7 +187,7 @@ void XdsCertificateProvider::WatchStatusCallback(std::string cert_name, } } else if (!root_being_watched && root_cert_watcher_ != nullptr) { // Cancel root cert watch. - GPR_ASSERT(root_cert_provider_ != nullptr); + CHECK(root_cert_provider_ != nullptr); root_cert_provider_->distributor()->CancelTlsCertificatesWatch( root_cert_watcher_); root_cert_watcher_ = nullptr; @@ -206,7 +207,7 @@ void XdsCertificateProvider::WatchStatusCallback(std::string cert_name, std::move(watcher), absl::nullopt, identity_cert_name_); } } else if (!identity_being_watched && identity_cert_watcher_ != nullptr) { - GPR_ASSERT(identity_cert_provider_ != nullptr); + CHECK(identity_cert_provider_ != nullptr); identity_cert_provider_->distributor()->CancelTlsCertificatesWatch( identity_cert_watcher_); identity_cert_watcher_ = nullptr; diff --git a/src/core/ext/xds/xds_certificate_provider.h b/src/core/xds/grpc/xds_certificate_provider.h similarity index 94% rename from src/core/ext/xds/xds_certificate_provider.h rename to src/core/xds/grpc/xds_certificate_provider.h index d5afc6dfcb0..14747d99c14 100644 --- a/src/core/ext/xds/xds_certificate_provider.h +++ b/src/core/xds/grpc/xds_certificate_provider.h @@ -16,8 +16,8 @@ // // -#ifndef GRPC_SRC_CORE_EXT_XDS_XDS_CERTIFICATE_PROVIDER_H -#define GRPC_SRC_CORE_EXT_XDS_XDS_CERTIFICATE_PROVIDER_H +#ifndef GRPC_SRC_CORE_XDS_GRPC_XDS_CERTIFICATE_PROVIDER_H +#define GRPC_SRC_CORE_XDS_GRPC_XDS_CERTIFICATE_PROVIDER_H #include #include @@ -31,13 +31,13 @@ #include #include -#include "src/core/lib/gpr/useful.h" #include "src/core/lib/gprpp/ref_counted_ptr.h" #include "src/core/lib/gprpp/sync.h" #include "src/core/lib/gprpp/unique_type_name.h" #include "src/core/lib/matchers/matchers.h" #include "src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h" #include "src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h" +#include "src/core/util/useful.h" namespace grpc_core { @@ -112,4 +112,4 @@ class XdsCertificateProvider final : public grpc_tls_certificate_provider { } // namespace grpc_core -#endif // GRPC_SRC_CORE_EXT_XDS_XDS_CERTIFICATE_PROVIDER_H +#endif // GRPC_SRC_CORE_XDS_GRPC_XDS_CERTIFICATE_PROVIDER_H diff --git a/src/core/ext/xds/xds_client_grpc.cc b/src/core/xds/grpc/xds_client_grpc.cc similarity index 92% rename from src/core/ext/xds/xds_client_grpc.cc rename to src/core/xds/grpc/xds_client_grpc.cc index 5adfe3f25b1..3b00fed06e4 100644 --- a/src/core/ext/xds/xds_client_grpc.cc +++ b/src/core/xds/grpc/xds_client_grpc.cc @@ -14,7 +14,7 @@ // limitations under the License. // -#include "src/core/ext/xds/xds_client_grpc.h" +#include "src/core/xds/grpc/xds_client_grpc.h" #include #include @@ -24,6 +24,7 @@ #include #include "absl/base/thread_annotations.h" +#include "absl/log/log.h" #include "absl/status/status.h" #include "absl/strings/str_cat.h" #include "absl/strings/string_view.h" @@ -39,14 +40,6 @@ #include #include -#include "src/core/ext/xds/upb_utils.h" -#include "src/core/ext/xds/xds_api.h" -#include "src/core/ext/xds/xds_bootstrap.h" -#include "src/core/ext/xds/xds_bootstrap_grpc.h" -#include "src/core/ext/xds/xds_channel_args.h" -#include "src/core/ext/xds/xds_client.h" -#include "src/core/ext/xds/xds_transport.h" -#include "src/core/ext/xds/xds_transport_grpc.h" #include "src/core/lib/channel/channel_args.h" #include "src/core/lib/channel/metrics.h" #include "src/core/lib/debug/trace.h" @@ -63,6 +56,14 @@ #include "src/core/lib/slice/slice.h" #include "src/core/lib/slice/slice_internal.h" #include "src/core/lib/transport/error_utils.h" +#include "src/core/xds/grpc/upb_utils.h" +#include "src/core/xds/grpc/xds_bootstrap_grpc.h" +#include "src/core/xds/grpc/xds_transport_grpc.h" +#include "src/core/xds/xds_client/xds_api.h" +#include "src/core/xds/xds_client/xds_bootstrap.h" +#include "src/core/xds/xds_client/xds_channel_args.h" +#include "src/core/xds/xds_client/xds_client.h" +#include "src/core/xds/xds_client/xds_transport.h" // If gRPC is built with -DGRPC_XDS_USER_AGENT_NAME_SUFFIX="...", that string // will be appended to the user agent name reported to the xDS server. @@ -99,20 +100,20 @@ const auto kMetricResourceUpdatesValid = "EXPERIMENTAL. A counter of resources received that were considered " "valid. The counter will be incremented even for resources that " "have not changed.", - "{resource}", - {kMetricLabelTarget, kMetricLabelXdsServer, - kMetricLabelXdsResourceType}, - {}, false); + "{resource}", false) + .Labels(kMetricLabelTarget, kMetricLabelXdsServer, + kMetricLabelXdsResourceType) + .Build(); const auto kMetricResourceUpdatesInvalid = GlobalInstrumentsRegistry::RegisterUInt64Counter( "grpc.xds_client.resource_updates_invalid", "EXPERIMENTAL. A counter of resources received that were considered " "invalid.", - "{resource}", - {kMetricLabelTarget, kMetricLabelXdsServer, - kMetricLabelXdsResourceType}, - {}, false); + "{resource}", false) + .Labels(kMetricLabelTarget, kMetricLabelXdsServer, + kMetricLabelXdsResourceType) + .Build(); const auto kMetricServerFailure = GlobalInstrumentsRegistry::RegisterUInt64Counter( @@ -121,7 +122,9 @@ const auto kMetricServerFailure = "unhealthy. A server goes unhealthy when we have a connectivity " "failure or when the ADS stream fails without seeing a response " "message, as per gRFC A57.", - "{failure}", {kMetricLabelTarget, kMetricLabelXdsServer}, {}, false); + "{failure}", false) + .Labels(kMetricLabelTarget, kMetricLabelXdsServer) + .Build(); const auto kMetricConnected = GlobalInstrumentsRegistry::RegisterCallbackInt64Gauge( @@ -132,15 +135,17 @@ const auto kMetricConnected = "ADS stream fails without seeing a response message, as per gRFC " "A57. It will be set to 1 when we receive the first response on " "an ADS stream.", - "{bool}", {kMetricLabelTarget, kMetricLabelXdsServer}, {}, false); + "{bool}", false) + .Labels(kMetricLabelTarget, kMetricLabelXdsServer) + .Build(); const auto kMetricResources = GlobalInstrumentsRegistry::RegisterCallbackInt64Gauge( "grpc.xds_client.resources", "EXPERIMENTAL. Number of xDS resources.", - "{resource}", - {kMetricLabelTarget, kMetricLabelXdsAuthority, - kMetricLabelXdsResourceType, kMetricLabelXdsCacheState}, - {}, false); + "{resource}", false) + .Labels(kMetricLabelTarget, kMetricLabelXdsAuthority, + kMetricLabelXdsResourceType, kMetricLabelXdsCacheState) + .Build(); } // namespace @@ -216,7 +221,7 @@ absl::StatusOr GetBootstrapContents(const char* fallback_config) { // Finally, try fallback config. if (fallback_config != nullptr) { if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) { - gpr_log(GPR_INFO, "Got bootstrap contents from fallback config"); + LOG(INFO) << "Got bootstrap contents from fallback config"; } return fallback_config; } @@ -316,7 +321,7 @@ GrpcXdsClient::GrpcXdsClient( [this](CallbackMetricReporter& reporter) { ReportCallbackMetrics(reporter); }, - {kMetricConnected, kMetricResources})) {} + Duration::Seconds(5), kMetricConnected, kMetricResources)) {} void GrpcXdsClient::Orphaned() { registered_metric_callback_.reset(); diff --git a/src/core/ext/xds/xds_client_grpc.h b/src/core/xds/grpc/xds_client_grpc.h similarity index 90% rename from src/core/ext/xds/xds_client_grpc.h rename to src/core/xds/grpc/xds_client_grpc.h index 0aa17bf50c0..9fdb9bccceb 100644 --- a/src/core/ext/xds/xds_client_grpc.h +++ b/src/core/xds/grpc/xds_client_grpc.h @@ -14,8 +14,8 @@ // limitations under the License. // -#ifndef GRPC_SRC_CORE_EXT_XDS_XDS_CLIENT_GRPC_H -#define GRPC_SRC_CORE_EXT_XDS_XDS_CLIENT_GRPC_H +#ifndef GRPC_SRC_CORE_XDS_GRPC_XDS_CLIENT_GRPC_H +#define GRPC_SRC_CORE_XDS_GRPC_XDS_CLIENT_GRPC_H #include @@ -25,17 +25,17 @@ #include #include -#include "src/core/ext/xds/certificate_provider_store.h" -#include "src/core/ext/xds/xds_bootstrap_grpc.h" -#include "src/core/ext/xds/xds_client.h" -#include "src/core/ext/xds/xds_transport.h" #include "src/core/lib/channel/channel_args.h" #include "src/core/lib/channel/metrics.h" -#include "src/core/lib/gpr/useful.h" #include "src/core/lib/gprpp/orphanable.h" #include "src/core/lib/gprpp/ref_counted_ptr.h" #include "src/core/lib/iomgr/iomgr_fwd.h" #include "src/core/resolver/endpoint_addresses.h" +#include "src/core/util/useful.h" +#include "src/core/xds/grpc/certificate_provider_store.h" +#include "src/core/xds/grpc/xds_bootstrap_grpc.h" +#include "src/core/xds/xds_client/xds_client.h" +#include "src/core/xds/xds_client/xds_transport.h" namespace grpc_core { @@ -106,4 +106,4 @@ void SetXdsFallbackBootstrapConfig(const char* config); } // namespace grpc_core -#endif // GRPC_SRC_CORE_EXT_XDS_XDS_CLIENT_GRPC_H +#endif // GRPC_SRC_CORE_XDS_GRPC_XDS_CLIENT_GRPC_H diff --git a/src/core/ext/xds/xds_cluster.cc b/src/core/xds/grpc/xds_cluster.cc similarity index 98% rename from src/core/ext/xds/xds_cluster.cc rename to src/core/xds/grpc/xds_cluster.cc index 313d513bf74..b136ffa16c7 100644 --- a/src/core/ext/xds/xds_cluster.cc +++ b/src/core/xds/grpc/xds_cluster.cc @@ -14,7 +14,7 @@ // limitations under the License. // -#include "src/core/ext/xds/xds_cluster.h" +#include "src/core/xds/grpc/xds_cluster.h" #include @@ -22,6 +22,7 @@ #include #include +#include "absl/log/check.h" #include "absl/status/status.h" #include "absl/status/statusor.h" #include "absl/strings/match.h" @@ -55,11 +56,6 @@ #include #include -#include "src/core/ext/xds/upb_utils.h" -#include "src/core/ext/xds/xds_client.h" -#include "src/core/ext/xds/xds_common_types.h" -#include "src/core/ext/xds/xds_lb_policy_registry.h" -#include "src/core/ext/xds/xds_resource_type.h" #include "src/core/lib/config/core_configuration.h" #include "src/core/lib/debug/trace.h" #include "src/core/lib/gprpp/host_port.h" @@ -70,6 +66,11 @@ #include "src/core/lib/json/json_writer.h" #include "src/core/lib/matchers/matchers.h" #include "src/core/load_balancing/lb_policy_registry.h" +#include "src/core/xds/grpc/upb_utils.h" +#include "src/core/xds/grpc/xds_common_types.h" +#include "src/core/xds/grpc/xds_lb_policy_registry.h" +#include "src/core/xds/xds_client/xds_client.h" +#include "src/core/xds/xds_client/xds_resource_type.h" namespace grpc_core { @@ -476,7 +477,7 @@ absl::StatusOr> CdsResourceParse( ValidationErrors::ScopedField field(&errors, ".cluster_type"); const auto* custom_cluster_type = envoy_config_cluster_v3_Cluster_cluster_type(cluster); - GPR_ASSERT(custom_cluster_type != nullptr); + CHECK_NE(custom_cluster_type, nullptr); ValidationErrors::ScopedField field2(&errors, ".typed_config"); const auto* typed_config = envoy_config_cluster_v3_Cluster_CustomClusterType_typed_config( diff --git a/src/core/ext/xds/xds_cluster.h b/src/core/xds/grpc/xds_cluster.h similarity index 90% rename from src/core/ext/xds/xds_cluster.h rename to src/core/xds/grpc/xds_cluster.h index 2780da27b83..d680dbdb43e 100644 --- a/src/core/ext/xds/xds_cluster.h +++ b/src/core/xds/grpc/xds_cluster.h @@ -14,8 +14,8 @@ // limitations under the License. // -#ifndef GRPC_SRC_CORE_EXT_XDS_XDS_CLUSTER_H -#define GRPC_SRC_CORE_EXT_XDS_XDS_CLUSTER_H +#ifndef GRPC_SRC_CORE_XDS_GRPC_XDS_CLUSTER_H +#define GRPC_SRC_CORE_XDS_GRPC_XDS_CLUSTER_H #include @@ -35,15 +35,15 @@ #include #include -#include "src/core/ext/xds/xds_bootstrap.h" -#include "src/core/ext/xds/xds_bootstrap_grpc.h" -#include "src/core/ext/xds/xds_client.h" -#include "src/core/ext/xds/xds_common_types.h" -#include "src/core/ext/xds/xds_health_status.h" -#include "src/core/ext/xds/xds_resource_type.h" -#include "src/core/ext/xds/xds_resource_type_impl.h" #include "src/core/lib/json/json.h" #include "src/core/load_balancing/outlier_detection/outlier_detection.h" +#include "src/core/xds/grpc/xds_bootstrap_grpc.h" +#include "src/core/xds/grpc/xds_common_types.h" +#include "src/core/xds/grpc/xds_health_status.h" +#include "src/core/xds/xds_client/xds_bootstrap.h" +#include "src/core/xds/xds_client/xds_client.h" +#include "src/core/xds/xds_client/xds_resource_type.h" +#include "src/core/xds/xds_client/xds_resource_type_impl.h" namespace grpc_core { @@ -141,4 +141,4 @@ class XdsClusterResourceType } // namespace grpc_core -#endif // GRPC_SRC_CORE_EXT_XDS_XDS_CLUSTER_H +#endif // GRPC_SRC_CORE_XDS_GRPC_XDS_CLUSTER_H diff --git a/src/core/ext/xds/xds_cluster_specifier_plugin.cc b/src/core/xds/grpc/xds_cluster_specifier_plugin.cc similarity index 97% rename from src/core/ext/xds/xds_cluster_specifier_plugin.cc rename to src/core/xds/grpc/xds_cluster_specifier_plugin.cc index 2e3e2f511ce..9b6dfb5ca7d 100644 --- a/src/core/ext/xds/xds_cluster_specifier_plugin.cc +++ b/src/core/xds/grpc/xds_cluster_specifier_plugin.cc @@ -14,13 +14,14 @@ // limitations under the License. // -#include "src/core/ext/xds/xds_cluster_specifier_plugin.h" +#include "src/core/xds/grpc/xds_cluster_specifier_plugin.h" #include #include #include +#include "absl/log/check.h" #include "absl/status/statusor.h" #include "absl/strings/str_cat.h" #include "absl/types/variant.h" @@ -91,7 +92,7 @@ Json XdsRouteLookupClusterSpecifierPlugin::GenerateLoadBalancingPolicyConfig( upb_JsonEncode(plugin_config, msg_type, symtab, 0, reinterpret_cast(buf), json_size + 1, status.ptr()); auto json = JsonParse(reinterpret_cast(buf)); - GPR_ASSERT(json.ok()); + CHECK(json.ok()); return Json::FromArray({Json::FromObject( {{"rls_experimental", Json::FromObject({ diff --git a/src/core/ext/xds/xds_cluster_specifier_plugin.h b/src/core/xds/grpc/xds_cluster_specifier_plugin.h similarity index 92% rename from src/core/ext/xds/xds_cluster_specifier_plugin.h rename to src/core/xds/grpc/xds_cluster_specifier_plugin.h index acc0041cdc9..0d54b6f39e4 100644 --- a/src/core/ext/xds/xds_cluster_specifier_plugin.h +++ b/src/core/xds/grpc/xds_cluster_specifier_plugin.h @@ -14,8 +14,8 @@ // limitations under the License. // -#ifndef GRPC_SRC_CORE_EXT_XDS_XDS_CLUSTER_SPECIFIER_PLUGIN_H -#define GRPC_SRC_CORE_EXT_XDS_XDS_CLUSTER_SPECIFIER_PLUGIN_H +#ifndef GRPC_SRC_CORE_XDS_GRPC_XDS_CLUSTER_SPECIFIER_PLUGIN_H +#define GRPC_SRC_CORE_XDS_GRPC_XDS_CLUSTER_SPECIFIER_PLUGIN_H #include #include @@ -27,9 +27,9 @@ #include -#include "src/core/ext/xds/xds_common_types.h" #include "src/core/lib/gprpp/validation_errors.h" #include "src/core/lib/json/json.h" +#include "src/core/xds/grpc/xds_common_types.h" namespace grpc_core { @@ -94,4 +94,4 @@ class XdsClusterSpecifierPluginRegistry final { } // namespace grpc_core -#endif // GRPC_SRC_CORE_EXT_XDS_XDS_CLUSTER_SPECIFIER_PLUGIN_H +#endif // GRPC_SRC_CORE_XDS_GRPC_XDS_CLUSTER_SPECIFIER_PLUGIN_H diff --git a/src/core/ext/xds/xds_common_types.cc b/src/core/xds/grpc/xds_common_types.cc similarity index 99% rename from src/core/ext/xds/xds_common_types.cc rename to src/core/xds/grpc/xds_common_types.cc index aac36bb4f5e..b20cf73d746 100644 --- a/src/core/ext/xds/xds_common_types.cc +++ b/src/core/xds/grpc/xds_common_types.cc @@ -14,7 +14,7 @@ // limitations under the License. // -#include "src/core/ext/xds/xds_common_types.h" +#include "src/core/xds/grpc/xds_common_types.h" #include #include @@ -44,10 +44,10 @@ #include #include -#include "src/core/ext/xds/upb_utils.h" -#include "src/core/ext/xds/xds_bootstrap_grpc.h" -#include "src/core/ext/xds/xds_client.h" #include "src/core/lib/json/json_reader.h" +#include "src/core/xds/grpc/upb_utils.h" +#include "src/core/xds/grpc/xds_bootstrap_grpc.h" +#include "src/core/xds/xds_client/xds_client.h" namespace grpc_core { diff --git a/src/core/ext/xds/xds_common_types.h b/src/core/xds/grpc/xds_common_types.h similarity index 94% rename from src/core/ext/xds/xds_common_types.h rename to src/core/xds/grpc/xds_common_types.h index 038c24de897..1a93e166208 100644 --- a/src/core/ext/xds/xds_common_types.h +++ b/src/core/xds/grpc/xds_common_types.h @@ -14,8 +14,8 @@ // limitations under the License. // -#ifndef GRPC_SRC_CORE_EXT_XDS_XDS_COMMON_TYPES_H -#define GRPC_SRC_CORE_EXT_XDS_XDS_COMMON_TYPES_H +#ifndef GRPC_SRC_CORE_XDS_GRPC_XDS_COMMON_TYPES_H +#define GRPC_SRC_CORE_XDS_GRPC_XDS_COMMON_TYPES_H #include #include @@ -29,11 +29,11 @@ #include -#include "src/core/ext/xds/xds_resource_type.h" #include "src/core/lib/gprpp/time.h" #include "src/core/lib/gprpp/validation_errors.h" #include "src/core/lib/json/json.h" #include "src/core/lib/matchers/matchers.h" +#include "src/core/xds/xds_client/xds_resource_type.h" namespace grpc_core { @@ -105,4 +105,4 @@ absl::optional ExtractXdsExtension( } // namespace grpc_core -#endif // GRPC_SRC_CORE_EXT_XDS_XDS_COMMON_TYPES_H +#endif // GRPC_SRC_CORE_XDS_GRPC_XDS_COMMON_TYPES_H diff --git a/src/core/ext/xds/xds_enabled_server.h b/src/core/xds/grpc/xds_enabled_server.h similarity index 82% rename from src/core/ext/xds/xds_enabled_server.h rename to src/core/xds/grpc/xds_enabled_server.h index ea6edffa6ae..c48ebe9ebdc 100644 --- a/src/core/ext/xds/xds_enabled_server.h +++ b/src/core/xds/grpc/xds_enabled_server.h @@ -14,11 +14,11 @@ // limitations under the License. // -#ifndef GRPC_SRC_CORE_EXT_XDS_XDS_ENABLED_SERVER_H -#define GRPC_SRC_CORE_EXT_XDS_XDS_ENABLED_SERVER_H +#ifndef GRPC_SRC_CORE_XDS_GRPC_XDS_ENABLED_SERVER_H +#define GRPC_SRC_CORE_XDS_GRPC_XDS_ENABLED_SERVER_H // EXPERIMENTAL. Bool-valued channel arg used as an indicator that a server is // xds enabled. #define GRPC_ARG_XDS_ENABLED_SERVER "grpc.experimental.xds_enabled_server" -#endif // GRPC_SRC_CORE_EXT_XDS_XDS_ENABLED_SERVER_H +#endif // GRPC_SRC_CORE_XDS_GRPC_XDS_ENABLED_SERVER_H diff --git a/src/core/ext/xds/xds_endpoint.cc b/src/core/xds/grpc/xds_endpoint.cc similarity index 98% rename from src/core/ext/xds/xds_endpoint.cc rename to src/core/xds/grpc/xds_endpoint.cc index fb0e53bef5c..c689a57d515 100644 --- a/src/core/ext/xds/xds_endpoint.cc +++ b/src/core/xds/grpc/xds_endpoint.cc @@ -14,7 +14,7 @@ // limitations under the License. // -#include "src/core/ext/xds/xds_endpoint.h" +#include "src/core/xds/grpc/xds_endpoint.h" #include #include @@ -25,6 +25,7 @@ #include #include +#include "absl/log/check.h" #include "absl/status/status.h" #include "absl/status/statusor.h" #include "absl/strings/str_cat.h" @@ -42,17 +43,17 @@ #include #include -#include "src/core/ext/xds/upb_utils.h" -#include "src/core/ext/xds/xds_health_status.h" -#include "src/core/ext/xds/xds_resource_type.h" #include "src/core/lib/address_utils/parse_address.h" #include "src/core/lib/address_utils/sockaddr_utils.h" #include "src/core/lib/channel/channel_args.h" #include "src/core/lib/debug/trace.h" -#include "src/core/lib/gpr/string.h" #include "src/core/lib/gprpp/env.h" #include "src/core/lib/gprpp/validation_errors.h" #include "src/core/lib/iomgr/resolved_address.h" +#include "src/core/util/string.h" +#include "src/core/xds/grpc/upb_utils.h" +#include "src/core/xds/grpc/xds_health_status.h" +#include "src/core/xds/xds_client/xds_resource_type.h" // IWYU pragma: no_include "absl/meta/type_traits.h" @@ -407,7 +408,7 @@ absl::StatusOr> EdsResourceParse( ValidationErrors::ScopedField field(&errors, absl::StrCat("[", i, "]")); auto parsed_locality = LocalityParse(endpoints[i], &address_set, &errors); if (parsed_locality.has_value()) { - GPR_ASSERT(parsed_locality->locality.lb_weight != 0); + CHECK_NE(parsed_locality->locality.lb_weight, 0u); // Make sure prorities is big enough. Note that they might not // arrive in priority order. if (eds_resource->priorities.size() < parsed_locality->priority + 1) { diff --git a/src/core/ext/xds/xds_endpoint.h b/src/core/xds/grpc/xds_endpoint.h similarity index 92% rename from src/core/ext/xds/xds_endpoint.h rename to src/core/xds/grpc/xds_endpoint.h index d5d9c1106ee..43de2349901 100644 --- a/src/core/ext/xds/xds_endpoint.h +++ b/src/core/xds/grpc/xds_endpoint.h @@ -14,8 +14,8 @@ // limitations under the License. // -#ifndef GRPC_SRC_CORE_EXT_XDS_XDS_ENDPOINT_H -#define GRPC_SRC_CORE_EXT_XDS_XDS_ENDPOINT_H +#ifndef GRPC_SRC_CORE_XDS_GRPC_XDS_ENDPOINT_H +#define GRPC_SRC_CORE_XDS_GRPC_XDS_ENDPOINT_H #include @@ -33,14 +33,14 @@ #include -#include "src/core/ext/xds/xds_client.h" -#include "src/core/ext/xds/xds_client_stats.h" -#include "src/core/ext/xds/xds_resource_type.h" -#include "src/core/ext/xds/xds_resource_type_impl.h" #include "src/core/lib/gprpp/ref_counted.h" #include "src/core/lib/gprpp/ref_counted_ptr.h" #include "src/core/lib/gprpp/sync.h" #include "src/core/resolver/endpoint_addresses.h" +#include "src/core/xds/xds_client/xds_client.h" +#include "src/core/xds/xds_client/xds_client_stats.h" +#include "src/core/xds/xds_client/xds_resource_type.h" +#include "src/core/xds/xds_client/xds_resource_type_impl.h" namespace grpc_core { @@ -147,4 +147,4 @@ class XdsEndpointResourceType final } // namespace grpc_core -#endif // GRPC_SRC_CORE_EXT_XDS_XDS_ENDPOINT_H +#endif // GRPC_SRC_CORE_XDS_GRPC_XDS_ENDPOINT_H diff --git a/src/core/ext/xds/xds_health_status.cc b/src/core/xds/grpc/xds_health_status.cc similarity index 97% rename from src/core/ext/xds/xds_health_status.cc rename to src/core/xds/grpc/xds_health_status.cc index 5df84147b40..6f137656e3c 100644 --- a/src/core/ext/xds/xds_health_status.cc +++ b/src/core/xds/grpc/xds_health_status.cc @@ -14,7 +14,7 @@ // limitations under the License. // -#include "src/core/ext/xds/xds_health_status.h" +#include "src/core/xds/grpc/xds_health_status.h" #include diff --git a/src/core/ext/xds/xds_health_status.h b/src/core/xds/grpc/xds_health_status.h similarity index 93% rename from src/core/ext/xds/xds_health_status.h rename to src/core/xds/grpc/xds_health_status.h index 593aa681b71..a0be5ecb443 100644 --- a/src/core/ext/xds/xds_health_status.h +++ b/src/core/xds/grpc/xds_health_status.h @@ -14,8 +14,8 @@ // limitations under the License. // -#ifndef GRPC_SRC_CORE_EXT_XDS_XDS_HEALTH_STATUS_H -#define GRPC_SRC_CORE_EXT_XDS_XDS_HEALTH_STATUS_H +#ifndef GRPC_SRC_CORE_XDS_GRPC_XDS_HEALTH_STATUS_H +#define GRPC_SRC_CORE_XDS_GRPC_XDS_HEALTH_STATUS_H #include @@ -88,4 +88,4 @@ class XdsHealthStatusSet final { } // namespace grpc_core -#endif // GRPC_SRC_CORE_EXT_XDS_XDS_HEALTH_STATUS_H +#endif // GRPC_SRC_CORE_XDS_GRPC_XDS_HEALTH_STATUS_H diff --git a/src/core/ext/xds/xds_http_fault_filter.cc b/src/core/xds/grpc/xds_http_fault_filter.cc similarity index 98% rename from src/core/ext/xds/xds_http_fault_filter.cc rename to src/core/xds/grpc/xds_http_fault_filter.cc index 74fb67b3075..d6aabcefb6d 100644 --- a/src/core/ext/xds/xds_http_fault_filter.cc +++ b/src/core/xds/grpc/xds_http_fault_filter.cc @@ -14,7 +14,7 @@ // limitations under the License. // -#include "src/core/ext/xds/xds_http_fault_filter.h" +#include "src/core/xds/grpc/xds_http_fault_filter.h" #include @@ -37,8 +37,6 @@ #include "src/core/ext/filters/fault_injection/fault_injection_filter.h" #include "src/core/ext/filters/fault_injection/fault_injection_service_config_parser.h" -#include "src/core/ext/xds/xds_common_types.h" -#include "src/core/ext/xds/xds_http_filters.h" #include "src/core/lib/channel/channel_args.h" #include "src/core/lib/channel/status_util.h" #include "src/core/lib/gprpp/time.h" @@ -46,6 +44,8 @@ #include "src/core/lib/json/json.h" #include "src/core/lib/json/json_writer.h" #include "src/core/lib/transport/status_conversion.h" +#include "src/core/xds/grpc/xds_common_types.h" +#include "src/core/xds/grpc/xds_http_filters.h" namespace grpc_core { diff --git a/src/core/ext/xds/xds_http_fault_filter.h b/src/core/xds/grpc/xds_http_fault_filter.h similarity index 86% rename from src/core/ext/xds/xds_http_fault_filter.h rename to src/core/xds/grpc/xds_http_fault_filter.h index 23373f2e84d..cd6dfd78691 100644 --- a/src/core/ext/xds/xds_http_fault_filter.h +++ b/src/core/xds/grpc/xds_http_fault_filter.h @@ -14,8 +14,8 @@ // limitations under the License. // -#ifndef GRPC_SRC_CORE_EXT_XDS_XDS_HTTP_FAULT_FILTER_H -#define GRPC_SRC_CORE_EXT_XDS_XDS_HTTP_FAULT_FILTER_H +#ifndef GRPC_SRC_CORE_XDS_GRPC_XDS_HTTP_FAULT_FILTER_H +#define GRPC_SRC_CORE_XDS_GRPC_XDS_HTTP_FAULT_FILTER_H #include "absl/status/statusor.h" #include "absl/strings/string_view.h" @@ -24,12 +24,12 @@ #include -#include "src/core/ext/xds/xds_common_types.h" -#include "src/core/ext/xds/xds_http_filters.h" -#include "src/core/ext/xds/xds_resource_type.h" #include "src/core/lib/channel/channel_args.h" #include "src/core/lib/channel/channel_fwd.h" #include "src/core/lib/gprpp/validation_errors.h" +#include "src/core/xds/grpc/xds_common_types.h" +#include "src/core/xds/grpc/xds_http_filters.h" +#include "src/core/xds/xds_client/xds_resource_type.h" namespace grpc_core { @@ -55,4 +55,4 @@ class XdsHttpFaultFilter final : public XdsHttpFilterImpl { } // namespace grpc_core -#endif // GRPC_SRC_CORE_EXT_XDS_XDS_HTTP_FAULT_FILTER_H +#endif // GRPC_SRC_CORE_XDS_GRPC_XDS_HTTP_FAULT_FILTER_H diff --git a/src/core/ext/xds/xds_http_filters.cc b/src/core/xds/grpc/xds_http_filters.cc similarity index 89% rename from src/core/ext/xds/xds_http_filters.cc rename to src/core/xds/grpc/xds_http_filters.cc index 65103380e1b..0b0f9e7c0af 100644 --- a/src/core/ext/xds/xds_http_filters.cc +++ b/src/core/xds/grpc/xds_http_filters.cc @@ -14,12 +14,13 @@ // limitations under the License. // -#include "src/core/ext/xds/xds_http_filters.h" +#include "src/core/xds/grpc/xds_http_filters.h" #include #include #include +#include "absl/log/check.h" #include "absl/types/variant.h" #include "envoy/extensions/filters/http/router/v3/router.upb.h" #include "envoy/extensions/filters/http/router/v3/router.upbdefs.h" @@ -27,9 +28,9 @@ #include #include -#include "src/core/ext/xds/xds_http_fault_filter.h" -#include "src/core/ext/xds/xds_http_rbac_filter.h" -#include "src/core/ext/xds/xds_http_stateful_session_filter.h" +#include "src/core/xds/grpc/xds_http_fault_filter.h" +#include "src/core/xds/grpc/xds_http_rbac_filter.h" +#include "src/core/xds/grpc/xds_http_stateful_session_filter.h" namespace grpc_core { @@ -91,11 +92,10 @@ XdsHttpFilterRegistry::XdsHttpFilterRegistry(bool register_builtins) { void XdsHttpFilterRegistry::RegisterFilter( std::unique_ptr filter) { - GPR_ASSERT( - registry_map_.emplace(filter->ConfigProtoName(), filter.get()).second); + CHECK(registry_map_.emplace(filter->ConfigProtoName(), filter.get()).second); auto override_proto_name = filter->OverrideConfigProtoName(); if (!override_proto_name.empty()) { - GPR_ASSERT(registry_map_.emplace(override_proto_name, filter.get()).second); + CHECK(registry_map_.emplace(override_proto_name, filter.get()).second); } owning_list_.push_back(std::move(filter)); } diff --git a/src/core/ext/xds/xds_http_filters.h b/src/core/xds/grpc/xds_http_filters.h similarity index 96% rename from src/core/ext/xds/xds_http_filters.h rename to src/core/xds/grpc/xds_http_filters.h index db673cdf6af..46f9c0dc968 100644 --- a/src/core/ext/xds/xds_http_filters.h +++ b/src/core/xds/grpc/xds_http_filters.h @@ -14,8 +14,8 @@ // limitations under the License. // -#ifndef GRPC_SRC_CORE_EXT_XDS_XDS_HTTP_FILTERS_H -#define GRPC_SRC_CORE_EXT_XDS_XDS_HTTP_FILTERS_H +#ifndef GRPC_SRC_CORE_XDS_GRPC_XDS_HTTP_FILTERS_H +#define GRPC_SRC_CORE_XDS_GRPC_XDS_HTTP_FILTERS_H #include #include @@ -32,13 +32,13 @@ #include -#include "src/core/ext/xds/xds_common_types.h" -#include "src/core/ext/xds/xds_resource_type.h" #include "src/core/lib/channel/channel_args.h" #include "src/core/lib/channel/channel_fwd.h" #include "src/core/lib/gprpp/validation_errors.h" #include "src/core/lib/json/json.h" #include "src/core/lib/json/json_writer.h" +#include "src/core/xds/grpc/xds_common_types.h" +#include "src/core/xds/xds_client/xds_resource_type.h" namespace grpc_core { @@ -179,4 +179,4 @@ class XdsHttpFilterRegistry final { } // namespace grpc_core -#endif // GRPC_SRC_CORE_EXT_XDS_XDS_HTTP_FILTERS_H +#endif // GRPC_SRC_CORE_XDS_GRPC_XDS_HTTP_FILTERS_H diff --git a/src/core/ext/xds/xds_http_rbac_filter.cc b/src/core/xds/grpc/xds_http_rbac_filter.cc similarity index 98% rename from src/core/ext/xds/xds_http_rbac_filter.cc rename to src/core/xds/grpc/xds_http_rbac_filter.cc index 6ecdf1f23d6..05055448a7d 100644 --- a/src/core/ext/xds/xds_http_rbac_filter.cc +++ b/src/core/xds/grpc/xds_http_rbac_filter.cc @@ -14,7 +14,7 @@ // limitations under the License. // -#include "src/core/ext/xds/xds_http_rbac_filter.h" +#include "src/core/xds/grpc/xds_http_rbac_filter.h" #include #include @@ -45,15 +45,15 @@ #include "src/core/ext/filters/rbac/rbac_filter.h" #include "src/core/ext/filters/rbac/rbac_service_config_parser.h" -#include "src/core/ext/xds/upb_utils.h" -#include "src/core/ext/xds/xds_audit_logger_registry.h" -#include "src/core/ext/xds/xds_bootstrap_grpc.h" -#include "src/core/ext/xds/xds_client.h" #include "src/core/lib/channel/channel_args.h" -#include "src/core/lib/gpr/string.h" #include "src/core/lib/gprpp/env.h" #include "src/core/lib/json/json.h" #include "src/core/lib/json/json_writer.h" +#include "src/core/util/string.h" +#include "src/core/xds/grpc/upb_utils.h" +#include "src/core/xds/grpc/xds_audit_logger_registry.h" +#include "src/core/xds/grpc/xds_bootstrap_grpc.h" +#include "src/core/xds/xds_client/xds_client.h" namespace grpc_core { diff --git a/src/core/ext/xds/xds_http_rbac_filter.h b/src/core/xds/grpc/xds_http_rbac_filter.h similarity index 86% rename from src/core/ext/xds/xds_http_rbac_filter.h rename to src/core/xds/grpc/xds_http_rbac_filter.h index e4ba45ed45d..f95fc5d8693 100644 --- a/src/core/ext/xds/xds_http_rbac_filter.h +++ b/src/core/xds/grpc/xds_http_rbac_filter.h @@ -14,8 +14,8 @@ // limitations under the License. // -#ifndef GRPC_SRC_CORE_EXT_XDS_XDS_HTTP_RBAC_FILTER_H -#define GRPC_SRC_CORE_EXT_XDS_XDS_HTTP_RBAC_FILTER_H +#ifndef GRPC_SRC_CORE_XDS_GRPC_XDS_HTTP_RBAC_FILTER_H +#define GRPC_SRC_CORE_XDS_GRPC_XDS_HTTP_RBAC_FILTER_H #include "absl/status/statusor.h" #include "absl/strings/string_view.h" @@ -24,12 +24,12 @@ #include -#include "src/core/ext/xds/xds_common_types.h" -#include "src/core/ext/xds/xds_http_filters.h" -#include "src/core/ext/xds/xds_resource_type.h" #include "src/core/lib/channel/channel_args.h" #include "src/core/lib/channel/channel_fwd.h" #include "src/core/lib/gprpp/validation_errors.h" +#include "src/core/xds/grpc/xds_common_types.h" +#include "src/core/xds/grpc/xds_http_filters.h" +#include "src/core/xds/xds_client/xds_resource_type.h" namespace grpc_core { @@ -55,4 +55,4 @@ class XdsHttpRbacFilter final : public XdsHttpFilterImpl { } // namespace grpc_core -#endif // GRPC_SRC_CORE_EXT_XDS_XDS_HTTP_RBAC_FILTER_H +#endif // GRPC_SRC_CORE_XDS_GRPC_XDS_HTTP_RBAC_FILTER_H diff --git a/src/core/ext/xds/xds_http_stateful_session_filter.cc b/src/core/xds/grpc/xds_http_stateful_session_filter.cc similarity index 97% rename from src/core/ext/xds/xds_http_stateful_session_filter.cc rename to src/core/xds/grpc/xds_http_stateful_session_filter.cc index 8df2d5bc978..279129342a8 100644 --- a/src/core/ext/xds/xds_http_stateful_session_filter.cc +++ b/src/core/xds/grpc/xds_http_stateful_session_filter.cc @@ -14,7 +14,7 @@ // limitations under the License. // -#include "src/core/ext/xds/xds_http_stateful_session_filter.h" +#include "src/core/xds/grpc/xds_http_stateful_session_filter.h" #include #include @@ -34,14 +34,14 @@ #include "src/core/ext/filters/stateful_session/stateful_session_filter.h" #include "src/core/ext/filters/stateful_session/stateful_session_service_config_parser.h" -#include "src/core/ext/xds/upb_utils.h" -#include "src/core/ext/xds/xds_common_types.h" -#include "src/core/ext/xds/xds_http_filters.h" #include "src/core/lib/channel/channel_args.h" #include "src/core/lib/gprpp/time.h" #include "src/core/lib/gprpp/validation_errors.h" #include "src/core/lib/json/json.h" #include "src/core/lib/json/json_writer.h" +#include "src/core/xds/grpc/upb_utils.h" +#include "src/core/xds/grpc/xds_common_types.h" +#include "src/core/xds/grpc/xds_http_filters.h" namespace grpc_core { diff --git a/src/core/ext/xds/xds_http_stateful_session_filter.h b/src/core/xds/grpc/xds_http_stateful_session_filter.h similarity index 85% rename from src/core/ext/xds/xds_http_stateful_session_filter.h rename to src/core/xds/grpc/xds_http_stateful_session_filter.h index e1f69c4e1ac..b734b0fb135 100644 --- a/src/core/ext/xds/xds_http_stateful_session_filter.h +++ b/src/core/xds/grpc/xds_http_stateful_session_filter.h @@ -14,8 +14,8 @@ // limitations under the License. // -#ifndef GRPC_SRC_CORE_EXT_XDS_XDS_HTTP_STATEFUL_SESSION_FILTER_H -#define GRPC_SRC_CORE_EXT_XDS_XDS_HTTP_STATEFUL_SESSION_FILTER_H +#ifndef GRPC_SRC_CORE_XDS_GRPC_XDS_HTTP_STATEFUL_SESSION_FILTER_H +#define GRPC_SRC_CORE_XDS_GRPC_XDS_HTTP_STATEFUL_SESSION_FILTER_H #include "absl/status/statusor.h" #include "absl/strings/string_view.h" @@ -24,12 +24,12 @@ #include -#include "src/core/ext/xds/xds_common_types.h" -#include "src/core/ext/xds/xds_http_filters.h" -#include "src/core/ext/xds/xds_resource_type.h" #include "src/core/lib/channel/channel_args.h" #include "src/core/lib/channel/channel_fwd.h" #include "src/core/lib/gprpp/validation_errors.h" +#include "src/core/xds/grpc/xds_common_types.h" +#include "src/core/xds/grpc/xds_http_filters.h" +#include "src/core/xds/xds_client/xds_resource_type.h" namespace grpc_core { @@ -55,4 +55,4 @@ class XdsHttpStatefulSessionFilter final : public XdsHttpFilterImpl { } // namespace grpc_core -#endif // GRPC_SRC_CORE_EXT_XDS_XDS_HTTP_STATEFUL_SESSION_FILTER_H +#endif // GRPC_SRC_CORE_XDS_GRPC_XDS_HTTP_STATEFUL_SESSION_FILTER_H diff --git a/src/core/ext/xds/xds_lb_policy_registry.cc b/src/core/xds/grpc/xds_lb_policy_registry.cc similarity index 99% rename from src/core/ext/xds/xds_lb_policy_registry.cc rename to src/core/xds/grpc/xds_lb_policy_registry.cc index a49e203349d..fa55b1997c5 100644 --- a/src/core/ext/xds/xds_lb_policy_registry.cc +++ b/src/core/xds/grpc/xds_lb_policy_registry.cc @@ -14,7 +14,7 @@ // limitations under the License. // -#include "src/core/ext/xds/xds_lb_policy_registry.h" +#include "src/core/xds/grpc/xds_lb_policy_registry.h" #include #include @@ -35,11 +35,11 @@ #include #include -#include "src/core/ext/xds/xds_common_types.h" #include "src/core/lib/config/core_configuration.h" #include "src/core/lib/gprpp/time.h" #include "src/core/lib/gprpp/validation_errors.h" #include "src/core/load_balancing/lb_policy_registry.h" +#include "src/core/xds/grpc/xds_common_types.h" namespace grpc_core { diff --git a/src/core/ext/xds/xds_lb_policy_registry.h b/src/core/xds/grpc/xds_lb_policy_registry.h similarity index 91% rename from src/core/ext/xds/xds_lb_policy_registry.h rename to src/core/xds/grpc/xds_lb_policy_registry.h index b7e03923fd4..54fbf825eb3 100644 --- a/src/core/ext/xds/xds_lb_policy_registry.h +++ b/src/core/xds/grpc/xds_lb_policy_registry.h @@ -14,8 +14,8 @@ // limitations under the License. // -#ifndef GRPC_SRC_CORE_EXT_XDS_XDS_LB_POLICY_REGISTRY_H -#define GRPC_SRC_CORE_EXT_XDS_XDS_LB_POLICY_REGISTRY_H +#ifndef GRPC_SRC_CORE_XDS_GRPC_XDS_LB_POLICY_REGISTRY_H +#define GRPC_SRC_CORE_XDS_GRPC_XDS_LB_POLICY_REGISTRY_H #include #include @@ -25,9 +25,9 @@ #include -#include "src/core/ext/xds/xds_resource_type.h" #include "src/core/lib/gprpp/validation_errors.h" #include "src/core/lib/json/json.h" +#include "src/core/xds/xds_client/xds_resource_type.h" namespace grpc_core { @@ -68,4 +68,4 @@ class XdsLbPolicyRegistry final { } // namespace grpc_core -#endif // GRPC_SRC_CORE_EXT_XDS_XDS_LB_POLICY_REGISTRY_H +#endif // GRPC_SRC_CORE_XDS_GRPC_XDS_LB_POLICY_REGISTRY_H diff --git a/src/core/ext/xds/xds_listener.cc b/src/core/xds/grpc/xds_listener.cc similarity index 99% rename from src/core/ext/xds/xds_listener.cc rename to src/core/xds/grpc/xds_listener.cc index b79ec4c9803..c071fd9882c 100644 --- a/src/core/ext/xds/xds_listener.cc +++ b/src/core/xds/grpc/xds_listener.cc @@ -14,13 +14,14 @@ // limitations under the License. // -#include "src/core/ext/xds/xds_listener.h" +#include "src/core/xds/grpc/xds_listener.h" #include #include #include +#include "absl/log/check.h" #include "absl/status/status.h" #include "absl/status/statusor.h" #include "absl/strings/str_cat.h" @@ -46,9 +47,6 @@ #include #include -#include "src/core/ext/xds/upb_utils.h" -#include "src/core/ext/xds/xds_common_types.h" -#include "src/core/ext/xds/xds_resource_type.h" #include "src/core/lib/address_utils/parse_address.h" #include "src/core/lib/address_utils/sockaddr_utils.h" #include "src/core/lib/debug/trace.h" @@ -57,6 +55,9 @@ #include "src/core/lib/gprpp/validation_errors.h" #include "src/core/lib/iomgr/sockaddr.h" #include "src/core/lib/matchers/matchers.h" +#include "src/core/xds/grpc/upb_utils.h" +#include "src/core/xds/grpc/xds_common_types.h" +#include "src/core/xds/xds_client/xds_resource_type.h" namespace grpc_core { @@ -873,8 +874,8 @@ void AddFilterChainDataForSourceType( const FilterChain& filter_chain, InternalFilterChainMap::DestinationIp* destination_ip, ValidationErrors* errors) { - GPR_ASSERT(static_cast( - filter_chain.filter_chain_match.source_type) < 3); + CHECK(static_cast(filter_chain.filter_chain_match.source_type) < + 3u); AddFilterChainDataForSourceIpRange( filter_chain, &destination_ip->source_types_array[static_cast( diff --git a/src/core/ext/xds/xds_listener.h b/src/core/xds/grpc/xds_listener.h similarity index 93% rename from src/core/ext/xds/xds_listener.h rename to src/core/xds/grpc/xds_listener.h index d0440c8b19b..ce5d1ca11a6 100644 --- a/src/core/ext/xds/xds_listener.h +++ b/src/core/xds/grpc/xds_listener.h @@ -14,8 +14,8 @@ // limitations under the License. // -#ifndef GRPC_SRC_CORE_EXT_XDS_XDS_LISTENER_H -#define GRPC_SRC_CORE_EXT_XDS_XDS_LISTENER_H +#ifndef GRPC_SRC_CORE_XDS_GRPC_XDS_LISTENER_H +#define GRPC_SRC_CORE_XDS_GRPC_XDS_LISTENER_H #include #include @@ -36,15 +36,15 @@ #include -#include "src/core/ext/xds/xds_bootstrap_grpc.h" -#include "src/core/ext/xds/xds_client.h" -#include "src/core/ext/xds/xds_common_types.h" -#include "src/core/ext/xds/xds_http_filters.h" -#include "src/core/ext/xds/xds_resource_type.h" -#include "src/core/ext/xds/xds_resource_type_impl.h" -#include "src/core/ext/xds/xds_route_config.h" #include "src/core/lib/gprpp/time.h" #include "src/core/lib/iomgr/resolved_address.h" +#include "src/core/xds/grpc/xds_bootstrap_grpc.h" +#include "src/core/xds/grpc/xds_common_types.h" +#include "src/core/xds/grpc/xds_http_filters.h" +#include "src/core/xds/grpc/xds_route_config.h" +#include "src/core/xds/xds_client/xds_client.h" +#include "src/core/xds/xds_client/xds_resource_type.h" +#include "src/core/xds/xds_client/xds_resource_type_impl.h" namespace grpc_core { @@ -233,4 +233,4 @@ class XdsListenerResourceType final } // namespace grpc_core -#endif // GRPC_SRC_CORE_EXT_XDS_XDS_LISTENER_H +#endif // GRPC_SRC_CORE_XDS_GRPC_XDS_LISTENER_H diff --git a/src/core/ext/xds/xds_route_config.cc b/src/core/xds/grpc/xds_route_config.cc similarity index 98% rename from src/core/ext/xds/xds_route_config.cc rename to src/core/xds/grpc/xds_route_config.cc index 81f07ec9da3..f0c8de69739 100644 --- a/src/core/ext/xds/xds_route_config.cc +++ b/src/core/xds/grpc/xds_route_config.cc @@ -14,7 +14,7 @@ // limitations under the License. // -#include "src/core/ext/xds/xds_route_config.h" +#include "src/core/xds/grpc/xds_route_config.h" #include #include @@ -27,6 +27,7 @@ #include #include +#include "absl/log/check.h" #include "absl/status/status.h" #include "absl/status/statusor.h" #include "absl/strings/str_cat.h" @@ -57,16 +58,9 @@ #include #include -#include "src/core/ext/xds/upb_utils.h" -#include "src/core/ext/xds/xds_cluster_specifier_plugin.h" -#include "src/core/ext/xds/xds_common_types.h" -#include "src/core/ext/xds/xds_http_filters.h" -#include "src/core/ext/xds/xds_resource_type.h" -#include "src/core/ext/xds/xds_routing.h" #include "src/core/lib/channel/status_util.h" #include "src/core/lib/config/core_configuration.h" #include "src/core/lib/debug/trace.h" -#include "src/core/lib/gpr/string.h" #include "src/core/lib/gprpp/env.h" #include "src/core/lib/gprpp/match.h" #include "src/core/lib/gprpp/ref_counted_ptr.h" @@ -75,6 +69,13 @@ #include "src/core/lib/json/json_writer.h" #include "src/core/lib/matchers/matchers.h" #include "src/core/load_balancing/lb_policy_registry.h" +#include "src/core/util/string.h" +#include "src/core/xds/grpc/upb_utils.h" +#include "src/core/xds/grpc/xds_cluster_specifier_plugin.h" +#include "src/core/xds/grpc/xds_common_types.h" +#include "src/core/xds/grpc/xds_http_filters.h" +#include "src/core/xds/grpc/xds_routing.h" +#include "src/core/xds/xds_client/xds_resource_type.h" namespace grpc_core { @@ -464,7 +465,7 @@ absl::optional RoutePathMatchParse( } else if (envoy_config_route_v3_RouteMatch_has_safe_regex(match)) { const envoy_type_matcher_v3_RegexMatcher* regex_matcher = envoy_config_route_v3_RouteMatch_safe_regex(match); - GPR_ASSERT(regex_matcher != nullptr); + CHECK_NE(regex_matcher, nullptr); type = StringMatcher::Type::kSafeRegex; match_string = UpbStringToStdString( envoy_type_matcher_v3_RegexMatcher_regex(regex_matcher)); @@ -492,7 +493,7 @@ void RouteHeaderMatchersParse(const envoy_config_route_v3_RouteMatch* match, ValidationErrors::ScopedField field(errors, absl::StrCat(".headers[", i, "]")); const envoy_config_route_v3_HeaderMatcher* header = headers[i]; - GPR_ASSERT(header != nullptr); + CHECK_NE(header, nullptr); const std::string name = UpbStringToStdString(envoy_config_route_v3_HeaderMatcher_name(header)); HeaderMatcher::Type type; @@ -521,7 +522,7 @@ void RouteHeaderMatchersParse(const envoy_config_route_v3_RouteMatch* match, header)) { const envoy_type_matcher_v3_RegexMatcher* regex_matcher = envoy_config_route_v3_HeaderMatcher_safe_regex_match(header); - GPR_ASSERT(regex_matcher != nullptr); + CHECK_NE(regex_matcher, nullptr); type = HeaderMatcher::Type::kSafeRegex; match_string = UpbStringToStdString( envoy_type_matcher_v3_RegexMatcher_regex(regex_matcher)); @@ -529,7 +530,7 @@ void RouteHeaderMatchersParse(const envoy_config_route_v3_RouteMatch* match, type = HeaderMatcher::Type::kRange; const envoy_type_v3_Int64Range* range_matcher = envoy_config_route_v3_HeaderMatcher_range_match(header); - GPR_ASSERT(range_matcher != nullptr); + CHECK_NE(range_matcher, nullptr); range_start = envoy_type_v3_Int64Range_start(range_matcher); range_end = envoy_type_v3_Int64Range_end(range_matcher); } else if (envoy_config_route_v3_HeaderMatcher_has_present_match(header)) { @@ -539,7 +540,7 @@ void RouteHeaderMatchersParse(const envoy_config_route_v3_RouteMatch* match, ValidationErrors::ScopedField field(errors, ".string_match"); const auto* matcher = envoy_config_route_v3_HeaderMatcher_string_match(header); - GPR_ASSERT(matcher != nullptr); + CHECK_NE(matcher, nullptr); if (envoy_type_matcher_v3_StringMatcher_has_exact(matcher)) { type = HeaderMatcher::Type::kExact; match_string = UpbStringToStdString( @@ -560,7 +561,7 @@ void RouteHeaderMatchersParse(const envoy_config_route_v3_RouteMatch* match, type = HeaderMatcher::Type::kSafeRegex; const auto* regex_matcher = envoy_type_matcher_v3_StringMatcher_safe_regex(matcher); - GPR_ASSERT(regex_matcher != nullptr); + CHECK_NE(regex_matcher, nullptr); match_string = UpbStringToStdString( envoy_type_matcher_v3_RegexMatcher_regex(regex_matcher)); } else { @@ -886,7 +887,7 @@ absl::optional RouteActionParse( ValidationErrors::ScopedField field(errors, ".weighted_clusters"); const envoy_config_route_v3_WeightedCluster* weighted_clusters_proto = envoy_config_route_v3_RouteAction_weighted_clusters(route_action_proto); - GPR_ASSERT(weighted_clusters_proto != nullptr); + CHECK_NE(weighted_clusters_proto, nullptr); std::vector action_weighted_clusters; uint64_t total_weight = 0; diff --git a/src/core/ext/xds/xds_route_config.h b/src/core/xds/grpc/xds_route_config.h similarity index 94% rename from src/core/ext/xds/xds_route_config.h rename to src/core/xds/grpc/xds_route_config.h index b70c7334dbb..f6d802aa91e 100644 --- a/src/core/ext/xds/xds_route_config.h +++ b/src/core/xds/grpc/xds_route_config.h @@ -14,8 +14,8 @@ // limitations under the License. // -#ifndef GRPC_SRC_CORE_EXT_XDS_XDS_ROUTE_CONFIG_H -#define GRPC_SRC_CORE_EXT_XDS_XDS_ROUTE_CONFIG_H +#ifndef GRPC_SRC_CORE_XDS_GRPC_XDS_ROUTE_CONFIG_H +#define GRPC_SRC_CORE_XDS_GRPC_XDS_ROUTE_CONFIG_H #include @@ -35,16 +35,16 @@ #include -#include "src/core/ext/xds/xds_bootstrap_grpc.h" -#include "src/core/ext/xds/xds_client.h" -#include "src/core/ext/xds/xds_cluster_specifier_plugin.h" -#include "src/core/ext/xds/xds_http_filters.h" -#include "src/core/ext/xds/xds_resource_type.h" -#include "src/core/ext/xds/xds_resource_type_impl.h" #include "src/core/lib/channel/status_util.h" #include "src/core/lib/gprpp/time.h" #include "src/core/lib/gprpp/validation_errors.h" #include "src/core/lib/matchers/matchers.h" +#include "src/core/xds/grpc/xds_bootstrap_grpc.h" +#include "src/core/xds/grpc/xds_cluster_specifier_plugin.h" +#include "src/core/xds/grpc/xds_http_filters.h" +#include "src/core/xds/xds_client/xds_client.h" +#include "src/core/xds/xds_client/xds_resource_type.h" +#include "src/core/xds/xds_client/xds_resource_type_impl.h" namespace grpc_core { @@ -250,4 +250,4 @@ class XdsRouteConfigResourceType final } // namespace grpc_core -#endif // GRPC_SRC_CORE_EXT_XDS_XDS_ROUTE_CONFIG_H +#endif // GRPC_SRC_CORE_XDS_GRPC_XDS_ROUTE_CONFIG_H diff --git a/src/core/ext/xds/xds_routing.cc b/src/core/xds/grpc/xds_routing.cc similarity index 98% rename from src/core/ext/xds/xds_routing.cc rename to src/core/xds/grpc/xds_routing.cc index 3c620e7ca7b..eadbe762286 100644 --- a/src/core/ext/xds/xds_routing.cc +++ b/src/core/xds/grpc/xds_routing.cc @@ -16,7 +16,7 @@ // // -#include "src/core/ext/xds/xds_routing.h" +#include "src/core/xds/grpc/xds_routing.h" #include #include @@ -25,6 +25,7 @@ #include #include +#include "absl/log/check.h" #include "absl/status/status.h" #include "absl/status/statusor.h" #include "absl/strings/match.h" @@ -33,9 +34,9 @@ #include #include -#include "src/core/ext/xds/xds_http_filters.h" #include "src/core/lib/channel/channel_args.h" #include "src/core/lib/matchers/matchers.h" +#include "src/core/xds/grpc/xds_http_filters.h" namespace grpc_core { @@ -117,7 +118,7 @@ absl::optional XdsRouting::FindVirtualHostForDomain( // than current match. const MatchType match_type = DomainPatternMatchType(domain_pattern); // This should be caught by RouteConfigParse(). - GPR_ASSERT(match_type != INVALID_MATCH); + CHECK(match_type != INVALID_MATCH); if (match_type > best_match_type) continue; if (match_type == best_match_type && domain_pattern.size() <= longest_match) { @@ -235,7 +236,7 @@ XdsRouting::GeneratePerHTTPFilterConfigs( const XdsHttpFilterImpl* filter_impl = http_filter_registry.GetFilterForType( http_filter.config.config_proto_type_name); - GPR_ASSERT(filter_impl != nullptr); + CHECK_NE(filter_impl, nullptr); // If there is not actually any C-core filter associated with this // xDS filter, then it won't need any config, so skip it. if (filter_impl->channel_filter() == nullptr) continue; diff --git a/src/core/ext/xds/xds_routing.h b/src/core/xds/grpc/xds_routing.h similarity index 92% rename from src/core/ext/xds/xds_routing.h rename to src/core/xds/grpc/xds_routing.h index 618045c5505..e0e4d46c43d 100644 --- a/src/core/ext/xds/xds_routing.h +++ b/src/core/xds/grpc/xds_routing.h @@ -16,8 +16,8 @@ // // -#ifndef GRPC_SRC_CORE_EXT_XDS_XDS_ROUTING_H -#define GRPC_SRC_CORE_EXT_XDS_XDS_ROUTING_H +#ifndef GRPC_SRC_CORE_XDS_GRPC_XDS_ROUTING_H +#define GRPC_SRC_CORE_XDS_GRPC_XDS_ROUTING_H #include @@ -31,11 +31,11 @@ #include -#include "src/core/ext/xds/xds_http_filters.h" -#include "src/core/ext/xds/xds_listener.h" -#include "src/core/ext/xds/xds_route_config.h" #include "src/core/lib/channel/channel_args.h" #include "src/core/lib/transport/metadata_batch.h" +#include "src/core/xds/grpc/xds_http_filters.h" +#include "src/core/xds/grpc/xds_listener.h" +#include "src/core/xds/grpc/xds_route_config.h" namespace grpc_core { @@ -103,4 +103,4 @@ class XdsRouting final { } // namespace grpc_core -#endif // GRPC_SRC_CORE_EXT_XDS_XDS_ROUTING_H +#endif // GRPC_SRC_CORE_XDS_GRPC_XDS_ROUTING_H diff --git a/src/core/ext/xds/xds_transport_grpc.cc b/src/core/xds/grpc/xds_transport_grpc.cc similarity index 96% rename from src/core/ext/xds/xds_transport_grpc.cc rename to src/core/xds/grpc/xds_transport_grpc.cc index 55cd32776ca..3f2716bcdd0 100644 --- a/src/core/ext/xds/xds_transport_grpc.cc +++ b/src/core/xds/grpc/xds_transport_grpc.cc @@ -14,7 +14,7 @@ // limitations under the License. // -#include "src/core/ext/xds/xds_transport_grpc.h" +#include "src/core/xds/grpc/xds_transport_grpc.h" #include @@ -23,6 +23,7 @@ #include #include +#include "absl/log/check.h" #include "absl/strings/str_cat.h" #include @@ -37,8 +38,6 @@ #include #include "src/core/client_channel/client_channel_filter.h" -#include "src/core/ext/xds/xds_bootstrap.h" -#include "src/core/ext/xds/xds_bootstrap_grpc.h" #include "src/core/lib/channel/channel_args.h" #include "src/core/lib/channel/channel_fwd.h" #include "src/core/lib/channel/channel_stack.h" @@ -60,6 +59,8 @@ #include "src/core/lib/surface/init_internally.h" #include "src/core/lib/surface/lame_client.h" #include "src/core/lib/transport/connectivity_state.h" +#include "src/core/xds/grpc/xds_bootstrap_grpc.h" +#include "src/core/xds/xds_client/xds_bootstrap.h" namespace grpc_core { @@ -78,7 +79,7 @@ GrpcXdsTransportFactory::GrpcXdsTransport::GrpcStreamingCall::GrpcStreamingCall( factory_->interested_parties(), Slice::FromStaticString(method), /*authority=*/absl::nullopt, Timestamp::InfFuture(), /*registered_method=*/true); - GPR_ASSERT(call_ != nullptr); + CHECK_NE(call_, nullptr); // Init data associated with the call. grpc_metadata_array_init(&initial_metadata_recv_); grpc_metadata_array_init(&trailing_metadata_recv_); @@ -108,7 +109,7 @@ GrpcXdsTransportFactory::GrpcXdsTransport::GrpcStreamingCall::GrpcStreamingCall( this->Ref(DEBUG_LOCATION, "OnRecvInitialMetadata").release(), nullptr); call_error = grpc_call_start_batch_and_execute( call_, ops, static_cast(op - ops), &on_recv_initial_metadata_); - GPR_ASSERT(GRPC_CALL_OK == call_error); + CHECK_EQ(call_error, GRPC_CALL_OK); // Start a batch for recv_trailing_metadata. memset(ops, 0, sizeof(ops)); op = ops; @@ -125,7 +126,7 @@ GrpcXdsTransportFactory::GrpcXdsTransport::GrpcStreamingCall::GrpcStreamingCall( GRPC_CLOSURE_INIT(&on_status_received_, OnStatusReceived, this, nullptr); call_error = grpc_call_start_batch_and_execute( call_, ops, static_cast(op - ops), &on_status_received_); - GPR_ASSERT(GRPC_CALL_OK == call_error); + CHECK_EQ(call_error, GRPC_CALL_OK); GRPC_CLOSURE_INIT(&on_response_received_, OnResponseReceived, this, nullptr); } @@ -135,12 +136,12 @@ GrpcXdsTransportFactory::GrpcXdsTransport::GrpcStreamingCall:: grpc_byte_buffer_destroy(send_message_payload_); grpc_byte_buffer_destroy(recv_message_payload_); CSliceUnref(status_details_); - GPR_ASSERT(call_ != nullptr); + CHECK_NE(call_, nullptr); grpc_call_unref(call_); } void GrpcXdsTransportFactory::GrpcXdsTransport::GrpcStreamingCall::Orphan() { - GPR_ASSERT(call_ != nullptr); + CHECK_NE(call_, nullptr); // If we are here because xds_client wants to cancel the call, // OnStatusReceived() will complete the cancellation and clean up. // Otherwise, we are here because xds_client has to orphan a failed call, @@ -164,7 +165,7 @@ void GrpcXdsTransportFactory::GrpcXdsTransport::GrpcStreamingCall::SendMessage( Ref(DEBUG_LOCATION, "OnRequestSent").release(); grpc_call_error call_error = grpc_call_start_batch_and_execute(call_, &op, 1, &on_request_sent_); - GPR_ASSERT(GRPC_CALL_OK == call_error); + CHECK_EQ(call_error, GRPC_CALL_OK); } void GrpcXdsTransportFactory::GrpcXdsTransport::GrpcStreamingCall:: @@ -174,10 +175,10 @@ void GrpcXdsTransportFactory::GrpcXdsTransport::GrpcStreamingCall:: memset(&op, 0, sizeof(op)); op.op = GRPC_OP_RECV_MESSAGE; op.data.recv_message.recv_message = &recv_message_payload_; - GPR_ASSERT(call_ != nullptr); + CHECK_NE(call_, nullptr); const grpc_call_error call_error = grpc_call_start_batch_and_execute(call_, &op, 1, &on_response_received_); - GPR_ASSERT(GRPC_CALL_OK == call_error); + CHECK_EQ(call_error, GRPC_CALL_OK); } void GrpcXdsTransportFactory::GrpcXdsTransport::GrpcStreamingCall:: @@ -271,7 +272,7 @@ GrpcXdsTransportFactory::GrpcXdsTransport::GrpcXdsTransport( channel_ = CreateXdsChannel( factory->args_, static_cast(server)); - GPR_ASSERT(channel_ != nullptr); + CHECK(channel_ != nullptr); if (channel_->IsLame()) { *status = absl::UnavailableError("xds client has a lame channel"); } else { diff --git a/src/core/ext/xds/xds_transport_grpc.h b/src/core/xds/grpc/xds_transport_grpc.h similarity index 93% rename from src/core/ext/xds/xds_transport_grpc.h rename to src/core/xds/grpc/xds_transport_grpc.h index a23b7641d95..d0c08aa3cd9 100644 --- a/src/core/ext/xds/xds_transport_grpc.h +++ b/src/core/xds/grpc/xds_transport_grpc.h @@ -14,8 +14,8 @@ // limitations under the License. // -#ifndef GRPC_SRC_CORE_EXT_XDS_XDS_TRANSPORT_GRPC_H -#define GRPC_SRC_CORE_EXT_XDS_XDS_TRANSPORT_GRPC_H +#ifndef GRPC_SRC_CORE_XDS_GRPC_XDS_TRANSPORT_GRPC_H +#define GRPC_SRC_CORE_XDS_GRPC_XDS_TRANSPORT_GRPC_H #include #include @@ -28,8 +28,6 @@ #include #include -#include "src/core/ext/xds/xds_bootstrap.h" -#include "src/core/ext/xds/xds_transport.h" #include "src/core/lib/channel/channel_args.h" #include "src/core/lib/gprpp/orphanable.h" #include "src/core/lib/gprpp/ref_counted_ptr.h" @@ -37,6 +35,8 @@ #include "src/core/lib/iomgr/error.h" #include "src/core/lib/iomgr/iomgr_fwd.h" #include "src/core/lib/surface/channel.h" +#include "src/core/xds/xds_client/xds_bootstrap.h" +#include "src/core/xds/xds_client/xds_transport.h" namespace grpc_core { @@ -135,4 +135,4 @@ class GrpcXdsTransportFactory::GrpcXdsTransport::GrpcStreamingCall final } // namespace grpc_core -#endif // GRPC_SRC_CORE_EXT_XDS_XDS_TRANSPORT_GRPC_H +#endif // GRPC_SRC_CORE_XDS_GRPC_XDS_TRANSPORT_GRPC_H diff --git a/src/core/ext/xds/xds_api.cc b/src/core/xds/xds_client/xds_api.cc similarity index 99% rename from src/core/ext/xds/xds_api.cc rename to src/core/xds/xds_client/xds_api.cc index 4d4f5a1de1a..15bd601d753 100644 --- a/src/core/ext/xds/xds_api.cc +++ b/src/core/xds/xds_client/xds_api.cc @@ -14,7 +14,7 @@ // limitations under the License. // -#include "src/core/ext/xds/xds_api.h" +#include "src/core/xds/xds_client/xds_api.h" #include #include @@ -47,9 +47,9 @@ #include #include -#include "src/core/ext/xds/upb_utils.h" -#include "src/core/ext/xds/xds_client.h" #include "src/core/lib/json/json.h" +#include "src/core/xds/grpc/upb_utils.h" +#include "src/core/xds/xds_client/xds_client.h" // IWYU pragma: no_include "upb/msg_internal.h" diff --git a/src/core/ext/xds/xds_api.h b/src/core/xds/xds_client/xds_api.h similarity index 96% rename from src/core/ext/xds/xds_api.h rename to src/core/xds/xds_client/xds_api.h index 25b47fb1ed6..990d9ed7718 100644 --- a/src/core/ext/xds/xds_api.h +++ b/src/core/xds/xds_client/xds_api.h @@ -14,8 +14,8 @@ // limitations under the License. // -#ifndef GRPC_SRC_CORE_EXT_XDS_XDS_API_H -#define GRPC_SRC_CORE_EXT_XDS_XDS_API_H +#ifndef GRPC_SRC_CORE_XDS_XDS_CLIENT_XDS_API_H +#define GRPC_SRC_CORE_XDS_XDS_CLIENT_XDS_API_H #include @@ -34,11 +34,11 @@ #include -#include "src/core/ext/xds/xds_bootstrap.h" -#include "src/core/ext/xds/xds_client_stats.h" #include "src/core/lib/debug/trace.h" #include "src/core/lib/gprpp/ref_counted_ptr.h" #include "src/core/lib/gprpp/time.h" +#include "src/core/xds/xds_client/xds_bootstrap.h" +#include "src/core/xds/xds_client/xds_client_stats.h" namespace grpc_core { @@ -186,4 +186,4 @@ class XdsApi final { } // namespace grpc_core -#endif // GRPC_SRC_CORE_EXT_XDS_XDS_API_H +#endif // GRPC_SRC_CORE_XDS_XDS_CLIENT_XDS_API_H diff --git a/src/core/ext/xds/xds_bootstrap.cc b/src/core/xds/xds_client/xds_bootstrap.cc similarity index 92% rename from src/core/ext/xds/xds_bootstrap.cc rename to src/core/xds/xds_client/xds_bootstrap.cc index 11c318d2e8c..65b70778ef3 100644 --- a/src/core/ext/xds/xds_bootstrap.cc +++ b/src/core/xds/xds_client/xds_bootstrap.cc @@ -14,14 +14,14 @@ // limitations under the License. // -#include "src/core/ext/xds/xds_bootstrap.h" +#include "src/core/xds/xds_client/xds_bootstrap.h" #include "absl/types/optional.h" #include -#include "src/core/lib/gpr/string.h" #include "src/core/lib/gprpp/env.h" +#include "src/core/util/string.h" namespace grpc_core { diff --git a/src/core/ext/xds/xds_bootstrap.h b/src/core/xds/xds_client/xds_bootstrap.h similarity index 93% rename from src/core/ext/xds/xds_bootstrap.h rename to src/core/xds/xds_client/xds_bootstrap.h index 23a826d6eb0..2d94961ec9b 100644 --- a/src/core/ext/xds/xds_bootstrap.h +++ b/src/core/xds/xds_client/xds_bootstrap.h @@ -14,8 +14,8 @@ // limitations under the License. // -#ifndef GRPC_SRC_CORE_EXT_XDS_XDS_BOOTSTRAP_H -#define GRPC_SRC_CORE_EXT_XDS_XDS_BOOTSTRAP_H +#ifndef GRPC_SRC_CORE_XDS_XDS_CLIENT_XDS_BOOTSTRAP_H +#define GRPC_SRC_CORE_XDS_XDS_CLIENT_XDS_BOOTSTRAP_H #include @@ -85,4 +85,4 @@ class XdsBootstrap { } // namespace grpc_core -#endif // GRPC_SRC_CORE_EXT_XDS_XDS_BOOTSTRAP_H +#endif // GRPC_SRC_CORE_XDS_XDS_CLIENT_XDS_BOOTSTRAP_H diff --git a/src/core/ext/xds/xds_channel_args.h b/src/core/xds/xds_client/xds_channel_args.h similarity index 86% rename from src/core/ext/xds/xds_channel_args.h rename to src/core/xds/xds_client/xds_channel_args.h index dfecd44cba0..10729c5c19f 100644 --- a/src/core/ext/xds/xds_channel_args.h +++ b/src/core/xds/xds_client/xds_channel_args.h @@ -14,8 +14,8 @@ // limitations under the License. // -#ifndef GRPC_SRC_CORE_EXT_XDS_XDS_CHANNEL_ARGS_H -#define GRPC_SRC_CORE_EXT_XDS_XDS_CHANNEL_ARGS_H +#ifndef GRPC_SRC_CORE_XDS_XDS_CLIENT_XDS_CHANNEL_ARGS_H +#define GRPC_SRC_CORE_XDS_XDS_CLIENT_XDS_CHANNEL_ARGS_H // Specifies channel args for the xDS client. // Used only when GRPC_ARG_TEST_ONLY_DO_NOT_USE_IN_PROD_XDS_BOOTSTRAP_CONFIG @@ -29,4 +29,4 @@ #define GRPC_ARG_XDS_RESOURCE_DOES_NOT_EXIST_TIMEOUT_MS \ "grpc.xds_resource_does_not_exist_timeout_ms" -#endif // GRPC_SRC_CORE_EXT_XDS_XDS_CHANNEL_ARGS_H +#endif // GRPC_SRC_CORE_XDS_XDS_CLIENT_XDS_CHANNEL_ARGS_H diff --git a/src/core/ext/xds/xds_client.cc b/src/core/xds/xds_client/xds_client.cc similarity index 99% rename from src/core/ext/xds/xds_client.cc rename to src/core/xds/xds_client/xds_client.cc index 134f01687d5..a5f0c44300b 100644 --- a/src/core/ext/xds/xds_client.cc +++ b/src/core/xds/xds_client/xds_client.cc @@ -14,7 +14,7 @@ // limitations under the License. // -#include "src/core/ext/xds/xds_client.h" +#include "src/core/xds/xds_client/xds_client.h" #include #include @@ -27,6 +27,7 @@ #include #include "absl/cleanup/cleanup.h" +#include "absl/log/check.h" #include "absl/strings/match.h" #include "absl/strings/str_cat.h" #include "absl/strings/str_join.h" @@ -45,10 +46,6 @@ #include #include -#include "src/core/ext/xds/upb_utils.h" -#include "src/core/ext/xds/xds_api.h" -#include "src/core/ext/xds/xds_bootstrap.h" -#include "src/core/ext/xds/xds_client_stats.h" #include "src/core/lib/backoff/backoff.h" #include "src/core/lib/gprpp/debug_location.h" #include "src/core/lib/gprpp/orphanable.h" @@ -56,6 +53,10 @@ #include "src/core/lib/gprpp/sync.h" #include "src/core/lib/iomgr/exec_ctx.h" #include "src/core/lib/uri/uri_parser.h" +#include "src/core/xds/grpc/upb_utils.h" +#include "src/core/xds/xds_client/xds_api.h" +#include "src/core/xds/xds_client/xds_bootstrap.h" +#include "src/core/xds/xds_client/xds_client_stats.h" #define GRPC_XDS_INITIAL_CONNECT_BACKOFF_SECONDS 1 #define GRPC_XDS_RECONNECT_BACKOFF_MULTIPLIER 1.6 @@ -472,7 +473,7 @@ XdsClient::XdsChannel::XdsChannel(WeakRefCountedPtr xds_client, self->OnConnectivityFailure(std::move(status)); }, &status); - GPR_ASSERT(transport_ != nullptr); + CHECK(transport_ != nullptr); if (!status.ok()) SetChannelStatusLocked(std::move(status)); } @@ -717,8 +718,8 @@ void XdsClient::XdsChannel::RetryableCall::OnCallFinishedLocked() { template void XdsClient::XdsChannel::RetryableCall::StartNewCallLocked() { if (shutting_down_) return; - GPR_ASSERT(xds_channel_->transport_ != nullptr); - GPR_ASSERT(call_ == nullptr); + CHECK(xds_channel_->transport_ != nullptr); + CHECK(call_ == nullptr); if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) { gpr_log(GPR_INFO, "[xds_client %p] xds server %s: start new call from retryable " @@ -1005,7 +1006,7 @@ XdsClient::XdsChannel::AdsCall::AdsCall( GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_refcount_trace) ? "AdsCall" : nullptr), retryable_call_(std::move(retryable_call)) { - GPR_ASSERT(xds_client() != nullptr); + CHECK_NE(xds_client(), nullptr); // Init the ADS call. const char* method = "/envoy.service.discovery.v3.AggregatedDiscoveryService/" @@ -1015,7 +1016,7 @@ XdsClient::XdsChannel::AdsCall::AdsCall( // Passing the initial ref here. This ref will go away when // the StreamEventHandler is destroyed. RefCountedPtr(this))); - GPR_ASSERT(streaming_call_ != nullptr); + CHECK(streaming_call_ != nullptr); // Start the call. if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) { gpr_log(GPR_INFO, @@ -1369,7 +1370,7 @@ XdsClient::XdsChannel::LrsCall::LrsCall( // Init the LRS call. Note that the call will progress every time there's // activity in xds_client()->interested_parties_, which is comprised of // the polling entities from client_channel. - GPR_ASSERT(xds_client() != nullptr); + CHECK_NE(xds_client(), nullptr); const char* method = "/envoy.service.load_stats.v3.LoadReportingService/StreamLoadStats"; streaming_call_ = xds_channel()->transport_->CreateStreamingCall( @@ -1377,7 +1378,7 @@ XdsClient::XdsChannel::LrsCall::LrsCall( // Passing the initial ref here. This ref will go away when // the StreamEventHandler is destroyed. RefCountedPtr(this))); - GPR_ASSERT(streaming_call_ != nullptr); + CHECK(streaming_call_ != nullptr); // Start the call. if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) { gpr_log(GPR_INFO, @@ -1598,7 +1599,7 @@ XdsClient::XdsClient( if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) { gpr_log(GPR_INFO, "[xds_client %p] creating xds client", this); } - GPR_ASSERT(bootstrap_ != nullptr); + CHECK(bootstrap_ != nullptr); if (bootstrap_->node() != nullptr) { gpr_log(GPR_INFO, "[xds_client %p] xDS node ID: %s", this, bootstrap_->node()->id().c_str()); @@ -1853,7 +1854,7 @@ void XdsClient::MaybeRegisterResourceTypeLocked( const XdsResourceType* resource_type) { auto it = resource_types_.find(resource_type->type_url()); if (it != resource_types_.end()) { - GPR_ASSERT(it->second == resource_type); + CHECK(it->second == resource_type); return; } resource_types_.emplace(resource_type->type_url(), resource_type); @@ -1904,7 +1905,7 @@ std::string XdsClient::ConstructFullXdsResourceName( auto uri = URI::Create("xdstp", std::string(authority), absl::StrCat("/", resource_type, "/", key.id), key.query_params, /*fragment=*/""); - GPR_ASSERT(uri.ok()); + CHECK(uri.ok()); return uri->ToString(); } // Old-style name. diff --git a/src/core/ext/xds/xds_client.h b/src/core/xds/xds_client/xds_client.h similarity index 96% rename from src/core/ext/xds/xds_client.h rename to src/core/xds/xds_client/xds_client.h index 2dc1acb3b2f..a16fe6ed5f2 100644 --- a/src/core/ext/xds/xds_client.h +++ b/src/core/xds/xds_client/xds_client.h @@ -14,8 +14,8 @@ // limitations under the License. // -#ifndef GRPC_SRC_CORE_EXT_XDS_XDS_CLIENT_H -#define GRPC_SRC_CORE_EXT_XDS_XDS_CLIENT_H +#ifndef GRPC_SRC_CORE_XDS_XDS_CLIENT_XDS_CLIENT_H +#define GRPC_SRC_CORE_XDS_XDS_CLIENT_XDS_CLIENT_H #include #include @@ -33,12 +33,6 @@ #include #include -#include "src/core/ext/xds/xds_api.h" -#include "src/core/ext/xds/xds_bootstrap.h" -#include "src/core/ext/xds/xds_client_stats.h" -#include "src/core/ext/xds/xds_metrics.h" -#include "src/core/ext/xds/xds_resource_type.h" -#include "src/core/ext/xds/xds_transport.h" #include "src/core/lib/debug/trace.h" #include "src/core/lib/gprpp/dual_ref_counted.h" #include "src/core/lib/gprpp/orphanable.h" @@ -48,6 +42,12 @@ #include "src/core/lib/gprpp/time.h" #include "src/core/lib/gprpp/work_serializer.h" #include "src/core/lib/uri/uri_parser.h" +#include "src/core/xds/xds_client/xds_api.h" +#include "src/core/xds/xds_client/xds_bootstrap.h" +#include "src/core/xds/xds_client/xds_client_stats.h" +#include "src/core/xds/xds_client/xds_metrics.h" +#include "src/core/xds/xds_client/xds_resource_type.h" +#include "src/core/xds/xds_client/xds_transport.h" namespace grpc_core { @@ -387,4 +387,4 @@ class XdsClient : public DualRefCounted { } // namespace grpc_core -#endif // GRPC_SRC_CORE_EXT_XDS_XDS_CLIENT_H +#endif // GRPC_SRC_CORE_XDS_XDS_CLIENT_XDS_CLIENT_H diff --git a/src/core/ext/xds/xds_client_stats.cc b/src/core/xds/xds_client/xds_client_stats.cc similarity index 98% rename from src/core/ext/xds/xds_client_stats.cc rename to src/core/xds/xds_client/xds_client_stats.cc index 2fb29968228..fa1cfe1087e 100644 --- a/src/core/ext/xds/xds_client_stats.cc +++ b/src/core/xds/xds_client/xds_client_stats.cc @@ -16,14 +16,14 @@ // // -#include "src/core/ext/xds/xds_client_stats.h" +#include "src/core/xds/xds_client/xds_client_stats.h" #include #include -#include "src/core/ext/xds/xds_client.h" #include "src/core/lib/debug/trace.h" #include "src/core/lib/gprpp/debug_location.h" +#include "src/core/xds/xds_client/xds_client.h" namespace grpc_core { diff --git a/src/core/ext/xds/xds_client_stats.h b/src/core/xds/xds_client/xds_client_stats.h similarity index 97% rename from src/core/ext/xds/xds_client_stats.h rename to src/core/xds/xds_client/xds_client_stats.h index 7aa3c0112bb..1bfc28c3f3e 100644 --- a/src/core/ext/xds/xds_client_stats.h +++ b/src/core/xds/xds_client/xds_client_stats.h @@ -16,8 +16,8 @@ // // -#ifndef GRPC_SRC_CORE_EXT_XDS_XDS_CLIENT_STATS_H -#define GRPC_SRC_CORE_EXT_XDS_XDS_CLIENT_STATS_H +#ifndef GRPC_SRC_CORE_XDS_XDS_CLIENT_XDS_CLIENT_STATS_H +#define GRPC_SRC_CORE_XDS_XDS_CLIENT_XDS_CLIENT_STATS_H #include #include @@ -31,14 +31,14 @@ #include -#include "src/core/ext/xds/xds_bootstrap.h" #include "src/core/lib/channel/call_tracer.h" -#include "src/core/lib/gpr/useful.h" #include "src/core/lib/gprpp/per_cpu.h" #include "src/core/lib/gprpp/ref_counted.h" #include "src/core/lib/gprpp/ref_counted_ptr.h" #include "src/core/lib/gprpp/sync.h" #include "src/core/resolver/endpoint_addresses.h" +#include "src/core/util/useful.h" +#include "src/core/xds/xds_client/xds_bootstrap.h" namespace grpc_core { @@ -255,4 +255,4 @@ class XdsClusterLocalityStats final } // namespace grpc_core -#endif // GRPC_SRC_CORE_EXT_XDS_XDS_CLIENT_STATS_H +#endif // GRPC_SRC_CORE_XDS_XDS_CLIENT_XDS_CLIENT_STATS_H diff --git a/src/core/ext/xds/xds_metrics.h b/src/core/xds/xds_client/xds_metrics.h similarity index 88% rename from src/core/ext/xds/xds_metrics.h rename to src/core/xds/xds_client/xds_metrics.h index 2f11761f7e6..5262e02e084 100644 --- a/src/core/ext/xds/xds_metrics.h +++ b/src/core/xds/xds_client/xds_metrics.h @@ -14,8 +14,8 @@ // limitations under the License. // -#ifndef GRPC_SRC_CORE_EXT_XDS_XDS_METRICS_H -#define GRPC_SRC_CORE_EXT_XDS_XDS_METRICS_H +#ifndef GRPC_SRC_CORE_XDS_XDS_CLIENT_XDS_METRICS_H +#define GRPC_SRC_CORE_XDS_XDS_CLIENT_XDS_METRICS_H #include "absl/strings/string_view.h" @@ -38,4 +38,4 @@ class XdsMetricsReporter { } // namespace grpc_core -#endif // GRPC_SRC_CORE_EXT_XDS_XDS_METRICS_H +#endif // GRPC_SRC_CORE_XDS_XDS_CLIENT_XDS_METRICS_H diff --git a/src/core/ext/xds/xds_resource_type.h b/src/core/xds/xds_client/xds_resource_type.h similarity index 93% rename from src/core/ext/xds/xds_resource_type.h rename to src/core/xds/xds_client/xds_resource_type.h index e4a8c2d9440..dade8ce0f83 100644 --- a/src/core/ext/xds/xds_resource_type.h +++ b/src/core/xds/xds_client/xds_resource_type.h @@ -14,8 +14,8 @@ // limitations under the License. // -#ifndef GRPC_SRC_CORE_EXT_XDS_XDS_RESOURCE_TYPE_H -#define GRPC_SRC_CORE_EXT_XDS_XDS_RESOURCE_TYPE_H +#ifndef GRPC_SRC_CORE_XDS_XDS_CLIENT_XDS_RESOURCE_TYPE_H +#define GRPC_SRC_CORE_XDS_XDS_CLIENT_XDS_RESOURCE_TYPE_H #include #include @@ -27,8 +27,8 @@ #include -#include "src/core/ext/xds/xds_bootstrap.h" #include "src/core/lib/debug/trace.h" +#include "src/core/xds/xds_client/xds_bootstrap.h" namespace grpc_core { @@ -95,4 +95,4 @@ class XdsResourceType { } // namespace grpc_core -#endif // GRPC_SRC_CORE_EXT_XDS_XDS_RESOURCE_TYPE_H +#endif // GRPC_SRC_CORE_XDS_XDS_CLIENT_XDS_RESOURCE_TYPE_H diff --git a/src/core/ext/xds/xds_resource_type_impl.h b/src/core/xds/xds_client/xds_resource_type_impl.h similarity index 91% rename from src/core/ext/xds/xds_resource_type_impl.h rename to src/core/xds/xds_client/xds_resource_type_impl.h index 49cc43ea45a..dd47ccb0b09 100644 --- a/src/core/ext/xds/xds_resource_type_impl.h +++ b/src/core/xds/xds_client/xds_resource_type_impl.h @@ -14,8 +14,8 @@ // limitations under the License. // -#ifndef GRPC_SRC_CORE_EXT_XDS_XDS_RESOURCE_TYPE_IMPL_H -#define GRPC_SRC_CORE_EXT_XDS_XDS_RESOURCE_TYPE_IMPL_H +#ifndef GRPC_SRC_CORE_XDS_XDS_CLIENT_XDS_RESOURCE_TYPE_IMPL_H +#define GRPC_SRC_CORE_XDS_XDS_CLIENT_XDS_RESOURCE_TYPE_IMPL_H #include #include @@ -23,9 +23,9 @@ #include -#include "src/core/ext/xds/xds_client.h" -#include "src/core/ext/xds/xds_resource_type.h" #include "src/core/lib/gprpp/ref_counted_ptr.h" +#include "src/core/xds/xds_client/xds_client.h" +#include "src/core/xds/xds_client/xds_resource_type.h" namespace grpc_core { @@ -85,4 +85,4 @@ class XdsResourceTypeImpl : public XdsResourceType { } // namespace grpc_core -#endif // GRPC_SRC_CORE_EXT_XDS_XDS_RESOURCE_TYPE_IMPL_H +#endif // GRPC_SRC_CORE_XDS_XDS_CLIENT_XDS_RESOURCE_TYPE_IMPL_H diff --git a/src/core/ext/xds/xds_transport.h b/src/core/xds/xds_client/xds_transport.h similarity index 93% rename from src/core/ext/xds/xds_transport.h rename to src/core/xds/xds_client/xds_transport.h index 751af812038..43b19d63035 100644 --- a/src/core/ext/xds/xds_transport.h +++ b/src/core/xds/xds_client/xds_transport.h @@ -14,8 +14,8 @@ // limitations under the License. // -#ifndef GRPC_SRC_CORE_EXT_XDS_XDS_TRANSPORT_H -#define GRPC_SRC_CORE_EXT_XDS_XDS_TRANSPORT_H +#ifndef GRPC_SRC_CORE_XDS_XDS_CLIENT_XDS_TRANSPORT_H +#define GRPC_SRC_CORE_XDS_XDS_CLIENT_XDS_TRANSPORT_H #include #include @@ -26,8 +26,8 @@ #include -#include "src/core/ext/xds/xds_bootstrap.h" #include "src/core/lib/gprpp/orphanable.h" +#include "src/core/xds/xds_client/xds_bootstrap.h" namespace grpc_core { @@ -86,4 +86,4 @@ class XdsTransportFactory : public InternallyRefCounted { } // namespace grpc_core -#endif // GRPC_SRC_CORE_EXT_XDS_XDS_TRANSPORT_H +#endif // GRPC_SRC_CORE_XDS_XDS_CLIENT_XDS_TRANSPORT_H diff --git a/src/cpp/client/call_credentials.cc b/src/cpp/client/call_credentials.cc index 22efb17d62c..88ccd07ea1f 100644 --- a/src/cpp/client/call_credentials.cc +++ b/src/cpp/client/call_credentials.cc @@ -11,6 +11,8 @@ // 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. + +#include "absl/log/check.h" #include "absl/strings/str_cat.h" #include @@ -22,7 +24,7 @@ namespace grpc { CallCredentials::CallCredentials(grpc_call_credentials* c_creds) : c_creds_(c_creds) { - GPR_ASSERT(c_creds != nullptr); + CHECK_NE(c_creds, nullptr); } CallCredentials::~CallCredentials() { grpc_call_credentials_release(c_creds_); } diff --git a/src/cpp/client/channel_cc.cc b/src/cpp/client/channel_cc.cc index 818eedb68f2..8b8e37fc9f2 100644 --- a/src/cpp/client/channel_cc.cc +++ b/src/cpp/client/channel_cc.cc @@ -23,6 +23,8 @@ #include #include +#include "absl/log/check.h" + #include #include #include @@ -207,7 +209,7 @@ bool Channel::WaitForStateChangeImpl(grpc_connectivity_state last_observed, void* tag = nullptr; NotifyOnStateChangeImpl(last_observed, deadline, &cq, nullptr); cq.Next(&tag, &ok); - GPR_ASSERT(tag == nullptr); + CHECK_EQ(tag, nullptr); return ok; } diff --git a/src/cpp/client/client_context.cc b/src/cpp/client/client_context.cc index b986946e64d..76bee4cb6b8 100644 --- a/src/cpp/client/client_context.cc +++ b/src/cpp/client/client_context.cc @@ -24,6 +24,7 @@ #include #include +#include "absl/log/check.h" #include "absl/strings/str_format.h" #include @@ -125,7 +126,7 @@ void ClientContext::AddMetadata(const std::string& meta_key, void ClientContext::set_call(grpc_call* call, const std::shared_ptr& channel) { internal::MutexLock lock(&mu_); - GPR_ASSERT(call_ == nullptr); + CHECK_EQ(call_, nullptr); call_ = call; channel_ = channel; if (creds_ && !creds_->ApplyToCall(call_)) { @@ -148,7 +149,7 @@ void ClientContext::set_compression_algorithm( grpc_core::Crash(absl::StrFormat( "Name for compression algorithm '%d' unknown.", algorithm)); } - GPR_ASSERT(algorithm_name != nullptr); + CHECK_NE(algorithm_name, nullptr); AddMetadata(GRPC_COMPRESSION_REQUEST_ALGORITHM_MD_KEY, algorithm_name); } @@ -180,9 +181,9 @@ std::string ClientContext::peer() const { } void ClientContext::SetGlobalCallbacks(GlobalCallbacks* client_callbacks) { - GPR_ASSERT(g_client_callbacks == g_default_client_callbacks); - GPR_ASSERT(client_callbacks != nullptr); - GPR_ASSERT(client_callbacks != g_default_client_callbacks); + CHECK(g_client_callbacks == g_default_client_callbacks); + CHECK_NE(client_callbacks, nullptr); + CHECK(client_callbacks != g_default_client_callbacks); g_client_callbacks = client_callbacks; } diff --git a/src/cpp/client/secure_credentials.cc b/src/cpp/client/secure_credentials.cc index 913378a2ee9..dabe0ce79ad 100644 --- a/src/cpp/client/secure_credentials.cc +++ b/src/cpp/client/secure_credentials.cc @@ -24,6 +24,8 @@ #include #include +#include "absl/log/check.h" +#include "absl/log/log.h" #include "absl/status/status.h" #include "absl/status/statusor.h" #include "absl/strings/str_join.h" @@ -34,7 +36,6 @@ #include #include #include -#include #include #include #include @@ -272,8 +273,7 @@ std::shared_ptr ServiceAccountJWTAccessCredentials( const std::string& json_key, long token_lifetime_seconds) { grpc::internal::GrpcLibrary init; // To call grpc_init(). if (token_lifetime_seconds <= 0) { - gpr_log(GPR_ERROR, - "Trying to create JWTCredentials with non-positive lifetime"); + LOG(ERROR) << "Trying to create JWTCredentials with non-positive lifetime"; return WrapCallCredentials(nullptr); } gpr_timespec lifetime = @@ -362,7 +362,7 @@ class MetadataCredentialsPluginWrapper final : private internal::GrpcLibrary { grpc_metadata creds_md[GRPC_METADATA_CREDENTIALS_PLUGIN_SYNC_MAX], size_t* num_creds_md, grpc_status_code* status, const char** error_details) { - GPR_ASSERT(wrapper); + CHECK(wrapper); MetadataCredentialsPluginWrapper* w = static_cast(wrapper); if (!w->plugin_) { @@ -393,7 +393,7 @@ class MetadataCredentialsPluginWrapper final : private internal::GrpcLibrary { } static char* DebugString(void* wrapper) { - GPR_ASSERT(wrapper); + CHECK(wrapper); MetadataCredentialsPluginWrapper* w = static_cast(wrapper); return gpr_strdup(w->plugin_->DebugString().c_str()); diff --git a/src/cpp/client/xds_credentials.cc b/src/cpp/client/xds_credentials.cc index 43a96108c8c..d7878e5cb5b 100644 --- a/src/cpp/client/xds_credentials.cc +++ b/src/cpp/client/xds_credentials.cc @@ -18,6 +18,8 @@ #include +#include "absl/log/check.h" + #include #include #include @@ -30,13 +32,13 @@ class XdsChannelCredentialsImpl final : public ChannelCredentials { const std::shared_ptr& fallback_creds) : ChannelCredentials( grpc_xds_credentials_create(fallback_creds->c_creds_)) { - GPR_ASSERT(fallback_creds->c_creds_ != nullptr); + CHECK_NE(fallback_creds->c_creds_, nullptr); } }; std::shared_ptr XdsCredentials( const std::shared_ptr& fallback_creds) { - GPR_ASSERT(fallback_creds != nullptr); + CHECK_NE(fallback_creds, nullptr); return std::make_shared(fallback_creds); } diff --git a/src/cpp/common/alarm.cc b/src/cpp/common/alarm.cc index f0e7049024c..918922eb235 100644 --- a/src/cpp/common/alarm.cc +++ b/src/cpp/common/alarm.cc @@ -20,6 +20,7 @@ #include #include +#include "absl/log/check.h" #include "absl/status/status.h" #include @@ -65,10 +66,10 @@ class AlarmImpl : public grpc::internal::CompletionQueueTag { GRPC_CQ_INTERNAL_REF(cq->cq(), "alarm"); cq_ = cq->cq(); tag_ = tag; - GPR_ASSERT(grpc_cq_begin_op(cq_, this)); + CHECK(grpc_cq_begin_op(cq_, this)); Ref(); - GPR_ASSERT(cq_armed_.exchange(true) == false); - GPR_ASSERT(!callback_armed_.load()); + CHECK(cq_armed_.exchange(true) == false); + CHECK(!callback_armed_.load()); cq_timer_handle_ = event_engine_->RunAfter( grpc_core::Timestamp::FromTimespecRoundUp(deadline) - grpc_core::ExecCtx::Get()->Now(), @@ -79,8 +80,8 @@ class AlarmImpl : public grpc::internal::CompletionQueueTag { // Don't use any CQ at all. Instead just use the timer to fire the function callback_ = std::move(f); Ref(); - GPR_ASSERT(callback_armed_.exchange(true) == false); - GPR_ASSERT(!cq_armed_.load()); + CHECK(callback_armed_.exchange(true) == false); + CHECK(!cq_armed_.load()); callback_timer_handle_ = event_engine_->RunAfter( grpc_core::Timestamp::FromTimespecRoundUp(deadline) - grpc_core::ExecCtx::Get()->Now(), diff --git a/src/cpp/common/alts_util.cc b/src/cpp/common/alts_util.cc index 784b0157c42..df1a8a8cf5b 100644 --- a/src/cpp/common/alts_util.cc +++ b/src/cpp/common/alts_util.cc @@ -21,10 +21,10 @@ #include #include +#include "absl/log/log.h" #include "upb/mem/arena.hpp" #include -#include #include #include #include @@ -40,25 +40,25 @@ namespace experimental { std::unique_ptr GetAltsContextFromAuthContext( const std::shared_ptr& auth_context) { if (auth_context == nullptr) { - gpr_log(GPR_ERROR, "auth_context is nullptr."); + LOG(ERROR) << "auth_context is nullptr."; return nullptr; } std::vector ctx_vector = auth_context->FindPropertyValues(TSI_ALTS_CONTEXT); if (ctx_vector.size() != 1) { - gpr_log(GPR_ERROR, "contains zero or more than one ALTS context."); + LOG(ERROR) << "contains zero or more than one ALTS context."; return nullptr; } upb::Arena context_arena; grpc_gcp_AltsContext* ctx = grpc_gcp_AltsContext_parse( ctx_vector[0].data(), ctx_vector[0].size(), context_arena.ptr()); if (ctx == nullptr) { - gpr_log(GPR_ERROR, "fails to parse ALTS context."); + LOG(ERROR) << "fails to parse ALTS context."; return nullptr; } if (grpc_gcp_AltsContext_security_level(ctx) < GRPC_SECURITY_MIN || grpc_gcp_AltsContext_security_level(ctx) > GRPC_SECURITY_MAX) { - gpr_log(GPR_ERROR, "security_level is invalid."); + LOG(ERROR) << "security_level is invalid."; return nullptr; } return std::make_unique(AltsContext(ctx)); diff --git a/src/cpp/common/channel_arguments.cc b/src/cpp/common/channel_arguments.cc index 60f334ce3cf..3eb56c32806 100644 --- a/src/cpp/common/channel_arguments.cc +++ b/src/cpp/common/channel_arguments.cc @@ -20,6 +20,8 @@ #include #include +#include "absl/log/check.h" + #include #include #include @@ -45,7 +47,7 @@ ChannelArguments::ChannelArguments(const ChannelArguments& other) for (const auto& a : other.args_) { grpc_arg ap; ap.type = a.type; - GPR_ASSERT(list_it_src->c_str() == a.key); + CHECK(list_it_src->c_str() == a.key); ap.key = const_cast(list_it_dst->c_str()); ++list_it_src; ++list_it_dst; @@ -54,7 +56,7 @@ ChannelArguments::ChannelArguments(const ChannelArguments& other) ap.value.integer = a.value.integer; break; case GRPC_ARG_STRING: - GPR_ASSERT(list_it_src->c_str() == a.value.string); + CHECK(list_it_src->c_str() == a.value.string); ap.value.string = const_cast(list_it_dst->c_str()); ++list_it_src; ++list_it_dst; @@ -101,7 +103,7 @@ void ChannelArguments::SetSocketMutator(grpc_socket_mutator* mutator) { for (auto& arg : args_) { if (arg.type == mutator_arg.type && std::string(arg.key) == std::string(mutator_arg.key)) { - GPR_ASSERT(!replaced); + CHECK(!replaced); arg.value.pointer.vtable->destroy(arg.value.pointer.p); arg.value.pointer = mutator_arg.value.pointer; replaced = true; @@ -130,7 +132,7 @@ void ChannelArguments::SetUserAgentPrefix( ++strings_it; if (arg.type == GRPC_ARG_STRING) { if (std::string(arg.key) == GRPC_ARG_PRIMARY_USER_AGENT_STRING) { - GPR_ASSERT(arg.value.string == strings_it->c_str()); + CHECK(arg.value.string == strings_it->c_str()); *(strings_it) = user_agent_prefix + " " + arg.value.string; arg.value.string = const_cast(strings_it->c_str()); replaced = true; diff --git a/src/cpp/common/completion_queue_cc.cc b/src/cpp/common/completion_queue_cc.cc index cc3af5786bd..b2c3463c053 100644 --- a/src/cpp/common/completion_queue_cc.cc +++ b/src/cpp/common/completion_queue_cc.cc @@ -18,19 +18,20 @@ #include #include "absl/base/thread_annotations.h" +#include "absl/log/check.h" +#include "absl/log/log.h" #include #include -#include #include #include #include #include #include -#include "src/core/lib/gpr/useful.h" #include "src/core/lib/gprpp/sync.h" #include "src/core/lib/gprpp/thd.h" +#include "src/core/util/useful.h" namespace grpc { namespace { @@ -83,7 +84,7 @@ struct CallbackAlternativeCQ { gpr_time_from_millis(100, GPR_TIMESPAN))); continue; } - GPR_DEBUG_ASSERT(ev.type == GRPC_OP_COMPLETE); + DCHECK(ev.type == GRPC_OP_COMPLETE); // We can always execute the callback inline rather than // pushing it to another Executor thread because this // thread is definitely running on a background thread, does not @@ -133,8 +134,7 @@ CompletionQueue::CompletionQueue(grpc_completion_queue* take) void CompletionQueue::Shutdown() { #ifndef NDEBUG if (!ServerListEmpty()) { - gpr_log(GPR_ERROR, - "CompletionQueue shutdown being shutdown before its server."); + LOG(ERROR) << "CompletionQueue shutdown being shutdown before its server."; } #endif CompleteAvalanching(); @@ -169,7 +169,7 @@ CompletionQueue::CompletionQueueTLSCache::CompletionQueueTLSCache( } CompletionQueue::CompletionQueueTLSCache::~CompletionQueueTLSCache() { - GPR_ASSERT(flushed_); + CHECK(flushed_); } bool CompletionQueue::CompletionQueueTLSCache::Flush(void** tag, bool* ok) { @@ -199,7 +199,7 @@ void CompletionQueue::ReleaseCallbackAlternativeCQ(CompletionQueue* cq) (void)cq; // This accesses g_callback_alternative_cq without acquiring the mutex // but it's considered safe because it just reads the pointer address. - GPR_DEBUG_ASSERT(cq == g_callback_alternative_cq.cq); + DCHECK(cq == g_callback_alternative_cq.cq); g_callback_alternative_cq.Unref(); } diff --git a/src/cpp/common/tls_certificate_provider.cc b/src/cpp/common/tls_certificate_provider.cc index e978a085bee..b94a807bfdb 100644 --- a/src/cpp/common/tls_certificate_provider.cc +++ b/src/cpp/common/tls_certificate_provider.cc @@ -17,6 +17,8 @@ #include #include +#include "absl/log/check.h" + #include #include #include @@ -28,7 +30,7 @@ namespace experimental { StaticDataCertificateProvider::StaticDataCertificateProvider( const std::string& root_certificate, const std::vector& identity_key_cert_pairs) { - GPR_ASSERT(!root_certificate.empty() || !identity_key_cert_pairs.empty()); + CHECK(!root_certificate.empty() || !identity_key_cert_pairs.empty()); grpc_tls_identity_pairs* pairs_core = grpc_tls_identity_pairs_create(); for (const IdentityKeyCertPair& pair : identity_key_cert_pairs) { grpc_tls_identity_pairs_add_pair(pairs_core, pair.private_key.c_str(), @@ -36,7 +38,7 @@ StaticDataCertificateProvider::StaticDataCertificateProvider( } c_provider_ = grpc_tls_certificate_provider_static_data_create( root_certificate.c_str(), pairs_core); - GPR_ASSERT(c_provider_ != nullptr); + CHECK_NE(c_provider_, nullptr); }; StaticDataCertificateProvider::~StaticDataCertificateProvider() { @@ -50,7 +52,7 @@ FileWatcherCertificateProvider::FileWatcherCertificateProvider( c_provider_ = grpc_tls_certificate_provider_file_watcher_create( private_key_path.c_str(), identity_certificate_path.c_str(), root_cert_path.c_str(), refresh_interval_sec); - GPR_ASSERT(c_provider_ != nullptr); + CHECK_NE(c_provider_, nullptr); }; FileWatcherCertificateProvider::~FileWatcherCertificateProvider() { diff --git a/src/cpp/common/tls_certificate_verifier.cc b/src/cpp/common/tls_certificate_verifier.cc index 9e717d0714a..a642760a4a9 100644 --- a/src/cpp/common/tls_certificate_verifier.cc +++ b/src/cpp/common/tls_certificate_verifier.cc @@ -22,6 +22,8 @@ #include #include +#include "absl/log/check.h" + #include #include #include @@ -39,7 +41,7 @@ namespace experimental { TlsCustomVerificationCheckRequest::TlsCustomVerificationCheckRequest( grpc_tls_custom_verification_check_request* request) : c_request_(request) { - GPR_ASSERT(c_request_ != nullptr); + CHECK_NE(c_request_, nullptr); } grpc::string_ref TlsCustomVerificationCheckRequest::target_name() const { @@ -119,8 +121,8 @@ CertificateVerifier::~CertificateVerifier() { bool CertificateVerifier::Verify(TlsCustomVerificationCheckRequest* request, std::function callback, grpc::Status* sync_status) { - GPR_ASSERT(request != nullptr); - GPR_ASSERT(request->c_request() != nullptr); + CHECK_NE(request, nullptr); + CHECK_NE(request->c_request(), nullptr); { internal::MutexLock lock(&mu_); request_map_.emplace(request->c_request(), std::move(callback)); @@ -143,8 +145,8 @@ bool CertificateVerifier::Verify(TlsCustomVerificationCheckRequest* request, } void CertificateVerifier::Cancel(TlsCustomVerificationCheckRequest* request) { - GPR_ASSERT(request != nullptr); - GPR_ASSERT(request->c_request() != nullptr); + CHECK_NE(request, nullptr); + CHECK_NE(request->c_request(), nullptr); grpc_tls_certificate_verifier_cancel(verifier_, request->c_request()); } @@ -191,7 +193,7 @@ int ExternalCertificateVerifier::VerifyInCoreExternalVerifier( internal::MutexLock lock(&self->mu_); auto pair = self->request_map_.emplace( request, AsyncRequestState(callback, callback_arg, request)); - GPR_ASSERT(pair.second); + CHECK(pair.second); cpp_request = &pair.first->second.cpp_request; } grpc::Status sync_current_verifier_status; diff --git a/src/cpp/common/tls_credentials_options.cc b/src/cpp/common/tls_credentials_options.cc index 77af87b1280..ef260b86908 100644 --- a/src/cpp/common/tls_credentials_options.cc +++ b/src/cpp/common/tls_credentials_options.cc @@ -19,6 +19,8 @@ #include #include +#include "absl/log/check.h" + #include #include #include @@ -104,13 +106,13 @@ void TlsCredentialsOptions::set_certificate_verifier( void TlsCredentialsOptions::set_min_tls_version(grpc_tls_version tls_version) { grpc_tls_credentials_options* options = mutable_c_credentials_options(); - GPR_ASSERT(options != nullptr); + CHECK_NE(options, nullptr); grpc_tls_credentials_options_set_min_tls_version(options, tls_version); } void TlsCredentialsOptions::set_max_tls_version(grpc_tls_version tls_version) { grpc_tls_credentials_options* options = mutable_c_credentials_options(); - GPR_ASSERT(options != nullptr); + CHECK_NE(options, nullptr); grpc_tls_credentials_options_set_max_tls_version(options, tls_version); } @@ -121,14 +123,14 @@ grpc_tls_credentials_options* TlsCredentialsOptions::c_credentials_options() void TlsCredentialsOptions::set_check_call_host(bool check_call_host) { grpc_tls_credentials_options* options = mutable_c_credentials_options(); - GPR_ASSERT(options != nullptr); + CHECK_NE(options, nullptr); grpc_tls_credentials_options_set_check_call_host(options, check_call_host); } void TlsChannelCredentialsOptions::set_verify_server_certs( bool verify_server_certs) { grpc_tls_credentials_options* options = mutable_c_credentials_options(); - GPR_ASSERT(options != nullptr); + CHECK_NE(options, nullptr); grpc_tls_credentials_options_set_verify_server_cert(options, verify_server_certs); } @@ -136,7 +138,7 @@ void TlsChannelCredentialsOptions::set_verify_server_certs( void TlsServerCredentialsOptions::set_cert_request_type( grpc_ssl_client_certificate_request_type cert_request_type) { grpc_tls_credentials_options* options = mutable_c_credentials_options(); - GPR_ASSERT(options != nullptr); + CHECK_NE(options, nullptr); grpc_tls_credentials_options_set_cert_request_type(options, cert_request_type); } @@ -144,7 +146,7 @@ void TlsServerCredentialsOptions::set_cert_request_type( void TlsServerCredentialsOptions::set_send_client_ca_list( bool send_client_ca_list) { grpc_tls_credentials_options* options = mutable_c_credentials_options(); - GPR_ASSERT(options != nullptr); + CHECK_NE(options, nullptr); grpc_tls_credentials_options_set_send_client_ca_list(options, send_client_ca_list); } diff --git a/src/cpp/ext/csm/BUILD b/src/cpp/ext/csm/BUILD index e534f117607..6ee6bef1d4a 100644 --- a/src/cpp/ext/csm/BUILD +++ b/src/cpp/ext/csm/BUILD @@ -41,6 +41,8 @@ grpc_cc_library( ], external_deps = [ "absl/functional:any_invocable", + "absl/log:check", + "absl/log:log", "absl/status:statusor", "absl/strings", "absl/types:optional", diff --git a/src/cpp/ext/csm/csm_observability.cc b/src/cpp/ext/csm/csm_observability.cc index e89950178ef..c924db3fbdc 100644 --- a/src/cpp/ext/csm/csm_observability.cc +++ b/src/cpp/ext/csm/csm_observability.cc @@ -23,6 +23,7 @@ #include #include "absl/functional/any_invocable.h" +#include "absl/log/log.h" #include "absl/status/statusor.h" #include "absl/types/optional.h" #include "google/cloud/opentelemetry/resource_detector.h" @@ -30,13 +31,12 @@ #include "opentelemetry/sdk/resource/resource.h" #include "opentelemetry/sdk/resource/resource_detector.h" -#include #include #include -#include "src/core/ext/xds/xds_enabled_server.h" #include "src/core/lib/channel/channel_args.h" #include "src/core/lib/uri/uri_parser.h" +#include "src/core/xds/grpc/xds_enabled_server.h" #include "src/cpp/ext/csm/metadata_exchange.h" #include "src/cpp/ext/otel/otel_plugin.h" @@ -48,16 +48,15 @@ namespace { std::atomic g_csm_plugin_enabled(false); } -bool CsmServerSelector(const grpc_core::ChannelArgs& args) { - return g_csm_plugin_enabled && - args.GetBool(GRPC_ARG_XDS_ENABLED_SERVER).value_or(false); +bool CsmServerSelector(const grpc_core::ChannelArgs& /*args*/) { + return g_csm_plugin_enabled; } bool CsmChannelTargetSelector(absl::string_view target) { if (!g_csm_plugin_enabled) return false; auto uri = grpc_core::URI::Parse(target); if (!uri.ok()) { - gpr_log(GPR_ERROR, "Failed to parse URI: %s", std::string(target).c_str()); + LOG(ERROR) << "Failed to parse URI: " << target; return false; } // CSM channels should have an "xds" scheme diff --git a/src/cpp/ext/csm/metadata_exchange.cc b/src/cpp/ext/csm/metadata_exchange.cc index b0990e66358..3a457a63d5a 100644 --- a/src/cpp/ext/csm/metadata_exchange.cc +++ b/src/cpp/ext/csm/metadata_exchange.cc @@ -25,6 +25,7 @@ #include #include +#include "absl/log/check.h" #include "absl/status/statusor.h" #include "absl/strings/escaping.h" #include "absl/strings/str_split.h" @@ -263,7 +264,7 @@ NextFromAttributeList(absl::Span attributes, size_t start_index, size_t curr, google_protobuf_Struct* decoded_metadata, upb_Arena* arena) { - GPR_DEBUG_ASSERT(curr >= start_index); + DCHECK_GE(curr, start_index); const size_t index = curr - start_index; if (index >= attributes.size()) return absl::nullopt; const auto& attribute = attributes[index]; diff --git a/src/cpp/ext/filters/census/client_filter.cc b/src/cpp/ext/filters/census/client_filter.cc index 16131ce8af4..b7157f01599 100644 --- a/src/cpp/ext/filters/census/client_filter.cc +++ b/src/cpp/ext/filters/census/client_filter.cc @@ -28,6 +28,7 @@ #include #include +#include "absl/log/check.h" #include "absl/status/status.h" #include "absl/strings/str_cat.h" #include "absl/strings/str_format.h" @@ -106,9 +107,8 @@ OpenCensusClientFilter::MakeCallPromise( call_context, path != nullptr ? path->Ref() : grpc_core::Slice(), grpc_core::GetContext(), OpenCensusTracingEnabled() && tracing_enabled_); - GPR_DEBUG_ASSERT( - call_context[GRPC_CONTEXT_CALL_TRACER_ANNOTATION_INTERFACE].value == - nullptr); + DCHECK(call_context[GRPC_CONTEXT_CALL_TRACER_ANNOTATION_INTERFACE].value == + nullptr); call_context[GRPC_CONTEXT_CALL_TRACER_ANNOTATION_INTERFACE].value = tracer; call_context[GRPC_CONTEXT_CALL_TRACER_ANNOTATION_INTERFACE].destroy = nullptr; return next_promise_factory(std::move(call_args)); @@ -407,7 +407,7 @@ void OpenCensusCallTracer::RecordApiLatency(absl::Duration api_latency, CensusContext OpenCensusCallTracer::CreateCensusContextForCallAttempt() { if (!tracing_enabled_) return CensusContext(context_.tags()); - GPR_DEBUG_ASSERT(context_.Context().IsValid()); + DCHECK(context_.Context().IsValid()); auto context = CensusContext(absl::StrCat("Attempt.", method_), &(context_.Span()), context_.tags()); grpc::internal::OpenCensusRegistry::Get() diff --git a/src/cpp/ext/gcp/BUILD b/src/cpp/ext/gcp/BUILD index e5466a4cddb..814bf9012a2 100644 --- a/src/cpp/ext/gcp/BUILD +++ b/src/cpp/ext/gcp/BUILD @@ -115,6 +115,7 @@ grpc_cc_library( ], external_deps = [ "absl/base:core_headers", + "absl/log:log", "absl/numeric:int128", "absl/strings", "absl/strings:str_format", @@ -156,6 +157,8 @@ grpc_cc_library( "absl/base:core_headers", "absl/container:flat_hash_map", "absl/functional:any_invocable", + "absl/log:check", + "absl/log:log", "absl/status", "absl/status:statusor", "absl/types:optional", diff --git a/src/cpp/ext/gcp/environment_autodetect.cc b/src/cpp/ext/gcp/environment_autodetect.cc index 35cbb3a108d..b4963ffa7ea 100644 --- a/src/cpp/ext/gcp/environment_autodetect.cc +++ b/src/cpp/ext/gcp/environment_autodetect.cc @@ -22,6 +22,7 @@ #include #include "absl/container/flat_hash_map.h" +#include "absl/log/check.h" #include "absl/status/status.h" #include "absl/status/statusor.h" #include "absl/types/optional.h" @@ -245,7 +246,7 @@ class EnvironmentAutoDetectHelper void FetchMetadataServerAttributesAsynchronouslyLocked() ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_) { - GPR_ASSERT(!attributes_to_fetch_.empty()); + CHECK(!attributes_to_fetch_.empty()); for (auto& element : attributes_to_fetch_) { queries_.push_back(grpc_core::MakeOrphanable( element.first, &pollent_, @@ -330,7 +331,9 @@ EnvironmentAutoDetect* g_autodetect = nullptr; } // namespace void EnvironmentAutoDetect::Create(std::string project_id) { - GPR_ASSERT(g_autodetect == nullptr && !project_id.empty()); + CHECK_EQ(g_autodetect, nullptr); + CHECK(!project_id.empty()); + g_autodetect = new EnvironmentAutoDetect(project_id); } @@ -338,7 +341,7 @@ EnvironmentAutoDetect& EnvironmentAutoDetect::Get() { return *g_autodetect; } EnvironmentAutoDetect::EnvironmentAutoDetect(std::string project_id) : project_id_(std::move(project_id)) { - GPR_ASSERT(!project_id_.empty()); + CHECK(!project_id_.empty()); } void EnvironmentAutoDetect::NotifyOnDone(absl::AnyInvocable callback) { diff --git a/src/cpp/ext/gcp/observability_logging_sink.cc b/src/cpp/ext/gcp/observability_logging_sink.cc index 6d62c1e4079..e7f71d4f0e8 100644 --- a/src/cpp/ext/gcp/observability_logging_sink.cc +++ b/src/cpp/ext/gcp/observability_logging_sink.cc @@ -22,6 +22,7 @@ #include #include +#include "absl/log/log.h" #include "absl/numeric/int128.h" #include "absl/strings/escaping.h" #include "absl/strings/match.h" @@ -34,7 +35,6 @@ #include "google/protobuf/text_format.h" #include -#include #include #include #include @@ -360,22 +360,20 @@ void ObservabilityLoggingSink::FlushEntriesHelper( &(call->context), &(call->request), &(call->response), [this, call](Status status) { if (!status.ok()) { - gpr_log( - GPR_ERROR, - "GCP Observability Logging Error %d: %s. Dumping log entries.", - status.error_code(), status.error_message().c_str()); + LOG(ERROR) << "GCP Observability Logging Error " + << status.error_code() << ": " << status.error_message() + << ". Dumping log entries."; for (auto& entry : call->request.entries()) { std::string output; ::google::protobuf::TextFormat::PrintToString(entry.json_payload(), &output); - gpr_log( - GPR_INFO, "Log Entry recorded at time: %s : %s", - grpc_core::Timestamp::FromTimespecRoundUp( - gpr_timespec{entry.timestamp().seconds(), - entry.timestamp().nanos(), GPR_CLOCK_REALTIME}) - .ToString() - .c_str(), - output.c_str()); + LOG(INFO) << "Log Entry recorded at time: " + << grpc_core::Timestamp::FromTimespecRoundUp( + gpr_timespec{entry.timestamp().seconds(), + entry.timestamp().nanos(), + GPR_CLOCK_REALTIME}) + .ToString() + << " : " << output; } } delete call; @@ -414,16 +412,16 @@ void ObservabilityLoggingSink::MaybeTriggerFlushLocked() { if (entries_.empty()) return; if (entries_.size() > kMaxEntriesBeforeDump || entries_memory_footprint_ > kMaxMemoryFootprintBeforeDump) { - // Buffer limits have been reached. Dump entries with gpr_log - gpr_log(GPR_INFO, "Buffer limit reached. Dumping log entries."); + // Buffer limits have been reached. Dump entries with LOG + LOG(INFO) << "Buffer limit reached. Dumping log entries."; for (auto& entry : entries_) { google::protobuf::Struct proto; std::string timestamp = entry.timestamp.ToString(); EntryToJsonStructProto(std::move(entry), &proto); std::string output; ::google::protobuf::TextFormat::PrintToString(proto, &output); - gpr_log(GPR_INFO, "Log Entry recorded at time: %s : %s", - timestamp.c_str(), output.c_str()); + LOG(INFO) << "Log Entry recorded at time: " << timestamp << " : " + << output; } entries_.clear(); entries_memory_footprint_ = 0; diff --git a/src/cpp/ext/otel/BUILD b/src/cpp/ext/otel/BUILD index 8a1ca1affa6..4c108176e78 100644 --- a/src/cpp/ext/otel/BUILD +++ b/src/cpp/ext/otel/BUILD @@ -47,6 +47,7 @@ grpc_cc_library( "absl/container:flat_hash_map", "absl/container:flat_hash_set", "absl/functional:any_invocable", + "absl/log:check", "absl/status", "absl/status:statusor", "absl/strings", diff --git a/src/cpp/ext/otel/key_value_iterable.h b/src/cpp/ext/otel/key_value_iterable.h index 3488f9c0937..48fdb9a62b0 100644 --- a/src/cpp/ext/otel/key_value_iterable.h +++ b/src/cpp/ext/otel/key_value_iterable.h @@ -23,6 +23,7 @@ #include +#include "absl/log/check.h" #include "absl/strings/string_view.h" #include "absl/types/optional.h" #include "absl/types/span.h" @@ -101,10 +102,9 @@ class OpenTelemetryPlugin::KeyValueIterable } // Add per-call optional labels if (!optional_labels_.empty()) { - GPR_ASSERT( - optional_labels_.size() == - static_cast(grpc_core::ClientCallTracer::CallAttemptTracer:: - OptionalLabelKey::kSize)); + CHECK(optional_labels_.size() == + static_cast(grpc_core::ClientCallTracer::CallAttemptTracer:: + OptionalLabelKey::kSize)); for (size_t i = 0; i < optional_labels_.size(); ++i) { if (!otel_plugin_->per_call_optional_label_bits_.test(i)) { continue; diff --git a/src/cpp/ext/otel/otel_client_call_tracer.cc b/src/cpp/ext/otel/otel_client_call_tracer.cc index a751f397503..f22fcbf992e 100644 --- a/src/cpp/ext/otel/otel_client_call_tracer.cc +++ b/src/cpp/ext/otel/otel_client_call_tracer.cc @@ -27,6 +27,7 @@ #include #include "absl/functional/any_invocable.h" +#include "absl/log/check.h" #include "absl/status/status.h" #include "absl/strings/str_format.h" #include "absl/strings/string_view.h" @@ -88,17 +89,13 @@ OpenTelemetryPlugin::ClientCallTracer::CallAttemptTracer::CallAttemptTracer( void OpenTelemetryPlugin::ClientCallTracer::CallAttemptTracer:: RecordReceivedInitialMetadata(grpc_metadata_batch* recv_initial_metadata) { - parent_->scope_config_->active_plugin_options_view().ForEach( - [&](const InternalOpenTelemetryPluginOption& plugin_option, - size_t /*index*/) { - auto* labels_injector = plugin_option.labels_injector(); - if (labels_injector != nullptr) { - injected_labels_from_plugin_options_.push_back( - labels_injector->GetLabels(recv_initial_metadata)); - } - return true; - }, - parent_->otel_plugin_); + if (recv_initial_metadata != nullptr && + recv_initial_metadata->get(grpc_core::GrpcTrailersOnly()) + .value_or(false)) { + is_trailers_only_ = true; + return; + } + PopulateLabelInjectors(recv_initial_metadata); } void OpenTelemetryPlugin::ClientCallTracer::CallAttemptTracer:: @@ -143,8 +140,11 @@ void OpenTelemetryPlugin::ClientCallTracer::CallAttemptTracer:: void OpenTelemetryPlugin::ClientCallTracer::CallAttemptTracer:: RecordReceivedTrailingMetadata( - absl::Status status, grpc_metadata_batch* /*recv_trailing_metadata*/, + absl::Status status, grpc_metadata_batch* recv_trailing_metadata, const grpc_transport_stream_stats* transport_stream_stats) { + if (is_trailers_only_) { + PopulateLabelInjectors(recv_trailing_metadata); + } std::array, 3> additional_labels = { {{OpenTelemetryMethodKey(), parent_->MethodForStats()}, @@ -210,10 +210,25 @@ OpenTelemetryPlugin::ClientCallTracer::CallAttemptTracer::StartNewTcpTrace() { void OpenTelemetryPlugin::ClientCallTracer::CallAttemptTracer::SetOptionalLabel( OptionalLabelKey key, grpc_core::RefCountedStringValue value) { - GPR_ASSERT(key < OptionalLabelKey::kSize); + CHECK(key < OptionalLabelKey::kSize); optional_labels_[static_cast(key)] = std::move(value); } +void OpenTelemetryPlugin::ClientCallTracer::CallAttemptTracer:: + PopulateLabelInjectors(grpc_metadata_batch* metadata) { + parent_->scope_config_->active_plugin_options_view().ForEach( + [&](const InternalOpenTelemetryPluginOption& plugin_option, + size_t /*index*/) { + auto* labels_injector = plugin_option.labels_injector(); + if (labels_injector != nullptr) { + injected_labels_from_plugin_options_.push_back( + labels_injector->GetLabels(metadata)); + } + return true; + }, + parent_->otel_plugin_); +} + // // OpenTelemetryPlugin::ClientCallTracer // diff --git a/src/cpp/ext/otel/otel_client_call_tracer.h b/src/cpp/ext/otel/otel_client_call_tracer.h index 827bad9a41f..ed1465dabb5 100644 --- a/src/cpp/ext/otel/otel_client_call_tracer.h +++ b/src/cpp/ext/otel/otel_client_call_tracer.h @@ -95,6 +95,8 @@ class OpenTelemetryPlugin::ClientCallTracer grpc_core::RefCountedStringValue value) override; private: + void PopulateLabelInjectors(grpc_metadata_batch* metadata); + const ClientCallTracer* parent_; const bool arena_allocated_; // Start time (for measuring latency). @@ -106,6 +108,7 @@ class OpenTelemetryPlugin::ClientCallTracer optional_labels_; std::vector> injected_labels_from_plugin_options_; + bool is_trailers_only_ = false; }; ClientCallTracer( diff --git a/src/cpp/ext/otel/otel_plugin.cc b/src/cpp/ext/otel/otel_plugin.cc index de527591a0d..acb81be35ee 100644 --- a/src/cpp/ext/otel/otel_plugin.cc +++ b/src/cpp/ext/otel/otel_plugin.cc @@ -22,6 +22,7 @@ #include #include +#include "absl/log/check.h" #include "opentelemetry/metrics/meter.h" #include "opentelemetry/metrics/meter_provider.h" #include "opentelemetry/metrics/sync_instruments.h" @@ -104,7 +105,7 @@ class OpenTelemetryPlugin::NPCMetricsKeyValueIterable bool(opentelemetry::nostd::string_view, opentelemetry::common::AttributeValue)> callback) const noexcept override { - for (size_t i = 0; i < label_keys_.size(); i++) { + for (size_t i = 0; i < label_keys_.size(); ++i) { if (!callback(AbslStrViewToOpenTelemetryStrView(label_keys_[i]), AbslStrViewToOpenTelemetryStrView(label_values_[i]))) { return false; @@ -205,7 +206,7 @@ OpenTelemetryPluginBuilderImpl::SetServerSelector( OpenTelemetryPluginBuilderImpl& OpenTelemetryPluginBuilderImpl::AddPluginOption( std::unique_ptr option) { // We allow a limit of 64 plugin options to be registered at this time. - GPR_ASSERT(plugin_options_.size() < 64); + CHECK_LT(plugin_options_.size(), 64u); plugin_options_.push_back(std::move(option)); return *this; } @@ -248,38 +249,46 @@ OpenTelemetryPlugin::CallbackMetricReporter::CallbackMetricReporter( // that if a particular combination of labels was previously present but // is no longer present, we won't continue to report it. for (const auto& handle : key->metrics()) { - grpc_core::Match( - handle, - [&](const grpc_core::GlobalInstrumentsRegistry:: - GlobalCallbackInt64GaugeHandle& handle) { - auto& callback_gauge_state = - absl::get>>( - ot_plugin_->instruments_data_.at(handle.index).instrument); - callback_gauge_state->caches[key].clear(); - }, - [&](const grpc_core::GlobalInstrumentsRegistry:: - GlobalCallbackDoubleGaugeHandle& handle) { - auto& callback_gauge_state = - absl::get>>( - ot_plugin_->instruments_data_.at(handle.index).instrument); - callback_gauge_state->caches[key].clear(); - }); + const auto& descriptor = + grpc_core::GlobalInstrumentsRegistry::GetInstrumentDescriptor(handle); + GPR_ASSERT( + descriptor.instrument_type == + grpc_core::GlobalInstrumentsRegistry::InstrumentType::kCallbackGauge); + switch (descriptor.value_type) { + case grpc_core::GlobalInstrumentsRegistry::ValueType::kInt64: { + auto& callback_gauge_state = + absl::get>>( + ot_plugin_->instruments_data_.at(handle.index).instrument); + callback_gauge_state->caches[key].clear(); + break; + } + case grpc_core::GlobalInstrumentsRegistry::ValueType::kDouble: { + auto& callback_gauge_state = + absl::get>>( + ot_plugin_->instruments_data_.at(handle.index).instrument); + callback_gauge_state->caches[key].clear(); + break; + } + default: + grpc_core::Crash(absl::StrFormat( + "Unknown or unsupported value type: %d", descriptor.value_type)); + } } } -void OpenTelemetryPlugin::CallbackMetricReporter::Report( - grpc_core::GlobalInstrumentsRegistry::GlobalCallbackInt64GaugeHandle handle, +void OpenTelemetryPlugin::CallbackMetricReporter::ReportInt64( + grpc_core::GlobalInstrumentsRegistry::GlobalInstrumentHandle handle, int64_t value, absl::Span label_values, absl::Span optional_values) { const auto& instrument_data = ot_plugin_->instruments_data_.at(handle.index); auto* callback_gauge_state = absl::get_if>>( &instrument_data.instrument); - GPR_ASSERT(callback_gauge_state != nullptr); + CHECK_NE(callback_gauge_state, nullptr); const auto& descriptor = grpc_core::GlobalInstrumentsRegistry::GetInstrumentDescriptor(handle); - GPR_ASSERT(descriptor.label_keys.size() == label_values.size()); - GPR_ASSERT(descriptor.optional_label_keys.size() == optional_values.size()); + CHECK(descriptor.label_keys.size() == label_values.size()); + CHECK(descriptor.optional_label_keys.size() == optional_values.size()); auto& cell = (*callback_gauge_state)->caches.at(key_); std::vector key; key.reserve(label_values.size() + @@ -295,20 +304,19 @@ void OpenTelemetryPlugin::CallbackMetricReporter::Report( cell.insert_or_assign(std::move(key), value); } -void OpenTelemetryPlugin::CallbackMetricReporter::Report( - grpc_core::GlobalInstrumentsRegistry::GlobalCallbackDoubleGaugeHandle - handle, +void OpenTelemetryPlugin::CallbackMetricReporter::ReportDouble( + grpc_core::GlobalInstrumentsRegistry::GlobalInstrumentHandle handle, double value, absl::Span label_values, absl::Span optional_values) { const auto& instrument_data = ot_plugin_->instruments_data_.at(handle.index); auto* callback_gauge_state = absl::get_if>>( &instrument_data.instrument); - GPR_ASSERT(callback_gauge_state != nullptr); + CHECK_NE(callback_gauge_state, nullptr); const auto& descriptor = grpc_core::GlobalInstrumentsRegistry::GetInstrumentDescriptor(handle); - GPR_ASSERT(descriptor.label_keys.size() == label_values.size()); - GPR_ASSERT(descriptor.optional_label_keys.size() == optional_values.size()); + CHECK(descriptor.label_keys.size() == label_values.size()); + CHECK(descriptor.optional_label_keys.size() == optional_values.size()); auto& cell = (*callback_gauge_state)->caches.at(key_); std::vector key; key.reserve(label_values.size() + @@ -420,9 +428,9 @@ OpenTelemetryPlugin::OpenTelemetryPlugin( "Compressed message bytes received per server call", "By"); } // Store optional label keys for per call metrics - GPR_ASSERT(static_cast( - grpc_core::ClientCallTracer::CallAttemptTracer:: - OptionalLabelKey::kSize) <= kOptionalLabelsSizeLimit); + CHECK(static_cast(grpc_core::ClientCallTracer::CallAttemptTracer:: + OptionalLabelKey::kSize) <= + kOptionalLabelsSizeLimit); for (const auto& key : optional_label_keys) { auto optional_key = OptionalLabelStringToKey(key); if (optional_key.has_value()) { @@ -434,8 +442,8 @@ OpenTelemetryPlugin::OpenTelemetryPlugin( grpc_core::GlobalInstrumentsRegistry::ForEach( [&, this](const grpc_core::GlobalInstrumentsRegistry:: GlobalInstrumentDescriptor& descriptor) { - GPR_ASSERT(descriptor.optional_label_keys.size() <= - kOptionalLabelsSizeLimit); + CHECK(descriptor.optional_label_keys.size() <= + kOptionalLabelsSizeLimit); if (instruments_data_.size() < descriptor.index + 1) { instruments_data_.resize(descriptor.index + 1); } @@ -573,8 +581,8 @@ OpenTelemetryPlugin::IsEnabledForChannel( std::pair> OpenTelemetryPlugin::IsEnabledForServer( const grpc_core::ChannelArgs& args) const { - // Return true only if there is no server selector registered or if the server - // selector returns true. + // Return true only if there is no server selector registered or if the + // server selector returns true. if (server_selector_ == nullptr || server_selector_(args)) { return {true, std::make_shared(this, args)}; } @@ -582,7 +590,7 @@ OpenTelemetryPlugin::IsEnabledForServer( } void OpenTelemetryPlugin::AddCounter( - grpc_core::GlobalInstrumentsRegistry::GlobalUInt64CounterHandle handle, + grpc_core::GlobalInstrumentsRegistry::GlobalInstrumentHandle handle, uint64_t value, absl::Span label_values, absl::Span optional_values) { const auto& instrument_data = instruments_data_.at(handle.index); @@ -590,13 +598,13 @@ void OpenTelemetryPlugin::AddCounter( // This instrument is disabled. return; } - GPR_ASSERT(absl::holds_alternative< - std::unique_ptr>>( + CHECK(absl::holds_alternative< + std::unique_ptr>>( instrument_data.instrument)); const auto& descriptor = grpc_core::GlobalInstrumentsRegistry::GetInstrumentDescriptor(handle); - GPR_ASSERT(descriptor.label_keys.size() == label_values.size()); - GPR_ASSERT(descriptor.optional_label_keys.size() == optional_values.size()); + CHECK(descriptor.label_keys.size() == label_values.size()); + CHECK(descriptor.optional_label_keys.size() == optional_values.size()); absl::get>>( instrument_data.instrument) ->Add(value, NPCMetricsKeyValueIterable( @@ -606,7 +614,7 @@ void OpenTelemetryPlugin::AddCounter( } void OpenTelemetryPlugin::AddCounter( - grpc_core::GlobalInstrumentsRegistry::GlobalDoubleCounterHandle handle, + grpc_core::GlobalInstrumentsRegistry::GlobalInstrumentHandle handle, double value, absl::Span label_values, absl::Span optional_values) { const auto& instrument_data = instruments_data_.at(handle.index); @@ -614,13 +622,13 @@ void OpenTelemetryPlugin::AddCounter( // This instrument is disabled. return; } - GPR_ASSERT(absl::holds_alternative< - std::unique_ptr>>( + CHECK(absl::holds_alternative< + std::unique_ptr>>( instrument_data.instrument)); const auto& descriptor = grpc_core::GlobalInstrumentsRegistry::GetInstrumentDescriptor(handle); - GPR_ASSERT(descriptor.label_keys.size() == label_values.size()); - GPR_ASSERT(descriptor.optional_label_keys.size() == optional_values.size()); + CHECK(descriptor.label_keys.size() == label_values.size()); + CHECK(descriptor.optional_label_keys.size() == optional_values.size()); absl::get>>( instrument_data.instrument) ->Add(value, NPCMetricsKeyValueIterable( @@ -630,7 +638,7 @@ void OpenTelemetryPlugin::AddCounter( } void OpenTelemetryPlugin::RecordHistogram( - grpc_core::GlobalInstrumentsRegistry::GlobalUInt64HistogramHandle handle, + grpc_core::GlobalInstrumentsRegistry::GlobalInstrumentHandle handle, uint64_t value, absl::Span label_values, absl::Span optional_values) { const auto& instrument_data = instruments_data_.at(handle.index); @@ -638,13 +646,13 @@ void OpenTelemetryPlugin::RecordHistogram( // This instrument is disabled. return; } - GPR_ASSERT(absl::holds_alternative< - std::unique_ptr>>( + CHECK(absl::holds_alternative< + std::unique_ptr>>( instrument_data.instrument)); const auto& descriptor = grpc_core::GlobalInstrumentsRegistry::GetInstrumentDescriptor(handle); - GPR_ASSERT(descriptor.label_keys.size() == label_values.size()); - GPR_ASSERT(descriptor.optional_label_keys.size() == optional_values.size()); + CHECK(descriptor.label_keys.size() == label_values.size()); + CHECK(descriptor.optional_label_keys.size() == optional_values.size()); absl::get>>( instrument_data.instrument) ->Record(value, @@ -656,7 +664,7 @@ void OpenTelemetryPlugin::RecordHistogram( } void OpenTelemetryPlugin::RecordHistogram( - grpc_core::GlobalInstrumentsRegistry::GlobalDoubleHistogramHandle handle, + grpc_core::GlobalInstrumentsRegistry::GlobalInstrumentHandle handle, double value, absl::Span label_values, absl::Span optional_values) { const auto& instrument_data = instruments_data_.at(handle.index); @@ -664,13 +672,13 @@ void OpenTelemetryPlugin::RecordHistogram( // This instrument is disabled. return; } - GPR_ASSERT(absl::holds_alternative< - std::unique_ptr>>( + CHECK(absl::holds_alternative< + std::unique_ptr>>( instrument_data.instrument)); const auto& descriptor = grpc_core::GlobalInstrumentsRegistry::GetInstrumentDescriptor(handle); - GPR_ASSERT(descriptor.label_keys.size() == label_values.size()); - GPR_ASSERT(descriptor.optional_label_keys.size() == optional_values.size()); + CHECK(descriptor.label_keys.size() == label_values.size()); + CHECK(descriptor.optional_label_keys.size() == optional_values.size()); absl::get>>( instrument_data.instrument) ->Record(value, @@ -690,51 +698,59 @@ void OpenTelemetryPlugin::AddCallback( grpc_core::MutexLock lock(&mu_); callback_timestamps_.emplace(callback, grpc_core::Timestamp::InfPast()); for (const auto& handle : callback->metrics()) { - grpc_core::Match( - handle, - [&](const grpc_core::GlobalInstrumentsRegistry:: - GlobalCallbackInt64GaugeHandle& handle) { - const auto& instrument_data = instruments_data_.at(handle.index); - if (absl::holds_alternative(instrument_data.instrument)) { - // This instrument is disabled. - return; - } - auto* callback_gauge_state = - absl::get_if>>( - &instrument_data.instrument); - GPR_ASSERT(callback_gauge_state != nullptr); - (*callback_gauge_state) - ->caches.emplace(callback, - CallbackGaugeState::Cache{}); - if (!std::exchange((*callback_gauge_state)->ot_callback_registered, - true)) { - gauges_that_need_to_add_callback.push_back( - callback_gauge_state->get()); - } - }, - [&](const grpc_core::GlobalInstrumentsRegistry:: - GlobalCallbackDoubleGaugeHandle& handle) { - const auto& instrument_data = instruments_data_.at(handle.index); - if (absl::holds_alternative(instrument_data.instrument)) { - // This instrument is disabled. - return; - } - auto* callback_gauge_state = - absl::get_if>>( - &instrument_data.instrument); - GPR_ASSERT(callback_gauge_state != nullptr); - (*callback_gauge_state) - ->caches.emplace(callback, CallbackGaugeState::Cache{}); - if (!std::exchange((*callback_gauge_state)->ot_callback_registered, - true)) { - gauges_that_need_to_add_callback.push_back( - callback_gauge_state->get()); - } - }); + const auto& descriptor = + grpc_core::GlobalInstrumentsRegistry::GetInstrumentDescriptor(handle); + GPR_ASSERT( + descriptor.instrument_type == + grpc_core::GlobalInstrumentsRegistry::InstrumentType::kCallbackGauge); + switch (descriptor.value_type) { + case grpc_core::GlobalInstrumentsRegistry::ValueType::kInt64: { + const auto& instrument_data = instruments_data_.at(handle.index); + if (absl::holds_alternative(instrument_data.instrument)) { + // This instrument is disabled. + continue; + } + auto* callback_gauge_state = + absl::get_if>>( + &instrument_data.instrument); + CHECK_NE(callback_gauge_state, nullptr); + (*callback_gauge_state) + ->caches.emplace(callback, CallbackGaugeState::Cache{}); + if (!std::exchange((*callback_gauge_state)->ot_callback_registered, + true)) { + gauges_that_need_to_add_callback.push_back( + callback_gauge_state->get()); + } + break; + } + case grpc_core::GlobalInstrumentsRegistry::ValueType::kDouble: { + const auto& instrument_data = instruments_data_.at(handle.index); + if (absl::holds_alternative(instrument_data.instrument)) { + // This instrument is disabled. + continue; + } + auto* callback_gauge_state = + absl::get_if>>( + &instrument_data.instrument); + CHECK_NE(callback_gauge_state, nullptr); + (*callback_gauge_state) + ->caches.emplace(callback, CallbackGaugeState::Cache{}); + if (!std::exchange((*callback_gauge_state)->ot_callback_registered, + true)) { + gauges_that_need_to_add_callback.push_back( + callback_gauge_state->get()); + } + break; + } + default: + grpc_core::Crash(absl::StrFormat( + "Unknown or unsupported value type: %d", descriptor.value_type)); + } } } - // AddCallback internally grabs OpenTelemetry's observable_registry's lock. So - // we need to call it without our plugin lock otherwise we may deadlock. + // AddCallback internally grabs OpenTelemetry's observable_registry's + // lock. So we need to call it without our plugin lock otherwise we may + // deadlock. for (const auto& gauge : gauges_that_need_to_add_callback) { grpc_core::Match( gauge, @@ -758,50 +774,59 @@ void OpenTelemetryPlugin::RemoveCallback( grpc_core::MutexLock lock(&mu_); callback_timestamps_.erase(callback); for (const auto& handle : callback->metrics()) { - grpc_core::Match( - handle, - [&](const grpc_core::GlobalInstrumentsRegistry:: - GlobalCallbackInt64GaugeHandle& handle) { - const auto& instrument_data = instruments_data_.at(handle.index); - if (absl::holds_alternative(instrument_data.instrument)) { - // This instrument is disabled. - return; - } - auto* callback_gauge_state = - absl::get_if>>( - &instrument_data.instrument); - GPR_ASSERT(callback_gauge_state != nullptr); - GPR_ASSERT((*callback_gauge_state)->ot_callback_registered); - GPR_ASSERT((*callback_gauge_state)->caches.erase(callback) == 1); - if ((*callback_gauge_state)->caches.empty()) { - gauges_that_need_to_remove_callback.push_back( - callback_gauge_state->get()); - (*callback_gauge_state)->ot_callback_registered = false; - } - }, - [&](const grpc_core::GlobalInstrumentsRegistry:: - GlobalCallbackDoubleGaugeHandle& handle) { - const auto& instrument_data = instruments_data_.at(handle.index); - if (absl::holds_alternative(instrument_data.instrument)) { - // This instrument is disabled. - return; - } - auto* callback_gauge_state = - absl::get_if>>( - &instrument_data.instrument); - GPR_ASSERT(callback_gauge_state != nullptr); - GPR_ASSERT((*callback_gauge_state)->ot_callback_registered); - GPR_ASSERT((*callback_gauge_state)->caches.erase(callback) == 1); - if ((*callback_gauge_state)->caches.empty()) { - gauges_that_need_to_remove_callback.push_back( - callback_gauge_state->get()); - (*callback_gauge_state)->ot_callback_registered = false; - } - }); + const auto& descriptor = + grpc_core::GlobalInstrumentsRegistry::GetInstrumentDescriptor(handle); + GPR_ASSERT( + descriptor.instrument_type == + grpc_core::GlobalInstrumentsRegistry::InstrumentType::kCallbackGauge); + switch (descriptor.value_type) { + case grpc_core::GlobalInstrumentsRegistry::ValueType::kInt64: { + const auto& instrument_data = instruments_data_.at(handle.index); + if (absl::holds_alternative(instrument_data.instrument)) { + // This instrument is disabled. + continue; + } + auto* callback_gauge_state = + absl::get_if>>( + &instrument_data.instrument); + CHECK_NE(callback_gauge_state, nullptr); + CHECK((*callback_gauge_state)->ot_callback_registered); + CHECK_EQ((*callback_gauge_state)->caches.erase(callback), 1u); + if ((*callback_gauge_state)->caches.empty()) { + gauges_that_need_to_remove_callback.push_back( + callback_gauge_state->get()); + (*callback_gauge_state)->ot_callback_registered = false; + } + break; + } + case grpc_core::GlobalInstrumentsRegistry::ValueType::kDouble: { + const auto& instrument_data = instruments_data_.at(handle.index); + if (absl::holds_alternative(instrument_data.instrument)) { + // This instrument is disabled. + continue; + } + auto* callback_gauge_state = + absl::get_if>>( + &instrument_data.instrument); + CHECK_NE(callback_gauge_state, nullptr); + CHECK((*callback_gauge_state)->ot_callback_registered); + CHECK_EQ((*callback_gauge_state)->caches.erase(callback), 1u); + if ((*callback_gauge_state)->caches.empty()) { + gauges_that_need_to_remove_callback.push_back( + callback_gauge_state->get()); + (*callback_gauge_state)->ot_callback_registered = false; + } + break; + } + default: + grpc_core::Crash(absl::StrFormat( + "Unknown or unsupported value type: %d", descriptor.value_type)); + } } } - // RemoveCallback internally grabs OpenTelemetry's observable_registry's lock. - // So we need to call it without our plugin lock otherwise we may deadlock. + // RemoveCallback internally grabs OpenTelemetry's observable_registry's + // lock. So we need to call it without our plugin lock otherwise we may + // deadlock. for (const auto& gauge : gauges_that_need_to_remove_callback) { grpc_core::Match( gauge, @@ -822,8 +847,8 @@ void OpenTelemetryPlugin::CallbackGaugeState::Observe( const auto& descriptor = grpc_core::GlobalInstrumentsRegistry::GetInstrumentDescriptor({id}); for (const auto& pair : cache) { - GPR_ASSERT(pair.first.size() <= (descriptor.label_keys.size() + - descriptor.optional_label_keys.size())); + CHECK(pair.first.size() <= (descriptor.label_keys.size() + + descriptor.optional_label_keys.size())); auto& instrument_data = ot_plugin->instruments_data_.at(id); opentelemetry::nostd::get>>(result) @@ -841,7 +866,8 @@ void OpenTelemetryPlugin::CallbackGaugeState::Observe( } } -// OpenTelemetry calls our callback with its observable_registry's lock held. +// OpenTelemetry calls our callback with its observable_registry's lock +// held. template void OpenTelemetryPlugin::CallbackGaugeState::CallbackGaugeCallback( opentelemetry::metrics::ObserverResult result, void* arg) { @@ -852,8 +878,7 @@ void OpenTelemetryPlugin::CallbackGaugeState::CallbackGaugeCallback( auto* registered_metric_callback = elem.first; auto iter = callback_gauge_state->ot_plugin->callback_timestamps_.find( registered_metric_callback); - GPR_ASSERT(iter != - callback_gauge_state->ot_plugin->callback_timestamps_.end()); + CHECK(iter != callback_gauge_state->ot_plugin->callback_timestamps_.end()); if (now - iter->second < registered_metric_callback->min_interval()) { // Use cached value. callback_gauge_state->Observe(result, elem.second); diff --git a/src/cpp/ext/otel/otel_plugin.h b/src/cpp/ext/otel/otel_plugin.h index 6908f2b7ab4..49d2cc3e384 100644 --- a/src/cpp/ext/otel/otel_plugin.h +++ b/src/cpp/ext/otel/otel_plugin.h @@ -343,22 +343,20 @@ class OpenTelemetryPlugin : public grpc_core::StatsPlugin { grpc_core::RegisteredMetricCallback* key) ABSL_EXCLUSIVE_LOCKS_REQUIRED(ot_plugin->mu_); - void Report( - grpc_core::GlobalInstrumentsRegistry::GlobalCallbackInt64GaugeHandle - handle, + private: + void ReportInt64( + grpc_core::GlobalInstrumentsRegistry::GlobalInstrumentHandle handle, int64_t value, absl::Span label_values, absl::Span optional_values) ABSL_EXCLUSIVE_LOCKS_REQUIRED( CallbackGaugeState::ot_plugin->mu_) override; - void Report( - grpc_core::GlobalInstrumentsRegistry::GlobalCallbackDoubleGaugeHandle - handle, + void ReportDouble( + grpc_core::GlobalInstrumentsRegistry::GlobalInstrumentHandle handle, double value, absl::Span label_values, absl::Span optional_values) ABSL_EXCLUSIVE_LOCKS_REQUIRED( CallbackGaugeState::ot_plugin->mu_) override; - private: OpenTelemetryPlugin* ot_plugin_; grpc_core::RegisteredMetricCallback* key_; }; @@ -380,19 +378,19 @@ class OpenTelemetryPlugin : public grpc_core::StatsPlugin { std::pair> IsEnabledForServer(const grpc_core::ChannelArgs& args) const override; void AddCounter( - grpc_core::GlobalInstrumentsRegistry::GlobalUInt64CounterHandle handle, + grpc_core::GlobalInstrumentsRegistry::GlobalInstrumentHandle handle, uint64_t value, absl::Span label_values, absl::Span optional_values) override; void AddCounter( - grpc_core::GlobalInstrumentsRegistry::GlobalDoubleCounterHandle handle, + grpc_core::GlobalInstrumentsRegistry::GlobalInstrumentHandle handle, double value, absl::Span label_values, absl::Span optional_values) override; void RecordHistogram( - grpc_core::GlobalInstrumentsRegistry::GlobalUInt64HistogramHandle handle, + grpc_core::GlobalInstrumentsRegistry::GlobalInstrumentHandle handle, uint64_t value, absl::Span label_values, absl::Span optional_values) override; void RecordHistogram( - grpc_core::GlobalInstrumentsRegistry::GlobalDoubleHistogramHandle handle, + grpc_core::GlobalInstrumentsRegistry::GlobalInstrumentHandle handle, double value, absl::Span label_values, absl::Span optional_values) override; void AddCallback(grpc_core::RegisteredMetricCallback* callback) diff --git a/src/cpp/server/external_connection_acceptor_impl.cc b/src/cpp/server/external_connection_acceptor_impl.cc index 9f156e94957..2237ac88131 100644 --- a/src/cpp/server/external_connection_acceptor_impl.cc +++ b/src/cpp/server/external_connection_acceptor_impl.cc @@ -21,6 +21,8 @@ #include #include +#include "absl/log/check.h" + #include #include #include @@ -49,14 +51,14 @@ ExternalConnectionAcceptorImpl::ExternalConnectionAcceptorImpl( ServerBuilder::experimental_type::ExternalConnectionType type, std::shared_ptr creds) : name_(name), creds_(std::move(creds)) { - GPR_ASSERT(type == - ServerBuilder::experimental_type::ExternalConnectionType::FROM_FD); + CHECK(type == + ServerBuilder::experimental_type::ExternalConnectionType::FROM_FD); } std::unique_ptr ExternalConnectionAcceptorImpl::GetAcceptor() { grpc_core::MutexLock lock(&mu_); - GPR_ASSERT(!has_acceptor_); + CHECK(!has_acceptor_); has_acceptor_ = true; return std::unique_ptr( new AcceptorWrapper(shared_from_this())); @@ -85,9 +87,9 @@ void ExternalConnectionAcceptorImpl::Shutdown() { void ExternalConnectionAcceptorImpl::Start() { grpc_core::MutexLock lock(&mu_); - GPR_ASSERT(!started_); - GPR_ASSERT(has_acceptor_); - GPR_ASSERT(!shutdown_); + CHECK(!started_); + CHECK(has_acceptor_); + CHECK(!shutdown_); started_ = true; } diff --git a/src/cpp/server/health/default_health_check_service.cc b/src/cpp/server/health/default_health_check_service.cc index 685317d6333..fc0b59c5299 100644 --- a/src/cpp/server/health/default_health_check_service.cc +++ b/src/cpp/server/health/default_health_check_service.cc @@ -23,6 +23,7 @@ #include #include +#include "absl/log/check.h" #include "upb/base/string_view.h" #include "upb/mem/arena.hpp" @@ -109,7 +110,7 @@ void DefaultHealthCheckService::UnregisterWatch( DefaultHealthCheckService::HealthCheckServiceImpl* DefaultHealthCheckService::GetHealthCheckService() { - GPR_ASSERT(impl_ == nullptr); + CHECK(impl_ == nullptr); impl_ = std::make_unique(this); return impl_.get(); } diff --git a/src/cpp/server/load_reporter/get_cpu_stats_unsupported.cc b/src/cpp/server/load_reporter/get_cpu_stats_unsupported.cc index 83734b9c9d7..2744c66b25e 100644 --- a/src/cpp/server/load_reporter/get_cpu_stats_unsupported.cc +++ b/src/cpp/server/load_reporter/get_cpu_stats_unsupported.cc @@ -20,7 +20,7 @@ #if !defined(GPR_LINUX) && !defined(GPR_WINDOWS) && !defined(GPR_APPLE) -#include +#include "absl/log/log.h" #include "src/core/lib/gprpp/crash.h" #include "src/cpp/server/load_reporter/get_cpu_stats.h" @@ -30,8 +30,8 @@ namespace load_reporter { std::pair GetCpuStatsImpl() { uint64_t busy = 0, total = 0; - gpr_log(GPR_ERROR, - "Platforms other than Linux, Windows, and MacOS are not supported."); + LOG(ERROR) + << "Platforms other than Linux, Windows, and MacOS are not supported."; return std::make_pair(busy, total); } diff --git a/src/cpp/server/load_reporter/load_data_store.cc b/src/cpp/server/load_reporter/load_data_store.cc index 65453bcf166..0f7acfbded9 100644 --- a/src/cpp/server/load_reporter/load_data_store.cc +++ b/src/cpp/server/load_reporter/load_data_store.cc @@ -26,6 +26,8 @@ #include #include +#include "absl/log/check.h" + #include #include @@ -74,7 +76,7 @@ std::set UnorderedMapOfSetExtract(std::unordered_map>& map, // From a non-empty container, returns a pointer to a random element. template const typename C::value_type* RandomElement(const C& container) { - GPR_ASSERT(!container.empty()); + CHECK(!container.empty()); auto it = container.begin(); std::advance(it, std::rand() % container.size()); return &(*it); @@ -85,12 +87,12 @@ const typename C::value_type* RandomElement(const C& container) { LoadRecordKey::LoadRecordKey(const std::string& client_ip_and_token, std::string user_id) : user_id_(std::move(user_id)) { - GPR_ASSERT(client_ip_and_token.size() >= 2); + CHECK_GE(client_ip_and_token.size(), 2u); int ip_hex_size; - GPR_ASSERT(sscanf(client_ip_and_token.substr(0, 2).c_str(), "%d", - &ip_hex_size) == 1); - GPR_ASSERT(ip_hex_size == 0 || ip_hex_size == kIpv4AddressLength || - ip_hex_size == kIpv6AddressLength); + CHECK(sscanf(client_ip_and_token.substr(0, 2).c_str(), "%d", &ip_hex_size) == + 1); + CHECK(ip_hex_size == 0 || ip_hex_size == kIpv4AddressLength || + ip_hex_size == kIpv6AddressLength); size_t cur_pos = 2; client_ip_hex_ = client_ip_and_token.substr(cur_pos, ip_hex_size); cur_pos += ip_hex_size; @@ -159,9 +161,9 @@ void PerBalancerStore::MergeRow(const LoadRecordKey& key, // We always keep track of num_calls_in_progress_, so that when this // store is resumed, we still have a correct value of // num_calls_in_progress_. - GPR_ASSERT(static_cast(num_calls_in_progress_) + - value.GetNumCallsInProgressDelta() >= - 0); + CHECK(static_cast(num_calls_in_progress_) + + value.GetNumCallsInProgressDelta() >= + 0); num_calls_in_progress_ += value.GetNumCallsInProgressDelta(); } @@ -177,14 +179,14 @@ void PerBalancerStore::Resume() { } uint64_t PerBalancerStore::GetNumCallsInProgressForReport() { - GPR_ASSERT(!suspended_); + CHECK(!suspended_); last_reported_num_calls_in_progress_ = num_calls_in_progress_; return num_calls_in_progress_; } void PerHostStore::ReportStreamCreated(const std::string& lb_id, const std::string& load_key) { - GPR_ASSERT(lb_id != kInvalidLbId); + CHECK(lb_id != kInvalidLbId); SetUpForNewLbId(lb_id, load_key); // Prior to this one, there was no load balancer receiving report, so we may // have unassigned orphaned stores to assign to this new balancer. @@ -210,11 +212,11 @@ void PerHostStore::ReportStreamCreated(const std::string& lb_id, void PerHostStore::ReportStreamClosed(const std::string& lb_id) { auto it_store_for_gone_lb = per_balancer_stores_.find(lb_id); - GPR_ASSERT(it_store_for_gone_lb != per_balancer_stores_.end()); + CHECK(it_store_for_gone_lb != per_balancer_stores_.end()); // Remove this closed stream from our records. - GPR_ASSERT(UnorderedMapOfSetEraseKeyValue( - load_key_to_receiving_lb_ids_, it_store_for_gone_lb->second->load_key(), - lb_id)); + CHECK(UnorderedMapOfSetEraseKeyValue(load_key_to_receiving_lb_ids_, + it_store_for_gone_lb->second->load_key(), + lb_id)); std::set orphaned_stores = UnorderedMapOfSetExtract(assigned_stores_, lb_id); // The stores that were assigned to this balancer are orphaned now. They @@ -256,7 +258,7 @@ const std::set* PerHostStore::GetAssignedStores( void PerHostStore::AssignOrphanedStore(PerBalancerStore* orphaned_store, const std::string& new_receiver) { auto it = assigned_stores_.find(new_receiver); - GPR_ASSERT(it != assigned_stores_.end()); + CHECK(it != assigned_stores_.end()); it->second.insert(orphaned_store); gpr_log(GPR_INFO, "[PerHostStore %p] Re-assigned orphaned store (%p) with original LB" @@ -269,8 +271,8 @@ void PerHostStore::SetUpForNewLbId(const std::string& lb_id, const std::string& load_key) { // The top-level caller (i.e., LoadReportService) should guarantee the // lb_id is unique for each reporting stream. - GPR_ASSERT(per_balancer_stores_.find(lb_id) == per_balancer_stores_.end()); - GPR_ASSERT(assigned_stores_.find(lb_id) == assigned_stores_.end()); + CHECK(per_balancer_stores_.find(lb_id) == per_balancer_stores_.end()); + CHECK(assigned_stores_.find(lb_id) == assigned_stores_.end()); load_key_to_receiving_lb_ids_[load_key].insert(lb_id); std::unique_ptr per_balancer_store( new PerBalancerStore(lb_id, load_key)); @@ -335,7 +337,7 @@ void LoadDataStore::ReportStreamCreated(const std::string& hostname, void LoadDataStore::ReportStreamClosed(const std::string& hostname, const std::string& lb_id) { auto it_per_host_store = per_host_stores_.find(hostname); - GPR_ASSERT(it_per_host_store != per_host_stores_.end()); + CHECK(it_per_host_store != per_host_stores_.end()); it_per_host_store->second.ReportStreamClosed(lb_id); } diff --git a/src/cpp/server/load_reporter/load_reporter.cc b/src/cpp/server/load_reporter/load_reporter.cc index 4ce743bcc94..9a0e2a875e9 100644 --- a/src/cpp/server/load_reporter/load_reporter.cc +++ b/src/cpp/server/load_reporter/load_reporter.cc @@ -27,6 +27,7 @@ #include #include +#include "absl/log/check.h" #include "opencensus/tags/tag_key.h" #include @@ -168,11 +169,10 @@ double CensusViewProvider::GetRelatedViewDataRowDouble( const ViewDataMap& view_data_map, const char* view_name, size_t view_name_len, const std::vector& tag_values) { auto it_vd = view_data_map.find(std::string(view_name, view_name_len)); - GPR_ASSERT(it_vd != view_data_map.end()); - GPR_ASSERT(it_vd->second.type() == - ::opencensus::stats::ViewData::Type::kDouble); + CHECK(it_vd != view_data_map.end()); + CHECK(it_vd->second.type() == ::opencensus::stats::ViewData::Type::kDouble); auto it_row = it_vd->second.double_data().find(tag_values); - GPR_ASSERT(it_row != it_vd->second.double_data().end()); + CHECK(it_row != it_vd->second.double_data().end()); return it_row->second; } @@ -180,12 +180,11 @@ uint64_t CensusViewProvider::GetRelatedViewDataRowInt( const ViewDataMap& view_data_map, const char* view_name, size_t view_name_len, const std::vector& tag_values) { auto it_vd = view_data_map.find(std::string(view_name, view_name_len)); - GPR_ASSERT(it_vd != view_data_map.end()); - GPR_ASSERT(it_vd->second.type() == - ::opencensus::stats::ViewData::Type::kInt64); + CHECK(it_vd != view_data_map.end()); + CHECK(it_vd->second.type() == ::opencensus::stats::ViewData::Type::kInt64); auto it_row = it_vd->second.int_data().find(tag_values); - GPR_ASSERT(it_row != it_vd->second.int_data().end()); - GPR_ASSERT(it_row->second >= 0); + CHECK(it_row != it_vd->second.int_data().end()); + CHECK_GE(it_row->second, 0); return it_row->second; } @@ -230,7 +229,7 @@ std::string LoadReporter::GenerateLbId() { } int64_t lb_id = next_lb_id_++; // Overflow should never happen. - GPR_ASSERT(lb_id >= 0); + CHECK_GE(lb_id, 0); // Convert to padded hex string for a 32-bit LB ID. E.g, "0000ca5b". char buf[kLbIdLength + 1]; snprintf(buf, sizeof(buf), "%08" PRIx64, lb_id); @@ -299,11 +298,11 @@ LoadReporter::GenerateLoads(const std::string& hostname, const std::string& lb_id) { grpc_core::MutexLock lock(&store_mu_); auto assigned_stores = load_data_store_.GetAssignedStores(hostname, lb_id); - GPR_ASSERT(assigned_stores != nullptr); - GPR_ASSERT(!assigned_stores->empty()); + CHECK_NE(assigned_stores, nullptr); + CHECK(!assigned_stores->empty()); ::google::protobuf::RepeatedPtrField loads; for (PerBalancerStore* per_balancer_store : *assigned_stores) { - GPR_ASSERT(!per_balancer_store->IsSuspended()); + CHECK(!per_balancer_store->IsSuspended()); if (!per_balancer_store->load_record_map().empty()) { for (const auto& p : per_balancer_store->load_record_map()) { const auto& key = p.first; diff --git a/src/cpp/server/load_reporter/load_reporter_async_service_impl.cc b/src/cpp/server/load_reporter/load_reporter_async_service_impl.cc index faf3ed0690e..f4d20b13768 100644 --- a/src/cpp/server/load_reporter/load_reporter_async_service_impl.cc +++ b/src/cpp/server/load_reporter/load_reporter_async_service_impl.cc @@ -22,6 +22,8 @@ #include +#include "absl/log/check.h" + #include #include #include @@ -34,8 +36,8 @@ namespace grpc { namespace load_reporter { void LoadReporterAsyncServiceImpl::CallableTag::Run(bool ok) { - GPR_ASSERT(handler_function_ != nullptr); - GPR_ASSERT(handler_ != nullptr); + CHECK(handler_function_ != nullptr); + CHECK_NE(handler_, nullptr); handler_function_(std::move(handler_), ok); } @@ -109,7 +111,7 @@ void LoadReporterAsyncServiceImpl::Work(void* arg) { while (true) { if (!service->cq_->Next(&tag, &ok)) { // The completion queue is shutting down. - GPR_ASSERT(service->shutdown_); + CHECK(service->shutdown_); break; } if (tag == service) { @@ -164,7 +166,7 @@ void LoadReporterAsyncServiceImpl::ReportLoadHandler::OnRequestDelivered( // tag will not pop out if the call never starts ( // https://github.com/grpc/grpc/issues/10136). So we need to manually // release the ownership of the handler in this case. - GPR_ASSERT(on_done_notified_.ReleaseHandler() != nullptr); + CHECK_NE(on_done_notified_.ReleaseHandler(), nullptr); } if (!ok || shutdown_) { // The value of ok being false means that the server is shutting down. @@ -325,7 +327,7 @@ void LoadReporterAsyncServiceImpl::ReportLoadHandler::SendReport( void LoadReporterAsyncServiceImpl::ReportLoadHandler::OnDoneNotified( std::shared_ptr self, bool ok) { - GPR_ASSERT(ok); + CHECK(ok); done_notified_ = true; if (ctx_.IsCancelled()) { is_cancelled_ = true; diff --git a/src/cpp/server/load_reporter/load_reporter_async_service_impl.h b/src/cpp/server/load_reporter/load_reporter_async_service_impl.h index 85676520046..c348e918e54 100644 --- a/src/cpp/server/load_reporter/load_reporter_async_service_impl.h +++ b/src/cpp/server/load_reporter/load_reporter_async_service_impl.h @@ -27,6 +27,8 @@ #include #include +#include "absl/log/check.h" + #include #include #include @@ -81,8 +83,8 @@ class LoadReporterAsyncServiceImpl CallableTag(HandlerFunction func, std::shared_ptr handler) : handler_function_(std::move(func)), handler_(std::move(handler)) { - GPR_ASSERT(handler_function_ != nullptr); - GPR_ASSERT(handler_ != nullptr); + CHECK(handler_function_ != nullptr); + CHECK_NE(handler_, nullptr); } // Runs the tag. This should be called only once. The handler is no longer diff --git a/src/cpp/server/load_reporter/util.cc b/src/cpp/server/load_reporter/util.cc index 8daac576d73..043d4ebb480 100644 --- a/src/cpp/server/load_reporter/util.cc +++ b/src/cpp/server/load_reporter/util.cc @@ -21,8 +21,9 @@ #include #include +#include "absl/log/log.h" + #include -#include #include #include #include @@ -41,7 +42,7 @@ void AddLoadReportingCost(grpc::ServerContext* ctx, cost_name.size()); ctx->AddTrailingMetadata(GRPC_LB_COST_MD_KEY, buf); } else { - gpr_log(GPR_ERROR, "Call metric value is not normal."); + LOG(ERROR) << "Call metric value is not normal."; } } diff --git a/src/cpp/server/orca/orca_service.cc b/src/cpp/server/orca/orca_service.cc index f139a95887f..05a86fdfd08 100644 --- a/src/cpp/server/orca/orca_service.cc +++ b/src/cpp/server/orca/orca_service.cc @@ -21,6 +21,7 @@ #include #include "absl/base/thread_annotations.h" +#include "absl/log/check.h" #include "absl/strings/string_view.h" #include "absl/time/time.h" #include "absl/types/optional.h" @@ -71,7 +72,7 @@ class OrcaService::Reactor : public ServerWriteReactor, engine_(grpc_event_engine::experimental::GetDefaultEventEngine()) { // Get slice from request. Slice slice; - GPR_ASSERT(request_buffer->DumpToSingleSlice(&slice).ok()); + CHECK(request_buffer->DumpToSingleSlice(&slice).ok()); // Parse request proto. upb::Arena arena; xds_service_orca_v3_OrcaLoadReportRequest* request = @@ -173,7 +174,7 @@ OrcaService::OrcaService(ServerMetricRecorder* const server_metric_recorder, Options options) : server_metric_recorder_(server_metric_recorder), min_report_duration_(options.min_report_duration) { - GPR_ASSERT(server_metric_recorder_ != nullptr); + CHECK_NE(server_metric_recorder_, nullptr); AddMethod(new internal::RpcServiceMethod( "/xds.service.orca.v3.OpenRcaService/StreamCoreMetrics", internal::RpcMethod::SERVER_STREAMING, /*handler=*/nullptr)); diff --git a/src/cpp/server/server_builder.cc b/src/cpp/server/server_builder.cc index 6d5924404f4..708b2364897 100644 --- a/src/cpp/server/server_builder.cc +++ b/src/cpp/server/server_builder.cc @@ -25,10 +25,13 @@ #include #include +#include "absl/log/check.h" +#include "absl/log/log.h" + #include #include #include -#include +#include #include #include #include @@ -45,11 +48,38 @@ #include #include -#include "src/core/lib/gpr/string.h" -#include "src/core/lib/gpr/useful.h" +#include "src/core/ext/transport/chttp2/server/chttp2_server.h" +#include "src/core/server/server.h" +#include "src/core/util/string.h" +#include "src/core/util/useful.h" #include "src/cpp/server/external_connection_acceptor_impl.h" namespace grpc { +namespace { + +// A PIMPL wrapper class that owns the only ref to the passive listener +// implementation. This is returned to the application. +class PassiveListenerOwner final + : public grpc_core::experimental::PassiveListener { + public: + explicit PassiveListenerOwner(std::shared_ptr listener) + : listener_(std::move(listener)) {} + + absl::Status AcceptConnectedEndpoint( + std::unique_ptr + endpoint) override { + return listener_->AcceptConnectedEndpoint(std::move(endpoint)); + } + + absl::Status AcceptConnectedFd(int fd) override { + return listener_->AcceptConnectedFd(fd); + } + + private: + std::shared_ptr listener_; +}; + +} // namespace static std::vector (*)()>* g_plugin_factory_list; @@ -109,10 +139,9 @@ ServerBuilder& ServerBuilder::RegisterService(const std::string& host, ServerBuilder& ServerBuilder::RegisterAsyncGenericService( AsyncGenericService* service) { if (generic_service_ || callback_generic_service_) { - gpr_log(GPR_ERROR, - "Adding multiple generic services is unsupported for now. " - "Dropping the service %p", - service); + LOG(ERROR) << "Adding multiple generic services is unsupported for now. " + "Dropping the service " + << service; } else { generic_service_ = service; } @@ -122,10 +151,9 @@ ServerBuilder& ServerBuilder::RegisterAsyncGenericService( ServerBuilder& ServerBuilder::RegisterCallbackGenericService( CallbackGenericService* service) { if (generic_service_ || callback_generic_service_) { - gpr_log(GPR_ERROR, - "Adding multiple generic services is unsupported for now. " - "Dropping the service %p", - service); + LOG(ERROR) << "Adding multiple generic services is unsupported for now. " + "Dropping the service " + << service; } else { callback_generic_service_ = service; } @@ -160,7 +188,7 @@ void ServerBuilder::experimental_type::SetAuthorizationPolicyProvider( void ServerBuilder::experimental_type::EnableCallMetricRecording( experimental::ServerMetricRecorder* server_metric_recorder) { builder_->AddChannelArgument(GRPC_ARG_SERVER_CALL_METRIC_RECORDING, 1); - GPR_ASSERT(builder_->server_metric_recorder_ == nullptr); + CHECK_EQ(builder_->server_metric_recorder_, nullptr); builder_->server_metric_recorder_ = server_metric_recorder; } @@ -223,6 +251,18 @@ ServerBuilder& ServerBuilder::SetResourceQuota( return *this; } +ServerBuilder& ServerBuilder::experimental_type::AddPassiveListener( + std::shared_ptr creds, + std::unique_ptr& passive_listener) { + auto core_passive_listener = + std::make_shared(); + builder_->unstarted_passive_listeners_.emplace_back(core_passive_listener, + std::move(creds)); + passive_listener = + std::make_unique(std::move(core_passive_listener)); + return *builder_; +} + ServerBuilder& ServerBuilder::AddListeningPort( const std::string& addr_uri, std::shared_ptr creds, int* selected_port) { @@ -349,16 +389,16 @@ std::unique_ptr ServerBuilder::BuildAndStart() { if (has_sync_methods) { // This is a Sync server - gpr_log(GPR_INFO, - "Synchronous server. Num CQs: %d, Min pollers: %d, Max Pollers: " - "%d, CQ timeout (msec): %d", - sync_server_settings_.num_cqs, sync_server_settings_.min_pollers, - sync_server_settings_.max_pollers, - sync_server_settings_.cq_timeout_msec); + LOG(INFO) << "Synchronous server. Num CQs: " + << sync_server_settings_.num_cqs + << ", Min pollers: " << sync_server_settings_.min_pollers + << ", Max Pollers: " << sync_server_settings_.max_pollers + << ", CQ timeout (msec): " + << sync_server_settings_.cq_timeout_msec; } if (has_callback_methods) { - gpr_log(GPR_INFO, "Callback server."); + LOG(INFO) << "Callback server."; } std::unique_ptr server(new grpc::Server( @@ -396,9 +436,29 @@ std::unique_ptr ServerBuilder::BuildAndStart() { cq->RegisterServer(server.get()); } + for (auto& unstarted_listener : unstarted_passive_listeners_) { + has_frequently_polled_cqs = true; + auto passive_listener = unstarted_listener.passive_listener.lock(); + auto* core_server = grpc_core::Server::FromC(server->c_server()); + if (passive_listener != nullptr) { + auto* creds = unstarted_listener.credentials->c_creds(); + if (creds == nullptr) { + LOG(ERROR) << "Credentials missing for PassiveListener"; + return nullptr; + } + auto success = grpc_server_add_passive_listener( + core_server, creds, std::move(passive_listener)); + if (!success.ok()) { + LOG(ERROR) << "Failed to create a passive listener: " + << success.ToString(); + return nullptr; + } + } + } + if (!has_frequently_polled_cqs) { - gpr_log(GPR_ERROR, - "At least one of the completion queues must be frequently polled"); + LOG(ERROR) + << "At least one of the completion queues must be frequently polled"; return nullptr; } @@ -421,9 +481,8 @@ std::unique_ptr ServerBuilder::BuildAndStart() { } else { for (const auto& value : services_) { if (value->service->has_generic_methods()) { - gpr_log(GPR_ERROR, - "Some methods were marked generic but there is no " - "generic service registered."); + LOG(ERROR) << "Some methods were marked generic but there is no " + "generic service registered."; return nullptr; } } @@ -463,7 +522,7 @@ ServerBuilder& ServerBuilder::EnableWorkaround(grpc_workaround_list id) { case GRPC_WORKAROUND_ID_CRONET_COMPRESSION: return AddChannelArgument(GRPC_ARG_WORKAROUND_CRONET_COMPRESSION, 1); default: - gpr_log(GPR_ERROR, "Workaround %u does not exist or is obsolete.", id); + LOG(ERROR) << "Workaround " << id << " does not exist or is obsolete."; return *this; } } diff --git a/src/cpp/server/server_cc.cc b/src/cpp/server/server_cc.cc index 39529d08306..099b8ca2141 100644 --- a/src/cpp/server/server_cc.cc +++ b/src/cpp/server/server_cc.cc @@ -29,13 +29,14 @@ #include #include +#include "absl/log/check.h" +#include "absl/log/log.h" #include "absl/status/status.h" #include #include #include #include -#include #include #include #include @@ -73,7 +74,7 @@ #include "src/core/lib/iomgr/iomgr.h" #include "src/core/lib/resource_quota/api.h" #include "src/core/lib/surface/completion_queue.h" -#include "src/core/lib/surface/server.h" +#include "src/core/server/server.h" #include "src/cpp/client/create_channel_internal.h" #include "src/cpp/server/external_connection_acceptor_impl.h" #include "src/cpp/server/health/default_health_check_service.h" @@ -239,11 +240,10 @@ void ServerInterface::RegisteredAsyncRequest::IssueRequest( ServerCompletionQueue* notification_cq) { // The following call_start_batch is internally-generated so no need for an // explanatory log on failure. - GPR_ASSERT(grpc_server_request_registered_call( - server_->server(), registered_method, &call_, - &context_->deadline_, context_->client_metadata_.arr(), - payload, call_cq_->cq(), notification_cq->cq(), - this) == GRPC_CALL_OK); + CHECK(grpc_server_request_registered_call( + server_->server(), registered_method, &call_, &context_->deadline_, + context_->client_metadata_.arr(), payload, call_cq_->cq(), + notification_cq->cq(), this) == GRPC_CALL_OK); } ServerInterface::GenericAsyncRequest::GenericAsyncRequest( @@ -254,8 +254,8 @@ ServerInterface::GenericAsyncRequest::GenericAsyncRequest( : BaseAsyncRequest(server, context, stream, call_cq, notification_cq, tag, delete_on_finalize) { grpc_call_details_init(&call_details_); - GPR_ASSERT(notification_cq); - GPR_ASSERT(call_cq); + CHECK(notification_cq); + CHECK(call_cq); if (issue_request) { IssueRequest(); } @@ -289,10 +289,10 @@ bool ServerInterface::GenericAsyncRequest::FinalizeResult(void** tag, void ServerInterface::GenericAsyncRequest::IssueRequest() { // The following call_start_batch is internally-generated so no need for an // explanatory log on failure. - GPR_ASSERT(grpc_server_request_call(server_->server(), &call_, &call_details_, - context_->client_metadata_.arr(), - call_cq_->cq(), notification_cq_->cq(), - this) == GRPC_CALL_OK); + CHECK(grpc_server_request_call(server_->server(), &call_, &call_details_, + context_->client_metadata_.arr(), + call_cq_->cq(), notification_cq_->cq(), + this) == GRPC_CALL_OK); } namespace { @@ -446,7 +446,7 @@ class Server::SyncRequest final : public grpc::internal::CompletionQueueTag { deserialized_request_ = handler->Deserialize(call_, request_payload_, &request_status_, nullptr); if (!request_status_.ok()) { - gpr_log(GPR_DEBUG, "Failed to deserialize message."); + VLOG(2) << "Failed to deserialize message."; } request_payload_ = nullptr; interceptor_methods_.AddInterceptionHookPoint( @@ -480,7 +480,7 @@ class Server::SyncRequest final : public grpc::internal::CompletionQueueTag { // Ensure the cq_ is shutdown grpc::PhonyTag ignored_tag; - GPR_ASSERT(cq_.Pluck(&ignored_tag) == false); + CHECK(cq_.Pluck(&ignored_tag) == false); // Cleanup structures allocated during Run/ContinueRunAfterInterception wrapped_call_.Destroy(); @@ -642,8 +642,8 @@ class Server::CallbackRequest final void Run(bool ok) { void* ignored = req_; bool new_ok = ok; - GPR_ASSERT(!req_->FinalizeResult(&ignored, &new_ok)); - GPR_ASSERT(ignored == req_); + CHECK(!req_->FinalizeResult(&ignored, &new_ok)); + CHECK(ignored == req_); if (!ok) { // The call has been shutdown. @@ -689,7 +689,7 @@ class Server::CallbackRequest final req_->call_, req_->request_payload_, &req_->request_status_, &req_->handler_data_); if (!(req_->request_status_.ok())) { - gpr_log(GPR_DEBUG, "Failed to deserialize message."); + VLOG(2) << "Failed to deserialize message."; } req_->request_payload_ = nullptr; req_->interceptor_methods_.AddInterceptionHookPoint( @@ -824,8 +824,8 @@ class Server::SyncRequestThreadManager : public grpc::ThreadManager { // Under the AllocatingRequestMatcher model we will never see an invalid tag // here. - GPR_DEBUG_ASSERT(sync_req != nullptr); - GPR_DEBUG_ASSERT(ok); + DCHECK_NE(sync_req, nullptr); + DCHECK(ok); sync_req->Run(global_callbacks_, resources); } @@ -997,8 +997,8 @@ Server::~Server() { } void Server::SetGlobalCallbacks(GlobalCallbacks* callbacks) { - GPR_ASSERT(!grpc::g_callbacks); - GPR_ASSERT(callbacks); + CHECK(!grpc::g_callbacks); + CHECK(callbacks); grpc::g_callbacks.reset(callbacks); } @@ -1042,8 +1042,8 @@ static grpc_server_register_method_payload_handling PayloadHandlingForMethod( bool Server::RegisterService(const std::string* addr, grpc::Service* service) { bool has_async_methods = service->has_async_methods(); if (has_async_methods) { - GPR_ASSERT(service->server_ == nullptr && - "Can only register an asynchronous service against one server."); + CHECK_EQ(service->server_, nullptr) + << "Can only register an asynchronous service against one server."; service->server_ = this; } @@ -1058,8 +1058,7 @@ bool Server::RegisterService(const std::string* addr, grpc::Service* service) { server_, method->name(), addr ? addr->c_str() : nullptr, PayloadHandlingForMethod(method.get()), 0); if (method_registration_tag == nullptr) { - gpr_log(GPR_DEBUG, "Attempt to register %s multiple times", - method->name()); + VLOG(2) << "Attempt to register " << method->name() << " multiple times"; return false; } @@ -1100,17 +1099,16 @@ bool Server::RegisterService(const std::string* addr, grpc::Service* service) { } void Server::RegisterAsyncGenericService(grpc::AsyncGenericService* service) { - GPR_ASSERT(service->server_ == nullptr && - "Can only register an async generic service against one server."); + CHECK_EQ(service->server_, nullptr) + << "Can only register an async generic service against one server."; service->server_ = this; has_async_generic_service_ = true; } void Server::RegisterCallbackGenericService( grpc::CallbackGenericService* service) { - GPR_ASSERT( - service->server_ == nullptr && - "Can only register a callback generic service against one server."); + CHECK_EQ(service->server_, nullptr) + << "Can only register a callback generic service against one server."; service->server_ = this; has_callback_generic_service_ = true; generic_handler_.reset(service->Handler()); @@ -1126,7 +1124,7 @@ void Server::RegisterCallbackGenericService( int Server::AddListeningPort(const std::string& addr, grpc::ServerCredentials* creds) { - GPR_ASSERT(!started_); + CHECK(!started_); int port = creds->AddPortToServer(addr, server_); global_callbacks_->AddPort(this, addr, creds, port); return port; @@ -1142,7 +1140,7 @@ void Server::UnrefWithPossibleNotify() { // No refs outstanding means that shutdown has been initiated and no more // callback requests are outstanding. grpc::internal::MutexLock lock(&mu_); - GPR_ASSERT(shutdown_); + CHECK(shutdown_); shutdown_done_ = true; shutdown_done_cv_.Signal(); } @@ -1160,7 +1158,7 @@ void Server::UnrefAndWaitLocked() { } void Server::Start(grpc::ServerCompletionQueue** cqs, size_t num_cqs) { - GPR_ASSERT(!started_); + CHECK(!started_); global_callbacks_->PreServerStart(this); started_ = true; diff --git a/src/cpp/server/server_context.cc b/src/cpp/server/server_context.cc index 41dfcf7d6a1..69d2f55237f 100644 --- a/src/cpp/server/server_context.cc +++ b/src/cpp/server/server_context.cc @@ -28,6 +28,8 @@ #include #include +#include "absl/log/check.h" +#include "absl/log/log.h" #include "absl/strings/str_format.h" #include "absl/strings/string_view.h" @@ -37,7 +39,6 @@ #include #include #include -#include #include #include #include @@ -155,8 +156,8 @@ class ServerContextBase::CompletionOp final return; } // Start a phony op so that we can return the tag - GPR_ASSERT(grpc_call_start_batch(call_.call(), nullptr, 0, core_cq_tag_, - nullptr) == GRPC_CALL_OK); + CHECK(grpc_call_start_batch(call_.call(), nullptr, 0, core_cq_tag_, + nullptr) == GRPC_CALL_OK); } private: @@ -197,8 +198,8 @@ void ServerContextBase::CompletionOp::FillOps(internal::Call* call) { interceptor_methods_.SetCallOpSetInterface(this); // The following call_start_batch is internally-generated so no need for an // explanatory log on failure. - GPR_ASSERT(grpc_call_start_batch(call->call(), &ops, 1, core_cq_tag_, - nullptr) == GRPC_CALL_OK); + CHECK(grpc_call_start_batch(call->call(), &ops, 1, core_cq_tag_, nullptr) == + GRPC_CALL_OK); // No interceptors to run here } @@ -302,7 +303,7 @@ ServerContextBase::CallWrapper::~CallWrapper() { void ServerContextBase::BeginCompletionOp( internal::Call* call, std::function callback, grpc::internal::ServerCallbackCall* callback_controller) { - GPR_ASSERT(!completion_op_); + CHECK(!completion_op_); if (rpc_info_) { rpc_info_->Ref(); } @@ -346,7 +347,7 @@ void ServerContextBase::TryCancel() const { grpc_call_cancel_with_status(call_.call, GRPC_STATUS_CANCELLED, "Cancelled on the server side", nullptr); if (err != GRPC_CALL_OK) { - gpr_log(GPR_ERROR, "TryCancel failed with: %d", err); + LOG(ERROR) << "TryCancel failed with: " << err; } } @@ -374,7 +375,7 @@ void ServerContextBase::set_compression_algorithm( grpc_core::Crash(absl::StrFormat( "Name for compression algorithm '%d' unknown.", algorithm)); } - GPR_ASSERT(algorithm_name != nullptr); + CHECK_NE(algorithm_name, nullptr); AddInitialMetadata(GRPC_COMPRESSION_REQUEST_ALGORITHM_MD_KEY, algorithm_name); } @@ -404,7 +405,7 @@ void ServerContextBase::SetLoadReportingCosts( void ServerContextBase::CreateCallMetricRecorder( experimental::ServerMetricRecorder* server_metric_recorder) { if (call_.call == nullptr) return; - GPR_ASSERT(call_metric_recorder_ == nullptr); + CHECK_EQ(call_metric_recorder_, nullptr); grpc_core::Arena* arena = grpc_call_get_arena(call_.call); auto* backend_metric_state = arena->New(server_metric_recorder); diff --git a/src/cpp/server/xds_server_builder.cc b/src/cpp/server/xds_server_builder.cc index 37dc6e2259b..d2c47a40168 100644 --- a/src/cpp/server/xds_server_builder.cc +++ b/src/cpp/server/xds_server_builder.cc @@ -22,7 +22,7 @@ #include #include -#include "src/core/ext/xds/xds_enabled_server.h" +#include "src/core/xds/grpc/xds_enabled_server.h" namespace grpc { diff --git a/src/cpp/server/xds_server_credentials.cc b/src/cpp/server/xds_server_credentials.cc index 185fbb6ac6d..eb7f6ddfda8 100644 --- a/src/cpp/server/xds_server_credentials.cc +++ b/src/cpp/server/xds_server_credentials.cc @@ -18,6 +18,8 @@ #include +#include "absl/log/check.h" + #include #include #include @@ -27,8 +29,8 @@ namespace grpc { std::shared_ptr XdsServerCredentials( const std::shared_ptr& fallback_credentials) { - GPR_ASSERT(fallback_credentials != nullptr); - GPR_ASSERT(fallback_credentials->c_creds_ != nullptr); + CHECK_NE(fallback_credentials, nullptr); + CHECK_NE(fallback_credentials->c_creds_, nullptr); return std::shared_ptr(new ServerCredentials( grpc_xds_server_credentials_create(fallback_credentials->c_creds_))); } diff --git a/src/cpp/thread_manager/thread_manager.cc b/src/cpp/thread_manager/thread_manager.cc index 2675f32af62..1fd3ee20bc8 100644 --- a/src/cpp/thread_manager/thread_manager.cc +++ b/src/cpp/thread_manager/thread_manager.cc @@ -20,10 +20,10 @@ #include +#include "absl/log/check.h" +#include "absl/log/log.h" #include "absl/strings/str_format.h" -#include - #include "src/core/lib/gprpp/crash.h" #include "src/core/lib/gprpp/ref_counted_ptr.h" #include "src/core/lib/gprpp/thd.h" @@ -40,7 +40,7 @@ ThreadManager::WorkerThread::WorkerThread(ThreadManager* thd_mgr) [](void* th) { static_cast(th)->Run(); }, this, &created_); if (!created_) { - gpr_log(GPR_ERROR, "Could not create grpc_sync_server worker-thread"); + LOG(ERROR) << "Could not create grpc_sync_server worker-thread"; } } @@ -68,7 +68,7 @@ ThreadManager::ThreadManager(const char*, grpc_resource_quota* resource_quota, ThreadManager::~ThreadManager() { { grpc_core::MutexLock lock(&mu_); - GPR_ASSERT(num_threads_ == 0); + CHECK_EQ(num_threads_, 0); } CleanupCompletedThreads(); @@ -142,7 +142,7 @@ void ThreadManager::Initialize() { for (int i = 0; i < min_pollers_; i++) { WorkerThread* worker = new WorkerThread(this); - GPR_ASSERT(worker->created()); // Must be able to create the minimum + CHECK(worker->created()); // Must be able to create the minimum worker->Start(); } } diff --git a/src/csharp/build/dependencies.props b/src/csharp/build/dependencies.props index 64aed427859..283650bf0bf 100644 --- a/src/csharp/build/dependencies.props +++ b/src/csharp/build/dependencies.props @@ -1,7 +1,7 @@ - 2.64.0-dev + 2.65.0-dev 3.26.1 diff --git a/src/objective-c/!ProtoCompiler-gRPCCppPlugin.podspec b/src/objective-c/!ProtoCompiler-gRPCCppPlugin.podspec index b200ae805e5..e05420911b5 100644 --- a/src/objective-c/!ProtoCompiler-gRPCCppPlugin.podspec +++ b/src/objective-c/!ProtoCompiler-gRPCCppPlugin.podspec @@ -42,7 +42,7 @@ Pod::Spec.new do |s| # exclamation mark ensures that other "regular" pods will be able to find it as it'll be installed # before them. s.name = '!ProtoCompiler-gRPCCppPlugin' - v = '1.64.0-dev' + v = '1.65.0-dev' s.version = v s.summary = 'The gRPC ProtoC plugin generates C++ files from .proto services.' s.description = <<-DESC @@ -106,6 +106,7 @@ Pod::Spec.new do |s| s.osx.deployment_target = '10.12' s.tvos.deployment_target = '12.0' s.watchos.deployment_target = '6.0' + s.visionos.deployment_target = '1.0' # This is only for local development of the plugin: If the Podfile brings this pod from a local # directory using `:path`, CocoaPods won't download the zip file and so the plugin won't be diff --git a/src/objective-c/!ProtoCompiler-gRPCPlugin.podspec b/src/objective-c/!ProtoCompiler-gRPCPlugin.podspec index 76747553b7d..10255961d05 100644 --- a/src/objective-c/!ProtoCompiler-gRPCPlugin.podspec +++ b/src/objective-c/!ProtoCompiler-gRPCPlugin.podspec @@ -42,7 +42,7 @@ Pod::Spec.new do |s| # exclamation mark ensures that other "regular" pods will be able to find it as it'll be installed # before them. s.name = '!ProtoCompiler-gRPCPlugin' - v = '1.64.0-dev' + v = '1.65.0-dev' s.version = v s.summary = 'The gRPC ProtoC plugin generates Objective-C files from .proto services.' s.description = <<-DESC @@ -108,6 +108,7 @@ Pod::Spec.new do |s| s.osx.deployment_target = '10.12' s.tvos.deployment_target = '12.0' s.watchos.deployment_target = '6.0' + s.visionos.deployment_target = '1.0' # Restrict the gRPC runtime version to the one supported by this plugin. s.dependency 'gRPC-ProtoRPC', v diff --git a/src/objective-c/!ProtoCompiler.podspec b/src/objective-c/!ProtoCompiler.podspec index 4fc4114e4b6..6fbf3181d00 100644 --- a/src/objective-c/!ProtoCompiler.podspec +++ b/src/objective-c/!ProtoCompiler.podspec @@ -114,6 +114,7 @@ Pod::Spec.new do |s| s.osx.deployment_target = '10.12' s.tvos.deployment_target = '12.0' s.watchos.deployment_target = '6.0' + s.visionos.deployment_target = '1.0' # This is only for local development of protoc: If the Podfile brings this pod from a local # directory using `:path`, CocoaPods won't download the zip file and so the compiler won't be diff --git a/src/objective-c/BoringSSL-GRPC.podspec b/src/objective-c/BoringSSL-GRPC.podspec index db662806f33..34bb565a76f 100644 --- a/src/objective-c/BoringSSL-GRPC.podspec +++ b/src/objective-c/BoringSSL-GRPC.podspec @@ -39,7 +39,7 @@ Pod::Spec.new do |s| s.name = 'BoringSSL-GRPC' - version = '0.0.33' + version = '0.0.34' s.version = version s.summary = 'BoringSSL is a fork of OpenSSL that is designed to meet Google\'s needs.' # Adapted from the homepage: @@ -76,13 +76,14 @@ Pod::Spec.new do |s| s.source = { :git => 'https://github.com/google/boringssl.git', - :commit => "e14d29f68c2d1b02e06f10c83b9b8ea4d061f8df", + :commit => "5a2bca2124800f2861263959b72bc35cdf18949b", } s.ios.deployment_target = '10.0' s.osx.deployment_target = '10.12' s.tvos.deployment_target = '12.0' s.watchos.deployment_target = '6.0' + s.visionos.deployment_target = '1.0' name = 'openssl_grpc' @@ -118,7 +119,8 @@ Pod::Spec.new do |s| s.subspec 'Interface' do |ss| ss.header_mappings_dir = 'src/include/openssl' ss.private_header_files = 'src/include/openssl/time.h' - ss.source_files = 'src/include/openssl/*.h' + ss.source_files = 'src/include/openssl/*.h', + 'src/include/openssl/**/*.h' end s.subspec 'Implementation' do |ss| ss.header_mappings_dir = 'src' @@ -134,7 +136,7 @@ Pod::Spec.new do |s| # We have to include fiat because spake25519 depends on it 'src/third_party/fiat/*.{h,c,cc}', # Include the err_data.c pre-generated in boringssl's master-with-bazel branch - 'err_data.c' + 'src/gen/crypto/err_data.c' ss.private_header_files = 'src/ssl/*.h', 'src/ssl/**/*.h', @@ -175,523 +177,520 @@ Pod::Spec.new do |s| *) opts="--ignore-garbage" ;; esac base64 --decode $opts < src/include/openssl/boringssl_prefix_symbols.h - H4sICAAAAAAC/2JvcmluZ3NzbF9wcmVmaXhfc3ltYm9scy5oALS9XXPbuLagfX9+hWvmZqZq1zmx08l2 - v3eKrXR04tjektLTmRsWJUE2dyhSISh/9K8fgKREfKwFci34rdp1TsfS8ywKAPFFEPiv/zp7EIWo0lps - zlavp38kq7LKigcp82RfiW32kjyKdCOq/5SPZ2Vx9qn5dLG4OVuXu11W/39n4vy3zcXv24+X64vN+erd - hXj3cXv+bn35fvX76lKkv23efTzfXm62//Ef//VfZ1fl/rXKHh7rs/+1/t9nF+/OL/9x9kdZPuTibFas - /1N9RX/rXlS7TMpMxavLs4MU/1DR9q//ONuVm2yr/n9abP6rrM42mayrbHWoxVn9mMkzWW7r57QSZ1v1 - YVq8atf+UO1LKc6es1r9gKr5/+WhPtsKcaaQR1EJ/eurtFAJ8Y+zfVU+ZRuVJPVjWqv/I87SVfkktGl9 - uvairLO10FfRxt3313v8aL8XaXWWFWdpnmsyE/L465ZfpmeLu8/L/zOZT89mi7P7+d2fs+vp9dn/mCzU - v//H2eT2uvnS5Pvyy9387Hq2uLqZzL4tziY3N2eKmk9ul7PpQrv+z2z55Ww+/WMyV8idopSvd99e3Xy/ - nt3+0YCzb/c3MxWlF5zdfdaOb9P51Rf1l8mn2c1s+aMJ/3m2vJ0uFv+pHGe3d2fTP6e3y7PFF+0xruzT - 9OxmNvl0Mz37rP41uf2hdYv76dVscvMPdd3z6dXyH0px/C/1pau728X0X9+VTn3n7HrybfKHvpCGPv6z - +WFfJsvFnYo7Vz9v8f1mqX/G5/ndt7Obu4W+8rPvi6mKMVlONK3SUF3y4h+Km6oLnOvrnqj/XS1nd7fa - pwAVejmf6Ou4nf5xM/tjens11exdAyzv5uq73xcd84+zyXy20EHvvi81faedTRG+u72dNt9pU1+nh7qW - 5iqmc5UQ3yaN+LOdG//ZlP9Pd3PlVLdPMrm+Tu7n08+zv872qayFPKufyzNV9Io622aikqrwqMJfFkJl - Qq2LmCrUO6n/oEVZre9WXeLK7dkuXVflmXjZp0VTCNX/slqepdXDYad88mwlFCyaQOru/c//+J8bdWcX - Aryc/5X+42z1v8GPkpn66fP2C0GH+cWz9Ox//s+zRP+f1X/01Owu2SaqloGvof9j+4d/9MD/thxS1FRL - h/Se6+XNIlnnmUqqZCdU9bAZq/NJx8rQgR4pqidRcXQW6Vh1XZisDtutKm4cN8DbEZ7Okwt+yvo0YGdq - UR87pX3as8ekRDgdHlSZrrOd0C0bzWuQnvVRtXC5YIpt2HOzEgH59TF5Fs4xXVdkRVZnaX78Jcnm0NW8 - 1EC4qo87nc+TP6bL5Gb2aazfQHzPfDpZqJaKqGop25aX6SbRX9Z9LtVBpDhdtjff3U9v9Qc6ZSgVucv1 - xvvpt6QSXbyF6sTMxv9+iAXMq6yMsju8HeG5Um07V+/BkDvi8kFBH0P/8Wp2r/pTyUbIdZXtKTcKTIN2 - XWulB9X6FNmGoTdx1L/SfSieW6Ood53t1agj4sp7ARpjkz0IWUfE6AVoDF3By8f0p+i+zIzkatB47N8S - +A0/X5Ii3QmmuKODdvZVtzDq3qUviWq4JO/+cgx4lKyIjdIb0CgRWRBM/321jciAjg7Yy7pcl3kSEeFk - QKPEpX4o5TOZpKo1Ypg7ErOu8nL9s6uleHbTAEaRtao10mrDLToW70S4+3afpJtNsi53+0o00zrEruWA - Boi3rYQAvinJETEREFOVj3f09LNI2PomPwTxIBGzDStAtkF83GSBUmX5ly4H75L1Y6rqwrWoaC2lj4P+ - 8zj/+ZC/+cTKkTR/YAQCPUjEdsh7NWGFOcKwW7zUVRqXZJ4DjiTbn8kJ0KG+d/0oVP24r7InPWP/U7xS - 7Z4AiNH2MtVve6jKw54cwcYBfy7Sykg9SY7gCrAYbj4xI3kaLN6u3AheCE1i1rIZDTGvvYN9tyjSVS6S - ci33ulHc52p4Tg0BOdBIMnsoRFcL6GkQBez2khkSlqGx61zq/CsKQe60YRI/1jY/yMfjrUv+YTYN2FX7 - TnYqxjc1jbhOuWybrVUtQLW6PBZB3y88tyZDVt7N7PJIhH1apTuWuyExa1vjMmpsBwf97Y0ga/2sh643 - aMTeVOmSpW5RxHtsqpM8kzVLbxngKOpP6SFXg65UymdVZ6w4gTzJyFjJQYpqk9bpmwQ92eDo4iXhhupQ - 1FuIZ9Wkb8QLU37isQiRLTUogWNlxbZM1mmer9L1T04cSwDHUDdqXj5ERXEUcBw9ldPcvdwbyBLgMZoJ - C9aUBCZBYqmsi4/lSpBYjN7akYONxWGneiPrn4JXfg0c9jN7ggYKe38dMv1o/PFQb8pnVpLbBjhK8wQk - faTOPHk0bO96Tup+UUMcdt76Fjga8ckogCLeXKparCsFugpgZbZvgaOp2yPbvkbVUo4iGGcj9vVjRJCG - D0bgZruB+/7mGWb3jbxcp6x7EJT4sQqhRjX1bp/MF+TJD5OFzM904bPvqcSufBLcyQ2b9u36gyRdr1VO - U9UGGvQmD2W5iZA3fDhCJQrxUNYZY3CFaJB4bTW1PeQ5K06PY/5V8pjRGzOTxcylGkeveZncsWEzP5tN - wUCM2IwGPEjEZrDTZJfM/uYFsxWBOM0XV+wYLR7w67FAhL/FA/6ukokIcTIgUdg3ReCO0AuJBc/aoohX - 9SpXxMdxNop4ZXyJlGNKpIwrkXKoRMq4EimHSqSMLpFyRInsepW88nOEIXf9rlvomezLktHM2DwSgTVX - KANzhe1nx8khyVOfcMR/7Puy595gCxjtnJ1G54E0Up8dqidOrXNCg17WtITLIxHE+pE1QLJgxN08uUqy - DU9+okP2CHXYy09zg0cisObGexKxyuwhzR94CdKxYTM/SUwBEiPu2RKgQOK8RW1zPrK2SdRwvnxODsXP - onzWD+r33YwaJ5NwGRY7MtoYvxS57nhzWmTXAEdpVzuw9B0a8HLzfzDfm88jp4UwDxKxma5Piw1nNYMn - QGK0SxKYtYCJI/6o51hyxHMs4zsxBcsyIFHK3T7P0mItVIctz9a8PHElSKxDVekL0v1P7k+yFVgcVeR3 - XXnkRTEEcIzop4xy3FNG+aZPGSXxKaP5/e723qf1o4yJa3qQiKVsanRV3zaT87y0dSVwLJFW+WvzLLRb - 98Fp0gELEo33xFaGntjqD7dpLoVek1N1za/YJN0L0E3rxQk45ISv5KESqcIi0tI2wFGinunK4We6Mv6Z - rhzzTFfGPtOVw8905Vs805XjnukevyaFap+3VfqgX0vmxrIkSKzY58dy3PNjyXx+LNHnx80nMq54mfxw - hCStHmKjaAccqdBPINtUjOprQ56hiDJJN096gZoUm+iwjgyJzX/yL4ee/OsvNEssKyH3ZSFZhc4SIDF4 - qwtkaHWB/lBvknGohV6eIwrJDeFbkGj90mbOyxuoBYkmf5561RE3LqDB43UvLsfGczRIvG4TFU6MFoW9 - vw7ZOiJ7DBz1R6xokSNWtMioFS1yYEVL+/m6rDb9u2IRLRqiwuLWekRdFqoHKx/Tiw8fk3Jrjh0l7xKG - rNjVdOMD1WdX9ddhJ3jRXQsc7djE9Kubme0HKMJixq5ckiNXLpnfy/QLakWtqtOYaL0lHE1XOJtHwV03 - FVAhcaH3A9gdatyGR8+KB/2CU1mpEdKu2VFLckMDKiRuVe/1Tb7NcsGLZgqQGHWVraOn1HwLHK1bwqZf - Oo1oLnwLFo1dOoOl0Z7fjxkLwyY0qu7Etu28fj2R2+EHRWNjxnRTcFs4ep3WBxn7a0+SMbF4jYTrCEbq - V3PGRbM8IyPKN4kng9EOenJJ1T8RoY4KJI6qszePLH1DhqxxxdxW4HHEmn/9msXNlUy5YoUGvdFJYzqQ - SNWB1ww1IOzkPywIPSXoeqFv0DGATcGorPXXcnD99UFPLGyp3pYCbOoevm9H31/pDwRtesieTBa353Eh - GsVgHN2fioyjFXCc+WISl2CWYEQMdrL5ljHRuInnW+BoEa/COvign51yrmM4UvtYnJt2sGk46lvEwyPp - oV+7UWr9mjxm9CcJoMSONb36knyd/ljofRgoepNDjNRXuC0QcT6mMtkc9nmXVWWxzR6Iy5CGXEjkXVrJ - xzTXEzvVa/dtyYoLmpCoxNdYTA4x0psvB7W93dZ4id40+vR4tH8cTIkzoILjGk+e1+leDw85IX0LHI1a - pE0OM5a7ZPVa0yYwfBq2t3sAkDeoAvCAnze1higCcdgPhXBLINpeRKSZhgfcZhsgowJZpqGo7Vx0XLzW - EYj0NtORI5WB62jH4uyYLY76OatZADzoZ+1DgDnwSLQW1CZx607v915RFzrCBjxKzAOjkAeP2E3x5NlW - NOvwqF2zIVco8k7wI+1E2EycCwZw3B+ZOcE80R25yMrNUeBx+FVKT8P2TLaP6rh9GJOHIxA7kwYG+5oV - 9ryqo0OD3phehaNA48TU4XKoDpdvVDvJ0bVT//SHGydUQmVEDSSDNZCMq4HkUA0k1Vgi3yQr/eZl8ZAL - PTJmBQI8cMS65Pfqj2zYnGzLKiKzAQ0cjz5gtEnbSt/sANrjIGKf0eAeoxH7iwb3FtWbXKb7dqpBP9RX - BbamnC0QcviR9Lb17Zsvh9W/xbqWOrNVh5n2TCJs8qOydjEN7GCqP9JzY2/0UwIqJ26uv6Q35u9OcSBF - cuEBd5KXkQEaAxSlmRvoHmXojkFe0+P4DihS/boX7LQy4AE3M61cgx2lXT/0mJES5wS5Lr3aKm+W7zP3 - rEUUThy9fKzd8JTk7jHHF7PL7sAOu/SrBK4vZgfdgd1zeTvZYrvYsnewDexey9g6BtwxZn2o68eqPDw8 - tu+rCdrzHwC3/RtVbB/0KYvJuhLNA4c01/0j0vgAlTixyv44DZLe4Byj6qwwXmg0MNvXziif3htY1y/9 - Um49oqUEGXJBkZu57LbrRMsBAEf9+k0l3RMhV/2Yw4m0fuT9BINzjJG7QA/vAP1muz8Tdn6O3vV5xI7P - oqrUOIF52JEHO+6XfVk1S6Z0G71Tt3+lbntSANBgR6E+u/Gf2ZyOjtWLyZqjOyg+n3bt9TvzVXtamfdp - wG4+dtbdIkmO4BmgKNSdW7BdsGN2wA7vft18qquJZpVlqXq4VUbrAcAGJAr7mTFsAKIYr42dtlajlx/Q - AkRjP4kbegLH25Ec2428f2IVO/YOm7Co3Cd8Y57s9d/pukzdCSPt6jhmOFCFxXVX5DFjehogXvfuViV+ - HVQDqJpD4h5XqASMFfPCCKKA4rzJM1LSs9GHZosf+k6mJucZk26xEVF4xHyf6uaeTv5TdSs1oz0eiaA3 - 3IoI0OOwv90Ui+03cNiv8zytD5UwlsSyo6EyJPbxULHYbAJFcMzusQc/liXwYzBXRToo4G1/2eo1eUrz - A91t46ifUW/gbyMxz8BAz7+IO/ti6NwL4/NKFadyx5S3MODuttyhL6Py6YC9PyiMHaJX4HHUSCktYqKc - BGAMVSlmG4a64TAj9ZA6m/Stx514GE8cAdz3e7Mb1AieAIihh9Rkr4YAF/0ZOLp+yfgg+evDu9+TxfJu - Pm1WI2ebF2YIwARGZa2WCq+S6g5a2clEHvZ6koGuNmDfvSXfLVvgPlH/yOSjoLs6zjceN/WkGo8cZuTc - yz3pW9k7IQ2cbNN8/ERu/xTie04TPkkuyHWBBftu9u5JA6fhRJ+EM+IUnOgTcEacfsM5+QY+9abdi/04 - K0I/LBLi/QiMZ0foeTfNqsbjNAJrWs7FA35m59nlkQjcCs6CMfdBD+jikshxIJGafVxq1dGUzXR1M2Ul - WfFAExIVGN2xYgIeKGKx0XPwvN6yTQN21rGCNglYjVekyF6DDZvJy4RBgR+Dv/fP0ElWzdEQq6ykOjUD - mFi7B4XOwjp9JvWcXrEWLPERBtz0zlkF9c6kWOu7pj/1pJk85nUnQy4ocvssyNrphB4SkECx2vlV1hjc - glG3fj2ece/bNGbn9Ex7MmRtnpTx1Q0O+VmzBeg8rnxMK7HhTvzYNGpn7H3v05CdV/vh9R40JbrJHgS9 - k42bxkXVAwBWAQq4xkVm3RGIB4jI3b3pIbxzk/FWTfogEvmT9tYDgAN+9lILn4bthyL7RZ8u7knQauy+ - c3oIywgBaYbicUqwb/CjRGzeP3ieY8xZjuFzHCPOcAye32h8SF/y68Ggm9PmoCPzZ0bv8hnsXT7T+2rP - UF/tWVVZgt2htGnbrt//il2HgDn8SN1IiirvMNuXFcw3+i3QcxobrBOlBulZ1VifqtOI45HJRtU+JE+L - eB4tZ01fuKxnbnuIRGUL+S6g2dYbUe0lNRECJjuq7osc9hvinFFP2bY8W1Vp9UrOfpNzjPoI2/7BI3Xk - BOCAv10Z2S5+lWS9Rdv2XfqQrU/zKafNRGtSeUElbqx2QxO9UK1dokYL4tKuXW+Fr76gF9lRpw882HZz - zx/Gzx4mvmPrvVurt0a3BvekUuHTtn0vBKmLpL/vGsjtCtimqL77Wp/F2Exk7ktZ8xb0BzRwPFVFn79v - HvYdizP9Fcohlxf5KduI9hKpLagH2+52Y3BVxk+/Otnm2cNjTX3SFBQBMZuZs1w8iZwcpUcBb9uB4okN - 1jZXxEqj8uoJ5sHH6DnHxgecOwrAXX+zyNHITT13LGkxQIUbR7rLFf5NfFcJUdhxuu3F+/XJlAge7Lr1 - MSsqct6+MEhT26xr1m8hZH+LdlOpLM/qjDbVARuwKBG5jUrcWG09Vwnqi1026Vo5bw1g5+FGnIUbPAe3 - +ZD6OOQEAa6oEy7HnKXbfOeZc8XP0BWfs/LoHMkjzlm86Dm8MWfwhs/fbT6F3kokh4AkQKy+G8z7JQ4P - RGCd9hs66Zd5yi96wm/M6b7hk32bTx9LhlJDgIv8rgp2OjD3ZGD8VOCoE4EHTgOOPAl48BTg+BOAx5z+ - K3lvL0js7YXmrNzmvdNmzpp6vRYLmHnnBAfPCO4+lM1OsXogsy43Yl8SFyrgFj8avTVKoLaIcywsetZw - 1Lm8A2fyRpzHGzyLN+4c3qEzeKNPxh1xKm77lWajAt7tYsGAm3sK7sAJuPGnpo45MbX5Tvtatm7R20NB - yUFcARRjW1Yqh/QUbTO3KtMHRhxAAsSirzNH91iT5LXTElg7rf8WNWqqh8ZLddNz2ObpA918BH0ne9Xz - wNmv+uN/b36enyfPZfUzVd2ogpzGLu9HYK9ZHjjtNfqk1xGnvEaf8DridNfok11HnOrKOdEVPs015iTX - 8CmusSe4Dp/e2nyjPpCl9cH3sF+KHzivlHlWKXpOafwZpWPOJ40/m3TMuaRvcCbpqPNI3+As0lHnkDLP - IEXPHz0dHmpucE9/qz2gQeLxshs95/T0YczieVSCxNKjGT1ls37lD4tQERiTuZJx6PxW/tmtoXNb28/6 - BxGc1sTloQhveTor52RWSV8JLqGV4JK3Zldia3bjTzcdc7Jp851HsTH6ufRH/KgEisUr/3jJf5uNNijn - or7Rmaijz0ONOgt14BzU9vRSxugcGZXHnac65izVtzmBdOzpo8ZxjHq8Rl4zDfFohJi1u3Ls2l0ZvXZX - jli7G3kS5uApmLwTMLHTLyNPvhw89ZJ74iV+2iXzpEv0lMvYEy6HT7dknWyJnGrJO9ESO83ybU6yHHuK - ZcwJluHTKyV9nbSE1kmz2mi4fSa3LECrov/E2IPU5HAjedNpD7bddVk3R79xV/hBvB2Bf6Jo6DTRyJNE - B08RjTxBdPD00KiTQwdODY0/MXTMaaHxJ4WOOSU04oTQ4OmgsSeDDp8KGns25/C5nNFnco44j1Ovjkoe - RZ6X3Z6f3To8YhjQYUdizCuDM8nPKS0R9Pddg+wfGyVZ8ZTmtPUEoMCJoReHkpwasBxPF++P0wTk6S2P - 9cwsJeLq5hhZSovtzcubBe/He6DtpMsgC+sHe6Dt1CeQJqvDdqsKPcMM4Jb/6Tw5Z6eoD/tunhSzcVPY - h133RUwqXIRT4YIpxWwRqXARToWINAimAEcImyJ+O/LLNxdZYpwXNdbpYKiPstYIQHtvdrHhXKeDoT7K - dQJo71U9i6v5j/vlXfLp++fP03kz0G6PU94eivXYGAOaoXh63/w3iHfSBOJthNg3F8YOdTIEougVbcUh - z9lBjoJQjMOOrz/sAub9QT6y1RoOuOX496YgNmAmbZYL05Z9MV/eq+/fLadXS33fqP/8PLuZcvJ2SDUu - Lim/A5ZR0YhlIKSx4+lVsLP7L6c6Yren3vmYAoujV9HXghegZVHz+O38PBBzqj9teFJNYlZOofVp1E4r - mhaIOakF0CYxK7WScFHL22wxezv5NmUXZcQQjMJomzFFKA6nTcYUSBxOWwzQiJ14I9kg4iS8qu1yuJF6 - Y/ow5ibdlhaHGPflnnQoEggjblrPwOJwY9xNaQqwGIQN+TwQcVIrKYf0rXE39NC9zC3CeOllFFywzHKL - K15S5WO2Jed3A/kuVjY7OTy5ulLDuuR6uriaz+6brhflByN40D9+sxQQDroJ9StMG/bpIrn6Nrka7eu+ - bxvWq3UiinX1Ov4AagdzfNvV+cUlS2mRjrWuuFaLtK0bQdZ1iO0R6xXn0gzM8TFckKdk50UZyAvZHPfQ - fEB5LwxAfW8XkOM1UNt7KJ6rdE9V9hRmS/bpZjN+ARUI227OdcJXGXGN+BUubs+Tye0PSv3YI47n02yZ - LJb6++1hySSjC+NuUlMBsLj5oXkJs+bKOxz389UhK6X58dGA97BLVq+EI/1QAR6D0H0G0KA3JiclnJPf - 7tlF0EJRL/WKDRB1kouHSbrWu7ub6eSWfJ0nzPFNb79/m84ny+k1PUkdFjc/EMuYjQa9SVbUH3+LsLeC - cIxDdJDDQJSMnUChHKUWPBvFvZKfnzKUnzI2P+Vwfsro/JQj8rMuk0+33AAN7Lg/M2/8z+id/8f0VsW7 - mf3f6fVy9m2apJt/k8wAPxCB3iUBDQNRyNUYJBiIQcwEHx/wU29cgB+IsK8IC8pww0AUakUB8MMRiAty - BzRwPG6vw8eDfl65wnog9sfMMoX2RGaTD9xUsVHUS0wNE0Sd1FSwSNd6u5z+oZ8m7vY0Z88hRsIDQpdD - jPQ8MkDESe3WGRxuZHQAPDpgP8TpDyF/xkuODEsNclntOcQomTkm0RyTUTkmB3JMxuWYHMoxejfNIh3r - 7febG/qNdqIgG7FIdQxkohamI+S47j799/RqqfcVJCzZ90nYSk47g4ONxPQ7UbCNmoY95vqultN+so3Y - fLhwyE1tSFw45KbnlkuH7NScs9mQmZyLDhxyUytYF3bc9+rvy8mnmyk3ySHBQAxiwvv4gJ+a/ACPRYhI - n2DKsNMkkBr8dABSYDH91/fp7dWU8yDBYTEz1woYl7zLXCJX2BaLNmnSzYZmdeCQe52LtCDWp5AAjkFt - BdD6//gBYX2Uy8FGyoZ6LocYeam5wdKQfPvjtWL/QOkd+4efYNSdqD+nh1xv0yZ/MkNYDjhSLoqH8W93 - +yRspVZgaP3dfUCfkjLBgDMRL2ytYsPmZLuPkSsc9lN7Emgfov/gHVP4DjUmq9fkdnbN9HY0bo+9O+So - u8P9VpLK9VtE0x44oho8fl9+vuQE6VDES9g9xeVwI/dGP7KOefnxnFtd2yjqJfYsTBB1UtPAIl0r81nO - En2Ww3qAgzy1YT6qQZ/PNB9ssu2WrtMUZKMXHOS5DudhDvwEh/XYBnlWw3xAgz6VYT2KQZ6/nJ6W7EuZ - vbCMLYp5GQ9zwk9wnE+b5bAx+kYAxVBV84MoRNUcbrPRu7bRw/gOJBIz+Y8kYtUBk5qlbVHX++N+Sh7Z - HCHIRb/zjxRkoz7AOEKQi3zvdxDkkpzrkvB16dMpWLJzx/b9dvbndL7gPwuFBAMxiFWzjw/4qZkG8G6E - 5RWrMTY4xEhvki0Ss+72nLvexxE/vZQYIOLMeNeaYddILgU9hxjpjbdFIlZqtWBwuJHT4Pq45/98ya4m - bBY3k4uBQeJWemEwUcf752wxi5i99/Ggn5ggLhx0U5PFox37JnsgbDVlII6n7S3VInl6T5IZnGesk3JF - OVvSwRxfVotdsrnISLYjhLgo+3h4IOYkTmQZHGikZ7DBgcYD5wIP4NXpg144WdJyiJF8f5sg4swuNiyl - 4hAj9U42OMjI+9HYL2b9XOS36g1sWPdJB2JOzn3ScpCRlR1IXuxTYg/xREE2vSE43aYpzJas6xeeUZOQ - 9VDwfnPLQUbaXr4u5xh3q27OgPw0ziIxa8HXFoC3bb5Uev9Nu6MNzjGq3uwuq7MnQa8mbNT1HupElLRZ - +o4BTIzWvsccX50+XFBfe+oYwKQyi2xSjGsSu33e7DNKzQSLNKzfl18UsPyRzG4/3yXdK9UkO2oYikJI - W4QfikCpkTEBFOPr9MfsmplKPYubOSlzJHErKzVOaO/9NFnMrpKru1s1JJjMbpe08gLTIfv41IDYkJmQ - IiBsuGd3SbrfN8ezZbmgHOgAoLb3dBLZuq5yitUCHWcu0iohnTDoYJCv3TiYaTVgx603Kyr0qQ3NV0hm - G3W81OT0U1H9pRkuNscdETddRgVIjGZv4eThkFZpUQvBCuM4gEi6HBImkVzONm7K43mrFF9P2TZRbika - 9XWb17s6kR6sW5Djygmbk50Ax1HRctGpJ7u/JGmeUy2asU3N6iPC4iiT8U3EM1sdDPTprYJUVoxf/wOx - vnn8wRY9AVj2ZMvet2RFVlM9mvFNOz1dwsiAIwcb9+O7sA7m+9jZGchLZuvjoJhXH4U8fuN7iPXN1DNR - XM4zUn+482sfxcvmsCMV5g6xPTqDClJZbgnXUpPb6CNjm3QxbA6qK2gpZHKusX4kV+AnCHBRuqIGA5ia - LetIL/UAKOYlZocFIs6N6vJU5StL27GImXpDWCDi3B+YTg0izopwwKYHIk7S0RU+6VtLet/JwGwfsbB7 - 5Vw3AqusTPZpVhFFJ843MrqqBub7aH2LlgAshBNpTAYw7cmevW/RdeLqsKWqOsz3yXL9U5ATvaVc2wvR - 8+IaDruVqMj3o4GBPn1HqTaEoexI28oYooGjs31JKhDq6w6vFziQCkJLOJa6IjcrR8YxEYdke29ERq3c - /TqdWnT8MtOenCyLc6qmgQAXZz7KAl2npN2uDeA4nnlX9Yxck+TU3RKuuSWx3pZerS3JdbYEamx9/s+O - JlGA66DXrhKsW6UQP0kW9X3XoHqBOeGMegsCXCrzmtNvqaXIgxG3HkrsCXs7gzDiZnthJ3WsL8GZG8mb - uZHYzI0kz69IYH6l+Rt1TH+CANeeLNr7FupcjQTnamQ3RULsTxkY7BPlVs88HKqCo+1p314QlmGYjG86 - zYyQS0hPBqzEuRoZnKvpP5V7sc7SnKfuYMxNHrI5qO/lzC9JdH7pNDjsTqgjLS9ABU6Mx/KQbxI1RuOk - tAuDbnKR6zHER3woZXKgkV4QDM41tjmpPqMJT5jjK+i9/iNjm2pBe26hv+8aJKNp6CnbdtDH2pN+V0vY - lifqnOCTPx/4xEnkJziVnxmDxWdwtEgulEBpbG9+4gOrEwS5OMMImzSsN5Ov04tPFx8+jradCMiSfM4K - QgXmcKBxRul22Bjo+77fUOaJXdBw3iafbma31+2+E8WTIPRvfRT2km4th4ON3aG/lCQAadTOTIYskAqU - uVMbs3xXy78SMf54pJ7wLMRsOSKeh/AKX094FlrydIRnkXVaUa+mYSzTH9Pbq0/NKhyCqocAFzGtewhw - 6QeJafVA1nUcYKSl/YkBTJJUFk6MZfp2d7tsMoaytNblYCMxGywONtKSzsRQn65MZU15eRkV4DG2ZZXs - ys0hP0huFEMBx6EVBhNDfUmu57g2TG1HW/Z0JZNMJs9lRbEalG3bkCwbjyZfSIfYHrm+WBUUSwNYjlVW - 0BwtYDvUXzKSowEAB/G4F5cDjPuUbtunnmm9WrGuredc40asaSoFuI5HwvqcI+A6csH6YSfM93FS/Ui5 - tt0+o4kUYDmatasERfN930A5YMVkABOxceoh20VYBnRr7/HQ/ptaAx0R20Nrur0We10eCl1dPyd/i6rU - CSZJOo+27OqOodVtLWA7sieKIHtyaWo6HxHbc6DktvUmpvq3KB7TYi02yS7Lc/0gPG2qzCrbqfFR/dpM - uRD0Y3R2/F+HNGd1dxzStr5Q0kR926KJd6F3/22rcqe6RUX9UO5E9UpSWaRlfVhTior6tk0f37TWeSES - UuPgsY65Tqrt+v2Hi4/dF84/vP9I0kOCgRgX7367jIqhBQMx3r/750VUDC0YiPHbu9/j0koLBmJ8PP/t - t6gYWjAQ4/L897i00gIvxuEj9cIPH/0rJdayR8TyqN4Rrb1oActBevB46z5zvNWjDdWOEcdUPeS6CvGQ - 6lc7abIj5dpK0rCnBTxHQbwYBbiOffl8QZNowrPQa0mDgm3bVLVU+gkGT2vgrp9YwKFRq/qb7ijRLJqw - LLmg3STN9x0DedR5RGwP6aznEwA4zsmSc8uySyv5qHoqpHVhNub45E9qb/jE2KZyQ5yt6AjIkvw6ZOP3 - AHA5z0jrwXUEZLlo+lN0V8tBRqYw7GN1gWEBHoNYT3isZ24edkjqJXcUZktWuX6lZMOzHmnUXm645hIo - +eR6pocQ1zlLdo7ZWPelxSLmCDHi3R1yok4RkIU3+PJhz03sXBwRzyN/VUSNIiBLTdf45U4eVlTNYQVZ - WEXixHlGRnXl11L7jNabaAHbQSuXbplURYr6SzrE8tAeM7lPl4pCJQ+F19/3DdQ7oIdslz4Rm9aFOSKg - h5rAFucbKYd9m4xlog1m3JHMPtUtju78JYdC771Eag8B2rZz5/cCM3mk3TaP3/cNlEW+PWJ7pDhsyqRK - SWskDAqz6f/zIHjOlrXMxAv0rox1SYFraf9MG55anG2k9owqv1dUkXtEFdAbkmJ9qASxAu0hx1UTn/d0 - hGdhTL+YmOejzZVJYK5M0ufKJDRXRuvduD0bYq/G69HQejNuT0b3Rqhp0CGWpy4T50BxgtGHQXd3CiZD - 3JGuldVttjjLeKBNLhzcmYUD7UHmwX2SeaAVhYNbFp7S/CCI7fiJsUzEqTVnXu30le2hWNdZWSSPhBoI - pCH7T7Fepz/p3pbDjXqlTFmtuOIOD/hJ8+oQHHDLXwchCK9KIDwUQYp8S+t/+ajh/f45+Tb91m1HNlpp - Ub6N9CjUYHzTQ1U+U02agU3tKX4cX0v6VkrvoEd8j35ltnoiJ1qH2b6d2FGe7p8I2yLrimhpCc+Sr9Oa - qNEI4CGsDOkRz1PQf1YB/a4iFwXVk5tv9l99+tRMZVOm+E0GNiWrssw5ugZEnKRjvH0yZE2es/pRb37K - 158USJxyXZPPSkAFWIxs067DqAl7UuAGJMqBnxGHUE4c3iArDkN5QZogsSDflavRDP2uaSnfJvfpWlBl - DeS7DucfqSaFgJ7uBM9kX6mPXsZP5QQUYJxcMMw59NsvyGVTIaAn+rf7CiDO+wuy9/0F6GGkoYYAF/3+ - PkD3tfoj45o0BLguyaJLyBKdqZcj8nQtL5IV/Ze3GOCrt+9Zwo4DjZcMG5CiesRHrlEbyHYRT8c2ENtD - 2Uji+H3HkBFfhrYg1yXXabVJ1o9ZvqH5DNB2qv/Ixu851BOQhXJghk05NsrOtCcAcLTtuJ6cG7/vLgjb - 7maBnSq/CaHD7HK2kTJ0P37fNyTkOqinbBvxh3m/hzj6MxDbQ5kwOn7fNCy6gYCo9PzcRlTjZR4KebO6 - O8HiMZWU+XDcAETR/Wh9piWpH+6ztlnvCZpmhezeC3ilVFAQ7dr3r9TusUnZNlotvPBq4UX7wmfxShyZ - 2hxuTEQudoTdYjEejqBLYGwU1wFE4qQMnCr0MbsDIk7u7x/83Um22+fZOqMPqXEHFok23HVJxHrgaw+I - l3zzniDflaeyJnW5LQzy0cbKJuXbyr1+GkBcmQrCA27WTeEbhqLwJoeGTENReUUQcviRSDMQJwT08Ads - qAKMkwuGOReA64KcqM4MxOmP0b89PAPRfYkyA3FCQA8jDd0ZiAX19RkDAT36/Ue99IfhO6Kgl/Fb3ZmN - 7s/kahaqYWNmNjADEIU6s2FhgK+os1wNZypJ7iQYKOAlz5jYHGi8ZNicnKKNGhfeqHGhX145Low79TLE - A22YhDm8SM1WQ86whxgIUoTi8H6OLwjFUEMsvl/Btps08l64I+9Fu/ulfiWYYjlBtqtdPtm+9ppnf6v8 - pbyYgRugKId6zbQfSccqxM82iUmPfxzQdsqf2Z6i0t93DPX4p//H77sGylPsnjAs0/ly9nl2NVlO7+9u - ZlezKe30O4wPRyDUVCAdthNWLSC44f82uSJvumRBgIuUwCYEuCg/1mAcE2lnv55wLJTd/E6A45hTtmPv - CcdC2wfQQAzP3e3n5M/JzfcpKY0tyrE1u0IJSct/F0ScedntcM8Sn2jH3laqeUboQ9mY4ZvfJNezxTK5 - vyOfsQmxuJlQCD0St1IKgY+a3h/3y7vk0/fPn6dz9Y27G2JSgHjQT7p0iMbsaZ6PP+oYQDEvaY7XIzEr - P5lDKdw8NVFNK898pDE7pQfogpiTXRwCJaHZ+E4v72GnhGkYjCLrtM7WTW7r8Ua6FZFBfSF2DbR9lSHW - M3/7vpz+RX5MDbCImTQ0dEHEqbcMJG09DtMhO+1JOYwj/kMRd/0GH47A/w2mwIuhOqs/VC+D+sAeglE3 - o9SYKOo9NB2tZKV/nmQGsBxepOWX+XRyPbtO1oeqojwkgnHc3xxj0h1KzQ1iOsKRisNOVNk6JlCnCMfZ - l3qio4qJ0ym8OOvV+vziUk9+Vq97ar7YMOYWRYS7g333dqU/PufaHRzzX8b5B68/yo66H1P1v+TiHVV7 - 5Hxj25rpPiL1AB/c4Eepq4g0seABt/4n4UkIrvDibLO9TM4vPyYXyb6idkps2HeX1U91s9ViXev/Xotk - l26ekudsL8qi+VDvdKxfuKFM3TLc/pXRO/JgD745OpxXwEzU8z6sdzrrUnLnogcxJ6/mtOEBN6u0Qgos - Du+Os+EBd8xvCN9x3ZdYHS+LxczNiPCneOW5jzRmV43z+A1aARTzUubVXdB36uPcXtv+b3t8M7eXFTAF - o3bnML9FWFcVjNteaHxQywNG5FV7D9DZePZnpwPteeoTDvqbpqHbejUrC0YIxwBGaVKPcgoPxKJmvb4z - IotdBRinfmxOPFXfJUzrw7jvf0z1Om366LAHPade75rKHVHYUb6t7VqSe6QnzjM21ap8lZTdSQDU9zaH - tm6zjRpmZmmerA6UxfwBhxcpz1ZVWr1y8s1EPe+OMwe8g2d/2z9zLtEgfavYEfZMsCDPpWsnXs1pkL71 - sEs4syEnzjOWMeO9MjzeK4s1tWLUiOfZl/nr+ft3H3h9KYfG7YzSZLG4+UB7yAjSvr0SiVRVxap8YV26 - g3v+asOow1oIcemd2epsn4tLyrmvAYUfR3AqmY4CbNv2IAQ1WEl08GYDYdLLJUMiPGZWrLlRFOp5uw2Z - +BWnLxgRI2uX70SH6jxYxIPkxtAkYK3b16Qj+tigA4z0NuMXSRi/yLcbv0jK+EW+0fhFjh6/SPb4RQbG - L82R1puYqzdo0B7Z+5djev8yrvcvh3r/vE4w1v/t/t7M9kkhmNoTjvqzbZI+pVmernLBjGEqvDh1Ls/f - J48/N1u9ObT+uvqeoCY+YgGjMeZ7j5jhW86T6/mnP2inPtkUYCPNz5oQ4Dqes0L2HUHASWonTQhwURZT - GAxg0u+8Eu4AGzN8j+mVHsO285eqzL6Mnwf1UdRblI/PTK9GUa+UUrxnihs2bE5+e4mRK7z3X08Xxwnv - 0VdsMrZJrFfvqQM2l8ONhA1MAdTzMi8UvU7+ZeJXuREX+rEu61Id1jO/jzC/H2+mJoePO/6CXlqPjG0q - mL+/QH97wf/dReg36x4N4XGKgYAe4qX1FGw7FOtHQTm6FYR9d6kGKfu0ymryD+9Jw/qFtDN593WLb66U - IGi+7xuS/WFFyk6Hs43lbn9QQyqir6cwm56ZfiTkKQSjbtrpoyBsuSm9te7rFn86CY+WjCYG+1QpTHei - FpWk3HSYwIlRv0seSE4N+A7qb24R37OnWvaA4xf5FykE8FTZE+eHHTnASL5pTcz3/aKafrkOfdDeP38/ - /510ZiKAWt7j8VR9uSOYfdhyE8YZ7bdtmni2hIFYnvbFDtbvc1HLK+n3koTuJUm/DyR0HzRTLc0byzRT - B9mu7G9K/aq/bvG0BecnwHQ0qS4pp+KajGGazadXy7v5j8VSA7SmA2Bx8/gBuk/iVspN5KOmd3F/M/mx - nP61JKaBzcFGym83KdhG+s0WZvm6l5mS28m3KfU3eyxuJv12h8SttDRwUdDLTAL017N+OPKbeT8X+6XN - vPyeshwGhA33YpIsZsTaw2B8k27jqSbN+KauFabKOsz3UbKiR3xP03pSTQ3kuyQjtaSXWqTuRPd929AO - zPRmEWl9qEi/zkFt76aMUfu0Z9efEJUa8TxPosq2r0RTCzku1eRffyGJGsK2UO9H/15kDQUdDjHyBoOo - wY1CGg6eCMBC/uVeL/b41z3Zs4csv+i/y+4Nn/5KHRa6IOQkDgwdDjD+Irt+eRbqw2UHA33kZbEQa5sj - hpsgjdhV7jFuaQBH/IdVnq3Z+hNt24ntrtfmsge6AAuaeanqwaCblaIua5slo26TYN0mGbWSBGslybtT - JXanUpt1v00nDfW779sG4mD/RNgWescC6FUwJg1MqHdNr3hz7S6HG5tX2bjaBrbcjPGJTcG2kniKKsRC - Zsrox6YwW1LxfEmFGiXTCP5i4ijNA2HnC2W3DQ+EnIRWyIIgF2kE6GCQT7JKjURKTV1yy/aRdK3EcZYF - AS5alehgro9+YdBV6b+1BwoVeoF8s4Q4F+lPs33nvGPLs/tX97egRvzbK2mcZPfTPPnj8745UDNRParH - 8Wd2+6RnLTJZ7y8ufuOZHRqxf/gYYz/RoP3vKPvfmH1+9/0+Ibw2YzKAidCJMBnARGuUDQhwtYP4dn6g - rMhWG8f8ZUU4aQJAYW+7KeU2Tx846p5G7Otym66ZaXKCMfehehK6BPLkRzpop8xWIzji34gHTgnsUcTL - LiZoKWlva8JhNz4JWPVcxOo1Jpk9AxKFX04sGrA3KUaawAZQwCuj7ks5cF/qz/mVlUUj9mbXHv0yqWqB - pT4UWXUPdqxIoMmK+nX6o5tnp43dHBBxkkaZNucZVYZnqii128SJdTV+e1JU4McgtY8d4VmIbeMR8Tyc - aXwADXo52e7xQATdJFclOTl7EHYy5usQHPGT5+xgGrI39yH1XvZY0CyKdVNdSYb5xMJm2sSeT2JW8kQ8 - gnv+TCblPv11oN6CJ84zqvy8ILxSa1Oe7Thlzmq6YQEag3+7BJ8bdN8hTascCcjC7smAPBiBPDSzQc9Z - rusLeqp2FGjTKc3QaczztQ8R2Enq4oif/lgGwTE/u/QGns8cv6E+Y9zURwz2qfzg+BTm+bh9WI8FzdyW - SAZbIhnREslgSyTZLZEMtERNX5zRSTlxoJFfah0atnM7KDY84E7Srf5Q5bUaaGVFSppRHufzroD2yM2C - LNe36fLL3XW7yVQm8k1Sv+4pFSDIWxHaJXXphtKcnBjA1Ly/Sx01uCjkJc0bnhjIRDh1w4IA12aVk1WK - gUwH+u9zx2v0VaQWBLiaeb2Y2yekGR2POGEzpALiZnpSoSbHaDHIJ5NU766iNxKq6aXNxmF/WbSdGo78 - yALm3YFeohUDmGg9amC98OmvTddQz/6QfScSsDZ/J3abHBK1rlcrplWRqJXWJXNIwCrf5u6WY+9u+XZ3 - t6Tc3W1Pb7evhJRi8yaxcR0Svy751YHDWxG6gU22uSgIJ+p4IOiUtfpsw3C2oOVsTu89ZHmddXUPpZz5 - sO3W/ddEPzOlOE8Q6PrwkeH68BFyvb9kXJeCINeHi3O6S0GWq9kzUxWoNruap8Evu00iH1P9n1I+Hwgx - hmWh2OpnHr+u/zMuNiAzYl9ffPhw/rvuwe/TbPzDDhtDfcep+PFvUaMCPwZpbYjB+Cbi2gmLMm2z+8l8 - +YP84pYHIs7xby45GOKj9EUczjDe/jG7Jf7eHvE8ulJrF6cQ5/NgHPTPY+xz3N2c7XaskUXxoD6SxAiQ - wotDybcT4Vkq8aCaJFE1RzfoljsXNTULQYcXScblqRzKUxmTpxLL0/k8WUz+nCaL5WRJLN8+anv1xoai - qsqKNt/lkSHrlq/d2t52BqL5mOI0MMgnX1XB2XG1Jm3b259BO+bY5XBjUnCdSWFbm3Mt2o8kxWlyjvFQ - rNk/34Ntd/NMjppVJwhxJbn+E0fYkCEr+cYCcN9fiJf+W81W3dQQvsGOov7IzkKXdcy6Zfk0u+OUOZcF - zPo/uGaDBczzye01W23CgLvZyKpk223c9jcHWpNvmZ7CbOSbxkGDXvJtA/FAhDyVNTMxejTo5SWLww9H - 4CUQJHFilXs9ZNul1U+SvcccX6WXhTUhScXa5HBjsl5xpQoNeLd7tne7d7wHTok7gGWtEqksC3bFDOCu - f1c+ieZoVEET9xxo7DYY5opN3PXLuqxYl2yAtlOmnDToKcd2atCpt6xN+lbqTXpkDNOf98lkOrluzohP - CUejeiDiJJ5wC7GImTQOckHEqTtGhJUxPop4KbsPe2DA2b7ss8kqsaacjTTkQSJSRvsOhxjLveBdtAYD - zuQhrR8Ja+sRHokgBeE9RBcMOBO5TuuaedmmAIlRpw+k1x0BFjFTTtLwQMCpl3HQ9mIDUMCr39tUzUn1 - yKnpTBhxc1PYYAFz+zIfMz1M2HZ/0q9gLsuvhOU9FmXbrmb3X6bzJlObI5ppLxNiAjTGOtsTb3APxt30 - NsuncTtlfYuP4t66yrlehaLebpNlSk8TE6AxaKv4ABY3E3sJDop6m+Ur+z2tS4cr0DjUnoOD4t4nRoUC - 8WgEXh0OCtAYu3LDzV2Nol5iT8cmcWu24VqzDWrVh0Fwi0jDomYZX8blmDKuvxRTA5z4YITo8mhLgrH0 - ltv8CtMwgFGi2teBtpWbD3j6x9Q04VomKkcHcpJZs6C1Cu/e9+97ercH6us0f/ucFbRxjIGhPsJOfT4J - WWfUBvBEYTbWJXYg5PxOOhPS5WzjtVirEvQpleLjbxSjyYFGfdczhBqDfOSyY2CQj5rLPQXZ6DlicpBx - c0OuZyzQc+oeMScRTxxuJJZvBwW9jOw5YqiPd5ngfdh9xsr2HnSc2YOQtB/dEJCFntE9hvr+uvvMVCoS - tVJzxSIhK7nonCjMxrpEuNw0Hy0oq/csCrMx8/uEYl5eWh5JzMq4bRwWMnOtuPFP2tpIh8ONzNwyYNzN - y7Gexc3c9DVp2z69vbq7nrJmTRwU9RLH1TbpWAtWv8bAIB+5LBgY5KPmf09BNnqemxxkZPRrLNBzsvo1 - JocbifW+g4JeRvbA/RrjA95lgu1T9xkr27F+zZf7r9P2yQD1ca9NYtaM6cwgI+eptAUiTsYMv8siZvGy - L6uaJW5RxEutkS0Qcf7cbFlKxWFGseMZxQ4xcp/YgQIkBrFVMjnESH2ubYGIk/rU2QJRZ33YJ+mhfkwq - sc72mShqZgxfNBxTimJDm83CLWOjtUsd9Hs8rH1WGe7glb1Fso9L8ejEHpHO/z8lMSN1qSsSLBBwfr3+ - 3J7SvqNXQwaLmDOeFGwzv06/Nbub5IwqyGARM+dKGwzxmTsTc6/YcWCR+h1C2IEsBRjnB7tvYbCYmbhy - wAIRJ6tfAewiaH503LOP5T3CiJv6PNwCESen19JxiFGvWWUpNYg4Ob0Ufx808xPO7kEIj0Wg7yAE44if - VcsfQdv57Tpi7ZIHg+7m7pYccUfiVlp98y2wvvb4GbGuMTDURxwZ2yRsrQSxnrFA0LlR/Yqq5Pz4jgSt - 1Hr2G7ZW+RtvRfE3bD1x9wGtW3OCYBex9jMw0Ees+b4hq467v5PXy5gcaGStX3FZ2Myrh9AaiLQ9mY15 - PnZNGaglOakIp55+ibrdV42htGHPTVzL0RKehZFyYJox8tTPz/tP00Q2c4YUVU85tq9Xi8sL1db+INlO - lGub/rhoPqTZjpRva6cHN5vzdliWFduSqgYUSBzqulwLRJwbWntvcoiR2j5ZIOJs96kmdv58OmSvZJqU - qdgneboSOT+O7cEjNl/cPWzPiQ0m5hiI1FxSZKTOMRCJsWIRcwxFkjKRaV4TB+EhTyDi6UTfmGQ0JUis - dn6HuGjQpxE7sQdkcriROJfjoIhXvtFdKUffleqbXSXMrWksw2AUXeYiw2gFHifZNPdSle4eREE7smTQ - NDbqrzeM+2sosli3X9ZTj+yQpmRELH1hpy32ooNatkB0xgwyxAci6FtGleLokuN4xkXcH1biZf8WMVvT - QNSYdliOaoflG7TDclQ7LN+gHZaj2mFptJ9dakf+MstEiPoG2efrxseP6YTguhHx3yrwcMTo3o8c7v2k - UhIXUBoY6kuuFxOmU6O4t93Mnatuadw+51/1HLzqVSoFp6PWcZCR0ywgbQBl13eDgU2cMz5gHPLrWeSY - ADYPRNgI+vyJweFG8lyvB4NufUAZw6ox1Me91BOLm5uX4gRtAQPEAxG6F5TJ5o7DjbzkMGHAzZqpQWZp - SMeImxDiSq6/sHSKQ42MGvUIYk5mG2CwmHnOvdo5drXnzDQ9R9P0nJum53iankek6XkwTc+5aXoeStM6 - l/o+0wuZaScXBC1wtKRKn7nP2jFHKBLrmTuiAOIwOiNgP4R+dp5HAta2M05Wthjq41XkBguYd5nq9xUP - MZ0SXwHE4cwdwvOGeuIvtiwDjlAkfln2FUCc4+QN2X4EA05embFoyN7sNNh8i15eTBh3tznDlbc0bm+y - gytvYMAtua2axFs1GdGqyWCrJrmtmsRbNfkmrZoc2ao1J54QnztbIOTkzCIgcwjNgJp1/51I0Po34xd7 - z+ybP7NSD0k54ml2Ngb4nsgvWhoY6uPlh8Hi5kqs9SseXHmHD/qjfoHpsCOx3hhG3hXmvCUMvx98/Ctx - 0Z6B+T76i2zYO8bMN3fRd3Z5b+ti7+n2fyemngVCTnoK4u/76qMW2p3wkjTPUlJ3wmV984a8f0JPOTa9 - 828qZHJ+cZmsV2t9flDTSpHkmGRkrCTb7VXfI6PuDztKOHwN+qymN/jFnSYUb71LVvlB1GVJey0Yt4yN - lly+TbzkciDijrzLKqIIxamr5HGXHlOdH8z2BCI+rHfsKIoNm9VQqtg0W4nGxOgtA9FkxE3W8QMR1F1w - fhEVozGMiPI+Osp7LMrvF/xcb1nErOuJ6JrWlYyMFV3ThoSha3iDOxbwBCJy865jw+bIO9azDESTEZkV - vmOP3+DfsZZhRJT30VGgO3b9mKr/XbxL9mX+ev7+3QdyFM8ARNmoKxEb8T7u9gUtY6NF3cCDRuAqXuKT - 9mUwbU/9KJr7hCG+umL56gr2CcJ5KDYG+8hVFNqfaD8ot6zrUxjgU00YJz9aDPEx8qPFYB8nP1oM9nHy - A27p2w84+dFivq9rd6m+DkN89PzoMNjHyI8Og32M/EBa7/YDRn50mO1b5elPcbEi9mN6yrYxXjEF3y3V - lTuxhHSI7yHmZIcAHtqS/Q4BPe8ZovewiZNMRw4xchKs40Aj8xL9K9QbThSHnDSRd2Rsk35+3c5KrV6L - dEfKWJcNmGlPwB3U97ZzXrwrNtmAmX7FBop7y9W/uV6F2t7HVDbV2WNabZ7TipQSLuuY9z8Ft0PjsoiZ - 0RS4LGCO6tbCBiBK+0YKeczrsoD5pT2dPCaAr7Dj7NJK/TnvilWS5g9lldWPpJzAHHAk5uIHAEf8rCUP - Pu3YN6TtxNXXXf4Djf/g8c1ojihpGNu0V79UROU3bICiMPPag0E3K59d1jZX64vkt3fUhrmnfBtDBXh+ - ozmcskctN36ZaeYRts1GoN0eYutKv9hw2G6zF6oaFXkxLy5+I8oV4Vto1SZUS3ZPft4oBUIqL+77S2oa - KMKzfKDN/LUEZEnoqdlRtk1PSukZqua1gF1KuklcFjZ39ZNeNlBtOHpLAMdoPzt+Ux72egNSwYqGqLC4 - zaGujHfdYIMR5a/l9PZ6et1s8vR9MfljSlsvD+NBP2HJAAQH3ZS1myDd2z/P7hekF9RPAOBICFvoWJDv - OuQioYx8XM4x/jqI6rVv1ZvzeA+SJIcVTpzmOOJ1eSgIT5I90HFKUT1la/0izCZbp3VZJelWfStZp+MH - x4OiwZgrsdXHIr9BUMPkRH0SlSScV2syvemP6e10PrlJbiffpgvSbe6TmHX8ze1ymJFwS3sg7KS8hedy - iJGwv4zLIUZu9gRyp31xptQH9d4SKpCAIhTnKc0PETEaHPHzChlaxrhFLFDCmuXXLGdDIlZ5SvyCm3+2 - IhSHn38ykH+L75+W8ymveJssbqYXjp7ErYwiYqC998vX69GnEOnv2qTe8j4tNhRBh3ieukrXNVHUMIbp - 2+RqtEF91yY5O3y6HGYcXxu7HGQk7OxpQYiLsMTV5QAj5UayIMCl55vH73vgYICPsvzbggAX4QY0GcBE - 2s/SphwbaTl1TziWGTWVZn4KEZdOm4xjoi2YNhDHQ3n34wQYjvlioV/JT8ffySfCsYiCamkIx3LcZpsy - AemBjpM/hY3gjp87cQrCrrvMX9+rm1WNMmqa1wBB5+6QM4SK6m2zxeK7+mpyPVssk/u72e2SVE8ieNA/ - /h4G4aCbUPfBdG//+uPTdE67sQzE9ZBuLQMBPbqDobulufpnXREa3ZDDjcS5jX0yZI38GUGVGzfiGRsq - QGOQqxGMdyOwnx0hOOJnXj9eD3aft59sq3JHfRUYFfQxvl2PfhygvmpxtO7JCbAdlM7J8fu2YVmpnvq2 - rHYUzQmyXbTOSU+Ylg/j8Q8WR03PD356fiCm5wcvPT9w0vMDnJ4fyOn5wU/P6fLL3TXlddqe8CyHgu5p - mN7UTEBc3d0ulvOJavwWyfpRjD/wEqYDdkqvAoQD7vEFBUADXkJvAmINs/rkMy0JToRraXYNFuuaMMnt - gaCzrghPzFzONebl+EP1egKyJKuspJs05doo2XkEDMd0ubia3E+Txf1XNQgjZaaPol5CWXZB1En54R4J - W2fJ6uNvuqtLeOyH8aEI7W4R/Agtj0XgZuIskIez5q5QXRVC/wnjsQi8QjJDy8iMW0RmoRIiI9NBDqYD - ZWMPn8SstE0qINYw3y1nV1P1VVpZsyjIRigBBgOZKDlvQr3r7tN/J+uVvCCsBTYQx0OblDYQx7OjOXYu - Tzr+qSdsy4b2Szbur1D/sdFFNdvoRQOS4nJQ1Lt6jVF3tG1vnkqqzm9KkZ4gz6U6rpvxnV0Lsl056UDy - nnAsBbWgt4RtUX+4WK9WFE2H+J68oGrywrcQVtwbiO+R5KuRztUoLTWJO8T31C811aMQ2yPJOS6BHFda - qqZDfA8xrzrE8NxPb/WX9L4oaZ73K5Jksi6L8fdaWAPEk81De3qAjvONegVQuab6Wgqw0R6yOhjiI7QB - Ngb7KlJPwicBq8qr7IFsbCjAtj+ohqE5XZms7FHfy/nV8O/V84cvG9V+1XTfkfStutHJ0vcXhHl+AAW8 - uzrbkX95S2E2dcf+m2fUJGrdZNstU6tR3/uYysf3F1RlS/m2LomTe6rwBAJO/Wi42VS7JFt7FPDKNC8O - O7KzxWDf/jHl+BQG+Vg3UIdBPrlP14LuazDI98K8QOz+zh+TjchFTb7GEwg7y6blrB442iMLmjkVZoeB - vkw1cVXNMLYg6CQMPm0Kth12apArxm9fC7GguRJ1lYknTnoe0aCX8rANwQF/Mw96yPI6K7p17fSUARx+ - pB2rF7ZDemHt30lrogAU8Irdht4paSnfVpTMjtMJ9J37UmYvSV0mNbnmN1DfWwlWBnWY75NirQ/t4XdH - PQEag1e0LBhw/1RVstiTFixCLGLmtBInMOBMsi1bq9iQeT9+NxQQht30u62lQJuedmLoNAb7OOX2J1Za - fzLbxxMIO2UiSS/OQSxoZrS8LYXZSBttACjspXeBWwq07UtOeVQUZmsKA2E1KUzD9oN85GgVBvoIK3lt - CrM1B2NtD8Wapz3hsP8x27KuV3OwsWTdmxoDfaSXPlwONP4tqpIh1Bjgq6t1qlrBHb3En0jQyqnTGwq0 - 6aE6Q6cx0Jev05rh0xjiY3QQWgz0FfxMKUK5UvCypcDypSAcIulgvk9P8DyQ6/GWAmw73ctturtkZY8C - 3jIvnwW5F9Rhvu+JO9n9hM92nz5SfYZ2vStbfjL4Uf5mdbn/dvvayy/TOfkFTZuCbIRBocFAJkoXyIQM - 114U8AOQ0WLUgEdpt/xih+hw3N/utMD2d7jvJ76a7WCoj9RJ9NHeez/9lkwWt+fNi/RjjRaEuChL2DwQ - cD6rEiLIwobCbKxLPJG29a8P735PZref78gJaZMhK/V6fdq2r15rIVlmm7St6j+bZ42rdPzKWpdzjGXy - qEKNb6csyHbpx05655Or2b2q3ZrUoVgB3PZTc9/P8yZVr7/QziTzQMi5mNy3LxB8HT/xCtOwPbn//olw - vBeAwl5uUhxJwDq9ikgKEwbd3IQ4kYD1/uvV4p9kY0MhtkuW7RKzqa/P/my2y6HeVJgDisRLWDxV+aUg - WAbmUffafOBe0583rwVx5UcYdnNTeR66j3VjRDZqCHElk+9/sXwaxJxX8xueU4GYcz79F8+pQMBJbKnh - Nvr4V347Y8KYO+oe8Ax4FG55tXHcH5NEgTZIfx7VDrkCNEZMAoXaJP05r106kQHrJdt6GbJGtlOIB4vI - T/hwqseVmsEyM4++d+cj7t2odswV4DFicmE+VD+w2rUjGHCy2jcTDrk57ZwJh9yc9s6EbTd52A+M+Nsh - O6eps0nQyr1RABzxM4qvyyJmdoLArVr7IbdJ82nYzk4OpCVrPyQ3YwaG+S55vkvUF5OwjmBEjISwcj8o - QWPxm2JUAsZiFphAaYnJiGAezOPqk/lQfcJtcn0asbNTex6srajNbE9hNmoDa5Ooldi02iRqJTaqNhmy - JrfT/8M3axqyEwepyJz66c8RbTc+TjU+j7vnBkaq1pfYd0dorGp9IyqhQu16zHAVNuBRopIp2M6zhqwO - GvJe8r2XQW9swo9o/4Gv8foAiCgYM7YvMGpcbnw1ooANlK7YjBrMo3l8fTUfU1/F9RXC43PrO1G5MR+s - FXl9B3iMbn/G60Pgo3Tnc1ZfAh+nO5+z+hQDI3Xrc17fwjUYUdTtfX6R3H+a6nUXo80W5dlomx5YkOei - LPoxEM+jnzLrDf7SYpOsRTV+WQrGexGabeuI1obxTO3mH5RDWzzQcSbf/vh8TpI1hG35oDL86/Xni4Sy - DbUHBpzJ4svknC1uaNe+X4kLvT2Qfj2S9CYQgoN+UUT5Tdz2/zNZHYpNLnS9QyqwFog4dSnOtvogDMFz - mwIkRpU+x8dxJW4sahXxT6CG+Gdzg9OT+UhBNl3/8oxHErPykxQyQFHiIgzZ44oFZHCjUHZ06gnXUr/u - hX7/hbIJjU+i1maBI9PbsJi5q1HEhic/4bj/SeTlnu/vcMyv84Irb9mweVJspnE/wffYEZ0hE7mOgvhw - BFrT49NhO2GNM4K7/q5VpVk7yHV1BZbm6iDXddw9+XQTcPZJHqFy47a7Hr9B1IDIiHl3M7v6QS+aNgb6 - CAXRhEAXpdhZlGv71/fJDfPXWijqpf5qA0Sd5F9vkq6VvYsuggf91NRA99IFPianCr6fbvf5t8n9vSbp - l22QmJWT1iaKerkXG7pWetoaZG+dT26vk+4dibE+k3FM6i8ifSWJWsTxEGY4jt93DM0ifZKjISBLezSt - Ph1U76SsD/cmdDIHNE484vZhJuOYNplMV2pIti2rn8mhkOlWqFHadisoez4Pm5yo4oGWb+r7rqF4o8sO - iZyY24x4bqhNObZ20FNskp2oH0taejgsYJavsha746EX+ucl64Osm/MRiCk0rHPiN1vD6J9NCnOiHNu+ - HL97wAlwHVIcNiXjZjdBxymFoGWaBjwHvwzIYBmgnUFrIIbnavS5GeqrFtdcHKGfayCGx3z8QtkyxANt - 5/FZC1Vpcpbx/ybn7y5+05sg6ZMCk/Tp5YLgBWjLntwvFsn9ZD75RuvlASjqHd/z8EDUSeh5+KRt1S+Q - 7n+u5bmqbQTh8HiItc2rbPxzg+P3HUOuDx8uHpLx7686mO1rjstQ9eCedF09Bdkod6IJ2S7i+N5AXM82 - PeQ1tc7zSNtKnDEwENuzzdMHUtI3gOMg3qb+vekcYUWROWjASy1kHuy663fJuqoT2uoaAAW8G7JuA1l2 - +3O6SEGg6xfH9QtyCbJIAJZtuq7Lip7wHQcYs1+7PVmnIcBFrISODGAqyJ4CsNB/GPSr9lJyy3uPAt5f - ZN0vz6LuftoY1MZAn96US7Vc1CrJZm1zJpNyn/46kG6CE2S7Ik7zQ3DETz4JD6ZtO7HL5PWTdALTW9We - wmx6Z0rBUzao72Xmj4MGvUmeVg+Cft2AIhxHb9tZ1TFhWsNgFBEZA/odrHJskyErOxM8gx1lr+fHVO9Z - 9+7b1S13k+l9snvYktrkgGYonh6vxIc7WoaiNU8pI2O1DjxSURaCG0GzsLkdTLxBHoGi4Zj8lPMtbjTm - masgDLpZdyd+2mrzqd7ki6TTgOdoLpsxInRQ2MsYyzko7G3GLfqMWNpEIGrAo9RlXIy6BCO0ecpJdosE - rZxEt0jQGpHkkACNwUpwH7f9kj+ilaERrWSO1iQ6WpOMEZYER1iSN26Q2LiBsm7r+H3f0AyWqC2HBQLO - Kn0m6xTjmv4WNMvfTkupil1Nn3bqKdt22FNOEu4J20I76bAnIEtEhwkUgDE45cNBQS+xjPRUb6OsgbZX - POt/0Y7M7gnHQjk0+wQ4DvKx2Tbl2GgHZxuI5bm4+I2gUN92aXL6nhjPREzjI+J5yCnTQ7brw0eK5MNH - l6anzZHxTNS06RDPwymDFocbP+Xl+qfkelvas9Pz8gRZrveXlHKuvu3S5Lw8MZ6JmJdHxPOQ06aHLNeH - 8wuCRH3bpRPandIRkIWcyhYHGompbWKgj5zqNug5Ob8Y/rWMXwr+Sk4dYXGekZVmXnrN7r9MFl8SQot1 - IgzL/eTr9CK5Wv5FeszoYKCPMP1sU57t9KRwJx+IShP1vPuqXAvdXSNrDdKwkpYhuisQ239TN6+2qd62 - nH9fLJPl3dfpbXJ1M5veLpuJNcKYDjcEo6zEQ1bo8/IOaTH+nL1BESFmUqrUSHYqe9KHt7sAyzriaiqx - Ebt9TcjKEapgXPX3TD6+RdI7pjFR3+Tneq5wZEJ9heBBP6H+gumgXc9wyKqKvCMNCxxttlh8n85j7n3b - EIzCzREDD/p1gYwJ0PDBCMw87+mgXRdssYsI0ApGxIiuA3FbMLoujztRp3riLrLAuarBuBF3k2+Boym2 - /Q9uSbcEcIyNWJeb/lnOMQk40RAVFld9zXgkIcW6Gn+W17AJjipe9urbO1HUydM5J5glGI6hum67VWyc - RjIm1lO5r7bx0RoNHI9bEPHyZy7L45hNHo7ArGTR2nUvdd5zM7ang3Z2Vpp8H+H7Yjq/vVvOrmjHFjkY - 6Bs/6rUg0EXIKpvqbX9dfPhwPnovoPbbLq3L0j7NKprlSHm27kldUzl1lSPRDBiMKB/e/f7n+2T611Jv - 0tAuaNAn8Y6OgfBgBL1jT0wEiwcjEN6KsynMlqR5lkqes2VRMzcVBlOg/TSRP2PkCgf9m4uMoVUUaKPU - Jw4G+h7G9wJsCrNRNrjzSdCaXXCMigJt3FKEl6A2+3m/+8SCZtICHJfDjcl2z5Uq1PN2J+21nUHKLAHG - exHUTXbOKAZHDPLpV9iKTVrpN6lqUegJNknXQxYwGumkV5fDjcmqLHOutoEDbnrZs1jPrMN1+VxT3r1F - cM/f3EqMCvLEecY+U1m3oot7fl3r0duHjgJtvDvQIEEru6zZcMBNT1yL9cztwsY8k1RtD3rO5sDp+oUo - 7CjQxmmLTpxtTCY3f9zNE8KxwDYF2ghvvdoUaKPemgYG+vSrLAyfxkBfVjNsWQ26CGMrmwJtkvdLJfZL - m+m3Dc+oQNe5XM5nn74vp6omPRTERLRZ3EzaVRSEB9zJ6jW5nV1HhegcIyLdffrv6EjKMSJS/VJHR1IO - NBK5jjBJ1EqvKywU9bZvVhKmXDE+HKFc/Vs1pzExWkM4in7TICaG5tEIGffyM/yqybWiSaJWVSmdx+Tp - iQ9HiMpTw+BEuZrOl3rjanqRt0jMSsxGg8OM1Ew0QcxJ7l07qOud3X5mpOeRgmzUdGwZyEROvw5yXfMb - +u6SPolZqb+35zAj+XcbIOBUY813SSWeyp9iQ/aaMOw+16M36pyDB8Nu/SlHqznASO3zdwxg2ohc6Bej - GJfXo5CXtNmtg0G+A/0X+70N/VfWzYPcN02bqnpLemtistOEA24pqizN2fYWx/y8mTCIxyLkqaxpCyQx - HotQqIuIidDzWAT9bk9aHypmgBMO+5P59M+7r9NrjvzIImbObd1xuJEzbPLxsJ86WPLxsH9dZXW25t1W - riMQiT469uiAnTiP6LKIuVlVVbHELYp44yqCwXogshoYrAX6u5j63Ac2IFGI64UhFjAzunZgr26X1utH - sqqhABunewj3DBmDiSOF2YhPzCwQcDajwYhbwOGxCBE3gcNjEfpCnOYPJS+K7RiORH6UhkrgWF3FRdq9 - FeORCNz7Wgbva8rr0xaEuKgPOywQcpaMfrGGABft1WUHA3y0l5gdzPFN/1pObxezu9sFtaq1SMwaMV+N - OEZEonbBEAcaiTqis0jUSh7d2SjqbY654XQaYUUwDnli08eDfsa0JiRAY3BvgdAdQO0rWCRqlfG5Ksfk - qozLVTmUqzI2VyWWq7z5Rmyu8ebu7uv3+2Zia5PRxhg2CnvXdZVzpJqDjZR9yl0OMVLT0uBg42MqH7nJ - eWRhM3mrdhB23M3ar+ntcj6bkltLh8XMPyIaTEwyJha1ycQkY2JRH/JiEjwWtYG2UdxLvgMcFjezGk+A - D0dgVLSgAY+Sse2he4LahNoo7pWCfblS1EFvVG7KwdyU0bkpg7k5u11O57eTG1aGGjDkbh4OFXX1Sjef - 0KCXXXm6hsEorGrTNQxGYVWYrgGKQn0Yd4Qg1/GZGi9jTRq00x/KGRxo5LQRSOvQpjN9ytyFITevzcFa - m3ZJEHGS3CIRKzfjTyjmbTbWZt/RrmEwCuuOdg1YlJr5DAoSDMVg/5AafRLVfEX3u+liTWG2pMw3PKMm - ISun0YLbKlbPA+lzlIXIs4JxM3cg5KQ/Pugx1Ec4mMMnQ1bqkwkXhtysPpzfe1OlfXpFf2XN5HCjfmuj - VrWc5KpPAjhGUzfrP3D8Jxh109duOixspt5bPeb47r9/0uf3kvPO4GAj8YVDA0N975jCd7ix3YqX623p - kJ28WXdAAcfJWMmcIalMLVc9BvskrxRIrBTIqDyTeJ7N7+8WU04h60Hc2azIIj9mhASBGMTlCTYa8NbV - QdZsdUM7dv22Om+G2SIxK/GOMDjMSL0rTBBwNgtH07quyNITGbJyesmQYCgGtZcMCYZiUIfvkACOwV0E - 6eODfvLSIVgBxGmPo2AcN4EbgCjdBAOrxBosZKZPTfQY5CNOTHQMYDolPSvzLBqwsyo+pM479hI4uW+w - mJm3CtbHYf95InZplnPcHQp7eYX1CAac3MrV4QcicKpWhw9FoM+2+Tjij6hVbRzx8wt6sJxHrPMEDViU - Q/PUgL7kDBIgMThrzhwWMDM6VWB/itOVgntR9OmbE4XZqJM3Jog6t3umcwu1S7GrMRHHcCT6akxMAsfi - 3tkydGfL2HtODt9zMuKek8F7jrzO8wghLvI6TxMEnIy1lD3m+Zo3Wvhv5EECPAb5HRmHRczM9+p8HPOT - +7cnDjEyeqI9iDhj3jFDHKFI+vXOdar3tLmmroAPeEIR27frbg+7laj48UwLHo1dmOA3upxPed1ZSDEc - h96phRTDcVhLOwOegYiczjRgGIhCfesL4JEIGe/iM+yK6T28E4cYdSv5Bje5rwnEi77FXYkTazH7g173 - HiHARZ65PkKwa8dx7QAXsXS1COChlqqOcU3Lu/m0OaFknYu0ILamHo3a6Tlroai3aTfIr50D/ECExzQr - okJowUCMQ1XpnbHXxMXbuCYcj/7QCBIMxmiuhdjNRi3haLIuKxETqBGEY6iGST/AIe68gUlCsc6bcin5 - cTrBQIy4kn0+XLLPdVGM+xmKD0dgvKwNGkJRmkeOB/oyWUwSjBWZLcO50tcTUZWnpQnGE1VVRuRQyw9H - UEPGff0YG6e1hKO90Fdlg4ahKKrRbtcDxoU6adB4WZFxS0JWZHjuk3sqJolau7Oj2TXLiQ9HiGkl5XAr - 2Xylawz0lsrrnzGxLFEoZlT9Igfrl+aVA7FND3kdEaMzDETh3+0nPhghpt6Sg/WWjK5J5IiaRH+HdHY2 - xgcj7A/VvpQiIkZnCEaps11MCI0P+hN1FdlLZJRWEo5FXkkE8MEI3VHb61VElJMDjfQWFdhw3aVnmpm9 - lSOKe1mDro5ErXlZ/mQNqXsYdDNH0+hI2th3lVNFmDju57akA2PNh35/Uea1nwevvXl/N+/myDgRbAEY - g9dDwnpHzSNGbmr3MObuVkjx7hiLRyN0Lb+6jvpRMqNYjkAkXv8h3HeIaW/Dba3+tN1Ag5v6HY3a+a34 - UAse0+KFW7vYlm64lWPsumOCjvPPCWP/zSMEuIjjtj+ht2n1H6n1UMe4pul89vlHcj+ZT761+83uyzxb - 056LY5KBWOfJY0ksYLAiFEdPdleMGxyThGLRi4lLh+wPrCoQVgzFiUyvB6RetL6UFY/qNo7I/04QisHo - 1AF8KAL5NnTgkFu373y5pofsjAWsiGMwUty9flIMxsn2kVGy/YgYSSrX0XG0ZDBWU5VmQkZGO2oG4sXW - MHJMDSPjaxg5pobRX9Jl5g1inTRD8ThdMkwyFIs8vQIaxkRhTLIEPIMRyR1PWOHEYa/OC6zKaz6qRLPE - krEti49D/ubHsPUm7dvJK7TgNYTNmaj0dRw9BvrIDWCPOb5mDpwzMjBBz6nHxulP4pL7HgN965RhW6eg - i966GxxoJLfiPQb6iK31EUJc5FbZBGGnftTMyd8WBJ3cN96G3nbrPmc0QBYJWulVssG5RuLmQ/6+Q+ov - p4fZ5EbQhQE3yxlwMZpPG3W8zJXa6AptxpuM4FuM1BXe/srupuahD6R7zPGp/9rodRzdbtep+hfjcBLU - gkTjLD1xWNdMTREgLZrJ+fRQP5Zq1PzKWYcDGsJRVDVFfbkfNISjMPIUNEBRmO8ChN8BaE9xKevJtubk - wZFErJ/Elrq6zkYhL+MVJ/wNXeOTZJXVsq644g6H/Oxl0ENvOES8Wxx8r7j9sHtji3vn2DwUoV5JfQlp - /kC39yxkPmQbxl2iKd/GmZxC36xuHx2u5Z6u05RvS4ytWahOkwXMx6dh+iF4klYiJfs9w1AU6lbMkGBE - jEQUT9FxtGQoFnkDaNAwJkr8TzpaAtGOff6YbDIcQCTOuiZ8XWTUasiBNZCct8rgt8ki3iILvj0W8dZY - 8G2x2LfEht8O478VFnobjPsWGP7212mzhY3YNO3cQaYPgiN3FFicZjcU+jQywAMRuCf5PARP8dGf8pMm - lCLcbmug18rvtIb6rM16klwUZGfHQUZWJxjtA0d1UQd6qBG7ggztCBK1G8jATiDcXUDwHUD0y33sQrsL - lNodv9ju8HK7a6Z90s2/ac4T5vgyqTeuyDbdcwBiSfBoz36qf8jzeg4bMJO3HnbhATd5I2JI4MagNaDe - OgZVX6hkJz9R6THQR36i0mOOr1kq2XRg11VO73D7OOqPcKNe/iXDV0tdBuKv/NinlRTJtip3yeqw3RJr - Ko927c2CrHZSniY2QNdJ3sMI2r+ItXcRsm8Rd7tpfKdp1i5IyA5I3XwVY7LdIh1r9/S4WaJGkpqg42zP - 1eS0mBaJWBktpo1C3ohdpYZ3lIreTWrETlLct4vwd4piTgkNnxAquaMAiY8CJHsUIAOjAObeXOi+XFG7 - awzsqhG139fAXl/cfb7wPb7I+3sBe3ux9vVC9vTq767NgdgRtVHUS2/vHNY1G9lF7jy7cMhN7j579JCd - 3IEGDV6U/b6s9HtmpzkUYgyPdyKwRlrIOOv4Z2pXxuBcYzPkojfsBucYGeufwJVPjL3zwH3zju9xUF8U - NDjc2O0OIGt16z1w9ZbEjvX0nrN+rqc8G29VhwV6TsZseU9hNsaMuQeH3MRZcw8OuTkz57ABjUKePXfZ - 3pxeZMnsXgnm08VirNKCEFdye8XSKc4wrrKkViOSZKUGxofiWa9gqcVOVbrp+BPBgpJwrOeqLB5U9fSQ - SUJHdNgERF3n5Ur12JLq/B05jsEGzecR5vOg+SLCfBE0v48wvw+af4sw/xY0f4gwfwiZL/niy5D3d773 - 95A3feGL05eQebXnm1f7oDnimlfBa15HmNdB8ybjmzdZ0BxxzZvgNcuIa5aha37Z7fhVqIbD7vMY9/mA - O+rCz4euPO7Sh679Isp+MWB/H2V/P2D/Lcr+24D9Q5T9Q9gelewDqR6V6ANpHpXkAykeleAD6f0xxv0x - 7P5njPufYfdljPsy7P49xg31IJrDVFS3uX0vfpNVYl0fV7iQY4VkQOzmDdO4iL4CiFNX6U4//Bp/biuA - At5uxFGJ+lAVZLVF43ZZp+OnVEA45C73fHVp9u6EPL+4fFjvZPaUqH8kP0cvrwLQoDcRxTp5OY/QdwYk - ykasWW7FIUaxXjUhV3k5/pEtbsCiqM938iF5+Y0X4oQP+S/j/JeI/+dmyxIrzjJefPjILYcuGvTSyyFi - QKLQyqHFIUZuOUQMWBROOYTwIf9lnP8S8dPKocVZxmRdV037RHhi6WC27/E5Wa/W+gdUr/uaorRJ31pX - 7y+On7Z5K6l6QOHFUSWTceUd5dm6ssgwGqRv5RkRW7uHRpsoxGLg06D9mOQ8u0Hb9qLklzaXhcyRJQ6V - ALEYpc7kACM3TfD0iCgnEI9EYJYViLcidBXgY52ucvGRtKE1TOP2KPmQW3X0X5/GP0/CeChC91HyWFYF - 4fkGwlsRiixRX2IUcxuEnPSCboOGUxbn+vXO7vFrkoviYfzmRDDt2Ddlkm5WJGWLOB7dQaC8o21BgItU - Yk0IcFWCdNiGywFGmT7RdRryXeVG5w1pkQOAOt4Hocp7mmd/i02zvKIuk/GHAuEGL4reH7XM1kJVdLlY - 12VFjOHxQIRtJvJNsq/p7hMJWLt7oq2CtmXVjNIJ6yQGRU7MTLZLoPTXSDFM0HFWYts8LteVUTOD1Mw0 - /C2qkhQB12DxdLNWFoIXpYMdt4wsS3KwLNWve0E9OMoDIadsT+OpqKXHhSF3s1A2SVUZKFUZEBU9gGtw - ohzqNbOGsMjeuhLikOzKjaqM9bpJfQEVZTsZjDciZGU3VypV55V66gFM23b1p6JM5GN5yJupxvGLOWDa - tuvdltRdppfm6cTrLkP/Kd1sSL8jbLKj6g/pKdVTvk2vOlb/TdV1GOjjJjmAG/4iSfWmDYdVsi4LWZNK - I8Da5s0meS6r8bs+mIxtkrJ9Y6eWquwnq9dakKQAbvlX2YPqNGyytNBlhXrNAG3Z1+X+lSztIcu1UV13 - Tk5ZnGUUL3t1VxBULWA5jilL/ZEWZxv120q7sqgfyp2oXhO5S/OcYoZ4K8JDWj+K6gPB2RGWRV18lRYP - gvzTbdB2ynZoou5astVBXW8l8rTOnkT+qntOpBIE0Jb93+m6XGUEYQtYjlyN9Dil2+Jso5AyqR/VrWkU - hjlFDQqQGNTsckjLusvyvFlMtcoK0pAPYgNm1e9pTrRg648CJ0aRqVsuec4240flLmcby017TgujfHgs - aKbmnsV5RlVNNkWGXHX5sOfu+n/v2tuQHwb1YBHZqe/xaARqveSxqFmKdSXqqACmwouTy8dsq4+5ZKaR - xyMRIgME/LtDHtPoYgovDre/6bGgmXMfnzjPeDj/yL5Wi3XM7UG41FE3gMJeaothcrBRdyrmc2ZaIA4/ - UvGO6i3e2ZZD/ttL8wlFdIJcF69lMDnPuC53q/Q3oq6FYNclx3UJuBg5a3KekZ4LcB40+UzvsLso7NVP - ozhSzXlGcpV5ZDwTp8yB5e2FdTu8QPdDqcp00byerIcD5eopKw9SjQZUgdJbEdeUkjPosiMXzWxa37JQ - IrmsZd6Xz7RS1QKWo9LzSrxxoIv63q7P0XyHKjZZ2yw2h7VQSbMmOXsKs+mB7T5PudoT7vhl9jcjbQ3M - 9nU9LbLQ5ADjMb2bf5C9Fg3ZeZcLXK1cp3VNK/VHxPY0jxPI12Vijq9mjxw91jPLWo1T14yrtVHPyxEC - pl/Vpe5+qUQuUkoTYoOAk1j595Drovdcegh2XXJcl4CL3nOxOM9IbcdPjGcil44j45pe2MXjBS0fjNES - PFKy2ldy6gG0ZT9wJ34O+KzPgTsIPeAj0GfyZPozMJvepK5Ok/7BAsXo04a91E9Tpcx1Hbxtn2Y/7tK1 - anPSiw+j348Z0ITjxYcaGeXD+PfacEMfZX2RJZPF7XnyabZMFkutGKsHUMA7u11O/5jOydKOA4x3n/57 - erUkC1vM8D2m6n8XzdGdr+fv331Iyv34nVNhOmSXYnwNB9OGXS8bK5s1ZOtcj5FEoZeLjL5HMb6PsNHJ - dnWlN0C4ni6u5rP75ezudqwfph07r9RtQqWu//DbPVd7JCHr3d3NdHJLd7YcYJzefv82nU+W02uytEcB - 7x/TW/XZzez/Tq+Xs29Tstzh8QjMVLZowD6bfGCaTyRkpdVFG7QuOn1y+/3mhqzTEOCi1WsbrF7rP7ha - Ttl3lwkD7nv19+Xk0w29ZJ3IkJV50Q4PRFhM//V9ens1TSa3P8h6EwbdS6Z2iRiXH8+ZKXEiISunQkBq - geWPe4ZLQYDr++3sz+l8wa5THB6KsLxi/fiOA42fL7mXe0IB75+zxYx/H1i0Y/++/KLA5Q9VqX2+6xpp - UgBIgMX4Ov0xu+bZG9TxHuryvj3U4+v4dzN80rZ+mixmV8nV3a1KromqP0ip4cG2+2o6X84+z65UK31/ - dzO7mk1JdgB3/POb5Hq2WCb3d9Qrd1Dbe/1ln1bpTlKERwY2JYSFgy7nGGdz1d7dzX/Qbw4Hdb2L+5vJ - j+X0ryXNecI8X5e4RF1HYbbkdkKrwhzU8S4mvFvKAgNOcsa7cMg9fptqiPXNh1WerRkJceQ8I/G8LJvC - bIwkNUjUSk7MHvSdi9kfVJtCPA+jGjpCtmt6xbiqE+S67nUEUYtK0nQ95xlZN6HJ4UZqeXHZgJlWZhzU - 9TJulhOEuOg/Hb1T+o+oPxq7T1STMb29nl7rvk7yfTH5g1St+7Rt74bY5ObC5HDjgqt0ehqzxeK7Ipit - pU/b9tvpcnE1uZ8mi/uvkyuK2SZx64wrnTnOu+VMdfemn0m+I2S77r9eLcbPEvcEZKHeQD0F2mi3zgny - Xf+kev4JODg/7p/wb7vkV7cAHvbTE/EyUO82n+upkz+bmkSP6sh6Gx/0s1LIVwzHYaSUZ4CisK4fuWLO - NXpXpUeHP8hZd6Ig27++T254xiPpWMmNO9Sy85p1rE1nNehIa87rwWH9t4jqJFSTsCuRQP3BGTQhI6Y5 - dzQ6x0ej85jR6Dw8Gp1HjEbnwdHonDkanaOjUfMTTjKYbMBMTwQD9bzJ/WKR3E/mk28LotYgASu5Lpoj - o/I5e1Q+D4zK59xR+RwflX9fTOdth5Ei7Cnbpnfxp3j0931DMrn5425O9bQUZFsu57NP35dTuvFIQtbv - f9F93/8CTHo+l6U7gpBTtbR0n4Ig1/yGrprfwCZyT9ICESfxHjM5xEi7vwwM8DVD8gVxnYRNhqwLvnYB - eKkTAycIcNErVAMDfPPpv/5fa+fX5KiNRfH3/Sb7Nk1PZ5LHbG0lldrUZsuTmlcKG2xTxsAg3H/m068k - bIOkewXn4reuhvM7IJAQsjiCYVpDk2R34k3IMCV34lXHEAV34iAjed/++g82qWSqI4jg0OlNQ5C+/Yq3 - MlpDkCTXgC5/Qdk75X4c1gtNrz9a7bPl611SWpfcnNtLX9gVytssN8u3m7iR25Q+xCdOmriqLLWZL+di - +XR1R+SyhhMEAvUc0cgqdunvv10/ItbHv5TmyWhevq0kPC2jefuiKs7mm2cJ9S6OsYfFb5HYkBgj5nS+ - VHILLY6xh+9k5PhBH3NQ3zs5XotjbDMled0VuBFoF/Platp2ham6Eo+pnnYQXlv2qprppNtMFUKo1cbI - /e4oR2sxz15RzBN5hG/fdNedwpQRONWl6s3qhbsmL8y3TVXWmeQU9ObkMIGfKs9tZRfjTN/1w6Xp8rLO - evTKMxTObWXbx1DibsJaTjI4p0PXXNohIvHSvQoL0YPEvdQjvNScl02Z6GUWg5YlqzQzLdzeNHIfQgeH - EXFq6jVlNQFwHjauzyZkySxGfdwByVDg9HEHc0vou33dhSFRUV+VFt8vWbXC7kpwXLK9+eua65TVsAep - pxyG70dx8qCjiLrgbrY4diJ22ehrwVTjkLblob7YdtE2kADPUzLU4cklwg5Sh7viIRd9st3eyd7+++tv - CHMic3jDwwZ7ObprCBJ6v09UBE302I4+q4eNdXGAgVpDkXQ7baJw03OmTjhzqiboQIjuVEOQ4OZiKqN4 - ly0Ou2wJ0vCVpq5JMO+uZKii+4bsd5ke0rRKmrxcFM8yZp3glomHOF52WXl9vrafkbbJy0/p+zm/flma - KvV2ATznYTHv558/33Y3f67zJmALvV+eErt7mnfZvv/05SHH4EPJY7m+N3nHLvCnQUs9zbHKzz0OdI5B - OFDBjk/cO0z6MIYuCUANxTNs+KWcQzg+rRloBftKd41Lsr1h07qYVR0QnCMkmPaxeqlN+XeFUkUOwwMC - 4WKGLiSD1iyA8YBbVl8a5aLjWqR+zgG7D2lA3AOvpRxixseOVa2ysYQlLusLjh1Zu72Jgv2tqYzk9beG - Y3yuKwGfwhB+gv6TK3SZw/UXlIojdJgm26uxXWjbg4arMql3HK5XGns5GkUUy77ooEseMHKKL3phCrQs - GY+eYwGUR1m/flrl4QFIDwWtgBIIKaab94qjXT3lgL2wjiKKBf+C5ugoIlytHR1JhF4vRxHFEjRlnpKh - rrnkTBYjs4O5seWtBotyfYexU5Xtr8ObiJGvdcnDmOn6Sh7jRBwfUpTLiNOjMJMS8iZ9Lbpy/yHszvIM - 30mVhzp9K/ujeaLthqWmTnXzVqdZrd6KTmC8CDk9juG3wB/mhT97fU/uGYfAuySLYHzQhF1SzLChRtfV - MUTd41p3xFNAxMPk563yuAEYj6GrB3WMKPUcHX6Tj0CiXnlzAdZdYwGMx+0efhEZ3NUz9C+r6Fz9WnUn - EXdRnry8PP0i+FnIF4ZMfPjEF47MfZldf6e+2ubvyMwXRh7nK925X74KJU/wXOxQrOT4p0KOCcyVCoQj - 0wTLHewgom7zl/IcEcWyUXU4zcooHpKR7qoomlKqeMZxVubx9PH2cMndRBQLL7lRRvHgkrurKBpecqPM - 5dnRZLDgbhqCBBfbqCJoaKHdRQQLLrJRNdKOp3yPN7KuaqSVSSbNNCSkBBdM7/N1BBFL3PNkBA9LJPJk - U95Omo5JSAkuXJI7tiTzFSmhtNqjS8shj5VDLkwJDZUUFUsJ9XUEUVKj8liNylelhHJ63kFYykxK6H07 - nBIaKikqWjvyWO1AU0IdEcFC26yca7NyeUooKSbYcEpoqIxRhQfNpoTe95CkhJJikv23EPs3Q4RTQkMl - RZU0CEwrgKSEOiKCJUwJ5fSUA5YS6utIIpoSSkgJrigllFZ79DUpoSyA84BSQgmpyxXneZJil70iz5OR - e3xZnichdblonudUQ5OQby99nUeU5XkSUp8L53l6soAHJpS5Ko4GfYdNSD2uJEElEEaY8IXnE1TCzcs/ - w6W0IRlNUPF1ARH80N1VcTRBkZLJId42uDCp5JDbJuDz74kk4AiaoTDP0/wbzvN0RD4Lz/P0dQFRVAnp - PE9/C3q/8HmewVbsnmHzPIeNgspC5Hk6/8ZPna0pkjxPX+cRxXmetNqlS/I8fR1P/CpFej0NeZ4nrXbp - sjzPUMlT/5BC//CYaJ6nI3JZWJ7nqKAoaAWi8jwn/8eqDpHnefv3F5TzhWBITu4LfW6TxMw/6n0jIROI - eR+8QENC1GXlmcyexbozmD36uszXnsEVMe+z7kwGAuEiy1pl5LN8UWnFsla5nQSlFclaHfcRHT9zxJJj - DI4Kzlp1VRQNzVoNlR4V7nhRvS5Zl4vrb4k6W0xPS9a75vrWKxrHWLsobhIjraHkhZZ5m91IRwo2/EjB - Zs1IwSY+UrBZMVKwiY4UbIQjBRt2pECatUppI2S8EMis1etGQdZqqCSocFu0YUZMNuIRk01kxGQjHTHZ - 8CMmeNaqq3JpSNbqbf+QgGWtuiqKhmathkqKujwcdaohSGjWaiCkmEDWqiOiWJs/cdTmT5oE9ySZrFVn - E1jH6KxVZwtWv8isVWdDv1UioNYRRDi9NVTGqF/l2K8EFx0GItJb7//Gm2gyvfW+AUhvnWpokuzeDtNb - nU2SeztIb3W2CO5tP711sgFKb/V1BBEcKA/TW+//BdJbpxqCJLkGdPkLyp4sd0l7ErQlXSFuoDwpzTV3 - jZB7ldJcIdPjNeZHAbwz7cimPCWfAadiM+CUcK6XYud6qTXzqVR8PlUvm/vVc3O/XoW/Jryyvya8Sn9N - eOV+TTjZzyD+h2UVOKIJ619NV9YHvafutH/93vV/vy1ueyhtnPzn8oQORj7h/9UWtdlcZKqpv/Zm739n - fbbYgNFzDt+y6rL8y1pKGycjZUPLR/45/5xuq2Z3SnN9RuYzt2LxxyuUdkp+uW7N1FlEp/WjQzMsh4i2 - lJ5s5LWnnXpK0rIvuqwvm1ql2W5XtH0GfAYXYwRO5gOAw/KL6aoCWrst0qLedR8tFlDJyF3+F/vVoPn4 - tcjtxUDogdhnt1mnivRYZMD9ESpd6s/2jPLCnhECdYQT5nnbN6eiNoniT/rOLOvFH3oSUo67q8qi7u01 - xmMrFqA4X1185Wsx7qz06Re9zJhmcc76VjZ1pUCi7XkC79KnR/uxtvk+WzfgUisPw/mVSl2K7iHXkURx - vp2uCTIbo+SopurKqEbJUS/1ilp0FdPsRF4/kzTKfVj9TJD6mTywfiZQ/UxW189kQf1MHlM/k6X1M3lc - /UyQ+pmI62cSqZ+JuH4mkfqZrKmfSaR+tqqXPj9HKcd9TP3kUZzvg+pnhMU5r6qfAYF3WVs/aQzn95j6 - yaM4X1H9vCs5qqh+3pUcVVo/p+IJu6k+0s13JBFhIhk5JkLOXOGTtrDZR9vLfl+Yd2b9emFegxYf8Dxp - 4ipZbamjV1vq7gsnXfMMgZpFaV2y/jMzn963w4/paa9PU+mzPCMWLIT2sqFFXfYmsbhpOfKPQkb9UbjE - sn7NqjIHW7JQ6VLhT/Mdkcdac8VmrlSwWZSNNU9yXe21lRoFYpe9IuKLkZN8fWeu9fARjs+P9OlT8jk9 - ZP2x6F5s/hZgQagpukmvkpFvSopa64ufdEUuRDtyiq+3JWYnId+RU3y1y/peXuiOnOR/76Toq3KkqqQU - /Rri6wii5NcQUjxhH7OnYOgWCX1hAQs8ktUmyZzL8pAYTj/ngATR8IQ5FyiiJoJwfEza1MprzyHmfaBS - YwjzLuDVYRnzTugV4iGOl1khYOU14hDzPmDpsYyJ00m/ehWLO4rX3R19XeiH9KWqAMZN4nKWr6ky7O2o - 26YF1HpvX42Ww01CctLiXYDSKpd2UUcEo3d39K/mV0UAYPefENp3m+mfLg43HhUuxazbZt4A2qy0WeMd - AgzELlt3pJV+L7gOyJQHBO1rCTIyQOCIKNYJ+VHRkxG8Xt8zJmYPJt6ELlMyXuXreOJtxGz5KANP8F16 - e0b6dTMH6l2gdKnHHr72V0nAGd5mQNIgcll2OcpjVtZwJXKVIXVIphRA78KQKa3wvjYkV9lHIeOOypBq - 7wQJ9C5kmMeiPBx7EXWQMlz4fleR+91u+2gLmKc1HgmsNmGd6e1dtUcgVwnFOeKcI8k5q4MApVUUre0E - 56dFDEt0bIOOIvYnnNafSFIlIFUeqUkvZd3/9BlC3UQeS/DQpJ+XA934VEWN/Q7CyF0+/tignhlvTS/u - H/lamgz2aSYygoc2HneRy3o/K/FZ+1qCjB7lXTSyXpNSNE/V1/HEr1LkV54JvNgQ0gn3Oc1Ml65c3Bsc - FS6l6hFC1Tvq7a6pFaC3+zuEXdtUCMHu7xK6yvxQkgPL7rqqgAa8SY+KgNLZmakgaBD5rByjuFc4L6o+ - M/8GIHeNQyredcfyAmAGgcPQ7+nqWKgePKCpzOGVeQtg9N6uut43iFzv7umP5dYkhNcf0GFMZA7PVNCL - yg7InXzXOKQ6O5tF32rVd5lZvBwA+lKXq9Iye0mrUiHtxkTl0XZFh4GMwGE0O9Waucj6DkGuwVQW8urG - /taN8q4yh6cbrHL3IbwWoZhin7O2LeuDAHxTOlQFVgsV1AsFP5tU8GxqdO9aMOXR15HEVZOp5jik47pp - VLMg0lMyIMXISf6qqUxzHNIRmcTkyUge0g/1ZCQPnLgUKn0qPqXQ15HEB9z/S2YSTvZ8xP2/aA7hZFf5 - /R+ZPTjZ4QH3/5J5fJM98fufmME32YDf/8TcPW/DsIZc2zXN/r4YKD67EoKSxyKqi/QMwtc2K1S62+5u - 3xEthvrCgNl3z8n96yT7Y6MC4QTBdwG/FXJEPktUAszZm/HPqw1URykxxb6Viog9EY/sd+GCZu/sembX - LYcCWWDPEVEs047YZgRd/DKCoHzap/bJDMG1CW4waqPk5xXkZ5L8bLbtMt1VFxT4VE3Rh9bJrEGFs0dt - nAwtNc8CFniYxdtW+xjIjJc6Z1WFLj0/TyJdl6817IgoVt9Aj/xAGDDhSb3v7JqG1y1qB64A7esI4m0V - 615we3jqCf3l0y/fnu33tHYexdBWKvtN+mKPCMN1uk5ltz2vfOhc6AOrttnyd/4ZjOeXlwczfGX7Mll1 - aDq97xmyIgm0y3X6L/KtNCP3+G1nlj+1k7HNGD+U184CPA/7oUFvf3/S+0B0V0pwjalpvft3mDtKXa4Z - FU/KtGyRx7enC4jDc1fbHYt3EDqVBlz72DLDskWtSmDonpGH/KbeD+OH56zX+8IGvj5w0GcFL/FOSANu - 1TQnlVblqUjzWtljAPEE4Z//+D8AMksHMdUEAA== + H4sICAAAAAAC/2JvcmluZ3NzbF9wcmVmaXhfc3ltYm9scy5oALS9XXPbuJaofT+/wnXm5kzVrpnY6WSn + 3zvFVjqaOLZHUvp0zg2LkiCLOxSpEJRj968/AEmJ+FgL5FrwW7VrpmPpeRYFgPgiCPzXf108ikJUaS02 + F6uX8z+SVVllxaOUeXKoxDZ7TnYi3YjqP+XuoiwuPjafLha3F+tyv8/q/+/iXXq1WqdXl1e/fXjzZnv1 + 4f3l1fu3v7/7ffVP9fe379ab7eWH33/7ffVv//Zf/3VxXR5equxxV1/87/V/XFy9ufzwj4s/yvIxFxez + Yv2f6iv6Ww+i2mdSZipeXV4cpfiHinZ4+cfFvtxkW/X/02LzX2V1sclkXWWrYy0u6l0mL2S5rX+llbjY + qg/T4kW7DsfqUEpx8Sur1Q+omv9fHuuLrRAXCtmJSuhfX6WFSoh/XByq8inbqCSpd2mt/o+4SFflk9Cm + 9fnai7LO1kJfRRv30F/v6aPDQaTVRVZcpHmuyUzI069bfp5eLO4/Lf/PZD69mC0uHub3f85upjcX/2uy + UP/+XxeTu5vmS5Nvy8/384ub2eL6djL7uriY3N5eKGo+uVvOpgvt+j+z5eeL+fSPyVwh94pSvt59d337 + 7WZ290cDzr4+3M5UlF5wcf9JO75O59ef1V8mH2e3s+X3Jvyn2fJuulj8p3Jc3N1fTP+c3i0vFp+1x7iy + j9OL29nk4+304pP61+Tuu9YtHqbXs8ntP9R1z6fXy38oxem/1Jeu7+8W0//5pnTqOxc3k6+TP/SFNPTp + n80P+zxZLu5V3Ln6eYtvt0v9Mz7N779e3N4v9JVffFtMVYzJcqJplYbqkhf/UNxUXeBcX/dE/e96Obu/ + 0z4FqNDL+URfx930j9vZH9O766lm7xtgeT9X3/226Jh/XEzms4UOev9tqel77WyK8P3d3bT5Tpv6Oj3U + tTRXMZ2rhPg6acSf7Nz4z6b8f7yfK6e6fZLJzU3yMJ9+mv11cUhlLeRF/au8UEWvqLNtJiqpCo8q/GUh + VCbUuoipQr2X+g9alNX6btUlrtxe7NN1VV6I50NaNIVQ/S+r5UVaPR73yicvVkLBogmk7t7//Ld/36g7 + uxDg5fzv9B8Xq/8AP0pm6qfP2y8EHeYXL9KLf//3i0T/H1UHnKnZfbJNVC0DX0P/x/YP/+iB/7AcUtRU + S4f0nuuPi2ST1ulYyen7tiErsppi0N+3DbkoKAL19Z6/Wd4uknWeqexO9kJVcZuxKp90rAwd6JGiehIV + R2eRjlXX58nquN2qW4bjBng7wtNlcsVPWZ8G7Ewt6mOntE979piUCKfDo7ov62wvdOtM8xqkZ92pVjoX + TLENe25WIiC/PibPwjmm6ztd2WRpfvolyebYtR7UQLiqjzudz5M/psvkdvZxrN9AfM98Olmo1paoainb + lpfpJtFf1v1G1cmlOF22N98/TO/0BzplKI2Ry/XGh+nXpBJdvIXqiM3G/36IBcyrrIyyO7wd4Vel+idc + vQdD7ojLBwV9DP3H69mD6hMmGyHXVXag3CgwDdp1rZUeVetTZBuG3sRR/0r3A3lujaLedXZQI6eIK+8F + aIxN9ihkHRGjF6AxdAUvd+kP0X2ZGcnVoPHYvyXwG348J0W6F0xxRwft7KtuYdS9T58T1XBJ3v3lGPAo + WREbpTegUSKyIJj+h2obkQEdHbCXdbku8yQiwtmARolL/VDKZzJJVWvEMHckZl3l5fpHV0vx7KYBjCJr + VWuk1YZbdCzeiXD/9SFJN5tkXe4PlWimpohdywENEG9bCQF8U5IjYiIgpiofb+jpZ5Gw9VV+COJBImYb + VoBsg/i4yQKlynx6007ZNZlDstoo6tWBxTNpHgY3DEUpxC/V696I57hQZw0aT39jI3Lx2Eyz84JZjmCk + 53dvfo8IonHUr4Z+agAvKlWid2lWMMM4lnC0849O1pVoJkbTPCYu5AtfQbmWBzXckYeykCImtCUKxzxU + 2ZN+DvNDvMRENDTheDJ7LHSS6EzRY3rVrOwPSZ4RO8OjrcNXo0bXSZo/lmqctts3T6Fk7KUAytB1RNZE + ckRNJJu+0zmPOK3zkAyNfdRlccuM1cKOe/mX7ie8ae/qJtdJdh8H/Zdx/ssRfl5F4+Ogv6v5jB6BKpOM + QKAHidhOuV5PWGFOMOwWz3WVxmWJ54AjyfZncgJ0qO9d74Tqn3NrW0gAxGhnOdRve6zK44EcwcYBfy7S + ykg9SY7gCrAYbj4xI3kaLN6+3AheCE1i1rKZjWNeewf7blGkq1y0bbxq5w65am2oISAHGglsXCUzJCxD + Y9e51PlXFII8aYBJ/Fjb/Ch3p1uX/MNsGrBThzAd45uaQaROuWybrVUtQLW6PBaB3OO2yJCVdzO7PBLh + kFbpnuVuSMza1riMGtvBQX97I8har5eg6w0asTdVumSpWxTxnppqes8dNMBR1J/SY676mqmUv1SdseIE + 8iQjYyVHKSpyr3zQBkfnDABsFPXyJh8AHosQ2VKDEjhWVmzLZJ3m+Spd/+DEsQRwDHWj5uVjVBRHAcfR + jxKau5d7A1kCPEYzYc6aEsckSCyVdfGxXAkSi9FbO3GwsTjuVW9k/UPwyq+Bw35mT9BAYe/PY6aXl+2O + 9ab8xUpy2wBHaZ7Apzvqkw+Phu1dz0ndL2qIw85b3wJHI67MAVDEm0tVi3WlQFcBrMz2LXA0dXtk25eo + WspRBONsxKHeRQRp+GAEbrYbuO9v1tB038jLdcq6B0GJH6sQalRT7w/JfEGe/DBZyPyLLvzleyqxL58E + d3LDpn27/iBJ12uV01S1gQa9yWNZbiLkDR+OUIlCPJZ1xhhcIRokXltNbY95zorT45h/lewyemNmspi5 + VOPoNS+TOzZs5mezKRiIEZvRgAeJ2Ax2muyS2d+8YLYiEKf54oodo8UDfj0WiPC3eMDfVTIRIc4GJAr7 + pgjcEfplHMGztijiVb3KFXE5iI0iXhlfIuWYEinjSqQcKpEyrkTKoRIpo0ukHFEiu14lr/ycYMhdv+le + NEgOZcloZmweicCaK5SBucL2s9PkkOSpzzjiP/V92XNvsAWMdslOo8tAGqnPjtUTp9Y5o0Eva1rC5ZEI + Yr1jDZAsGHE3T66SbMOTn+mQPUId9vLT3OCRCKy58Z5ErDJ7TPNHXoJ0bNjMTxJTgMSIe7YEKJA4r1Hb + XI6sbRI1nC9/JcfiR1H+0g/qD92MGieTcBkWOzLaGL8Uue54c1pk1wBHaVc7sPQdGvBy838w35vPI6eF + MA8SsZmuT4sNZzWDJ0BitEsSmLWAiSP+qOdYcsRzLOM7MQXLMiBRyv0hz9JiLVSHLc/WvDxxJUisY1Xp + C9L9T+5PshVYHFXk91155EUxBHCM6KeMctxTRvmqTxkl8Smj+f3u9j6k9U7GxDU9SMRSNjW6qm+byXle + 2roSOJZIq/yleRbarfvgNOmABYnGe2IrQ09s9YfbNJdCr8mpuuZXbJJuE5Gm9eIEHHLCV/JYiVRhEWlp + G+AoUc905fAzXRn/TFeOeaYrY5/pyuFnuvI1nunKcc90T1+TQrXP2yp91Ft7cGNZEiRW7PNjOe75sWQ+ + P5bo8+PmExlXvEx+OEKSVo+xUbQDjlToJ5BtKkb1tSHPUESZpJsnvUBNik10WEeGxOY/+ZdDT/71F/jv + dEACJAZvdYEMrS5o1viLan+shV6eIwrJDeFbkGhxryegFiSa/HHuVUfcuIAGj9dtnBEbz9Eg8bqNyDgx + WhT2/jxm64jsMXDUH7GiRY5Y0SKjVrTIgRUt7efrstr07ypHtGiICotb6xF1WagerNylV+/eJ+XWHDtK + 3iUMWbGr6cYHqs+u6q/jXvCiuxY42qmJ6Vc3M9sPUITFjF25JEeuXDK/l+kXpItaVacx0XpLOJqucDY7 + wV03FVAhcV/n/cBBGx499n3AsAqJW9UHfZNvs1zwopkCJEZdZevoKTXfAkfrlrDpTQ8imgvfgkVjl85g + abTn92PGwrAJjao7sW07r1+P53b4QdHYmDHdFNwWjl6n9VHG/tqzZEwsXiPhOoKR+tWccdEsz8iI8lXi + yWC0o55cUvVPRKiTAomj6uzNjqVvyJA1rpjbCjyOWPOvX7O4uZIpV6zQoDc6aUwHEqk68pqhBoSd/IcF + oacEXS/0FToGsCkYlbX+Wg6uv2a8mH+mAJu6hx/a0fcX+gNBmx6yJ5PF3WVciEYxGEf3pyLjaAUcZ76Y + xCWYJRgRg51svmVMNG7i+RY4WsSrsA4+6GennOsYjtQ+FuemHWwajvoa8fBIeujXbjZevyS7jP4kAZTY + sabXn5Mv0+8LvQ8DRW9yiJH6CrcFIs5dKpPN8ZB3WVUW2+yRuAxpyIVE3qeV3KW5ntipXrpvS1Zc0IRE + Jb7GYnKIkd58Oajt7bZmTfTBC+fHo/3jYEqcARUc13jyvE4PenjICelb4GjUIm1ymLHcJ6uXmjaB4dOw + vd0DgLxBIoAH/LypNUQRiMN+KIRbAtEOIiLNNDzgNtsAGRXIMg1Fbeei4+K1jkCk15mOHKkMXEc7FmfH + bHHUz1nNAuBBP2sfAsyBR6K1oDaJW/f6zJSKutARNuBRYh4YhTx4xG6KJ8+2olmHR+2aDblCkfeCH2kv + wmbiXDCA4/7IzAnmie7IRVZujgKPw69Sehq2Z7J9VMftw5g8HIHYmTQw2NessOdVHR0a9Mb0KhwFGiem + DpdDdbh8pdpJjq6d+qc/3DihEiojaiAZrIFkXA0kh2ogqcYS+SZZ6Tcvi8dc6JExKxDggSPWJb9Xf2LD + 5mRbVhGZDWjgePQBo03aVvpmB9AeBxH7mAb3MI3YvzS4d2nEvqXBPUv15pnpoZ3C0IsF1I1QU87MCTn8 + SPo4lvaNmuPqX2JdS12IVEec9qwjbPKjsnZHDeyMqj/Sc26v9FMCKidurr+kD5zpTiciRXLhAXeSl5EB + GgMUpZlz6B6R6A5HXtPj+A4oUv1yEOy0MuABNzOtXIMdpV2XtMtIiXOGXJdexZU3rwUw98JFFE4cvSyt + 3UiV5O4xxxeze+/Azr30qwSuL2Zn3oFdeXk75GK747J3xg3sisvYkgbciWZ9rOtdVR4fd+17cIL2XAnA + bf+m7I9uoohNzjGqjgnj5UUDs33t7PH5HYF1/dwv29ajV0qQIRcUuZm3brtJtGVWAI769VtJundAro4x + hxNpveP9BINzjJE7Pg/v9vxqOz0TdnmO3uF5xO7OoqrUmIB5sJ4HO+7nQ1k1y6N0u7lXdXtF7BDDBjsK + 9TmN/3zmfNS6XjjWHBNF8fm0a6/fmK/V08q8TwN28xGz7qpIcgTPAEWh7tKC7Xgds9t1eKfr5lNdTTQr + KkvV66wyWqsMG5Ao7OfDsAGIYrwidt5GjV5+QAsQjf3UbehpG2/3cWzn8f7pVOx4OGzConKf5o15itd/ + pzsdqTtNpF0JxwwHqrC47uo7ZkxPA8Q7VWnM6RLMAUZq3girxM+jamrVt4k7Z6ESMFbMayiIAorzKk9e + SU9cH5uNg+j7o5qcZ0y6JUxE4QnzfapDfT7PVtXi1Iz2eCSC3sYrIkCPw/52qy2238Bhv87ztD5Wwlho + y46GypDYp6MyY7MJFMExu4cp/FiWwI/BXGvpoIC3/WWrl+QpzY90t42jfka9gb/jxDxZAz1VI+5EjaHT + NIzPK1Wcyj1T3sKAu9vIh744y6cD9v74MXaIXoHHUWOytIiJchaAMVSlmG0Y6obDjNSjV23St57292E8 + xwRw3+/No1AjeAIghh68k70aAlz0J+voqijjg+Svd29+TxbL+/m0WeOcbZ6ZIQATGJW1Biu89qo7vmUv + E3k86OkMutqAffeWfLdsgftE/SOTO0F3dZxvPG0VSjWeOMzIuZd70rey91caOC+n+fiJ3P4pxPecp5aS + XJDrAgv23ew9mQbO2Ik+X2fE2TrR5+qMOFOHc54OfJZOu8P7af6FfgQlxPsRGE+O0FN0mrWSpwkL1gSg + iwf8zM6zyyMRuBWcBWPuox7QxSWR40AiNbvD1KqjKZuJ8WZyTLLigSYkKjC6Y8UEPFDEYqNn+3m9ZZsG + 7KzDCm0SsBovXpG9Bhs2kxcfgwI/Bn9HoaHzsZoDJ1ZZSXVqBjCx9iQKnbB1/kzqOb1iLVjiEwy46Z2z + CuqdSbHWd01/lkozTc3rToZcUORuetXcP4UeEpBAsdr5VdYY3IJRt37pnnHv2zRm5/RMezJkbZ7J8dUN + DvlZswXoPK7cpZXYcCd+bBq1M3bU92nIzqv98HoPmhLdZI+C3snGTeOi6gEAqwAFXOMis+4IxANE5O4J + 9RjeD8p4Vyd9FIn8QXuXAsABP3tRh0/D9mOR/aRPF/ckaDX29Dk/7mWEgDRD8Tgl2Df4USKOBBg8JTLm + hMjw6ZARJ0MGT4U0PqQv+PVg0M1pc9CR+S9G7/IX2Lv8Re+r/YL6ar9UlSXYHUqbtu36rbLYFQ+Yw4/U + jaSo8g6zfVnB3CfAAj2nsW07UWqQnlWN9ak6jTgemWxU7UPytIjn0XLW9IXLeua2h0hUtpDvApptvb3V + QVITIWCyo+q+yPGwIc4Z9ZRty7NVlVYv5Ow3OceoD8btHzxSR04ADvjbNZjtMltJ1lu0bd+nj9n6PJ9y + 3qK0JpUXVOLGardJ0Uvi2sVwtCAu7dr1BvvqC3o5H3X6wINtN/dUY/xEY+Kbu94bu3rDdWtwTyoVPm3b + D0KQukj6+66B3K6AbYrqu6/1CY/NROahlDXv1YGABo6nqujLt83DvlNxpr+YOeTyIj9lG9FeIrUF9WDb + 3W43rsr4+Vcn2zx73NXUJ01BERCzmTnLxZPIyVF6FPC2HSie2GBtc0WsNCqvnmAep4yenmx8wLmjANz1 + N4scjdzUc8eSFgNUuHGku1zhX8Q3lRCFHafbtLxfCU2J4MGuWx/eoiLn7euCNLXNumb9vkP2t2i3qsry + rM5oUx2wAYsSkduoxI3V1nOVOEpab9YmXSvn/QTslN2IE3aDp+s2H1Ifh5whwBV1buaYE3qb7/ziXPEv + 6IovWXl0ieQR54Rf9HTfmJN9w6f6ng/l7XYdZNkdHojAOtc3dKYv8zxf9CzfmHN8w2f4Np/uSoZSQ4CL + /KYKdg4w9wxg/PzfqLN/B879jTzzd/C83/izfsec8yt5bxRI7I2C5lTc5q3TZh6Zer0WC5h5JwIHTwPu + PpTNnrB6cLEuN+JQEhcP4BY/Gr2FSKD2gXMALHqqcNQJvAOn77Yf600LjFN+zPcn6bECMiy2WG/0/vG6 + 4eHFMwRADN57AcFTheNOFB46TTj6jN8R5/u2X2m2RuBVBxYMuLnn+Q6c5Rt//uuYs1+b77QvneseS3u8 + KTmIK4BibMtK5ZCeFm7mc2X6yIgDSIBY9LXt6G5xkrxeWwLrtfXfokZq9dAYrW56Rts8faSbT6DvZK+0 + HjjFVn/8r82Py8vkV1n9SFU3sSCnscv7EdjrpAfOrY0+s3bEebXRZ9WOOKc2+ozaEefTcs6mhc+ljTmT + NnwebexZtMPn0DbfqI9kaX30PexX/gdOXmWeuoqeuBp/2uqYk1bjT1kdc8LqK5yuOupk1Vc4VXXUiarM + 01TRk1TPx6CaW/XT36QPaJB4vOxGT2w9fxizYB+VILH0aE3v9rB+4Q/7UBEYk7l6cugkWv4ptKETaNvP + +ocfnNbE5aEIr3nOLOeMWUlffS6h1eeSt05YYuuE489pHXNGa/OdndgY/Vz6sgJUAsXilX+85L/O5h6U + E15f6XTX0Se7Rp3qOnCia3sOK2N0jozK406GHXMq7OucpTr2HFXjYEk9XiOv04Z4NELMemE5dr2wjF4v + LEesF44803PwPE/eWZ7YOZ6RZ3gOnt/JPbsTP7eTeWYnel5n7Fmdw+d0ss7oRM7n5J3NiZ3L+Tpnco49 + jzPmLM7wOZySvjZbQmuzWW003D6TWxagVdF/YuywanK4kbzNtQfb7rqsm0PsuKsKId6OwD8bNXQuauSZ + qIPnoUaehTp4DmrUGagD55/Gn3065tzT+DNPx5x3GnHWafCc09gzTofPN409ZXT4hNHo00VHnCyqV2Ql + O5HnZbejabf2jxgGdNiRGPPK4Ezyr5SWCPr7rkH2j42SrHhKc9p6CVDgxNALUklODViOp6u3p2kC8vSW + x3pmlhJxdXOMLKXF9ubl7YL34z3QdtJlkIX1gz3QduqzVJPVcbtVhZ5hBnDL/3SZXLJT1Id9N0+K2bgp + 7MOu+yomFa7CqXDFlGK2iFS4CqdCRBoEU4AjhE0Rvx355ZurLDFOvhrrdDDUR1lLBaC9N7vacK7TwVAf + 5ToBtPeqnsX1/PvD8j75+O3Tp+m8GWi3B0Nvj8V6bIwBzVA8fSrAK8Q7awLxNkIcmgtjhzobAlH0ir3i + mOfsICdBKMZxz9cf9wHzoTywzYoNmY9yx1crOOCW498Cg9iAmbT1L0xb9sV8+aC+f7+cXi/1Han+89Ps + dsopNUOqcXFJJSlgGRWNWAZCGjueXj88e/h8rn32B2qdgimwOHpr/1rwArQsaj4emNrjAXOqP214Uk1i + Vk6h9WnUTiuaFog5qQXQJjErtZJwUcvbbJh7N/k6ZRdlxBCMwmj1MUUoDqe1xxRIHE4rD9CInXgj2SDi + JLx47nK4kXpj+jDmJt2WFocYVb+BdJgUCCNuWs/A4nBj3E1pCrAYhO0FPRBxUisph/StcTf00L3MLcJ4 + 6WUUXLDMcosrXlLlLtuS87uBfBcrm50cnlxfqwFjcjNdXM9nD03Xi/KDETzoH7/1CwgH3YT6FaYN+3SR + XH+dXI/2dd+3DevVOhHFunoZf0i3gzm+7ery6gNLaZGOta64Vou0rRtB1nWI7RHrFefSDMzxMVyQp2Tn + RRnIC9kcXtF8QHmjDkB9bxeQ4zVQ23ssflXpgarsKcyWHNLNZvzSLBC23ZzrhK8y4hrxK1zcXSaTu++U + +rFHHM/H2TJZLPX329cQSUYXxt2kpgJgcfNj8/pqzZV3OO7nq0NWSvPjowHvcZ+sXghHIaICPAah+wyg + QW9MTko4J78+sIughaJe6hUbIOokFw+TdK3397fTyR35Os+Y45veffs6nU+W0xt6kjosbn4kljEbDXqT + rKjf/xZhbwXhGMfoIMeBKBk7gUI5Si14Nop7JT8/ZSg/ZWx+yuH8lNH5KUfkZ10mH++4ARrYcX9i3vif + 0Dv/j+mdinc7+7/Tm+Xs6zRJN/8imQF+IAK9SwIaBqKQqzFIMBCDmAk+PuCn3rgAPxDhUBGWquGGgSjU + igLghyMQl/oOaOB43F6Hjwf9vHKF9UDsj5llCu2JzCbvuKlio6iXmBomiDqpqWCRrvVuOf1DP03cH2jO + nkOMhAeELocY6XlkgIiT2q0zONzI6AB4dMB+jNMfQ/6MlxwZlhrkstpziFEyc0yiOSajckwO5JiMyzE5 + lGP0bppFOta7b7e39BvtTEE2YpHqGMhELUwnyHHdf/zv6fUyWVeC8DKAT8JWctoZHGwkpt+Zgm3UNOwx + 13e9nPaTbcTmw4VDbmpD4sIhNz23XDpkp+aczYbM5Fx04JCbWsG6sON+UH9fTj7eTrlJDgkGYhAT3scH + /NTkB3gsQkT6BFOGnSaB1OCnA5ACi+n/fJveXU85DxIcFjNzrYBxybvMJXKFbbFokybdbGhWBw6517lI + C2J9CgngGNRWAK3/Tx8Q1ke5HGykbNXncoiRl5obLA3Jtz9eK/YPlN6wf/gZRt2J+nN6zPUGcPIHM4Tl + gCPlongc/964T8JWagWG1t/dB/QpKRMMOBPxzNYqNmxOtocYucJhP7UngfYh+g/eMIVvUGOyeknuZjdM + b0fj9ti7Q466O9xvJalcv0Y07YEjqsHjt+WnD5wgHYp4CfuyuBxu5N7oJ9YxL99fcqtrG0W9xJ6FCaJO + ahpYpGtlPstZos9yWA9wkKc2zEc16POZ5oNNtt3SdZqCbPSCgzzX4TzMgZ/gsB7bIM9qmA9o0KcyrEcx + yPOX89OSQymzZ5axRTEv42FO+AmO82mzHDZG3wigGKpqfhSFqJqjejZ6Pzh6GN+BRGIm/4lErDpgUrO0 + Lep6vz9MySObEwS56Hf+iYJs1AcYJwhyke/9DoJcknNdEr4ufa4HS3bp2L7dzf6czhf8Z6GQYCAGsWr2 + 8QE/NdMA3o2wvGY1xgaHGOlNskVi1v2Bc9f7OOKnlxIDRJwZ71oz7BrJpaDnECO98bZIxEqtFgwON3Ia + XB/3/J8+sKsJm8XN5GJgkLiVXhhM1PH+OVvMImbvfTzoJyaICwfd1GTxaMe+yR4Jm1gZiONpe0u1SJ7e + kmQG5xnrpFxRTsp0MMeX1WKfbK4yku0EIS7KDiEeiDmJE1kGBxrpGWxwoPHIucAjeHX6CBlOlrQcYiTf + 3yaIOLOrDUupOMRIvZMNDjLyfjT2i1k/F/mtemsc1n3SgZiTc5+0HGRkZQeSF4eU2EM8U5BNbzVOt2kK + syXr+pln1CRkPRa839xykJG2S7DLOcb9qpszID+Ns0jMWvC1BeBtmy+V3n/T7miDc4yqN7vP6uxJ0KsJ + G3W9xzoRJW2WvmMAE6O17zHHV6ePV9TXnjoGMKnMIpsU45rE/pA3O5hSM8EiDeu35WcFLL8ns7tP90n3 + SjXJjhqGohDSFuGHIlBqZEwAxfgy/T67YaZSz+JmTsqcSNzKSo0z2ns/Thaz6+T6/k4NCSazuyWtvMB0 + yD4+NSA2ZCakCAgb7tl9kh4OzcFvWS4oR0UAqO09n3G2rqucYrVAx5mLtEpIZxc6GORrtyRmWg3YcevN + igp9HkTzFZLZRh0vNTn9VFR/aYaLzUFKxO2cUQESo9m1OHk8plVa1EKwwjgOIJIuh4RJJJezjZvydJIr + xddTtk2UW4pGfd3m9a5OpAfrFuS4csLmZGfAcVS0XHTqye4vSZrnVItmbFOz+oiwOMpkfBPxNFgHA316 + qyCVFePX/0Csbx5/ZEZPAJYD2XLwLVmR1VSPZnzTXk+XMDLgxMHGw/gurIP5PnZ2BvKS2fo4KObVhyyP + 31IfYn0z9bQVl/OM1B/u/NqdeN4c96TC3CG2R2dQQSrLLeFaanIbfWJsky6GzRF4BS2FTM411jtyBX6G + ABelK2owgKnZso70Ug+AYl5idlgg4tyoLk9VvrC0HYuYqTeEBSLOw5Hp1CDirAhHd3og4iQdiuGTvrWk + 950MzPYRC7tXznUjsMrK5JBmFVF05nwjo6tqYL6P1rdoCcBCOOvGZADTgew5+BZdJ66OW6qqw3yfLNc/ + BDnRW8q1PRM9z67huF+Jinw/Ghjo03eUakMYyo60rYwhGjg6I2wf333d4fUCB1JBaAnHUlfkZuXEOCbi + kOzgjciolbtfp1OLjl9m2jOZZXFJ1TQQ4OLMR1mg65S027UBHMcv3lX9Qq5JcupuCdfcklhvS6/WluQ6 + WwI1tj5ZaE+TKMB10GtXCdatUogfJIv6vmtQvcC8lLSEOUGAS2Vec64utRR5MOLWQ4kDYW9nEEbcbC/s + pI71JThzI3kzNxKbuZHk+RUJzK80f6OO6c8Q4DqQRQffQp2rkeBcjeymSIj9KQODfaLc6pmHY1VwtD3t + 2wvCMgyT8U3nmRFyCenJgJU4VyODczX9p/Ig1lma89QdjLnJQzYH9b2c+SWJzi+dB4fd2Xek5QWowImx + K4/5JlFjNE5KuzDoJhe5HkN8xIdSJgca6QXB4Fxjm5PqM5rwjDm+gt7rPzG2qRa05xb6+65BMpqGnrJt + x4PKEdLvagnb8kSdE3zy5wOfOIn8BKfyL8Zg8Rc4WiQXSqA0tjc/8YHVGYJcnGGETRrW28mX6dXHq3fv + R9vOBGRJPmUFoQJzONA4o3Q7bAz0fTtsKPPELmg475KPt7O7m3bfieJJEPq3Pgp7SbeWw8HG7jhhShKA + NGpnJkMWSAXK3KmNWb7r5V+JGH88Uk94FmK2nBDPQ3iFryc8Cy15OsKzyDqtqFfTMJbpj+nd9cdmFQ5B + 1UOAi5jWPQS49IPEtHok6zoOMNLS/swAJkkqC2fGMn29v1s2GUNZWutysJGYDRYHG2lJZ2KoT1emsqa8 + vIwK8Bjbskr25eaYHyU3iqGA49AKg4mhviTXc1wbprajLXu6kkkmk19lRbEalG3bkCwbjyZfSIfYHrm+ + WhUUSwNYjlVW0BwtYDvUXzKSowEAB/G4F5cDjIeUbjuknmm9WrGuredc40asaSoFuI4dYX3OCXAduWD9 + sDPm+zipfqJc2/6Q0UQKsBzN2lWCovm+b6AcsGIygInYOPWQ7SIsA7qz93ho/02tgU6I7aE13V6LvS6P + ha6ufyV/i6rUCSZJOo+27OqOodVtLWA7sieKIHtyaWo6nxDbc6TktvUmpvq3KHZpsRabZJ/luX4QnjZV + ZpXt1fiofmmmXAj6MTo7/s9jmrO6Ow5pW58paaK+bdHEu9C7/7ZVuVfdoqJ+LPeieiGpLNKyPq4pRUV9 + 26ZPb1rrvBAJqXHwWMdcJ9V2/fbd1fvuC5fv3r4n6SHBQIyrN799iIqhBQMx3r7551VUDC0YiPHbm9/j + 0koLBmK8v/ztt6gYWjAQ48Pl73FppQVejON76oUf3/tXSqxlT4jlUb0jWnvRApaD9ODxzn3meKdHG6od + I46pesh1FeIx1a920mQnyrWVpGFPC3iOgngxCnAdh/LXFU2iCc9CryUNCrZtU9VS6ScYPK2Bu35iAYdG + repvuqNEs2jCsuSCdpM033cM5FHnCbE9pLOezwDguCRLLi3LPq3kTvVUSOvCbMzxyR/U3vCZsU3lhjhb + 0RGQJfl5zMbvAeBynpHWg+sIyHLV9KforpaDjExh2MfqAsMCPAaxnvBYz9w87JDUS+4ozJascv1KyYZn + PdGovdxwzSVQ8sn1TA8hrkuW7BKzse5Li0XMEWLEuz/mRJ0iIAtv8OXDnpvYuTghnkf+rIgaRUCWmq7x + y508rqia4wqysIrEmfOMjOrKr6UOGa030QK2g1Yu3TKpihT1l3SI5aE9ZnKfLhWFSh4Kr7/vG6h3QA/Z + Ln0iNq0Lc0JADzWBLc43Ug77NhnLRBvMuCOZQ6pbHN35S46F3nuJ1B4CtG3nzu8FZvJIu22evu8bKIt8 + e8T2SHHclEmVktZIGBRm0//nUfCcLWuZiRfoXRnrkgLX0v6ZNjy1ONtI7RlVfq+oIveIKqA3JMX6WAli + BdpDjqsmPu/pCM/CmH4xMc9HmyuTwFyZpM+VSWiujNa7cXs2xF6N16Oh9WbcnozujVDToEMsT10mzoHi + BKMPg+7uFEyGuCNdK6vbbHGW8UibXDi6MwtH2oPMo/sk80grCke3LDyl+VEQ2/EzY5mIU2vOvNr5K9tj + sa6zskh2hBoIpCH7D7Fepz/o3pbDjXqlTFmtuOIOD/hJ8+oQHHDLn0chCK9KIDwUQYp8S+t/+ajh/fYp + +Tr92m1HNlppUb6N9CjUYHzTY1X+opo0A5vaU/w4vpb0rZTeQY/4Hv3KbPVETrQOs317sac83T8TtkXW + FdHSEp4lX6c1UaMRwENYGdIjnqeg/6wC+l1FLgqqJzff7L/++LGZyqZM8ZsMbEpWZZlzdA2IOEnHePtk + yJr8yuqd3vyUrz8rkDjluiaflYAKsBjZpl2HURP2pMANSJQjPyOOoZw4vkJWHIfygjRBYkG+K1ejGfpd + 01K+TR7StaDKGsh3HS/fU00KAT3dCZ7JoVIfPY+fygkowDi5YJhz6LdfkcumQkBP9G/3FUCct1dk79sr + 0MNIQw0BLvr9fYTua/VHxjVpCHB9IIs+QJboTP0wIk/X8ipZ0X95iwG+evuWJew40PiBYQNSVI/4yDVq + A9ku4unYBmJ7KBtJnL7vGDLiy9AW5LrkOq02yXqX5RuazwBtp/qPbPyeQz0BWSgHZtiUY6PsTHsGAEfb + juvJufH77oKw7W4W2KnymxA6zC5nGylD99P3fUNCroN6yrYRf5j3e4ijPwOxPZQJo9P3TcOiGwiISs/P + bUQ1XuahkDeruxMsdqmkzIfjBiCK7kfrMy1J/XCftc16T9A0K2T3XsALpYKCaNd+eKF2j03KtjWvaxYv + xHGlzeHGRORiT9jrFePhCLr8xEZxHUAkTsrAqUIfcTsg4uT+/sHfnWT7Q56tM/qAGHdgkWiDVZdErEe+ + 9oh4ybfeGfJdeSprUofZwiAfbaRrUr6tPOi5fOK6UhAecLNuCt8wFIU3tTNkGorKK4KQw49Emj84I6CH + P9xCFWCcXDDMuQBcV+REdeYPzn+M/u3h+YPuS5T5gzMCehhp6M4fLKgvvxgI6NFvL+qFOwzfCQW9jN/q + zkt0fyZXs1ANGzMvgRmAKNR5CQsDfEWd5WowUklyJ8FAAS95vsPmQOMHhs3JqUyeF6Wd+wjikTZEwRxe + pGabH2fIQQwEKUJxeD/HF4RiqOEN369g293sHKlfp6U4z5Dtapcetq+M5tnfKn8oLzXgBijKsV4z7SfS + sQrxo00i0qMTB7Sd8kd2oKj09x1DPf7J+en7roHyBLgnDMt0vpx9ml1PltOH+9vZ9WxKOzkO48MRCPMK + IB22E574I7jh/zq5Jm9YZEGAi5TAJgS4KD/WYBwTaVe8nnAslJ3wzoDjmFO2Mu8Jx0LbQ89ADM/93afk + z8nttykpjS3KsTU7KglJy38XRJx52e0OzxKfacfeVqp5RujB2Jjhm98mN7PFMnm4J59PCbG4mVAIPRK3 + UgqBj5re7w/L++Tjt0+fpnP1jftbYlKAeNBPunSIxuxpno8/JhhAMS/pKZVHYlZ+ModSuHnioJpWnvlE + Y3bKcwsXxJzs4hAoCc2mcXppDDslTMNgFFmndbZucluPF9KtiAzqC7FroO1JDLGe+eu35fQv8iNegEXM + pIdxLog49XZ7pG27YTpkpz1lhnHEfyzirt/gwxH4v8EUeDFUZ/W76mVQH3ZDMOpmlBoTRb3HpqOVrPTP + k8wAlsOLtPw8n05uZjfJ+lhVlEc0MI77myNAugOduUFMRzhScdyLKlvHBOoU4TiHUk9UVDFxOoUXZ71a + X1590FOP1cuBmi82jLlFEeHuYN+9XemPL7l2B8f8H+L8g9cfZUfdu1T9L7l6Q9WeON/Ytma6j0g9/AY3 + +FHqKiJNLHjArf9JeA6BK7w42+wgk8sP75Or5FBROyU27LvL6oe62WqxrvV/r0WyTzdPya/sIMqi+VDv + EqxfVqFMvTLc/pXRO/JgD745dptXwEzU8z6u9zrrUnLnogcxJ6/mtOEBN6u0QgosDu+Os+EBd8xvCN9x + 3ZdYHS+LxczNiPCHeOG5TzRmV43z+M1NARTzUubVXdB36qPQXtr+b3v0MbeXFTAFo3ZnGL9GWFcVjNte + aHxQywNG5FV7j9C5cvZn58PgCfsN4AYwStNAdJuXZmXBiOIYwChNGlLOsYFY1KxXSEZktKsA49S75sxQ + 9V3C5D6M+/5dqlc608eIPeg59YrRVO6Jwo7ybW0Hk9wvPXOesalc5Yuk7O8BoL63OfZ0m23UYDNL82R1 + pCyHDzi8SHm2qtLqhZNvJup595yZ4D08B9z+mXOJBulbxZ6w64AFeS5dQfHqT4P0rcd9wpkTOXOesYwZ + 9ZXhUV9ZrKkVo0Y8z6HMXy7fvnnH61E5NG5nlCaLxc1H2qNGkPbtlUikqipW5TPr0h3c81cbRh3WQohL + 721WZ4dcfKCcnBpQ+HEEp5LpKMC2bY8SUEOWRAdvtuAlvZ4xJMJjZsWaG0Whnrfb0ohfcfqCETGydhFP + dKjOg0U8Sm4MTQLWun3ROKKnDTrASK8zipGEUYx8vVGMpIxi5CuNYuToUYxkj2JkYBTTHAq9ibl6gwbt + kb1/Oab3L+N6/3Ko98/rBGP93+7vzZyfFIKpPeOoP9sm6VOa5ekqF8wYpsKLU+fy8m2y+7HZ6u2V9dfV + 9wQ18RELGI0x63vCDN9yntzMP/5BOzfJpgAbaZbWhADX6aQSsu8EAk5SO2lCgIuypMJgAJN+a5RwB9iY + 4dul13oM285iqjL7PH421EdRb1HufjG9GkW9Ukrxlilu2LA5+e05Rq7w3n8zXZymvUdfscnYJrFevaUO + 2FwONxKm5ADU8zIvFL1O/mXiV7kRV/rhLutSHdYzv40wvx1vpiaHjzv+gl5aT4xtKpi/v0B/e8H/3UXo + N+seDeGhioGAHuKl9RRsOxbrnaAcfgrCvrtUg5RDWmU1+Yf3pGH9TNrbu/u6xTdXShA03/cNyeG4ImWn + w9nGcn84qiEV0ddTmE3PTO8IeQrBqJt2ficIW25Kb637usWfz5KjJaOJwT5VCtO9qEUlKTcdJnBi1G+S + R5JTA76D+ptbxPccqJYD4PhJ/kUKATxV9sT5YScOMJJvWhPzfT+ppp+uQx9V98/fL38nnToIoJb3dMBT + X+4IZh+23IRxRvttmyaezmAglqd9vYP1+1zU8kr6vSShe0nS7wMJ3QfNVEvz1jDN1EG2K/ubUr/qr1s8 + bdn5GTAdTapLyrmyJmOYZvPp9fJ+/n2x1ACt6QBY3Dx+gO6TuJVyE/mo6V083E6+L6d/LYlpYHOwkfLb + TQq2kX6zhVm+7pWm5G7ydUr9zR6Lm0m/3SFxKy0NXBT0MpMA/fWsH478Zt7PxX5pMy9/oCyHAWHDvZgk + ixmx9jAY36TbeKpJM76pa4Wpsg7zfZSs6BHf07SeVFMD+S7JSC3ppRapO9F93za0AzO95UNaHyvSr3NQ + 27spY9Q+7dn1J0SlRjzPk6iy7QvR1EKOSzX5N59JooawLdT70b8XWUNBh0OMvMEganCjkIaDZwKwkH+5 + 14s9/fVA9hwgy0/677J7w+e/UoeFLgg5iQNDhwOMP8mun56F+nDZwUDfeWkrQ3pmbXPEcBOkEbvKPcYt + DeCI/7jKszVbf6ZtO7Hd9dpc9kAXYEEzL1U9GHSzUtRlbbNk1G0SrNsko1aSYK0keXeqxO5UarPut+mk + oX73fdtAHOyfCdtC71gAvQrGpIEJ9a7pNW+u3eVwY/NCG1fbwJabMT6xKdhWEs8hhVjITBn92BRmSyqe + L6lQo2QawV9MHKV5IOx8puy54YGQk9AKWRDkIo0AHQzySVapkUipqUtu2T6RrpU4zrIgwEWrEh3M9dEv + DLoq/bf2SJ5CL5BvlhDnIv1htu+cN215dv/q/hbUiH97JY2T7H6aJ398OjRHUiaqR7Ubf+q1T3rWIpP1 + 4erqN57ZoRH7u/cx9jMN2v+Osv+N2ef33x4SwmszJgOYCJ0IkwFMtEbZgABXO4hv5wfKimy1ccxfVoSz + GgAU9rZbU27z9JGj7mnEvi636ZqZJmcYcx+rJ6FLIE9+ooN2ymw1giP+jXjklMAeRbzsYoKWkva2JhwX + 45OAVc9FrF5iktkzIFH45cSiAXuTYqQJbAAFvDLqvpQD96X+nF9ZWTRib/bu0S+TqhZY6mOFVfdgz4oE + mqyoX6bfu3l22tjNAREnaZRpc55RZXimilK7WZxYV+M3KUUFfgxS+9gRnoXYNp4Qz8OZxgfQoJeT7R4P + RNBNclWSk7MHYSdjvg7BET95zg6mIXtzH1LvZY8FzaJYN9WVZJjPLGymTez5JGYlT8QjuOfPZFIe0p9H + 6i145jyjys8rwiu1NuXZTlPmrKYbFqAx+LdL8LlB9x3StMqJgCzsngzIgxHIQzMb9Jzlur6ip2pHgTad + 0gydxjxf+xCBnaQujvjpj2UQHPOzS2/g+czpG+ozxk19wmCfyg+OT2Gej9uH9VjQzG2JZLAlkhEtkQy2 + RJLdEslAS9T0xRmdlDMHGvml1qFhO7eDYsMD7iTd6g9VXquBVlakpBnlcT7vCmiP3CzIcn2dLj/f37Sb + TGUi3yT1y4FSAYK8FaFdUpduKM3JmQFMzfu71FGDi0Je0rzhmYFMhLM3LAhwbVY5WaUYyHSk/z53vEZf + RWpBgKuZ14u5fUKa0fGIEzZDKiBupicVanKMFoN8Mkn17ip6I6GaXtpsHPaXRdup4chPLGDeH+klWjGA + idajBtYLn//adA317A/ZdyYBa/N3YrfJIVHrerViWhWJWmldMocErPJ17m459u6Wr3d3S8rd3fb09odK + SCk2rxIb1yHx65JfHTi8FaEb2GSbq4Jwro4Hgk5Zq882DGcLWs7mBN1jltdZV/dQypkP227df030M1OK + 8wyBrnfvGa537yHX2w+M61IQ5Hp3dUl3KchyNXtmqgLVZlfzNPh5v0nkLtX/KeWvIyHGsCwUW/3M09f1 + f8bFBmRG7Jurd+8uf9c9+EOajX/YYWOo7zQVP/4talTgxyCtDTEY30RcO2FRpm32MJkvv5Nf3PJAxDn+ + zSUHQ3yUvojDGca7P2Z3xN/bI55HV2rt4hTifB6Mg/55jH2Ou5sT3k41sige1UeSGAFSeHEo+XYmPEsl + HlWTJKrmAAfdcueipmYh6PAiybg8lUN5KmPyVGJ5Op8ni8mf02SxnCyJ5dtHba/e2FBUVVnR5rs8MmTd + 8rVb29vOQDQfU5wGBvnkiyo4e67WpG17+zNohxW7HG5MCq4zKWxrc7pF+5GkOE3OMR6LNfvne7Dtbp7J + UbPqDCGuJNd/4ggbMmQl31gA7vsL8dx/q9mqmxrCN9hR1B/ZWeiyvlm+7FdlTnte5KOOV7dYH2f3nLLs + soBZ/wfXbLCAeT65u2GrTRhwNxtklWy7jdv+5rhs8q3YU5iNfDM6aNBLvh0hHoiQp7JmJkaPBr28ZHH4 + 4Qi8BIIkTqzyoIeC+7T6QbL3mOOr9HKzJiSpWJscbkzWK65UoQHv9sD2bg+O98gpcUewrFUilWXBrvAB + HPQzq32fdu378kk0x7oSvT0HGrttkbliE3f9si4r1iUboO2UKScNesqxnbsh1ArBJn0rtQo4MYbpz4dk + Mp3cNOfbp4RjXT0QcRJP54VYxEwavbkg4tTdOcJ6Hh9FvJQ9kz0w4GxfUdpklVhTTnQa8iARKXMUDocY + y4PgXbQGA87kMa13hDcCEB6JIAXh7UkXDDgTuU7rmnnZpgCJUaePpJc0ARYxU87/8EDAqRef0HaQA1DA + q982Vc1JtePUdCaMuLkpbLCAuX0FkZkeJmy7P+oXR5flF8KiJIuybdezh8/TeZOpzfHStFcgMQEaY50d + iDe4B+Nuepvl07idsirHR3FvXeVcr0JRb7c1NKUfiwnQGLS1hwCLm4m9BAdFvc2im8OB1qXDFWgcas/B + QXHvE6NCgXg0Aq8OBwVojH254eauRlEvsadjk7g123Ct2Qa16iMsuEWkYVGzjC/jckwZ11+KqQHOfDBC + dHm0JcFYeqNwfoVpGMAoUe3rQNvKzQc8/WNqmnAtE5WjAznJrFnQWoV37/v3Pb3bA/V1mr99ygraOMbA + UB9hf0GfhKwzagN4pjAb6xI7EHJ+I51k6XK28UasVQn6mErx/jeK0eRAo77rGUKNQT5y2TEwyEfN5Z6C + bPQcMTnIuLkl1zMW6Dl1j5iTiGcONxLLt4OCXkb2nDDUx7tM8D7sPmNlew86zuxRSNqPbgjIQs/oHkN9 + f91/YioViVqpuWKRkJVcdM4UZmNdIlxumo8WlDWHFoXZmPl9RjEvLy1PJGZl3DYOC5m5Vtz4J21Fp8Ph + RmZuGTDu5uVYz+JmbvqatG2f3l3f30xZsyYOinqJ42qbdKwFq19jYJCPXBYMDPJR87+nIBs9z00OMjL6 + NRboOVn9GpPDjcR630FBLyN74H6N8QHvMsH2qfuMle1Yv+bzw5dp+2SA+rjXJjFrxnRmkJHzVNoCESdj + ht9lEbN4PpRVzRK3KOKl1sgWiDh/bLYspeIwo9jzjGKPGLlP7EABEoPYKpkcYqQ+17ZAxEl96myBqLM+ + HpL0WO+SSqyzQyaKmhnDFw3HlKLY0GazcMvYaO1SB/32EWt3WIY7eGWvkezjUjw6sUek8/9PScxIXeqK + BAsEnF9uPrVny+/p1ZDBIuaMJwXbzC/Tr82eLDmjCjJYxMy50gZDfOZ+ytwrdhxYpH5fE3YgSwHG+c7u + WxgsZiauHLBAxMnqVwB7H5ofnXYaZHlPMOKmPg+3QMTJ6bV0HGLUa1ZZSg0iTk4vxd+9zfyEs+cRwmMR + 6PsewTjiZ9XyJ9B2fr2JWLvkwaC7ubslR9yRuJVW33wNrK89fUasawwM9RFHxjYJWytBrGcsEHRuVL+i + Kjk/viNBK7We/YqtVf7KW1H8FVtP3H1A69acIdhFrP0MDPQRa76vyKrj7u/k9TImBxpZ61dcFjbz6iG0 + BiJtqmZjno9dUwZqSU4qwqmnX/1ud4NjKG3YcxPXcrSEZ2GkHJhmjDz18/Ph4zSRzZwhRdVTju3L9eLD + lWprv5NsZ8q1Tb9fNR/SbCfKt7XTg5vNZTssy4ptSVUDCiQOdV2uBSLODa29NznESG2fLBBxtrtrEzt/ + Ph2yVzJNylQckjxdiZwfx/bgEZsv7h+3l8QGE3MMRGouKTJS5xiIxFixiDmGIkmZyDSviYPwkCcQ8XwO + cUwymhIkVju/Q1w06NOIndgDMjncSJzLcVDEK1/prpSj70r1za4S5tY0lmEwii5zkWG0Ao+TbHb6VuLG + 6PCQv7lXq3T/KAraQS6DprFRf75i3J9DkcW6/bKe2mSHNCUjYukLO288GB3UsgWiM2aoIT4QQd+S6i6J + LjmOZ1zEw3Elng+vEbM1DUSNaeflqHZevkI7L0e18/IV2nk5qp2XRvvcpXbkL7NMhKivkH2+bnz8mE4O + rhsR/7UCD0eM7l3J4d5VKiVxgaaBob7k5jNTqciAdTFhaxcT3NtunM9VtzRun/Oveg5e9SqVgtO97DjI + yGlskJaFssO+wcAmznkqMA759dx3TACbByJsBH3Wx+BwI3mG2oNBtz4MjmHVGOrjXuqZxc3Nq3yCtuwC + 4oEI3WvVZHPH4UZecpgw4GbNLyFzS6Qj200IcXHago5DjYwa9QRiTmYbYLCYec692jl2tZfMNL1E0/SS + m6aXeJpeRqTpZTBNL7lpehlK0zqX+j7Ty69pp0QELXC0pEp/cVcIYI5QJNZKAUQBxGF0RsB+CP2cQo8E + rG0Xn6xsMdTHq8gNFjDvM9XvKx5jOiW+AojDmfGEZzv1dGVsWQYcoUj8suwrgDinKSGy/QQGnLwyY9GQ + vdl9sfkWvbyYMO5uc4Yrb2nc3mQHV97AgFsy20mJtpOS205KvJ2UEe2kDLaTkttOSrydlK/STsqR7WRz + Xg3x+bsFQk7ObAcy19EM0Vl39JkErX8zfrG3dqH5Myv1kJQjnkVoY4DvifzCqYGhPl5+GCxursRav+rC + lXf4oD/qF5gOOxLrzWnknWnO29Lwe9KnvxIXLxqY76O/0Ie9a818gxl9d5n31jL2vnL/d2LqWSDkpKcg + /t6zPiij3REwSfMsJXVQXNY3b8j7SPSUY9M7IKdCJpdXH5L1aq1Pf2paKZIck4yMlWT7g+rNZNR9ckcJ + h69Bn7T1Cr+404TirffJKj+Kuixpr0fjlrHRkg+vEy/5MBBxT95tFlGE4tRVstunp1TnB7M9gYiP6z07 + imLDZjU4KzbNlqoxMXrLQDQZcZN1/EAEdRdcXkXFaAwjoryNjvIWi/L7FT/XWxYx63oiuqZ1JSNjRde0 + IWHoGl7hjgU8gYjcvOvYsDnyjvUsA9FkRGaF79jTN/h3rGUYEeVtdBTojl3vUvW/qzfJocxfLt++eUeO + 4hmAKBt1JWIj3sbdvqBlbLSoG3jQCFzFc3zSPg+m7bkfRXOfMcRXVyxfXcE+QTh1xsZgH7mKQvsT7Qfl + lnV9CgN8qgnj5EeLIT5GfrQY7OPkR4vBPk5+wC19+wEnP1rM93XtLtXXYYiPnh8dBvsY+dFhsI+RH0jr + 3X7AyI8Os32rPP0hrlbEfkxP2TbGq7bgO7a6cieWkA7xPcSc7BDAQ3t1oUNAz1uG6C1s4iTTiUOMnATr + ONDIvET/CvXGG8UxJ03knRjbpJ+It7NSqxfSCWEAGzDTnqk7qO9t57x4V2yyATP9ig0U95arf3G9CrW9 + u1Q21dkurTa/0oqUEi7rmA8/BLdD47KImdEUuCxgjurWwgYgSvtmDnnM67KA+bk9Wz4mgK+w4+zTSv05 + 74pVkuaPZZXVO1JOYA44EnM5BYAjftYiCp927BvSturq6y7/jsa/8/hmNEeUNIxtOqhfKqLyGzZAUZh5 + 7cGgm5XPLmubq/VV8tsbasPcU76NoQI8v9EcTtmjlhu/zDTzCNtmQ9RuL7V1pV/AOG632TNVjYq8mFdX + vxHlivAttGoTqiW7Jz+vlAIhlRf37QdqGijCs7yjzfy1BGRJ6KnZUbZNT0rpGarmRYN9SrpJXBY2d/WT + XjZQbTh6SwDHaD87fVMeD3ojVsGKhqiwuM3htox38mCDEeWv5fTuZnrTbHb1bTH5Y0pbgQ/jQT9hyQAE + B92U1aAg3ds/zR4WpBf1zwDgSAhbCVmQ7zrmgnSas8s5xp9HUb30rXpzLvFRkuSwwonTHMu8Lo8F4Umy + BzpOKaqnbK1frdlk67QuqyTdqm8l63T84HhQNBhzJbb6eOhXCGqYnKhPopKEc3tNpjf9Mb2bzie3yd3k + 63RBus19ErOOv7ldDjMSbmkPhJ2U9/pcDjES9tlxOcTIzZ5A7rSv4pT6wOI7QgUSUITiPKX5MSJGgyN+ + XiFDyxi3iAVKWLOgm+VsSMQqz4lfcPPPVoTi8PNPBvJv8e3jcj7lFW+Txc30wtGTuJVRRAy0937+cjP6 + NCb9XZvUW/+nxYYi6BDPU1fpuiaKGsYwfZ1cjzao79okZ6dTl8OM42tjl4OMhB1OLQhxEZa4uhxgpNxI + FgS49Hzz+P0ZHAzwUZZ/WxDgItyAJgOYSPt62pRjIy2n7gnHMqOm0sxPIeLSaZNxTLQF0wbieCjvfpwB + wzFfLPRL/un4O/lMOBZRUC0N4VhO241TJiA90HHyp7AR3PFzJ05B2HWX+ctbdbOqUUZN8xog6Nwfc4ZQ + Ub1ttlh8U19NbmaLZfJwP7tbkupJBA/6x9/DIBx0E+o+mO7tX75/nM5pN5aBuB7SrWUgoEd3MHS3NFf/ + rCtCoxtyuJE4t7FPhqyRPyOocuNGPGNDBWgMcjWC8W4E9rMjBEf8zOvH68Hu8/aTbVXuqS8Xo4I+xteb + 0Y8D1FctjtY9OQO2g9I5OX3fNiwr1VPfltWeojlDtovWOekJ0/JuPP7O4qjp+c5Pz3fE9Hznpec7Tnq+ + g9PzHTk93/npOV1+vr+hvE7bE57lWNA9DdObmgmI6/u7xXI+UY3fIlnvxPiDP2E6YKf0KkA44B5fUAA0 + 4CX0JiDWMKtPPtGS4Ey4lmb3ZLGuCZPcHgg664rwxMzlXGNejt9utycgS7LKSrpJU66Nkp0nwHBMl4vr + ycM0WTx8UYMwUmb6KOollGUXRJ2UH+6RsHWWrN7/pru6hMd+GB+K0O4WwY/Q8lgEbibOAnk4a+4K1VUh + 9J8wHovAKyQztIzMuEVkFiohMjId5GA6UDb28EnMStukAmIN8/1ydj1VX6WVNYuCbIQSYDCQiZLzJtS7 + 7j/+d7JeySvCWmADcTy0SWkDcTx7mmPv8qRjsHrCtmxov2Tj/gr1HxtdVLONXjQgKS4HRb2rlxh1R9v2 + 5qmk6vymFOkZ8lyq47oZ39m1INuVkw5m7wnHUlALekvYFvWHq/VqRdF0iO/JC6omL3wLYcW9gfgeSb4a + 6VyN0lKTuEN8T/1cUz0KsT2SnOMSyHGlpWo6xPcQ86pDDM/D9E5/Se+LkuZ5vyJJJuuyGH+vhTVAPNk8 + tKcH6DjfqFcAlWuqr6UAG+0hq4MhPkIbYGOwryL1JHwSsKq8yh7JxoYCbIejahiaU6bJyh71vZxfDf9e + PX/4vFHtV033nUjfqhudLH17RZjnB1DAu6+zPfmXtxRmU3fsv3hGTaLWTbbdMrUa9b27VO7eXlGVLeXb + uiROHqjCMwg49aPhZpvukmztUcAr07w47snOFoN9h13K8SkM8rFuoA6DfPKQrgXd12CQ75l5gdj9ne+S + jchFTb7GMwg7y6blrB452hMLmjkVZoeBvkw1cVXNMLYg6CQMPm0Kth33apArxm+IC7GguRJ1lYknTnqe + 0KCX8rANwQF/Mw96zPI6K7p17fSUARx+pD2rF7ZHemHt30lrogAU8Ir9ht4paSnfVpTMjtMZ9J2HUmbP + SV0mNbnmN1DfWwlWBnWY75NirQ8X4ndHPQEag1e0LBhw/1BVsjiQFixCLGLmtBJnMOBMsi1bq9iQ+TB+ + NxQQht30u62lQJuedmLoNAb7OOX2B1ZafzDbxzMIO2UiSS/OQSxoZrS8LYXZSBttACjspXeBWwq0HUpO + eVQUZmsKA2E1KUzD9qPccbQKA32Elbw2hdmao7a2x2LN055x2L/Ltqzr1RxsLFn3psZAH+mlD5cDjX+L + qmQINQb46mqdqlZwTy/xZxK0cur0hgJteqjO0GkM9OXrtGb4NIb4GB2EFgN9BT9TilCuFLxsKbB8KQiH + XTqY79MTPI/kerylANte93Kb7i5Z2aOAt8zLX4LcC+ow3/fEnex+wme7zx+pPkO73pUtPxv8KH+zutx/ + u33t5efpnPyCpk1BNsKg0GAgE6ULZEKG6yAK+AHIaDFqwKO0W36xQ3Q47m93WmD7O9z3E1/NdjDUR+ok + +mjvfZh+TSaLu8vmRfqxRgtCXJQlbB4IOH+pEiLIwobCbKxLPJO29a93b35PZnef7skJaZMhK/V6fdq2 + r15qIVlmm7St6j+bZ42rdPzKWpdzjGWyU6HGt1MWZLv0Yye988n17EHVbk3qUKwAbvupue/neZOqN59p + p5x5IORcTB7aFwi+jJ94hWnYnjx8+0g43gtAYS83KU4kYJ1eRySFCYNubkKcScD68OV68U+ysaEQ2weW + 7QNmU1+f/dlsl0O9qTAHFImXsHiq8ktBsAzMo+61+cC9pj9vXgviyk8w7Oam8jx0H+vGiGzUEOJKJt/+ + Yvk0iDmv57c8pwIx53z6PzynAgEnsaWG2+jTX/ntjAlj7qh7wDPgUbjl1cZxf0wSBdog/XlUO+QK0Bgx + CRRqk/TnvHbpTAasH9jWDyFrZDuFeLCI/IQPp3pcqRksM/Poe3c+4t6NasdcAR4jJhfmQ/UDq107gQEn + q30z4ZCb086ZcMjNae9M2HaTh/3AiL8dsnOaOpsErdwbBcARP6P4uixiZicI3Kq1H3KbNJ+G7ezkQFqy + 9kNyM2ZgmO8Dz/cB9cUkrCMYESMhrNwPStBY/KYYlYCxmAUmUFpiMiKYB/O4+mQ+VJ9wm1yfRuzs1J4H + aytqM9tTmI3awNokaiU2rTaJWomNqk2GrMnd9P/wzZqG7MRBKjKnfv5zRNuNj1ONz+PuuYGRqvUl9t0R + Gqta34hKqFC7HjNchQ14lKhkCrbzrCGrg4a8H/jeD0FvbMKPaP+Br/H6AIgoGDO2LzBqXG58NaKADZSu + 2IwazKN5fH01H1NfxfUVwuNz6ztRuTEfrBV5fQd4jG5/xutD4KN053NWXwIfpzufs/oUAyN163Ne38I1 + GFHU7X15lTx8nOp1F6PNFuXZaJseWJDnoiz6MRDPo58y6w3+0mKTrEU1flkKxnsRmm3riNaG8Uzt5h+U + Q1s80HEmX//4dEmSNYRteacy/MvNp6uEsg21BwacyeLz5JItbmjXfliJK709kH49kvQmEIKDflFE+U3c + 9v8zWR2LTS50vUMqsBaIOHUpzrb6IAzBc5sCJEaV/oqP40rcWNQq4p9ADfHP5ganJ/OJgmy6/uUZTyRm + 5ScpZICixEUYsscVC8jgRqHs6NQTrqV+OQj9/gtlExqfRK3NAkemt2Exc1ejiA1PfsZx/5PIywPf3+GY + X+cFV96yYfOk2EzjfoLvsSM6QyZyHQXx4Qi0psenw3bCGmcEd/1dq0qzdpDr6goszdVBruu0e/L5JuDs + kzxC5cZtdz1+hagBkRHz/nZ2/Z1eNG0M9BEKogmBLkqxsyjX9j/fJrfMX2uhqJf6qw0QdZJ/vUm6VvYu + ugge9FNTA91LF/iYnCr4frrd518nDw+apF+2QWJWTlqbKOrlXmzoWulpa5C9dT65u0m6dyTG+kzGMam/ + iPSFJGoRx0OY4Th93zE0i/RJjoaALO3RtPp0UL2Tsj7cm9DJHNA48Yjbh5mMY9pkMl2pIdm2rH4kx0Km + W6FGadutoOz5PGxyoopHWr6p77uG4pUuOyRyYm4z4rmhNuXY2kFPsUn2ot6VtPRwWMAsX2Qt9qdDL/TP + S9ZHWTfnIxBTaFjnxG+2htE/mxTmTDm2Qzl+94Az4DqkOG5Kxs1ugo5TCkHLNA14Dn4ZkMEyQDuD1kAM + z/XoczPUVy2uuThCP9dADI/5+IWyZYgH2s7Tsxaq0uQs4/9NLt9c/aY3QdInBSbp0/MVwQvQlj15WCyS + h8l88pXWywNQ1Du+5+GBqJPQ8/BJ26pfID38WMtLVdsIwuHxEGubV9n45wan7zuGXB8+XDwm499fdTDb + 1xyXoerBA+m6egqyUe5EE7JdxPG9gbiebXrMa2qd55G2lThjYCC2Z5unj6SkbwDHQbxN/XvTOcKKInPQ + gJdayDzYdddvknVVJ7TVNQAKeDdk3Qay7A+XdJGCQNdPjusn5BJkkQAs23RdlxU94TsOMGY/9weyTkOA + i1gJnRjAVJA9BWCh/zDoVx2k5Jb3HgW8P8m6n55F3f20MaiNgT69KZdquahVks3a5kwm5SH9eSTdBGfI + dkWc5ofgiJ98Eh5M23Zil8nrJ+kEpreqPYXZ9M6UgqdsUN/LzB8HDXqTPK0eBf26AUU4jt62s6pjwrSG + wSgiMgb0O1jl2CZDVnYmeAY7ykHPj6nes+7dt6tb7ifTh2T/uCW1yQHNUDw9XokPd7IMRWueUkbGah14 + pKIsBDeCZmFzO5h4hTwCRcMx+SnnW9xozDNXQRh0s+5O/LTV5lO9yRdJpwHP0Vw2Y0TooLCXMZZzUNjb + jFv0GbG0iUDUgEepy7gYdQlGaPOUk+wWCVo5iW6RoDUiySEBGoOV4D5u+yV/RCtDI1rJHK1JdLQmGSMs + CY6wJG/cILFxA2Xd1un7vqEZLFFbDgsEnFX6i6xTjGv6W9AsfzstpSp2NX3aqads2/FAOUm4J2wL7aTD + noAsER0mUADG4JQPBwW9xDLSU72NsgbaXvGs/0U7MrsnHAvl0Owz4DjIx2bblGOjHZxtIJbn6uo3gkJ9 + 26XJ6XtmPBMxjU+I5yGnTA/ZrnfvKZJ3712anjYnxjNR06ZDPA+nDFocbvyYl+sfkuttac9Oz8szZLne + fqCUc/Vtlybn5ZnxTMS8PCGeh5w2PWS53l1eESTq2y6d0O6UjoAs5FS2ONBITG0TA33kVLdBz8n5xfCv + ZfxS8Fdy6giL84ysNPPSa/bwebL4nBBarDNhWB4mX6ZXyfXyL9JjRgcDfYTpZ5vybOcnhXv5SFSaqOc9 + VOVa6O4aWWuQpvUv66HmeKfN4cZ26EpZKoQb7CiUcdXp+7aB1sfvCcNCWsbpruBs/03d/Numetty/m2x + TJb3X6Z3yfXtbHq3bCYmCbmKG4JRVuIxK/R5g8e0GH9O4aCIEDMpVWoke1W808fXuwDLOuJqKrER+0NN + yMoRqmBc9fdM7l4j6R3TmKiv8nM9Vzgyob5H8KCfUP/DdNCuZ4hkVUXekYYFjjZbLL5N5zH3vm0IRuHm + iIEH/bpAxgRo+GAEZp73dNCuC7bYRwRoBSNiRNeBuC0YXZfHvahTPfEZWeBc1WDciLvJt8DRFNv+B7ek + WwI4xkasy03/LOyUBJxoiAqLq75m9bHW1fiz0IZNcFTxfFDf3ouiTp4uOcEswXAM1fXdr2LjNJIxsZ7K + Q7WNj9Zo4HjcgoiXP84IAOPhCMxKFq1dD1LnPTdjezpoZ2elyfcRvi2m87v75eyaduyTg4G+8bMGFgS6 + CFllU73tr6t37y5H76XUftuldVk6pFlFs5woz9Y96Wwqp65yJJoBgxHl3Zvf/3ybTP9a6k0u2gUh+iTj + 0TEQHoygdzyKiWDxYATCW4U2hdmSNM9SyXO2LGrmpsJgCrSfJvJHjFzhoH9zlTG0igJtlPrEwUDf4/he + gE1hNsoGgT4JWrMrjlFRoI1bivAS1GY/73efWdBMWsDkcrgx2R64UoV63u6kwrYzSJklwHgvgrrJLhnF + 4IRBPv0KYLFJK/0mWi0KPcEm6XrIAkYjnZTrcrgxWZVlztU2cMBNL3sW65l1uC6fa8q7ywju+ZtbiVFB + njnP2Gcq61Z0cc+vaz16+9BRoI13BxokaGWXNRsOuOmJa7GeuV0YmmeSqu1Bz9kc2F0/E4UdBdo4bdGZ + s43J5PaP+3lCOFbZpkAb4a1hmwJt1FvTwECffhWI4dMY6Mtqhi2rQRdhbGVToE3yfqnEfmkz/bbhGRXo + OpfL+ezjt+VU1aTHgpiINoubSbuygvCAO1m9JHezm6gQnWNEpPuP/x0dSTlGRKqf6+hIyoFGItcRJola + 6XWFhaLe9s1UwpQrxocjlKt/qeY0JkZrCEfRb2rExNA8GiHjXn6GXzW5VjRJ1KoqpcuYPD3z4QhReWoY + nCjX0/lSb/xNL/IWiVmJ2WhwmJGaiSaIOcm9awd1vbO7T4z0PFGQjZqOLQOZyOnXQa5rfkvfndMnMSv1 + 9/YcZiT/bgMEnGqs+SapxFP5Q2zIXhOG3Zd69Eadc/Bg2K0/5Wg1Bxipff6OAUwbkQv9Yhnj8noU8pI2 + C3YwyHek/2K/t6H/yrp5kPumaVNVb0lv7Ux2mnDALUWVpTnb3uKYnzcTBvFYhDyVNW2BKcZjEQp1ETER + eh6LoFcXpvWxYgY447A/mU//vP8yveHITyxi5tzWHYcbOcMmHw/7qYMlHw/711VWZ2vebeU6ApHoo2OP + DtiJ84gui5ibVVUVS9yiiDeuIhisByKrgcFaoL+Lqc99YAMShbheGGIBM6NrB/bq9mm93pFVDQXYON1D + uGfIGEycKMxGfGJmgYCzGQ1G3AIOj0WIuAkcHovQF+I0fyx5UWzHcCTyozRUAsfqKi7S7rcYj0Tg3tcy + eF9TXpOwIMRFfdhhgZCzZPSLNQS4aK9+Oxjgo70g4mCOb/rXcnq3mN3fLahVrUVi1oj5asQxIhK1C4Y4 + 0EjUEZ1Folby6M5GUW9zTBCn0wgrgnHIE5s+HvQzpjUhARqDewuE7gBqX8EiUauMz1U5JldlXK7KoVyV + sbkqsVzlzTdic4239/dfvj00E1ubjDbGsFHYu66rnCPVHGyk7PPucoiRmpYGBxt3qdxxk/PEwmbyVvcg + 7LibtV/Tu+V8NiW3lg6Lmb9HNJiYZEwsapOJScbEoj7kxSR4LGoDbaO4l3wHOCxuZjWeAB+OwKhoQQMe + JWPbQ/cEtQm1UdwrBftypaiD3qjclIO5KaNzUwZzc3a3nM7vJresDDVgyN08HCrq6oVuPqNBL7vydA2D + UVjVpmsYjMKqMF0DFIX6MO4EQa7TMzVexpo0aKc/lDM40MhpI5DWoU1n+pS5C0NuXpuDtTbtkiDiJLlF + IlZuxp9RzNtsTM6+o13DYBTWHe0asCg18xkUJBiKwf4hNfokqvmK7nfTxZrCbEmZb3hGTUJWTqMFt1Ws + ngfS5ygLkWcF42buQMhJf3zQY6iPcLCJT4as1CcTLgy5WX04v/emSvv0mv7KmsnhRv3WRq1qOclVnwVw + jKZu1n/g+M8w6qav3XRY2Ey9t3rM8T18+6jPPybnncHBRuILhwaG+t4whW9wY7uVMdfb0iE7ebPzgAKO + k7GSOUNSmVquegz2SV4pkFgpkFF5JvE8mz/cL6acQtaDuLNZkUV+zAgJAjGIyxNsNOCtq6Os2eqGduz6 + bXXeDLNFYlbiHWFwmJF6V5gg4GwWjqZ1XZGlZzJk5fSSIcFQDGovGRIMxaAO3yEBHIO7CNLHB/3kpUOw + AojTHufBOK4DNwBRugkGVok1WMhMn5roMchHnJjoGMB0TnpW5lk0YGdVfEidd+olcHLfYDEzbxWsj8P+ + y0Ts0yznuDsU9vIK6wkMOLmVq8MPROBUrQ4fikCfbfNxxB9Rq9o44ucX9GA5j1jnCRqwKMfmqQF9yRkk + QGJw1pw5LGBmdKrA/hSnKwX3oujTN2cKs1Enb0wQdW4PTOcWapdiV2MijuFI9NWYmASOxb2zZejOlrH3 + nBy+52TEPSeD9xx5necJQlzkdZ4mCDgZayl7zPM1b7Tw38iDBHgM8jsyDouYme/V+TjmJ/dvzxxiZPRE + exBxxrxjhjhCkfTrnetU72lzQ10BH/CEIrZv190d9ytR8eOZFjwauzDBb3Q5n/K6s5BiOA69UwsphuOw + lnYGPAMROZ1pwDAQhfrWF8AjETLexWfYFdN7eGcOMepW8hVucl8TiBd9i7sSJ9Zi9ge97j1BgIs8c32C + YNee49oDLmLpahHAQy1VHeOalvfzaXPCyzoXaUFsTT0atdNz1kJRb9NukF87B/iBCLs0K6JCaMFAjGNV + 6Z2x18TF27gmHI/+0AgSDMZoroXYzUYt4WiyLisRE6gRhGOohkk/wCHuvIFJQrEum3Ip+XE6wUCMuJJ9 + OVyyL3VRjPsZig9HYLysDRpCUZpHjkf6MllMEowVmS3DudLXE1GVp6UJxhNVVUbkUMsPR1BDxkO9i43T + WsLRnumrskHDUBTVaLfrAeNCnTVovKzIuCUhKzI898k9FZNErd3Z2+ya5cyHI8S0knK4lWy+0jUGekvl + 9Y+YWJYoFDOqfpGD9UvzyoHYpse8jojRGQai8O/2Mx+MEFNvycF6S0bXJHJETaK/Qzp7HOODEQ7H6lBK + ERGjMwSj1Nk+JoTGB/2JuorsOTJKKwnHIq8kAvhghO6o8vUqIsrZgUZ6jQpsuO7SM83M3soJxb2sQVdH + ota8LH+whtQ9DLqZo2l0JG3su8qpIkwc93Nb0oGx5mO/vyjz2i+D1968v5t3c2ScCLYAjMHrIWG9o+YR + Ize1exhzdyukeHeMxaMRupZfXUe9k8woliMQidd/CPcdYtrbcFurP2030OCmfkejdn4rPtSCx7R44dYu + tqUbbuUYu+6YoOP8c8LYf/MEAS7iuO1P6G1a/UdqPdQxrmk6n336njxM5pOv7X6zhzLP1rTn4phkINZl + siuJBQxWhOLoye6KcYNjklAsejFx6ZD9kVUFwoqhOJHp9YjUi9aXsmKnbuOI/O8EoRiMTh3AhyKQb0MH + Drl1+86Xa3rIzljAijgGI8Xd62fFYJzsEBklO4yIkaRyHR1HSwZjNVVpJmRktJNmIF5sDSPH1DAyvoaR + Y2oY/SVdZl4h1lkzFI/TJcMkQ7HI0yugYUwUxiRLwDMYkdzxhBVOHPbqvMCqvOajSjRLLBnbsvg45G9+ + DFtv0r6dvEILXkPYnIlKX8fRY6CP3AD2mONr5sA5IwMT9Jx6bJz+IC657zHQt04ZtnUKuuitu8GBRnIr + 3mOgj9hanyDERW6VTRB26kfNnPxtQdDJfeNt6G237nNGA2SRoJVeJRucayRuPuTvO6T+cn6YTW4EXRhw + s5wBF6P5tFHHy1ypja7QZrzJCL7FSF3h7a/sbmoe+kC6xxyf+q+NXsfR7Xadqn8xDidBLUg0ztITh3XN + 1BQB0qKZnE+P9a5Uo+YXzjoc0BCOoqop6sv9oCEchZGnoAGKwnwXIPwOQHuKS1lPtjUnD04kYv0ottTV + dTYKeRmvOOFv6BqfJKuslnXFFXc45Gcvgx56wyHi3eLge8Xth90bW9w7x+ahCPVK6ktI80e6vWch8zHb + MO4STfk2zuQU+mZ1++hwLQ90naZ8W2JszUJ1mixgPj0N0w/Bk7QSKdnvGYaiULdihgQjYiSieIqOoyVD + scgbQIOGMVHif9LJEoh26vPHZJPhACJx1jXh6yKjVkMOrIHkvFUGv00W8RZZ8O2xiLfGgm+Lxb4lNvx2 + GP+tsNDbYNy3wPC3v86bLWzEpmnnjjJ9FBy5o8DiNLuh0KeRAR6IwD3J5zF4io/+lJ80oRThdlsDvVZ+ + pzXUZ23Wk+SiIDs7DjKyOsFoHziqizrQQ43YFWRoR5Co3UAGdgLh7gKC7wCiX+5jF9p9oNTu+cV2j5fb + fTPtk27+RXOeMceXSb1xRbbpngMQS4JHe/Zz/UOe13PYgJm89bALD7jJGxFDAjcGrQH11jGo+kIlO/mJ + So+BPvITlR5zfM1SyaYDu65yeofbx1F/hBv18i8ZvlrqMhB/5cchraRItlW5T1bH7ZZYU3m0a28WZLWT + 8jSxAbpO8h5G0P5FrL2LkH2LuNtN4ztNs3ZBQnZA6uarGJPtFulYu6fHzRI1ktQEHWd7rianxbRIxMpo + MW0U8kbsKjW8o1T0blIjdpLivl2Ev1MUc0po+IRQyR0FSHwUINmjABkYBTD35kL35YraXWNgV42o/b4G + 9vri7vOF7/FF3t8L2NuLta8XsqdXf3dtjsSOqI2iXnp757Cu2cgucufZhUNucvfZo4fs5A40aPCiHA5l + pd8zO8+hEGN4vBOBNdJCxlmnP1O7MgbnGpshF71hNzjHyFj/BK58YuydB+6bd3qPg/qioMHhxm53AFmr + W++Rq7ckdqynt5z1cz3l2XirOizQczJmy3sKszFmzD045CbOmntwyM2ZOYcNaBTy7LnL9ub0KktmD0ow + ny4WY5UWhLiSu2uWTnGGUcjLqw+P673MnhL1j+TH6OlxAA16E1Gsk+fLCH1nQKJsxJrlVhxiFOtVE3KV + l+OH3LgBi6I+38vH5Pk3XogzPuT/EOf/gPh/bLYsseIs49W799xy6KJBL70cIgYkCq0cWhxi5JZDxIBF + 4ZRDCB/yf4jzf0D8tHJocZZRn8vdDJoII04Hs327X8l6tdY/oHo51BSlTfrWunp7dfq0zVtJ1QMKL44q + mYwr7yjP1pVFhtEgfSvPiNjad6DaRCEWA58G7ack59kN2rYXJb+0uSxkjixxqASIxSh1JgcYuWmCp0dE + OYF4JAKzrEC8FaGrAHd1usrFe9KGZDCN26PkQ+5Dmb88jR8PYDwUofso2ZVVMX6qEOOtCEWWqC8xirkN + Qk56QbdBwymLS708txs+J7koHse/XArTjn1TquH0iqRsEcejOwiUNfYWBLhIJdaEAFclSJuluhxglOkT + Xach31VudN6QJqkA1PE+ClXe0zz7W2ya6bG6TMZv6owbvCh6f5syWwtV0eViXZcVMYbHAxG2mcg3yaGm + u88kYO3uibYK2pZVUqvMJsxzDYqcmJlsp7D110gxTNBxVmLbTHfoyqh5p0aHTv4WVUmKgGuweLpZKwvB + i9LBjltGliU5WJb0cbrUjb89EHLKdjflilp6XBhyNw86k1SVgVKVAVHRA7gGJ8qxXjNrCIvsrSshjsm+ + 3KjKWD/30hdQUV4HxHgjQlZ2G8pI1Xml7loJ07Zd/akoE7krj6r+qERdvVDsPm3b9duy6i7Tj1Z04nWX + of+Ubjak3xE22VH1h/SU6infpp8aq/+m6joM9HGTHMANf5Gk+qWb40ofBi5rUmkEWNu82SS/ymr8Wzsm + Y5ukbFdc1VKV/WT1UguSFMAt/yp7VJ2GTZYWuqxQrxmgLfu6PLyQpT1kuTaq687JKYuzjOL5oO4KgqoF + LMcpZak/0uJso15tti+L+rHci+olkfs0zylmiLciPKb1TlTvCM6OsCzq4qu0eBTkn26DtlO2QxN115Kt + Dup6K5GndfYk8hfdcyKVIIC27P9K1+UqIwhbwHLkaqTHKd0WZxuFlEm9U7emURjmFDUoQGJQs8shLes+ + y3NRqUKyygrSkA9iA2bV72l2JGXrTwInRpGpWy75lW3Gj8pdzjaWm3afXUb58FjQTM09i/OMqppsigy5 + 6vJhz931/960tyE/DOrBIrJT3+PRCNR6yWNRsxTrStRRAUyFFyeXu2yrjylhppHHIxEiAwT8+2Me0+hi + Ci8Ot7/psaCZcx+fOc94vHzPvlaLdcztQUbUUTeAwl5qi2FysFF3KuZzZlogDj9S8YbqLd7YlmP+23Pz + CUV0hlwXr2UwOc+4Lver9DeiroVg1weO6wPgYuSsyXlGei7AedDkM73D7qKwVz+N4kg15xnJVeaJ8Uyc + MgeWt2fW7fAM3Q+lKtNFs7xcDwfK1VNWHqUaDagCpbeSqiklZ9BlRy6a2bS+ZaFEclnLfCh/0UpVC1iO + Ss8r8caBLup7uz5H8x2q2GRts9gc10IlzZrk7CnMpge2hzzlas+445fZ34y0NTDb1/W0yEKTA4yn9G7+ + QfZaNGTnXS5wtXKd1jWt1J8Q29M8TiBfl4k5vpo9cvRYzyxrNU5dM67WRj0vRwiYflYfdPdLJXKRUpoQ + GwScxMq/h1wXvefSQ7DrA8f1AXDRey4W5xmp7fiZ8Uzk0nFiXNMzu3g8o+WDMVqCR0pW+0pOPYC27Efu + xM8Rn/U5cgehR3wE+os8mf4LmE1vUlenSf9ggWL0acNe6qepUua6Dt62T7N3+3St2pz06t370WHCmnC8 + +FAjo7y7vIqMogx9lPVVlkwWd5fJx9kyWSy1YqweQAHv7G45/WM6J0s7DjDef/zv6fWSLGwxw7dL1f+u + mqNXXi7fvnmXlIfxO9/AdMguxfgaDqYNu142VjZryNa5HiOJQi8XGX2PYnwfYcMvF5tQueg//PrA1Z5I + yHp/fzud3NGdLQcYp3ffvk7nk+X0hiztUcD7x/ROfXY7+7/Tm+Xs65Qsd3g8AjOVLRqwzybvmOYzCVlp + tcUGrS3On9x9u70l6zQEuGg1zwarefoPrpdT9t1lwoD7Qf19Ofl4Sy9ZZzJkZV60wwMRFtP/+Ta9u54m + k7vvZL0Jg+4lU7tEjMv3l8yUOJOQlVMhILXA8vsDw6UgwPXtbvbndL5g1ykOD0VYXrN+fMeBxk8fuJd7 + RgHvn7PFjH8fWLRj/7b8rMDld1WpfbpPJtfXhDdZUQEW48v0++yGZ29Qx3usy4d229Qv49+e8Enb+nGy + mF0n1/d3Krkmqv4gpYYH2+7r6Xw5+zS7Vq30w/3t7Ho2JdkB3PHPb5Ob2WKZPNxTr9xBbe/N5+YYU0kR + nhjYlBCW9rmcY5zNVXt3P/9Ovzkc1PUuHm4n35fTv5Y05xlzfIsJr7BaYMBJTlIXDrnHb7EFsb75uMqz + NSMhTpxnJO71bVOYjZGkBolayYnZg75zMfuDalOI52Hc4CfIdk2vGVd1hlzXg44galFJmq7nPCPrJjQ5 + 3EgtLy4bMNPKjIO6XsbNcoYQF/2no3dK/xH1R2P3iaqMp3c30xvdi0i+LSZ/kPp8Pm3bu8Frcjeh9SVN + DjcuuEqnDZ8tFt8UYTTyFLFP2/a76XJxPXmYJouHL5NritkmceuMK53Zzocv14vxs5o9AVmohb6nQBut + uJ8h3/VPquefgIPz4/4J/7YP/CoSwMN+eiJ+CNSVzed6IuHP5u7XYxyy3sYH/awU8hXDcRgp5RmgKKzr + R66Yc43eVZEbO6il4zVzWBvHauCQ1o3Xo8H6MxG3auguZd+ggXuTM4hARhBz7uhsjo/O5jGjs3l4dDaP + GJ3Ng6OzOXN0NkdHZ+YnnGQw2YCZnggG6nmTh8WiPbB4QdQaJGAl10VzZJQ6Z49S54FR6pw7Sp3jo1S9 + hx5Fpb/vG5LJ7R/3c6qnpSDbcjmfffy2nNKNJxKyfvuL7vv2F2DSc30s3QmEnKrRpvsUBLnmt3TV/BY2 + kftVFog4iXeFySFG2h1hYICvGVQuZvd3ZOWZDFkXfO0C8FKHtmcIcNGrQPA8vvMH8+n/kGWKgU28kngC + ESenJHYcYmSUxBYDfX/ef6EtODA5wEic/DsxgOnPCb2WUQxg4uQBnP6MtLfSfZc0G1zsxfi1uSZjmbqT + wdtHI9t0/LkVEGuby/3h2J5jrr6z0cew6W0nTku7KHHCJivqQX+JmDJnxjDJlJHIJmS72qQibNFmQb1L + rJM/PnWvpaqUGGtzMNi3WeUcn8Jg31bkYq/fouVYz3DI3R6HQ9mIIuQIRdofc34IBYfc7ZsXfH3LhyLI + nxVfr+CQWy9yjcuBkwGOot+FTA6V0JUAJ4bJwxGYeYvmql6guEqlYEob9v+1dn49juJYFH/fb7JvXVTX + 9MzjrlYrtdTaXaVG84qoQBIUAjQmqar+9GubJPjPvcC55K1UcH7HGNvYjn09Re63Bzlai3n2imx25BN8 + O15e9wguI3KqS9Wb8wy2TV6Y3TJV1tnjw0EzDhP5qfLUVvZ4jvRDf6aaLi/rrEffPEPh3Fa2fQxl2k1Y + y0kG57TvmnM7BN07dxdhJgaQaS/1CC8152XjFvQyi0HLklWamRZuZxq5T6GDx5hwauo1eeUAOA8bAM7G + XJJZjPppB2RXPqefdjBFQpf2dS+GRE36qrT4ec6qFXZXgueS7cxf10hBWQ17kHrKYdiRiJMHHUXUGXez + xbGO2GejwwJX45Heyn19tu2ibSABXqBkqMOXS4QdpB53xUdu8st2G929/+cf/0aYjszjDR8bbHB01xAk + tLw7KoIm+mxPfquHi3Wxh4FaQ5F0O22Cq6anTB1xpqsm6EBYVldDkODmwpVRvPMbDju/EaRh35+uSTDv + rmSoonJD9rtMD8mtkiYCK4pnGbNOcMvEQzwve9Ccfl7bz0jb5OW39OOUX/cqpkq9nwHPediU9/PvX2+3 + mz/XeROwhd4vT4m9Pc27bNd/+faQNIRQMi3XcVOQdoE/DVrqadIqf/ZpoJcG4UQFOz9x7zDpZAxdEoAa + i2fY8KCcQ3g+8Gysq/FJtjdsWhdzTgCC84QE035Wz7XJ/65QqshheEQgXMzUhWT6mwUwHnDLGkonuei8 + Fqmfc8DKIQ2Y9sBrKYeY8bFzVatsLGGJy/qMY2fWbiNRsL/lykhef2s4xu+6EvApDOEn6D/5Qp85vH9B + rnhCj2miRTW2C2170HBVJvWew/VNY4OjUUSx7EAHDaLPyCm+aMAUaVkyHsyMBVAeZX35ssojAJAeCjpT + IxJSTD+CKI729ZQDNmAdRRQL/gXN01FEuFp7OpIIDS9HEcUSNGWBkqGueeVMdD/mBlOw5a0Gi/J9h7lT + le2u05uIUaj1ycOc6fpKPsWZcHxIVi4juqkwixLy5nZ8tqw7yzNCJ1Xu6/S97A/mi7YdDi861s17nWa1 + ei86gfEipJuO4bfAX2bAn10+knvUPGAsySIYHzRmKylm2FCj6+sYou5xrUuxC5jwMBHZVnncAIzH0NWD + OkaUeo4Oj+QnIJNeeXMGTvJiAYzHrQy/iAzu6hn6t1V0rn6tKklEKcqTl5enPwQ/C4XCmIlPn4RCh3lp + h3/bGJ36UrO8qMfSkbsrs+vv39fHyT+QFTWMfJqv9KBh+XmJPCFwsVO8kvS7Qo4JrMGKhCPThEDb28lJ + /S1ZyvNEFMsGVcNpVkbxkGjevoqiKaWKZxxnZQFPp7eHc+4molh4zo0yigfn3F1F0fCcG2U+z85Sgxl3 + 0xAkONtGFUFDM+0uIlhwlo2qkXY45ju88fZVI61MMmlsP0JKcMEodqGOIGKR5wIZwcMi8wQyl7eVRokk + pAQXzsktm5O5PKX5VEpzYTzLWElRsXiWoY4gSsp8PlXm81XxLDk97yDMZSae5f06HM8yVlJUtPzmc+UX + iWfpiQgW2qrkXKuSy+NZkmKCDcezjJVTVGGi2XiW9zsk8SxJMcn+U4j9kyHC8SxjJUWVNAhMK4DEs/RE + BEsYz5LTUw5YPMtQRxLReJaElOCK4lnS6oC+Jp4lC+A8oHiWhNTniiNPkmKfvSLyJCMP+LLIk4TU56KR + J10NTUJ2goa6gCiLPElIQy4ceTKQBTxJbJNIOMGEs5SPbRJfXr7dltLGZDS2SaiLiOCGdl/F0QRZSsb0 + CK7BmUnF9LhdArZ5O5KII6jgceRJ82848qQnCll45MlQFxFFlZCOPBleQcsLH3kyuoqVGTby5HBRUFmI + yJPev/FHZ2uKJPJkqAuI4siTtNqnSyJPhjqe+CpFBt9weeRJWu3TZZEnYyVP/S6FfveZWOTJUUFR0EJP + RZ50/o8VdyLy5O3f31DON4Ihebhv9LM5sR2/17tGQiYQ8z54hsaESZeVTzL7FOueYDb1dZmvfYIrYt5n + 3ZMMBMJFFhWUkc/yRbk1FRWUu0mQWxNRQcd7ROlnUixJY5QquCNC9UJkXRCu/yHqfDA9D1lvk+trrmh4 + ptoccXMz0dJIBnjM6G4jHTlv+JHzZs3IeTM9ct6sGDlvJkfOG+HIecOOnKVRQSntBBnPBDIq6PWiICpo + rCSocFu0YWYQNuIZhM3EDMJGOoOw4WcQkKigt/tjAhYV1FdRNDQqaKykqMvDeLoagoRGBY2EFBOICuqJ + KNbmB47a/KBJcL+KiQrqXQJrBR0V1LuC1QgyKqh3oX9TIqDWEUQ4zmisnKK+yrGvBBedyCDijN7/jTeq + ZJzR+wUgzqiroUmysh3HGfUuScp2FGfUuyIo22GcUecCFGc01BFEcKo3jjN6/y8QZ9TVECTJO6DzX5D3 + ZL5L2pOoLekKcQMVSGmuKTVC7lVKc4XMgNeYaW28++vJXJ6Sr45SU6ujlHAdkGLXAak1a23U9FqbXrYu + qOfWBV2E8+EXdj78Ip0Pv3Dz4Ue7iP1/2A52T+Sw/mmPXNd36m7268+u//N9cdtDaafJP5bHbWDkDv+/ + bVGby0Wmmvq1N3f/K+uzxQaMnnP4K6vOy/dbUtppMpI3tHzkn/Kv6VvVbI9prp/IbH4qFm89oLQu+eV6 + NVMnEZ3Wjw7NcPQc2lIGspHXHrfqKUnLvuiyvmxqlWbbbdH2GbA5aooROZnl2/vlL9NXRbT2rUiLett9 + tljYQkbu87/ZvWRmS2SR25eB0CNxyG6zThXpociA8hErferv9onywj4RAvWEDvP01jfHojZxpp90ySzr + xXuiCCnH3VZlUff2HePBDBagOF+dfeWlGG9W+vGLXmZMszhnXZRNXSmQgOc8gXfp04Pdwmt27eoGXGoV + YDi/Uqlz0T3kPZIozrfTNUFmY5Qc1VRdGdUoOeq5XlGLrmKancjrZ5JOch9WPxOkfiYPrJ8JVD+T1fUz + WVA/k8fUz2Rp/UweVz8TpH4m4vqZTNTPRFw/k4n6maypn8lE/WxVL/1+jlKO+5j6yaM43wfVzwkW57yq + fkYE3mVt/aQxnN9j6ieP4nxF9fOu5Kii+nlXclRp/XTFDrupPtPNT2Q/uyMZOSawmHnDR21hI+K8nXe7 + woyZ9fDCDIMWJ3ie5LhKzuDp6DN4uvtxOtcod0DNorQ+Wf+ZmY3T7fDzd9rrx1T6KU+IBQuhvWwomy57 + l1jctBz5VyGj/ip8YllfsqrMwZYsVvpUeGO1JwpYa97YzJuKLosiJs2TfFf7bqVGkdhnrwj8xMhJvi6Z + az1ChOfzK336knxN91l/KLoXG5UJsCDUFN3ENJKRb0qKWuuXn3RFLkR7coqvryXmJiHfk1N8tc36Xp7p + npzk/+yk6KtypKqkFP0aEuoIouTXEFLssA/ZUzR1i4TsYAELPJLVJsmcy/IQH5x+zgEJI8IT5lygACMT + CM/HxApa+e45xLwPlGsMYd4FfDssY94JfUM8xPMyceNXviMOMe8D5h7LcJyOeuhVLO4oXm/39HWhP9Ln + qgIYN4nPWX7SxnC3p26bFlDru0M1mg83CclJiw8BSqt82lkdEIy+3dNfzK+KAMDe7xDaDxvpPV0c8nZU + +BRzmpcZAbRZaSNQdwgwEvts3ZFWelxwnZAp9wg61BJkZILAE1GsI/KjYiAjeL0uMyZIGky8CX2mmQIy + V/SwLQfKb6T0qYcezsOrJOIMowKQNIh8lj3s75CVNVwYfWVMHeLzCaB3YcyUVpxQG5Or7LOQcUdlTLUl + QQK9CxnmoSj3h15EHaQMFy7vaqK822ufbQHztMYn9bZM7BDQVUJxDjjnQHJOai9AaRVFazvB82kRwxKl + bdBRxP6I0/ojSaoEpCogNem5rPvfvkKomyhgCT4d9FdjoBufqqixXwMYuc9/b3rx9z3U0mTwm+zICB76 + rbuLfNbHSYmfOtQSZDSVd9HIuiSlaJ1lqOOJr1LkK88EOuaE1OE+p5mZiy4X/2YyKnxK1SOEqvfUb9um + VoDe3u8Rtm1TIQR7v0/oKjPRnwOHifqqiAaMBEdFROnsykoQNIhCVo5R/DecF5UefOt/A5C7xiMVH7pD + dwYwg8Bj6HGmOhSqBxPkyjxembcARt/tq+tdg8j17YH+UL6Z+MT1J5QMR+bxTAU9q2yPlOS7xiPV2ckc + ZVWrvsvMkcwAMJT6XJWW2UtalQppNxxVQNsCh5rfBR6j2arWrKXVJQR5B64s5tWN/a0W5V1lHk83WOX2 + U/guYjHFPmVtW9Z7Afim9KgKrBYqqhcK/jap6NvU6H6xYMleqCOJqxYDzXFIx3XLgGZBpKdkARAjJ/mr + luLMcUhHZBFOICN5SD80kJE8cOFNrAyp+JK4UEcSH1D+l6yEc+58RPlftAbOuVVe/idWvzk3PKD8L1mH + 5tyJl39iBZpzAS//xNqz4MJwMlbbNc3ufsQhvjoQgpJpEdVFegXcpc0KlW7ftrd9MIuhoTBi9t1zct9d + Y38sUyCcIIQu4F4XTxSyRDnAPL2Zd7zaQHWUElPsW66I2I54ZH8Ij2n6YE9pul7ZF8ixYZ6IYpl2xDYj + 6JF+EwjKp31qn8zkWZvgBqN2kvy8gvxMkp/tefSZ7qoLMtxVU/ShdTIn4ODsUTtNhg7QZgELPMzRUat9 + DGTGS52yqkIP1J4nka7LT1D1RBSrb6BPfiSMmPCi1A/2pLbrFbUFz7UNdQTxdjZvLygegdqhv3z5469n + ux/UrgMY2kpl91Qv9phg+E7Xpdi255UPnQudsOotWz7mn8EEfnm5N9NXti+TVfum0/eeICuSQLtcl68i + e30ZecBvO3Ooo11MbOb4oYjZLCDwsAvle/vLkb4HovtSgmtMTevdf8DcUepzzax4UqZli3y+A11EHL67 + 2u5QfIBQVxpx7WfLTMsWtSqBqXtGHvObejfMH56yXt8LG4T6yEE/FXxwNSGNuFXTHFValccizWtl0wDi + CcLf//Z/2aoCAcHMBAA= EOF # PrivacyInfo.xcprivacy is not part of BoringSSL repo, inject it during pod installation diff --git a/src/objective-c/GRPCClient/private/GRPCCore/GRPCCompletionQueue.mm b/src/objective-c/GRPCClient/private/GRPCCore/GRPCCompletionQueue.mm index 38dda64b72e..a49bb9c2566 100644 --- a/src/objective-c/GRPCClient/private/GRPCCore/GRPCCompletionQueue.mm +++ b/src/objective-c/GRPCClient/private/GRPCCore/GRPCCompletionQueue.mm @@ -69,6 +69,9 @@ const grpc_completion_queue_attributes kCompletionQueueAttr = { case GRPC_QUEUE_SHUTDOWN: grpc_completion_queue_destroy(unmanagedQueue); return; + case GRPC_QUEUE_TIMEOUT: + NSLog(@"GRPC_QUEUE_TIMEOUT, success: %d, tag: %p", event.success, event.tag); + break; default: [NSException raise:@"Unrecognized completion type" format:@""]; } diff --git a/src/objective-c/GRPCClient/version.h b/src/objective-c/GRPCClient/version.h index f84a02f0a65..c3e2f050573 100644 --- a/src/objective-c/GRPCClient/version.h +++ b/src/objective-c/GRPCClient/version.h @@ -22,4 +22,4 @@ // instead. This file can be regenerated from the template by running // `tools/buildgen/generate_projects.sh`. -#define GRPC_OBJC_VERSION_STRING @"1.64.0-dev" +#define GRPC_OBJC_VERSION_STRING @"1.65.0-dev" diff --git a/src/objective-c/README.md b/src/objective-c/README.md index af88b7f6cf8..2f6103078a0 100644 --- a/src/objective-c/README.md +++ b/src/objective-c/README.md @@ -47,6 +47,7 @@ Pod::Spec.new do |s| s.osx.deployment_target = '10.12' s.tvos.deployment_target = '12.0' s.watchos.deployment_target = '6.0' + s.visionos.deployment_target = '1.0' # Base directory where the .proto files are. src = '.' diff --git a/src/objective-c/tests/BUILD b/src/objective-c/tests/BUILD index 357b9de9610..74ae15e0ff6 100644 --- a/src/objective-c/tests/BUILD +++ b/src/objective-c/tests/BUILD @@ -324,7 +324,7 @@ grpc_objc_testing_library( deps = [ "//:gpr_platform", "//src/core:iomgr_port", - "//test/core/util:grpc_test_util", + "//test/core/test_util:grpc_test_util", ], ) diff --git a/src/objective-c/tests/CFStreamTests/CFStreamClientTests.mm b/src/objective-c/tests/CFStreamTests/CFStreamClientTests.mm index 99ae59f35ed..6c90f0898dc 100644 --- a/src/objective-c/tests/CFStreamTests/CFStreamClientTests.mm +++ b/src/objective-c/tests/CFStreamTests/CFStreamClientTests.mm @@ -35,7 +35,7 @@ #include "src/core/lib/iomgr/resolve_address.h" #include "src/core/lib/iomgr/tcp_client.h" #include "src/core/lib/resource_quota/api.h" -#include "test/core/util/test_config.h" +#include "test/core/test_util/test_config.h" static gpr_mu g_mu; static int g_connections_complete = 0; diff --git a/src/objective-c/tests/CFStreamTests/CFStreamEndpointTests.mm b/src/objective-c/tests/CFStreamTests/CFStreamEndpointTests.mm index 7bdbe590e36..97508b83cb8 100644 --- a/src/objective-c/tests/CFStreamTests/CFStreamEndpointTests.mm +++ b/src/objective-c/tests/CFStreamTests/CFStreamEndpointTests.mm @@ -37,7 +37,7 @@ #include "src/core/lib/iomgr/resolve_address.h" #include "src/core/lib/iomgr/tcp_client.h" #include "src/core/lib/resource_quota/api.h" -#include "test/core/util/test_config.h" +#include "test/core/test_util/test_config.h" #include #include diff --git a/src/objective-c/tests/CronetTests/CronetUnitTests.mm b/src/objective-c/tests/CronetTests/CronetUnitTests.mm index fa56f442006..c021e383eea 100644 --- a/src/objective-c/tests/CronetTests/CronetUnitTests.mm +++ b/src/objective-c/tests/CronetTests/CronetUnitTests.mm @@ -26,18 +26,18 @@ #import #import #import "test/core/end2end/cq_verifier.h" -#import "test/core/util/port.h" +#import "test/core/test_util/port.h" #import #import #import "src/core/lib/channel/channel_args.h" -#import "src/core/lib/gpr/string.h" -#import "src/core/lib/gpr/tmpfile.h" #import "src/core/lib/gprpp/env.h" #import "src/core/lib/gprpp/host_port.h" +#import "src/core/util/string.h" +#import "src/core/util/tmpfile.h" #import "test/core/end2end/data/ssl_test_data.h" -#import "test/core/util/test_config.h" +#import "test/core/test_util/test_config.h" #if COCOAPODS #import diff --git a/src/objective-c/tests/EventEngineTests/CFEventEngineClientTests.mm b/src/objective-c/tests/EventEngineTests/CFEventEngineClientTests.mm index c5a4e1c9cef..6f4244d82bf 100644 --- a/src/objective-c/tests/EventEngineTests/CFEventEngineClientTests.mm +++ b/src/objective-c/tests/EventEngineTests/CFEventEngineClientTests.mm @@ -24,7 +24,7 @@ #include "test/core/event_engine/test_suite/event_engine_test_framework.h" #include "test/core/event_engine/test_suite/posix/oracle_event_engine_posix.h" #include "test/core/event_engine/test_suite/tests/client_test.h" -#include "test/core/util/test_config.h" +#include "test/core/test_util/test_config.h" @interface EventEngineTimerTests : XCTestCase @end diff --git a/src/objective-c/tests/EventEngineTests/CFEventEngineUnitTests.mm b/src/objective-c/tests/EventEngineTests/CFEventEngineUnitTests.mm index d81b25aa8c3..fdc353c1eb9 100644 --- a/src/objective-c/tests/EventEngineTests/CFEventEngineUnitTests.mm +++ b/src/objective-c/tests/EventEngineTests/CFEventEngineUnitTests.mm @@ -24,7 +24,7 @@ #include "test/core/event_engine/test_suite/event_engine_test_framework.h" #include "test/core/event_engine/test_suite/tests/dns_test.h" #include "test/core/event_engine/test_suite/tests/timer_test.h" -#include "test/core/util/test_config.h" +#include "test/core/test_util/test_config.h" @interface EventEngineTimerTests : XCTestCase @end diff --git a/src/objective-c/tests/version.h b/src/objective-c/tests/version.h index 4361cf2bf7b..e806a559f9e 100644 --- a/src/objective-c/tests/version.h +++ b/src/objective-c/tests/version.h @@ -22,5 +22,5 @@ // instead. This file can be regenerated from the template by running // `tools/buildgen/generate_projects.sh`. -#define GRPC_OBJC_VERSION_STRING @"1.64.0-dev" -#define GRPC_C_VERSION_STRING @"40.0.0" +#define GRPC_OBJC_VERSION_STRING @"1.65.0-dev" +#define GRPC_C_VERSION_STRING @"41.0.0" diff --git a/src/php/composer.json b/src/php/composer.json index be88a483e61..fc2d89bacc6 100644 --- a/src/php/composer.json +++ b/src/php/composer.json @@ -2,7 +2,7 @@ "name": "grpc/grpc-dev", "description": "gRPC library for PHP - for Development use only", "license": "Apache-2.0", - "version": "1.64.0", + "version": "1.65.0", "require": { "php": ">=7.0.0", "google/protobuf": "^v3.3.0" diff --git a/src/php/ext/grpc/version.h b/src/php/ext/grpc/version.h index 727a431e042..1198590fce8 100644 --- a/src/php/ext/grpc/version.h +++ b/src/php/ext/grpc/version.h @@ -20,6 +20,6 @@ #ifndef VERSION_H #define VERSION_H -#define PHP_GRPC_VERSION "1.64.0dev" +#define PHP_GRPC_VERSION "1.65.0dev" #endif /* VERSION_H */ diff --git a/src/python/grpcio/README.rst b/src/python/grpcio/README.rst index e483521d549..0c371487c70 100644 --- a/src/python/grpcio/README.rst +++ b/src/python/grpcio/README.rst @@ -59,6 +59,10 @@ package named :code:`python-dev`). $ cd $REPO_ROOT $ git submodule update --init + # To include systemd socket-activation feature in the build, + # first install the `libsystemd-dev` package, then : + $ export GRPC_PYTHON_BUILD_WITH_SYSTEMD=1 + # For the next two commands do `sudo pip install` if you get permission-denied errors $ pip install -r requirements.txt $ GRPC_PYTHON_BUILD_WITH_CYTHON=1 pip install . diff --git a/src/python/grpcio/grpc/__init__.py b/src/python/grpcio/grpc/__init__.py index 273d97c01f6..406f5651516 100644 --- a/src/python/grpcio/grpc/__init__.py +++ b/src/python/grpcio/grpc/__init__.py @@ -1454,6 +1454,22 @@ class Server(abc.ABC): """ raise NotImplementedError() + @abc.abstractmethod + def add_registered_method_handlers(self, service_name, method_handlers): + """Registers GenericRpcHandlers with this Server. + + This method is only safe to call before the server is started. + + If the same method have both generic and registered handler, + registered handler will take precedence. + + Args: + service_name: The service name. + method_handlers: A dictionary that maps method names to corresponding + RpcMethodHandler. + """ + raise NotImplementedError() + @abc.abstractmethod def add_insecure_port(self, address): """Opens an insecure port for accepting RPCs. diff --git a/src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi b/src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi index d166bd9fabf..8332c5a0d5b 100644 --- a/src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi +++ b/src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi @@ -777,9 +777,19 @@ async def _schedule_rpc_coro(object rpc_coro, rpc_state, rpc_coro, loop, - )) + ), name="HandleExceptions[%s]" % _decode(rpc_state.method())) _add_callback_handler(rpc_task, rpc_state) await _handle_cancellation_from_core(rpc_task, rpc_state, loop) + try: + # Propagate any errors not handled by _handle_exceptions. If not awaited + # there will be logs of the form "Task exception was never retrieved". + # Catching it here we can provide traceback and debugging logs. + await rpc_task + except: + _LOGGER.exception('Exception not handled by _handle_exceptions in servicer method [%s]' % ( + _decode(rpc_state.method()), + )) + traceback.print_exc() async def _handle_rpc(list generic_handlers, tuple interceptors, @@ -954,6 +964,7 @@ cdef class AioServer: self._server.start(backup_queue=False) cdef RPCState rpc_state server_started.set_result(True) + rpc_tasks = set() while True: # When shutdown begins, no more new connections. @@ -985,9 +996,15 @@ cdef class AioServer: rpc_coro, rpc_state, self._loop - ) + ), + name="rpc_task", ) + # loop.create_task only holds a weakref to the task. + # Maintain reference to tasks to avoid garbage collection. + rpc_tasks.add(rpc_task) + rpc_task.add_done_callback(rpc_tasks.discard) + if self._limiter is not None: self._limiter.decrease_once_finished(rpc_task) diff --git a/src/python/grpcio/grpc/_cython/_cygrpc/channel.pxd.pxi b/src/python/grpcio/grpc/_cython/_cygrpc/channel.pxd.pxi index 96d03e181b9..86a98b6803a 100644 --- a/src/python/grpcio/grpc/_cython/_cygrpc/channel.pxd.pxi +++ b/src/python/grpcio/grpc/_cython/_cygrpc/channel.pxd.pxi @@ -28,6 +28,7 @@ cdef class _CallState: cdef set due # call_tracer_capsule should have type of grpc._observability.ClientCallTracerCapsule cdef object call_tracer_capsule + cdef void maybe_save_registered_method(self, bytes method_name) except * cdef void maybe_set_client_call_tracer_on_call(self, bytes method_name, bytes target) except * cdef void maybe_delete_call_tracer(self) except * diff --git a/src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi b/src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi index dde3b166789..564877736c0 100644 --- a/src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi +++ b/src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi @@ -77,18 +77,22 @@ cdef class _CallState: return _observability.delete_call_tracer(self.call_tracer_capsule) + cdef void maybe_save_registered_method(self, bytes method_name) except *: + with _observability.get_plugin() as plugin: + if plugin and plugin.observability_enabled: + plugin.save_registered_method(method_name) + cdef void maybe_set_client_call_tracer_on_call(self, bytes method_name, bytes target) except *: # TODO(xuanwn): use channel args to exclude those metrics. for exclude_prefix in _observability._SERVICES_TO_EXCLUDE: if exclude_prefix in method_name: return with _observability.get_plugin() as plugin: - if not (plugin and plugin.observability_enabled): - return - capsule = plugin.create_client_call_tracer(method_name, target) - capsule_ptr = cpython.PyCapsule_GetPointer(capsule, CLIENT_CALL_TRACER) - _set_call_tracer(self.c_call, capsule_ptr) - self.call_tracer_capsule = capsule + if plugin and plugin.observability_enabled: + capsule = plugin.create_client_call_tracer(method_name, target) + capsule_ptr = cpython.PyCapsule_GetPointer(capsule, CLIENT_CALL_TRACER) + _set_call_tracer(self.c_call, capsule_ptr) + self.call_tracer_capsule = capsule cdef class _ChannelState: @@ -268,6 +272,7 @@ cdef void _call( channel_state.c_channel, NULL, flags, c_completion_queue, cpython.PyLong_AsVoidPtr(registered_call_handle), _timespec_from_time(deadline), NULL) + call_state.maybe_save_registered_method(method) else: call_state.c_call = grpc_channel_create_call( channel_state.c_channel, NULL, flags, diff --git a/src/python/grpcio/grpc/_cython/_cygrpc/grpc.pxi b/src/python/grpcio/grpc/_cython/_cygrpc/grpc.pxi index ce9a1d85e6b..13c7b41ad98 100644 --- a/src/python/grpcio/grpc/_cython/_cygrpc/grpc.pxi +++ b/src/python/grpcio/grpc/_cython/_cygrpc/grpc.pxi @@ -457,10 +457,24 @@ cdef extern from "grpc/grpc.h": grpc_metadata_array *request_metadata, grpc_completion_queue *cq_bound_to_call, grpc_completion_queue *cq_for_notification, void *tag_new) nogil + grpc_call_error grpc_server_request_registered_call( + grpc_server* server, void* registered_method, grpc_call** call, + gpr_timespec* deadline, grpc_metadata_array* request_metadata, + grpc_byte_buffer** optional_payload, + grpc_completion_queue* cq_bound_to_call, + grpc_completion_queue* cq_for_notification, void* tag_new) nogil void grpc_server_register_completion_queue(grpc_server *server, grpc_completion_queue *cq, void *reserved) nogil + ctypedef enum grpc_server_register_method_payload_handling: + GRPC_SRM_PAYLOAD_NONE + GRPC_SRM_PAYLOAD_READ_INITIAL_BYTE_BUFFER + + void *grpc_server_register_method(grpc_server* server, const char* method, + const char* host, grpc_server_register_method_payload_handling payload_handling, + uint32_t flags) nogil + ctypedef struct grpc_server_config_fetcher: pass diff --git a/src/python/grpcio/grpc/_cython/_cygrpc/server.pxd.pxi b/src/python/grpcio/grpc/_cython/_cygrpc/server.pxd.pxi index b89ed99d97b..0480bf2b6a3 100644 --- a/src/python/grpcio/grpc/_cython/_cygrpc/server.pxd.pxi +++ b/src/python/grpcio/grpc/_cython/_cygrpc/server.pxd.pxi @@ -24,6 +24,21 @@ cdef class Server: # TODO(https://github.com/grpc/grpc/issues/15662): Elide this. cdef list references cdef list registered_completion_queues + cdef dict registered_methods # Mapping[bytes, RegisteredMethod] cdef _c_shutdown(self, CompletionQueue queue, tag) + cdef _c_request_unregistered_call(self, + _RequestCallTag request_call_tag, + CompletionQueue call_queue, + CompletionQueue server_queue) + cdef _c_request_registered_call(self, + _RequestCallTag request_call_tag, + CompletionQueue call_queue, + CompletionQueue server_queue, + bytes method) cdef notify_shutdown_complete(self) + +cdef class RegisteredMethod: + + cdef void *c_registered_method + cdef bytes method diff --git a/src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi b/src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi index 29dabec61d9..017894b7239 100644 --- a/src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi +++ b/src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi @@ -13,6 +13,28 @@ # limitations under the License. +cdef class RegisteredMethod: + + def __cinit__(self, bytes method, uintptr_t server): + self.method = method + cpython.Py_INCREF(self.method) + cdef const char *c_method = self.method + cdef grpc_server *c_server = server + # TODO(xuanwn): Consider use GRPC_SRM_PAYLOAD_READ_INITIAL_BYTE_BUFFER for unary request + # as optimization. + # Note that in stubs method is not bound to any host, thus we set host as NULL. + with nogil: + self.c_registered_method = grpc_server_register_method(c_server, + c_method, NULL, GRPC_SRM_PAYLOAD_NONE, 0) + + def __dealloc__(self): + # c_registered_method should have the same lifetime as Cython Server since the method + # maybe called at any time during the server's lifetime. + # Since all RegisteredMethod belongs to Cython Server, they'll be destructed at the same + # time with Cython Server, at which point it's safe to assume core no longer holds any reference. + cpython.Py_DECREF(self.method) + + cdef class Server: def __cinit__(self, object arguments, bint xds): @@ -23,6 +45,7 @@ cdef class Server: self.is_shutting_down = False self.is_shutdown = False self.c_server = NULL + self.registered_methods = {} # Mapping[bytes, RegisteredMethod] cdef _ChannelArgs channel_args = _ChannelArgs(arguments) self.c_server = grpc_server_create(channel_args.c_args(), NULL) cdef grpc_server_xds_status_notifier notifier @@ -41,14 +64,62 @@ cdef class Server: if server_queue not in self.registered_completion_queues: raise ValueError("server_queue must be a registered completion queue") cdef _RequestCallTag request_call_tag = _RequestCallTag(tag) + return self._c_request_unregistered_call(request_call_tag, call_queue, server_queue) + + def request_registered_call( + self, CompletionQueue call_queue not None, + CompletionQueue server_queue not None, + str method not None, + tag): + if not self.is_started or self.is_shutting_down: + raise ValueError("server must be started and not shutting down") + if server_queue not in self.registered_completion_queues: + raise ValueError("server_queue must be a registered completion queue") + cdef _RequestCallTag request_call_tag = _RequestCallTag(tag) + method_bytes = str_to_bytes(method) + return self._c_request_registered_call(request_call_tag, call_queue, server_queue, method_bytes) + + cdef _c_request_registered_call(self, + _RequestCallTag request_call_tag, + CompletionQueue call_queue, + CompletionQueue server_queue, + bytes method): + request_call_tag.prepare() + cpython.Py_INCREF(request_call_tag) + cdef cpython.PyObject *c_request_call_tag = request_call_tag + cdef RegisteredMethod registered_method = self.registered_methods[method] + # optional_payload is set to NULL because we use GRPC_SRM_PAYLOAD_NONE for all method. + cdef grpc_call_error c_call_error = GRPC_CALL_OK + with nogil: + c_call_error = grpc_server_request_registered_call( + self.c_server, registered_method.c_registered_method, &request_call_tag.call.c_call, + &request_call_tag.call_details.c_details.deadline, + &request_call_tag.c_invocation_metadata, + NULL, + call_queue.c_completion_queue, server_queue.c_completion_queue, + c_request_call_tag) + if c_call_error != GRPC_CALL_OK: + raise InternalError("Error in grpc_server_request_registered_call: %s" % grpc_call_error_to_string(self.c_call_error).decode()) + return c_call_error + + cdef _c_request_unregistered_call(self, + _RequestCallTag request_call_tag, + CompletionQueue call_queue, + CompletionQueue server_queue): request_call_tag.prepare() cpython.Py_INCREF(request_call_tag) - return grpc_server_request_call( - self.c_server, &request_call_tag.call.c_call, - &request_call_tag.call_details.c_details, - &request_call_tag.c_invocation_metadata, - call_queue.c_completion_queue, server_queue.c_completion_queue, - request_call_tag) + cdef cpython.PyObject *c_request_call_tag = request_call_tag + cdef grpc_call_error c_call_error = GRPC_CALL_OK + with nogil: + c_call_error = grpc_server_request_call( + self.c_server, &request_call_tag.call.c_call, + &request_call_tag.call_details.c_details, + &request_call_tag.c_invocation_metadata, + call_queue.c_completion_queue, server_queue.c_completion_queue, + c_request_call_tag) + if c_call_error != GRPC_CALL_OK: + raise InternalError("Error in grpc_server_request_call: %s" % grpc_call_error_to_string(self.c_call_error).decode()) + return c_call_error def register_completion_queue( self, CompletionQueue queue not None): @@ -59,6 +130,14 @@ cdef class Server: self.c_server, queue.c_completion_queue, NULL) self.registered_completion_queues.append(queue) + def register_method(self, str fully_qualified_method): + method_bytes = str_to_bytes(fully_qualified_method) + if method_bytes in self.registered_methods.keys(): + # Ignore already registered method + return + cdef RegisteredMethod registered_method = RegisteredMethod(method_bytes, self.c_server) + self.registered_methods[method_bytes] = registered_method + def start(self, backup_queue=True): """Start the Cython gRPC Server. diff --git a/src/python/grpcio/grpc/_grpcio_metadata.py b/src/python/grpcio/grpc/_grpcio_metadata.py index 0480a754911..76c35c1f7e8 100644 --- a/src/python/grpcio/grpc/_grpcio_metadata.py +++ b/src/python/grpcio/grpc/_grpcio_metadata.py @@ -14,4 +14,4 @@ # AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio/grpc/_grpcio_metadata.py.template`!!! -__version__ = """1.64.0.dev0""" +__version__ = """1.65.0.dev0""" diff --git a/src/python/grpcio/grpc/_observability.py b/src/python/grpcio/grpc/_observability.py index 3b365481922..e18dbc1dd0f 100644 --- a/src/python/grpcio/grpc/_observability.py +++ b/src/python/grpcio/grpc/_observability.py @@ -55,6 +55,8 @@ class ObservabilityPlugin( Attributes: _stats_enabled: A bool indicates whether tracing is enabled. _tracing_enabled: A bool indicates whether stats(metrics) is enabled. + _registered_methods: A set which stores the registered method names in + bytes. """ _tracing_enabled: bool = False @@ -76,6 +78,7 @@ class ObservabilityPlugin( Args: method_name: The method name of the call in byte format. target: The channel target of the call in byte format. + registered_method: Wether this method is pre-registered. Returns: A PyCapsule which stores a ClientCallTracer object. @@ -174,6 +177,17 @@ class ObservabilityPlugin( """ self._stats_enabled = enable + def save_registered_method(self, method_name: bytes) -> None: + """Saves the method name to registered_method list. + + When exporting metrics, method name for unregistered methods will be replaced + with 'other' by default. + + Args: + method_name: The method name in bytes. + """ + raise NotImplementedError() + @property def tracing_enabled(self) -> bool: return self._tracing_enabled @@ -259,9 +273,8 @@ def delete_call_tracer(client_call_tracer_capsule: Any) -> None: client_call_tracer_capsule: A PyCapsule which stores a ClientCallTracer object. """ with get_plugin() as plugin: - if not (plugin and plugin.observability_enabled): - return - plugin.delete_client_call_tracer(client_call_tracer_capsule) + if plugin and plugin.observability_enabled: + plugin.delete_client_call_tracer(client_call_tracer_capsule) def maybe_record_rpc_latency(state: "_channel._RPCState") -> None: diff --git a/src/python/grpcio/grpc/_server.py b/src/python/grpcio/grpc/_server.py index 4ea1d5e4597..ade13718091 100644 --- a/src/python/grpcio/grpc/_server.py +++ b/src/python/grpcio/grpc/_server.py @@ -15,6 +15,7 @@ from __future__ import annotations +import abc import collections from concurrent import futures import contextvars @@ -26,6 +27,7 @@ import traceback from typing import ( Any, Callable, + Dict, Iterable, Iterator, List, @@ -121,6 +123,58 @@ class _HandlerCallDetails( pass +class _Method(abc.ABC): + @abc.abstractmethod + def name(self) -> Optional[str]: + raise NotImplementedError() + + @abc.abstractmethod + def handler( + self, handler_call_details: _HandlerCallDetails + ) -> Optional[grpc.RpcMethodHandler]: + raise NotImplementedError() + + +class _RegisteredMethod(_Method): + def __init__( + self, + name: str, + registered_handler: Optional[grpc.RpcMethodHandler], + ): + self._name = name + self._registered_handler = registered_handler + + def name(self) -> Optional[str]: + return self._name + + def handler( + self, handler_call_details: _HandlerCallDetails + ) -> Optional[grpc.RpcMethodHandler]: + return self._registered_handler + + +class _GenericMethod(_Method): + def __init__( + self, + generic_handlers: List[grpc.GenericRpcHandler], + ): + self._generic_handlers = generic_handlers + + def name(self) -> Optional[str]: + return None + + def handler( + self, handler_call_details: _HandlerCallDetails + ) -> Optional[grpc.RpcMethodHandler]: + # If the same method have both generic and registered handler, + # registered handler will take precedence. + for generic_handler in self._generic_handlers: + method_handler = generic_handler.service(handler_call_details) + if method_handler is not None: + return method_handler + return None + + class _RPCState(object): context: contextvars.Context condition: threading.Condition @@ -932,20 +986,20 @@ def _handle_stream_stream( def _find_method_handler( rpc_event: cygrpc.BaseEvent, state: _RPCState, - generic_handlers: List[grpc.GenericRpcHandler], + method_with_handler: _Method, interceptor_pipeline: Optional[_interceptor._ServicePipeline], ) -> Optional[grpc.RpcMethodHandler]: def query_handlers( handler_call_details: _HandlerCallDetails, ) -> Optional[grpc.RpcMethodHandler]: - for generic_handler in generic_handlers: - method_handler = generic_handler.service(handler_call_details) - if method_handler is not None: - return method_handler - return None + return method_with_handler.handler(handler_call_details) + + method_name = method_with_handler.name() + if not method_name: + method_name = _common.decode(rpc_event.call_details.method) handler_call_details = _HandlerCallDetails( - _common.decode(rpc_event.call_details.method), + method_name, rpc_event.invocation_metadata, ) @@ -1013,18 +1067,32 @@ def _handle_with_method_handler( def _handle_call( rpc_event: cygrpc.BaseEvent, - generic_handlers: List[grpc.GenericRpcHandler], + method_with_handler: _Method, interceptor_pipeline: Optional[_interceptor._ServicePipeline], thread_pool: futures.ThreadPoolExecutor, concurrency_exceeded: bool, ) -> Tuple[Optional[_RPCState], Optional[futures.Future]]: + """Handles RPC based on provided handlers. + + When receiving a call event from Core, registered method will have it's + name as tag, we pass the tag as registered_method_name to this method, + then we can find the handler in registered_method_handlers based on + the method name. + + For call event with unregistered method, the method name will be included + in rpc_event.call_details.method and we need to query the generics handlers + to find the actual handler. + """ if not rpc_event.success: return None, None - if rpc_event.call_details.method is not None: + if rpc_event.call_details.method or method_with_handler.name(): rpc_state = _RPCState() try: method_handler = _find_method_handler( - rpc_event, rpc_state, generic_handlers, interceptor_pipeline + rpc_event, + rpc_state, + method_with_handler, + interceptor_pipeline, ) except Exception as exception: # pylint: disable=broad-except details = "Exception servicing handler: {}".format(exception) @@ -1075,6 +1143,7 @@ class _ServerState(object): completion_queue: cygrpc.CompletionQueue server: cygrpc.Server generic_handlers: List[grpc.GenericRpcHandler] + registered_method_handlers: Dict[str, grpc.RpcMethodHandler] interceptor_pipeline: Optional[_interceptor._ServicePipeline] thread_pool: futures.ThreadPoolExecutor stage: _ServerStage @@ -1107,6 +1176,7 @@ class _ServerState(object): self.shutdown_events = [self.termination_event] self.maximum_concurrent_rpcs = maximum_concurrent_rpcs self.active_rpc_count = 0 + self.registered_method_handlers = {} # TODO(https://github.com/grpc/grpc/issues/6597): eliminate these fields. self.rpc_states = set() @@ -1123,6 +1193,13 @@ def _add_generic_handlers( state.generic_handlers.extend(generic_handlers) +def _add_registered_method_handlers( + state: _ServerState, method_handlers: Dict[str, grpc.RpcMethodHandler] +) -> None: + with state.lock: + state.registered_method_handlers.update(method_handlers) + + def _add_insecure_port(state: _ServerState, address: bytes) -> int: with state.lock: return state.server.add_http2_port(address) @@ -1146,6 +1223,17 @@ def _request_call(state: _ServerState) -> None: state.due.add(_REQUEST_CALL_TAG) +def _request_registered_call(state: _ServerState, method: str) -> None: + registered_call_tag = method + state.server.request_registered_call( + state.completion_queue, + state.completion_queue, + method, + registered_call_tag, + ) + state.due.add(registered_call_tag) + + # TODO(https://github.com/grpc/grpc/issues/6597): delete this function. def _stop_serving(state: _ServerState) -> bool: if not state.rpc_states and not state.due: @@ -1163,6 +1251,7 @@ def _on_call_completed(state: _ServerState) -> None: state.active_rpc_count -= 1 +# pylint: disable=too-many-branches def _process_event_and_continue( state: _ServerState, event: cygrpc.BaseEvent ) -> bool: @@ -1172,16 +1261,32 @@ def _process_event_and_continue( state.due.remove(_SHUTDOWN_TAG) if _stop_serving(state): should_continue = False - elif event.tag is _REQUEST_CALL_TAG: + elif ( + event.tag is _REQUEST_CALL_TAG + or event.tag in state.registered_method_handlers.keys() + ): + registered_method_name = None + if event.tag in state.registered_method_handlers.keys(): + registered_method_name = event.tag + method_with_handler = _RegisteredMethod( + registered_method_name, + state.registered_method_handlers.get( + registered_method_name, None + ), + ) + else: + method_with_handler = _GenericMethod( + state.generic_handlers, + ) with state.lock: - state.due.remove(_REQUEST_CALL_TAG) + state.due.remove(event.tag) concurrency_exceeded = ( state.maximum_concurrent_rpcs is not None and state.active_rpc_count >= state.maximum_concurrent_rpcs ) rpc_state, rpc_future = _handle_call( event, - state.generic_handlers, + method_with_handler, state.interceptor_pipeline, state.thread_pool, concurrency_exceeded, @@ -1194,7 +1299,13 @@ def _process_event_and_continue( lambda unused_future: _on_call_completed(state) ) if state.stage is _ServerStage.STARTED: - _request_call(state) + if ( + registered_method_name + in state.registered_method_handlers.keys() + ): + _request_registered_call(state, registered_method_name) + else: + _request_call(state) elif _stop_serving(state): should_continue = False else: @@ -1267,6 +1378,10 @@ def _start(state: _ServerState) -> None: raise ValueError("Cannot start already-started server!") state.server.start() state.stage = _ServerStage.STARTED + # Request a call for each registered method so we can handle any of them. + for method in state.registered_method_handlers.keys(): + _request_registered_call(state, method) + # Also request a call for non-registered method. _request_call(state) thread = threading.Thread(target=_serve, args=(state,)) thread.daemon = True @@ -1318,6 +1433,7 @@ class _Server(grpc.Server): thread_pool, maximum_concurrent_rpcs, ) + self._cy_server = server def add_generic_rpc_handlers( self, generic_rpc_handlers: Iterable[grpc.GenericRpcHandler] @@ -1325,6 +1441,25 @@ class _Server(grpc.Server): _validate_generic_rpc_handlers(generic_rpc_handlers) _add_generic_handlers(self._state, generic_rpc_handlers) + def add_registered_method_handlers( + self, + service_name: str, + method_handlers: Dict[str, grpc.RpcMethodHandler], + ) -> None: + # Can't register method once server started. + with self._state.lock: + if self._state.stage is _ServerStage.STARTED: + return + + # TODO(xuanwn): We should validate method_handlers first. + method_to_handlers = { + _common.fully_qualified_method(service_name, method): method_handler + for method, method_handler in method_handlers.items() + } + for fully_qualified_method in method_to_handlers.keys(): + self._cy_server.register_method(fully_qualified_method) + _add_registered_method_handlers(self._state, method_to_handlers) + def add_insecure_port(self, address: str) -> int: return _common.validate_port_binding_result( address, _add_insecure_port(self._state, _common.encode(address)) diff --git a/src/python/grpcio/grpc/aio/_base_server.py b/src/python/grpcio/grpc/aio/_base_server.py index 07fd84901ff..9563a7875bc 100644 --- a/src/python/grpcio/grpc/aio/_base_server.py +++ b/src/python/grpcio/grpc/aio/_base_server.py @@ -136,6 +136,19 @@ class Server(abc.ABC): A bool indicates if the operation times out. """ + @abc.abstractmethod + def add_registered_method_handlers(self, service_name, method_handlers): + """Registers GenericRpcHandlers with this Server. + + This method is only safe to call before the server is started. + + Args: + service_name: The service name. + method_handlers: A dictionary that maps method names to corresponding + RpcMethodHandler. + """ + raise NotImplementedError() + # pylint: disable=too-many-public-methods class ServicerContext(Generic[RequestType, ResponseType], abc.ABC): diff --git a/src/python/grpcio/grpc/aio/_server.py b/src/python/grpcio/grpc/aio/_server.py index 730b5262fda..0eee6b1470e 100644 --- a/src/python/grpcio/grpc/aio/_server.py +++ b/src/python/grpcio/grpc/aio/_server.py @@ -14,7 +14,7 @@ """Server-side implementation of gRPC Asyncio Python.""" from concurrent.futures import Executor -from typing import Any, Optional, Sequence +from typing import Any, Dict, Optional, Sequence import grpc from grpc import _common @@ -79,6 +79,14 @@ class Server(_base_server.Server): """ self._server.add_generic_rpc_handlers(generic_rpc_handlers) + def add_registered_method_handlers( + self, + service_name: str, + method_handlers: Dict[str, grpc.RpcMethodHandler], + ) -> None: + # TODO(xuanwn): Implement this for AsyncIO. + pass + def add_insecure_port(self, address: str) -> int: """Opens an insecure port for accepting RPCs. diff --git a/src/python/grpcio/grpc_core_dependencies.py b/src/python/grpcio/grpc_core_dependencies.py index 9f20c1f18f1..a6e9be13ead 100644 --- a/src/python/grpcio/grpc_core_dependencies.py +++ b/src/python/grpcio/grpc_core_dependencies.py @@ -15,8 +15,10 @@ # AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio/grpc_core_dependencies.py.template`!!! CORE_SOURCE_FILES = [ + 'src/core/channelz/channel_trace.cc', + 'src/core/channelz/channelz.cc', + 'src/core/channelz/channelz_registry.cc', 'src/core/client_channel/backup_poller.cc', - 'src/core/client_channel/client_channel_channelz.cc', 'src/core/client_channel/client_channel_factory.cc', 'src/core/client_channel/client_channel_filter.cc', 'src/core/client_channel/client_channel_plugin.cc', @@ -24,7 +26,6 @@ CORE_SOURCE_FILES = [ 'src/core/client_channel/config_selector.cc', 'src/core/client_channel/dynamic_filters.cc', 'src/core/client_channel/global_subchannel_pool.cc', - 'src/core/client_channel/http_proxy_mapper.cc', 'src/core/client_channel/local_subchannel_pool.cc', 'src/core/client_channel/retry_filter.cc', 'src/core/client_channel/retry_filter_legacy_call_data.cc', @@ -37,7 +38,6 @@ CORE_SOURCE_FILES = [ 'src/core/ext/filters/census/grpc_context.cc', 'src/core/ext/filters/channel_idle/idle_filter_state.cc', 'src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc', - 'src/core/ext/filters/deadline/deadline_filter.cc', 'src/core/ext/filters/fault_injection/fault_injection_filter.cc', 'src/core/ext/filters/fault_injection/fault_injection_service_config_parser.cc', 'src/core/ext/filters/http/client/http_client_filter.cc', @@ -48,7 +48,6 @@ CORE_SOURCE_FILES = [ 'src/core/ext/filters/message_size/message_size_filter.cc', 'src/core/ext/filters/rbac/rbac_filter.cc', 'src/core/ext/filters/rbac/rbac_service_config_parser.cc', - 'src/core/ext/filters/server_config_selector/server_config_selector_filter.cc', 'src/core/ext/filters/stateful_session/stateful_session_filter.cc', 'src/core/ext/filters/stateful_session/stateful_session_service_config_parser.cc', 'src/core/ext/gcp/metadata_query.cc', @@ -404,32 +403,16 @@ CORE_SOURCE_FILES = [ 'src/core/ext/upbdefs-gen/xds/type/v3/cel.upbdefs.c', 'src/core/ext/upbdefs-gen/xds/type/v3/range.upbdefs.c', 'src/core/ext/upbdefs-gen/xds/type/v3/typed_struct.upbdefs.c', - 'src/core/ext/xds/certificate_provider_store.cc', - 'src/core/ext/xds/file_watcher_certificate_provider_factory.cc', - 'src/core/ext/xds/xds_api.cc', - 'src/core/ext/xds/xds_audit_logger_registry.cc', - 'src/core/ext/xds/xds_bootstrap.cc', - 'src/core/ext/xds/xds_bootstrap_grpc.cc', - 'src/core/ext/xds/xds_certificate_provider.cc', - 'src/core/ext/xds/xds_channel_stack_modifier.cc', - 'src/core/ext/xds/xds_client.cc', - 'src/core/ext/xds/xds_client_grpc.cc', - 'src/core/ext/xds/xds_client_stats.cc', - 'src/core/ext/xds/xds_cluster.cc', - 'src/core/ext/xds/xds_cluster_specifier_plugin.cc', - 'src/core/ext/xds/xds_common_types.cc', - 'src/core/ext/xds/xds_endpoint.cc', - 'src/core/ext/xds/xds_health_status.cc', - 'src/core/ext/xds/xds_http_fault_filter.cc', - 'src/core/ext/xds/xds_http_filters.cc', - 'src/core/ext/xds/xds_http_rbac_filter.cc', - 'src/core/ext/xds/xds_http_stateful_session_filter.cc', - 'src/core/ext/xds/xds_lb_policy_registry.cc', - 'src/core/ext/xds/xds_listener.cc', - 'src/core/ext/xds/xds_route_config.cc', - 'src/core/ext/xds/xds_routing.cc', - 'src/core/ext/xds/xds_server_config_fetcher.cc', - 'src/core/ext/xds/xds_transport_grpc.cc', + 'src/core/handshaker/endpoint_info/endpoint_info_handshaker.cc', + 'src/core/handshaker/handshaker.cc', + 'src/core/handshaker/handshaker_registry.cc', + 'src/core/handshaker/http_connect/http_connect_handshaker.cc', + 'src/core/handshaker/http_connect/http_proxy_mapper.cc', + 'src/core/handshaker/proxy_mapper_registry.cc', + 'src/core/handshaker/security/secure_endpoint.cc', + 'src/core/handshaker/security/security_handshaker.cc', + 'src/core/handshaker/security/tsi_error.cc', + 'src/core/handshaker/tcp_connect/tcp_connect_handshaker.cc', 'src/core/lib/address_utils/parse_address.cc', 'src/core/lib/address_utils/sockaddr_utils.cc', 'src/core/lib/backoff/backoff.cc', @@ -441,13 +424,9 @@ CORE_SOURCE_FILES = [ 'src/core/lib/channel/channel_stack_builder.cc', 'src/core/lib/channel/channel_stack_builder_impl.cc', 'src/core/lib/channel/channel_stack_trace.cc', - 'src/core/lib/channel/channel_trace.cc', - 'src/core/lib/channel/channelz.cc', - 'src/core/lib/channel/channelz_registry.cc', 'src/core/lib/channel/connected_channel.cc', 'src/core/lib/channel/metrics.cc', 'src/core/lib/channel/promise_based_filter.cc', - 'src/core/lib/channel/server_call_tracer_filter.cc', 'src/core/lib/channel/status_util.cc', 'src/core/lib/compression/compression.cc', 'src/core/lib/compression/compression_internal.cc', @@ -511,32 +490,6 @@ CORE_SOURCE_FILES = [ 'src/core/lib/event_engine/work_queue/basic_work_queue.cc', 'src/core/lib/experiments/config.cc', 'src/core/lib/experiments/experiments.cc', - 'src/core/lib/gpr/alloc.cc', - 'src/core/lib/gpr/android/log.cc', - 'src/core/lib/gpr/atm.cc', - 'src/core/lib/gpr/iphone/cpu.cc', - 'src/core/lib/gpr/linux/cpu.cc', - 'src/core/lib/gpr/linux/log.cc', - 'src/core/lib/gpr/log.cc', - 'src/core/lib/gpr/msys/tmpfile.cc', - 'src/core/lib/gpr/posix/cpu.cc', - 'src/core/lib/gpr/posix/log.cc', - 'src/core/lib/gpr/posix/string.cc', - 'src/core/lib/gpr/posix/sync.cc', - 'src/core/lib/gpr/posix/time.cc', - 'src/core/lib/gpr/posix/tmpfile.cc', - 'src/core/lib/gpr/string.cc', - 'src/core/lib/gpr/sync.cc', - 'src/core/lib/gpr/sync_abseil.cc', - 'src/core/lib/gpr/time.cc', - 'src/core/lib/gpr/time_precise.cc', - 'src/core/lib/gpr/windows/cpu.cc', - 'src/core/lib/gpr/windows/log.cc', - 'src/core/lib/gpr/windows/string.cc', - 'src/core/lib/gpr/windows/string_util.cc', - 'src/core/lib/gpr/windows/sync.cc', - 'src/core/lib/gpr/windows/time.cc', - 'src/core/lib/gpr/windows/tmpfile.cc', 'src/core/lib/gprpp/crash.cc', 'src/core/lib/gprpp/examine_stack.cc', 'src/core/lib/gprpp/fork.cc', @@ -563,7 +516,6 @@ CORE_SOURCE_FILES = [ 'src/core/lib/gprpp/windows/stat.cc', 'src/core/lib/gprpp/windows/thd.cc', 'src/core/lib/gprpp/work_serializer.cc', - 'src/core/lib/handshaker/proxy_mapper_registry.cc', 'src/core/lib/http/format_request.cc', 'src/core/lib/http/httpcli.cc', 'src/core/lib/http/httpcli_security_connector.cc', @@ -722,10 +674,7 @@ CORE_SOURCE_FILES = [ 'src/core/lib/security/security_connector/ssl_utils.cc', 'src/core/lib/security/security_connector/tls/tls_security_connector.cc', 'src/core/lib/security/transport/client_auth_filter.cc', - 'src/core/lib/security/transport/secure_endpoint.cc', - 'src/core/lib/security/transport/security_handshaker.cc', 'src/core/lib/security/transport/server_auth_filter.cc', - 'src/core/lib/security/transport/tsi_error.cc', 'src/core/lib/security/util/json_util.cc', 'src/core/lib/slice/percent_encoding.cc', 'src/core/lib/slice/slice.cc', @@ -750,29 +699,24 @@ CORE_SOURCE_FILES = [ 'src/core/lib/surface/lame_client.cc', 'src/core/lib/surface/legacy_channel.cc', 'src/core/lib/surface/metadata_array.cc', - 'src/core/lib/surface/server.cc', 'src/core/lib/surface/validate_metadata.cc', 'src/core/lib/surface/version.cc', 'src/core/lib/surface/wait_for_cq_end_op.cc', 'src/core/lib/transport/batch_builder.cc', 'src/core/lib/transport/bdp_estimator.cc', + 'src/core/lib/transport/call_arena_allocator.cc', 'src/core/lib/transport/call_filters.cc', 'src/core/lib/transport/call_final_info.cc', - 'src/core/lib/transport/call_size_estimator.cc', 'src/core/lib/transport/call_spine.cc', 'src/core/lib/transport/connectivity_state.cc', - 'src/core/lib/transport/endpoint_info_handshaker.cc', 'src/core/lib/transport/error_utils.cc', - 'src/core/lib/transport/handshaker.cc', - 'src/core/lib/transport/handshaker_registry.cc', - 'src/core/lib/transport/http_connect_handshaker.cc', + 'src/core/lib/transport/interception_chain.cc', 'src/core/lib/transport/message.cc', 'src/core/lib/transport/metadata.cc', 'src/core/lib/transport/metadata_batch.cc', 'src/core/lib/transport/metadata_info.cc', 'src/core/lib/transport/parsed_metadata.cc', 'src/core/lib/transport/status_conversion.cc', - 'src/core/lib/transport/tcp_connect_handshaker.cc', 'src/core/lib/transport/timeout_encoding.cc', 'src/core/lib/transport/transport.cc', 'src/core/lib/transport/transport_op_string.cc', @@ -827,6 +771,11 @@ CORE_SOURCE_FILES = [ 'src/core/resolver/xds/xds_dependency_manager.cc', 'src/core/resolver/xds/xds_resolver.cc', 'src/core/resolver/xds/xds_resolver_trace.cc', + 'src/core/server/server.cc', + 'src/core/server/server_call_tracer_filter.cc', + 'src/core/server/server_config_selector_filter.cc', + 'src/core/server/xds_channel_stack_modifier.cc', + 'src/core/server/xds_server_config_fetcher.cc', 'src/core/service_config/service_config_channel_arg_filter.cc', 'src/core/service_config/service_config_impl.cc', 'src/core/service_config/service_config_parser.cc', @@ -859,6 +808,56 @@ CORE_SOURCE_FILES = [ 'src/core/tsi/ssl_transport_security_utils.cc', 'src/core/tsi/transport_security.cc', 'src/core/tsi/transport_security_grpc.cc', + 'src/core/util/alloc.cc', + 'src/core/util/android/log.cc', + 'src/core/util/atm.cc', + 'src/core/util/iphone/cpu.cc', + 'src/core/util/linux/cpu.cc', + 'src/core/util/linux/log.cc', + 'src/core/util/log.cc', + 'src/core/util/msys/tmpfile.cc', + 'src/core/util/posix/cpu.cc', + 'src/core/util/posix/log.cc', + 'src/core/util/posix/string.cc', + 'src/core/util/posix/sync.cc', + 'src/core/util/posix/time.cc', + 'src/core/util/posix/tmpfile.cc', + 'src/core/util/string.cc', + 'src/core/util/sync.cc', + 'src/core/util/sync_abseil.cc', + 'src/core/util/time.cc', + 'src/core/util/time_precise.cc', + 'src/core/util/windows/cpu.cc', + 'src/core/util/windows/log.cc', + 'src/core/util/windows/string.cc', + 'src/core/util/windows/string_util.cc', + 'src/core/util/windows/sync.cc', + 'src/core/util/windows/time.cc', + 'src/core/util/windows/tmpfile.cc', + 'src/core/xds/grpc/certificate_provider_store.cc', + 'src/core/xds/grpc/file_watcher_certificate_provider_factory.cc', + 'src/core/xds/grpc/xds_audit_logger_registry.cc', + 'src/core/xds/grpc/xds_bootstrap_grpc.cc', + 'src/core/xds/grpc/xds_certificate_provider.cc', + 'src/core/xds/grpc/xds_client_grpc.cc', + 'src/core/xds/grpc/xds_cluster.cc', + 'src/core/xds/grpc/xds_cluster_specifier_plugin.cc', + 'src/core/xds/grpc/xds_common_types.cc', + 'src/core/xds/grpc/xds_endpoint.cc', + 'src/core/xds/grpc/xds_health_status.cc', + 'src/core/xds/grpc/xds_http_fault_filter.cc', + 'src/core/xds/grpc/xds_http_filters.cc', + 'src/core/xds/grpc/xds_http_rbac_filter.cc', + 'src/core/xds/grpc/xds_http_stateful_session_filter.cc', + 'src/core/xds/grpc/xds_lb_policy_registry.cc', + 'src/core/xds/grpc/xds_listener.cc', + 'src/core/xds/grpc/xds_route_config.cc', + 'src/core/xds/grpc/xds_routing.cc', + 'src/core/xds/grpc/xds_transport_grpc.cc', + 'src/core/xds/xds_client/xds_api.cc', + 'src/core/xds/xds_client/xds_bootstrap.cc', + 'src/core/xds/xds_client/xds_client.cc', + 'src/core/xds/xds_client/xds_client_stats.cc', 'third_party/abseil-cpp/absl/base/internal/cycleclock.cc', 'third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc', 'third_party/abseil-cpp/absl/base/internal/raw_logging.cc', @@ -900,6 +899,7 @@ CORE_SOURCE_FILES = [ 'third_party/abseil-cpp/absl/hash/internal/hash.cc', 'third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc', 'third_party/abseil-cpp/absl/log/globals.cc', + 'third_party/abseil-cpp/absl/log/internal/check_op.cc', 'third_party/abseil-cpp/absl/log/internal/conditions.cc', 'third_party/abseil-cpp/absl/log/internal/fnmatch.cc', 'third_party/abseil-cpp/absl/log/internal/globals.cc', @@ -998,7 +998,6 @@ CORE_SOURCE_FILES = [ 'third_party/address_sorting/address_sorting.c', 'third_party/address_sorting/address_sorting_posix.c', 'third_party/address_sorting/address_sorting_windows.c', - 'third_party/boringssl-with-bazel/err_data.c', 'third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c', 'third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c', 'third_party/boringssl-with-bazel/src/crypto/asn1/a_d2i_fp.c', @@ -1089,6 +1088,8 @@ CORE_SOURCE_FILES = [ 'third_party/boringssl-with-bazel/src/crypto/evp/evp.c', 'third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c', 'third_party/boringssl-with-bazel/src/crypto/evp/evp_ctx.c', + 'third_party/boringssl-with-bazel/src/crypto/evp/p_dh.c', + 'third_party/boringssl-with-bazel/src/crypto/evp/p_dh_asn1.c', 'third_party/boringssl-with-bazel/src/crypto/evp/p_dsa_asn1.c', 'third_party/boringssl-with-bazel/src/crypto/evp/p_ec.c', 'third_party/boringssl-with-bazel/src/crypto/evp/p_ec_asn1.c', @@ -1230,6 +1231,7 @@ CORE_SOURCE_FILES = [ 'third_party/boringssl-with-bazel/src/crypto/x509/x_val.c', 'third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c', 'third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c', + 'third_party/boringssl-with-bazel/src/gen/crypto/err_data.c', 'third_party/boringssl-with-bazel/src/ssl/bio_ssl.cc', 'third_party/boringssl-with-bazel/src/ssl/d1_both.cc', 'third_party/boringssl-with-bazel/src/ssl/d1_lib.cc', @@ -1251,6 +1253,7 @@ CORE_SOURCE_FILES = [ 'third_party/boringssl-with-bazel/src/ssl/ssl_buffer.cc', 'third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc', 'third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc', + 'third_party/boringssl-with-bazel/src/ssl/ssl_credential.cc', 'third_party/boringssl-with-bazel/src/ssl/ssl_file.cc', 'third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc', 'third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc', @@ -1415,166 +1418,166 @@ CORE_SOURCE_FILES = [ ASM_SOURCE_FILES = { 'crypto_asm': [ - 'third_party/boringssl-with-bazel/apple-aarch64/crypto/chacha/chacha-armv8-apple.S', - 'third_party/boringssl-with-bazel/apple-aarch64/crypto/cipher_extra/chacha20_poly1305_armv8-apple.S', - 'third_party/boringssl-with-bazel/apple-aarch64/crypto/fipsmodule/aesv8-armv8-apple.S', - 'third_party/boringssl-with-bazel/apple-aarch64/crypto/fipsmodule/aesv8-gcm-armv8-apple.S', - 'third_party/boringssl-with-bazel/apple-aarch64/crypto/fipsmodule/armv8-mont-apple.S', - 'third_party/boringssl-with-bazel/apple-aarch64/crypto/fipsmodule/bn-armv8-apple.S', - 'third_party/boringssl-with-bazel/apple-aarch64/crypto/fipsmodule/ghash-neon-armv8-apple.S', - 'third_party/boringssl-with-bazel/apple-aarch64/crypto/fipsmodule/ghashv8-armv8-apple.S', - 'third_party/boringssl-with-bazel/apple-aarch64/crypto/fipsmodule/p256-armv8-asm-apple.S', - 'third_party/boringssl-with-bazel/apple-aarch64/crypto/fipsmodule/p256_beeu-armv8-asm-apple.S', - 'third_party/boringssl-with-bazel/apple-aarch64/crypto/fipsmodule/sha1-armv8-apple.S', - 'third_party/boringssl-with-bazel/apple-aarch64/crypto/fipsmodule/sha256-armv8-apple.S', - 'third_party/boringssl-with-bazel/apple-aarch64/crypto/fipsmodule/sha512-armv8-apple.S', - 'third_party/boringssl-with-bazel/apple-aarch64/crypto/fipsmodule/vpaes-armv8-apple.S', - 'third_party/boringssl-with-bazel/apple-aarch64/crypto/test/trampoline-armv8-apple.S', - 'third_party/boringssl-with-bazel/apple-x86/crypto/chacha/chacha-x86-apple.S', - 'third_party/boringssl-with-bazel/apple-x86/crypto/fipsmodule/aesni-x86-apple.S', - 'third_party/boringssl-with-bazel/apple-x86/crypto/fipsmodule/bn-586-apple.S', - 'third_party/boringssl-with-bazel/apple-x86/crypto/fipsmodule/co-586-apple.S', - 'third_party/boringssl-with-bazel/apple-x86/crypto/fipsmodule/ghash-ssse3-x86-apple.S', - 'third_party/boringssl-with-bazel/apple-x86/crypto/fipsmodule/ghash-x86-apple.S', - 'third_party/boringssl-with-bazel/apple-x86/crypto/fipsmodule/md5-586-apple.S', - 'third_party/boringssl-with-bazel/apple-x86/crypto/fipsmodule/sha1-586-apple.S', - 'third_party/boringssl-with-bazel/apple-x86/crypto/fipsmodule/sha256-586-apple.S', - 'third_party/boringssl-with-bazel/apple-x86/crypto/fipsmodule/sha512-586-apple.S', - 'third_party/boringssl-with-bazel/apple-x86/crypto/fipsmodule/vpaes-x86-apple.S', - 'third_party/boringssl-with-bazel/apple-x86/crypto/fipsmodule/x86-mont-apple.S', - 'third_party/boringssl-with-bazel/apple-x86/crypto/test/trampoline-x86-apple.S', - 'third_party/boringssl-with-bazel/apple-x86_64/crypto/chacha/chacha-x86_64-apple.S', - 'third_party/boringssl-with-bazel/apple-x86_64/crypto/cipher_extra/aes128gcmsiv-x86_64-apple.S', - 'third_party/boringssl-with-bazel/apple-x86_64/crypto/cipher_extra/chacha20_poly1305_x86_64-apple.S', - 'third_party/boringssl-with-bazel/apple-x86_64/crypto/fipsmodule/aesni-gcm-x86_64-apple.S', - 'third_party/boringssl-with-bazel/apple-x86_64/crypto/fipsmodule/aesni-x86_64-apple.S', - 'third_party/boringssl-with-bazel/apple-x86_64/crypto/fipsmodule/ghash-ssse3-x86_64-apple.S', - 'third_party/boringssl-with-bazel/apple-x86_64/crypto/fipsmodule/ghash-x86_64-apple.S', - 'third_party/boringssl-with-bazel/apple-x86_64/crypto/fipsmodule/md5-x86_64-apple.S', - 'third_party/boringssl-with-bazel/apple-x86_64/crypto/fipsmodule/p256-x86_64-asm-apple.S', - 'third_party/boringssl-with-bazel/apple-x86_64/crypto/fipsmodule/p256_beeu-x86_64-asm-apple.S', - 'third_party/boringssl-with-bazel/apple-x86_64/crypto/fipsmodule/rdrand-x86_64-apple.S', - 'third_party/boringssl-with-bazel/apple-x86_64/crypto/fipsmodule/rsaz-avx2-apple.S', - 'third_party/boringssl-with-bazel/apple-x86_64/crypto/fipsmodule/sha1-x86_64-apple.S', - 'third_party/boringssl-with-bazel/apple-x86_64/crypto/fipsmodule/sha256-x86_64-apple.S', - 'third_party/boringssl-with-bazel/apple-x86_64/crypto/fipsmodule/sha512-x86_64-apple.S', - 'third_party/boringssl-with-bazel/apple-x86_64/crypto/fipsmodule/vpaes-x86_64-apple.S', - 'third_party/boringssl-with-bazel/apple-x86_64/crypto/fipsmodule/x86_64-mont-apple.S', - 'third_party/boringssl-with-bazel/apple-x86_64/crypto/fipsmodule/x86_64-mont5-apple.S', - 'third_party/boringssl-with-bazel/apple-x86_64/crypto/test/trampoline-x86_64-apple.S', - 'third_party/boringssl-with-bazel/linux-aarch64/crypto/chacha/chacha-armv8-linux.S', - 'third_party/boringssl-with-bazel/linux-aarch64/crypto/cipher_extra/chacha20_poly1305_armv8-linux.S', - 'third_party/boringssl-with-bazel/linux-aarch64/crypto/fipsmodule/aesv8-armv8-linux.S', - 'third_party/boringssl-with-bazel/linux-aarch64/crypto/fipsmodule/aesv8-gcm-armv8-linux.S', - 'third_party/boringssl-with-bazel/linux-aarch64/crypto/fipsmodule/armv8-mont-linux.S', - 'third_party/boringssl-with-bazel/linux-aarch64/crypto/fipsmodule/bn-armv8-linux.S', - 'third_party/boringssl-with-bazel/linux-aarch64/crypto/fipsmodule/ghash-neon-armv8-linux.S', - 'third_party/boringssl-with-bazel/linux-aarch64/crypto/fipsmodule/ghashv8-armv8-linux.S', - 'third_party/boringssl-with-bazel/linux-aarch64/crypto/fipsmodule/p256-armv8-asm-linux.S', - 'third_party/boringssl-with-bazel/linux-aarch64/crypto/fipsmodule/p256_beeu-armv8-asm-linux.S', - 'third_party/boringssl-with-bazel/linux-aarch64/crypto/fipsmodule/sha1-armv8-linux.S', - 'third_party/boringssl-with-bazel/linux-aarch64/crypto/fipsmodule/sha256-armv8-linux.S', - 'third_party/boringssl-with-bazel/linux-aarch64/crypto/fipsmodule/sha512-armv8-linux.S', - 'third_party/boringssl-with-bazel/linux-aarch64/crypto/fipsmodule/vpaes-armv8-linux.S', - 'third_party/boringssl-with-bazel/linux-aarch64/crypto/test/trampoline-armv8-linux.S', - 'third_party/boringssl-with-bazel/linux-arm/crypto/chacha/chacha-armv4-linux.S', - 'third_party/boringssl-with-bazel/linux-arm/crypto/fipsmodule/aesv8-armv7-linux.S', - 'third_party/boringssl-with-bazel/linux-arm/crypto/fipsmodule/armv4-mont-linux.S', - 'third_party/boringssl-with-bazel/linux-arm/crypto/fipsmodule/bsaes-armv7-linux.S', - 'third_party/boringssl-with-bazel/linux-arm/crypto/fipsmodule/ghash-armv4-linux.S', - 'third_party/boringssl-with-bazel/linux-arm/crypto/fipsmodule/ghashv8-armv7-linux.S', - 'third_party/boringssl-with-bazel/linux-arm/crypto/fipsmodule/sha1-armv4-large-linux.S', - 'third_party/boringssl-with-bazel/linux-arm/crypto/fipsmodule/sha256-armv4-linux.S', - 'third_party/boringssl-with-bazel/linux-arm/crypto/fipsmodule/sha512-armv4-linux.S', - 'third_party/boringssl-with-bazel/linux-arm/crypto/fipsmodule/vpaes-armv7-linux.S', - 'third_party/boringssl-with-bazel/linux-arm/crypto/test/trampoline-armv4-linux.S', - 'third_party/boringssl-with-bazel/linux-x86/crypto/chacha/chacha-x86-linux.S', - 'third_party/boringssl-with-bazel/linux-x86/crypto/fipsmodule/aesni-x86-linux.S', - 'third_party/boringssl-with-bazel/linux-x86/crypto/fipsmodule/bn-586-linux.S', - 'third_party/boringssl-with-bazel/linux-x86/crypto/fipsmodule/co-586-linux.S', - 'third_party/boringssl-with-bazel/linux-x86/crypto/fipsmodule/ghash-ssse3-x86-linux.S', - 'third_party/boringssl-with-bazel/linux-x86/crypto/fipsmodule/ghash-x86-linux.S', - 'third_party/boringssl-with-bazel/linux-x86/crypto/fipsmodule/md5-586-linux.S', - 'third_party/boringssl-with-bazel/linux-x86/crypto/fipsmodule/sha1-586-linux.S', - 'third_party/boringssl-with-bazel/linux-x86/crypto/fipsmodule/sha256-586-linux.S', - 'third_party/boringssl-with-bazel/linux-x86/crypto/fipsmodule/sha512-586-linux.S', - 'third_party/boringssl-with-bazel/linux-x86/crypto/fipsmodule/vpaes-x86-linux.S', - 'third_party/boringssl-with-bazel/linux-x86/crypto/fipsmodule/x86-mont-linux.S', - 'third_party/boringssl-with-bazel/linux-x86/crypto/test/trampoline-x86-linux.S', - 'third_party/boringssl-with-bazel/linux-x86_64/crypto/chacha/chacha-x86_64-linux.S', - 'third_party/boringssl-with-bazel/linux-x86_64/crypto/cipher_extra/aes128gcmsiv-x86_64-linux.S', - 'third_party/boringssl-with-bazel/linux-x86_64/crypto/cipher_extra/chacha20_poly1305_x86_64-linux.S', - 'third_party/boringssl-with-bazel/linux-x86_64/crypto/fipsmodule/aesni-gcm-x86_64-linux.S', - 'third_party/boringssl-with-bazel/linux-x86_64/crypto/fipsmodule/aesni-x86_64-linux.S', - 'third_party/boringssl-with-bazel/linux-x86_64/crypto/fipsmodule/ghash-ssse3-x86_64-linux.S', - 'third_party/boringssl-with-bazel/linux-x86_64/crypto/fipsmodule/ghash-x86_64-linux.S', - 'third_party/boringssl-with-bazel/linux-x86_64/crypto/fipsmodule/md5-x86_64-linux.S', - 'third_party/boringssl-with-bazel/linux-x86_64/crypto/fipsmodule/p256-x86_64-asm-linux.S', - 'third_party/boringssl-with-bazel/linux-x86_64/crypto/fipsmodule/p256_beeu-x86_64-asm-linux.S', - 'third_party/boringssl-with-bazel/linux-x86_64/crypto/fipsmodule/rdrand-x86_64-linux.S', - 'third_party/boringssl-with-bazel/linux-x86_64/crypto/fipsmodule/rsaz-avx2-linux.S', - 'third_party/boringssl-with-bazel/linux-x86_64/crypto/fipsmodule/sha1-x86_64-linux.S', - 'third_party/boringssl-with-bazel/linux-x86_64/crypto/fipsmodule/sha256-x86_64-linux.S', - 'third_party/boringssl-with-bazel/linux-x86_64/crypto/fipsmodule/sha512-x86_64-linux.S', - 'third_party/boringssl-with-bazel/linux-x86_64/crypto/fipsmodule/vpaes-x86_64-linux.S', - 'third_party/boringssl-with-bazel/linux-x86_64/crypto/fipsmodule/x86_64-mont-linux.S', - 'third_party/boringssl-with-bazel/linux-x86_64/crypto/fipsmodule/x86_64-mont5-linux.S', - 'third_party/boringssl-with-bazel/linux-x86_64/crypto/test/trampoline-x86_64-linux.S', 'third_party/boringssl-with-bazel/src/crypto/curve25519/asm/x25519-asm-arm.S', 'third_party/boringssl-with-bazel/src/crypto/hrss/asm/poly_rq_mul.S', 'third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm_asm.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/aesni-gcm-x86_64-apple.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/aesni-gcm-x86_64-linux.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/aesni-x86-apple.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/aesni-x86-linux.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/aesni-x86_64-apple.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/aesni-x86_64-linux.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/aesv8-armv7-linux.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/aesv8-armv8-apple.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/aesv8-armv8-linux.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/aesv8-armv8-win.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/aesv8-gcm-armv8-apple.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/aesv8-gcm-armv8-linux.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/aesv8-gcm-armv8-win.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/armv4-mont-linux.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/armv8-mont-apple.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/armv8-mont-linux.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/armv8-mont-win.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/bn-586-apple.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/bn-586-linux.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/bn-armv8-apple.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/bn-armv8-linux.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/bn-armv8-win.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/bsaes-armv7-linux.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/co-586-apple.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/co-586-linux.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/ghash-armv4-linux.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/ghash-neon-armv8-apple.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/ghash-neon-armv8-linux.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/ghash-neon-armv8-win.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/ghash-ssse3-x86-apple.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/ghash-ssse3-x86-linux.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/ghash-ssse3-x86_64-apple.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/ghash-ssse3-x86_64-linux.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/ghash-x86-apple.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/ghash-x86-linux.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/ghash-x86_64-apple.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/ghash-x86_64-linux.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/ghashv8-armv7-linux.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/ghashv8-armv8-apple.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/ghashv8-armv8-linux.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/ghashv8-armv8-win.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/md5-586-apple.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/md5-586-linux.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/md5-x86_64-apple.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/md5-x86_64-linux.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/p256-armv8-asm-apple.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/p256-armv8-asm-linux.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/p256-armv8-asm-win.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/p256-x86_64-asm-apple.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/p256-x86_64-asm-linux.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/p256_beeu-armv8-asm-apple.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/p256_beeu-armv8-asm-linux.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/p256_beeu-armv8-asm-win.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/p256_beeu-x86_64-asm-apple.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/p256_beeu-x86_64-asm-linux.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/rdrand-x86_64-apple.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/rdrand-x86_64-linux.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/rsaz-avx2-apple.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/rsaz-avx2-linux.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/sha1-586-apple.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/sha1-586-linux.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/sha1-armv4-large-linux.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/sha1-armv8-apple.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/sha1-armv8-linux.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/sha1-armv8-win.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/sha1-x86_64-apple.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/sha1-x86_64-linux.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/sha256-586-apple.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/sha256-586-linux.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/sha256-armv4-linux.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/sha256-armv8-apple.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/sha256-armv8-linux.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/sha256-armv8-win.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/sha256-x86_64-apple.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/sha256-x86_64-linux.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/sha512-586-apple.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/sha512-586-linux.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/sha512-armv4-linux.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/sha512-armv8-apple.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/sha512-armv8-linux.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/sha512-armv8-win.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/sha512-x86_64-apple.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/sha512-x86_64-linux.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/vpaes-armv7-linux.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/vpaes-armv8-apple.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/vpaes-armv8-linux.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/vpaes-armv8-win.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/vpaes-x86-apple.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/vpaes-x86-linux.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/vpaes-x86_64-apple.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/vpaes-x86_64-linux.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/x86-mont-apple.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/x86-mont-linux.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/x86_64-mont-apple.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/x86_64-mont-linux.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/x86_64-mont5-apple.S', + 'third_party/boringssl-with-bazel/src/gen/bcm/x86_64-mont5-linux.S', + 'third_party/boringssl-with-bazel/src/gen/crypto/aes128gcmsiv-x86_64-apple.S', + 'third_party/boringssl-with-bazel/src/gen/crypto/aes128gcmsiv-x86_64-linux.S', + 'third_party/boringssl-with-bazel/src/gen/crypto/chacha-armv4-linux.S', + 'third_party/boringssl-with-bazel/src/gen/crypto/chacha-armv8-apple.S', + 'third_party/boringssl-with-bazel/src/gen/crypto/chacha-armv8-linux.S', + 'third_party/boringssl-with-bazel/src/gen/crypto/chacha-armv8-win.S', + 'third_party/boringssl-with-bazel/src/gen/crypto/chacha-x86-apple.S', + 'third_party/boringssl-with-bazel/src/gen/crypto/chacha-x86-linux.S', + 'third_party/boringssl-with-bazel/src/gen/crypto/chacha-x86_64-apple.S', + 'third_party/boringssl-with-bazel/src/gen/crypto/chacha-x86_64-linux.S', + 'third_party/boringssl-with-bazel/src/gen/crypto/chacha20_poly1305_armv8-apple.S', + 'third_party/boringssl-with-bazel/src/gen/crypto/chacha20_poly1305_armv8-linux.S', + 'third_party/boringssl-with-bazel/src/gen/crypto/chacha20_poly1305_armv8-win.S', + 'third_party/boringssl-with-bazel/src/gen/crypto/chacha20_poly1305_x86_64-apple.S', + 'third_party/boringssl-with-bazel/src/gen/crypto/chacha20_poly1305_x86_64-linux.S', + 'third_party/boringssl-with-bazel/src/gen/test_support/trampoline-armv4-linux.S', + 'third_party/boringssl-with-bazel/src/gen/test_support/trampoline-armv8-apple.S', + 'third_party/boringssl-with-bazel/src/gen/test_support/trampoline-armv8-linux.S', + 'third_party/boringssl-with-bazel/src/gen/test_support/trampoline-armv8-win.S', + 'third_party/boringssl-with-bazel/src/gen/test_support/trampoline-x86-apple.S', + 'third_party/boringssl-with-bazel/src/gen/test_support/trampoline-x86-linux.S', + 'third_party/boringssl-with-bazel/src/gen/test_support/trampoline-x86_64-apple.S', + 'third_party/boringssl-with-bazel/src/gen/test_support/trampoline-x86_64-linux.S', 'third_party/boringssl-with-bazel/src/third_party/fiat/asm/fiat_curve25519_adx_mul.S', 'third_party/boringssl-with-bazel/src/third_party/fiat/asm/fiat_curve25519_adx_square.S', 'third_party/boringssl-with-bazel/src/third_party/fiat/asm/fiat_p256_adx_mul.S', 'third_party/boringssl-with-bazel/src/third_party/fiat/asm/fiat_p256_adx_sqr.S', - 'third_party/boringssl-with-bazel/win-aarch64/crypto/chacha/chacha-armv8-win.S', - 'third_party/boringssl-with-bazel/win-aarch64/crypto/cipher_extra/chacha20_poly1305_armv8-win.S', - 'third_party/boringssl-with-bazel/win-aarch64/crypto/fipsmodule/aesv8-armv8-win.S', - 'third_party/boringssl-with-bazel/win-aarch64/crypto/fipsmodule/aesv8-gcm-armv8-win.S', - 'third_party/boringssl-with-bazel/win-aarch64/crypto/fipsmodule/armv8-mont-win.S', - 'third_party/boringssl-with-bazel/win-aarch64/crypto/fipsmodule/bn-armv8-win.S', - 'third_party/boringssl-with-bazel/win-aarch64/crypto/fipsmodule/ghash-neon-armv8-win.S', - 'third_party/boringssl-with-bazel/win-aarch64/crypto/fipsmodule/ghashv8-armv8-win.S', - 'third_party/boringssl-with-bazel/win-aarch64/crypto/fipsmodule/p256-armv8-asm-win.S', - 'third_party/boringssl-with-bazel/win-aarch64/crypto/fipsmodule/p256_beeu-armv8-asm-win.S', - 'third_party/boringssl-with-bazel/win-aarch64/crypto/fipsmodule/sha1-armv8-win.S', - 'third_party/boringssl-with-bazel/win-aarch64/crypto/fipsmodule/sha256-armv8-win.S', - 'third_party/boringssl-with-bazel/win-aarch64/crypto/fipsmodule/sha512-armv8-win.S', - 'third_party/boringssl-with-bazel/win-aarch64/crypto/fipsmodule/vpaes-armv8-win.S', - 'third_party/boringssl-with-bazel/win-aarch64/crypto/test/trampoline-armv8-win.S', ], 'crypto_nasm': [ - 'third_party/boringssl-with-bazel/win-x86/crypto/chacha/chacha-x86-win.asm', - 'third_party/boringssl-with-bazel/win-x86/crypto/fipsmodule/aesni-x86-win.asm', - 'third_party/boringssl-with-bazel/win-x86/crypto/fipsmodule/bn-586-win.asm', - 'third_party/boringssl-with-bazel/win-x86/crypto/fipsmodule/co-586-win.asm', - 'third_party/boringssl-with-bazel/win-x86/crypto/fipsmodule/ghash-ssse3-x86-win.asm', - 'third_party/boringssl-with-bazel/win-x86/crypto/fipsmodule/ghash-x86-win.asm', - 'third_party/boringssl-with-bazel/win-x86/crypto/fipsmodule/md5-586-win.asm', - 'third_party/boringssl-with-bazel/win-x86/crypto/fipsmodule/sha1-586-win.asm', - 'third_party/boringssl-with-bazel/win-x86/crypto/fipsmodule/sha256-586-win.asm', - 'third_party/boringssl-with-bazel/win-x86/crypto/fipsmodule/sha512-586-win.asm', - 'third_party/boringssl-with-bazel/win-x86/crypto/fipsmodule/vpaes-x86-win.asm', - 'third_party/boringssl-with-bazel/win-x86/crypto/fipsmodule/x86-mont-win.asm', - 'third_party/boringssl-with-bazel/win-x86/crypto/test/trampoline-x86-win.asm', - 'third_party/boringssl-with-bazel/win-x86_64/crypto/chacha/chacha-x86_64-win.asm', - 'third_party/boringssl-with-bazel/win-x86_64/crypto/cipher_extra/aes128gcmsiv-x86_64-win.asm', - 'third_party/boringssl-with-bazel/win-x86_64/crypto/cipher_extra/chacha20_poly1305_x86_64-win.asm', - 'third_party/boringssl-with-bazel/win-x86_64/crypto/fipsmodule/aesni-gcm-x86_64-win.asm', - 'third_party/boringssl-with-bazel/win-x86_64/crypto/fipsmodule/aesni-x86_64-win.asm', - 'third_party/boringssl-with-bazel/win-x86_64/crypto/fipsmodule/ghash-ssse3-x86_64-win.asm', - 'third_party/boringssl-with-bazel/win-x86_64/crypto/fipsmodule/ghash-x86_64-win.asm', - 'third_party/boringssl-with-bazel/win-x86_64/crypto/fipsmodule/md5-x86_64-win.asm', - 'third_party/boringssl-with-bazel/win-x86_64/crypto/fipsmodule/p256-x86_64-asm-win.asm', - 'third_party/boringssl-with-bazel/win-x86_64/crypto/fipsmodule/p256_beeu-x86_64-asm-win.asm', - 'third_party/boringssl-with-bazel/win-x86_64/crypto/fipsmodule/rdrand-x86_64-win.asm', - 'third_party/boringssl-with-bazel/win-x86_64/crypto/fipsmodule/rsaz-avx2-win.asm', - 'third_party/boringssl-with-bazel/win-x86_64/crypto/fipsmodule/sha1-x86_64-win.asm', - 'third_party/boringssl-with-bazel/win-x86_64/crypto/fipsmodule/sha256-x86_64-win.asm', - 'third_party/boringssl-with-bazel/win-x86_64/crypto/fipsmodule/sha512-x86_64-win.asm', - 'third_party/boringssl-with-bazel/win-x86_64/crypto/fipsmodule/vpaes-x86_64-win.asm', - 'third_party/boringssl-with-bazel/win-x86_64/crypto/fipsmodule/x86_64-mont-win.asm', - 'third_party/boringssl-with-bazel/win-x86_64/crypto/fipsmodule/x86_64-mont5-win.asm', - 'third_party/boringssl-with-bazel/win-x86_64/crypto/test/trampoline-x86_64-win.asm', + 'third_party/boringssl-with-bazel/src/gen/bcm/aesni-gcm-x86_64-win.asm', + 'third_party/boringssl-with-bazel/src/gen/bcm/aesni-x86-win.asm', + 'third_party/boringssl-with-bazel/src/gen/bcm/aesni-x86_64-win.asm', + 'third_party/boringssl-with-bazel/src/gen/bcm/bn-586-win.asm', + 'third_party/boringssl-with-bazel/src/gen/bcm/co-586-win.asm', + 'third_party/boringssl-with-bazel/src/gen/bcm/ghash-ssse3-x86-win.asm', + 'third_party/boringssl-with-bazel/src/gen/bcm/ghash-ssse3-x86_64-win.asm', + 'third_party/boringssl-with-bazel/src/gen/bcm/ghash-x86-win.asm', + 'third_party/boringssl-with-bazel/src/gen/bcm/ghash-x86_64-win.asm', + 'third_party/boringssl-with-bazel/src/gen/bcm/md5-586-win.asm', + 'third_party/boringssl-with-bazel/src/gen/bcm/md5-x86_64-win.asm', + 'third_party/boringssl-with-bazel/src/gen/bcm/p256-x86_64-asm-win.asm', + 'third_party/boringssl-with-bazel/src/gen/bcm/p256_beeu-x86_64-asm-win.asm', + 'third_party/boringssl-with-bazel/src/gen/bcm/rdrand-x86_64-win.asm', + 'third_party/boringssl-with-bazel/src/gen/bcm/rsaz-avx2-win.asm', + 'third_party/boringssl-with-bazel/src/gen/bcm/sha1-586-win.asm', + 'third_party/boringssl-with-bazel/src/gen/bcm/sha1-x86_64-win.asm', + 'third_party/boringssl-with-bazel/src/gen/bcm/sha256-586-win.asm', + 'third_party/boringssl-with-bazel/src/gen/bcm/sha256-x86_64-win.asm', + 'third_party/boringssl-with-bazel/src/gen/bcm/sha512-586-win.asm', + 'third_party/boringssl-with-bazel/src/gen/bcm/sha512-x86_64-win.asm', + 'third_party/boringssl-with-bazel/src/gen/bcm/vpaes-x86-win.asm', + 'third_party/boringssl-with-bazel/src/gen/bcm/vpaes-x86_64-win.asm', + 'third_party/boringssl-with-bazel/src/gen/bcm/x86-mont-win.asm', + 'third_party/boringssl-with-bazel/src/gen/bcm/x86_64-mont-win.asm', + 'third_party/boringssl-with-bazel/src/gen/bcm/x86_64-mont5-win.asm', + 'third_party/boringssl-with-bazel/src/gen/crypto/aes128gcmsiv-x86_64-win.asm', + 'third_party/boringssl-with-bazel/src/gen/crypto/chacha-x86-win.asm', + 'third_party/boringssl-with-bazel/src/gen/crypto/chacha-x86_64-win.asm', + 'third_party/boringssl-with-bazel/src/gen/crypto/chacha20_poly1305_x86_64-win.asm', + 'third_party/boringssl-with-bazel/src/gen/test_support/trampoline-x86-win.asm', + 'third_party/boringssl-with-bazel/src/gen/test_support/trampoline-x86_64-win.asm', ], } diff --git a/src/python/grpcio/grpc_version.py b/src/python/grpcio/grpc_version.py index 95824107433..04a5cfab351 100644 --- a/src/python/grpcio/grpc_version.py +++ b/src/python/grpcio/grpc_version.py @@ -14,4 +14,4 @@ # AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio/grpc_version.py.template`!!! -VERSION = '1.64.0.dev0' +VERSION = '1.65.0.dev0' diff --git a/src/python/grpcio_admin/grpc_version.py b/src/python/grpcio_admin/grpc_version.py index 54c05b30411..56ee7509fe3 100644 --- a/src/python/grpcio_admin/grpc_version.py +++ b/src/python/grpcio_admin/grpc_version.py @@ -14,4 +14,4 @@ # AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio_admin/grpc_version.py.template`!!! -VERSION = '1.64.0.dev0' +VERSION = '1.65.0.dev0' diff --git a/src/python/grpcio_channelz/grpc_version.py b/src/python/grpcio_channelz/grpc_version.py index ca8ef29232e..86365f4999b 100644 --- a/src/python/grpcio_channelz/grpc_version.py +++ b/src/python/grpcio_channelz/grpc_version.py @@ -14,4 +14,4 @@ # AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio_channelz/grpc_version.py.template`!!! -VERSION = '1.64.0.dev0' +VERSION = '1.65.0.dev0' diff --git a/src/python/grpcio_csds/grpc_version.py b/src/python/grpcio_csds/grpc_version.py index b1c11a9989c..18065fb541f 100644 --- a/src/python/grpcio_csds/grpc_version.py +++ b/src/python/grpcio_csds/grpc_version.py @@ -14,4 +14,4 @@ # AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio_csds/grpc_version.py.template`!!! -VERSION = '1.64.0.dev0' +VERSION = '1.65.0.dev0' diff --git a/src/python/grpcio_health_checking/grpc_version.py b/src/python/grpcio_health_checking/grpc_version.py index 57ce26179a5..c7ba0bb48c0 100644 --- a/src/python/grpcio_health_checking/grpc_version.py +++ b/src/python/grpcio_health_checking/grpc_version.py @@ -14,4 +14,4 @@ # AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio_health_checking/grpc_version.py.template`!!! -VERSION = '1.64.0.dev0' +VERSION = '1.65.0.dev0' diff --git a/src/python/grpcio_observability/grpc_observability/BUILD.bazel b/src/python/grpcio_observability/grpc_observability/BUILD.bazel index 1a760338114..3447bdaf1f2 100644 --- a/src/python/grpcio_observability/grpc_observability/BUILD.bazel +++ b/src/python/grpcio_observability/grpc_observability/BUILD.bazel @@ -22,7 +22,7 @@ cc_library( srcs = [ "client_call_tracer.cc", "observability_util.cc", - "python_census_context.cc", + "python_observability_context.cc", "rpc_encoding.cc", "sampler.cc", "server_call_tracer.cc", @@ -31,7 +31,7 @@ cc_library( "client_call_tracer.h", "constants.h", "observability_util.h", - "python_census_context.h", + "python_observability_context.h", "rpc_encoding.h", "sampler.h", "server_call_tracer.h", @@ -53,7 +53,7 @@ pyx_library( ], ) -# Since `opentelemetry-sdk` and `opentelemetry-api` are non-hermetic, +# Since `opentelemetry-api` is non-hermetic, # pyobservability is for internal use only. py_library( name = "_opentelemetry_observability", @@ -63,7 +63,6 @@ py_library( "_open_telemetry_plugin.py", ], deps = [ - requirement("opentelemetry-sdk"), requirement("opentelemetry-api"), ], ) diff --git a/src/python/grpcio_observability/grpc_observability/_cyobservability.pxd b/src/python/grpcio_observability/grpc_observability/_cyobservability.pxd index 93a077b8679..c0c2fb25c61 100644 --- a/src/python/grpcio_observability/grpc_observability/_cyobservability.pxd +++ b/src/python/grpcio_observability/grpc_observability/_cyobservability.pxd @@ -38,7 +38,7 @@ cdef extern from "src/core/lib/channel/call_tracer.h" namespace "grpc_core": cdef cppclass ClientCallTracer: pass -cdef extern from "python_census_context.h" namespace "grpc_observability": +cdef extern from "python_observability_context.h" namespace "grpc_observability": cdef void EnablePythonCensusStats(bint enable) nogil cdef void EnablePythonCensusTracing(bint enable) nogil @@ -58,6 +58,7 @@ cdef extern from "python_census_context.h" namespace "grpc_observability": cMetricsName name MeasurementType type MeasurementValue value + bint registered_method ctypedef struct SpanCensusData: string name @@ -78,7 +79,8 @@ cdef extern from "observability_util.h" namespace "grpc_observability": cdef void* CreateClientCallTracer(const char* method, const char* target, const char* trace_id, - const char* parent_span_id) except + + const char* parent_span_id, + bint registered_method) except + cdef void* CreateServerCallTracerFactory() except + cdef queue[NativeCensusData]* g_census_data_buffer cdef void AwaitNextBatchLocked(unique_lock[mutex]&, int) nogil @@ -147,6 +149,7 @@ cdef extern from "constants.h" namespace "grpc_observability": string kClientMethod string kClientTarget string kClientStatus + string kRegisteredMethod cdef extern from "sampler.h" namespace "grpc_observability": cdef cppclass ProbabilitySampler: diff --git a/src/python/grpcio_observability/grpc_observability/_cyobservability.pyx b/src/python/grpcio_observability/grpc_observability/_cyobservability.pyx index 236601770ee..143d24731a7 100644 --- a/src/python/grpcio_observability/grpc_observability/_cyobservability.pyx +++ b/src/python/grpcio_observability/grpc_observability/_cyobservability.pyx @@ -115,7 +115,8 @@ def activate_stats() -> None: EnablePythonCensusStats(True); -def create_client_call_tracer(bytes method_name, bytes target, bytes trace_id, +def create_client_call_tracer(bytes method_name, bytes target, + bytes trace_id, bint registered_method, bytes parent_span_id=b'') -> cpython.PyObject: """Create a ClientCallTracer and save to PyCapsule. @@ -126,7 +127,7 @@ def create_client_call_tracer(bytes method_name, bytes target, bytes trace_id, cdef char* c_trace_id = cpython.PyBytes_AsString(trace_id) cdef char* c_parent_span_id = cpython.PyBytes_AsString(parent_span_id) - cdef void* call_tracer = CreateClientCallTracer(c_method, c_target, c_trace_id, c_parent_span_id) + cdef void* call_tracer = CreateClientCallTracer(c_method, c_target, c_trace_id, c_parent_span_id, registered_method) capsule = cpython.PyCapsule_New(call_tracer, CLIENT_CALL_TRACER, NULL) return capsule @@ -158,7 +159,7 @@ def _c_label_to_labels(vector[Label] c_labels) -> Mapping[str, str]: def _c_measurement_to_measurement(object measurement - ) -> Mapping[str, Union[enum, Mapping[str, Union[float, int]]]]: + ) -> Mapping[str, Union[enum, Mapping[str, Union[float, int], bool]]]: """Convert Cython Measurement to Python measurement. Args: @@ -169,6 +170,7 @@ def _c_measurement_to_measurement(object measurement A mapping object with keys and values as following: name -> cMetricsName type -> MeasurementType + registered_method -> bool value -> {value_double: float | value_int: int} """ measurement: Measurement @@ -176,6 +178,7 @@ def _c_measurement_to_measurement(object measurement py_measurement = {} py_measurement['name'] = measurement['name'] py_measurement['type'] = measurement['type'] + py_measurement['registered_method'] = measurement['registered_method'] if measurement['type'] == kMeasurementDouble: py_measurement['value'] = {'value_double': measurement['value']['value_double']} else: @@ -223,10 +226,12 @@ def _get_stats_data(object measurement, object labels) -> _observability.StatsDa if measurement['type'] == kMeasurementDouble: py_stat = _observability.StatsData(name=metric_name, measure_double=True, value_float=measurement['value']['value_double'], + registered_method=measurement['registered_method'], labels=labels) else: py_stat = _observability.StatsData(name=metric_name, measure_double=False, value_int=measurement['value']['value_int'], + registered_method=measurement['registered_method'], labels=labels) return py_stat @@ -248,13 +253,15 @@ def _get_tracing_data(SpanCensusData span_data, vector[Label] span_labels, span_annotations = py_span_annotations) -def _record_rpc_latency(object exporter, str method, str target, float rpc_latency, str status_code) -> None: +def _record_rpc_latency(object exporter, str method, str target, + float rpc_latency, str status_code, bint registered_method) -> None: exporter: _observability.Exporter measurement = {} measurement['name'] = kRpcClientApiLatencyMeasureName measurement['type'] = kMeasurementDouble measurement['value'] = {'value_double': rpc_latency} + measurement['registered_method'] = registered_method labels = {} labels[_decode(kClientMethod)] = method.strip("/") diff --git a/src/python/grpcio_observability/grpc_observability/_gcp_observability.py b/src/python/grpcio_observability/grpc_observability/_gcp_observability.py index 797c4797d01..5e4b6610e21 100644 --- a/src/python/grpcio_observability/grpc_observability/_gcp_observability.py +++ b/src/python/grpcio_observability/grpc_observability/_gcp_observability.py @@ -15,7 +15,7 @@ from __future__ import annotations import logging import time -from typing import Any +from typing import Any, Set import grpc @@ -69,6 +69,7 @@ class GCPOpenCensusObservability(grpc._observability.ObservabilityPlugin): config: _observability_config.GcpObservabilityConfig exporter: "grpc_observability.Exporter" + _registered_method: Set[bytes] def __init__(self, exporter: "grpc_observability.Exporter" = None): self.exporter = None @@ -122,7 +123,10 @@ class GCPOpenCensusObservability(grpc._observability.ObservabilityPlugin): ) -> ClientCallTracerCapsule: trace_id = b"TRACE_ID" capsule = _cyobservability.create_client_call_tracer( - method_name, target, trace_id + method_name, + target, + trace_id, + method_name in self._registered_methods, ) return capsule @@ -151,5 +155,13 @@ class GCPOpenCensusObservability(grpc._observability.ObservabilityPlugin): ) -> None: status_code = GRPC_STATUS_CODE_TO_STRING.get(status_code, "UNKNOWN") _cyobservability._record_rpc_latency( - self.exporter, method, target, rpc_latency, status_code + self.exporter, + method, + target, + rpc_latency, + status_code, + method in self._registered_methods, ) + + def save_registered_method(self, method_name: bytes) -> None: + self._registered_methods.add(method_name) diff --git a/src/python/grpcio_observability/grpc_observability/_observability.py b/src/python/grpcio_observability/grpc_observability/_observability.py index 1f0ea328f3f..352a25c69d7 100644 --- a/src/python/grpcio_observability/grpc_observability/_observability.py +++ b/src/python/grpcio_observability/grpc_observability/_observability.py @@ -52,6 +52,8 @@ class StatsData: value. value_int: The actual metric value if measure_double is False. value_float: The actual metric value if measure_double is True. + registered_method: Whether the method in this data is a registered method + in stubs. labels: A dictionary that maps label tags associated with this metric to corresponding label value. """ @@ -60,6 +62,7 @@ class StatsData: measure_double: bool value_int: int = 0 value_float: float = 0.0 + registered_method: bool = False labels: Mapping[str, str] = field(default_factory=dict) diff --git a/src/python/grpcio_observability/grpc_observability/_open_telemetry_observability.py b/src/python/grpcio_observability/grpc_observability/_open_telemetry_observability.py index 7846c5568f5..24eee8e062f 100644 --- a/src/python/grpcio_observability/grpc_observability/_open_telemetry_observability.py +++ b/src/python/grpcio_observability/grpc_observability/_open_telemetry_observability.py @@ -15,7 +15,7 @@ import logging import threading import time -from typing import Any, Dict, Iterable, List, Optional, Union +from typing import Any, Dict, Iterable, List, Optional, Set, Union import grpc @@ -224,6 +224,7 @@ class OpenTelemetryObservability(grpc._observability.ObservabilityPlugin): """ exporter: "grpc_observability.Exporter" + _registered_method: Set[bytes] def __init__( self, @@ -231,6 +232,7 @@ class OpenTelemetryObservability(grpc._observability.ObservabilityPlugin): plugins: Optional[Iterable[_OpenTelemetryPlugin]], ): self.exporter = _OpenTelemetryExporterDelegator(plugins) + self._registered_methods = set() def observability_init(self): try: @@ -266,8 +268,11 @@ class OpenTelemetryObservability(grpc._observability.ObservabilityPlugin): self, method_name: bytes, target: bytes ) -> ClientCallTracerCapsule: trace_id = b"TRACE_ID" + registered_method = False + if method_name in self._registered_methods: + registered_method = True capsule = _cyobservability.create_client_call_tracer( - method_name, target, trace_id + method_name, target, trace_id, registered_method ) return capsule @@ -295,10 +300,22 @@ class OpenTelemetryObservability(grpc._observability.ObservabilityPlugin): status_code: grpc.StatusCode, ) -> None: status_code = GRPC_STATUS_CODE_TO_STRING.get(status_code, "UNKNOWN") + registered_method = False + encoded_method = method.encode("utf8") + if encoded_method in self._registered_methods: + registered_method = True _cyobservability._record_rpc_latency( - self.exporter, method, target, rpc_latency, status_code + self.exporter, + method, + target, + rpc_latency, + status_code, + registered_method, ) + def save_registered_method(self, method_name: bytes) -> None: + self._registered_methods.add(method_name) + def _start_open_telemetry_observability( otel_o11y: OpenTelemetryObservability, diff --git a/src/python/grpcio_observability/grpc_observability/client_call_tracer.cc b/src/python/grpcio_observability/grpc_observability/client_call_tracer.cc index d29aae548a4..5d31619b949 100644 --- a/src/python/grpcio_observability/grpc_observability/client_call_tracer.cc +++ b/src/python/grpcio_observability/grpc_observability/client_call_tracer.cc @@ -23,7 +23,7 @@ #include "absl/time/clock.h" #include "constants.h" #include "observability_util.h" -#include "python_census_context.h" +#include "python_observability_context.h" #include @@ -42,10 +42,11 @@ constexpr uint32_t PythonOpenCensusCallTracer::PythonOpenCensusCallTracer( const char* method, const char* target, const char* trace_id, - const char* parent_span_id, bool tracing_enabled) + const char* parent_span_id, bool tracing_enabled, bool registered_method) : method_(GetMethod(method)), target_(GetTarget(target)), - tracing_enabled_(tracing_enabled) { + tracing_enabled_(tracing_enabled), + registered_method_(registered_method) { GenerateClientContext(absl::StrCat("Sent.", method_), absl::string_view(trace_id), absl::string_view(parent_span_id), &context_); @@ -82,11 +83,14 @@ PythonOpenCensusCallTracer::~PythonOpenCensusCallTracer() { if (PythonCensusStatsEnabled()) { context_.Labels().emplace_back(kClientMethod, std::string(method_)); RecordIntMetric(kRpcClientRetriesPerCallMeasureName, retries_ - 1, + registered_method_, context_.Labels()); // exclude first attempt RecordIntMetric(kRpcClientTransparentRetriesPerCallMeasureName, - transparent_retries_, context_.Labels()); + transparent_retries_, registered_method_, + context_.Labels()); RecordDoubleMetric(kRpcClientRetryDelayPerCallMeasureName, - ToDoubleSeconds(retry_delay_), context_.Labels()); + ToDoubleSeconds(retry_delay_), registered_method_, + context_.Labels()); } if (tracing_enabled_) { @@ -149,7 +153,8 @@ PythonOpenCensusCallTracer::PythonOpenCensusCallAttemptTracer:: } context_.Labels().emplace_back(kClientMethod, std::string(parent_->method_)); context_.Labels().emplace_back(kClientTarget, std::string(parent_->target_)); - RecordIntMetric(kRpcClientStartedRpcsMeasureName, 1, context_.Labels()); + RecordIntMetric(kRpcClientStartedRpcsMeasureName, 1, + parent_->registered_method_, context_.Labels()); } void PythonOpenCensusCallTracer::PythonOpenCensusCallAttemptTracer:: @@ -235,20 +240,21 @@ void PythonOpenCensusCallTracer::PythonOpenCensusCallAttemptTracer:: static_cast(transport_stream_stats != nullptr ? transport_stream_stats->outgoing.data_bytes : 0), - context_.Labels()); + parent_->registered_method_, context_.Labels()); RecordDoubleMetric( kRpcClientReceivedBytesPerRpcMeasureName, static_cast(transport_stream_stats != nullptr ? transport_stream_stats->incoming.data_bytes : 0), - context_.Labels()); + parent_->registered_method_, context_.Labels()); RecordDoubleMetric(kRpcClientServerLatencyMeasureName, absl::ToDoubleSeconds(absl::Nanoseconds(elapsed_time)), - context_.Labels()); + parent_->registered_method_, context_.Labels()); RecordDoubleMetric(kRpcClientRoundtripLatencyMeasureName, absl::ToDoubleSeconds(absl::Now() - start_time_), - context_.Labels()); - RecordIntMetric(kRpcClientCompletedRpcMeasureName, 1, context_.Labels()); + parent_->registered_method_, context_.Labels()); + RecordIntMetric(kRpcClientCompletedRpcMeasureName, 1, + parent_->registered_method_, context_.Labels()); } void PythonOpenCensusCallTracer::PythonOpenCensusCallAttemptTracer:: @@ -262,9 +268,11 @@ void PythonOpenCensusCallTracer::PythonOpenCensusCallAttemptTracer::RecordEnd( context_.Labels().emplace_back(kClientStatus, StatusCodeToString(status_code_)); RecordIntMetric(kRpcClientSentMessagesPerRpcMeasureName, - sent_message_count_, context_.Labels()); + sent_message_count_, parent_->registered_method_, + context_.Labels()); RecordIntMetric(kRpcClientReceivedMessagesPerRpcMeasureName, - recv_message_count_, context_.Labels()); + recv_message_count_, parent_->registered_method_, + context_.Labels()); grpc_core::MutexLock lock(&parent_->mu_); if (--parent_->num_active_rpcs_ == 0) { diff --git a/src/python/grpcio_observability/grpc_observability/client_call_tracer.h b/src/python/grpcio_observability/grpc_observability/client_call_tracer.h index 1aefd75d5f6..e100c4bcfc8 100644 --- a/src/python/grpcio_observability/grpc_observability/client_call_tracer.h +++ b/src/python/grpcio_observability/grpc_observability/client_call_tracer.h @@ -24,7 +24,7 @@ #include "absl/strings/escaping.h" #include "absl/strings/string_view.h" #include "absl/time/time.h" -#include "python_census_context.h" +#include "python_observability_context.h" #include @@ -96,7 +96,8 @@ class PythonOpenCensusCallTracer : public grpc_core::ClientCallTracer { explicit PythonOpenCensusCallTracer(const char* method, const char* target, const char* trace_id, const char* parent_span_id, - bool tracing_enabled); + bool tracing_enabled, + bool registered_method); ~PythonOpenCensusCallTracer() override; std::string TraceId() override { @@ -127,6 +128,7 @@ class PythonOpenCensusCallTracer : public grpc_core::ClientCallTracer { absl::string_view target_; PythonCensusContext context_; bool tracing_enabled_; + const bool registered_method_; mutable grpc_core::Mutex mu_; // Non-transparent attempts per call uint64_t retries_ ABSL_GUARDED_BY(&mu_) = 0; diff --git a/src/python/grpcio_observability/grpc_observability/constants.h b/src/python/grpcio_observability/grpc_observability/constants.h index 79212599487..cd8bc34c8d7 100644 --- a/src/python/grpcio_observability/grpc_observability/constants.h +++ b/src/python/grpcio_observability/grpc_observability/constants.h @@ -24,6 +24,7 @@ const std::string kClientTarget = "grpc.target"; const std::string kClientStatus = "grpc.status"; const std::string kServerMethod = "grpc.method"; const std::string kServerStatus = "grpc.status"; +const std::string kRegisteredMethod = "registerMethod"; typedef enum { kMeasurementDouble = 0, kMeasurementInt } MeasurementType; diff --git a/src/python/grpcio_observability/grpc_observability/observability_util.cc b/src/python/grpcio_observability/grpc_observability/observability_util.cc index 6af56d45601..ada4cd2cca2 100644 --- a/src/python/grpcio_observability/grpc_observability/observability_util.cc +++ b/src/python/grpcio_observability/grpc_observability/observability_util.cc @@ -24,7 +24,7 @@ #include "absl/types/optional.h" #include "client_call_tracer.h" #include "constants.h" -#include "python_census_context.h" +#include "python_observability_context.h" #include "server_call_tracer.h" #include @@ -61,10 +61,12 @@ int GetMaxExportBufferSize() { } // namespace void RecordIntMetric(MetricsName name, int64_t value, + const bool registered_method, const std::vector