grpc 1.45.0 → 1.46.2
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +36 -29
- data/include/grpc/impl/codegen/grpc_types.h +7 -13
- data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +309 -0
- data/src/core/ext/filters/channel_idle/channel_idle_filter.h +122 -0
- data/src/core/ext/filters/{client_idle → channel_idle}/idle_filter_state.cc +1 -1
- data/src/core/ext/filters/{client_idle → channel_idle}/idle_filter_state.h +3 -3
- data/src/core/ext/filters/client_channel/client_channel.cc +163 -96
- data/src/core/ext/filters/client_channel/client_channel.h +2 -0
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +124 -581
- data/src/core/ext/filters/client_channel/health/health_check_client.h +24 -160
- data/src/core/ext/filters/client_channel/http_proxy.cc +88 -110
- data/src/core/ext/filters/client_channel/http_proxy.h +17 -0
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +182 -142
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +2 -6
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +1 -10
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +87 -58
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +51 -48
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +14 -7
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +229 -284
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +92 -257
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +51 -221
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +201 -0
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +106 -0
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +102 -55
- data/src/core/ext/filters/client_channel/retry_filter.cc +18 -3
- data/src/core/ext/filters/client_channel/subchannel.cc +5 -5
- data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +544 -0
- data/src/core/ext/filters/client_channel/subchannel_stream_client.h +214 -0
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +127 -367
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +24 -1
- data/src/core/ext/filters/http/client/http_client_filter.cc +78 -458
- data/src/core/ext/filters/http/client/http_client_filter.h +21 -4
- data/src/core/ext/filters/http/client_authority_filter.cc +17 -22
- data/src/core/ext/filters/http/client_authority_filter.h +6 -5
- data/src/core/ext/filters/http/http_filters_plugin.cc +9 -6
- data/src/core/ext/filters/http/server/http_server_filter.cc +2 -116
- data/src/core/ext/filters/server_config_selector/server_config_selector.cc +2 -8
- data/src/core/ext/filters/server_config_selector/server_config_selector.h +2 -2
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +73 -201
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +2 -1
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +5 -4
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +139 -28
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +2 -0
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +2 -6
- data/src/core/ext/transport/chttp2/transport/internal.h +4 -2
- data/src/core/ext/transport/chttp2/transport/parsing.cc +8 -0
- data/src/core/ext/transport/chttp2/transport/writing.cc +24 -13
- data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.c +27 -24
- data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.h +143 -63
- data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.c +37 -35
- data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.h +177 -77
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +115 -111
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +547 -207
- data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.h +26 -13
- data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.h +23 -9
- data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.h +18 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.h +13 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.h +9 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.c +49 -46
- data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.h +217 -78
- data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.h +10 -2
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c +12 -12
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +40 -8
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +20 -2
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +55 -55
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +289 -110
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +133 -125
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +656 -267
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +24 -18
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +96 -23
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +185 -173
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +860 -309
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +10 -2
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +44 -24
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +165 -40
- data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.c +72 -63
- data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.h +433 -174
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +33 -31
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +154 -52
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +5 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +14 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +89 -89
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +460 -166
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +76 -33
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +379 -69
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +14 -6
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +5 -25
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +10 -91
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.h +26 -13
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +70 -68
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +369 -131
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +94 -65
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +447 -161
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +27 -11
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +104 -85
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +378 -113
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +3 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +6 -6
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +30 -13
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +43 -16
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +58 -24
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +14 -4
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +18 -18
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +100 -43
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +31 -30
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +171 -71
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +32 -32
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +196 -95
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +7 -2
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +53 -46
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +284 -129
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +56 -50
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +337 -146
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +13 -11
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +49 -14
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +14 -4
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.h +20 -4
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +33 -32
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +205 -86
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +34 -34
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +175 -74
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +56 -52
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +370 -146
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +27 -23
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +173 -74
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +362 -341
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +2056 -845
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +11 -11
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +49 -16
- data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.c +56 -50
- data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.h +293 -111
- data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.h +6 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.h +10 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +26 -10
- data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.h +27 -12
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.c +17 -16
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.h +83 -36
- data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.h +7 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.h +46 -17
- data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.c +9 -9
- data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.h +38 -12
- data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.h +30 -10
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +10 -6
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +15 -15
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +71 -28
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +25 -25
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +149 -65
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c +8 -7
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +30 -12
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +9 -9
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +42 -15
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +173 -144
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +898 -323
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +51 -45
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +261 -116
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +13 -13
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +70 -25
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +80 -55
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +410 -124
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +23 -9
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +44 -44
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +261 -122
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +47 -21
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +32 -32
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +175 -66
- data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.h +17 -6
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +38 -17
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h +12 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +43 -18
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +20 -9
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +24 -9
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +14 -6
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +40 -16
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +9 -9
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +70 -25
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +37 -18
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +12 -12
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +81 -30
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +16 -16
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +76 -30
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +20 -20
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +90 -30
- data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.h +28 -10
- data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.h +3 -0
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +13 -4
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +9 -9
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +18 -0
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +9 -0
- data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.h +17 -4
- data/src/core/ext/upb-generated/google/api/annotations.upb.c +3 -3
- data/src/core/ext/upb-generated/google/api/annotations.upb.h +17 -2
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +70 -66
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +410 -162
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +80 -74
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +440 -158
- data/src/core/ext/upb-generated/google/api/http.upb.c +17 -17
- data/src/core/ext/upb-generated/google/api/http.upb.h +116 -43
- data/src/core/ext/upb-generated/google/api/httpbody.upb.c +4 -4
- data/src/core/ext/upb-generated/google/api/httpbody.upb.h +19 -7
- data/src/core/ext/upb-generated/google/protobuf/any.upb.c +3 -3
- data/src/core/ext/upb-generated/google/protobuf/any.upb.h +6 -0
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +163 -162
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +1157 -435
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +3 -3
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +10 -4
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +15 -15
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +108 -40
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +3 -3
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +10 -4
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +18 -18
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +27 -0
- data/src/core/ext/upb-generated/google/rpc/status.upb.c +4 -4
- data/src/core/ext/upb-generated/google/rpc/status.upb.h +19 -7
- data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.c +15 -15
- data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.h +65 -22
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +12 -12
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +49 -12
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +69 -65
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +364 -149
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +8 -7
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +20 -4
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +4 -4
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +6 -0
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +31 -31
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +150 -58
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +11 -11
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +51 -18
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.c +175 -0
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.h +764 -0
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +22 -22
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +97 -10
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +6 -6
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +23 -2
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c +3 -3
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +10 -2
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +6 -6
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +27 -6
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +5 -5
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +20 -2
- data/src/core/ext/upb-generated/validate/validate.upb.c +261 -250
- data/src/core/ext/upb-generated/validate/validate.upb.h +1836 -663
- data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.c +22 -22
- data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.h +97 -10
- data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.c +6 -6
- data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.h +23 -2
- data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.c +3 -3
- data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.h +10 -2
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +18 -18
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +70 -10
- data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.c +5 -5
- data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.h +20 -2
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +2 -2
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +3 -0
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +8 -8
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +38 -12
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +5 -5
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +27 -10
- data/src/core/ext/upb-generated/xds/core/v3/extension.upb.c +3 -3
- data/src/core/ext/upb-generated/xds/core/v3/extension.upb.h +10 -2
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +5 -5
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +21 -8
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +10 -10
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +71 -30
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +5 -5
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +16 -2
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +12 -12
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +69 -26
- data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.c +43 -39
- data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.h +255 -103
- data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.c +4 -4
- data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.h +19 -8
- data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.c +9 -9
- data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.h +70 -25
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +3 -3
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +10 -2
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +50 -46
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +195 -185
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +16 -12
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +129 -94
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h +10 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c +18 -33
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.h +0 -5
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +163 -155
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +141 -138
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +26 -20
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +738 -730
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +271 -251
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +207 -193
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.c +99 -0
- data/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.h +75 -0
- data/src/core/ext/xds/certificate_provider_store.cc +8 -0
- data/src/core/ext/xds/certificate_provider_store.h +9 -0
- data/src/core/ext/xds/xds_api.cc +20 -0
- data/src/core/ext/xds/xds_certificate_provider.cc +2 -0
- data/src/core/ext/xds/xds_certificate_provider.h +8 -0
- data/src/core/ext/xds/xds_client.cc +83 -93
- data/src/core/ext/xds/xds_client.h +11 -4
- data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +142 -0
- data/src/core/ext/xds/xds_cluster_specifier_plugin.h +79 -0
- data/src/core/ext/xds/xds_common_types.cc +9 -9
- data/src/core/ext/xds/xds_common_types.h +3 -3
- data/src/core/ext/xds/xds_endpoint.cc +12 -5
- data/src/core/ext/xds/xds_http_fault_filter.cc +1 -1
- data/src/core/ext/xds/xds_listener.cc +1 -1
- data/src/core/ext/xds/xds_route_config.cc +162 -25
- data/src/core/ext/xds/xds_route_config.h +13 -10
- data/src/core/ext/xds/xds_server_config_fetcher.cc +17 -22
- data/src/core/lib/avl/avl.h +68 -5
- data/src/core/lib/channel/call_tracer.h +4 -1
- data/src/core/lib/channel/channel_args.cc +138 -59
- data/src/core/lib/channel/channel_args.h +210 -9
- data/src/core/lib/channel/channel_args_preconditioning.cc +3 -9
- data/src/core/lib/channel/channel_args_preconditioning.h +1 -2
- data/src/core/lib/channel/channel_stack.h +2 -5
- data/src/core/lib/channel/channel_stack_builder.cc +0 -65
- data/src/core/lib/channel/channel_stack_builder.h +27 -6
- data/src/core/lib/channel/channel_stack_builder_impl.cc +102 -0
- data/src/core/lib/channel/channel_stack_builder_impl.h +48 -0
- data/src/core/lib/channel/connected_channel.h +1 -0
- data/src/core/lib/channel/promise_based_filter.cc +495 -162
- data/src/core/lib/channel/promise_based_filter.h +55 -41
- data/src/core/lib/compression/compression_internal.cc +1 -7
- data/src/core/lib/debug/stats_data.cc +2 -6
- data/src/core/lib/debug/stats_data.h +18 -21
- data/src/core/lib/gpr/tls.h +1 -0
- data/src/core/lib/gprpp/bitset.h +12 -0
- data/src/core/lib/gprpp/cpp_impl_of.h +4 -0
- data/src/core/lib/gprpp/match.h +73 -0
- data/src/core/lib/gprpp/overload.h +59 -0
- data/src/core/lib/gprpp/ref_counted.h +2 -0
- data/src/core/lib/gprpp/single_set_ptr.h +87 -0
- data/src/core/lib/gprpp/status_helper.cc +18 -2
- data/src/core/lib/gprpp/time.cc +12 -0
- data/src/core/lib/gprpp/time.h +1 -1
- data/src/core/lib/http/format_request.cc +1 -2
- data/src/core/lib/http/httpcli_security_connector.cc +5 -5
- data/src/core/lib/http/parser.cc +80 -9
- data/src/core/lib/http/parser.h +14 -1
- data/src/core/lib/iomgr/ev_posix.cc +6 -7
- data/src/core/lib/iomgr/fork_posix.cc +1 -1
- data/src/core/lib/iomgr/port.h +0 -2
- data/src/core/lib/iomgr/tcp_client_posix.cc +2 -2
- data/src/core/lib/iomgr/tcp_posix.cc +93 -35
- data/src/core/lib/iomgr/tcp_server_posix.cc +26 -17
- data/src/core/lib/json/json_util.h +3 -3
- data/src/core/lib/promise/call_push_pull.h +144 -0
- data/src/core/lib/promise/detail/status.h +2 -1
- data/src/core/lib/promise/intra_activity_waiter.h +49 -0
- data/src/core/lib/promise/latch.h +104 -0
- data/src/core/lib/resource_quota/api.cc +5 -30
- data/src/core/lib/resource_quota/api.h +1 -1
- data/src/core/lib/resource_quota/resource_quota.h +8 -0
- data/src/core/lib/security/authorization/authorization_policy_provider.h +7 -0
- data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +9 -12
- data/src/core/lib/security/authorization/grpc_server_authz_filter.h +5 -6
- data/src/core/lib/security/context/security_context.h +8 -1
- data/src/core/lib/security/credentials/alts/alts_credentials.cc +6 -5
- data/src/core/lib/security/credentials/alts/alts_credentials.h +4 -0
- data/src/core/lib/security/credentials/call_creds_util.cc +3 -3
- data/src/core/lib/security/credentials/call_creds_util.h +2 -2
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +15 -10
- data/src/core/lib/security/credentials/composite/composite_credentials.h +9 -8
- data/src/core/lib/security/credentials/credentials.h +16 -33
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +8 -12
- data/src/core/lib/security/credentials/fake/fake_credentials.h +8 -5
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +4 -0
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +3 -3
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +5 -4
- data/src/core/lib/security/credentials/iam/iam_credentials.h +6 -2
- data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +22 -29
- data/src/core/lib/security/credentials/insecure/insecure_credentials.h +57 -0
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +7 -3
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +6 -2
- data/src/core/lib/security/credentials/local/local_credentials.cc +6 -6
- data/src/core/lib/security/credentials/local/local_credentials.h +4 -0
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +17 -9
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +14 -6
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +8 -6
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +8 -6
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +6 -4
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +8 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +49 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +8 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +42 -3
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +66 -95
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +9 -6
- data/src/core/lib/security/credentials/tls/tls_credentials.h +5 -5
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +48 -50
- data/src/core/lib/security/credentials/xds/xds_credentials.h +31 -5
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +2 -2
- data/src/core/lib/security/security_connector/security_connector.h +9 -0
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +4 -2
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +4 -2
- data/src/core/lib/security/transport/auth_filters.h +7 -7
- data/src/core/lib/security/transport/client_auth_filter.cc +28 -20
- data/src/core/lib/security/transport/secure_endpoint.cc +198 -129
- data/src/core/lib/security/transport/secure_endpoint.h +1 -1
- data/src/core/lib/security/transport/security_handshaker.cc +6 -4
- data/src/core/lib/surface/call.cc +1023 -903
- data/src/core/lib/surface/call.h +0 -14
- data/src/core/lib/surface/channel.cc +4 -3
- data/src/core/lib/surface/channel_init.cc +2 -3
- data/src/core/lib/surface/channel_init.h +2 -6
- data/src/core/lib/surface/init.cc +1 -1
- data/src/core/lib/surface/server.cc +3 -14
- data/src/core/lib/surface/server.h +1 -2
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/byte_stream.cc +2 -0
- data/src/core/lib/transport/metadata_batch.h +12 -8
- data/src/core/lib/transport/transport.h +20 -5
- data/src/core/lib/transport/transport_impl.h +4 -3
- data/src/core/plugin_registry/grpc_plugin_registry.cc +2 -4
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +2 -2
- data/src/core/tsi/ssl_transport_security.cc +75 -38
- data/src/core/tsi/ssl_transport_security.h +8 -2
- data/src/core/tsi/transport_security_interface.h +2 -0
- data/src/ruby/ext/grpc/extconf.rb +1 -1
- data/src/ruby/lib/grpc/generic/active_call.rb +7 -1
- data/src/ruby/lib/grpc/grpc.rb +1 -1
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/generate_proto_ruby.sh +1 -0
- data/src/ruby/pb/test/client.rb +769 -0
- data/src/ruby/pb/test/server.rb +252 -0
- data/src/ruby/pb/test/xds_client.rb +415 -0
- data/third_party/upb/third_party/utf8_range/utf8_range.h +1 -1
- data/third_party/upb/upb/decode.c +32 -16
- data/third_party/upb/upb/def.c +118 -55
- data/third_party/upb/upb/def.h +12 -3
- data/third_party/upb/upb/encode.c +14 -8
- data/third_party/upb/upb/json_encode.c +776 -0
- data/third_party/upb/upb/json_encode.h +62 -0
- data/third_party/upb/upb/msg.c +5 -7
- data/third_party/upb/upb/msg.h +1 -2
- data/third_party/upb/upb/msg_internal.h +49 -36
- data/third_party/upb/upb/port_def.inc +8 -0
- data/third_party/upb/upb/port_undef.inc +1 -0
- data/third_party/upb/upb/table.c +10 -6
- data/third_party/upb/upb/table_internal.h +2 -0
- data/third_party/upb/upb/upb.h +41 -11
- data/third_party/zlib/crc32.c +966 -292
- data/third_party/zlib/crc32.h +9441 -436
- data/third_party/zlib/deflate.c +78 -30
- data/third_party/zlib/deflate.h +12 -15
- data/third_party/zlib/gzguts.h +3 -2
- data/third_party/zlib/gzlib.c +5 -3
- data/third_party/zlib/gzread.c +5 -7
- data/third_party/zlib/gzwrite.c +25 -13
- data/third_party/zlib/infback.c +2 -1
- data/third_party/zlib/inffast.c +14 -14
- data/third_party/zlib/inflate.c +39 -8
- data/third_party/zlib/inflate.h +3 -2
- data/third_party/zlib/inftrees.c +3 -3
- data/third_party/zlib/trees.c +27 -48
- data/third_party/zlib/zlib.h +123 -100
- data/third_party/zlib/zutil.c +2 -2
- data/third_party/zlib/zutil.h +12 -9
- metadata +66 -45
- data/src/core/ext/filters/client_idle/client_idle_filter.cc +0 -201
- data/src/core/ext/filters/max_age/max_age_filter.cc +0 -566
- data/src/core/ext/filters/max_age/max_age_filter.h +0 -26
- data/src/core/lib/iomgr/ev_epollex_linux.cc +0 -1657
- data/src/core/lib/iomgr/ev_epollex_linux.h +0 -30
- data/src/core/lib/iomgr/is_epollexclusive_available.cc +0 -119
- data/src/core/lib/iomgr/is_epollexclusive_available.h +0 -36
- data/src/core/lib/iomgr/sys_epoll_wrapper.h +0 -30
@@ -54,6 +54,7 @@
|
|
54
54
|
#include "src/core/ext/filters/deadline/deadline_filter.h"
|
55
55
|
#include "src/core/lib/backoff/backoff.h"
|
56
56
|
#include "src/core/lib/channel/channel_args.h"
|
57
|
+
#include "src/core/lib/channel/channel_stack.h"
|
57
58
|
#include "src/core/lib/channel/connected_channel.h"
|
58
59
|
#include "src/core/lib/channel/status_util.h"
|
59
60
|
#include "src/core/lib/gpr/string.h"
|
@@ -85,8 +86,9 @@ using internal::ClientChannelGlobalParsedConfig;
|
|
85
86
|
using internal::ClientChannelMethodParsedConfig;
|
86
87
|
using internal::ClientChannelServiceConfigParser;
|
87
88
|
|
89
|
+
TraceFlag grpc_client_channel_trace(false, "client_channel");
|
88
90
|
TraceFlag grpc_client_channel_call_trace(false, "client_channel_call");
|
89
|
-
TraceFlag
|
91
|
+
TraceFlag grpc_client_channel_lb_call_trace(false, "client_channel_lb_call");
|
90
92
|
|
91
93
|
//
|
92
94
|
// ClientChannel::CallData definition
|
@@ -175,8 +177,6 @@ class ClientChannel::CallData {
|
|
175
177
|
|
176
178
|
static void RecvTrailingMetadataReadyForConfigSelectorCommitCallback(
|
177
179
|
void* arg, grpc_error_handle error);
|
178
|
-
void InjectRecvTrailingMetadataReadyForConfigSelectorCommitCallback(
|
179
|
-
grpc_transport_stream_op_batch* batch);
|
180
180
|
|
181
181
|
void CreateDynamicCall(grpc_call_element* elem);
|
182
182
|
|
@@ -354,7 +354,7 @@ class DynamicTerminationFilter::CallData {
|
|
354
354
|
args, pollent, nullptr,
|
355
355
|
service_config_call_data->call_dispatch_controller(),
|
356
356
|
/*is_transparent_retry=*/false);
|
357
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
357
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
358
358
|
gpr_log(GPR_INFO,
|
359
359
|
"chand=%p dynamic_termination_calld=%p: create lb_call=%p", chand,
|
360
360
|
client_channel, calld->lb_call_.get());
|
@@ -410,7 +410,7 @@ class ClientChannel::ResolverResultHandler : public Resolver::ResultHandler {
|
|
410
410
|
}
|
411
411
|
|
412
412
|
~ResolverResultHandler() override {
|
413
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
413
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
414
414
|
gpr_log(GPR_INFO, "chand=%p: resolver shutdown complete", chand_);
|
415
415
|
}
|
416
416
|
GRPC_CHANNEL_STACK_UNREF(chand_->owning_stack_, "ResolverResultHandler");
|
@@ -441,14 +441,13 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
|
|
441
441
|
public:
|
442
442
|
SubchannelWrapper(ClientChannel* chand, RefCountedPtr<Subchannel> subchannel,
|
443
443
|
absl::optional<std::string> health_check_service_name)
|
444
|
-
: SubchannelInterface(
|
445
|
-
|
446
|
-
|
447
|
-
: nullptr),
|
444
|
+
: SubchannelInterface(GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)
|
445
|
+
? "SubchannelWrapper"
|
446
|
+
: nullptr),
|
448
447
|
chand_(chand),
|
449
448
|
subchannel_(std::move(subchannel)),
|
450
449
|
health_check_service_name_(std::move(health_check_service_name)) {
|
451
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
450
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
452
451
|
gpr_log(GPR_INFO,
|
453
452
|
"chand=%p: creating subchannel wrapper %p for subchannel %p",
|
454
453
|
chand, this, subchannel_.get());
|
@@ -470,7 +469,7 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
|
|
470
469
|
}
|
471
470
|
|
472
471
|
~SubchannelWrapper() override {
|
473
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
472
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
474
473
|
gpr_log(GPR_INFO,
|
475
474
|
"chand=%p: destroying subchannel wrapper %p for subchannel %p",
|
476
475
|
chand_, this, subchannel_.get());
|
@@ -573,7 +572,7 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
|
|
573
572
|
}
|
574
573
|
|
575
574
|
void OnConnectivityStateChange() override {
|
576
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
575
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
577
576
|
gpr_log(GPR_INFO,
|
578
577
|
"chand=%p: connectivity change for subchannel wrapper %p "
|
579
578
|
"subchannel %p; hopping into work_serializer",
|
@@ -608,7 +607,7 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
|
|
608
607
|
private:
|
609
608
|
void ApplyUpdateInControlPlaneWorkSerializer()
|
610
609
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(*parent_->chand_->work_serializer_) {
|
611
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
610
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
612
611
|
gpr_log(GPR_INFO,
|
613
612
|
"chand=%p: processing connectivity change in work serializer "
|
614
613
|
"for subchannel wrapper %p subchannel %p "
|
@@ -625,7 +624,7 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
|
|
625
624
|
&new_keepalive_time)) {
|
626
625
|
if (new_keepalive_time > parent_->chand_->keepalive_time_) {
|
627
626
|
parent_->chand_->keepalive_time_ = new_keepalive_time;
|
628
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
627
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
629
628
|
gpr_log(GPR_INFO, "chand=%p: throttling keepalive time to %d",
|
630
629
|
parent_->chand_, parent_->chand_->keepalive_time_);
|
631
630
|
}
|
@@ -934,7 +933,7 @@ class ClientChannel::ClientChannelControlHelper
|
|
934
933
|
std::unique_ptr<LoadBalancingPolicy::SubchannelPicker> picker) override
|
935
934
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
936
935
|
if (chand_->resolver_ == nullptr) return; // Shutting down.
|
937
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
936
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
938
937
|
const char* extra = chand_->disconnect_error_ == GRPC_ERROR_NONE
|
939
938
|
? ""
|
940
939
|
: " (ignoring -- channel shutting down)";
|
@@ -952,7 +951,7 @@ class ClientChannel::ClientChannelControlHelper
|
|
952
951
|
void RequestReresolution() override
|
953
952
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
954
953
|
if (chand_->resolver_ == nullptr) return; // Shutting down.
|
955
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
954
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
956
955
|
gpr_log(GPR_INFO, "chand=%p: started name re-resolving", chand_);
|
957
956
|
}
|
958
957
|
chand_->resolver_->RequestReresolutionLocked();
|
@@ -1041,7 +1040,7 @@ ClientChannel::ClientChannel(grpc_channel_element_args* args,
|
|
1041
1040
|
work_serializer_(std::make_shared<WorkSerializer>()),
|
1042
1041
|
state_tracker_("client_channel", GRPC_CHANNEL_IDLE),
|
1043
1042
|
subchannel_pool_(GetSubchannelPool(args->channel_args)) {
|
1044
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1043
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1045
1044
|
gpr_log(GPR_INFO, "chand=%p: creating client_channel for channel stack %p",
|
1046
1045
|
this, owning_stack_);
|
1047
1046
|
}
|
@@ -1116,7 +1115,7 @@ ClientChannel::ClientChannel(grpc_channel_element_args* args,
|
|
1116
1115
|
}
|
1117
1116
|
|
1118
1117
|
ClientChannel::~ClientChannel() {
|
1119
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1118
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1120
1119
|
gpr_log(GPR_INFO, "chand=%p: destroying channel", this);
|
1121
1120
|
}
|
1122
1121
|
DestroyResolverAndLbPolicyLocked();
|
@@ -1203,7 +1202,7 @@ RefCountedPtr<LoadBalancingPolicy::Config> ChooseLbPolicy(
|
|
1203
1202
|
void ClientChannel::OnResolverResultChangedLocked(Resolver::Result result) {
|
1204
1203
|
// Handle race conditions.
|
1205
1204
|
if (resolver_ == nullptr) return;
|
1206
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1205
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1207
1206
|
gpr_log(GPR_INFO, "chand=%p: got resolver result", this);
|
1208
1207
|
}
|
1209
1208
|
// We only want to trace the address resolution in the follow cases:
|
@@ -1236,14 +1235,14 @@ void ClientChannel::OnResolverResultChangedLocked(Resolver::Result result) {
|
|
1236
1235
|
RefCountedPtr<ServiceConfig> service_config;
|
1237
1236
|
RefCountedPtr<ConfigSelector> config_selector;
|
1238
1237
|
if (!result.service_config.ok()) {
|
1239
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1238
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1240
1239
|
gpr_log(GPR_INFO, "chand=%p: resolver returned service config error: %s",
|
1241
1240
|
this, result.service_config.status().ToString().c_str());
|
1242
1241
|
}
|
1243
1242
|
// If the service config was invalid, then fallback to the
|
1244
1243
|
// previously returned service config.
|
1245
1244
|
if (saved_service_config_ != nullptr) {
|
1246
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1245
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1247
1246
|
gpr_log(GPR_INFO,
|
1248
1247
|
"chand=%p: resolver returned invalid service config. "
|
1249
1248
|
"Continuing to use previous service config.",
|
@@ -1260,7 +1259,7 @@ void ClientChannel::OnResolverResultChangedLocked(Resolver::Result result) {
|
|
1260
1259
|
}
|
1261
1260
|
} else if (*result.service_config == nullptr) {
|
1262
1261
|
// Resolver did not return any service config.
|
1263
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1262
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1264
1263
|
gpr_log(GPR_INFO,
|
1265
1264
|
"chand=%p: resolver returned no service config. Using default "
|
1266
1265
|
"service config for channel.",
|
@@ -1297,7 +1296,7 @@ void ClientChannel::OnResolverResultChangedLocked(Resolver::Result result) {
|
|
1297
1296
|
UpdateServiceConfigInControlPlaneLocked(std::move(service_config),
|
1298
1297
|
std::move(config_selector),
|
1299
1298
|
lb_policy_config->name());
|
1300
|
-
} else if (GRPC_TRACE_FLAG_ENABLED(
|
1299
|
+
} else if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1301
1300
|
gpr_log(GPR_INFO, "chand=%p: service config not changed", this);
|
1302
1301
|
}
|
1303
1302
|
// Create or update LB policy, as needed.
|
@@ -1328,7 +1327,7 @@ void ClientChannel::OnResolverResultChangedLocked(Resolver::Result result) {
|
|
1328
1327
|
|
1329
1328
|
void ClientChannel::OnResolverErrorLocked(absl::Status status) {
|
1330
1329
|
if (resolver_ == nullptr) return;
|
1331
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1330
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1332
1331
|
gpr_log(GPR_INFO, "chand=%p: resolver transient failure: %s", this,
|
1333
1332
|
status.ToString().c_str());
|
1334
1333
|
}
|
@@ -1387,7 +1386,7 @@ void ClientChannel::CreateOrUpdateLbPolicyLocked(
|
|
1387
1386
|
lb_policy_ = CreateLbPolicyLocked(*update_args.args);
|
1388
1387
|
}
|
1389
1388
|
// Update the policy.
|
1390
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1389
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1391
1390
|
gpr_log(GPR_INFO, "chand=%p: Updating child policy %p", this,
|
1392
1391
|
lb_policy_.get());
|
1393
1392
|
}
|
@@ -1404,8 +1403,8 @@ OrphanablePtr<LoadBalancingPolicy> ClientChannel::CreateLbPolicyLocked(
|
|
1404
1403
|
lb_policy_args.args = &args;
|
1405
1404
|
OrphanablePtr<LoadBalancingPolicy> lb_policy =
|
1406
1405
|
MakeOrphanable<ChildPolicyHandler>(std::move(lb_policy_args),
|
1407
|
-
&
|
1408
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1406
|
+
&grpc_client_channel_trace);
|
1407
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1409
1408
|
gpr_log(GPR_INFO, "chand=%p: created new LB policy %p", this,
|
1410
1409
|
lb_policy.get());
|
1411
1410
|
}
|
@@ -1442,7 +1441,7 @@ void ClientChannel::UpdateServiceConfigInControlPlaneLocked(
|
|
1442
1441
|
RefCountedPtr<ServiceConfig> service_config,
|
1443
1442
|
RefCountedPtr<ConfigSelector> config_selector, std::string lb_policy_name) {
|
1444
1443
|
std::string service_config_json(service_config->json_string());
|
1445
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1444
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1446
1445
|
gpr_log(GPR_INFO,
|
1447
1446
|
"chand=%p: resolver returned updated service config: \"%s\"", this,
|
1448
1447
|
service_config_json.c_str());
|
@@ -1457,7 +1456,7 @@ void ClientChannel::UpdateServiceConfigInControlPlaneLocked(
|
|
1457
1456
|
}
|
1458
1457
|
// Save config selector.
|
1459
1458
|
saved_config_selector_ = std::move(config_selector);
|
1460
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1459
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1461
1460
|
gpr_log(GPR_INFO, "chand=%p: using ConfigSelector %p", this,
|
1462
1461
|
saved_config_selector_.get());
|
1463
1462
|
}
|
@@ -1468,7 +1467,7 @@ void ClientChannel::UpdateServiceConfigInDataPlaneLocked() {
|
|
1468
1467
|
RefCountedPtr<ServiceConfig> service_config = saved_service_config_;
|
1469
1468
|
// Grab ref to config selector. Use default if resolver didn't supply one.
|
1470
1469
|
RefCountedPtr<ConfigSelector> config_selector = saved_config_selector_;
|
1471
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1470
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1472
1471
|
gpr_log(GPR_INFO, "chand=%p: switching to ConfigSelector %p", this,
|
1473
1472
|
saved_config_selector_.get());
|
1474
1473
|
}
|
@@ -1539,7 +1538,7 @@ void ClientChannel::UpdateServiceConfigInDataPlaneLocked() {
|
|
1539
1538
|
}
|
1540
1539
|
|
1541
1540
|
void ClientChannel::CreateResolverLocked() {
|
1542
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1541
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1543
1542
|
gpr_log(GPR_INFO, "chand=%p: starting name resolution", this);
|
1544
1543
|
}
|
1545
1544
|
resolver_ = CoreConfiguration::Get().resolver_registry().CreateResolver(
|
@@ -1552,20 +1551,20 @@ void ClientChannel::CreateResolverLocked() {
|
|
1552
1551
|
GRPC_CHANNEL_CONNECTING, absl::Status(), "started resolving",
|
1553
1552
|
absl::make_unique<LoadBalancingPolicy::QueuePicker>(nullptr));
|
1554
1553
|
resolver_->StartLocked();
|
1555
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1554
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1556
1555
|
gpr_log(GPR_INFO, "chand=%p: created resolver=%p", this, resolver_.get());
|
1557
1556
|
}
|
1558
1557
|
}
|
1559
1558
|
|
1560
1559
|
void ClientChannel::DestroyResolverAndLbPolicyLocked() {
|
1561
1560
|
if (resolver_ != nullptr) {
|
1562
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1561
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1563
1562
|
gpr_log(GPR_INFO, "chand=%p: shutting down resolver=%p", this,
|
1564
1563
|
resolver_.get());
|
1565
1564
|
}
|
1566
1565
|
resolver_.reset();
|
1567
1566
|
if (lb_policy_ != nullptr) {
|
1568
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1567
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1569
1568
|
gpr_log(GPR_INFO, "chand=%p: shutting down lb_policy=%p", this,
|
1570
1569
|
lb_policy_.get());
|
1571
1570
|
}
|
@@ -1733,7 +1732,7 @@ void ClientChannel::StartTransportOpLocked(grpc_transport_op* op) {
|
|
1733
1732
|
}
|
1734
1733
|
// Disconnect or enter IDLE.
|
1735
1734
|
if (op->disconnect_with_error != GRPC_ERROR_NONE) {
|
1736
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1735
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1737
1736
|
gpr_log(GPR_INFO, "chand=%p: disconnect_with_error: %s", this,
|
1738
1737
|
grpc_error_std_string(op->disconnect_with_error).c_str());
|
1739
1738
|
}
|
@@ -1911,6 +1910,11 @@ void ClientChannel::CallData::StartTransportStreamOpBatch(
|
|
1911
1910
|
GPR_TIMER_SCOPE("cc_start_transport_stream_op_batch", 0);
|
1912
1911
|
CallData* calld = static_cast<CallData*>(elem->call_data);
|
1913
1912
|
ClientChannel* chand = static_cast<ClientChannel*>(elem->channel_data);
|
1913
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace) &&
|
1914
|
+
!GRPC_TRACE_FLAG_ENABLED(grpc_trace_channel)) {
|
1915
|
+
gpr_log(GPR_INFO, "chand=%p calld=%p: batch started from above: %s", chand,
|
1916
|
+
calld, grpc_transport_stream_op_batch_string(batch).c_str());
|
1917
|
+
}
|
1914
1918
|
if (GPR_LIKELY(chand->deadline_checking_enabled_)) {
|
1915
1919
|
grpc_deadline_state_client_start_transport_stream_op_batch(elem, batch);
|
1916
1920
|
}
|
@@ -1918,8 +1922,13 @@ void ClientChannel::CallData::StartTransportStreamOpBatch(
|
|
1918
1922
|
// in case we wind up failing the call before we get down to the retry
|
1919
1923
|
// or LB call layer.
|
1920
1924
|
if (batch->recv_trailing_metadata) {
|
1921
|
-
calld->
|
1922
|
-
batch
|
1925
|
+
calld->original_recv_trailing_metadata_ready_ =
|
1926
|
+
batch->payload->recv_trailing_metadata.recv_trailing_metadata_ready;
|
1927
|
+
GRPC_CLOSURE_INIT(&calld->recv_trailing_metadata_ready_,
|
1928
|
+
RecvTrailingMetadataReadyForConfigSelectorCommitCallback,
|
1929
|
+
elem, nullptr);
|
1930
|
+
batch->payload->recv_trailing_metadata.recv_trailing_metadata_ready =
|
1931
|
+
&calld->recv_trailing_metadata_ready_;
|
1923
1932
|
}
|
1924
1933
|
// If we already have a dynamic call, pass the batch down to it.
|
1925
1934
|
// Note that once we have done so, we do not need to acquire the channel's
|
@@ -2144,7 +2153,7 @@ class ClientChannel::CallData::ResolverQueuedCallCanceller {
|
|
2144
2153
|
auto* calld = static_cast<CallData*>(self->elem_->call_data);
|
2145
2154
|
{
|
2146
2155
|
MutexLock lock(&chand->resolution_mu_);
|
2147
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
2156
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
2148
2157
|
gpr_log(GPR_INFO,
|
2149
2158
|
"chand=%p calld=%p: cancelling resolver queued pick: "
|
2150
2159
|
"error=%s self=%p calld->resolver_pick_canceller=%p",
|
@@ -2171,7 +2180,7 @@ void ClientChannel::CallData::MaybeRemoveCallFromResolverQueuedCallsLocked(
|
|
2171
2180
|
grpc_call_element* elem) {
|
2172
2181
|
if (!queued_pending_resolver_result_) return;
|
2173
2182
|
auto* chand = static_cast<ClientChannel*>(elem->channel_data);
|
2174
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
2183
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
2175
2184
|
gpr_log(GPR_INFO,
|
2176
2185
|
"chand=%p calld=%p: removing from resolver queued picks list",
|
2177
2186
|
chand, this);
|
@@ -2186,7 +2195,7 @@ void ClientChannel::CallData::MaybeAddCallToResolverQueuedCallsLocked(
|
|
2186
2195
|
grpc_call_element* elem) {
|
2187
2196
|
if (queued_pending_resolver_result_) return;
|
2188
2197
|
auto* chand = static_cast<ClientChannel*>(elem->channel_data);
|
2189
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
2198
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
2190
2199
|
gpr_log(GPR_INFO, "chand=%p calld=%p: adding to resolver queued picks list",
|
2191
2200
|
chand, this);
|
2192
2201
|
}
|
@@ -2200,7 +2209,7 @@ void ClientChannel::CallData::MaybeAddCallToResolverQueuedCallsLocked(
|
|
2200
2209
|
grpc_error_handle ClientChannel::CallData::ApplyServiceConfigToCallLocked(
|
2201
2210
|
grpc_call_element* elem, grpc_metadata_batch* initial_metadata) {
|
2202
2211
|
ClientChannel* chand = static_cast<ClientChannel*>(elem->channel_data);
|
2203
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
2212
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
2204
2213
|
gpr_log(GPR_INFO, "chand=%p calld=%p: applying service config to call",
|
2205
2214
|
chand, this);
|
2206
2215
|
}
|
@@ -2261,30 +2270,27 @@ grpc_error_handle ClientChannel::CallData::ApplyServiceConfigToCallLocked(
|
|
2261
2270
|
void ClientChannel::CallData::
|
2262
2271
|
RecvTrailingMetadataReadyForConfigSelectorCommitCallback(
|
2263
2272
|
void* arg, grpc_error_handle error) {
|
2264
|
-
auto*
|
2273
|
+
auto* elem = static_cast<grpc_call_element*>(arg);
|
2274
|
+
auto* chand = static_cast<ClientChannel*>(elem->channel_data);
|
2275
|
+
auto* calld = static_cast<CallData*>(elem->call_data);
|
2265
2276
|
auto* service_config_call_data =
|
2266
2277
|
static_cast<ClientChannelServiceConfigCallData*>(
|
2267
|
-
|
2278
|
+
calld->call_context_[GRPC_CONTEXT_SERVICE_CONFIG_CALL_DATA].value);
|
2279
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
2280
|
+
gpr_log(GPR_INFO,
|
2281
|
+
"chand=%p calld=%p: got recv_trailing_metadata_ready: error=%s "
|
2282
|
+
"service_config_call_data=%p",
|
2283
|
+
chand, calld, grpc_error_std_string(error).c_str(),
|
2284
|
+
service_config_call_data);
|
2285
|
+
}
|
2268
2286
|
if (service_config_call_data != nullptr) {
|
2269
2287
|
service_config_call_data->call_dispatch_controller()->Commit();
|
2270
2288
|
}
|
2271
2289
|
// Chain to original callback.
|
2272
|
-
Closure::Run(DEBUG_LOCATION,
|
2290
|
+
Closure::Run(DEBUG_LOCATION, calld->original_recv_trailing_metadata_ready_,
|
2273
2291
|
GRPC_ERROR_REF(error));
|
2274
2292
|
}
|
2275
2293
|
|
2276
|
-
void ClientChannel::CallData::
|
2277
|
-
InjectRecvTrailingMetadataReadyForConfigSelectorCommitCallback(
|
2278
|
-
grpc_transport_stream_op_batch* batch) {
|
2279
|
-
original_recv_trailing_metadata_ready_ =
|
2280
|
-
batch->payload->recv_trailing_metadata.recv_trailing_metadata_ready;
|
2281
|
-
GRPC_CLOSURE_INIT(&recv_trailing_metadata_ready_,
|
2282
|
-
RecvTrailingMetadataReadyForConfigSelectorCommitCallback,
|
2283
|
-
this, nullptr);
|
2284
|
-
batch->payload->recv_trailing_metadata.recv_trailing_metadata_ready =
|
2285
|
-
&recv_trailing_metadata_ready_;
|
2286
|
-
}
|
2287
|
-
|
2288
2294
|
void ClientChannel::CallData::AsyncResolutionDone(grpc_call_element* elem,
|
2289
2295
|
grpc_error_handle error) {
|
2290
2296
|
// TODO(roth): Does this callback need to hold a ref to the call stack?
|
@@ -2298,7 +2304,7 @@ void ClientChannel::CallData::ResolutionDone(void* arg,
|
|
2298
2304
|
ClientChannel* chand = static_cast<ClientChannel*>(elem->channel_data);
|
2299
2305
|
CallData* calld = static_cast<CallData*>(elem->call_data);
|
2300
2306
|
if (error != GRPC_ERROR_NONE) {
|
2301
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
2307
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
2302
2308
|
gpr_log(GPR_INFO,
|
2303
2309
|
"chand=%p calld=%p: error applying config to call: error=%s",
|
2304
2310
|
chand, calld, grpc_error_std_string(error).c_str());
|
@@ -2330,6 +2336,9 @@ bool ClientChannel::CallData::CheckResolutionLocked(grpc_call_element* elem,
|
|
2330
2336
|
ClientChannel* chand = static_cast<ClientChannel*>(elem->channel_data);
|
2331
2337
|
// If we're still in IDLE, we need to start resolving.
|
2332
2338
|
if (GPR_UNLIKELY(chand->CheckConnectivityState(false) == GRPC_CHANNEL_IDLE)) {
|
2339
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
2340
|
+
gpr_log(GPR_INFO, "chand=%p calld=%p: triggering exit idle", chand, this);
|
2341
|
+
}
|
2333
2342
|
// Bounce into the control plane work serializer to start resolving,
|
2334
2343
|
// in case we are still in IDLE state. Since we are holding on to the
|
2335
2344
|
// resolution mutex here, we offload it on the ExecCtx so that we don't
|
@@ -2367,6 +2376,10 @@ bool ClientChannel::CallData::CheckResolutionLocked(grpc_call_element* elem,
|
|
2367
2376
|
absl::Status resolver_error = chand->resolver_transient_failure_error_;
|
2368
2377
|
if (!resolver_error.ok() && (send_initial_metadata_flags &
|
2369
2378
|
GRPC_INITIAL_METADATA_WAIT_FOR_READY) == 0) {
|
2379
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
2380
|
+
gpr_log(GPR_INFO, "chand=%p calld=%p: resolution failed, failing call",
|
2381
|
+
chand, this);
|
2382
|
+
}
|
2370
2383
|
MaybeRemoveCallFromResolverQueuedCallsLocked(elem);
|
2371
2384
|
*error = absl_status_to_grpc_error(resolver_error);
|
2372
2385
|
return true;
|
@@ -2374,6 +2387,10 @@ bool ClientChannel::CallData::CheckResolutionLocked(grpc_call_element* elem,
|
|
2374
2387
|
// Either the resolver has not yet returned a result, or it has
|
2375
2388
|
// returned transient failure but the call is wait_for_ready. In
|
2376
2389
|
// either case, queue the call.
|
2390
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
2391
|
+
gpr_log(GPR_INFO, "chand=%p calld=%p: queuing to wait for resolution",
|
2392
|
+
chand, this);
|
2393
|
+
}
|
2377
2394
|
MaybeAddCallToResolverQueuedCallsLocked(elem);
|
2378
2395
|
return false;
|
2379
2396
|
}
|
@@ -2398,7 +2415,7 @@ void ClientChannel::CallData::CreateDynamicCall(grpc_call_element* elem) {
|
|
2398
2415
|
call_combiner_};
|
2399
2416
|
grpc_error_handle error = GRPC_ERROR_NONE;
|
2400
2417
|
DynamicFilters* channel_stack = args.channel_stack.get();
|
2401
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
2418
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
2402
2419
|
gpr_log(
|
2403
2420
|
GPR_INFO,
|
2404
2421
|
"chand=%p calld=%p: creating dynamic call stack on channel_stack=%p",
|
@@ -2406,7 +2423,7 @@ void ClientChannel::CallData::CreateDynamicCall(grpc_call_element* elem) {
|
|
2406
2423
|
}
|
2407
2424
|
dynamic_call_ = channel_stack->CreateCall(std::move(args), &error);
|
2408
2425
|
if (error != GRPC_ERROR_NONE) {
|
2409
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
2426
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
2410
2427
|
gpr_log(GPR_INFO,
|
2411
2428
|
"chand=%p calld=%p: failed to create dynamic call: error=%s",
|
2412
2429
|
chand, this, grpc_error_std_string(error).c_str());
|
@@ -2427,6 +2444,7 @@ class ClientChannel::LoadBalancedCall::Metadata
|
|
2427
2444
|
explicit Metadata(grpc_metadata_batch* batch) : batch_(batch) {}
|
2428
2445
|
|
2429
2446
|
void Add(absl::string_view key, absl::string_view value) override {
|
2447
|
+
if (batch_ == nullptr) return;
|
2430
2448
|
// Gross, egregious hack to support legacy grpclb behavior.
|
2431
2449
|
// TODO(ctiller): Use a promise context for this once that plumbing is done.
|
2432
2450
|
if (key == GrpcLbClientStatsMetadata::key()) {
|
@@ -2447,6 +2465,7 @@ class ClientChannel::LoadBalancedCall::Metadata
|
|
2447
2465
|
|
2448
2466
|
std::vector<std::pair<std::string, std::string>> TestOnlyCopyToVector()
|
2449
2467
|
override {
|
2468
|
+
if (batch_ == nullptr) return {};
|
2450
2469
|
Encoder encoder;
|
2451
2470
|
batch_->Encode(&encoder);
|
2452
2471
|
return encoder.Take();
|
@@ -2454,6 +2473,7 @@ class ClientChannel::LoadBalancedCall::Metadata
|
|
2454
2473
|
|
2455
2474
|
absl::optional<absl::string_view> Lookup(absl::string_view key,
|
2456
2475
|
std::string* buffer) const override {
|
2476
|
+
if (batch_ == nullptr) return absl::nullopt;
|
2457
2477
|
return batch_->GetStringValue(key, buffer);
|
2458
2478
|
}
|
2459
2479
|
|
@@ -2524,7 +2544,8 @@ class ClientChannel::LoadBalancedCall::BackendMetricAccessor
|
|
2524
2544
|
: lb_call_(lb_call) {}
|
2525
2545
|
|
2526
2546
|
const BackendMetricData* GetBackendMetricData() override {
|
2527
|
-
if (lb_call_->backend_metric_data_ == nullptr
|
2547
|
+
if (lb_call_->backend_metric_data_ == nullptr &&
|
2548
|
+
lb_call_->recv_trailing_metadata_ != nullptr) {
|
2528
2549
|
if (const auto* md = lb_call_->recv_trailing_metadata_->get_pointer(
|
2529
2550
|
XEndpointLoadMetricsBinMetadata())) {
|
2530
2551
|
lb_call_->backend_metric_data_ =
|
@@ -2560,7 +2581,7 @@ ClientChannel::LoadBalancedCall::LoadBalancedCall(
|
|
2560
2581
|
ConfigSelector::CallDispatchController* call_dispatch_controller,
|
2561
2582
|
bool is_transparent_retry)
|
2562
2583
|
: InternallyRefCounted(
|
2563
|
-
GRPC_TRACE_FLAG_ENABLED(
|
2584
|
+
GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)
|
2564
2585
|
? "LoadBalancedCall"
|
2565
2586
|
: nullptr),
|
2566
2587
|
chand_(chand),
|
@@ -2574,7 +2595,11 @@ ClientChannel::LoadBalancedCall::LoadBalancedCall(
|
|
2574
2595
|
on_call_destruction_complete_(on_call_destruction_complete),
|
2575
2596
|
call_dispatch_controller_(call_dispatch_controller),
|
2576
2597
|
call_attempt_tracer_(
|
2577
|
-
GetCallAttemptTracer(args.context, is_transparent_retry)) {
|
2598
|
+
GetCallAttemptTracer(args.context, is_transparent_retry)) {
|
2599
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2600
|
+
gpr_log(GPR_INFO, "chand=%p lb_call=%p: created", chand_, this);
|
2601
|
+
}
|
2602
|
+
}
|
2578
2603
|
|
2579
2604
|
ClientChannel::LoadBalancedCall::~LoadBalancedCall() {
|
2580
2605
|
GRPC_ERROR_UNREF(cancel_error_);
|
@@ -2594,6 +2619,12 @@ ClientChannel::LoadBalancedCall::~LoadBalancedCall() {
|
|
2594
2619
|
}
|
2595
2620
|
|
2596
2621
|
void ClientChannel::LoadBalancedCall::Orphan() {
|
2622
|
+
// If the recv_trailing_metadata op was never started, then notify
|
2623
|
+
// about call completion here, as best we can. We assume status
|
2624
|
+
// CANCELLED in this case.
|
2625
|
+
if (recv_trailing_metadata_ == nullptr) {
|
2626
|
+
RecordCallCompletion(absl::CancelledError("call cancelled"));
|
2627
|
+
}
|
2597
2628
|
// Compute latency and report it to the tracer.
|
2598
2629
|
if (call_attempt_tracer_ != nullptr) {
|
2599
2630
|
gpr_timespec latency =
|
@@ -2620,7 +2651,7 @@ size_t ClientChannel::LoadBalancedCall::GetBatchIndex(
|
|
2620
2651
|
void ClientChannel::LoadBalancedCall::PendingBatchesAdd(
|
2621
2652
|
grpc_transport_stream_op_batch* batch) {
|
2622
2653
|
const size_t idx = GetBatchIndex(batch);
|
2623
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
2654
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2624
2655
|
gpr_log(GPR_INFO,
|
2625
2656
|
"chand=%p lb_call=%p: adding pending batch at index %" PRIuPTR,
|
2626
2657
|
chand_, this, idx);
|
@@ -2647,7 +2678,7 @@ void ClientChannel::LoadBalancedCall::PendingBatchesFail(
|
|
2647
2678
|
GPR_ASSERT(error != GRPC_ERROR_NONE);
|
2648
2679
|
GRPC_ERROR_UNREF(failure_error_);
|
2649
2680
|
failure_error_ = error;
|
2650
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
2681
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2651
2682
|
size_t num_batches = 0;
|
2652
2683
|
for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
|
2653
2684
|
if (pending_batches_[i] != nullptr) ++num_batches;
|
@@ -2689,7 +2720,7 @@ void ClientChannel::LoadBalancedCall::ResumePendingBatchInCallCombiner(
|
|
2689
2720
|
|
2690
2721
|
// This is called via the call combiner, so access to calld is synchronized.
|
2691
2722
|
void ClientChannel::LoadBalancedCall::PendingBatchesResume() {
|
2692
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
2723
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2693
2724
|
size_t num_batches = 0;
|
2694
2725
|
for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
|
2695
2726
|
if (pending_batches_[i] != nullptr) ++num_batches;
|
@@ -2718,6 +2749,14 @@ void ClientChannel::LoadBalancedCall::PendingBatchesResume() {
|
|
2718
2749
|
|
2719
2750
|
void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
|
2720
2751
|
grpc_transport_stream_op_batch* batch) {
|
2752
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace) ||
|
2753
|
+
GRPC_TRACE_FLAG_ENABLED(grpc_trace_channel)) {
|
2754
|
+
gpr_log(GPR_INFO,
|
2755
|
+
"chand=%p lb_call=%p: batch started from above: %s, "
|
2756
|
+
"call_attempt_tracer_=%p",
|
2757
|
+
chand_, this, grpc_transport_stream_op_batch_string(batch).c_str(),
|
2758
|
+
call_attempt_tracer_);
|
2759
|
+
}
|
2721
2760
|
// Handle call tracing.
|
2722
2761
|
if (call_attempt_tracer_ != nullptr) {
|
2723
2762
|
// Record send ops in tracer.
|
@@ -2781,7 +2820,7 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
|
|
2781
2820
|
// the channel's data plane mutex, which is more efficient (especially for
|
2782
2821
|
// streaming calls).
|
2783
2822
|
if (subchannel_call_ != nullptr) {
|
2784
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
2823
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2785
2824
|
gpr_log(GPR_INFO,
|
2786
2825
|
"chand=%p lb_call=%p: starting batch on subchannel_call=%p",
|
2787
2826
|
chand_, this, subchannel_call_.get());
|
@@ -2793,7 +2832,7 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
|
|
2793
2832
|
//
|
2794
2833
|
// If we've previously been cancelled, immediately fail any new batches.
|
2795
2834
|
if (GPR_UNLIKELY(cancel_error_ != GRPC_ERROR_NONE)) {
|
2796
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
2835
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2797
2836
|
gpr_log(GPR_INFO, "chand=%p lb_call=%p: failing batch with error: %s",
|
2798
2837
|
chand_, this, grpc_error_std_string(cancel_error_).c_str());
|
2799
2838
|
}
|
@@ -2811,7 +2850,7 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
|
|
2811
2850
|
// error to the caller when the first batch does get passed down.
|
2812
2851
|
GRPC_ERROR_UNREF(cancel_error_);
|
2813
2852
|
cancel_error_ = GRPC_ERROR_REF(batch->payload->cancel_stream.cancel_error);
|
2814
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
2853
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2815
2854
|
gpr_log(GPR_INFO, "chand=%p lb_call=%p: recording cancel_error=%s",
|
2816
2855
|
chand_, this, grpc_error_std_string(cancel_error_).c_str());
|
2817
2856
|
}
|
@@ -2827,7 +2866,7 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
|
|
2827
2866
|
// For batches containing a send_initial_metadata op, acquire the
|
2828
2867
|
// channel's data plane mutex to pick a subchannel.
|
2829
2868
|
if (GPR_LIKELY(batch->send_initial_metadata)) {
|
2830
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
2869
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2831
2870
|
gpr_log(GPR_INFO,
|
2832
2871
|
"chand=%p lb_call=%p: grabbing data plane mutex to perform pick",
|
2833
2872
|
chand_, this);
|
@@ -2835,7 +2874,7 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
|
|
2835
2874
|
PickSubchannel(this, GRPC_ERROR_NONE);
|
2836
2875
|
} else {
|
2837
2876
|
// For all other batches, release the call combiner.
|
2838
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
2877
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2839
2878
|
gpr_log(GPR_INFO,
|
2840
2879
|
"chand=%p lb_call=%p: saved batch, yielding call combiner",
|
2841
2880
|
chand_, this);
|
@@ -2848,6 +2887,12 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
|
|
2848
2887
|
void ClientChannel::LoadBalancedCall::SendInitialMetadataOnComplete(
|
2849
2888
|
void* arg, grpc_error_handle error) {
|
2850
2889
|
auto* self = static_cast<LoadBalancedCall*>(arg);
|
2890
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2891
|
+
gpr_log(GPR_INFO,
|
2892
|
+
"chand=%p lb_call=%p: got on_complete for send_initial_metadata: "
|
2893
|
+
"error=%s",
|
2894
|
+
self->chand_, self, grpc_error_std_string(error).c_str());
|
2895
|
+
}
|
2851
2896
|
self->call_attempt_tracer_->RecordOnDoneSendInitialMetadata(
|
2852
2897
|
self->peer_string_);
|
2853
2898
|
Closure::Run(DEBUG_LOCATION,
|
@@ -2858,6 +2903,11 @@ void ClientChannel::LoadBalancedCall::SendInitialMetadataOnComplete(
|
|
2858
2903
|
void ClientChannel::LoadBalancedCall::RecvInitialMetadataReady(
|
2859
2904
|
void* arg, grpc_error_handle error) {
|
2860
2905
|
auto* self = static_cast<LoadBalancedCall*>(arg);
|
2906
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2907
|
+
gpr_log(GPR_INFO,
|
2908
|
+
"chand=%p lb_call=%p: got recv_initial_metadata_ready: error=%s",
|
2909
|
+
self->chand_, self, grpc_error_std_string(error).c_str());
|
2910
|
+
}
|
2861
2911
|
if (error == GRPC_ERROR_NONE) {
|
2862
2912
|
// recv_initial_metadata_flags is not populated for clients
|
2863
2913
|
self->call_attempt_tracer_->RecordReceivedInitialMetadata(
|
@@ -2870,6 +2920,10 @@ void ClientChannel::LoadBalancedCall::RecvInitialMetadataReady(
|
|
2870
2920
|
void ClientChannel::LoadBalancedCall::RecvMessageReady(
|
2871
2921
|
void* arg, grpc_error_handle error) {
|
2872
2922
|
auto* self = static_cast<LoadBalancedCall*>(arg);
|
2923
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2924
|
+
gpr_log(GPR_INFO, "chand=%p lb_call=%p: got recv_message_ready: error=%s",
|
2925
|
+
self->chand_, self, grpc_error_std_string(error).c_str());
|
2926
|
+
}
|
2873
2927
|
if (*self->recv_message_ != nullptr) {
|
2874
2928
|
self->call_attempt_tracer_->RecordReceivedMessage(**self->recv_message_);
|
2875
2929
|
}
|
@@ -2880,6 +2934,15 @@ void ClientChannel::LoadBalancedCall::RecvMessageReady(
|
|
2880
2934
|
void ClientChannel::LoadBalancedCall::RecvTrailingMetadataReady(
|
2881
2935
|
void* arg, grpc_error_handle error) {
|
2882
2936
|
auto* self = static_cast<LoadBalancedCall*>(arg);
|
2937
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2938
|
+
gpr_log(GPR_INFO,
|
2939
|
+
"chand=%p lb_call=%p: got recv_trailing_metadata_ready: error=%s "
|
2940
|
+
"call_attempt_tracer_=%p lb_subchannel_call_tracker_=%p "
|
2941
|
+
"failure_error_=%s",
|
2942
|
+
self->chand_, self, grpc_error_std_string(error).c_str(),
|
2943
|
+
self->call_attempt_tracer_, self->lb_subchannel_call_tracker_.get(),
|
2944
|
+
grpc_error_std_string(self->failure_error_).c_str());
|
2945
|
+
}
|
2883
2946
|
// Check if we have a tracer or an LB callback to invoke.
|
2884
2947
|
if (self->call_attempt_tracer_ != nullptr ||
|
2885
2948
|
self->lb_subchannel_call_tracker_ != nullptr) {
|
@@ -2905,22 +2968,7 @@ void ClientChannel::LoadBalancedCall::RecvTrailingMetadataReady(
|
|
2905
2968
|
status = absl::Status(static_cast<absl::StatusCode>(code), message);
|
2906
2969
|
}
|
2907
2970
|
}
|
2908
|
-
|
2909
|
-
if (self->call_attempt_tracer_ != nullptr) {
|
2910
|
-
self->call_attempt_tracer_->RecordReceivedTrailingMetadata(
|
2911
|
-
status, self->recv_trailing_metadata_,
|
2912
|
-
*self->transport_stream_stats_);
|
2913
|
-
}
|
2914
|
-
// If the LB policy requested a callback for trailing metadata, invoke
|
2915
|
-
// the callback.
|
2916
|
-
if (self->lb_subchannel_call_tracker_ != nullptr) {
|
2917
|
-
Metadata trailing_metadata(self->recv_trailing_metadata_);
|
2918
|
-
BackendMetricAccessor backend_metric_accessor(self);
|
2919
|
-
LoadBalancingPolicy::SubchannelCallTrackerInterface::FinishArgs args = {
|
2920
|
-
status, &trailing_metadata, &backend_metric_accessor};
|
2921
|
-
self->lb_subchannel_call_tracker_->Finish(args);
|
2922
|
-
self->lb_subchannel_call_tracker_.reset();
|
2923
|
-
}
|
2971
|
+
self->RecordCallCompletion(status);
|
2924
2972
|
}
|
2925
2973
|
// Chain to original callback.
|
2926
2974
|
if (self->failure_error_ != GRPC_ERROR_NONE) {
|
@@ -2933,6 +2981,25 @@ void ClientChannel::LoadBalancedCall::RecvTrailingMetadataReady(
|
|
2933
2981
|
error);
|
2934
2982
|
}
|
2935
2983
|
|
2984
|
+
void ClientChannel::LoadBalancedCall::RecordCallCompletion(
|
2985
|
+
absl::Status status) {
|
2986
|
+
// If we have a tracer, notify it.
|
2987
|
+
if (call_attempt_tracer_ != nullptr) {
|
2988
|
+
call_attempt_tracer_->RecordReceivedTrailingMetadata(
|
2989
|
+
status, recv_trailing_metadata_, transport_stream_stats_);
|
2990
|
+
}
|
2991
|
+
// If the LB policy requested a callback for trailing metadata, invoke
|
2992
|
+
// the callback.
|
2993
|
+
if (lb_subchannel_call_tracker_ != nullptr) {
|
2994
|
+
Metadata trailing_metadata(recv_trailing_metadata_);
|
2995
|
+
BackendMetricAccessor backend_metric_accessor(this);
|
2996
|
+
LoadBalancingPolicy::SubchannelCallTrackerInterface::FinishArgs args = {
|
2997
|
+
status, &trailing_metadata, &backend_metric_accessor};
|
2998
|
+
lb_subchannel_call_tracker_->Finish(args);
|
2999
|
+
lb_subchannel_call_tracker_.reset();
|
3000
|
+
}
|
3001
|
+
}
|
3002
|
+
|
2936
3003
|
void ClientChannel::LoadBalancedCall::CreateSubchannelCall() {
|
2937
3004
|
SubchannelCall::Args call_args = {
|
2938
3005
|
std::move(connected_subchannel_), pollent_, path_.Ref(), /*start_time=*/0,
|
@@ -2942,7 +3009,7 @@ void ClientChannel::LoadBalancedCall::CreateSubchannelCall() {
|
|
2942
3009
|
call_context_, call_combiner_};
|
2943
3010
|
grpc_error_handle error = GRPC_ERROR_NONE;
|
2944
3011
|
subchannel_call_ = SubchannelCall::Create(std::move(call_args), &error);
|
2945
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
3012
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2946
3013
|
gpr_log(GPR_INFO,
|
2947
3014
|
"chand=%p lb_call=%p: create subchannel_call=%p: error=%s", chand_,
|
2948
3015
|
this, subchannel_call_.get(), grpc_error_std_string(error).c_str());
|
@@ -2981,7 +3048,7 @@ class ClientChannel::LoadBalancedCall::LbQueuedCallCanceller {
|
|
2981
3048
|
auto* chand = lb_call->chand_;
|
2982
3049
|
{
|
2983
3050
|
MutexLock lock(&chand->data_plane_mu_);
|
2984
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
3051
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2985
3052
|
gpr_log(GPR_INFO,
|
2986
3053
|
"chand=%p lb_call=%p: cancelling queued pick: "
|
2987
3054
|
"error=%s self=%p calld->pick_canceller=%p",
|
@@ -3007,7 +3074,7 @@ class ClientChannel::LoadBalancedCall::LbQueuedCallCanceller {
|
|
3007
3074
|
|
3008
3075
|
void ClientChannel::LoadBalancedCall::MaybeRemoveCallFromLbQueuedCallsLocked() {
|
3009
3076
|
if (!queued_pending_lb_pick_) return;
|
3010
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
3077
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
3011
3078
|
gpr_log(GPR_INFO, "chand=%p lb_call=%p: removing from queued picks list",
|
3012
3079
|
chand_, this);
|
3013
3080
|
}
|
@@ -3019,7 +3086,7 @@ void ClientChannel::LoadBalancedCall::MaybeRemoveCallFromLbQueuedCallsLocked() {
|
|
3019
3086
|
|
3020
3087
|
void ClientChannel::LoadBalancedCall::MaybeAddCallToLbQueuedCallsLocked() {
|
3021
3088
|
if (queued_pending_lb_pick_) return;
|
3022
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
3089
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
3023
3090
|
gpr_log(GPR_INFO, "chand=%p lb_call=%p: adding to queued picks list",
|
3024
3091
|
chand_, this);
|
3025
3092
|
}
|
@@ -3040,7 +3107,7 @@ void ClientChannel::LoadBalancedCall::PickDone(void* arg,
|
|
3040
3107
|
grpc_error_handle error) {
|
3041
3108
|
auto* self = static_cast<LoadBalancedCall*>(arg);
|
3042
3109
|
if (error != GRPC_ERROR_NONE) {
|
3043
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
3110
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
3044
3111
|
gpr_log(GPR_INFO,
|
3045
3112
|
"chand=%p lb_call=%p: failed to pick subchannel: error=%s",
|
3046
3113
|
self->chand_, self, grpc_error_std_string(error).c_str());
|
@@ -3090,7 +3157,7 @@ bool ClientChannel::LoadBalancedCall::PickSubchannelLocked(
|
|
3090
3157
|
// CompletePick
|
3091
3158
|
[this](LoadBalancingPolicy::PickResult::Complete* complete_pick)
|
3092
3159
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::data_plane_mu_) {
|
3093
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
3160
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
3094
3161
|
gpr_log(GPR_INFO,
|
3095
3162
|
"chand=%p lb_call=%p: LB pick succeeded: subchannel=%p",
|
3096
3163
|
chand_, this, complete_pick->subchannel.get());
|
@@ -3106,7 +3173,7 @@ bool ClientChannel::LoadBalancedCall::PickSubchannelLocked(
|
|
3106
3173
|
// yet seen that change and given us a new picker), then just
|
3107
3174
|
// queue the pick. We'll try again as soon as we get a new picker.
|
3108
3175
|
if (connected_subchannel_ == nullptr) {
|
3109
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
3176
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
3110
3177
|
gpr_log(GPR_INFO,
|
3111
3178
|
"chand=%p lb_call=%p: subchannel returned by LB picker "
|
3112
3179
|
"has no connected subchannel; queueing pick",
|
@@ -3126,7 +3193,7 @@ bool ClientChannel::LoadBalancedCall::PickSubchannelLocked(
|
|
3126
3193
|
// QueuePick
|
3127
3194
|
[this](LoadBalancingPolicy::PickResult::Queue* /*queue_pick*/)
|
3128
3195
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::data_plane_mu_) {
|
3129
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
3196
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
3130
3197
|
gpr_log(GPR_INFO, "chand=%p lb_call=%p: LB pick queued", chand_,
|
3131
3198
|
this);
|
3132
3199
|
}
|
@@ -3137,7 +3204,7 @@ bool ClientChannel::LoadBalancedCall::PickSubchannelLocked(
|
|
3137
3204
|
[this, send_initial_metadata_flags,
|
3138
3205
|
&error](LoadBalancingPolicy::PickResult::Fail* fail_pick)
|
3139
3206
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::data_plane_mu_) {
|
3140
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
3207
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
3141
3208
|
gpr_log(GPR_INFO, "chand=%p lb_call=%p: LB pick failed: %s",
|
3142
3209
|
chand_, this, fail_pick->status.ToString().c_str());
|
3143
3210
|
}
|
@@ -3161,7 +3228,7 @@ bool ClientChannel::LoadBalancedCall::PickSubchannelLocked(
|
|
3161
3228
|
// DropPick
|
3162
3229
|
[this, &error](LoadBalancingPolicy::PickResult::Drop* drop_pick)
|
3163
3230
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::data_plane_mu_) {
|
3164
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
3231
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
3165
3232
|
gpr_log(GPR_INFO, "chand=%p lb_call=%p: LB pick dropped: %s",
|
3166
3233
|
chand_, this, drop_pick->status.ToString().c_str());
|
3167
3234
|
}
|