grpc 1.78.0 → 1.80.0.pre1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Makefile +22 -8
- data/include/grpc/credentials.h +47 -37
- data/include/grpc/credentials_cpp.h +39 -0
- data/include/grpc/event_engine/event_engine.h +8 -3
- data/include/grpc/grpc.h +4 -0
- data/include/grpc/impl/call.h +9 -0
- data/include/grpc/impl/channel_arg_names.h +7 -0
- data/include/grpc/module.modulemap +2 -0
- data/include/grpc/private_key_signer.h +104 -0
- data/include/grpc/support/port_platform.h +6 -0
- data/src/core/call/call_filters.h +101 -78
- data/src/core/call/call_spine.h +91 -68
- data/src/core/call/call_state.h +60 -4
- data/src/core/call/client_call.cc +9 -9
- data/src/core/call/client_call.h +1 -1
- data/src/core/call/metadata_batch.cc +2 -0
- data/src/core/call/metadata_batch.h +48 -1
- data/src/core/call/metadata_info.cc +35 -0
- data/src/core/call/metadata_info.h +2 -0
- data/src/core/call/simple_slice_based_metadata.h +2 -1
- data/src/core/channelz/channelz.cc +9 -6
- data/src/core/channelz/channelz.h +7 -4
- data/src/core/channelz/property_list.h +5 -0
- data/src/core/channelz/v2tov1/convert.cc +1 -1
- data/src/core/channelz/v2tov1/legacy_api.cc +164 -307
- data/src/core/client_channel/buffered_call.cc +7 -3
- data/src/core/client_channel/buffered_call.h +11 -5
- data/src/core/client_channel/client_channel.cc +106 -44
- data/src/core/client_channel/client_channel.h +3 -6
- data/src/core/client_channel/client_channel_filter.cc +90 -64
- data/src/core/client_channel/client_channel_filter.h +3 -6
- data/src/core/client_channel/client_channel_internal.h +5 -0
- data/src/core/client_channel/config_selector.h +17 -12
- data/src/core/client_channel/dynamic_filters.cc +8 -7
- data/src/core/client_channel/dynamic_filters.h +7 -5
- data/src/core/client_channel/retry_filter.cc +1 -1
- data/src/core/client_channel/retry_filter.h +2 -2
- data/src/core/client_channel/subchannel.cc +1682 -266
- data/src/core/client_channel/subchannel.h +411 -134
- data/src/core/client_channel/subchannel_stream_client.cc +22 -18
- data/src/core/client_channel/subchannel_stream_client.h +8 -9
- data/src/core/client_channel/subchannel_stream_limiter.cc +76 -0
- data/src/core/client_channel/subchannel_stream_limiter.h +51 -0
- data/src/core/config/config_vars.cc +9 -1
- data/src/core/config/config_vars.h +6 -0
- data/src/core/credentials/call/call_creds_registry.h +51 -22
- data/src/core/credentials/call/call_creds_registry_init.cc +86 -2
- data/src/core/credentials/call/external/aws_external_account_credentials.cc +2 -2
- data/src/core/credentials/call/external/external_account_credentials.cc +11 -4
- data/src/core/credentials/call/external/file_external_account_credentials.cc +2 -2
- data/src/core/credentials/transport/channel_creds_registry.h +71 -20
- data/src/core/credentials/transport/channel_creds_registry_init.cc +338 -29
- data/src/core/credentials/transport/ssl/ssl_credentials.cc +43 -24
- data/src/core/credentials/transport/ssl/ssl_credentials.h +7 -1
- data/src/core/credentials/transport/ssl/ssl_security_connector.cc +2 -8
- data/src/core/credentials/transport/ssl/ssl_security_connector.h +4 -3
- data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.cc +25 -5
- data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.h +7 -5
- data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.cc +181 -109
- data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.h +55 -42
- data/src/core/credentials/transport/tls/grpc_tls_credentials_options.cc +28 -23
- data/src/core/credentials/transport/tls/grpc_tls_credentials_options.h +26 -23
- data/src/core/credentials/transport/tls/spiffe_utils.cc +2 -2
- data/src/core/credentials/transport/tls/ssl_utils.cc +18 -18
- data/src/core/credentials/transport/tls/ssl_utils.h +12 -10
- data/src/core/credentials/transport/tls/tls_security_connector.cc +106 -74
- data/src/core/credentials/transport/tls/tls_security_connector.h +12 -8
- data/src/core/credentials/transport/xds/xds_credentials.cc +76 -32
- data/src/core/credentials/transport/xds/xds_credentials.h +4 -2
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +117 -35
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +42 -4
- data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.cc +58 -29
- data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.h +19 -11
- data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +82 -25
- data/src/core/ext/filters/stateful_session/stateful_session_filter.h +28 -3
- data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.cc +9 -7
- data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.h +1 -1
- data/src/core/ext/transport/chttp2/transport/call_tracer_wrapper.h +7 -1
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +117 -67
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +2 -0
- data/src/core/ext/transport/chttp2/transport/flow_control.h +11 -1
- data/src/core/ext/transport/chttp2/transport/frame.cc +2 -15
- data/src/core/ext/transport/chttp2/transport/frame.h +0 -4
- data/src/core/ext/transport/chttp2/transport/goaway.cc +17 -2
- data/src/core/ext/transport/chttp2/transport/goaway.h +27 -6
- data/src/core/ext/transport/chttp2/transport/header_assembler.h +8 -21
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +101 -40
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +95 -0
- data/src/core/ext/transport/chttp2/transport/http2_client_transport.cc +923 -772
- data/src/core/ext/transport/chttp2/transport/http2_client_transport.h +406 -423
- data/src/core/ext/transport/chttp2/transport/http2_settings.cc +1 -0
- data/src/core/ext/transport/chttp2/transport/http2_settings.h +8 -1
- data/src/core/ext/transport/chttp2/transport/http2_settings_promises.h +25 -13
- data/src/core/ext/transport/chttp2/transport/http2_transport.cc +71 -24
- data/src/core/ext/transport/chttp2/transport/http2_transport.h +25 -49
- data/src/core/ext/transport/chttp2/transport/http2_ztrace_collector.h +2 -2
- data/src/core/ext/transport/chttp2/transport/incoming_metadata_tracker.h +29 -9
- data/src/core/ext/transport/chttp2/transport/internal.h +6 -2
- data/src/core/ext/transport/chttp2/transport/keepalive.cc +14 -20
- data/src/core/ext/transport/chttp2/transport/keepalive.h +9 -6
- data/src/core/ext/transport/chttp2/transport/parsing.cc +11 -0
- data/src/core/ext/transport/chttp2/transport/ping_promise.cc +34 -74
- data/src/core/ext/transport/chttp2/transport/ping_promise.h +123 -79
- data/src/core/ext/transport/chttp2/transport/security_frame.h +233 -3
- data/src/core/ext/transport/chttp2/transport/stream.h +152 -73
- data/src/core/ext/transport/chttp2/transport/stream_data_queue.h +155 -85
- data/src/core/ext/transport/chttp2/transport/transport_common.h +0 -5
- data/src/core/ext/transport/chttp2/transport/writable_streams.h +8 -7
- data/src/core/ext/transport/chttp2/transport/write_cycle.cc +86 -0
- data/src/core/ext/transport/chttp2/transport/write_cycle.h +355 -0
- data/src/core/ext/transport/chttp2/transport/writing.cc +31 -29
- data/src/core/ext/upb-gen/cel/expr/checked.upb.h +1875 -0
- data/src/core/ext/upb-gen/cel/expr/checked.upb_minitable.c +409 -0
- data/src/core/ext/upb-gen/cel/expr/checked.upb_minitable.h +56 -0
- data/src/core/ext/upb-gen/cel/expr/syntax.upb.h +2223 -0
- data/src/core/ext/upb-gen/cel/expr/syntax.upb_minitable.c +489 -0
- data/src/core/ext/upb-gen/cel/expr/syntax.upb_minitable.h +60 -0
- data/src/core/ext/upb-gen/envoy/config/accesslog/v3/accesslog.upb.h +2 -1
- data/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb.h +130 -18
- data/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb_minitable.c +18 -13
- data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb.h +70 -38
- data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb_minitable.c +20 -17
- data/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb.h +26 -10
- data/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb_minitable.c +8 -7
- data/src/core/ext/upb-gen/envoy/config/common/mutation_rules/v3/mutation_rules.upb.h +495 -0
- data/src/core/ext/upb-gen/envoy/config/common/mutation_rules/v3/mutation_rules.upb_minitable.c +114 -0
- data/src/core/ext/upb-gen/envoy/config/common/mutation_rules/v3/mutation_rules.upb_minitable.h +36 -0
- data/src/core/ext/upb-gen/envoy/config/core/v3/address.upb.h +26 -10
- data/src/core/ext/upb-gen/envoy/config/core/v3/address.upb_minitable.c +8 -7
- data/src/core/ext/upb-gen/envoy/config/core/v3/cel.upb.h +121 -0
- data/src/core/ext/upb-gen/envoy/config/core/v3/cel.upb_minitable.c +54 -0
- data/src/core/ext/upb-gen/envoy/config/core/v3/cel.upb_minitable.h +32 -0
- data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb.h +143 -9
- data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb_minitable.c +18 -6
- data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb.h +112 -11
- data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb_minitable.c +22 -9
- data/src/core/ext/upb-gen/envoy/config/core/v3/proxy_protocol.upb.h +276 -0
- data/src/core/ext/upb-gen/envoy/config/core/v3/proxy_protocol.upb_minitable.c +60 -5
- data/src/core/ext/upb-gen/envoy/config/core/v3/proxy_protocol.upb_minitable.h +4 -0
- data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb.h +72 -0
- data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb_minitable.c +23 -2
- data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb_minitable.h +2 -0
- data/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb.h +129 -13
- data/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb_minitable.c +36 -10
- data/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb_minitable.h +2 -0
- data/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb.h +30 -0
- data/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb_minitable.c +5 -3
- data/src/core/ext/upb-gen/envoy/config/metrics/v3/metrics_service.upb.h +16 -0
- data/src/core/ext/upb-gen/envoy/config/metrics/v3/metrics_service.upb_minitable.c +4 -3
- data/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb.h +31 -0
- data/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb_minitable.c +5 -3
- data/src/core/ext/upb-gen/envoy/config/overload/v3/overload.upb.h +2 -1
- data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb.h +63 -0
- data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb_minitable.c +12 -7
- data/src/core/ext/upb-gen/envoy/config/route/v3/route.upb.h +97 -81
- data/src/core/ext/upb-gen/envoy/config/route/v3/route.upb_minitable.c +40 -23
- data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb.h +604 -228
- data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb_minitable.c +146 -100
- data/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb.h +30 -0
- data/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb_minitable.c +5 -3
- data/src/core/ext/upb-gen/envoy/config/trace/v3/opentelemetry.upb.h +35 -3
- data/src/core/ext/upb-gen/envoy/config/trace/v3/opentelemetry.upb_minitable.c +7 -4
- data/src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb.h +66 -14
- data/src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb_minitable.c +22 -11
- data/src/core/ext/upb-gen/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +87 -0
- data/src/core/ext/upb-gen/envoy/extensions/clusters/aggregate/v3/cluster.upb_minitable.c +29 -2
- data/src/core/ext/upb-gen/envoy/extensions/clusters/aggregate/v3/cluster.upb_minitable.h +2 -0
- data/src/core/ext/upb-gen/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +0 -1
- data/src/core/ext/upb-gen/envoy/extensions/filters/http/rbac/v3/rbac.upb_minitable.c +0 -1
- data/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.h +20 -4
- data/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb_minitable.c +5 -4
- data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +239 -60
- data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb_minitable.c +59 -28
- data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb_minitable.h +2 -0
- data/src/core/ext/upb-gen/envoy/extensions/grpc_service/call_credentials/access_token/v3/access_token_credentials.upb.h +89 -0
- data/src/core/ext/upb-gen/envoy/extensions/grpc_service/call_credentials/access_token/v3/access_token_credentials.upb_minitable.c +50 -0
- data/src/core/ext/upb-gen/envoy/extensions/grpc_service/call_credentials/access_token/v3/access_token_credentials.upb_minitable.h +32 -0
- data/src/core/ext/upb-gen/envoy/extensions/grpc_service/channel_credentials/tls/v3/tls_credentials.upb.h +135 -0
- data/src/core/ext/upb-gen/envoy/extensions/grpc_service/channel_credentials/tls/v3/tls_credentials.upb_minitable.c +53 -0
- data/src/core/ext/upb-gen/envoy/extensions/grpc_service/channel_credentials/tls/v3/tls_credentials.upb_minitable.h +32 -0
- data/src/core/ext/upb-gen/envoy/extensions/grpc_service/channel_credentials/xds/v3/xds_credentials.upb.h +105 -0
- data/src/core/ext/upb-gen/envoy/extensions/grpc_service/channel_credentials/xds/v3/xds_credentials.upb_minitable.c +51 -0
- data/src/core/ext/upb-gen/envoy/extensions/grpc_service/channel_credentials/xds/v3/xds_credentials.upb_minitable.h +32 -0
- data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.h +32 -0
- data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb_minitable.c +6 -3
- data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb.h +206 -0
- data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb_minitable.c +41 -8
- data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb_minitable.h +2 -0
- data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb.h +64 -0
- data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb_minitable.c +4 -3
- data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +64 -0
- data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/secret.upb_minitable.c +31 -5
- data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/secret.upb_minitable.h +2 -0
- data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb.h +283 -14
- data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb_minitable.c +48 -11
- data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb_minitable.h +2 -0
- data/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb.h +144 -6
- data/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb_minitable.c +35 -7
- data/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb_minitable.h +2 -0
- data/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb.h +42 -21
- data/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb_minitable.c +9 -8
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb.h +164 -1
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb_minitable.c +37 -6
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb_minitable.h +2 -0
- data/src/core/ext/upb-gen/xds/type/matcher/v3/cel.upb.h +0 -1
- data/src/core/ext/upb-gen/xds/type/matcher/v3/cel.upb_minitable.c +0 -1
- data/src/core/ext/upb-gen/xds/type/matcher/v3/http_inputs.upb.h +0 -1
- data/src/core/ext/upb-gen/xds/type/matcher/v3/http_inputs.upb_minitable.c +0 -1
- data/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb.h +26 -11
- data/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb_minitable.c +8 -8
- data/src/core/ext/upb-gen/xds/type/matcher/v3/string.upb.h +33 -0
- data/src/core/ext/upb-gen/xds/type/matcher/v3/string.upb_minitable.c +14 -3
- data/src/core/ext/upb-gen/xds/type/v3/cel.upb.h +90 -10
- data/src/core/ext/upb-gen/xds/type/v3/cel.upb_minitable.c +18 -7
- data/src/core/ext/upbdefs-gen/cel/expr/checked.upbdefs.c +248 -0
- data/src/core/ext/upbdefs-gen/cel/expr/checked.upbdefs.h +97 -0
- data/src/core/ext/upbdefs-gen/cel/expr/syntax.upbdefs.c +283 -0
- data/src/core/ext/upbdefs-gen/cel/expr/syntax.upbdefs.h +107 -0
- data/src/core/ext/upbdefs-gen/envoy/config/accesslog/v3/accesslog.upbdefs.c +213 -211
- data/src/core/ext/upbdefs-gen/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +635 -614
- data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/cluster.upbdefs.c +1012 -1000
- data/src/core/ext/upbdefs-gen/envoy/config/common/matcher/v3/matcher.upbdefs.c +276 -273
- data/src/core/ext/upbdefs-gen/envoy/config/common/mutation_rules/v3/mutation_rules.upbdefs.c +152 -0
- data/src/core/ext/upbdefs-gen/envoy/config/common/mutation_rules/v3/mutation_rules.upbdefs.h +47 -0
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/address.upbdefs.c +149 -144
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/base.upbdefs.c +367 -370
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/cel.upbdefs.c +63 -0
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/cel.upbdefs.h +37 -0
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/grpc_service.upbdefs.c +297 -284
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/protocol.upbdefs.c +492 -469
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/proxy_protocol.upbdefs.c +74 -43
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/proxy_protocol.upbdefs.h +10 -0
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/substitution_format_string.upbdefs.c +60 -59
- data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +202 -184
- data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/endpoint_components.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener.upbdefs.c +354 -339
- data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/quic_config.upbdefs.c +28 -19
- data/src/core/ext/upbdefs-gen/envoy/config/metrics/v3/metrics_service.upbdefs.c +30 -27
- data/src/core/ext/upbdefs-gen/envoy/config/metrics/v3/stats.upbdefs.c +71 -66
- data/src/core/ext/upbdefs-gen/envoy/config/overload/v3/overload.upbdefs.c +94 -91
- data/src/core/ext/upbdefs-gen/envoy/config/rbac/v3/rbac.upbdefs.c +386 -369
- data/src/core/ext/upbdefs-gen/envoy/config/route/v3/route.upbdefs.c +60 -57
- data/src/core/ext/upbdefs-gen/envoy/config/route/v3/route_components.upbdefs.c +1974 -1884
- data/src/core/ext/upbdefs-gen/envoy/config/tap/v3/common.upbdefs.c +119 -112
- data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/opentelemetry.upbdefs.c +62 -51
- data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/zipkin.upbdefs.c +109 -88
- data/src/core/ext/upbdefs-gen/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +54 -36
- data/src/core/ext/upbdefs-gen/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +78 -84
- data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.c +48 -46
- data/src/core/ext/upbdefs-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +1041 -984
- data/src/core/ext/upbdefs-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +304 -290
- data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +94 -77
- data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upbdefs.c +246 -193
- data/src/core/ext/upbdefs-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-gen/envoy/type/http/v3/cookie.upbdefs.c +37 -23
- data/src/core/ext/upbdefs-gen/envoy/type/http/v3/cookie.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-gen/envoy/type/tracing/v3/custom_tag.upbdefs.c +5 -3
- data/src/core/ext/upbdefs-gen/google/api/http.upbdefs.c +4 -4
- data/src/core/ext/upbdefs-gen/google/api/httpbody.upbdefs.c +4 -5
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/promise.upbdefs.c +113 -87
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/promise.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-gen/udpa/annotations/migrate.upbdefs.c +5 -5
- data/src/core/ext/upbdefs-gen/udpa/annotations/security.upbdefs.c +6 -5
- data/src/core/ext/upbdefs-gen/udpa/annotations/sensitive.upbdefs.c +5 -5
- data/src/core/ext/upbdefs-gen/udpa/annotations/status.upbdefs.c +5 -5
- data/src/core/ext/upbdefs-gen/udpa/annotations/versioning.upbdefs.c +5 -5
- data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/cel.upbdefs.c +25 -30
- data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/http_inputs.upbdefs.c +14 -20
- data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/matcher.upbdefs.c +180 -183
- data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/string.upbdefs.c +56 -47
- data/src/core/ext/upbdefs-gen/xds/type/v3/cel.upbdefs.c +69 -47
- data/src/core/filter/filter_chain.h +95 -0
- data/src/core/handshaker/http_connect/{http_connect_handshaker.cc → http_connect_client_handshaker.cc} +32 -31
- data/src/core/handshaker/http_connect/{http_connect_handshaker.h → http_connect_client_handshaker.h} +4 -4
- data/src/core/handshaker/http_connect/http_proxy_mapper.cc +1 -1
- data/src/core/handshaker/http_connect/xds_http_proxy_mapper.cc +1 -1
- data/src/core/handshaker/security/pipelined_secure_endpoint.cc +14 -13
- data/src/core/handshaker/security/secure_endpoint.cc +282 -68
- data/src/core/handshaker/security/secure_endpoint.h +0 -7
- data/src/core/lib/channel/channel_args.h +1 -1
- data/src/core/lib/channel/promise_based_filter.cc +17 -4
- data/src/core/lib/channel/promise_based_filter.h +3 -2
- data/src/core/lib/debug/trace_flags.cc +2 -0
- data/src/core/lib/debug/trace_flags.h +1 -0
- data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc +35 -8
- data/src/core/lib/event_engine/cf_engine/dns_service_resolver.h +1 -2
- data/src/core/lib/event_engine/event_engine.cc +9 -0
- data/src/core/lib/event_engine/extensions/tcp_trace.h +0 -3
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +2 -2
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +1 -1
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +34 -9
- data/src/core/lib/event_engine/posix_engine/posix_engine.h +24 -2
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +1 -3
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +141 -14
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.h +19 -2
- data/src/core/lib/event_engine/posix_engine/posix_interface.h +7 -0
- data/src/core/lib/event_engine/posix_engine/posix_interface_posix.cc +21 -3
- data/src/core/lib/event_engine/posix_engine/posix_interface_windows.cc +16 -0
- data/src/core/lib/experiments/experiments.cc +309 -201
- data/src/core/lib/experiments/experiments.h +141 -80
- data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +2 -2
- data/src/core/lib/iomgr/resolve_address.h +0 -2
- data/src/core/lib/iomgr/resolved_address.h +0 -2
- data/src/core/lib/iomgr/tcp_posix.cc +13 -5
- data/src/core/lib/iomgr/tcp_server.cc +0 -5
- data/src/core/lib/iomgr/tcp_server.h +0 -7
- data/src/core/lib/iomgr/tcp_server_posix.cc +0 -17
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +0 -3
- data/src/core/lib/iomgr/tcp_server_windows.cc +12 -51
- data/src/core/lib/promise/all_ok.h +17 -12
- data/src/core/lib/promise/cancel_callback.h +12 -13
- data/src/core/lib/promise/detail/join_state.h +626 -0
- data/src/core/lib/promise/detail/promise_factory.h +14 -14
- data/src/core/lib/promise/for_each.h +32 -8
- data/src/core/lib/promise/if.h +9 -7
- data/src/core/lib/promise/loop.h +18 -16
- data/src/core/lib/promise/map.h +54 -47
- data/src/core/lib/promise/mpsc.h +11 -10
- data/src/core/lib/promise/observable.h +6 -6
- data/src/core/lib/promise/party.h +25 -19
- data/src/core/lib/promise/poll.h +5 -5
- data/src/core/lib/promise/prioritized_race.h +10 -7
- data/src/core/lib/promise/promise.h +16 -11
- data/src/core/lib/promise/race.h +6 -5
- data/src/core/lib/promise/seq.h +109 -74
- data/src/core/lib/promise/try_join.h +14 -6
- data/src/core/lib/promise/try_seq.h +76 -60
- data/src/core/lib/resource_quota/api.cc +7 -0
- data/src/core/lib/resource_quota/arena.h +1 -1
- data/src/core/lib/resource_quota/memory_quota.cc +4 -1
- data/src/core/lib/resource_quota/resource_quota.cc +2 -1
- data/src/core/lib/resource_quota/resource_quota.h +3 -0
- data/src/core/lib/resource_quota/stream_quota.cc +77 -1
- data/src/core/lib/resource_quota/stream_quota.h +64 -1
- data/src/core/lib/resource_quota/telemetry.h +1 -1
- data/src/core/lib/surface/call.cc +13 -0
- data/src/core/lib/surface/call_utils.h +58 -43
- data/src/core/lib/surface/channel.h +1 -4
- data/src/core/lib/surface/completion_queue.cc +13 -6
- data/src/core/lib/surface/validate_metadata.cc +20 -15
- data/src/core/lib/surface/validate_metadata.h +3 -1
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/promise_endpoint.cc +1 -1
- data/src/core/lib/transport/promise_endpoint.h +1 -1
- data/src/core/lib/transport/transport.h +5 -0
- data/src/core/load_balancing/health_check_client.cc +1 -15
- data/src/core/load_balancing/health_check_client_internal.h +0 -2
- data/src/core/load_balancing/oob_backend_metric.cc +1 -5
- data/src/core/load_balancing/oob_backend_metric_internal.h +0 -1
- data/src/core/load_balancing/xds/xds_cluster_impl.cc +12 -9
- data/src/core/plugin_registry/grpc_plugin_registry.cc +3 -2
- data/src/core/resolver/xds/xds_resolver.cc +162 -116
- data/src/core/server/server.cc +18 -1
- data/src/core/server/server.h +2 -0
- data/src/core/server/xds_server_config_fetcher.cc +4 -4
- data/src/core/telemetry/call_tracer.cc +87 -2
- data/src/core/telemetry/call_tracer.h +46 -8
- data/src/core/telemetry/instrument.cc +102 -40
- data/src/core/telemetry/instrument.h +246 -65
- data/src/core/tsi/fake_transport_security.cc +3 -1
- data/src/core/tsi/ssl_transport_security.cc +516 -137
- data/src/core/tsi/ssl_transport_security.h +28 -22
- data/src/core/tsi/ssl_transport_security_utils.cc +2 -2
- data/src/core/tsi/ssl_transport_security_utils.h +2 -2
- data/src/core/util/bitset.h +6 -0
- data/src/core/util/function_signature.h +3 -1
- data/src/core/util/http_client/httpcli_security_connector.cc +2 -1
- data/src/core/util/json/json_reader.cc +0 -4
- data/src/core/xds/grpc/certificate_provider_store.cc +2 -1
- data/src/core/xds/grpc/certificate_provider_store.h +3 -17
- data/src/core/xds/grpc/certificate_provider_store_interface.h +61 -0
- data/src/core/xds/grpc/xds_bootstrap_grpc.cc +48 -0
- data/src/core/xds/grpc/xds_bootstrap_grpc.h +18 -0
- data/src/core/xds/grpc/xds_certificate_provider.cc +7 -2
- data/src/core/xds/grpc/xds_certificate_provider.h +13 -2
- data/src/core/xds/grpc/xds_client_grpc.cc +13 -6
- data/src/core/xds/grpc/xds_client_grpc.h +10 -7
- data/src/core/xds/grpc/xds_cluster.cc +18 -4
- data/src/core/xds/grpc/xds_cluster.h +17 -2
- data/src/core/xds/grpc/xds_cluster_parser.cc +36 -11
- data/src/core/xds/grpc/xds_common_types.cc +45 -0
- data/src/core/xds/grpc/xds_common_types.h +31 -0
- data/src/core/xds/grpc/xds_common_types_parser.cc +274 -16
- data/src/core/xds/grpc/xds_common_types_parser.h +12 -0
- data/src/core/xds/grpc/xds_http_fault_filter.cc +128 -24
- data/src/core/xds/grpc/xds_http_fault_filter.h +19 -10
- data/src/core/xds/grpc/xds_http_filter.cc +38 -0
- data/src/core/xds/grpc/xds_http_filter.h +70 -47
- data/src/core/xds/grpc/xds_http_filter_registry.cc +48 -14
- data/src/core/xds/grpc/xds_http_filter_registry.h +29 -15
- data/src/core/xds/grpc/xds_http_gcp_authn_filter.cc +88 -22
- data/src/core/xds/grpc/xds_http_gcp_authn_filter.h +22 -11
- data/src/core/xds/grpc/xds_http_rbac_filter.cc +36 -20
- data/src/core/xds/grpc/xds_http_rbac_filter.h +19 -10
- data/src/core/xds/grpc/xds_http_stateful_session_filter.cc +143 -26
- data/src/core/xds/grpc/xds_http_stateful_session_filter.h +19 -10
- data/src/core/xds/grpc/xds_listener.cc +4 -1
- data/src/core/xds/grpc/xds_listener.h +10 -2
- data/src/core/xds/grpc/xds_listener_parser.cc +23 -18
- data/src/core/xds/grpc/xds_matcher.cc +40 -5
- data/src/core/xds/grpc/xds_matcher.h +13 -0
- data/src/core/xds/grpc/xds_matcher_action.h +1 -1
- data/src/core/xds/grpc/xds_matcher_parse.cc +60 -40
- data/src/core/xds/grpc/xds_matcher_parse.h +2 -1
- data/src/core/xds/grpc/xds_route_config.cc +12 -1
- data/src/core/xds/grpc/xds_route_config.h +15 -2
- data/src/core/xds/grpc/xds_route_config_parser.cc +11 -5
- data/src/core/xds/grpc/xds_routing.cc +181 -6
- data/src/core/xds/grpc/xds_routing.h +57 -0
- data/src/core/xds/grpc/xds_server_grpc.cc +55 -43
- data/src/core/xds/grpc/xds_server_grpc.h +13 -6
- data/src/core/xds/grpc/xds_server_grpc_interface.h +3 -2
- data/src/core/xds/grpc/xds_transport_grpc.cc +12 -6
- data/src/core/xds/grpc/xds_transport_grpc.h +5 -1
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +12 -8
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +18 -12
- data/src/ruby/lib/grpc/grpc.rb +7 -9
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/generate_proto_ruby.sh +1 -1
- data/src/ruby/spec/client_server_spec.rb +1 -1
- data/src/ruby/spec/generic/rpc_server_pool_spec.rb +1 -1
- data/src/ruby/spec/generic/rpc_server_spec.rb +3 -4
- data/src/ruby/spec/spec_helper.rb +1 -1
- metadata +64 -14
- data/src/core/ext/transport/chttp2/transport/security_frame.cc +0 -31
- data/src/core/handshaker/security/legacy_secure_endpoint.cc +0 -597
|
@@ -207,7 +207,6 @@ class OrcaProducer::OrcaStreamEventHandler final
|
|
|
207
207
|
|
|
208
208
|
void OrcaProducer::Start(WeakRefCountedPtr<Subchannel> subchannel) {
|
|
209
209
|
subchannel_ = std::move(subchannel);
|
|
210
|
-
connected_subchannel_ = subchannel_->connected_subchannel();
|
|
211
210
|
auto connectivity_watcher =
|
|
212
211
|
MakeRefCounted<ConnectivityWatcher>(WeakRefAsSubclass<OrcaProducer>());
|
|
213
212
|
connectivity_watcher_ = connectivity_watcher.get();
|
|
@@ -260,9 +259,8 @@ Duration OrcaProducer::GetMinIntervalLocked() const {
|
|
|
260
259
|
}
|
|
261
260
|
|
|
262
261
|
void OrcaProducer::MaybeStartStreamLocked() {
|
|
263
|
-
if (connected_subchannel_ == nullptr) return;
|
|
264
262
|
stream_client_ = MakeOrphanable<SubchannelStreamClient>(
|
|
265
|
-
|
|
263
|
+
subchannel_,
|
|
266
264
|
std::make_unique<OrcaStreamEventHandler>(
|
|
267
265
|
WeakRefAsSubclass<OrcaProducer>(), report_interval_),
|
|
268
266
|
GRPC_TRACE_FLAG_ENABLED(orca_client) ? "OrcaClient" : nullptr);
|
|
@@ -281,10 +279,8 @@ void OrcaProducer::NotifyWatchers(
|
|
|
281
279
|
void OrcaProducer::OnConnectivityStateChange(grpc_connectivity_state state) {
|
|
282
280
|
MutexLock lock(&mu_);
|
|
283
281
|
if (state == GRPC_CHANNEL_READY) {
|
|
284
|
-
connected_subchannel_ = subchannel_->connected_subchannel();
|
|
285
282
|
if (!watchers_.empty()) MaybeStartStreamLocked();
|
|
286
283
|
} else {
|
|
287
|
-
connected_subchannel_.reset();
|
|
288
284
|
stream_client_.reset();
|
|
289
285
|
}
|
|
290
286
|
}
|
|
@@ -80,7 +80,6 @@ class OrcaProducer final : public Subchannel::DataProducerInterface {
|
|
|
80
80
|
void NotifyWatchers(const BackendMetricData& backend_metric_data);
|
|
81
81
|
|
|
82
82
|
WeakRefCountedPtr<Subchannel> subchannel_;
|
|
83
|
-
RefCountedPtr<ConnectedSubchannel> connected_subchannel_;
|
|
84
83
|
ConnectivityWatcher* connectivity_watcher_;
|
|
85
84
|
Mutex mu_;
|
|
86
85
|
std::set<OrcaWatcher*> watchers_ ABSL_GUARDED_BY(mu_);
|
|
@@ -666,8 +666,8 @@ XdsClusterImplLb::MaybeCreateCertificateProviderLocked(
|
|
|
666
666
|
RefCountedPtr<grpc_tls_certificate_provider> root_cert_provider;
|
|
667
667
|
bool use_system_root_certs = false;
|
|
668
668
|
absl::Status status = Match(
|
|
669
|
-
cluster_resource.common_tls_context
|
|
670
|
-
.ca_certs,
|
|
669
|
+
cluster_resource.upstream_tls_context.common_tls_context
|
|
670
|
+
.certificate_validation_context.ca_certs,
|
|
671
671
|
[](const std::monostate&) {
|
|
672
672
|
// No root cert configured.
|
|
673
673
|
return absl::OkStatus();
|
|
@@ -693,11 +693,11 @@ XdsClusterImplLb::MaybeCreateCertificateProviderLocked(
|
|
|
693
693
|
if (!status.ok()) return status;
|
|
694
694
|
// Configure identity cert.
|
|
695
695
|
absl::string_view identity_provider_instance_name =
|
|
696
|
-
cluster_resource.common_tls_context
|
|
697
|
-
.instance_name;
|
|
696
|
+
cluster_resource.upstream_tls_context.common_tls_context
|
|
697
|
+
.tls_certificate_provider_instance.instance_name;
|
|
698
698
|
absl::string_view identity_cert_name =
|
|
699
|
-
cluster_resource.common_tls_context
|
|
700
|
-
.certificate_name;
|
|
699
|
+
cluster_resource.upstream_tls_context.common_tls_context
|
|
700
|
+
.tls_certificate_provider_instance.certificate_name;
|
|
701
701
|
RefCountedPtr<grpc_tls_certificate_provider> identity_cert_provider;
|
|
702
702
|
if (!identity_provider_instance_name.empty()) {
|
|
703
703
|
identity_cert_provider =
|
|
@@ -711,12 +711,15 @@ XdsClusterImplLb::MaybeCreateCertificateProviderLocked(
|
|
|
711
711
|
}
|
|
712
712
|
// Configure SAN matchers.
|
|
713
713
|
const std::vector<StringMatcher>& san_matchers =
|
|
714
|
-
cluster_resource.common_tls_context
|
|
715
|
-
.match_subject_alt_names;
|
|
714
|
+
cluster_resource.upstream_tls_context.common_tls_context
|
|
715
|
+
.certificate_validation_context.match_subject_alt_names;
|
|
716
716
|
// Create xds cert provider.
|
|
717
717
|
return MakeRefCounted<XdsCertificateProvider>(
|
|
718
718
|
std::move(root_cert_provider), root_cert_name, use_system_root_certs,
|
|
719
|
-
std::move(identity_cert_provider), identity_cert_name, san_matchers
|
|
719
|
+
std::move(identity_cert_provider), identity_cert_name, san_matchers,
|
|
720
|
+
cluster_resource.upstream_tls_context.sni,
|
|
721
|
+
cluster_resource.upstream_tls_context.auto_host_sni,
|
|
722
|
+
cluster_resource.upstream_tls_context.auto_sni_san_validation);
|
|
720
723
|
}
|
|
721
724
|
|
|
722
725
|
void XdsClusterImplLb::MaybeUpdatePickerLocked() {
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
|
|
22
22
|
#include "src/core/config/core_configuration.h"
|
|
23
23
|
#include "src/core/handshaker/endpoint_info/endpoint_info_handshaker.h"
|
|
24
|
-
#include "src/core/handshaker/http_connect/
|
|
24
|
+
#include "src/core/handshaker/http_connect/http_connect_client_handshaker.h"
|
|
25
25
|
#include "src/core/handshaker/tcp_connect/tcp_connect_handshaker.h"
|
|
26
26
|
#include "src/core/lib/surface/channel_stack_type.h"
|
|
27
27
|
#include "src/core/lib/surface/lame_client.h"
|
|
@@ -41,6 +41,7 @@ extern void BuildClientChannelConfiguration(
|
|
|
41
41
|
CoreConfiguration::Builder* builder);
|
|
42
42
|
extern void SecurityRegisterHandshakerFactories(
|
|
43
43
|
CoreConfiguration::Builder* builder);
|
|
44
|
+
extern void RegisterAuthComparators(CoreConfiguration::Builder* builder);
|
|
44
45
|
extern void RegisterClientAuthorityFilter(CoreConfiguration::Builder* builder);
|
|
45
46
|
extern void RegisterLegacyChannelIdleFilters(
|
|
46
47
|
CoreConfiguration::Builder* builder);
|
|
@@ -98,7 +99,7 @@ void BuildCoreConfiguration(CoreConfiguration::Builder* builder) {
|
|
|
98
99
|
// We want TCP connect handshaker to be registered last so that it is added
|
|
99
100
|
// to the start of the handshaker list.
|
|
100
101
|
RegisterEndpointInfoHandshaker(builder);
|
|
101
|
-
|
|
102
|
+
RegisterHttpConnectClientHandshaker(builder);
|
|
102
103
|
RegisterTCPConnectHandshaker(builder);
|
|
103
104
|
RegisterChttp2Transport(builder);
|
|
104
105
|
#ifndef GRPC_MINIMAL_LB_POLICY
|
|
@@ -191,36 +191,25 @@ class XdsResolver final : public Resolver {
|
|
|
191
191
|
struct ClusterWeightState {
|
|
192
192
|
uint32_t range_end;
|
|
193
193
|
absl::string_view cluster;
|
|
194
|
+
absl::StatusOr<RefCountedPtr<const FilterChain>> filter_chain;
|
|
195
|
+
// TODO(roth): Remove this field as part of removing the
|
|
196
|
+
// xds_channel_filter_chain_per_route experiment.
|
|
194
197
|
RefCountedPtr<ServiceConfig> method_config;
|
|
195
|
-
|
|
196
|
-
bool operator==(const ClusterWeightState& other) const {
|
|
197
|
-
return range_end == other.range_end && cluster == other.cluster &&
|
|
198
|
-
MethodConfigsEqual(method_config.get(),
|
|
199
|
-
other.method_config.get());
|
|
200
|
-
}
|
|
201
198
|
};
|
|
202
199
|
|
|
203
200
|
XdsRouteConfigResource::Route route;
|
|
201
|
+
// TODO(roth): Remove this field as part of removing the
|
|
202
|
+
// xds_channel_filter_chain_per_route experiment.
|
|
204
203
|
RefCountedPtr<ServiceConfig> method_config;
|
|
204
|
+
absl::StatusOr<RefCountedPtr<const FilterChain>> filter_chain;
|
|
205
205
|
std::vector<ClusterWeightState> weighted_cluster_state;
|
|
206
206
|
|
|
207
207
|
explicit RouteEntry(const XdsRouteConfigResource::Route& r) : route(r) {}
|
|
208
|
-
|
|
209
|
-
bool operator==(const RouteEntry& other) const {
|
|
210
|
-
return route == other.route &&
|
|
211
|
-
weighted_cluster_state == other.weighted_cluster_state &&
|
|
212
|
-
MethodConfigsEqual(method_config.get(),
|
|
213
|
-
other.method_config.get());
|
|
214
|
-
}
|
|
215
208
|
};
|
|
216
209
|
|
|
217
210
|
static absl::StatusOr<RefCountedPtr<RouteConfigData>> Create(
|
|
218
211
|
XdsResolver* resolver, const Duration& default_max_stream_duration);
|
|
219
212
|
|
|
220
|
-
bool operator==(const RouteConfigData& other) const {
|
|
221
|
-
return clusters_ == other.clusters_ && routes_ == other.routes_;
|
|
222
|
-
}
|
|
223
|
-
|
|
224
213
|
RefCountedPtr<ClusterRef> FindClusterRef(absl::string_view name) const {
|
|
225
214
|
auto it = clusters_.find(name);
|
|
226
215
|
if (it == clusters_.end()) {
|
|
@@ -232,21 +221,22 @@ class XdsResolver final : public Resolver {
|
|
|
232
221
|
RouteEntry* GetRouteForRequest(absl::string_view path,
|
|
233
222
|
grpc_metadata_batch* initial_metadata);
|
|
234
223
|
|
|
224
|
+
void BuildFilterChains(const XdsConfig& xds_config,
|
|
225
|
+
const XdsHttpFilterRegistry& http_filter_registry,
|
|
226
|
+
FilterChainBuilder& builder,
|
|
227
|
+
const Blackboard* old_blackboard,
|
|
228
|
+
Blackboard* new_blackboard);
|
|
229
|
+
|
|
235
230
|
private:
|
|
236
231
|
class RouteListIterator;
|
|
237
232
|
|
|
238
233
|
static absl::StatusOr<RefCountedPtr<ServiceConfig>> CreateMethodConfig(
|
|
239
234
|
XdsResolver* resolver, const XdsRouteConfigResource::Route& route,
|
|
235
|
+
// TODO(roth): Remove this field as part of removing the
|
|
236
|
+
// xds_channel_filter_chain_per_route experiment.
|
|
240
237
|
const XdsRouteConfigResource::Route::RouteAction::ClusterWeight*
|
|
241
238
|
cluster_weight);
|
|
242
239
|
|
|
243
|
-
static bool MethodConfigsEqual(const ServiceConfig* sc1,
|
|
244
|
-
const ServiceConfig* sc2) {
|
|
245
|
-
if (sc1 == nullptr) return sc2 == nullptr;
|
|
246
|
-
if (sc2 == nullptr) return false;
|
|
247
|
-
return sc1->json_string() == sc2->json_string();
|
|
248
|
-
}
|
|
249
|
-
|
|
250
240
|
absl::Status AddRouteEntry(XdsResolver* resolver,
|
|
251
241
|
const XdsRouteConfigResource::Route& route,
|
|
252
242
|
const Duration& default_max_stream_duration);
|
|
@@ -268,25 +258,27 @@ class XdsResolver final : public Resolver {
|
|
|
268
258
|
|
|
269
259
|
bool Equals(const ConfigSelector* other) const override {
|
|
270
260
|
const auto* other_xds = static_cast<const XdsConfigSelector*>(other);
|
|
271
|
-
//
|
|
272
|
-
|
|
273
|
-
|
|
261
|
+
// Only need to compare LDS and RDS resources, since all of our
|
|
262
|
+
// other state is derived from those.
|
|
263
|
+
return *xds_config_->listener == *other_xds->xds_config_->listener &&
|
|
264
|
+
*xds_config_->route_config ==
|
|
265
|
+
*other_xds->xds_config_->route_config;
|
|
274
266
|
}
|
|
275
267
|
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
const Blackboard* old_blackboard,
|
|
280
|
-
Blackboard* new_blackboard) override;
|
|
268
|
+
void BuildFilterChains(FilterChainBuilder& builder,
|
|
269
|
+
const Blackboard* old_blackboard,
|
|
270
|
+
Blackboard* new_blackboard) override;
|
|
281
271
|
|
|
282
|
-
|
|
283
|
-
|
|
272
|
+
absl::StatusOr<RefCountedPtr<const FilterChain>> GetCallConfig(
|
|
273
|
+
GetCallConfigArgs args) override;
|
|
284
274
|
|
|
285
275
|
private:
|
|
286
276
|
RefCountedPtr<XdsResolver> resolver_;
|
|
287
|
-
|
|
277
|
+
RefCountedPtr<const XdsConfig> xds_config_;
|
|
288
278
|
RefCountedPtr<RouteConfigData> route_config_data_;
|
|
289
|
-
|
|
279
|
+
// TODO(roth): Remove this field as part of removing the
|
|
280
|
+
// xds_channel_filter_chain_per_route experiment.
|
|
281
|
+
absl::StatusOr<RefCountedPtr<const FilterChain>> filter_chain_;
|
|
290
282
|
};
|
|
291
283
|
|
|
292
284
|
class XdsRouteStateAttributeImpl final : public XdsRouteStateAttribute {
|
|
@@ -315,7 +307,7 @@ class XdsResolver final : public Resolver {
|
|
|
315
307
|
class ClusterSelectionFilter final
|
|
316
308
|
: public ImplementChannelFilter<ClusterSelectionFilter> {
|
|
317
309
|
public:
|
|
318
|
-
const static grpc_channel_filter
|
|
310
|
+
const static grpc_channel_filter kFilterVtable;
|
|
319
311
|
|
|
320
312
|
static absl::string_view TypeName() { return "cluster_selection_filter"; }
|
|
321
313
|
|
|
@@ -439,6 +431,61 @@ XdsResolver::RouteConfigData::GetRouteForRequest(
|
|
|
439
431
|
return &routes_[*route_index];
|
|
440
432
|
}
|
|
441
433
|
|
|
434
|
+
RefCountedPtr<const FilterConfig> GetOverrideConfig(
|
|
435
|
+
const XdsHttpFilterImpl* filter_impl,
|
|
436
|
+
const XdsRouteConfigResource::TypedPerFilterConfig& typed_per_filter_config,
|
|
437
|
+
const std::string& name) {
|
|
438
|
+
auto it = typed_per_filter_config.find(name);
|
|
439
|
+
if (it == typed_per_filter_config.end()) return nullptr;
|
|
440
|
+
if (it->second.config_proto_type != filter_impl->OverrideConfigProtoName()) {
|
|
441
|
+
return nullptr;
|
|
442
|
+
}
|
|
443
|
+
return it->second.filter_config;
|
|
444
|
+
}
|
|
445
|
+
|
|
446
|
+
void XdsResolver::RouteConfigData::BuildFilterChains(
|
|
447
|
+
const XdsConfig& xds_config,
|
|
448
|
+
const XdsHttpFilterRegistry& http_filter_registry,
|
|
449
|
+
FilterChainBuilder& builder, const Blackboard* old_blackboard,
|
|
450
|
+
Blackboard* new_blackboard) {
|
|
451
|
+
const auto& hcm = std::get<XdsListenerResource::HttpConnectionManager>(
|
|
452
|
+
xds_config.listener->listener);
|
|
453
|
+
XdsRouting::PerRouteFilterChainBuilder per_route_builder(
|
|
454
|
+
hcm.http_filters, http_filter_registry, *xds_config.virtual_host, builder,
|
|
455
|
+
[](FilterChainBuilder& builder) {
|
|
456
|
+
builder.AddFilter<ClusterSelectionFilter>(nullptr);
|
|
457
|
+
},
|
|
458
|
+
old_blackboard, new_blackboard);
|
|
459
|
+
// Set the filter chain for each route.
|
|
460
|
+
for (auto& route_entry : routes_) {
|
|
461
|
+
const auto* route_action =
|
|
462
|
+
std::get_if<XdsRouteConfigResource::Route::RouteAction>(
|
|
463
|
+
&route_entry.route.action);
|
|
464
|
+
if (route_action == nullptr) continue;
|
|
465
|
+
// If the route uses WeightedClusters, construct a filter chain for
|
|
466
|
+
// each ClusterWeight entry.
|
|
467
|
+
if (const auto* weighted_clusters = std::get_if<std::vector<
|
|
468
|
+
XdsRouteConfigResource::Route::RouteAction::ClusterWeight>>(
|
|
469
|
+
&route_action->action);
|
|
470
|
+
weighted_clusters != nullptr) {
|
|
471
|
+
per_route_builder.BuildFilterChainForRouteWithWeightedClusters(
|
|
472
|
+
route_entry.route,
|
|
473
|
+
[&](size_t index,
|
|
474
|
+
absl::StatusOr<RefCountedPtr<const FilterChain>> filter_chain) {
|
|
475
|
+
GRPC_CHECK_LT(index, route_entry.weighted_cluster_state.size());
|
|
476
|
+
route_entry.weighted_cluster_state[index].filter_chain =
|
|
477
|
+
std::move(filter_chain);
|
|
478
|
+
});
|
|
479
|
+
}
|
|
480
|
+
// If the route does not use WeightedClusters, then we generate a
|
|
481
|
+
// filter chain for the route.
|
|
482
|
+
else {
|
|
483
|
+
route_entry.filter_chain =
|
|
484
|
+
per_route_builder.BuildFilterChainForRoute(route_entry.route);
|
|
485
|
+
}
|
|
486
|
+
}
|
|
487
|
+
}
|
|
488
|
+
|
|
442
489
|
absl::StatusOr<RefCountedPtr<ServiceConfig>>
|
|
443
490
|
XdsResolver::RouteConfigData::CreateMethodConfig(
|
|
444
491
|
XdsResolver* resolver, const XdsRouteConfigResource::Route& route,
|
|
@@ -491,18 +538,22 @@ XdsResolver::RouteConfigData::CreateMethodConfig(
|
|
|
491
538
|
absl::StrFormat(" \"timeout\": \"%s\"",
|
|
492
539
|
route_action.max_stream_duration->ToJsonString()));
|
|
493
540
|
}
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
541
|
+
ChannelArgs args = resolver->args_;
|
|
542
|
+
if (!IsXdsChannelFilterChainPerRouteEnabled()) {
|
|
543
|
+
// Handle xDS HTTP filters.
|
|
544
|
+
const auto& hcm = std::get<XdsListenerResource::HttpConnectionManager>(
|
|
545
|
+
resolver->current_config_->listener->listener);
|
|
546
|
+
auto result = XdsRouting::GeneratePerHTTPFilterConfigsForMethodConfig(
|
|
547
|
+
DownCast<const GrpcXdsBootstrap&>(resolver->xds_client_->bootstrap())
|
|
548
|
+
.http_filter_registry(),
|
|
549
|
+
hcm.http_filters, *resolver->current_config_->virtual_host, route,
|
|
550
|
+
cluster_weight, resolver->args_);
|
|
551
|
+
if (!result.ok()) return result.status();
|
|
552
|
+
for (const auto& [name, config] : result->per_filter_configs) {
|
|
553
|
+
fields.emplace_back(absl::StrCat(
|
|
554
|
+
" \"", name, "\": [\n", absl::StrJoin(config, ",\n"), "\n ]"));
|
|
555
|
+
}
|
|
556
|
+
args = result->args;
|
|
506
557
|
}
|
|
507
558
|
// Construct service config.
|
|
508
559
|
if (!fields.empty()) {
|
|
@@ -516,7 +567,7 @@ XdsResolver::RouteConfigData::CreateMethodConfig(
|
|
|
516
567
|
absl::StrJoin(fields, ",\n"),
|
|
517
568
|
"\n } ]\n"
|
|
518
569
|
"}");
|
|
519
|
-
return ServiceConfigImpl::Create(
|
|
570
|
+
return ServiceConfigImpl::Create(args, json.c_str());
|
|
520
571
|
}
|
|
521
572
|
return nullptr;
|
|
522
573
|
}
|
|
@@ -614,26 +665,10 @@ XdsResolver::XdsConfigSelector::XdsConfigSelector(
|
|
|
614
665
|
RefCountedPtr<XdsResolver> resolver,
|
|
615
666
|
RefCountedPtr<RouteConfigData> route_config_data)
|
|
616
667
|
: resolver_(std::move(resolver)),
|
|
617
|
-
|
|
668
|
+
xds_config_(resolver_->current_config_),
|
|
618
669
|
route_config_data_(std::move(route_config_data)) {
|
|
619
670
|
GRPC_TRACE_LOG(xds_resolver, INFO) << "[xds_resolver " << resolver_.get()
|
|
620
671
|
<< "] creating XdsConfigSelector " << this;
|
|
621
|
-
// Populate filter list.
|
|
622
|
-
const auto& http_filter_registry =
|
|
623
|
-
DownCast<const GrpcXdsBootstrap&>(resolver_->xds_client_->bootstrap())
|
|
624
|
-
.http_filter_registry();
|
|
625
|
-
const auto& hcm =
|
|
626
|
-
std::get<XdsListenerResource::HttpConnectionManager>(listener_->listener);
|
|
627
|
-
for (const auto& http_filter : hcm.http_filters) {
|
|
628
|
-
// Find filter. This is guaranteed to succeed, because it's checked
|
|
629
|
-
// at config validation time.
|
|
630
|
-
const XdsHttpFilterImpl* filter_impl =
|
|
631
|
-
http_filter_registry.GetFilterForType(
|
|
632
|
-
http_filter.config.config_proto_type_name);
|
|
633
|
-
GRPC_CHECK_NE(filter_impl, nullptr);
|
|
634
|
-
// Add filter to list.
|
|
635
|
-
filters_.push_back(filter_impl);
|
|
636
|
-
}
|
|
637
672
|
}
|
|
638
673
|
|
|
639
674
|
XdsResolver::XdsConfigSelector::~XdsConfigSelector() {
|
|
@@ -667,8 +702,8 @@ std::optional<uint64_t> HeaderHashHelper(
|
|
|
667
702
|
return XXH64(header_value->data(), header_value->size(), 0);
|
|
668
703
|
}
|
|
669
704
|
|
|
670
|
-
absl::
|
|
671
|
-
|
|
705
|
+
absl::StatusOr<RefCountedPtr<const FilterChain>>
|
|
706
|
+
XdsResolver::XdsConfigSelector::GetCallConfig(GetCallConfigArgs args) {
|
|
672
707
|
Slice* path = args.initial_metadata->get_pointer(HttpPathMetadata());
|
|
673
708
|
GRPC_CHECK_NE(path, nullptr);
|
|
674
709
|
auto* entry = route_config_data_->GetRouteForRequest(path->as_string_view(),
|
|
@@ -686,6 +721,7 @@ absl::Status XdsResolver::XdsConfigSelector::GetCallConfig(
|
|
|
686
721
|
}
|
|
687
722
|
std::string cluster_name;
|
|
688
723
|
RefCountedPtr<ServiceConfig> method_config;
|
|
724
|
+
absl::StatusOr<RefCountedPtr<const FilterChain>> filter_chain;
|
|
689
725
|
Match(
|
|
690
726
|
route_action->action,
|
|
691
727
|
// cluster name
|
|
@@ -694,6 +730,7 @@ absl::Status XdsResolver::XdsConfigSelector::GetCallConfig(
|
|
|
694
730
|
cluster_name =
|
|
695
731
|
absl::StrCat("cluster:", action_cluster_name.cluster_name);
|
|
696
732
|
method_config = entry->method_config;
|
|
733
|
+
filter_chain = entry->filter_chain;
|
|
697
734
|
},
|
|
698
735
|
// WeightedClusters
|
|
699
736
|
[&](const std::vector<
|
|
@@ -718,10 +755,11 @@ absl::Status XdsResolver::XdsConfigSelector::GetCallConfig(
|
|
|
718
755
|
}
|
|
719
756
|
}
|
|
720
757
|
if (index == 0) index = start_index;
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
method_config =
|
|
758
|
+
const auto& cluster_weight = entry->weighted_cluster_state[index];
|
|
759
|
+
GRPC_CHECK(cluster_weight.range_end > key);
|
|
760
|
+
cluster_name = absl::StrCat("cluster:", cluster_weight.cluster);
|
|
761
|
+
method_config = cluster_weight.method_config;
|
|
762
|
+
filter_chain = cluster_weight.filter_chain;
|
|
725
763
|
},
|
|
726
764
|
// ClusterSpecifierPlugin
|
|
727
765
|
[&](const XdsRouteConfigResource::Route::RouteAction::
|
|
@@ -730,7 +768,11 @@ absl::Status XdsResolver::XdsConfigSelector::GetCallConfig(
|
|
|
730
768
|
"cluster_specifier_plugin:",
|
|
731
769
|
cluster_specifier_plugin_name.cluster_specifier_plugin_name);
|
|
732
770
|
method_config = entry->method_config;
|
|
771
|
+
filter_chain = entry->filter_chain;
|
|
733
772
|
});
|
|
773
|
+
if (IsXdsChannelFilterChainPerRouteEnabled() && !filter_chain.ok()) {
|
|
774
|
+
return filter_chain.status();
|
|
775
|
+
}
|
|
734
776
|
auto cluster = route_config_data_->FindClusterRef(cluster_name);
|
|
735
777
|
GRPC_CHECK(cluster != nullptr);
|
|
736
778
|
// Generate a hash.
|
|
@@ -776,41 +818,41 @@ absl::Status XdsResolver::XdsConfigSelector::GetCallConfig(
|
|
|
776
818
|
args.service_config_call_data->SetCallAttribute(
|
|
777
819
|
args.arena->ManagedNew<XdsRouteStateAttributeImpl>(route_config_data_,
|
|
778
820
|
entry));
|
|
779
|
-
|
|
821
|
+
if (!IsXdsChannelFilterChainPerRouteEnabled()) return filter_chain_;
|
|
822
|
+
return filter_chain;
|
|
780
823
|
}
|
|
781
824
|
|
|
782
|
-
void XdsResolver::XdsConfigSelector::
|
|
783
|
-
|
|
825
|
+
void XdsResolver::XdsConfigSelector::BuildFilterChains(
|
|
826
|
+
FilterChainBuilder& builder, const Blackboard* old_blackboard,
|
|
784
827
|
Blackboard* new_blackboard) {
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
auto
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
std::get<XdsListenerResource::HttpConnectionManager>(listener_->listener);
|
|
802
|
-
GRPC_CHECK_EQ(filters_.size(), hcm.http_filters.size());
|
|
803
|
-
std::vector<const grpc_channel_filter*> filters;
|
|
804
|
-
for (size_t i = 0; i < filters_.size(); ++i) {
|
|
805
|
-
auto* filter = filters_[i];
|
|
806
|
-
if (filter->channel_filter() != nullptr) {
|
|
807
|
-
filters.push_back(filter->channel_filter());
|
|
828
|
+
if (!IsXdsChannelFilterChainPerRouteEnabled()) {
|
|
829
|
+
const auto& http_filter_registry =
|
|
830
|
+
DownCast<const GrpcXdsBootstrap&>(resolver_->xds_client_->bootstrap())
|
|
831
|
+
.http_filter_registry();
|
|
832
|
+
const auto& hcm = std::get<XdsListenerResource::HttpConnectionManager>(
|
|
833
|
+
xds_config_->listener->listener);
|
|
834
|
+
for (const auto& http_filter : hcm.http_filters) {
|
|
835
|
+
// Find filter. This is guaranteed to succeed, because it's checked
|
|
836
|
+
// at config validation time.
|
|
837
|
+
const XdsHttpFilterImpl* filter_impl =
|
|
838
|
+
http_filter_registry.GetFilterForTopLevelType(
|
|
839
|
+
http_filter.config_proto_type);
|
|
840
|
+
GRPC_CHECK_NE(filter_impl, nullptr);
|
|
841
|
+
filter_impl->AddFilter(builder, nullptr);
|
|
842
|
+
filter_impl->UpdateBlackboard(http_filter.config, old_blackboard,
|
|
843
|
+
new_blackboard);
|
|
808
844
|
}
|
|
809
|
-
|
|
810
|
-
|
|
845
|
+
builder.AddFilter<ClusterSelectionFilter>(nullptr);
|
|
846
|
+
filter_chain_ = builder.Build();
|
|
847
|
+
return;
|
|
811
848
|
}
|
|
812
|
-
|
|
813
|
-
|
|
849
|
+
// Build filter chains.
|
|
850
|
+
const auto& http_filter_registry =
|
|
851
|
+
DownCast<const GrpcXdsBootstrap&>(resolver_->xds_client_->bootstrap())
|
|
852
|
+
.http_filter_registry();
|
|
853
|
+
route_config_data_->BuildFilterChains(*xds_config_, http_filter_registry,
|
|
854
|
+
builder, old_blackboard,
|
|
855
|
+
new_blackboard);
|
|
814
856
|
}
|
|
815
857
|
|
|
816
858
|
//
|
|
@@ -858,7 +900,7 @@ XdsResolver::XdsRouteStateAttributeImpl::LockAndGetCluster(
|
|
|
858
900
|
// XdsResolver::ClusterSelectionFilter
|
|
859
901
|
//
|
|
860
902
|
|
|
861
|
-
const grpc_channel_filter XdsResolver::ClusterSelectionFilter::
|
|
903
|
+
const grpc_channel_filter XdsResolver::ClusterSelectionFilter::kFilterVtable =
|
|
862
904
|
MakePromiseBasedFilter<ClusterSelectionFilter, FilterEndpoint::kClient,
|
|
863
905
|
kFilterExaminesServerInitialMetadata>();
|
|
864
906
|
|
|
@@ -1019,20 +1061,24 @@ XdsResolver::CreateServiceConfig() {
|
|
|
1019
1061
|
" }\n"
|
|
1020
1062
|
" } }\n"
|
|
1021
1063
|
" ]"));
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1064
|
+
ChannelArgs args = args_;
|
|
1065
|
+
if (!IsXdsChannelFilterChainPerRouteEnabled()) {
|
|
1066
|
+
auto& hcm = std::get<XdsListenerResource::HttpConnectionManager>(
|
|
1067
|
+
current_config_->listener->listener);
|
|
1068
|
+
auto filter_configs =
|
|
1069
|
+
XdsRouting::GeneratePerHTTPFilterConfigsForServiceConfig(
|
|
1070
|
+
static_cast<const GrpcXdsBootstrap&>(xds_client_->bootstrap())
|
|
1071
|
+
.http_filter_registry(),
|
|
1072
|
+
hcm.http_filters, args_);
|
|
1073
|
+
if (!filter_configs.ok()) return filter_configs.status();
|
|
1074
|
+
for (const auto& [name, config] : filter_configs->per_filter_configs) {
|
|
1075
|
+
config_parts.emplace_back(absl::StrCat(
|
|
1076
|
+
" \"", name, "\": [\n", absl::StrJoin(config, ",\n"), "\n ]"));
|
|
1077
|
+
}
|
|
1078
|
+
args = filter_configs->args;
|
|
1033
1079
|
}
|
|
1034
1080
|
std::string json = absl::StrCat("{", absl::StrJoin(config_parts, ",\n"), "}");
|
|
1035
|
-
return ServiceConfigImpl::Create(
|
|
1081
|
+
return ServiceConfigImpl::Create(args, json.c_str());
|
|
1036
1082
|
}
|
|
1037
1083
|
|
|
1038
1084
|
void XdsResolver::GenerateResult() {
|
data/src/core/server/server.cc
CHANGED
|
@@ -1047,6 +1047,7 @@ class Server::TransportConnectivityWatcher
|
|
|
1047
1047
|
MutexLock lock(&server_->mu_global_);
|
|
1048
1048
|
server_->connections_.erase(transport_.get());
|
|
1049
1049
|
--server_->connections_open_;
|
|
1050
|
+
server_->stream_quota_->DecrementOpenChannels();
|
|
1050
1051
|
server_->MaybeFinishShutdown();
|
|
1051
1052
|
}
|
|
1052
1053
|
|
|
@@ -1201,7 +1202,8 @@ Server::Server(const ChannelArgs& args)
|
|
|
1201
1202
|
max_time_in_pending_queue_(Duration::Seconds(
|
|
1202
1203
|
channel_args_
|
|
1203
1204
|
.GetInt(GRPC_ARG_SERVER_MAX_UNREQUESTED_TIME_IN_SERVER_SECONDS)
|
|
1204
|
-
.value_or(30)))
|
|
1205
|
+
.value_or(30))),
|
|
1206
|
+
stream_quota_(channel_args_.GetObject<ResourceQuota>()->stream_quota()) {
|
|
1205
1207
|
SourceConstructed();
|
|
1206
1208
|
}
|
|
1207
1209
|
|
|
@@ -1340,6 +1342,7 @@ grpc_error_handle Server::SetupTransport(Transport* transport,
|
|
|
1340
1342
|
GRPC_TRACE_LOG(server_channel, INFO) << "Adding connection";
|
|
1341
1343
|
connections_.emplace(std::move(t));
|
|
1342
1344
|
++connections_open_;
|
|
1345
|
+
stream_quota_->IncrementOpenChannels();
|
|
1343
1346
|
} else {
|
|
1344
1347
|
GRPC_CHECK(transport->filter_stack_transport() != nullptr);
|
|
1345
1348
|
absl::StatusOr<RefCountedPtr<Channel>> channel = LegacyChannel::Create(
|
|
@@ -1369,9 +1372,12 @@ grpc_error_handle Server::SetupTransport(Transport* transport,
|
|
|
1369
1372
|
channelz_socket_uuid = socket_node->uuid();
|
|
1370
1373
|
socket_node->AddParent(channelz_node_.get());
|
|
1371
1374
|
}
|
|
1375
|
+
|
|
1372
1376
|
// Initialize chand.
|
|
1373
1377
|
chand->InitTransport(Ref(), std::move(*channel), cq_idx, transport,
|
|
1374
1378
|
channelz_socket_uuid);
|
|
1379
|
+
|
|
1380
|
+
stream_quota_->IncrementOpenChannels();
|
|
1375
1381
|
}
|
|
1376
1382
|
return absl::OkStatus();
|
|
1377
1383
|
}
|
|
@@ -1705,6 +1711,7 @@ class Server::ChannelData::ConnectivityWatcher
|
|
|
1705
1711
|
const absl::Status& /*status*/) override {
|
|
1706
1712
|
// Don't do anything until we are being shut down.
|
|
1707
1713
|
if (new_state != GRPC_CHANNEL_SHUTDOWN) return;
|
|
1714
|
+
chand_->server_->stream_quota_->DecrementOpenChannels();
|
|
1708
1715
|
// Shut down channel.
|
|
1709
1716
|
MutexLock lock(&chand_->server_->mu_global_);
|
|
1710
1717
|
chand_->Destroy();
|
|
@@ -1720,6 +1727,7 @@ class Server::ChannelData::ConnectivityWatcher
|
|
|
1720
1727
|
|
|
1721
1728
|
Server::ChannelData::~ChannelData() {
|
|
1722
1729
|
if (server_ != nullptr) {
|
|
1730
|
+
server_->stream_quota_->DecrementOpenChannels();
|
|
1723
1731
|
MutexLock lock(&server_->mu_global_);
|
|
1724
1732
|
if (list_position_.has_value()) {
|
|
1725
1733
|
server_->channels_.erase(*list_position_);
|
|
@@ -1743,6 +1751,7 @@ void Server::ChannelData::InitTransport(RefCountedPtr<Server> server,
|
|
|
1743
1751
|
server_->channels_.push_front(this);
|
|
1744
1752
|
list_position_ = server_->channels_.begin();
|
|
1745
1753
|
}
|
|
1754
|
+
|
|
1746
1755
|
// Start accept_stream transport op.
|
|
1747
1756
|
grpc_transport_op* op = grpc_make_transport_op(nullptr);
|
|
1748
1757
|
GRPC_CHECK(transport->filter_stack_transport() != nullptr);
|
|
@@ -1880,12 +1889,20 @@ Server::CallData::CallData(grpc_call_element* elem,
|
|
|
1880
1889
|
elem, grpc_schedule_on_exec_ctx);
|
|
1881
1890
|
GRPC_CLOSURE_INIT(&recv_trailing_metadata_ready_, RecvTrailingMetadataReady,
|
|
1882
1891
|
elem, grpc_schedule_on_exec_ctx);
|
|
1892
|
+
|
|
1893
|
+
// TODO(snohria): Add the same for Call-V3 as well.
|
|
1894
|
+
server_->stream_quota_->IncrementOutstandingRequests();
|
|
1883
1895
|
}
|
|
1884
1896
|
|
|
1885
1897
|
Server::CallData::~CallData() {
|
|
1886
1898
|
GRPC_CHECK(state_.load(std::memory_order_relaxed) != CallState::PENDING);
|
|
1887
1899
|
grpc_metadata_array_destroy(&initial_metadata_);
|
|
1888
1900
|
grpc_byte_buffer_destroy(payload_);
|
|
1901
|
+
|
|
1902
|
+
if (server_ != nullptr) {
|
|
1903
|
+
// TODO(snohria): Add the same for Call-V3 as well.
|
|
1904
|
+
server_->stream_quota_->DecrementOutstandingRequests();
|
|
1905
|
+
}
|
|
1889
1906
|
}
|
|
1890
1907
|
|
|
1891
1908
|
void Server::CallData::SetState(CallState state) {
|
data/src/core/server/server.h
CHANGED
|
@@ -1051,8 +1051,8 @@ absl::StatusOr<ChannelArgs> XdsServerConfigFetcher::ListenerWatcher::
|
|
|
1051
1051
|
// Find filter. This is guaranteed to succeed, because it's checked
|
|
1052
1052
|
// at config validation time in the XdsApi code.
|
|
1053
1053
|
const XdsHttpFilterImpl* filter_impl =
|
|
1054
|
-
http_filter_registry.
|
|
1055
|
-
http_filter.
|
|
1054
|
+
http_filter_registry.GetFilterForTopLevelType(
|
|
1055
|
+
http_filter.config_proto_type);
|
|
1056
1056
|
GRPC_CHECK_NE(filter_impl, nullptr);
|
|
1057
1057
|
// Some filters like the router filter are no-op filters and do not have
|
|
1058
1058
|
// an implementation.
|
|
@@ -1119,8 +1119,8 @@ void XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager::
|
|
|
1119
1119
|
auto& hcm = filter_chain_data.http_connection_manager;
|
|
1120
1120
|
for (const auto& http_filter : hcm.http_filters) {
|
|
1121
1121
|
const XdsHttpFilterImpl* filter_impl =
|
|
1122
|
-
http_filter_registry.
|
|
1123
|
-
http_filter.
|
|
1122
|
+
http_filter_registry.GetFilterForTopLevelType(
|
|
1123
|
+
http_filter.config_proto_type);
|
|
1124
1124
|
GRPC_CHECK_NE(filter_impl,
|
|
1125
1125
|
nullptr); // Enforced in config validation.
|
|
1126
1126
|
filter_impl->UpdateBlackboard(http_filter.config, old_blackboard,
|