grpc 1.40.0 → 1.46.3
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 +462 -267
- data/etc/roots.pem +335 -326
- data/include/grpc/byte_buffer.h +1 -1
- data/include/grpc/byte_buffer_reader.h +1 -1
- data/include/grpc/event_engine/endpoint_config.h +6 -11
- data/include/grpc/event_engine/event_engine.h +164 -95
- data/include/grpc/event_engine/internal/memory_allocator_impl.h +68 -0
- data/include/grpc/event_engine/memory_allocator.h +226 -0
- data/include/grpc/event_engine/memory_request.h +57 -0
- data/include/grpc/event_engine/port.h +1 -3
- data/include/grpc/fork.h +1 -1
- data/include/grpc/grpc.h +54 -18
- data/include/grpc/grpc_posix.h +22 -18
- data/include/grpc/grpc_security.h +328 -193
- data/include/grpc/grpc_security_constants.h +2 -14
- data/include/grpc/impl/codegen/atm.h +5 -3
- data/include/grpc/impl/codegen/atm_gcc_atomic.h +2 -0
- data/include/grpc/impl/codegen/atm_gcc_sync.h +2 -0
- data/include/grpc/impl/codegen/atm_windows.h +2 -0
- data/include/grpc/impl/codegen/byte_buffer.h +2 -0
- data/include/grpc/impl/codegen/byte_buffer_reader.h +2 -0
- data/include/grpc/impl/codegen/compression_types.h +2 -2
- data/include/grpc/impl/codegen/connectivity_state.h +2 -0
- data/include/grpc/impl/codegen/fork.h +2 -0
- data/include/grpc/impl/codegen/gpr_slice.h +2 -0
- data/include/grpc/impl/codegen/gpr_types.h +2 -0
- data/include/grpc/impl/codegen/grpc_types.h +28 -26
- data/include/grpc/impl/codegen/log.h +2 -0
- data/include/grpc/impl/codegen/port_platform.h +37 -22
- data/include/grpc/impl/codegen/propagation_bits.h +2 -0
- data/include/grpc/impl/codegen/slice.h +6 -1
- data/include/grpc/impl/codegen/status.h +2 -0
- data/include/grpc/impl/codegen/sync.h +8 -5
- data/include/grpc/impl/codegen/sync_abseil.h +2 -0
- data/include/grpc/impl/codegen/sync_custom.h +2 -0
- data/include/grpc/impl/codegen/sync_generic.h +3 -0
- data/include/grpc/impl/codegen/sync_posix.h +4 -2
- data/include/grpc/impl/codegen/sync_windows.h +2 -0
- data/include/grpc/slice.h +1 -12
- data/include/grpc/status.h +1 -1
- data/include/grpc/support/atm.h +1 -1
- data/include/grpc/support/atm_gcc_atomic.h +1 -1
- data/include/grpc/support/atm_gcc_sync.h +1 -1
- data/include/grpc/support/atm_windows.h +1 -1
- data/include/grpc/support/log.h +1 -1
- data/include/grpc/support/port_platform.h +1 -1
- data/include/grpc/support/sync.h +1 -1
- data/include/grpc/support/sync_abseil.h +1 -1
- data/include/grpc/support/sync_custom.h +1 -1
- data/include/grpc/support/sync_generic.h +1 -1
- data/include/grpc/support/sync_posix.h +1 -1
- data/include/grpc/support/sync_windows.h +1 -1
- data/include/grpc/support/time.h +2 -2
- data/src/core/ext/filters/census/grpc_context.cc +1 -0
- 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/channel_idle/idle_filter_state.cc +96 -0
- data/src/core/ext/filters/channel_idle/idle_filter_state.h +66 -0
- data/src/core/ext/filters/client_channel/backend_metric.cc +24 -27
- data/src/core/ext/filters/client_channel/backend_metric.h +4 -3
- data/src/core/ext/filters/client_channel/backup_poller.cc +14 -9
- data/src/core/ext/filters/client_channel/backup_poller.h +1 -0
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +75 -94
- data/src/core/ext/filters/client_channel/client_channel.cc +532 -501
- data/src/core/ext/filters/client_channel/client_channel.h +115 -64
- data/src/core/ext/filters/client_channel/client_channel_channelz.cc +6 -5
- data/src/core/ext/filters/client_channel/client_channel_channelz.h +1 -1
- data/src/core/ext/filters/client_channel/client_channel_factory.cc +2 -1
- data/src/core/ext/filters/client_channel/client_channel_factory.h +17 -19
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +18 -24
- data/src/core/ext/filters/client_channel/config_selector.cc +2 -1
- data/src/core/ext/filters/client_channel/config_selector.h +5 -6
- data/src/core/ext/filters/client_channel/connector.h +19 -19
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +6 -7
- data/src/core/ext/filters/client_channel/dynamic_filters.h +2 -2
- data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +2 -22
- data/src/core/ext/filters/client_channel/global_subchannel_pool.h +3 -16
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +128 -582
- data/src/core/ext/filters/client_channel/health/health_check_client.h +24 -159
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +30 -34
- data/src/core/ext/filters/client_channel/http_connect_handshaker.h +10 -2
- 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/address_filtering.cc +4 -3
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +6 -5
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +6 -2
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +6 -18
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +247 -150
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +3 -6
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +3 -4
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +4 -4
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +17 -18
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +4 -4
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +73 -39
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +226 -181
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +126 -79
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +2542 -0
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +68 -62
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +18 -13
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +106 -71
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +119 -159
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +162 -77
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +29 -19
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +331 -488
- data/src/core/ext/filters/client_channel/lb_policy.cc +15 -14
- data/src/core/ext/filters/client_channel/lb_policy.h +115 -106
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +1 -0
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +4 -7
- data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +133 -0
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +296 -324
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +23 -12
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +23 -18
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +37 -55
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +153 -275
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +38 -25
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +96 -254
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +23 -20
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +2 -1
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +85 -69
- 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/sockaddr/sockaddr_resolver.cc +40 -39
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +509 -439
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +11 -15
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +13 -7
- data/src/core/ext/filters/client_channel/retry_filter.cc +282 -238
- data/src/core/ext/filters/client_channel/retry_service_config.cc +16 -18
- data/src/core/ext/filters/client_channel/retry_service_config.h +18 -12
- data/src/core/ext/filters/client_channel/retry_throttle.cc +14 -59
- data/src/core/ext/filters/client_channel/retry_throttle.h +11 -5
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +51 -37
- data/src/core/ext/filters/client_channel/subchannel.cc +132 -197
- data/src/core/ext/filters/client_channel/subchannel.h +36 -56
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +22 -7
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +11 -2
- 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/deadline/deadline_filter.cc +31 -33
- data/src/core/ext/filters/deadline/deadline_filter.h +3 -2
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +158 -401
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +24 -1
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +17 -27
- data/src/core/ext/filters/fault_injection/service_config_parser.h +10 -4
- data/src/core/ext/filters/http/client/http_client_filter.cc +83 -548
- data/src/core/ext/filters/http/client/http_client_filter.h +21 -4
- data/src/core/ext/filters/http/client_authority_filter.cc +39 -103
- data/src/core/ext/filters/http/client_authority_filter.h +24 -5
- data/src/core/ext/filters/http/http_filters_plugin.cc +55 -73
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +49 -140
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +22 -35
- data/src/core/ext/filters/http/server/http_server_filter.cc +64 -274
- data/src/core/ext/filters/message_size/message_size_filter.cc +49 -58
- data/src/core/ext/filters/message_size/message_size_filter.h +10 -3
- data/src/core/ext/filters/rbac/rbac_filter.cc +162 -0
- data/src/core/ext/filters/rbac/rbac_filter.h +76 -0
- data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +606 -0
- data/src/core/ext/filters/rbac/rbac_service_config_parser.h +75 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector.cc +61 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector.h +71 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +143 -0
- data/src/core/ext/filters/{workarounds/workaround_cronet_compression_filter.h → server_config_selector/server_config_selector_filter.h} +11 -6
- data/src/core/ext/transport/chttp2/alpn/alpn.cc +2 -1
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +245 -12
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +294 -95
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +3 -1
- data/src/core/ext/transport/chttp2/transport/bin_decoder.h +2 -1
- data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +1 -0
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +368 -349
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +12 -4
- data/src/core/ext/transport/chttp2/transport/context_list.cc +2 -3
- data/src/core/ext/transport/chttp2/transport/context_list.h +3 -5
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +63 -44
- data/src/core/ext/transport/chttp2/transport/flow_control.h +18 -12
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +11 -12
- data/src/core/ext/transport/chttp2/transport/frame_data.h +1 -0
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +6 -4
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +1 -0
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +10 -9
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +1 -0
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +10 -8
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +1 -0
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +40 -7
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +1 -0
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +12 -7
- data/src/core/ext/transport/chttp2/transport/frame_window_update.h +1 -0
- data/src/core/ext/transport/chttp2/transport/hpack_constants.h +41 -0
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +516 -749
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +183 -71
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +86 -0
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +71 -0
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +764 -1062
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +75 -178
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +239 -0
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +115 -0
- data/src/core/ext/transport/chttp2/transport/internal.h +22 -48
- data/src/core/ext/transport/chttp2/transport/parsing.cc +61 -212
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/varint.cc +7 -3
- data/src/core/ext/transport/chttp2/transport/varint.h +39 -28
- data/src/core/ext/transport/chttp2/transport/writing.cc +125 -169
- data/src/core/ext/transport/inproc/inproc_plugin.cc +0 -4
- data/src/core/ext/transport/inproc/inproc_transport.cc +132 -173
- data/src/core/ext/transport/inproc/inproc_transport.h +1 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.c +117 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.h +482 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.c +121 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.h +553 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +248 -210
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +1382 -685
- data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.c +56 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.h +151 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.c +62 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.h +160 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.c +46 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.h +124 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.c +43 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.h +102 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.c +43 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.h +97 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.c +106 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.h +605 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.c +48 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.h +103 -0
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c +44 -1
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +52 -1
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +31 -5
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +57 -18
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +144 -117
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +761 -386
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +240 -200
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +1376 -667
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +50 -29
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +224 -95
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +337 -255
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +1901 -790
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +21 -8
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +50 -24
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +61 -28
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +280 -99
- data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.c +299 -0
- data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.h +1381 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +75 -54
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +398 -190
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +22 -8
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +53 -25
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +220 -171
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +1224 -567
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +106 -46
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +561 -171
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +20 -7
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +46 -24
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +17 -23
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +49 -95
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.c +58 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.h +151 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +146 -118
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +853 -415
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +142 -92
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +797 -345
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +22 -9
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +65 -31
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +205 -122
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +1097 -393
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +18 -5
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +36 -17
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +28 -14
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +97 -49
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +23 -10
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +83 -34
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +27 -14
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +101 -49
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +22 -9
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +54 -26
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +52 -36
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +214 -109
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +92 -39
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +449 -131
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +71 -54
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +389 -188
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +20 -7
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +42 -21
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +99 -72
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +541 -259
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +105 -80
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +610 -307
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +32 -17
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +112 -49
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +25 -11
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +79 -40
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.c +53 -0
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.h +136 -0
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +83 -62
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +463 -235
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +93 -60
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +483 -214
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +130 -100
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +628 -282
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +54 -35
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +291 -142
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +665 -567
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +3977 -1883
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +39 -20
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +168 -72
- data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.c +222 -0
- data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.h +1052 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.c +44 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.h +88 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.c +49 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.h +103 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +28 -14
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +91 -46
- data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.c +52 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.h +134 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.c +63 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.h +250 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.c +47 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.h +94 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.c +69 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.h +213 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.c +32 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.h +42 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.c +71 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.h +218 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.c +54 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.h +146 -0
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +18 -5
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +42 -24
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +46 -29
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +219 -112
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +52 -37
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +282 -134
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c +64 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +183 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +27 -14
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +94 -43
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +284 -225
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +1673 -738
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +10 -1
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +7 -4
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +113 -54
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +621 -216
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +42 -27
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +176 -87
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +128 -83
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +673 -259
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.c +62 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +160 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +16 -3
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +29 -15
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +92 -73
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +516 -260
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +32 -18
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +121 -62
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +74 -57
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +379 -186
- data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.c +48 -0
- data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.h +112 -0
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +35 -19
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +149 -81
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c +74 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h +214 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +29 -14
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +116 -56
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +22 -9
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +58 -31
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +21 -8
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +56 -27
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +20 -7
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +46 -24
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +36 -21
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +137 -69
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +32 -18
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +137 -65
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +27 -13
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +99 -53
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +38 -23
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +170 -83
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +51 -32
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +273 -145
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +54 -37
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +268 -132
- data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.c +66 -0
- data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.h +201 -0
- data/src/core/ext/upb-generated/envoy/type/v3/http.upb.c +10 -1
- data/src/core/ext/upb-generated/envoy/type/v3/http.upb.h +4 -1
- data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.c +42 -0
- data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.h +139 -0
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c +24 -10
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +76 -36
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +31 -16
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +118 -52
- data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_unit.upb.c +26 -0
- data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_unit.upb.h +41 -0
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +20 -7
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +48 -19
- data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.c +51 -0
- data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.h +127 -0
- data/src/core/ext/upb-generated/google/api/annotations.upb.c +23 -1
- data/src/core/ext/upb-generated/google/api/annotations.upb.h +24 -1
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +155 -126
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +791 -385
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +159 -127
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +869 -402
- data/src/core/ext/upb-generated/google/api/http.upb.c +44 -29
- data/src/core/ext/upb-generated/google/api/http.upb.h +236 -115
- data/src/core/ext/upb-generated/google/api/httpbody.upb.c +46 -0
- data/src/core/ext/upb-generated/google/api/httpbody.upb.h +111 -0
- data/src/core/ext/upb-generated/google/protobuf/any.upb.c +19 -6
- data/src/core/ext/upb-generated/google/protobuf/any.upb.h +46 -22
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +374 -283
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +2263 -1053
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +19 -6
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +44 -20
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +16 -3
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +29 -15
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +48 -32
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +197 -93
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +19 -6
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +44 -20
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +58 -37
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +296 -149
- data/src/core/ext/upb-generated/google/rpc/status.upb.c +22 -9
- data/src/core/ext/upb-generated/google/rpc/status.upb.h +60 -30
- data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.c +84 -0
- data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.h +319 -0
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +33 -19
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +111 -48
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +136 -108
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +753 -365
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +28 -13
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +90 -41
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +23 -9
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +70 -35
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +82 -62
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +448 -232
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +70 -0
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +208 -0
- 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 +76 -14
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +213 -57
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +32 -8
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +62 -18
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c +22 -1
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +17 -1
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +32 -6
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +64 -20
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +31 -5
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +57 -18
- data/src/core/ext/upb-generated/validate/validate.upb.c +407 -311
- data/src/core/ext/upb-generated/validate/validate.upb.h +2904 -1200
- data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.c +110 -0
- data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.h +278 -0
- data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.c +55 -0
- data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.h +108 -0
- data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.c +38 -0
- data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.h +46 -0
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +105 -0
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +290 -0
- data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.c +53 -0
- data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.h +99 -0
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +19 -6
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +38 -19
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +32 -18
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +112 -55
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +27 -13
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +61 -30
- data/src/core/ext/upb-generated/xds/core/v3/extension.upb.c +46 -0
- data/src/core/ext/upb-generated/xds/core/v3/extension.upb.h +103 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +24 -11
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +63 -30
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +35 -21
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +144 -70
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +24 -11
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +66 -30
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +73 -0
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +187 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.c +207 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.h +878 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.c +52 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.h +143 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.c +65 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.h +218 -0
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +46 -0
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +103 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/certs.upbdefs.c +84 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/certs.upbdefs.h +55 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/clusters.upbdefs.c +127 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/clusters.upbdefs.h +50 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +16 -61
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h +67 -67
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/init_dump.upbdefs.c +43 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/init_dump.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.c +53 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/memory.upbdefs.c +49 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/memory.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/metrics.upbdefs.c +46 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/metrics.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/mutex_stats.upbdefs.c +46 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/mutex_stats.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/server_info.upbdefs.c +142 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/server_info.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/tap.upbdefs.c +51 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/tap.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c +10 -8
- data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.h +1 -1
- data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.c +10 -13
- data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +22 -52
- data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.h +46 -46
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +250 -281
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.h +55 -55
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +60 -62
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.h +10 -10
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +445 -458
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +80 -70
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c +16 -18
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +25 -23
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/config/common/matcher/v3/matcher.upbdefs.c +206 -0
- data/src/core/ext/upbdefs-generated/envoy/config/common/matcher/v3/matcher.upbdefs.h +105 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c +17 -32
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.h +22 -22
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.c +17 -19
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +121 -154
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +75 -70
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +140 -116
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h +26 -16
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.c +16 -19
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c +24 -43
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.h +4 -9
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_method_list.upbdefs.c +53 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_method_list.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c +23 -51
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.h +43 -43
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +179 -184
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.h +30 -25
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.c +16 -19
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +263 -252
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h +53 -43
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +14 -16
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.c +16 -20
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.h +7 -7
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c +16 -18
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +20 -22
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.c +15 -18
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c +20 -28
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.h +13 -13
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +98 -83
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.h +23 -13
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c +20 -30
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.h +16 -16
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.c +16 -18
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +54 -62
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +19 -19
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +155 -166
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.h +22 -22
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c +21 -23
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +17 -21
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.h +7 -7
- data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/metrics_service.upbdefs.c +69 -0
- data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/metrics_service.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.c +19 -35
- data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.h +25 -25
- data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.c +40 -47
- data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.h +30 -25
- data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +190 -0
- data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h +70 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +38 -38
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +10 -10
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +845 -913
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +160 -160
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c +54 -48
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.h +10 -10
- data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.c +188 -0
- data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.h +85 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/datadog.upbdefs.c +54 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/datadog.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/dynamic_ot.upbdefs.c +57 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/dynamic_ot.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c +17 -21
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.h +7 -7
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/lightstep.upbdefs.c +72 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/lightstep.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opencensus.upbdefs.c +99 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opencensus.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/service.upbdefs.c +52 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/service.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/skywalking.upbdefs.c +71 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/skywalking.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.c +57 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.h +30 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/xray.upbdefs.c +75 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/xray.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/zipkin.upbdefs.c +77 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/zipkin.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +17 -18
- data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c +19 -29
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.h +16 -16
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +20 -26
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.h +10 -10
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +59 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +19 -20
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +291 -311
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +63 -58
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +17 -13
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h +1 -1
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +173 -141
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h +26 -16
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +21 -27
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h +10 -10
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +219 -211
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h +24 -19
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.c +58 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c +16 -18
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +19 -33
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +22 -22
- data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +18 -22
- data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.h +7 -7
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +22 -32
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.h +16 -16
- data/src/core/ext/upbdefs-generated/envoy/type/http/v3/cookie.upbdefs.c +46 -0
- data/src/core/ext/upbdefs-generated/envoy/type/http/v3/cookie.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.c +15 -23
- data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.h +13 -13
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.c +52 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.h +50 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c +24 -27
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.h +7 -7
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.c +17 -19
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.c +17 -19
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.c +17 -19
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +17 -23
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.h +10 -10
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c +17 -21
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.h +7 -7
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.c +16 -21
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.h +7 -7
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.c +18 -24
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.h +10 -10
- data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c +15 -29
- data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.h +22 -22
- data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c +16 -26
- data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.h +16 -16
- data/src/core/ext/upbdefs-generated/envoy/type/v3/hash_policy.upbdefs.c +53 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/hash_policy.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.c +12 -10
- data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.h +1 -1
- data/src/core/ext/upbdefs-generated/envoy/type/v3/http_status.upbdefs.c +94 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/http_status.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c +14 -19
- data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.h +7 -7
- data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c +13 -19
- data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.h +10 -10
- data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_unit.upbdefs.c +38 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_unit.upbdefs.h +30 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c +13 -16
- data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/type/v3/token_bucket.upbdefs.c +57 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/token_bucket.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.c +7 -7
- data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.h +1 -1
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.c +154 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.h +95 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.c +153 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.h +100 -0
- data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.c +5 -14
- data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.h +10 -10
- data/src/core/ext/upbdefs-generated/google/api/httpbody.upbdefs.c +39 -0
- data/src/core/ext/upbdefs-generated/google/api/httpbody.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c +5 -10
- data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +107 -164
- data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.h +82 -82
- data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c +5 -10
- data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c +5 -10
- data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c +5 -16
- data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.h +13 -13
- data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c +5 -10
- data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c +5 -26
- data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.h +28 -28
- data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c +6 -11
- data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/opencensus/proto/trace/v1/trace_config.upbdefs.c +67 -0
- data/src/core/ext/upbdefs-generated/opencensus/proto/trace/v1/trace_config.upbdefs.h +50 -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/upbdefs-generated/udpa/annotations/migrate.upbdefs.c +10 -18
- data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.h +10 -10
- data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c +24 -33
- data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c +9 -8
- data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.h +1 -1
- data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c +10 -13
- data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c +10 -14
- data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +8 -57
- data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.h +70 -70
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/migrate.upbdefs.c +63 -0
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/migrate.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/security.upbdefs.c +47 -0
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/security.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/sensitive.upbdefs.c +35 -0
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/sensitive.upbdefs.h +30 -0
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.c +64 -0
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.h +50 -0
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/versioning.upbdefs.c +40 -0
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/versioning.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c +18 -22
- data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +32 -38
- data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.h +7 -7
- data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +20 -26
- data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.h +7 -7
- data/src/core/ext/upbdefs-generated/xds/core/v3/extension.upbdefs.c +41 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/extension.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +23 -27
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +39 -45
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.h +7 -7
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +25 -29
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/matcher.upbdefs.c +126 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/matcher.upbdefs.h +80 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/regex.upbdefs.c +40 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/regex.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/string.upbdefs.c +52 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/string.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.c +40 -0
- data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.h +35 -0
- data/src/core/ext/xds/certificate_provider_registry.cc +3 -3
- data/src/core/ext/xds/certificate_provider_store.cc +8 -0
- data/src/core/ext/xds/certificate_provider_store.h +10 -1
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +4 -4
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +2 -2
- data/src/core/ext/xds/upb_utils.h +67 -0
- data/src/core/ext/xds/xds_api.cc +214 -3608
- data/src/core/ext/xds/xds_api.h +62 -580
- data/src/core/ext/xds/xds_bootstrap.cc +241 -167
- data/src/core/ext/xds/xds_bootstrap.h +43 -15
- data/src/core/ext/xds/xds_certificate_provider.cc +5 -3
- data/src/core/ext/xds/xds_certificate_provider.h +10 -2
- data/src/core/ext/xds/xds_channel_stack_modifier.cc +109 -0
- data/src/core/ext/xds/xds_channel_stack_modifier.h +53 -0
- data/src/core/ext/xds/xds_client.cc +872 -899
- data/src/core/ext/xds/xds_client.h +132 -159
- data/src/core/ext/xds/xds_client_stats.cc +31 -30
- data/src/core/ext/xds/xds_client_stats.h +12 -11
- data/src/core/ext/xds/xds_cluster.cc +453 -0
- data/src/core/ext/xds/xds_cluster.h +108 -0
- 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 +388 -0
- data/src/core/ext/xds/xds_common_types.h +95 -0
- data/src/core/ext/xds/xds_endpoint.cc +371 -0
- data/src/core/ext/xds/xds_endpoint.h +135 -0
- data/src/core/ext/xds/xds_http_fault_filter.cc +11 -10
- data/src/core/ext/xds/xds_http_fault_filter.h +6 -5
- data/src/core/ext/xds/xds_http_filters.cc +12 -5
- data/src/core/ext/xds/xds_http_filters.h +4 -4
- data/src/core/ext/xds/xds_http_rbac_filter.cc +563 -0
- data/src/core/ext/xds/xds_http_rbac_filter.h +54 -0
- data/src/core/ext/xds/xds_listener.cc +1039 -0
- data/src/core/ext/xds/xds_listener.h +220 -0
- data/src/core/{lib/transport/authority_override.h → ext/xds/xds_resource_type.cc} +11 -15
- data/src/core/ext/xds/xds_resource_type.h +98 -0
- data/src/core/ext/xds/xds_resource_type_impl.h +87 -0
- data/src/core/ext/xds/xds_route_config.cc +1122 -0
- data/src/core/ext/xds/xds_route_config.h +218 -0
- data/src/core/ext/xds/xds_routing.cc +250 -0
- data/src/core/ext/xds/xds_routing.h +101 -0
- data/src/core/ext/xds/xds_server_config_fetcher.cc +1057 -289
- data/src/core/lib/address_utils/parse_address.cc +26 -8
- data/src/core/lib/address_utils/parse_address.h +5 -0
- data/src/core/lib/address_utils/sockaddr_utils.cc +33 -36
- data/src/core/lib/address_utils/sockaddr_utils.h +1 -16
- data/src/core/lib/avl/avl.h +452 -88
- data/src/core/lib/backoff/backoff.cc +9 -38
- data/src/core/lib/backoff/backoff.h +11 -11
- data/src/core/lib/channel/call_finalization.h +86 -0
- data/src/core/lib/channel/call_tracer.h +4 -1
- data/src/core/lib/channel/channel_args.cc +173 -16
- data/src/core/lib/channel/channel_args.h +214 -1
- data/src/core/lib/channel/channel_args_preconditioning.cc +42 -0
- data/src/core/lib/channel/channel_args_preconditioning.h +61 -0
- data/src/core/lib/channel/channel_stack.cc +15 -6
- data/src/core/lib/channel/channel_stack.h +39 -6
- data/src/core/lib/channel/channel_stack_builder.cc +24 -283
- data/src/core/lib/channel/channel_stack_builder.h +118 -157
- 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/channel_trace.cc +8 -10
- data/src/core/lib/channel/channel_trace.h +2 -1
- data/src/core/lib/channel/channelz.cc +44 -39
- data/src/core/lib/channel/channelz.h +29 -29
- data/src/core/lib/channel/channelz_registry.cc +8 -7
- data/src/core/lib/channel/channelz_registry.h +1 -1
- data/src/core/lib/channel/connected_channel.cc +10 -6
- data/src/core/lib/channel/connected_channel.h +2 -2
- data/src/core/lib/channel/context.h +11 -0
- data/src/core/lib/channel/handshaker.cc +3 -2
- data/src/core/lib/channel/handshaker.h +2 -3
- data/src/core/lib/channel/handshaker_factory.h +10 -2
- data/src/core/lib/channel/handshaker_registry.cc +15 -70
- data/src/core/lib/channel/handshaker_registry.h +29 -12
- data/src/core/lib/channel/promise_based_filter.cc +1002 -0
- data/src/core/lib/channel/promise_based_filter.h +437 -0
- data/src/core/lib/channel/status_util.h +2 -2
- data/src/core/lib/compression/compression.cc +22 -114
- data/src/core/lib/compression/compression_internal.cc +139 -207
- data/src/core/lib/compression/compression_internal.h +64 -69
- data/src/core/lib/compression/message_compress.cc +13 -13
- data/src/core/lib/compression/message_compress.h +2 -2
- data/src/core/lib/config/core_configuration.cc +104 -0
- data/src/core/lib/config/core_configuration.h +196 -0
- data/src/core/lib/debug/stats.cc +1 -1
- data/src/core/lib/debug/stats.h +1 -0
- data/src/core/lib/debug/stats_data.cc +17 -20
- data/src/core/lib/debug/stats_data.h +19 -21
- data/src/core/lib/debug/trace.cc +1 -0
- data/src/core/lib/debug/trace.h +4 -3
- data/src/core/lib/event_engine/{endpoint_config.cc → channel_args_endpoint_config.cc} +2 -2
- data/src/core/lib/event_engine/{endpoint_config_internal.h → channel_args_endpoint_config.h} +3 -3
- data/src/core/lib/{iomgr/event_engine/iomgr.h → event_engine/default_event_engine_factory.cc} +11 -8
- data/src/core/lib/event_engine/event_engine.cc +21 -19
- data/src/core/lib/event_engine/event_engine_factory.h +36 -0
- data/src/core/lib/event_engine/memory_allocator.cc +66 -0
- data/src/core/lib/event_engine/resolved_address.cc +39 -0
- data/src/core/lib/event_engine/sockaddr.cc +3 -3
- data/src/core/lib/gpr/alloc.cc +4 -3
- data/src/core/lib/gpr/atm.cc +1 -1
- data/src/core/lib/gpr/cpu_posix.cc +1 -1
- data/src/core/lib/gpr/env_linux.cc +1 -2
- data/src/core/lib/gpr/env_posix.cc +2 -3
- data/src/core/lib/gpr/log.cc +3 -3
- data/src/core/lib/gpr/log_android.cc +3 -2
- data/src/core/lib/gpr/log_linux.cc +7 -4
- data/src/core/lib/gpr/log_posix.cc +6 -3
- data/src/core/lib/gpr/string.cc +2 -2
- data/src/core/lib/gpr/string.h +2 -2
- data/src/core/lib/gpr/sync.cc +2 -2
- data/src/core/lib/gpr/sync_abseil.cc +7 -6
- data/src/core/lib/gpr/sync_posix.cc +4 -3
- data/src/core/lib/gpr/time.cc +5 -3
- data/src/core/lib/gpr/time_windows.cc +3 -2
- data/src/core/lib/gpr/tls.h +126 -40
- data/src/core/lib/gpr/tmpfile_posix.cc +1 -2
- data/src/core/lib/gpr/useful.h +97 -32
- data/src/core/lib/gprpp/atomic_utils.h +47 -0
- data/src/core/lib/gprpp/bitset.h +207 -0
- data/src/core/lib/gprpp/capture.h +76 -0
- data/src/core/lib/gprpp/chunked_vector.h +253 -0
- data/src/core/lib/{transport/authority_override.cc → gprpp/construct_destruct.h} +16 -17
- data/src/core/lib/gprpp/cpp_impl_of.h +49 -0
- data/src/core/lib/gprpp/debug_location.h +2 -0
- data/src/core/lib/gprpp/dual_ref_counted.h +25 -26
- data/src/core/lib/gprpp/fork.cc +14 -12
- data/src/core/lib/gprpp/fork.h +4 -4
- data/src/core/lib/gprpp/global_config.h +1 -2
- data/src/core/lib/gprpp/global_config_env.cc +14 -14
- data/src/core/lib/gprpp/global_config_env.h +2 -2
- data/src/core/lib/gprpp/global_config_generic.h +2 -2
- data/src/core/lib/gprpp/manual_constructor.h +10 -8
- data/src/core/lib/gprpp/match.h +73 -0
- data/src/core/lib/gprpp/memory.h +9 -3
- data/src/core/lib/gprpp/mpscq.cc +7 -7
- data/src/core/lib/gprpp/mpscq.h +6 -5
- data/src/core/lib/gprpp/orphanable.h +4 -4
- data/src/core/lib/gprpp/overload.h +59 -0
- data/src/core/lib/gprpp/ref_counted.h +21 -19
- data/src/core/lib/gprpp/ref_counted_ptr.h +2 -4
- data/src/core/lib/gprpp/single_set_ptr.h +87 -0
- data/src/core/lib/gprpp/status_helper.cc +65 -37
- data/src/core/lib/gprpp/status_helper.h +14 -16
- data/src/core/lib/gprpp/sync.h +3 -1
- data/src/core/lib/gprpp/table.h +434 -0
- data/src/core/lib/gprpp/thd_posix.cc +5 -5
- data/src/core/lib/gprpp/thd_windows.cc +4 -11
- data/src/core/lib/gprpp/time.cc +198 -0
- data/src/core/lib/gprpp/time.h +292 -0
- data/src/core/lib/gprpp/time_util.cc +2 -2
- data/src/core/lib/gprpp/time_util.h +2 -2
- data/src/core/lib/http/format_request.cc +29 -25
- data/src/core/lib/http/format_request.h +8 -6
- data/src/core/lib/http/httpcli.cc +298 -208
- data/src/core/lib/http/httpcli.h +183 -85
- data/src/core/lib/http/httpcli_security_connector.cc +67 -81
- data/src/core/lib/http/httpcli_ssl_credentials.h +37 -0
- data/src/core/lib/http/parser.cc +82 -11
- data/src/core/lib/http/parser.h +16 -2
- data/src/core/lib/iomgr/buffer_list.cc +11 -10
- data/src/core/lib/iomgr/buffer_list.h +19 -20
- data/src/core/lib/iomgr/call_combiner.cc +45 -16
- data/src/core/lib/iomgr/cfstream_handle.cc +1 -1
- data/src/core/lib/iomgr/closure.h +29 -9
- data/src/core/lib/iomgr/combiner.cc +34 -26
- data/src/core/lib/iomgr/combiner.h +1 -0
- data/src/core/lib/iomgr/dualstack_socket_posix.cc +1 -0
- data/src/core/lib/iomgr/endpoint.cc +0 -4
- data/src/core/lib/iomgr/endpoint.h +1 -4
- data/src/core/lib/iomgr/endpoint_cfstream.cc +15 -42
- data/src/core/lib/iomgr/endpoint_cfstream.h +4 -4
- data/src/core/lib/iomgr/endpoint_pair.h +1 -0
- data/src/core/lib/iomgr/endpoint_pair_event_engine.cc +1 -2
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +11 -9
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +5 -6
- data/src/core/lib/iomgr/error.cc +123 -59
- data/src/core/lib/iomgr/error.h +73 -20
- data/src/core/lib/iomgr/error_cfstream.cc +7 -2
- data/src/core/lib/iomgr/error_internal.h +1 -0
- data/src/core/lib/iomgr/ev_apple.cc +6 -5
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +25 -31
- data/src/core/lib/iomgr/ev_poll_posix.cc +49 -52
- data/src/core/lib/iomgr/ev_posix.cc +10 -12
- data/src/core/lib/iomgr/ev_posix.h +1 -1
- data/src/core/lib/iomgr/event_engine/closure.cc +41 -18
- data/src/core/lib/iomgr/event_engine/closure.h +10 -1
- data/src/core/lib/iomgr/event_engine/endpoint.cc +7 -27
- data/src/core/lib/iomgr/event_engine/endpoint.h +1 -2
- data/src/core/lib/iomgr/event_engine/iomgr.cc +10 -30
- data/src/core/lib/iomgr/event_engine/pollset.cc +6 -6
- data/src/core/lib/iomgr/event_engine/resolved_address_internal.cc +6 -0
- data/src/core/lib/iomgr/event_engine/resolved_address_internal.h +2 -0
- data/src/core/lib/iomgr/event_engine/resolver.cc +70 -47
- data/src/core/lib/iomgr/event_engine/resolver.h +56 -0
- data/src/core/lib/iomgr/event_engine/tcp.cc +70 -37
- data/src/core/lib/iomgr/event_engine/timer.cc +13 -8
- data/src/core/lib/iomgr/exec_ctx.cc +28 -109
- data/src/core/lib/iomgr/exec_ctx.h +28 -52
- data/src/core/lib/iomgr/executor/mpmcqueue.cc +15 -16
- data/src/core/lib/iomgr/executor/mpmcqueue.h +7 -11
- data/src/core/lib/iomgr/executor/threadpool.cc +2 -2
- data/src/core/lib/iomgr/executor/threadpool.h +2 -1
- data/src/core/lib/iomgr/executor.cc +30 -39
- data/src/core/lib/iomgr/executor.h +1 -1
- data/src/core/lib/iomgr/fork_posix.cc +2 -1
- data/src/core/lib/iomgr/grpc_if_nametoindex_posix.cc +2 -2
- data/src/core/lib/iomgr/grpc_if_nametoindex_unsupported.cc +2 -2
- data/src/core/lib/iomgr/internal_errqueue.cc +3 -2
- data/src/core/lib/iomgr/iocp_windows.cc +10 -9
- data/src/core/lib/iomgr/iocp_windows.h +1 -1
- data/src/core/lib/iomgr/iomgr.cc +3 -1
- data/src/core/lib/iomgr/iomgr.h +2 -2
- data/src/core/lib/iomgr/iomgr_internal.cc +6 -10
- data/src/core/lib/iomgr/iomgr_internal.h +3 -2
- data/src/core/lib/iomgr/iomgr_posix.cc +2 -2
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +2 -2
- data/src/core/lib/iomgr/iomgr_windows.cc +3 -4
- data/src/core/lib/iomgr/load_file.cc +2 -2
- data/src/core/lib/iomgr/lockfree_event.cc +18 -0
- data/src/core/lib/iomgr/polling_entity.cc +2 -2
- data/src/core/lib/iomgr/polling_entity.h +6 -0
- data/src/core/lib/iomgr/pollset.cc +1 -1
- data/src/core/lib/iomgr/pollset.h +4 -4
- data/src/core/lib/iomgr/pollset_set_windows.cc +1 -0
- data/src/core/lib/iomgr/pollset_windows.cc +2 -2
- data/src/core/lib/iomgr/port.h +6 -16
- data/src/core/lib/iomgr/python_util.h +1 -0
- data/src/core/lib/iomgr/resolve_address.cc +7 -25
- data/src/core/lib/iomgr/resolve_address.h +47 -48
- data/src/core/lib/iomgr/resolve_address_impl.h +59 -0
- data/src/core/lib/iomgr/resolve_address_posix.cc +90 -78
- data/src/core/lib/iomgr/resolve_address_posix.h +47 -0
- data/src/core/lib/iomgr/resolve_address_windows.cc +99 -82
- data/src/core/lib/iomgr/resolve_address_windows.h +47 -0
- data/src/core/lib/iomgr/resolved_address.h +39 -0
- data/src/core/lib/iomgr/sockaddr.h +1 -1
- data/src/core/lib/iomgr/{socket_utils_uv.cc → sockaddr_utils_posix.cc} +21 -8
- data/src/core/lib/iomgr/socket_factory_posix.cc +5 -5
- data/src/core/lib/iomgr/socket_factory_posix.h +1 -0
- data/src/core/lib/iomgr/socket_mutator.cc +2 -2
- data/src/core/lib/iomgr/socket_mutator.h +2 -2
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +4 -22
- data/src/core/lib/iomgr/socket_utils_linux.cc +4 -4
- data/src/core/lib/iomgr/socket_utils_posix.cc +2 -2
- data/src/core/lib/iomgr/socket_utils_posix.h +2 -2
- data/src/core/lib/iomgr/socket_utils_windows.cc +2 -2
- data/src/core/lib/iomgr/tcp_client.cc +1 -1
- data/src/core/lib/iomgr/tcp_client.h +5 -2
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +8 -24
- data/src/core/lib/iomgr/tcp_client_posix.cc +17 -27
- data/src/core/lib/iomgr/tcp_client_posix.h +4 -2
- data/src/core/lib/iomgr/tcp_client_windows.cc +8 -10
- data/src/core/lib/iomgr/tcp_posix.cc +143 -120
- data/src/core/lib/iomgr/tcp_posix.h +9 -12
- data/src/core/lib/iomgr/tcp_server.h +4 -3
- data/src/core/lib/iomgr/tcp_server_posix.cc +40 -29
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +21 -17
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +2 -2
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +4 -4
- data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +4 -4
- data/src/core/lib/iomgr/tcp_server_windows.cc +6 -10
- data/src/core/lib/iomgr/tcp_windows.cc +22 -39
- data/src/core/lib/iomgr/tcp_windows.h +1 -1
- data/src/core/lib/iomgr/timer.cc +3 -2
- data/src/core/lib/iomgr/timer.h +11 -7
- data/src/core/lib/iomgr/timer_generic.cc +113 -124
- data/src/core/lib/iomgr/timer_generic.h +1 -0
- data/src/core/lib/iomgr/timer_heap.cc +2 -3
- data/src/core/lib/iomgr/timer_manager.cc +15 -14
- data/src/core/lib/iomgr/unix_sockets_posix.cc +25 -39
- data/src/core/lib/iomgr/unix_sockets_posix.h +6 -10
- data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +6 -15
- data/src/core/lib/iomgr/wakeup_fd_nospecial.cc +1 -0
- data/src/core/lib/iomgr/wakeup_fd_pipe.cc +2 -3
- data/src/core/lib/iomgr/wakeup_fd_posix.cc +1 -0
- data/src/core/lib/iomgr/work_serializer.cc +120 -44
- data/src/core/lib/iomgr/work_serializer.h +17 -5
- data/src/core/lib/json/json_reader.cc +92 -52
- data/src/core/lib/json/json_util.cc +71 -3
- data/src/core/lib/json/json_util.h +67 -117
- data/src/core/lib/json/json_writer.cc +0 -3
- data/src/core/lib/matchers/matchers.cc +1 -1
- data/src/core/lib/matchers/matchers.h +0 -1
- data/src/core/lib/profiling/basic_timers.cc +8 -6
- data/src/core/lib/profiling/stap_timers.cc +2 -2
- data/src/core/lib/promise/activity.cc +121 -0
- data/src/core/lib/promise/activity.h +540 -0
- data/src/core/lib/promise/arena_promise.h +188 -0
- data/src/core/lib/promise/call_push_pull.h +144 -0
- data/src/core/lib/promise/context.h +86 -0
- data/src/core/lib/promise/detail/basic_seq.h +496 -0
- data/src/core/lib/promise/detail/promise_factory.h +189 -0
- data/src/core/lib/promise/detail/promise_like.h +85 -0
- data/src/core/lib/promise/detail/status.h +50 -0
- data/src/core/lib/promise/detail/switch.h +1455 -0
- data/src/core/lib/promise/exec_ctx_wakeup_scheduler.h +48 -0
- data/src/core/lib/promise/intra_activity_waiter.h +49 -0
- data/src/core/lib/promise/latch.h +104 -0
- data/src/core/lib/promise/loop.h +134 -0
- data/src/core/lib/promise/map.h +88 -0
- data/src/core/lib/promise/poll.h +66 -0
- data/src/core/lib/promise/promise.h +95 -0
- data/src/core/lib/promise/race.h +84 -0
- data/src/core/lib/promise/seq.h +89 -0
- data/src/core/lib/promise/sleep.cc +74 -0
- data/src/core/lib/promise/sleep.h +66 -0
- data/src/core/lib/promise/try_seq.h +157 -0
- data/src/core/{ext/filters/client_channel → lib/resolver}/resolver.cc +17 -25
- data/src/core/{ext/filters/client_channel → lib/resolver}/resolver.h +43 -44
- data/src/core/{ext/filters/client_channel → lib/resolver}/resolver_factory.h +32 -29
- data/src/core/lib/resolver/resolver_registry.cc +156 -0
- data/src/core/lib/resolver/resolver_registry.h +113 -0
- data/src/core/{ext/filters/client_channel → lib/resolver}/server_address.cc +1 -1
- data/src/core/{ext/filters/client_channel → lib/resolver}/server_address.h +5 -5
- data/src/core/lib/resource_quota/api.cc +83 -0
- data/src/core/lib/resource_quota/api.h +40 -0
- data/src/core/lib/{gprpp → resource_quota}/arena.cc +18 -14
- data/src/core/lib/{gprpp → resource_quota}/arena.h +37 -16
- data/src/core/lib/resource_quota/memory_quota.cc +478 -0
- data/src/core/lib/resource_quota/memory_quota.h +457 -0
- data/src/core/lib/resource_quota/resource_quota.cc +33 -0
- data/src/core/lib/resource_quota/resource_quota.h +66 -0
- data/src/core/lib/resource_quota/thread_quota.cc +43 -0
- data/src/core/lib/resource_quota/thread_quota.h +57 -0
- data/src/core/lib/resource_quota/trace.cc +19 -0
- data/src/core/{ext/filters/max_age/max_age_filter.h → lib/resource_quota/trace.h} +6 -8
- data/src/core/lib/security/authorization/authorization_policy_provider.h +12 -4
- data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +1 -1
- data/src/core/lib/security/authorization/evaluate_args.cc +39 -36
- data/src/core/lib/security/authorization/evaluate_args.h +3 -2
- data/src/core/lib/security/authorization/grpc_authorization_engine.cc +60 -0
- data/src/core/lib/security/authorization/grpc_authorization_engine.h +62 -0
- data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +106 -0
- data/src/core/lib/security/authorization/grpc_server_authz_filter.h +50 -0
- data/src/core/lib/security/authorization/matchers.cc +227 -0
- data/src/core/lib/security/authorization/matchers.h +211 -0
- data/src/core/lib/security/authorization/rbac_policy.cc +442 -0
- data/src/core/lib/security/authorization/rbac_policy.h +171 -0
- data/src/core/lib/security/context/security_context.cc +15 -10
- data/src/core/lib/security/context/security_context.h +9 -2
- data/src/core/lib/security/credentials/alts/alts_credentials.cc +6 -5
- data/src/core/lib/security/credentials/alts/alts_credentials.h +10 -0
- data/src/core/lib/security/credentials/alts/check_gcp_environment_linux.cc +2 -2
- data/src/core/lib/security/credentials/alts/check_gcp_environment_no_op.cc +2 -2
- data/src/core/lib/security/credentials/alts/check_gcp_environment_windows.cc +2 -2
- data/src/core/lib/security/credentials/call_creds_util.cc +87 -0
- data/src/core/lib/security/credentials/call_creds_util.h +42 -0
- data/src/core/lib/security/credentials/channel_creds_registry.h +97 -0
- data/src/core/lib/security/credentials/channel_creds_registry_init.cc +70 -0
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +28 -86
- data/src/core/lib/security/credentials/composite/composite_credentials.h +23 -10
- data/src/core/lib/security/credentials/credentials.cc +11 -10
- data/src/core/lib/security/credentials/credentials.h +81 -82
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +61 -59
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +2 -2
- data/src/core/lib/security/credentials/external/aws_request_signer.cc +3 -3
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +112 -68
- data/src/core/lib/security/credentials/external/external_account_credentials.h +6 -9
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +0 -1
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +35 -18
- data/src/core/lib/security/credentials/external/url_external_account_credentials.h +1 -0
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +23 -27
- data/src/core/lib/security/credentials/fake/fake_credentials.h +22 -21
- data/src/core/lib/security/credentials/google_default/credentials_generic.cc +1 -2
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +77 -20
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +9 -3
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +23 -29
- data/src/core/lib/security/credentials/iam/iam_credentials.h +15 -9
- data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +25 -26
- data/src/core/lib/security/credentials/insecure/insecure_credentials.h +57 -0
- data/src/core/lib/security/credentials/jwt/json_token.cc +5 -7
- data/src/core/lib/security/credentials/jwt/json_token.h +2 -1
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +56 -51
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +27 -15
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +59 -54
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +4 -4
- data/src/core/lib/security/credentials/local/local_credentials.cc +6 -6
- data/src/core/lib/security/credentials/local/local_credentials.h +10 -0
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +160 -181
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +61 -33
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +98 -156
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +56 -27
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +11 -18
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +14 -4
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +3 -2
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +10 -6
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +13 -13
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +62 -12
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +209 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +145 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +33 -87
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +75 -151
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +30 -16
- data/src/core/lib/security/credentials/tls/tls_credentials.h +6 -0
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +51 -58
- data/src/core/lib/security/credentials/xds/xds_credentials.h +37 -6
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +11 -17
- data/src/core/lib/security/security_connector/alts/alts_security_connector.h +3 -3
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +13 -24
- data/src/core/lib/security/security_connector/fake/fake_security_connector.h +0 -2
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +8 -18
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +11 -16
- data/src/core/lib/security/security_connector/load_system_roots_fallback.cc +1 -0
- data/src/core/lib/security/security_connector/load_system_roots_linux.cc +4 -5
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +14 -19
- data/src/core/lib/security/security_connector/security_connector.cc +8 -15
- data/src/core/lib/security/security_connector/security_connector.h +26 -22
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +14 -20
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +1 -2
- data/src/core/lib/security/security_connector/ssl_utils.cc +41 -36
- data/src/core/lib/security/security_connector/ssl_utils.h +14 -18
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +366 -211
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +69 -48
- data/src/core/lib/security/transport/auth_filters.h +39 -5
- data/src/core/lib/security/transport/client_auth_filter.cc +98 -363
- data/src/core/lib/security/transport/secure_endpoint.cc +202 -143
- data/src/core/lib/security/transport/secure_endpoint.h +2 -1
- data/src/core/lib/security/transport/security_handshaker.cc +95 -54
- data/src/core/lib/security/transport/security_handshaker.h +2 -1
- data/src/core/lib/security/transport/server_auth_filter.cc +41 -37
- data/src/core/lib/security/transport/tsi_error.cc +3 -5
- data/src/core/lib/security/util/json_util.cc +6 -8
- data/src/core/lib/service_config/service_config.h +82 -0
- data/src/core/lib/service_config/service_config_call_data.h +72 -0
- data/src/core/{ext/filters/client_channel/service_config.cc → lib/service_config/service_config_impl.cc} +20 -17
- data/src/core/{ext/filters/client_channel/service_config.h → lib/service_config/service_config_impl.h} +16 -18
- data/src/core/{ext/filters/client_channel → lib/service_config}/service_config_parser.cc +31 -27
- data/src/core/{ext/filters/client_channel → lib/service_config}/service_config_parser.h +39 -28
- data/src/core/lib/slice/percent_encoding.cc +84 -97
- data/src/core/lib/slice/percent_encoding.h +23 -28
- data/src/core/lib/slice/slice.cc +80 -200
- data/src/core/lib/slice/slice.h +384 -0
- data/src/core/lib/{iomgr/is_epollexclusive_available.h → slice/slice_api.cc} +15 -12
- data/src/core/lib/slice/slice_buffer.cc +10 -7
- data/src/core/lib/slice/slice_internal.h +15 -277
- data/src/core/lib/slice/slice_refcount.cc +35 -0
- data/src/core/lib/slice/slice_refcount.h +46 -0
- data/src/core/lib/slice/slice_refcount_base.h +61 -0
- data/src/core/lib/slice/slice_split.cc +100 -0
- data/src/core/lib/slice/slice_split.h +40 -0
- data/src/core/lib/slice/slice_string_helpers.cc +0 -83
- data/src/core/lib/slice/slice_string_helpers.h +0 -11
- data/src/core/lib/surface/api_trace.cc +2 -1
- data/src/core/lib/surface/api_trace.h +1 -0
- data/src/core/lib/surface/builtins.cc +49 -0
- data/src/core/lib/surface/builtins.h +26 -0
- data/src/core/lib/surface/byte_buffer_reader.cc +1 -1
- data/src/core/lib/surface/call.cc +1142 -1247
- data/src/core/lib/surface/call.h +8 -28
- data/src/core/lib/surface/call_details.cc +2 -2
- data/src/core/lib/surface/call_log_batch.cc +2 -2
- data/src/core/lib/surface/channel.cc +72 -103
- data/src/core/lib/surface/channel.h +15 -23
- data/src/core/lib/surface/channel_init.cc +22 -76
- data/src/core/lib/surface/channel_init.h +44 -40
- data/src/core/lib/surface/channel_ping.cc +1 -2
- data/src/core/lib/surface/channel_stack_type.cc +2 -1
- data/src/core/lib/surface/completion_queue.cc +70 -78
- data/src/core/lib/surface/completion_queue_factory.cc +2 -1
- data/src/core/lib/surface/completion_queue_factory.h +1 -0
- data/src/core/lib/surface/event_string.cc +1 -0
- data/src/core/lib/surface/init.cc +81 -57
- data/src/core/lib/surface/init.h +0 -3
- data/src/core/lib/surface/lame_client.cc +47 -32
- data/src/core/lib/surface/lame_client.h +1 -1
- data/src/core/lib/surface/metadata_array.cc +2 -2
- data/src/core/lib/surface/server.cc +71 -118
- data/src/core/lib/surface/server.h +40 -37
- data/src/core/lib/surface/validate_metadata.cc +49 -18
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.cc +11 -12
- data/src/core/lib/transport/bdp_estimator.h +2 -2
- data/src/core/lib/transport/byte_stream.cc +6 -0
- data/src/core/lib/transport/byte_stream.h +1 -0
- data/src/core/lib/transport/connectivity_state.cc +8 -5
- data/src/core/lib/transport/connectivity_state.h +2 -2
- data/src/core/lib/transport/error_utils.cc +48 -20
- data/src/core/lib/transport/error_utils.h +3 -2
- data/src/core/lib/transport/metadata_batch.h +1352 -171
- data/src/core/lib/transport/parsed_metadata.cc +37 -0
- data/src/core/lib/transport/parsed_metadata.h +401 -0
- data/src/core/lib/transport/pid_controller.cc +4 -4
- data/src/core/lib/transport/status_conversion.cc +2 -2
- data/src/core/lib/transport/status_conversion.h +1 -1
- data/src/core/lib/transport/timeout_encoding.cc +204 -67
- data/src/core/lib/transport/timeout_encoding.h +40 -10
- data/src/core/lib/transport/transport.cc +11 -32
- data/src/core/lib/transport/transport.h +103 -4
- data/src/core/lib/transport/transport_impl.h +14 -0
- data/src/core/lib/transport/transport_op_string.cc +7 -29
- data/src/core/lib/uri/uri_parser.cc +237 -63
- data/src/core/lib/uri/uri_parser.h +39 -23
- data/src/core/plugin_registry/grpc_plugin_registry.cc +69 -102
- data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +85 -0
- data/src/core/tsi/alts/crypt/aes_gcm.cc +6 -3
- data/src/core/tsi/alts/crypt/gsec.h +2 -3
- data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +13 -12
- data/src/core/tsi/alts/frame_protector/frame_handler.cc +10 -11
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +31 -27
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +2 -3
- data/src/core/tsi/alts/handshaker/alts_shared_resource.cc +9 -1
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +33 -15
- data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +2 -2
- data/src/core/tsi/alts/handshaker/alts_tsi_utils.h +1 -1
- data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +2 -2
- data/src/core/tsi/alts/handshaker/transport_security_common_api.h +2 -2
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +2 -2
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +1 -1
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +2 -2
- data/src/core/tsi/fake_transport_security.cc +15 -7
- data/src/core/tsi/local_transport_security.cc +42 -87
- data/src/core/tsi/local_transport_security.h +1 -4
- data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +141 -0
- data/src/core/tsi/ssl/key_logging/ssl_key_logging.h +81 -0
- data/src/core/tsi/ssl/session_cache/ssl_session.h +2 -4
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +20 -53
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +6 -7
- data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +2 -2
- data/src/core/tsi/ssl_transport_security.cc +229 -62
- data/src/core/tsi/ssl_transport_security.h +50 -9
- data/src/core/tsi/transport_security.cc +15 -3
- data/src/core/tsi/transport_security.h +16 -1
- data/src/core/tsi/transport_security_grpc.h +1 -0
- data/src/core/tsi/transport_security_interface.h +28 -0
- data/src/ruby/ext/grpc/extconf.rb +21 -11
- data/src/ruby/ext/grpc/rb_byte_buffer.c +2 -1
- data/src/ruby/ext/grpc/rb_call.c +5 -5
- data/src/ruby/ext/grpc/rb_call_credentials.c +5 -5
- data/src/ruby/ext/grpc/rb_channel.c +15 -10
- data/src/ruby/ext/grpc/rb_channel_args.c +2 -2
- data/src/ruby/ext/grpc/rb_channel_credentials.c +4 -4
- data/src/ruby/ext/grpc/rb_channel_credentials.h +1 -0
- data/src/ruby/ext/grpc/rb_completion_queue.c +3 -2
- data/src/ruby/ext/grpc/rb_compression_options.c +5 -4
- data/src/ruby/ext/grpc/rb_event_thread.c +4 -4
- data/src/ruby/ext/grpc/rb_grpc.c +5 -4
- data/src/ruby/ext/grpc/rb_grpc.h +1 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +30 -34
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +45 -51
- data/src/ruby/ext/grpc/rb_server.c +13 -9
- data/src/ruby/ext/grpc/rb_server_credentials.c +3 -3
- data/src/ruby/ext/grpc/rb_server_credentials.h +1 -0
- data/src/ruby/ext/grpc/rb_xds_channel_credentials.c +8 -5
- data/src/ruby/ext/grpc/rb_xds_channel_credentials.h +3 -1
- data/src/ruby/ext/grpc/rb_xds_server_credentials.c +6 -5
- data/src/ruby/ext/grpc/rb_xds_server_credentials.h +3 -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/src/proto/grpc/testing/test_pb.rb +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/src/ruby/spec/client_server_spec.rb +1 -1
- data/third_party/abseil-cpp/absl/algorithm/container.h +101 -91
- data/third_party/abseil-cpp/absl/base/attributes.h +64 -31
- data/third_party/abseil-cpp/absl/base/config.h +67 -37
- data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +1 -26
- data/third_party/abseil-cpp/absl/base/internal/fast_type_id.h +48 -0
- data/third_party/abseil-cpp/absl/base/internal/spinlock.h +3 -1
- data/third_party/abseil-cpp/absl/base/internal/spinlock_wait.h +2 -0
- data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +69 -0
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +4 -4
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +15 -10
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +16 -0
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +4 -4
- data/third_party/abseil-cpp/absl/base/options.h +1 -1
- data/third_party/abseil-cpp/absl/container/fixed_array.h +0 -5
- data/third_party/abseil-cpp/absl/container/inlined_vector.h +105 -97
- data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +17 -15
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +18 -102
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +37 -78
- data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +388 -423
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +3 -2
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +14 -8
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +251 -120
- data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +11 -1
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +12 -11
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +6 -2
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +12 -5
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +110 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +234 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +25 -7
- data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +8 -2
- data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +21 -3
- data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +2 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize.cc +2 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +14 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize_emscripten.inc +72 -0
- data/third_party/abseil-cpp/absl/functional/function_ref.h +4 -1
- data/third_party/abseil-cpp/absl/hash/hash.h +22 -0
- data/third_party/abseil-cpp/absl/hash/internal/hash.cc +15 -16
- data/third_party/abseil-cpp/absl/hash/internal/hash.h +88 -37
- data/third_party/abseil-cpp/absl/hash/internal/{wyhash.cc → low_level_hash.cc} +23 -11
- data/third_party/abseil-cpp/absl/hash/internal/{wyhash.h → low_level_hash.h} +14 -12
- data/third_party/abseil-cpp/absl/memory/memory.h +1 -1
- data/third_party/abseil-cpp/absl/meta/type_traits.h +32 -2
- data/third_party/abseil-cpp/absl/numeric/int128.cc +3 -10
- data/third_party/abseil-cpp/absl/numeric/int128.h +146 -73
- data/third_party/abseil-cpp/absl/numeric/int128_have_intrinsic.inc +19 -25
- data/third_party/abseil-cpp/absl/numeric/int128_no_intrinsic.inc +73 -70
- data/third_party/abseil-cpp/absl/{base → profiling}/internal/exponential_biased.cc +4 -4
- data/third_party/abseil-cpp/absl/{base → profiling}/internal/exponential_biased.h +6 -6
- data/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h +230 -0
- data/third_party/abseil-cpp/absl/random/bernoulli_distribution.h +200 -0
- data/third_party/abseil-cpp/absl/random/beta_distribution.h +427 -0
- data/third_party/abseil-cpp/absl/random/discrete_distribution.cc +98 -0
- data/third_party/abseil-cpp/absl/random/discrete_distribution.h +247 -0
- data/third_party/abseil-cpp/absl/random/distributions.h +452 -0
- data/third_party/abseil-cpp/absl/random/exponential_distribution.h +165 -0
- data/third_party/abseil-cpp/absl/random/gaussian_distribution.cc +104 -0
- data/third_party/abseil-cpp/absl/random/gaussian_distribution.h +275 -0
- data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +92 -0
- data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +268 -0
- data/third_party/abseil-cpp/absl/random/internal/fastmath.h +57 -0
- data/third_party/abseil-cpp/absl/random/internal/generate_real.h +144 -0
- data/third_party/abseil-cpp/absl/random/internal/iostream_state_saver.h +245 -0
- data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +150 -0
- data/third_party/abseil-cpp/absl/random/internal/pcg_engine.h +308 -0
- data/third_party/abseil-cpp/absl/random/internal/platform.h +171 -0
- data/third_party/abseil-cpp/absl/random/internal/pool_urbg.cc +253 -0
- data/third_party/abseil-cpp/absl/random/internal/pool_urbg.h +131 -0
- data/third_party/abseil-cpp/absl/random/internal/randen.cc +91 -0
- data/third_party/abseil-cpp/absl/random/internal/randen.h +102 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +221 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_detect.h +33 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +239 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_hwaes.cc +526 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_hwaes.h +50 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_round_keys.cc +462 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_slow.cc +471 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_slow.h +40 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_traits.h +88 -0
- data/third_party/abseil-cpp/absl/random/internal/salted_seed_seq.h +167 -0
- data/third_party/abseil-cpp/absl/random/internal/seed_material.cc +267 -0
- data/third_party/abseil-cpp/absl/random/internal/seed_material.h +104 -0
- data/third_party/abseil-cpp/absl/random/internal/traits.h +101 -0
- data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +244 -0
- data/third_party/abseil-cpp/absl/random/internal/wide_multiply.h +111 -0
- data/third_party/abseil-cpp/absl/random/log_uniform_int_distribution.h +257 -0
- data/third_party/abseil-cpp/absl/random/poisson_distribution.h +258 -0
- data/third_party/abseil-cpp/absl/random/random.h +189 -0
- data/third_party/abseil-cpp/absl/random/seed_gen_exception.cc +46 -0
- data/third_party/abseil-cpp/absl/random/seed_gen_exception.h +55 -0
- data/third_party/abseil-cpp/absl/random/seed_sequences.cc +29 -0
- data/third_party/abseil-cpp/absl/random/seed_sequences.h +110 -0
- data/third_party/abseil-cpp/absl/random/uniform_int_distribution.h +275 -0
- data/third_party/abseil-cpp/absl/random/uniform_real_distribution.h +202 -0
- data/third_party/abseil-cpp/absl/random/zipf_distribution.h +271 -0
- data/third_party/abseil-cpp/absl/status/internal/status_internal.h +5 -5
- data/third_party/abseil-cpp/absl/status/status.cc +9 -17
- data/third_party/abseil-cpp/absl/status/status.h +19 -15
- data/third_party/abseil-cpp/absl/status/statusor.cc +34 -2
- data/third_party/abseil-cpp/absl/status/statusor.h +31 -21
- data/third_party/abseil-cpp/absl/strings/charconv.cc +3 -3
- data/third_party/abseil-cpp/absl/strings/charconv.h +3 -2
- data/third_party/abseil-cpp/absl/strings/cord.cc +453 -359
- data/third_party/abseil-cpp/absl/strings/cord.h +197 -70
- data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +6 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +140 -63
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +1128 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h +939 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.cc +185 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.h +265 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.cc +68 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.h +211 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.cc +129 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.h +50 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +7 -7
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +55 -181
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.h +42 -24
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring_reader.h +4 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_functions.cc +96 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_functions.h +85 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.cc +139 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.h +131 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +445 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_info.h +298 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_statistics.h +87 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_update_scope.h +71 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_update_tracker.h +121 -0
- data/third_party/abseil-cpp/absl/strings/internal/resize_uninitialized.h +48 -2
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +8 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +3 -4
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +6 -6
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +36 -18
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +62 -73
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +24 -16
- data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +35 -35
- data/third_party/abseil-cpp/absl/strings/numbers.cc +1 -1
- data/third_party/abseil-cpp/absl/strings/numbers.h +34 -0
- data/third_party/abseil-cpp/absl/strings/str_cat.cc +4 -4
- data/third_party/abseil-cpp/absl/strings/str_format.h +1 -2
- data/third_party/abseil-cpp/absl/strings/string_view.cc +16 -21
- data/third_party/abseil-cpp/absl/strings/string_view.h +120 -39
- data/third_party/abseil-cpp/absl/strings/substitute.cc +2 -1
- data/third_party/abseil-cpp/absl/strings/substitute.h +99 -74
- data/third_party/abseil-cpp/absl/synchronization/blocking_counter.cc +25 -15
- data/third_party/abseil-cpp/absl/synchronization/blocking_counter.h +5 -3
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +1 -1
- data/third_party/abseil-cpp/absl/synchronization/mutex.h +3 -3
- data/third_party/abseil-cpp/absl/time/civil_time.cc +1 -3
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +93 -20
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.cc +1 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.h +2 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +83 -21
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +49 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +1 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +2 -3
- data/third_party/abseil-cpp/absl/time/time.h +67 -36
- data/third_party/abseil-cpp/absl/types/bad_optional_access.h +1 -1
- data/third_party/abseil-cpp/absl/types/bad_variant_access.h +2 -2
- data/third_party/abseil-cpp/absl/types/span.h +3 -3
- data/third_party/address_sorting/address_sorting_posix.c +1 -0
- data/third_party/boringssl-with-bazel/err_data.c +685 -673
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +67 -54
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +21 -22
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_d2i_fp.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_gentm.c +6 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.c +16 -23
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +55 -37
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_print.c +19 -29
- data/third_party/boringssl-with-bazel/src/crypto/{x509 → asn1}/a_strex.c +269 -272
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +106 -153
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +4 -4
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +1 -40
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utf8.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +59 -47
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_par.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c +24 -28
- data/third_party/boringssl-with-bazel/src/crypto/{x509 → asn1}/charmap.h +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/{asn1_locl.h → internal.h} +86 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +57 -281
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +291 -199
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +9 -9
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.c +10 -14
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.c +8 -6
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/time_support.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +24 -8
- data/third_party/boringssl-with-bazel/src/crypto/bio/bio_mem.c +1 -7
- data/third_party/boringssl-with-bazel/src/crypto/bio/connect.c +1 -5
- data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +0 -4
- data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +1 -7
- data/third_party/boringssl-with-bazel/src/crypto/bio/pair.c +1 -6
- data/third_party/boringssl-with-bazel/src/crypto/bio/socket.c +3 -17
- data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +4 -6
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c +3 -1
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbb.c +9 -0
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +8 -0
- data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c +38 -47
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/cipher_extra.c +45 -65
- data/third_party/boringssl-with-bazel/src/crypto/conf/conf.c +14 -3
- data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +6 -3
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +21 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/evp/scrypt.c +32 -34
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +26 -9
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd_extra.c +3 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +5 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/sqrt.c +5 -9
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +12 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +10 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/des/des.c +10 -11
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/des/internal.h +1 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +1 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md4/md4.c +4 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5.c +4 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm_nohw.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +5 -9
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +4 -6
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +24 -9
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +4 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +7 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +35 -35
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +11 -10
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +10 -37
- data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +36 -2
- data/third_party/boringssl-with-bazel/src/crypto/hrss/hrss.c +219 -121
- data/third_party/boringssl-with-bazel/src/crypto/hrss/internal.h +9 -2
- data/third_party/boringssl-with-bazel/src/crypto/internal.h +62 -2
- data/third_party/boringssl-with-bazel/src/crypto/lhash/internal.h +253 -0
- data/third_party/boringssl-with-bazel/src/crypto/lhash/lhash.c +28 -23
- data/third_party/boringssl-with-bazel/src/crypto/mem.c +32 -9
- data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +7 -3
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_all.c +0 -9
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_info.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +0 -8
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pk8.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pkey.c +0 -4
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/internal.h +16 -7
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7.c +38 -4
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +151 -12
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/pool/internal.h +5 -1
- data/third_party/boringssl-with-bazel/src/crypto/pool/pool.c +59 -22
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/deterministic.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/fuchsia.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/windows.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/siphash/siphash.c +6 -6
- data/third_party/boringssl-with-bazel/src/crypto/x509/a_verify.c +15 -11
- data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +2 -18
- data/third_party/boringssl-with-bazel/src/crypto/x509/by_dir.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/by_file.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +233 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/name_print.c +246 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +15 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c +10 -5
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +0 -179
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c +4 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +6 -23
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +1 -5
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c +25 -22
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +11 -54
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +2 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +1 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +0 -16
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +9 -11
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_exten.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c +23 -21
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +12 -11
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +232 -11
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_cache.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_lib.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_map.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_node.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_tree.c +5 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c +24 -5
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +18 -8
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c +3 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +6 -7
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_crld.c +4 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +23 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ncons.c +112 -55
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pci.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +14 -13
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +76 -31
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +1504 -561
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +5 -12
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +10 -6
- data/third_party/boringssl-with-bazel/src/include/openssl/base64.h +8 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +3 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/bn.h +3 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +9 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +21 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/conf.h +8 -5
- data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +4 -12
- data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +3 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +27 -41
- data/third_party/boringssl-with-bazel/src/include/openssl/ec_key.h +12 -27
- data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +8 -10
- data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +35 -55
- data/third_party/boringssl-with-bazel/src/include/openssl/hkdf.h +4 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +26 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/hrss.h +14 -12
- data/third_party/boringssl-with-bazel/src/include/openssl/lhash.h +4 -205
- data/third_party/boringssl-with-bazel/src/include/openssl/mem.h +12 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/obj.h +5 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +0 -20
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +24 -18
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +6 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/pool.h +7 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +29 -28
- data/third_party/boringssl-with-bazel/src/include/openssl/span.h +37 -15
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +110 -26
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +31 -32
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +725 -189
- data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +16 -695
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +52 -16
- data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +9 -16
- data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +310 -359
- data/third_party/boringssl-with-bazel/src/ssl/{t1_lib.cc → extensions.cc} +110 -159
- data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +24 -13
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +145 -142
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +106 -99
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +90 -51
- data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +1 -2
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +11 -5
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +6 -51
- data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +121 -65
- data/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc +6 -12
- data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +4 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc +28 -23
- data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +14 -27
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +210 -212
- data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +30 -41
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +48 -34
- data/third_party/cares/cares/{ares.h → include/ares.h} +73 -1
- data/third_party/cares/cares/{ares_dns.h → include/ares_dns.h} +9 -0
- data/third_party/cares/cares/{ares_rules.h → include/ares_rules.h} +0 -0
- data/third_party/cares/cares/{ares_version.h → include/ares_version.h} +3 -3
- data/third_party/cares/cares/{ares__close_sockets.c → src/lib/ares__close_sockets.c} +2 -2
- data/third_party/cares/cares/{ares__get_hostent.c → src/lib/ares__get_hostent.c} +1 -2
- data/third_party/cares/cares/src/lib/ares__parse_into_addrinfo.c +260 -0
- data/third_party/cares/cares/{ares__read_line.c → src/lib/ares__read_line.c} +0 -0
- data/third_party/cares/cares/src/lib/ares__readaddrinfo.c +264 -0
- data/third_party/cares/cares/src/lib/ares__sortaddrinfo.c +499 -0
- data/third_party/cares/cares/{ares__timeval.c → src/lib/ares__timeval.c} +0 -0
- data/third_party/cares/cares/src/lib/ares_android.c +444 -0
- data/third_party/cares/cares/src/lib/ares_android.h +27 -0
- data/third_party/cares/cares/{ares_cancel.c → src/lib/ares_cancel.c} +0 -0
- data/third_party/cares/cares/{ares_create_query.c → src/lib/ares_create_query.c} +8 -17
- data/third_party/cares/cares/{ares_data.c → src/lib/ares_data.c} +18 -0
- data/third_party/cares/cares/{ares_data.h → src/lib/ares_data.h} +2 -0
- data/third_party/cares/cares/{ares_destroy.c → src/lib/ares_destroy.c} +0 -0
- data/third_party/cares/cares/{ares_expand_name.c → src/lib/ares_expand_name.c} +114 -23
- data/third_party/cares/cares/{ares_expand_string.c → src/lib/ares_expand_string.c} +2 -5
- data/third_party/cares/cares/{ares_fds.c → src/lib/ares_fds.c} +0 -0
- data/third_party/cares/cares/{ares_free_hostent.c → src/lib/ares_free_hostent.c} +6 -4
- data/third_party/cares/cares/{ares_free_string.c → src/lib/ares_free_string.c} +0 -0
- data/third_party/cares/cares/src/lib/ares_freeaddrinfo.c +59 -0
- data/third_party/cares/cares/src/lib/ares_getaddrinfo.c +772 -0
- data/third_party/cares/cares/{ares_getenv.c → src/lib/ares_getenv.c} +0 -2
- data/third_party/cares/cares/{ares_getenv.h → src/lib/ares_getenv.h} +0 -0
- data/third_party/cares/cares/{ares_gethostbyaddr.c → src/lib/ares_gethostbyaddr.c} +2 -9
- data/third_party/cares/cares/{ares_gethostbyname.c → src/lib/ares_gethostbyname.c} +25 -20
- data/third_party/cares/cares/{ares_getnameinfo.c → src/lib/ares_getnameinfo.c} +4 -10
- data/third_party/cares/cares/{ares_getsock.c → src/lib/ares_getsock.c} +0 -0
- data/third_party/cares/cares/{ares_inet_net_pton.h → src/lib/ares_inet_net_pton.h} +0 -0
- data/third_party/cares/cares/{ares_init.c → src/lib/ares_init.c} +79 -40
- data/third_party/cares/cares/{ares_iphlpapi.h → src/lib/ares_iphlpapi.h} +0 -0
- data/third_party/cares/cares/{ares_ipv6.h → src/lib/ares_ipv6.h} +7 -0
- data/third_party/cares/cares/{ares_library_init.c → src/lib/ares_library_init.c} +7 -2
- data/third_party/cares/cares/{ares_library_init.h → src/lib/ares_library_init.h} +1 -1
- data/third_party/cares/cares/{ares_llist.c → src/lib/ares_llist.c} +0 -0
- data/third_party/cares/cares/{ares_llist.h → src/lib/ares_llist.h} +0 -0
- data/third_party/cares/cares/{ares_mkquery.c → src/lib/ares_mkquery.c} +0 -0
- data/third_party/cares/cares/src/lib/ares_nameser.h +482 -0
- data/third_party/cares/cares/{ares_nowarn.c → src/lib/ares_nowarn.c} +0 -0
- data/third_party/cares/cares/{ares_nowarn.h → src/lib/ares_nowarn.h} +0 -0
- data/third_party/cares/cares/{ares_options.c → src/lib/ares_options.c} +0 -0
- data/third_party/cares/cares/src/lib/ares_parse_a_reply.c +209 -0
- data/third_party/cares/cares/src/lib/ares_parse_aaaa_reply.c +212 -0
- data/third_party/cares/cares/src/lib/ares_parse_caa_reply.c +199 -0
- data/third_party/cares/cares/{ares_parse_mx_reply.c → src/lib/ares_parse_mx_reply.c} +2 -8
- data/third_party/cares/cares/{ares_parse_naptr_reply.c → src/lib/ares_parse_naptr_reply.c} +2 -13
- data/third_party/cares/cares/{ares_parse_ns_reply.c → src/lib/ares_parse_ns_reply.c} +5 -11
- data/third_party/cares/cares/{ares_parse_ptr_reply.c → src/lib/ares_parse_ptr_reply.c} +53 -46
- data/third_party/cares/cares/src/lib/ares_parse_soa_reply.c +179 -0
- data/third_party/cares/cares/{ares_parse_srv_reply.c → src/lib/ares_parse_srv_reply.c} +2 -13
- data/third_party/cares/cares/{ares_parse_txt_reply.c → src/lib/ares_parse_txt_reply.c} +3 -9
- data/third_party/cares/cares/{ares_platform.c → src/lib/ares_platform.c} +0 -0
- data/third_party/cares/cares/{ares_platform.h → src/lib/ares_platform.h} +0 -0
- data/third_party/cares/cares/{ares_private.h → src/lib/ares_private.h} +52 -11
- data/third_party/cares/cares/{ares_process.c → src/lib/ares_process.c} +127 -52
- data/third_party/cares/cares/{ares_query.c → src/lib/ares_query.c} +3 -9
- data/third_party/cares/cares/{ares_search.c → src/lib/ares_search.c} +5 -7
- data/third_party/cares/cares/{ares_send.c → src/lib/ares_send.c} +2 -8
- data/third_party/cares/cares/{ares_setup.h → src/lib/ares_setup.h} +4 -1
- data/third_party/cares/cares/{ares_strcasecmp.c → src/lib/ares_strcasecmp.c} +0 -0
- data/third_party/cares/cares/{ares_strcasecmp.h → src/lib/ares_strcasecmp.h} +0 -0
- data/third_party/cares/cares/{ares_strdup.c → src/lib/ares_strdup.c} +0 -0
- data/third_party/cares/cares/{ares_strdup.h → src/lib/ares_strdup.h} +0 -0
- data/third_party/cares/cares/{ares_strerror.c → src/lib/ares_strerror.c} +0 -0
- data/third_party/cares/cares/{ares_strsplit.c → src/lib/ares_strsplit.c} +4 -0
- data/third_party/cares/cares/{ares_strsplit.h → src/lib/ares_strsplit.h} +0 -0
- data/third_party/cares/cares/{ares_timeout.c → src/lib/ares_timeout.c} +0 -0
- data/third_party/cares/cares/{ares_version.c → src/lib/ares_version.c} +0 -0
- data/third_party/cares/cares/{ares_writev.c → src/lib/ares_writev.c} +0 -0
- data/third_party/cares/cares/src/lib/ares_writev.h +36 -0
- data/third_party/cares/cares/{bitncmp.c → src/lib/bitncmp.c} +0 -0
- data/third_party/cares/cares/{bitncmp.h → src/lib/bitncmp.h} +0 -0
- data/third_party/cares/cares/src/lib/config-dos.h +115 -0
- data/third_party/cares/cares/{config-win32.h → src/lib/config-win32.h} +0 -0
- data/third_party/cares/cares/{inet_net_pton.c → src/lib/inet_net_pton.c} +2 -8
- data/third_party/cares/cares/{inet_ntop.c → src/lib/inet_ntop.c} +2 -8
- data/third_party/cares/cares/{setup_once.h → src/lib/setup_once.h} +0 -0
- data/third_party/cares/cares/{windows_port.c → src/lib/windows_port.c} +0 -0
- data/third_party/re2/re2/compile.cc +91 -109
- data/third_party/re2/re2/dfa.cc +27 -39
- data/third_party/re2/re2/filtered_re2.cc +18 -2
- data/third_party/re2/re2/filtered_re2.h +10 -5
- data/third_party/re2/re2/nfa.cc +1 -1
- data/third_party/re2/re2/parse.cc +42 -23
- data/third_party/re2/re2/perl_groups.cc +34 -34
- data/third_party/re2/re2/prefilter.cc +3 -2
- data/third_party/re2/re2/prog.cc +182 -4
- data/third_party/re2/re2/prog.h +28 -9
- data/third_party/re2/re2/re2.cc +87 -118
- data/third_party/re2/re2/re2.h +156 -141
- data/third_party/re2/re2/regexp.cc +12 -5
- data/third_party/re2/re2/regexp.h +8 -2
- data/third_party/re2/re2/set.cc +31 -9
- data/third_party/re2/re2/set.h +9 -4
- data/third_party/re2/re2/simplify.cc +11 -3
- data/third_party/re2/re2/tostring.cc +1 -1
- data/third_party/re2/re2/walker-inl.h +1 -1
- data/third_party/re2/util/mutex.h +2 -2
- data/third_party/re2/util/pcre.h +3 -3
- data/third_party/upb/third_party/utf8_range/naive.c +92 -0
- data/third_party/upb/third_party/utf8_range/range2-neon.c +157 -0
- data/third_party/upb/third_party/utf8_range/range2-sse.c +170 -0
- data/third_party/upb/third_party/utf8_range/utf8_range.h +9 -0
- data/third_party/upb/upb/decode.c +774 -351
- data/third_party/upb/upb/decode.h +66 -12
- data/third_party/upb/upb/decode_fast.c +596 -581
- data/third_party/upb/upb/decode_fast.h +40 -13
- data/third_party/upb/upb/decode_internal.h +211 -0
- data/third_party/upb/upb/def.c +2151 -1068
- data/third_party/upb/upb/def.h +352 -258
- data/third_party/upb/upb/def.hpp +160 -161
- data/third_party/upb/upb/encode.c +291 -165
- data/third_party/upb/upb/encode.h +38 -13
- 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 +274 -102
- data/third_party/upb/upb/msg.h +83 -582
- data/third_party/upb/upb/msg_internal.h +831 -0
- data/third_party/upb/upb/port_def.inc +93 -24
- data/third_party/upb/upb/port_undef.inc +39 -1
- data/third_party/upb/upb/reflection.c +312 -240
- data/third_party/upb/upb/reflection.h +119 -67
- data/third_party/upb/upb/reflection.hpp +37 -0
- data/third_party/upb/upb/table.c +406 -197
- data/third_party/upb/upb/table_internal.h +385 -0
- data/third_party/upb/upb/text_encode.c +141 -90
- data/third_party/upb/upb/text_encode.h +31 -5
- data/third_party/upb/upb/upb.c +164 -66
- data/third_party/upb/upb/upb.h +182 -146
- data/third_party/upb/upb/upb.hpp +50 -23
- data/third_party/upb/upb/upb_internal.h +68 -0
- data/third_party/xxhash/xxhash.h +607 -352
- 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 +559 -260
- data/include/grpc/event_engine/slice_allocator.h +0 -66
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +0 -44
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +0 -84
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +0 -179
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_libuv.cc +0 -38
- data/src/core/ext/filters/client_channel/resolver_registry.cc +0 -197
- data/src/core/ext/filters/client_channel/resolver_registry.h +0 -89
- data/src/core/ext/filters/client_channel/service_config_call_data.h +0 -126
- data/src/core/ext/filters/client_idle/client_idle_filter.cc +0 -441
- data/src/core/ext/filters/max_age/max_age_filter.cc +0 -562
- data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +0 -211
- data/src/core/ext/filters/workarounds/workaround_utils.cc +0 -53
- data/src/core/ext/filters/workarounds/workaround_utils.h +0 -39
- data/src/core/ext/transport/chttp2/client/authority.cc +0 -42
- data/src/core/ext/transport/chttp2/client/authority.h +0 -36
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +0 -125
- data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +0 -91
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +0 -213
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +0 -54
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +0 -77
- data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +0 -129
- data/src/core/ext/transport/chttp2/transport/chttp2_plugin.cc +0 -37
- data/src/core/ext/transport/chttp2/transport/chttp2_slice_allocator.cc +0 -66
- data/src/core/ext/transport/chttp2/transport/chttp2_slice_allocator.h +0 -74
- data/src/core/ext/transport/chttp2/transport/hpack_table.cc +0 -243
- data/src/core/ext/transport/chttp2/transport/hpack_table.h +0 -148
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +0 -66
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +0 -58
- data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.c +0 -27
- data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.h +0 -56
- data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.c +0 -27
- data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.h +0 -56
- data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.c +0 -27
- data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.h +0 -56
- data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.c +0 -27
- data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.h +0 -56
- data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.c +0 -27
- data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.h +0 -56
- data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c +0 -58
- data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h +0 -124
- data/src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.c +0 -33
- data/src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.h +0 -77
- data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.c +0 -72
- data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.h +0 -35
- data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c +0 -73
- data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.h +0 -35
- data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.c +0 -72
- data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.h +0 -35
- data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.c +0 -80
- data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.h +0 -35
- data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.c +0 -74
- data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.h +0 -35
- data/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.c +0 -44
- data/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.h +0 -35
- data/src/core/lib/avl/avl.cc +0 -306
- data/src/core/lib/compression/algorithm_metadata.h +0 -61
- data/src/core/lib/compression/compression_args.cc +0 -135
- data/src/core/lib/compression/compression_args.h +0 -56
- data/src/core/lib/compression/stream_compression.cc +0 -80
- data/src/core/lib/compression/stream_compression.h +0 -116
- data/src/core/lib/compression/stream_compression_gzip.cc +0 -230
- data/src/core/lib/compression/stream_compression_gzip.h +0 -28
- data/src/core/lib/compression/stream_compression_identity.cc +0 -90
- data/src/core/lib/compression/stream_compression_identity.h +0 -29
- data/src/core/lib/gpr/tls_gcc.h +0 -52
- data/src/core/lib/gpr/tls_msvc.h +0 -54
- data/src/core/lib/gpr/tls_pthread.cc +0 -30
- data/src/core/lib/gpr/tls_pthread.h +0 -56
- data/src/core/lib/gpr/tls_stdcpp.h +0 -48
- data/src/core/lib/gprpp/atomic.h +0 -104
- data/src/core/lib/iomgr/endpoint_pair_uv.cc +0 -40
- data/src/core/lib/iomgr/ev_epollex_linux.cc +0 -1661
- data/src/core/lib/iomgr/ev_epollex_linux.h +0 -30
- data/src/core/lib/iomgr/iomgr_custom.cc +0 -79
- data/src/core/lib/iomgr/iomgr_custom.h +0 -49
- data/src/core/lib/iomgr/iomgr_uv.cc +0 -43
- data/src/core/lib/iomgr/is_epollexclusive_available.cc +0 -119
- data/src/core/lib/iomgr/pollset_custom.cc +0 -106
- data/src/core/lib/iomgr/pollset_custom.h +0 -37
- data/src/core/lib/iomgr/pollset_set_custom.cc +0 -48
- data/src/core/lib/iomgr/pollset_set_custom.h +0 -26
- data/src/core/lib/iomgr/pollset_uv.cc +0 -95
- data/src/core/lib/iomgr/pollset_uv.h +0 -36
- data/src/core/lib/iomgr/resolve_address_custom.cc +0 -169
- data/src/core/lib/iomgr/resolve_address_custom.h +0 -45
- data/src/core/lib/iomgr/resource_quota.cc +0 -1019
- data/src/core/lib/iomgr/resource_quota.h +0 -177
- data/src/core/lib/iomgr/sockaddr_custom.h +0 -54
- data/src/core/lib/iomgr/sys_epoll_wrapper.h +0 -30
- data/src/core/lib/iomgr/tcp_client_custom.cc +0 -160
- data/src/core/lib/iomgr/tcp_custom.cc +0 -389
- data/src/core/lib/iomgr/tcp_custom.h +0 -85
- data/src/core/lib/iomgr/tcp_server_custom.cc +0 -484
- data/src/core/lib/iomgr/tcp_uv.cc +0 -421
- data/src/core/lib/iomgr/timer_custom.cc +0 -96
- data/src/core/lib/iomgr/timer_custom.h +0 -43
- data/src/core/lib/iomgr/timer_uv.cc +0 -66
- data/src/core/lib/iomgr/udp_server.cc +0 -748
- data/src/core/lib/iomgr/udp_server.h +0 -103
- data/src/core/lib/security/credentials/credentials_metadata.cc +0 -62
- data/src/core/lib/slice/slice_intern.cc +0 -373
- data/src/core/lib/slice/slice_utils.h +0 -200
- data/src/core/lib/surface/init_secure.cc +0 -81
- data/src/core/lib/transport/metadata.cc +0 -693
- data/src/core/lib/transport/metadata.h +0 -446
- data/src/core/lib/transport/metadata_batch.cc +0 -430
- data/src/core/lib/transport/static_metadata.cc +0 -1249
- data/src/core/lib/transport/static_metadata.h +0 -604
- data/src/core/lib/transport/status_metadata.cc +0 -62
- data/src/core/lib/transport/status_metadata.h +0 -48
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_enum.c +0 -93
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_int.h +0 -217
- data/third_party/cares/cares/ares_getopt.c +0 -122
- data/third_party/cares/cares/ares_getopt.h +0 -53
- data/third_party/cares/cares/ares_parse_a_reply.c +0 -264
- data/third_party/cares/cares/ares_parse_aaaa_reply.c +0 -264
- data/third_party/cares/cares/ares_parse_soa_reply.c +0 -133
- data/third_party/upb/third_party/wyhash/wyhash.h +0 -145
- data/third_party/upb/upb/decode.int.h +0 -163
- data/third_party/upb/upb/table.int.h +0 -475
- data/third_party/upb/upb/upb.int.h +0 -29
@@ -26,19 +26,18 @@
|
|
26
26
|
|
27
27
|
#include <set>
|
28
28
|
|
29
|
+
#include "absl/container/inlined_vector.h"
|
29
30
|
#include "absl/strings/numbers.h"
|
30
31
|
#include "absl/strings/str_cat.h"
|
31
32
|
#include "absl/strings/str_join.h"
|
32
33
|
#include "absl/strings/string_view.h"
|
34
|
+
#include "absl/types/optional.h"
|
33
35
|
|
34
36
|
#include <grpc/support/alloc.h>
|
35
37
|
#include <grpc/support/log.h>
|
36
38
|
#include <grpc/support/string_util.h>
|
37
39
|
#include <grpc/support/sync.h>
|
38
40
|
|
39
|
-
#include "absl/container/inlined_vector.h"
|
40
|
-
#include "absl/types/optional.h"
|
41
|
-
|
42
41
|
#include "src/core/ext/filters/client_channel/backend_metric.h"
|
43
42
|
#include "src/core/ext/filters/client_channel/backup_poller.h"
|
44
43
|
#include "src/core/ext/filters/client_channel/config_selector.h"
|
@@ -49,15 +48,13 @@
|
|
49
48
|
#include "src/core/ext/filters/client_channel/lb_policy_registry.h"
|
50
49
|
#include "src/core/ext/filters/client_channel/local_subchannel_pool.h"
|
51
50
|
#include "src/core/ext/filters/client_channel/proxy_mapper_registry.h"
|
52
|
-
#include "src/core/ext/filters/client_channel/resolver_registry.h"
|
53
51
|
#include "src/core/ext/filters/client_channel/resolver_result_parsing.h"
|
54
52
|
#include "src/core/ext/filters/client_channel/retry_filter.h"
|
55
|
-
#include "src/core/ext/filters/client_channel/service_config.h"
|
56
|
-
#include "src/core/ext/filters/client_channel/service_config_call_data.h"
|
57
53
|
#include "src/core/ext/filters/client_channel/subchannel.h"
|
58
54
|
#include "src/core/ext/filters/deadline/deadline_filter.h"
|
59
55
|
#include "src/core/lib/backoff/backoff.h"
|
60
56
|
#include "src/core/lib/channel/channel_args.h"
|
57
|
+
#include "src/core/lib/channel/channel_stack.h"
|
61
58
|
#include "src/core/lib/channel/connected_channel.h"
|
62
59
|
#include "src/core/lib/channel/status_util.h"
|
63
60
|
#include "src/core/lib/gpr/string.h"
|
@@ -66,28 +63,32 @@
|
|
66
63
|
#include "src/core/lib/iomgr/polling_entity.h"
|
67
64
|
#include "src/core/lib/iomgr/work_serializer.h"
|
68
65
|
#include "src/core/lib/profiling/timers.h"
|
66
|
+
#include "src/core/lib/resolver/resolver_registry.h"
|
67
|
+
#include "src/core/lib/service_config/service_config_call_data.h"
|
68
|
+
#include "src/core/lib/service_config/service_config_impl.h"
|
69
69
|
#include "src/core/lib/slice/slice_internal.h"
|
70
70
|
#include "src/core/lib/slice/slice_string_helpers.h"
|
71
71
|
#include "src/core/lib/surface/channel.h"
|
72
72
|
#include "src/core/lib/transport/connectivity_state.h"
|
73
73
|
#include "src/core/lib/transport/error_utils.h"
|
74
|
-
#include "src/core/lib/transport/metadata.h"
|
75
74
|
#include "src/core/lib/transport/metadata_batch.h"
|
76
|
-
#include "src/core/lib/transport/static_metadata.h"
|
77
|
-
#include "src/core/lib/transport/status_metadata.h"
|
78
75
|
|
79
76
|
//
|
80
77
|
// Client channel filter
|
81
78
|
//
|
82
79
|
|
80
|
+
#define GRPC_ARG_HEALTH_CHECK_SERVICE_NAME \
|
81
|
+
"grpc.internal.health_check_service_name"
|
82
|
+
|
83
83
|
namespace grpc_core {
|
84
84
|
|
85
85
|
using internal::ClientChannelGlobalParsedConfig;
|
86
86
|
using internal::ClientChannelMethodParsedConfig;
|
87
87
|
using internal::ClientChannelServiceConfigParser;
|
88
88
|
|
89
|
+
TraceFlag grpc_client_channel_trace(false, "client_channel");
|
89
90
|
TraceFlag grpc_client_channel_call_trace(false, "client_channel_call");
|
90
|
-
TraceFlag
|
91
|
+
TraceFlag grpc_client_channel_lb_call_trace(false, "client_channel_lb_call");
|
91
92
|
|
92
93
|
//
|
93
94
|
// ClientChannel::CallData definition
|
@@ -176,8 +177,6 @@ class ClientChannel::CallData {
|
|
176
177
|
|
177
178
|
static void RecvTrailingMetadataReadyForConfigSelectorCommitCallback(
|
178
179
|
void* arg, grpc_error_handle error);
|
179
|
-
void InjectRecvTrailingMetadataReadyForConfigSelectorCommitCallback(
|
180
|
-
grpc_transport_stream_op_batch* batch);
|
181
180
|
|
182
181
|
void CreateDynamicCall(grpc_call_element* elem);
|
183
182
|
|
@@ -191,7 +190,7 @@ class ClientChannel::CallData {
|
|
191
190
|
|
192
191
|
grpc_slice path_; // Request path.
|
193
192
|
gpr_cycle_counter call_start_time_;
|
194
|
-
|
193
|
+
Timestamp deadline_;
|
195
194
|
Arena* arena_;
|
196
195
|
grpc_call_stack* owning_call_;
|
197
196
|
CallCombiner* call_combiner_;
|
@@ -234,6 +233,7 @@ class ClientChannel::CallData {
|
|
234
233
|
|
235
234
|
const grpc_channel_filter ClientChannel::kFilterVtable = {
|
236
235
|
ClientChannel::CallData::StartTransportStreamOpBatch,
|
236
|
+
nullptr,
|
237
237
|
ClientChannel::StartTransportOp,
|
238
238
|
sizeof(ClientChannel::CallData),
|
239
239
|
ClientChannel::CallData::Init,
|
@@ -255,7 +255,7 @@ namespace {
|
|
255
255
|
// Channel arg pointer vtable for GRPC_ARG_CLIENT_CHANNEL.
|
256
256
|
void* ClientChannelArgCopy(void* p) { return p; }
|
257
257
|
void ClientChannelArgDestroy(void* /*p*/) {}
|
258
|
-
int ClientChannelArgCmp(void* p, void* q) { return
|
258
|
+
int ClientChannelArgCmp(void* p, void* q) { return QsortCompare(p, q); }
|
259
259
|
const grpc_arg_pointer_vtable kClientChannelArgPointerVtable = {
|
260
260
|
ClientChannelArgCopy, ClientChannelArgDestroy, ClientChannelArgCmp};
|
261
261
|
|
@@ -269,7 +269,7 @@ void ServiceConfigObjArgDestroy(void* p) {
|
|
269
269
|
auto* service_config = static_cast<ServiceConfig*>(p);
|
270
270
|
service_config->Unref();
|
271
271
|
}
|
272
|
-
int ServiceConfigObjArgCmp(void* p, void* q) { return
|
272
|
+
int ServiceConfigObjArgCmp(void* p, void* q) { return QsortCompare(p, q); }
|
273
273
|
const grpc_arg_pointer_vtable kServiceConfigObjArgPointerVtable = {
|
274
274
|
ServiceConfigObjArgCopy, ServiceConfigObjArgDestroy,
|
275
275
|
ServiceConfigObjArgCmp};
|
@@ -347,13 +347,14 @@ class DynamicTerminationFilter::CallData {
|
|
347
347
|
calld->call_context_, calld->path_,
|
348
348
|
/*start_time=*/0, calld->deadline_,
|
349
349
|
calld->arena_, calld->call_combiner_};
|
350
|
-
auto* service_config_call_data =
|
351
|
-
|
350
|
+
auto* service_config_call_data =
|
351
|
+
static_cast<ClientChannelServiceConfigCallData*>(
|
352
|
+
calld->call_context_[GRPC_CONTEXT_SERVICE_CONFIG_CALL_DATA].value);
|
352
353
|
calld->lb_call_ = client_channel->CreateLoadBalancedCall(
|
353
354
|
args, pollent, nullptr,
|
354
355
|
service_config_call_data->call_dispatch_controller(),
|
355
356
|
/*is_transparent_retry=*/false);
|
356
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
357
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
357
358
|
gpr_log(GPR_INFO,
|
358
359
|
"chand=%p dynamic_termination_calld=%p: create lb_call=%p", chand,
|
359
360
|
client_channel, calld->lb_call_.get());
|
@@ -372,7 +373,7 @@ class DynamicTerminationFilter::CallData {
|
|
372
373
|
~CallData() { grpc_slice_unref_internal(path_); }
|
373
374
|
|
374
375
|
grpc_slice path_; // Request path.
|
375
|
-
|
376
|
+
Timestamp deadline_;
|
376
377
|
Arena* arena_;
|
377
378
|
grpc_call_stack* owning_call_;
|
378
379
|
CallCombiner* call_combiner_;
|
@@ -383,6 +384,7 @@ class DynamicTerminationFilter::CallData {
|
|
383
384
|
|
384
385
|
const grpc_channel_filter DynamicTerminationFilter::kFilterVtable = {
|
385
386
|
DynamicTerminationFilter::CallData::StartTransportStreamOpBatch,
|
387
|
+
nullptr,
|
386
388
|
DynamicTerminationFilter::StartTransportOp,
|
387
389
|
sizeof(DynamicTerminationFilter::CallData),
|
388
390
|
DynamicTerminationFilter::CallData::Init,
|
@@ -408,22 +410,17 @@ class ClientChannel::ResolverResultHandler : public Resolver::ResultHandler {
|
|
408
410
|
}
|
409
411
|
|
410
412
|
~ResolverResultHandler() override {
|
411
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
413
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
412
414
|
gpr_log(GPR_INFO, "chand=%p: resolver shutdown complete", chand_);
|
413
415
|
}
|
414
416
|
GRPC_CHANNEL_STACK_UNREF(chand_->owning_stack_, "ResolverResultHandler");
|
415
417
|
}
|
416
418
|
|
417
|
-
void
|
418
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
|
419
|
+
void ReportResult(Resolver::Result result) override
|
420
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
419
421
|
chand_->OnResolverResultChangedLocked(std::move(result));
|
420
422
|
}
|
421
423
|
|
422
|
-
void ReturnError(grpc_error_handle error) override
|
423
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
|
424
|
-
chand_->OnResolverErrorLocked(error);
|
425
|
-
}
|
426
|
-
|
427
424
|
private:
|
428
425
|
ClientChannel* chand_;
|
429
426
|
};
|
@@ -444,65 +441,64 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
|
|
444
441
|
public:
|
445
442
|
SubchannelWrapper(ClientChannel* chand, RefCountedPtr<Subchannel> subchannel,
|
446
443
|
absl::optional<std::string> health_check_service_name)
|
447
|
-
: SubchannelInterface(
|
448
|
-
|
449
|
-
|
450
|
-
: nullptr),
|
444
|
+
: SubchannelInterface(GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)
|
445
|
+
? "SubchannelWrapper"
|
446
|
+
: nullptr),
|
451
447
|
chand_(chand),
|
452
448
|
subchannel_(std::move(subchannel)),
|
453
449
|
health_check_service_name_(std::move(health_check_service_name)) {
|
454
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
450
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
455
451
|
gpr_log(GPR_INFO,
|
456
452
|
"chand=%p: creating subchannel wrapper %p for subchannel %p",
|
457
453
|
chand, this, subchannel_.get());
|
458
454
|
}
|
459
455
|
GRPC_CHANNEL_STACK_REF(chand_->owning_stack_, "SubchannelWrapper");
|
460
|
-
|
461
|
-
|
462
|
-
|
463
|
-
|
464
|
-
chand_->
|
465
|
-
|
466
|
-
|
456
|
+
if (chand_->channelz_node_ != nullptr) {
|
457
|
+
auto* subchannel_node = subchannel_->channelz_node();
|
458
|
+
if (subchannel_node != nullptr) {
|
459
|
+
auto it = chand_->subchannel_refcount_map_.find(subchannel_.get());
|
460
|
+
if (it == chand_->subchannel_refcount_map_.end()) {
|
461
|
+
chand_->channelz_node_->AddChildSubchannel(subchannel_node->uuid());
|
462
|
+
it = chand_->subchannel_refcount_map_.emplace(subchannel_.get(), 0)
|
463
|
+
.first;
|
464
|
+
}
|
465
|
+
++it->second;
|
467
466
|
}
|
468
|
-
++it->second;
|
469
467
|
}
|
470
468
|
chand_->subchannel_wrappers_.insert(this);
|
471
469
|
}
|
472
470
|
|
473
471
|
~SubchannelWrapper() override {
|
474
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
472
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
475
473
|
gpr_log(GPR_INFO,
|
476
474
|
"chand=%p: destroying subchannel wrapper %p for subchannel %p",
|
477
475
|
chand_, this, subchannel_.get());
|
478
476
|
}
|
479
477
|
chand_->subchannel_wrappers_.erase(this);
|
480
|
-
|
481
|
-
|
482
|
-
|
483
|
-
|
484
|
-
|
485
|
-
|
486
|
-
|
487
|
-
|
478
|
+
if (chand_->channelz_node_ != nullptr) {
|
479
|
+
auto* subchannel_node = subchannel_->channelz_node();
|
480
|
+
if (subchannel_node != nullptr) {
|
481
|
+
auto it = chand_->subchannel_refcount_map_.find(subchannel_.get());
|
482
|
+
GPR_ASSERT(it != chand_->subchannel_refcount_map_.end());
|
483
|
+
--it->second;
|
484
|
+
if (it->second == 0) {
|
485
|
+
chand_->channelz_node_->RemoveChildSubchannel(
|
486
|
+
subchannel_node->uuid());
|
487
|
+
chand_->subchannel_refcount_map_.erase(it);
|
488
|
+
}
|
488
489
|
}
|
489
490
|
}
|
490
491
|
GRPC_CHANNEL_STACK_UNREF(chand_->owning_stack_, "SubchannelWrapper");
|
491
492
|
}
|
492
493
|
|
493
|
-
grpc_connectivity_state CheckConnectivityState() override
|
494
|
-
|
495
|
-
RefCountedPtr<ConnectedSubchannel> connected_subchannel;
|
496
|
-
grpc_connectivity_state connectivity_state =
|
497
|
-
subchannel_->CheckConnectivityState(health_check_service_name_,
|
498
|
-
&connected_subchannel);
|
499
|
-
MaybeUpdateConnectedSubchannel(std::move(connected_subchannel));
|
500
|
-
return connectivity_state;
|
494
|
+
grpc_connectivity_state CheckConnectivityState() override {
|
495
|
+
return subchannel_->CheckConnectivityState(health_check_service_name_);
|
501
496
|
}
|
502
497
|
|
503
498
|
void WatchConnectivityState(
|
504
499
|
grpc_connectivity_state initial_state,
|
505
|
-
std::unique_ptr<ConnectivityStateWatcherInterface> watcher) override
|
500
|
+
std::unique_ptr<ConnectivityStateWatcherInterface> watcher) override
|
501
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
506
502
|
auto& watcher_wrapper = watcher_map_[watcher.get()];
|
507
503
|
GPR_ASSERT(watcher_wrapper == nullptr);
|
508
504
|
watcher_wrapper = new WatcherWrapper(std::move(watcher),
|
@@ -514,8 +510,8 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
|
|
514
510
|
watcher_wrapper));
|
515
511
|
}
|
516
512
|
|
517
|
-
void CancelConnectivityStateWatch(
|
518
|
-
|
513
|
+
void CancelConnectivityStateWatch(ConnectivityStateWatcherInterface* watcher)
|
514
|
+
override ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
519
515
|
auto it = watcher_map_.find(watcher);
|
520
516
|
GPR_ASSERT(it != watcher_map_.end());
|
521
517
|
subchannel_->CancelConnectivityStateWatch(health_check_service_name_,
|
@@ -523,6 +519,10 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
|
|
523
519
|
watcher_map_.erase(it);
|
524
520
|
}
|
525
521
|
|
522
|
+
RefCountedPtr<ConnectedSubchannel> connected_subchannel() const {
|
523
|
+
return subchannel_->connected_subchannel();
|
524
|
+
}
|
525
|
+
|
526
526
|
void AttemptToConnect() override { subchannel_->AttemptToConnect(); }
|
527
527
|
|
528
528
|
void ResetBackoff() override { subchannel_->ResetBackoff(); }
|
@@ -535,57 +535,6 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
|
|
535
535
|
subchannel_->ThrottleKeepaliveTime(new_keepalive_time);
|
536
536
|
}
|
537
537
|
|
538
|
-
void UpdateHealthCheckServiceName(
|
539
|
-
absl::optional<std::string> health_check_service_name) {
|
540
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
|
541
|
-
gpr_log(GPR_INFO,
|
542
|
-
"chand=%p: subchannel wrapper %p: updating health check service "
|
543
|
-
"name from \"%s\" to \"%s\"",
|
544
|
-
chand_, this, health_check_service_name_->c_str(),
|
545
|
-
health_check_service_name->c_str());
|
546
|
-
}
|
547
|
-
for (auto& p : watcher_map_) {
|
548
|
-
WatcherWrapper*& watcher_wrapper = p.second;
|
549
|
-
// Cancel the current watcher and create a new one using the new
|
550
|
-
// health check service name.
|
551
|
-
// TODO(roth): If there is not already an existing health watch
|
552
|
-
// call for the new name, then the watcher will initially report
|
553
|
-
// state CONNECTING. If the LB policy is currently reporting
|
554
|
-
// state READY, this may cause it to switch to CONNECTING before
|
555
|
-
// switching back to READY. This could cause a small delay for
|
556
|
-
// RPCs being started on the channel. If/when this becomes a
|
557
|
-
// problem, we may be able to handle it by waiting for the new
|
558
|
-
// watcher to report READY before we use it to replace the old one.
|
559
|
-
WatcherWrapper* replacement = watcher_wrapper->MakeReplacement();
|
560
|
-
subchannel_->CancelConnectivityStateWatch(health_check_service_name_,
|
561
|
-
watcher_wrapper);
|
562
|
-
watcher_wrapper = replacement;
|
563
|
-
subchannel_->WatchConnectivityState(
|
564
|
-
replacement->last_seen_state(), health_check_service_name,
|
565
|
-
RefCountedPtr<Subchannel::ConnectivityStateWatcherInterface>(
|
566
|
-
replacement));
|
567
|
-
}
|
568
|
-
// Save the new health check service name.
|
569
|
-
health_check_service_name_ = std::move(health_check_service_name);
|
570
|
-
}
|
571
|
-
|
572
|
-
// Caller must be holding the control-plane work_serializer.
|
573
|
-
ConnectedSubchannel* connected_subchannel() const
|
574
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::work_serializer_) {
|
575
|
-
return connected_subchannel_.get();
|
576
|
-
}
|
577
|
-
|
578
|
-
// Caller must be holding the data-plane mutex.
|
579
|
-
ConnectedSubchannel* connected_subchannel_in_data_plane() const
|
580
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::data_plane_mu_) {
|
581
|
-
return connected_subchannel_in_data_plane_.get();
|
582
|
-
}
|
583
|
-
void set_connected_subchannel_in_data_plane(
|
584
|
-
RefCountedPtr<ConnectedSubchannel> connected_subchannel)
|
585
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::data_plane_mu_) {
|
586
|
-
connected_subchannel_in_data_plane_ = std::move(connected_subchannel);
|
587
|
-
}
|
588
|
-
|
589
538
|
private:
|
590
539
|
// Subchannel and SubchannelInterface have different interfaces for
|
591
540
|
// their respective ConnectivityStateWatcherInterface classes.
|
@@ -615,15 +564,15 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
|
|
615
564
|
~WatcherWrapper() override {
|
616
565
|
auto* parent = parent_.release(); // ref owned by lambda
|
617
566
|
parent->chand_->work_serializer_->Run(
|
618
|
-
[parent]()
|
619
|
-
|
620
|
-
|
621
|
-
|
567
|
+
[parent]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(
|
568
|
+
*parent_->chand_->work_serializer_) {
|
569
|
+
parent->Unref(DEBUG_LOCATION, "WatcherWrapper");
|
570
|
+
},
|
622
571
|
DEBUG_LOCATION);
|
623
572
|
}
|
624
573
|
|
625
574
|
void OnConnectivityStateChange() override {
|
626
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
575
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
627
576
|
gpr_log(GPR_INFO,
|
628
577
|
"chand=%p: connectivity change for subchannel wrapper %p "
|
629
578
|
"subchannel %p; hopping into work_serializer",
|
@@ -631,11 +580,11 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
|
|
631
580
|
}
|
632
581
|
Ref().release(); // ref owned by lambda
|
633
582
|
parent_->chand_->work_serializer_->Run(
|
634
|
-
[this]()
|
635
|
-
|
636
|
-
|
637
|
-
|
638
|
-
|
583
|
+
[this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(
|
584
|
+
*parent_->chand_->work_serializer_) {
|
585
|
+
ApplyUpdateInControlPlaneWorkSerializer();
|
586
|
+
Unref();
|
587
|
+
},
|
639
588
|
DEBUG_LOCATION);
|
640
589
|
}
|
641
590
|
|
@@ -657,8 +606,8 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
|
|
657
606
|
|
658
607
|
private:
|
659
608
|
void ApplyUpdateInControlPlaneWorkSerializer()
|
660
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(parent_->chand_->work_serializer_) {
|
661
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
609
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(*parent_->chand_->work_serializer_) {
|
610
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
662
611
|
gpr_log(GPR_INFO,
|
663
612
|
"chand=%p: processing connectivity change in work serializer "
|
664
613
|
"for subchannel wrapper %p subchannel %p "
|
@@ -675,7 +624,7 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
|
|
675
624
|
&new_keepalive_time)) {
|
676
625
|
if (new_keepalive_time > parent_->chand_->keepalive_time_) {
|
677
626
|
parent_->chand_->keepalive_time_ = new_keepalive_time;
|
678
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
627
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
679
628
|
gpr_log(GPR_INFO, "chand=%p: throttling keepalive time to %d",
|
680
629
|
parent_->chand_, parent_->chand_->keepalive_time_);
|
681
630
|
}
|
@@ -697,8 +646,6 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
|
|
697
646
|
// since this callback was scheduled.
|
698
647
|
if (watcher_ != nullptr) {
|
699
648
|
last_seen_state_ = state_change.state;
|
700
|
-
parent_->MaybeUpdateConnectedSubchannel(
|
701
|
-
std::move(state_change.connected_subchannel));
|
702
649
|
watcher_->OnConnectivityStateChange(state_change.state);
|
703
650
|
}
|
704
651
|
}
|
@@ -710,28 +657,6 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
|
|
710
657
|
WatcherWrapper* replacement_ = nullptr;
|
711
658
|
};
|
712
659
|
|
713
|
-
void MaybeUpdateConnectedSubchannel(
|
714
|
-
RefCountedPtr<ConnectedSubchannel> connected_subchannel)
|
715
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::work_serializer_) {
|
716
|
-
// Update the connected subchannel only if the channel is not shutting
|
717
|
-
// down. This is because once the channel is shutting down, we
|
718
|
-
// ignore picker updates from the LB policy, which means that
|
719
|
-
// UpdateStateAndPickerLocked() will never process the entries
|
720
|
-
// in chand_->pending_subchannel_updates_. So we don't want to add
|
721
|
-
// entries there that will never be processed, since that would
|
722
|
-
// leave dangling refs to the channel and prevent its destruction.
|
723
|
-
grpc_error_handle disconnect_error = chand_->disconnect_error();
|
724
|
-
if (disconnect_error != GRPC_ERROR_NONE) return;
|
725
|
-
// Not shutting down, so do the update.
|
726
|
-
if (connected_subchannel_ != connected_subchannel) {
|
727
|
-
connected_subchannel_ = std::move(connected_subchannel);
|
728
|
-
// Record the new connected subchannel so that it can be updated
|
729
|
-
// in the data plane mutex the next time the picker is updated.
|
730
|
-
chand_->pending_subchannel_updates_[Ref(
|
731
|
-
DEBUG_LOCATION, "ConnectedSubchannelUpdate")] = connected_subchannel_;
|
732
|
-
}
|
733
|
-
}
|
734
|
-
|
735
660
|
ClientChannel* chand_;
|
736
661
|
RefCountedPtr<Subchannel> subchannel_;
|
737
662
|
absl::optional<std::string> health_check_service_name_;
|
@@ -740,13 +665,8 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
|
|
740
665
|
// subchannel. This is needed so that when the LB policy calls
|
741
666
|
// CancelConnectivityStateWatch() with its watcher, we know the
|
742
667
|
// corresponding WrapperWatcher to cancel on the underlying subchannel.
|
743
|
-
std::map<ConnectivityStateWatcherInterface*, WatcherWrapper*> watcher_map_
|
744
|
-
|
745
|
-
RefCountedPtr<ConnectedSubchannel> connected_subchannel_
|
746
|
-
ABSL_GUARDED_BY(&ClientChannel::work_serializer_);
|
747
|
-
// To be accessed only in the data plane mutex.
|
748
|
-
RefCountedPtr<ConnectedSubchannel> connected_subchannel_in_data_plane_
|
749
|
-
ABSL_GUARDED_BY(&ClientChannel::data_plane_mu_);
|
668
|
+
std::map<ConnectivityStateWatcherInterface*, WatcherWrapper*> watcher_map_
|
669
|
+
ABSL_GUARDED_BY(*chand_->work_serializer_);
|
750
670
|
};
|
751
671
|
|
752
672
|
//
|
@@ -776,7 +696,7 @@ ClientChannel::ExternalConnectivityWatcher::ExternalConnectivityWatcher(
|
|
776
696
|
}
|
777
697
|
// Pass the ref from creating the object to Start().
|
778
698
|
chand_->work_serializer_->Run(
|
779
|
-
[this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
|
699
|
+
[this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
780
700
|
// The ref is passed to AddWatcherLocked().
|
781
701
|
AddWatcherLocked();
|
782
702
|
},
|
@@ -811,8 +731,8 @@ void ClientChannel::ExternalConnectivityWatcher::
|
|
811
731
|
void ClientChannel::ExternalConnectivityWatcher::Notify(
|
812
732
|
grpc_connectivity_state state, const absl::Status& /* status */) {
|
813
733
|
bool done = false;
|
814
|
-
if (!done_.
|
815
|
-
|
734
|
+
if (!done_.compare_exchange_strong(done, true, std::memory_order_relaxed,
|
735
|
+
std::memory_order_relaxed)) {
|
816
736
|
return; // Already done.
|
817
737
|
}
|
818
738
|
// Remove external watcher.
|
@@ -826,7 +746,7 @@ void ClientChannel::ExternalConnectivityWatcher::Notify(
|
|
826
746
|
// automatically remove all watchers in that case.
|
827
747
|
if (state != GRPC_CHANNEL_SHUTDOWN) {
|
828
748
|
chand_->work_serializer_->Run(
|
829
|
-
[this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
|
749
|
+
[this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
830
750
|
RemoveWatcherLocked();
|
831
751
|
},
|
832
752
|
DEBUG_LOCATION);
|
@@ -835,14 +755,14 @@ void ClientChannel::ExternalConnectivityWatcher::Notify(
|
|
835
755
|
|
836
756
|
void ClientChannel::ExternalConnectivityWatcher::Cancel() {
|
837
757
|
bool done = false;
|
838
|
-
if (!done_.
|
839
|
-
|
758
|
+
if (!done_.compare_exchange_strong(done, true, std::memory_order_relaxed,
|
759
|
+
std::memory_order_relaxed)) {
|
840
760
|
return; // Already done.
|
841
761
|
}
|
842
762
|
ExecCtx::Run(DEBUG_LOCATION, on_complete_, GRPC_ERROR_CANCELLED);
|
843
763
|
// Hop back into the work_serializer to clean up.
|
844
764
|
chand_->work_serializer_->Run(
|
845
|
-
[this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
|
765
|
+
[this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
846
766
|
RemoveWatcherLocked();
|
847
767
|
},
|
848
768
|
DEBUG_LOCATION);
|
@@ -873,7 +793,7 @@ class ClientChannel::ConnectivityWatcherAdder {
|
|
873
793
|
watcher_(std::move(watcher)) {
|
874
794
|
GRPC_CHANNEL_STACK_REF(chand_->owning_stack_, "ConnectivityWatcherAdder");
|
875
795
|
chand_->work_serializer_->Run(
|
876
|
-
[this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
|
796
|
+
[this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
877
797
|
AddWatcherLocked();
|
878
798
|
},
|
879
799
|
DEBUG_LOCATION);
|
@@ -881,7 +801,7 @@ class ClientChannel::ConnectivityWatcherAdder {
|
|
881
801
|
|
882
802
|
private:
|
883
803
|
void AddWatcherLocked()
|
884
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
|
804
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
885
805
|
chand_->state_tracker_.AddWatcher(initial_state_, std::move(watcher_));
|
886
806
|
GRPC_CHANNEL_STACK_UNREF(chand_->owning_stack_, "ConnectivityWatcherAdder");
|
887
807
|
delete this;
|
@@ -903,7 +823,7 @@ class ClientChannel::ConnectivityWatcherRemover {
|
|
903
823
|
: chand_(chand), watcher_(watcher) {
|
904
824
|
GRPC_CHANNEL_STACK_REF(chand_->owning_stack_, "ConnectivityWatcherRemover");
|
905
825
|
chand_->work_serializer_->Run(
|
906
|
-
[this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
|
826
|
+
[this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
907
827
|
RemoveWatcherLocked();
|
908
828
|
},
|
909
829
|
DEBUG_LOCATION);
|
@@ -911,7 +831,7 @@ class ClientChannel::ConnectivityWatcherRemover {
|
|
911
831
|
|
912
832
|
private:
|
913
833
|
void RemoveWatcherLocked()
|
914
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
|
834
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
915
835
|
chand_->state_tracker_.RemoveWatcher(watcher_);
|
916
836
|
GRPC_CHANNEL_STACK_UNREF(chand_->owning_stack_,
|
917
837
|
"ConnectivityWatcherRemover");
|
@@ -940,38 +860,65 @@ class ClientChannel::ClientChannelControlHelper
|
|
940
860
|
|
941
861
|
RefCountedPtr<SubchannelInterface> CreateSubchannel(
|
942
862
|
ServerAddress address, const grpc_channel_args& args) override
|
943
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
|
863
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
944
864
|
if (chand_->resolver_ == nullptr) return nullptr; // Shutting down.
|
945
865
|
// Determine health check service name.
|
946
|
-
bool inhibit_health_checking = grpc_channel_args_find_bool(
|
947
|
-
&args, GRPC_ARG_INHIBIT_HEALTH_CHECKING, false);
|
948
866
|
absl::optional<std::string> health_check_service_name;
|
949
|
-
|
950
|
-
|
867
|
+
const char* health_check_service_name_arg = grpc_channel_args_find_string(
|
868
|
+
&args, GRPC_ARG_HEALTH_CHECK_SERVICE_NAME);
|
869
|
+
if (health_check_service_name_arg != nullptr) {
|
870
|
+
bool inhibit_health_checking = grpc_channel_args_find_bool(
|
871
|
+
&args, GRPC_ARG_INHIBIT_HEALTH_CHECKING, false);
|
872
|
+
if (!inhibit_health_checking) {
|
873
|
+
health_check_service_name = health_check_service_name_arg;
|
874
|
+
}
|
951
875
|
}
|
876
|
+
// Construct channel args for subchannel.
|
952
877
|
// Remove channel args that should not affect subchannel uniqueness.
|
953
|
-
|
878
|
+
absl::InlinedVector<const char*, 4> args_to_remove = {
|
879
|
+
GRPC_ARG_HEALTH_CHECK_SERVICE_NAME,
|
954
880
|
GRPC_ARG_INHIBIT_HEALTH_CHECKING,
|
955
881
|
GRPC_ARG_CHANNELZ_CHANNEL_NODE,
|
956
882
|
};
|
957
883
|
// Add channel args needed for the subchannel.
|
958
|
-
absl::InlinedVector<grpc_arg,
|
959
|
-
Subchannel::CreateSubchannelAddressArg(&address.address()),
|
884
|
+
absl::InlinedVector<grpc_arg, 2> args_to_add = {
|
960
885
|
SubchannelPoolInterface::CreateChannelArg(
|
961
886
|
chand_->subchannel_pool_.get()),
|
962
887
|
};
|
888
|
+
// Check if default authority arg is already set.
|
889
|
+
const char* default_authority =
|
890
|
+
grpc_channel_args_find_string(&args, GRPC_ARG_DEFAULT_AUTHORITY);
|
891
|
+
// Add args from subchannel address.
|
963
892
|
if (address.args() != nullptr) {
|
964
893
|
for (size_t j = 0; j < address.args()->num_args; ++j) {
|
965
|
-
|
894
|
+
grpc_arg& arg = address.args()->args[j];
|
895
|
+
if (strcmp(arg.key, GRPC_ARG_DEFAULT_AUTHORITY) == 0) {
|
896
|
+
// Don't add default authority arg from subchannel address if
|
897
|
+
// it's already set at the channel level -- the value from the
|
898
|
+
// application should take precedence over what is set by the
|
899
|
+
// resolver.
|
900
|
+
if (default_authority != nullptr) continue;
|
901
|
+
default_authority = arg.value.string;
|
902
|
+
}
|
903
|
+
args_to_add.emplace_back(arg);
|
966
904
|
}
|
967
905
|
}
|
906
|
+
// If we haven't already set the default authority arg, add it from
|
907
|
+
// the channel.
|
908
|
+
if (default_authority == nullptr) {
|
909
|
+
// Remove it, just in case it's actually present but is the wrong type.
|
910
|
+
args_to_remove.push_back(GRPC_ARG_DEFAULT_AUTHORITY);
|
911
|
+
args_to_add.push_back(grpc_channel_arg_string_create(
|
912
|
+
const_cast<char*>(GRPC_ARG_DEFAULT_AUTHORITY),
|
913
|
+
const_cast<char*>(chand_->default_authority_.c_str())));
|
914
|
+
}
|
968
915
|
grpc_channel_args* new_args = grpc_channel_args_copy_and_add_and_remove(
|
969
|
-
&args, args_to_remove,
|
970
|
-
args_to_add.
|
971
|
-
gpr_free(args_to_add[0].value.string);
|
916
|
+
&args, args_to_remove.data(), args_to_remove.size(), args_to_add.data(),
|
917
|
+
args_to_add.size());
|
972
918
|
// Create subchannel.
|
973
919
|
RefCountedPtr<Subchannel> subchannel =
|
974
|
-
chand_->client_channel_factory_->CreateSubchannel(
|
920
|
+
chand_->client_channel_factory_->CreateSubchannel(address.address(),
|
921
|
+
new_args);
|
975
922
|
grpc_channel_args_destroy(new_args);
|
976
923
|
if (subchannel == nullptr) return nullptr;
|
977
924
|
// Make sure the subchannel has updated keepalive time.
|
@@ -984,11 +931,10 @@ class ClientChannel::ClientChannelControlHelper
|
|
984
931
|
void UpdateState(
|
985
932
|
grpc_connectivity_state state, const absl::Status& status,
|
986
933
|
std::unique_ptr<LoadBalancingPolicy::SubchannelPicker> picker) override
|
987
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
|
934
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
988
935
|
if (chand_->resolver_ == nullptr) return; // Shutting down.
|
989
|
-
|
990
|
-
|
991
|
-
const char* extra = disconnect_error == GRPC_ERROR_NONE
|
936
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
937
|
+
const char* extra = chand_->disconnect_error_ == GRPC_ERROR_NONE
|
992
938
|
? ""
|
993
939
|
: " (ignoring -- channel shutting down)";
|
994
940
|
gpr_log(GPR_INFO, "chand=%p: update: state=%s status=(%s) picker=%p%s",
|
@@ -996,23 +942,27 @@ class ClientChannel::ClientChannelControlHelper
|
|
996
942
|
picker.get(), extra);
|
997
943
|
}
|
998
944
|
// Do update only if not shutting down.
|
999
|
-
if (
|
945
|
+
if (chand_->disconnect_error_ == GRPC_ERROR_NONE) {
|
1000
946
|
chand_->UpdateStateAndPickerLocked(state, status, "helper",
|
1001
947
|
std::move(picker));
|
1002
948
|
}
|
1003
949
|
}
|
1004
950
|
|
1005
951
|
void RequestReresolution() override
|
1006
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
|
952
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
1007
953
|
if (chand_->resolver_ == nullptr) return; // Shutting down.
|
1008
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
954
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1009
955
|
gpr_log(GPR_INFO, "chand=%p: started name re-resolving", chand_);
|
1010
956
|
}
|
1011
957
|
chand_->resolver_->RequestReresolutionLocked();
|
1012
958
|
}
|
1013
959
|
|
960
|
+
absl::string_view GetAuthority() override {
|
961
|
+
return chand_->default_authority_;
|
962
|
+
}
|
963
|
+
|
1014
964
|
void AddTraceEvent(TraceSeverity severity, absl::string_view message) override
|
1015
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
|
965
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
1016
966
|
if (chand_->resolver_ == nullptr) return; // Shutting down.
|
1017
967
|
if (chand_->channelz_node_ != nullptr) {
|
1018
968
|
chand_->channelz_node_->AddTraceEvent(
|
@@ -1085,11 +1035,12 @@ ClientChannel::ClientChannel(grpc_channel_element_args* args,
|
|
1085
1035
|
ClientChannelFactory::GetFromChannelArgs(args->channel_args)),
|
1086
1036
|
channelz_node_(GetChannelzNode(args->channel_args)),
|
1087
1037
|
interested_parties_(grpc_pollset_set_create()),
|
1038
|
+
service_config_parser_index_(
|
1039
|
+
internal::ClientChannelServiceConfigParser::ParserIndex()),
|
1088
1040
|
work_serializer_(std::make_shared<WorkSerializer>()),
|
1089
1041
|
state_tracker_("client_channel", GRPC_CHANNEL_IDLE),
|
1090
|
-
subchannel_pool_(GetSubchannelPool(args->channel_args))
|
1091
|
-
|
1092
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
|
1042
|
+
subchannel_pool_(GetSubchannelPool(args->channel_args)) {
|
1043
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1093
1044
|
gpr_log(GPR_INFO, "chand=%p: creating client_channel for channel stack %p",
|
1094
1045
|
this, owning_stack_);
|
1095
1046
|
}
|
@@ -1101,15 +1052,6 @@ ClientChannel::ClientChannel(grpc_channel_element_args* args,
|
|
1101
1052
|
"Missing client channel factory in args for client channel filter");
|
1102
1053
|
return;
|
1103
1054
|
}
|
1104
|
-
// Get server name to resolve, using proxy mapper if needed.
|
1105
|
-
const char* server_uri =
|
1106
|
-
grpc_channel_args_find_string(args->channel_args, GRPC_ARG_SERVER_URI);
|
1107
|
-
if (server_uri == nullptr) {
|
1108
|
-
*error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1109
|
-
"server URI channel arg missing or wrong type in client channel "
|
1110
|
-
"filter");
|
1111
|
-
return;
|
1112
|
-
}
|
1113
1055
|
// Get default service config. If none is specified via the client API,
|
1114
1056
|
// we use an empty config.
|
1115
1057
|
const char* service_config_json = grpc_channel_args_find_string(
|
@@ -1117,50 +1059,71 @@ ClientChannel::ClientChannel(grpc_channel_element_args* args,
|
|
1117
1059
|
if (service_config_json == nullptr) service_config_json = "{}";
|
1118
1060
|
*error = GRPC_ERROR_NONE;
|
1119
1061
|
default_service_config_ =
|
1120
|
-
|
1062
|
+
ServiceConfigImpl::Create(args->channel_args, service_config_json, error);
|
1121
1063
|
if (*error != GRPC_ERROR_NONE) {
|
1122
1064
|
default_service_config_.reset();
|
1123
1065
|
return;
|
1124
1066
|
}
|
1125
|
-
|
1126
|
-
|
1127
|
-
|
1067
|
+
// Get URI to resolve, using proxy mapper if needed.
|
1068
|
+
const char* server_uri =
|
1069
|
+
grpc_channel_args_find_string(args->channel_args, GRPC_ARG_SERVER_URI);
|
1070
|
+
if (server_uri == nullptr) {
|
1071
|
+
*error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1072
|
+
"target URI channel arg missing or wrong type in client channel "
|
1073
|
+
"filter");
|
1074
|
+
return;
|
1128
1075
|
}
|
1076
|
+
uri_to_resolve_ = server_uri;
|
1129
1077
|
char* proxy_name = nullptr;
|
1130
1078
|
grpc_channel_args* new_args = nullptr;
|
1131
1079
|
ProxyMapperRegistry::MapName(server_uri, args->channel_args, &proxy_name,
|
1132
1080
|
&new_args);
|
1133
|
-
|
1134
|
-
|
1081
|
+
if (proxy_name != nullptr) {
|
1082
|
+
uri_to_resolve_ = proxy_name;
|
1083
|
+
gpr_free(proxy_name);
|
1084
|
+
}
|
1085
|
+
// Make sure the URI to resolve is valid, so that we know that
|
1086
|
+
// resolver creation will succeed later.
|
1087
|
+
if (!CoreConfiguration::Get().resolver_registry().IsValidTarget(
|
1088
|
+
uri_to_resolve_)) {
|
1089
|
+
*error = GRPC_ERROR_CREATE_FROM_CPP_STRING(
|
1090
|
+
absl::StrCat("the target uri is not valid: ", uri_to_resolve_));
|
1091
|
+
return;
|
1092
|
+
}
|
1135
1093
|
// Strip out service config channel arg, so that it doesn't affect
|
1136
1094
|
// subchannel uniqueness when the args flow down to that layer.
|
1137
1095
|
const char* arg_to_remove = GRPC_ARG_SERVICE_CONFIG;
|
1138
1096
|
channel_args_ = grpc_channel_args_copy_and_remove(
|
1139
1097
|
new_args != nullptr ? new_args : args->channel_args, &arg_to_remove, 1);
|
1140
1098
|
grpc_channel_args_destroy(new_args);
|
1099
|
+
// Set initial keepalive time.
|
1141
1100
|
keepalive_time_ = grpc_channel_args_find_integer(
|
1142
1101
|
channel_args_, GRPC_ARG_KEEPALIVE_TIME_MS,
|
1143
1102
|
{-1 /* default value, unset */, 1, INT_MAX});
|
1144
|
-
|
1145
|
-
|
1146
|
-
|
1147
|
-
|
1148
|
-
|
1103
|
+
// Set default authority.
|
1104
|
+
const char* default_authority =
|
1105
|
+
grpc_channel_args_find_string(channel_args_, GRPC_ARG_DEFAULT_AUTHORITY);
|
1106
|
+
if (default_authority == nullptr) {
|
1107
|
+
default_authority_ =
|
1108
|
+
CoreConfiguration::Get().resolver_registry().GetDefaultAuthority(
|
1109
|
+
server_uri);
|
1110
|
+
} else {
|
1111
|
+
default_authority_ = default_authority;
|
1149
1112
|
}
|
1113
|
+
// Success.
|
1150
1114
|
*error = GRPC_ERROR_NONE;
|
1151
1115
|
}
|
1152
1116
|
|
1153
1117
|
ClientChannel::~ClientChannel() {
|
1154
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1118
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1155
1119
|
gpr_log(GPR_INFO, "chand=%p: destroying channel", this);
|
1156
1120
|
}
|
1157
1121
|
DestroyResolverAndLbPolicyLocked();
|
1158
1122
|
grpc_channel_args_destroy(channel_args_);
|
1159
|
-
GRPC_ERROR_UNREF(resolver_transient_failure_error_);
|
1160
1123
|
// Stop backup polling.
|
1161
1124
|
grpc_client_channel_stop_backup_polling(interested_parties_);
|
1162
1125
|
grpc_pollset_set_destroy(interested_parties_);
|
1163
|
-
GRPC_ERROR_UNREF(disconnect_error_
|
1126
|
+
GRPC_ERROR_UNREF(disconnect_error_);
|
1164
1127
|
}
|
1165
1128
|
|
1166
1129
|
OrphanablePtr<ClientChannel::LoadBalancedCall>
|
@@ -1191,6 +1154,24 @@ RefCountedPtr<LoadBalancingPolicy::Config> ChooseLbPolicy(
|
|
1191
1154
|
} else {
|
1192
1155
|
policy_name = grpc_channel_args_find_string(resolver_result.args,
|
1193
1156
|
GRPC_ARG_LB_POLICY_NAME);
|
1157
|
+
bool requires_config = false;
|
1158
|
+
if (policy_name != nullptr &&
|
1159
|
+
(!LoadBalancingPolicyRegistry::LoadBalancingPolicyExists(
|
1160
|
+
policy_name, &requires_config) ||
|
1161
|
+
requires_config)) {
|
1162
|
+
if (requires_config) {
|
1163
|
+
gpr_log(GPR_ERROR,
|
1164
|
+
"LB policy: %s passed through channel_args must not "
|
1165
|
+
"require a config. Using pick_first instead.",
|
1166
|
+
policy_name);
|
1167
|
+
} else {
|
1168
|
+
gpr_log(GPR_ERROR,
|
1169
|
+
"LB policy: %s passed through channel_args does not exist. "
|
1170
|
+
"Using pick_first instead.",
|
1171
|
+
policy_name);
|
1172
|
+
}
|
1173
|
+
policy_name = "pick_first";
|
1174
|
+
}
|
1194
1175
|
}
|
1195
1176
|
// Use pick_first if nothing was specified and we didn't select grpclb
|
1196
1177
|
// above.
|
@@ -1208,12 +1189,9 @@ RefCountedPtr<LoadBalancingPolicy::Config> ChooseLbPolicy(
|
|
1208
1189
|
// already verified that the policy does not require a config.
|
1209
1190
|
// - One of the hard-coded values here, all of which are known to not
|
1210
1191
|
// require a config.
|
1211
|
-
// - A channel arg, in which case the
|
1212
|
-
//
|
1213
|
-
//
|
1214
|
-
// the last case, this is probably fine for now.
|
1215
|
-
// TODO(roth): If the last case becomes a problem, add better error
|
1216
|
-
// handling here.
|
1192
|
+
// - A channel arg, in which case we check that the specified policy exists
|
1193
|
+
// and accepts an empty config. If not, we revert to using pick_first
|
1194
|
+
// lb_policy
|
1217
1195
|
GPR_ASSERT(lb_policy_config != nullptr);
|
1218
1196
|
GPR_ASSERT(parse_error == GRPC_ERROR_NONE);
|
1219
1197
|
return lb_policy_config;
|
@@ -1224,7 +1202,7 @@ RefCountedPtr<LoadBalancingPolicy::Config> ChooseLbPolicy(
|
|
1224
1202
|
void ClientChannel::OnResolverResultChangedLocked(Resolver::Result result) {
|
1225
1203
|
// Handle race conditions.
|
1226
1204
|
if (resolver_ == nullptr) return;
|
1227
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1205
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1228
1206
|
gpr_log(GPR_INFO, "chand=%p: got resolver result", this);
|
1229
1207
|
}
|
1230
1208
|
// We only want to trace the address resolution in the follow cases:
|
@@ -1237,31 +1215,34 @@ void ClientChannel::OnResolverResultChangedLocked(Resolver::Result result) {
|
|
1237
1215
|
//
|
1238
1216
|
// We track a list of strings to eventually be concatenated and traced.
|
1239
1217
|
absl::InlinedVector<const char*, 3> trace_strings;
|
1240
|
-
|
1218
|
+
const bool resolution_contains_addresses =
|
1219
|
+
result.addresses.ok() && !result.addresses->empty();
|
1220
|
+
if (!resolution_contains_addresses &&
|
1221
|
+
previous_resolution_contained_addresses_) {
|
1241
1222
|
trace_strings.push_back("Address list became empty");
|
1242
|
-
} else if (
|
1223
|
+
} else if (resolution_contains_addresses &&
|
1243
1224
|
!previous_resolution_contained_addresses_) {
|
1244
1225
|
trace_strings.push_back("Address list became non-empty");
|
1245
1226
|
}
|
1246
|
-
previous_resolution_contained_addresses_ =
|
1227
|
+
previous_resolution_contained_addresses_ = resolution_contains_addresses;
|
1247
1228
|
std::string service_config_error_string_storage;
|
1248
|
-
if (result.
|
1229
|
+
if (!result.service_config.ok()) {
|
1249
1230
|
service_config_error_string_storage =
|
1250
|
-
|
1231
|
+
result.service_config.status().ToString();
|
1251
1232
|
trace_strings.push_back(service_config_error_string_storage.c_str());
|
1252
1233
|
}
|
1253
1234
|
// Choose the service config.
|
1254
1235
|
RefCountedPtr<ServiceConfig> service_config;
|
1255
1236
|
RefCountedPtr<ConfigSelector> config_selector;
|
1256
|
-
if (result.
|
1257
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1237
|
+
if (!result.service_config.ok()) {
|
1238
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1258
1239
|
gpr_log(GPR_INFO, "chand=%p: resolver returned service config error: %s",
|
1259
|
-
this,
|
1240
|
+
this, result.service_config.status().ToString().c_str());
|
1260
1241
|
}
|
1261
1242
|
// If the service config was invalid, then fallback to the
|
1262
1243
|
// previously returned service config.
|
1263
1244
|
if (saved_service_config_ != nullptr) {
|
1264
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1245
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1265
1246
|
gpr_log(GPR_INFO,
|
1266
1247
|
"chand=%p: resolver returned invalid service config. "
|
1267
1248
|
"Continuing to use previous service config.",
|
@@ -1270,15 +1251,15 @@ void ClientChannel::OnResolverResultChangedLocked(Resolver::Result result) {
|
|
1270
1251
|
service_config = saved_service_config_;
|
1271
1252
|
config_selector = saved_config_selector_;
|
1272
1253
|
} else {
|
1273
|
-
// We received
|
1254
|
+
// We received a service config error and we don't have a
|
1274
1255
|
// previous service config to fall back to. Put the channel into
|
1275
1256
|
// TRANSIENT_FAILURE.
|
1276
|
-
OnResolverErrorLocked(
|
1257
|
+
OnResolverErrorLocked(result.service_config.status());
|
1277
1258
|
trace_strings.push_back("no valid service config");
|
1278
1259
|
}
|
1279
|
-
} else if (result.service_config == nullptr) {
|
1260
|
+
} else if (*result.service_config == nullptr) {
|
1280
1261
|
// Resolver did not return any service config.
|
1281
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1262
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1282
1263
|
gpr_log(GPR_INFO,
|
1283
1264
|
"chand=%p: resolver returned no service config. Using default "
|
1284
1265
|
"service config for channel.",
|
@@ -1287,15 +1268,18 @@ void ClientChannel::OnResolverResultChangedLocked(Resolver::Result result) {
|
|
1287
1268
|
service_config = default_service_config_;
|
1288
1269
|
} else {
|
1289
1270
|
// Use ServiceConfig and ConfigSelector returned by resolver.
|
1290
|
-
service_config = result.service_config;
|
1271
|
+
service_config = std::move(*result.service_config);
|
1291
1272
|
config_selector = ConfigSelector::GetFromChannelArgs(*result.args);
|
1292
1273
|
}
|
1274
|
+
// Note: The only case in which service_config is null here is if the resolver
|
1275
|
+
// returned a service config error and we don't have a previous service
|
1276
|
+
// config to fall back to.
|
1293
1277
|
if (service_config != nullptr) {
|
1294
1278
|
// Extract global config for client channel.
|
1295
1279
|
const internal::ClientChannelGlobalParsedConfig* parsed_service_config =
|
1296
1280
|
static_cast<const internal::ClientChannelGlobalParsedConfig*>(
|
1297
1281
|
service_config->GetGlobalParsedConfig(
|
1298
|
-
|
1282
|
+
service_config_parser_index_));
|
1299
1283
|
// Choose LB policy config.
|
1300
1284
|
RefCountedPtr<LoadBalancingPolicy::Config> lb_policy_config =
|
1301
1285
|
ChooseLbPolicy(result, parsed_service_config);
|
@@ -1309,15 +1293,16 @@ void ClientChannel::OnResolverResultChangedLocked(Resolver::Result result) {
|
|
1309
1293
|
// If either has changed, apply the global parameters now.
|
1310
1294
|
if (service_config_changed || config_selector_changed) {
|
1311
1295
|
// Update service config in control plane.
|
1312
|
-
UpdateServiceConfigInControlPlaneLocked(
|
1313
|
-
|
1314
|
-
|
1315
|
-
} else if (GRPC_TRACE_FLAG_ENABLED(
|
1296
|
+
UpdateServiceConfigInControlPlaneLocked(std::move(service_config),
|
1297
|
+
std::move(config_selector),
|
1298
|
+
lb_policy_config->name());
|
1299
|
+
} else if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1316
1300
|
gpr_log(GPR_INFO, "chand=%p: service config not changed", this);
|
1317
1301
|
}
|
1318
1302
|
// Create or update LB policy, as needed.
|
1319
|
-
CreateOrUpdateLbPolicyLocked(
|
1320
|
-
|
1303
|
+
CreateOrUpdateLbPolicyLocked(
|
1304
|
+
std::move(lb_policy_config),
|
1305
|
+
parsed_service_config->health_check_service_name(), std::move(result));
|
1321
1306
|
if (service_config_changed || config_selector_changed) {
|
1322
1307
|
// Start using new service config for calls.
|
1323
1308
|
// This needs to happen after the LB policy has been updated, since
|
@@ -1340,28 +1325,21 @@ void ClientChannel::OnResolverResultChangedLocked(Resolver::Result result) {
|
|
1340
1325
|
}
|
1341
1326
|
}
|
1342
1327
|
|
1343
|
-
void ClientChannel::OnResolverErrorLocked(
|
1344
|
-
if (resolver_ == nullptr)
|
1345
|
-
|
1346
|
-
return;
|
1347
|
-
}
|
1348
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
|
1328
|
+
void ClientChannel::OnResolverErrorLocked(absl::Status status) {
|
1329
|
+
if (resolver_ == nullptr) return;
|
1330
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1349
1331
|
gpr_log(GPR_INFO, "chand=%p: resolver transient failure: %s", this,
|
1350
|
-
|
1332
|
+
status.ToString().c_str());
|
1351
1333
|
}
|
1352
1334
|
// If we already have an LB policy from a previous resolution
|
1353
1335
|
// result, then we continue to let it set the connectivity state.
|
1354
1336
|
// Otherwise, we go into TRANSIENT_FAILURE.
|
1355
1337
|
if (lb_policy_ == nullptr) {
|
1356
|
-
grpc_error_handle
|
1357
|
-
GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
|
1358
|
-
"Resolver transient failure", &error, 1);
|
1359
|
-
absl::Status status = grpc_error_to_absl_status(state_error);
|
1338
|
+
grpc_error_handle error = absl_status_to_grpc_error(status);
|
1360
1339
|
{
|
1361
1340
|
MutexLock lock(&resolution_mu_);
|
1362
1341
|
// Update resolver transient failure.
|
1363
|
-
|
1364
|
-
resolver_transient_failure_error_ = state_error;
|
1342
|
+
resolver_transient_failure_error_ = status;
|
1365
1343
|
// Process calls that were queued waiting for the resolver result.
|
1366
1344
|
for (ResolverQueuedCall* call = resolver_queued_calls_; call != nullptr;
|
1367
1345
|
call = call->next) {
|
@@ -1373,33 +1351,42 @@ void ClientChannel::OnResolverErrorLocked(grpc_error_handle error) {
|
|
1373
1351
|
}
|
1374
1352
|
}
|
1375
1353
|
}
|
1354
|
+
GRPC_ERROR_UNREF(error);
|
1376
1355
|
// Update connectivity state.
|
1377
1356
|
UpdateStateAndPickerLocked(
|
1378
1357
|
GRPC_CHANNEL_TRANSIENT_FAILURE, status, "resolver failure",
|
1379
1358
|
absl::make_unique<LoadBalancingPolicy::TransientFailurePicker>(status));
|
1380
1359
|
}
|
1381
|
-
GRPC_ERROR_UNREF(error);
|
1382
1360
|
}
|
1383
1361
|
|
1384
1362
|
void ClientChannel::CreateOrUpdateLbPolicyLocked(
|
1385
1363
|
RefCountedPtr<LoadBalancingPolicy::Config> lb_policy_config,
|
1364
|
+
const absl::optional<std::string>& health_check_service_name,
|
1386
1365
|
Resolver::Result result) {
|
1387
1366
|
// Construct update.
|
1388
1367
|
LoadBalancingPolicy::UpdateArgs update_args;
|
1389
1368
|
update_args.addresses = std::move(result.addresses);
|
1390
1369
|
update_args.config = std::move(lb_policy_config);
|
1370
|
+
update_args.resolution_note = std::move(result.resolution_note);
|
1371
|
+
// Add health check service name to channel args.
|
1372
|
+
absl::InlinedVector<grpc_arg, 1> args_to_add;
|
1373
|
+
if (health_check_service_name.has_value()) {
|
1374
|
+
args_to_add.push_back(grpc_channel_arg_string_create(
|
1375
|
+
const_cast<char*>(GRPC_ARG_HEALTH_CHECK_SERVICE_NAME),
|
1376
|
+
const_cast<char*>(health_check_service_name->c_str())));
|
1377
|
+
}
|
1391
1378
|
// Remove the config selector from channel args so that we're not holding
|
1392
1379
|
// unnecessary refs that cause it to be destroyed somewhere other than in the
|
1393
1380
|
// WorkSerializer.
|
1394
|
-
const char*
|
1395
|
-
update_args.args =
|
1396
|
-
|
1381
|
+
const char* arg_to_remove = GRPC_ARG_CONFIG_SELECTOR;
|
1382
|
+
update_args.args = grpc_channel_args_copy_and_add_and_remove(
|
1383
|
+
result.args, &arg_to_remove, 1, args_to_add.data(), args_to_add.size());
|
1397
1384
|
// Create policy if needed.
|
1398
1385
|
if (lb_policy_ == nullptr) {
|
1399
1386
|
lb_policy_ = CreateLbPolicyLocked(*update_args.args);
|
1400
1387
|
}
|
1401
1388
|
// Update the policy.
|
1402
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1389
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1403
1390
|
gpr_log(GPR_INFO, "chand=%p: Updating child policy %p", this,
|
1404
1391
|
lb_policy_.get());
|
1405
1392
|
}
|
@@ -1416,8 +1403,8 @@ OrphanablePtr<LoadBalancingPolicy> ClientChannel::CreateLbPolicyLocked(
|
|
1416
1403
|
lb_policy_args.args = &args;
|
1417
1404
|
OrphanablePtr<LoadBalancingPolicy> lb_policy =
|
1418
1405
|
MakeOrphanable<ChildPolicyHandler>(std::move(lb_policy_args),
|
1419
|
-
&
|
1420
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1406
|
+
&grpc_client_channel_trace);
|
1407
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1421
1408
|
gpr_log(GPR_INFO, "chand=%p: created new LB policy %p", this,
|
1422
1409
|
lb_policy.get());
|
1423
1410
|
}
|
@@ -1452,39 +1439,24 @@ void ClientChannel::RemoveResolverQueuedCall(ResolverQueuedCall* to_remove,
|
|
1452
1439
|
|
1453
1440
|
void ClientChannel::UpdateServiceConfigInControlPlaneLocked(
|
1454
1441
|
RefCountedPtr<ServiceConfig> service_config,
|
1455
|
-
RefCountedPtr<ConfigSelector> config_selector,
|
1456
|
-
|
1457
|
-
|
1458
|
-
UniquePtr<char> service_config_json(
|
1459
|
-
gpr_strdup(service_config->json_string().c_str()));
|
1460
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
|
1442
|
+
RefCountedPtr<ConfigSelector> config_selector, std::string lb_policy_name) {
|
1443
|
+
std::string service_config_json(service_config->json_string());
|
1444
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1461
1445
|
gpr_log(GPR_INFO,
|
1462
1446
|
"chand=%p: resolver returned updated service config: \"%s\"", this,
|
1463
|
-
service_config_json.
|
1447
|
+
service_config_json.c_str());
|
1464
1448
|
}
|
1465
1449
|
// Save service config.
|
1466
1450
|
saved_service_config_ = std::move(service_config);
|
1467
|
-
// Update health check service name if needed.
|
1468
|
-
if (health_check_service_name_ !=
|
1469
|
-
parsed_service_config->health_check_service_name()) {
|
1470
|
-
health_check_service_name_ =
|
1471
|
-
parsed_service_config->health_check_service_name();
|
1472
|
-
// Update health check service name used by existing subchannel wrappers.
|
1473
|
-
for (auto* subchannel_wrapper : subchannel_wrappers_) {
|
1474
|
-
subchannel_wrapper->UpdateHealthCheckServiceName(
|
1475
|
-
health_check_service_name_);
|
1476
|
-
}
|
1477
|
-
}
|
1478
1451
|
// Swap out the data used by GetChannelInfo().
|
1479
|
-
UniquePtr<char> lb_policy_name_owned(gpr_strdup(lb_policy_name));
|
1480
1452
|
{
|
1481
1453
|
MutexLock lock(&info_mu_);
|
1482
|
-
info_lb_policy_name_ = std::move(
|
1454
|
+
info_lb_policy_name_ = std::move(lb_policy_name);
|
1483
1455
|
info_service_config_json_ = std::move(service_config_json);
|
1484
1456
|
}
|
1485
1457
|
// Save config selector.
|
1486
1458
|
saved_config_selector_ = std::move(config_selector);
|
1487
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1459
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1488
1460
|
gpr_log(GPR_INFO, "chand=%p: using ConfigSelector %p", this,
|
1489
1461
|
saved_config_selector_.get());
|
1490
1462
|
}
|
@@ -1495,7 +1467,7 @@ void ClientChannel::UpdateServiceConfigInDataPlaneLocked() {
|
|
1495
1467
|
RefCountedPtr<ServiceConfig> service_config = saved_service_config_;
|
1496
1468
|
// Grab ref to config selector. Use default if resolver didn't supply one.
|
1497
1469
|
RefCountedPtr<ConfigSelector> config_selector = saved_config_selector_;
|
1498
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1470
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1499
1471
|
gpr_log(GPR_INFO, "chand=%p: switching to ConfigSelector %p", this,
|
1500
1472
|
saved_config_selector_.get());
|
1501
1473
|
}
|
@@ -1532,11 +1504,9 @@ void ClientChannel::UpdateServiceConfigInDataPlaneLocked() {
|
|
1532
1504
|
//
|
1533
1505
|
// We defer unreffing the old values (and deallocating memory) until
|
1534
1506
|
// after releasing the lock to keep the critical section small.
|
1535
|
-
std::set<grpc_call_element*> calls_pending_resolver_result;
|
1536
1507
|
{
|
1537
1508
|
MutexLock lock(&resolution_mu_);
|
1538
|
-
|
1539
|
-
resolver_transient_failure_error_ = GRPC_ERROR_NONE;
|
1509
|
+
resolver_transient_failure_error_ = absl::OkStatus();
|
1540
1510
|
// Update service config.
|
1541
1511
|
received_service_config_data_ = true;
|
1542
1512
|
// Old values will be unreffed after lock is released.
|
@@ -1568,12 +1538,12 @@ void ClientChannel::UpdateServiceConfigInDataPlaneLocked() {
|
|
1568
1538
|
}
|
1569
1539
|
|
1570
1540
|
void ClientChannel::CreateResolverLocked() {
|
1571
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1541
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1572
1542
|
gpr_log(GPR_INFO, "chand=%p: starting name resolution", this);
|
1573
1543
|
}
|
1574
|
-
resolver_ =
|
1575
|
-
|
1576
|
-
absl::make_unique<ResolverResultHandler>(this));
|
1544
|
+
resolver_ = CoreConfiguration::Get().resolver_registry().CreateResolver(
|
1545
|
+
uri_to_resolve_.c_str(), channel_args_, interested_parties_,
|
1546
|
+
work_serializer_, absl::make_unique<ResolverResultHandler>(this));
|
1577
1547
|
// Since the validity of the args was checked when the channel was created,
|
1578
1548
|
// CreateResolver() must return a non-null result.
|
1579
1549
|
GPR_ASSERT(resolver_ != nullptr);
|
@@ -1581,20 +1551,20 @@ void ClientChannel::CreateResolverLocked() {
|
|
1581
1551
|
GRPC_CHANNEL_CONNECTING, absl::Status(), "started resolving",
|
1582
1552
|
absl::make_unique<LoadBalancingPolicy::QueuePicker>(nullptr));
|
1583
1553
|
resolver_->StartLocked();
|
1584
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1554
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1585
1555
|
gpr_log(GPR_INFO, "chand=%p: created resolver=%p", this, resolver_.get());
|
1586
1556
|
}
|
1587
1557
|
}
|
1588
1558
|
|
1589
1559
|
void ClientChannel::DestroyResolverAndLbPolicyLocked() {
|
1590
1560
|
if (resolver_ != nullptr) {
|
1591
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1561
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1592
1562
|
gpr_log(GPR_INFO, "chand=%p: shutting down resolver=%p", this,
|
1593
1563
|
resolver_.get());
|
1594
1564
|
}
|
1595
1565
|
resolver_.reset();
|
1596
1566
|
if (lb_policy_ != nullptr) {
|
1597
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1567
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1598
1568
|
gpr_log(GPR_INFO, "chand=%p: shutting down lb_policy=%p", this,
|
1599
1569
|
lb_policy_.get());
|
1600
1570
|
}
|
@@ -1637,30 +1607,9 @@ void ClientChannel::UpdateStateAndPickerLocked(
|
|
1637
1607
|
channelz::ChannelNode::GetChannelConnectivityStateChangeString(
|
1638
1608
|
state)));
|
1639
1609
|
}
|
1640
|
-
// Grab data plane lock to
|
1641
|
-
//
|
1642
|
-
// Note that we want to minimize the work done while holding the data
|
1643
|
-
// plane lock, to keep the critical section small. So, for all of the
|
1644
|
-
// objects that we might wind up unreffing here, we actually hold onto
|
1645
|
-
// the refs until after we release the lock, and then unref them at
|
1646
|
-
// that point. This includes the following:
|
1647
|
-
// - refs to subchannel wrappers in the keys of pending_subchannel_updates_
|
1648
|
-
// - ownership of the existing picker in picker_
|
1610
|
+
// Grab data plane lock to update the picker.
|
1649
1611
|
{
|
1650
1612
|
MutexLock lock(&data_plane_mu_);
|
1651
|
-
// Handle subchannel updates.
|
1652
|
-
for (auto& p : pending_subchannel_updates_) {
|
1653
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
|
1654
|
-
gpr_log(GPR_INFO,
|
1655
|
-
"chand=%p: updating subchannel wrapper %p data plane "
|
1656
|
-
"connected_subchannel to %p",
|
1657
|
-
this, p.first.get(), p.second.get());
|
1658
|
-
}
|
1659
|
-
// Note: We do not remove the entry from pending_subchannel_updates_
|
1660
|
-
// here, since this would unref the subchannel wrapper; instead,
|
1661
|
-
// we wait until we've released the lock to clear the map.
|
1662
|
-
p.first->set_connected_subchannel_in_data_plane(std::move(p.second));
|
1663
|
-
}
|
1664
1613
|
// Swap out the picker.
|
1665
1614
|
// Note: Original value will be destroyed after the lock is released.
|
1666
1615
|
picker_.swap(picker);
|
@@ -1682,9 +1631,6 @@ void ClientChannel::UpdateStateAndPickerLocked(
|
|
1682
1631
|
}
|
1683
1632
|
}
|
1684
1633
|
}
|
1685
|
-
// Clear the pending update map after releasing the lock, to keep the
|
1686
|
-
// critical section small.
|
1687
|
-
pending_subchannel_updates_.clear();
|
1688
1634
|
}
|
1689
1635
|
|
1690
1636
|
namespace {
|
@@ -1734,10 +1680,10 @@ grpc_error_handle ClientChannel::DoPingLocked(grpc_transport_op* op) {
|
|
1734
1680
|
&result,
|
1735
1681
|
// Complete pick.
|
1736
1682
|
[op](LoadBalancingPolicy::PickResult::Complete* complete_pick)
|
1737
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(
|
1683
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(*ClientChannel::work_serializer_) {
|
1738
1684
|
SubchannelWrapper* subchannel = static_cast<SubchannelWrapper*>(
|
1739
1685
|
complete_pick->subchannel.get());
|
1740
|
-
ConnectedSubchannel
|
1686
|
+
RefCountedPtr<ConnectedSubchannel> connected_subchannel =
|
1741
1687
|
subchannel->connected_subchannel();
|
1742
1688
|
connected_subchannel->Ping(op->send_ping.on_initiate,
|
1743
1689
|
op->send_ping.on_ack);
|
@@ -1786,7 +1732,7 @@ void ClientChannel::StartTransportOpLocked(grpc_transport_op* op) {
|
|
1786
1732
|
}
|
1787
1733
|
// Disconnect or enter IDLE.
|
1788
1734
|
if (op->disconnect_with_error != GRPC_ERROR_NONE) {
|
1789
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1735
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1790
1736
|
gpr_log(GPR_INFO, "chand=%p: disconnect_with_error: %s", this,
|
1791
1737
|
grpc_error_std_string(op->disconnect_with_error).c_str());
|
1792
1738
|
}
|
@@ -1795,7 +1741,7 @@ void ClientChannel::StartTransportOpLocked(grpc_transport_op* op) {
|
|
1795
1741
|
if (grpc_error_get_int(op->disconnect_with_error,
|
1796
1742
|
GRPC_ERROR_INT_CHANNEL_CONNECTIVITY_STATE, &value) &&
|
1797
1743
|
static_cast<grpc_connectivity_state>(value) == GRPC_CHANNEL_IDLE) {
|
1798
|
-
if (
|
1744
|
+
if (disconnect_error_ == GRPC_ERROR_NONE) {
|
1799
1745
|
// Enter IDLE state.
|
1800
1746
|
UpdateStateAndPickerLocked(GRPC_CHANNEL_IDLE, absl::Status(),
|
1801
1747
|
"channel entering IDLE", nullptr);
|
@@ -1803,9 +1749,8 @@ void ClientChannel::StartTransportOpLocked(grpc_transport_op* op) {
|
|
1803
1749
|
GRPC_ERROR_UNREF(op->disconnect_with_error);
|
1804
1750
|
} else {
|
1805
1751
|
// Disconnect.
|
1806
|
-
GPR_ASSERT(disconnect_error_
|
1807
|
-
|
1808
|
-
disconnect_error_.Store(op->disconnect_with_error, MemoryOrder::RELEASE);
|
1752
|
+
GPR_ASSERT(disconnect_error_ == GRPC_ERROR_NONE);
|
1753
|
+
disconnect_error_ = op->disconnect_with_error;
|
1809
1754
|
UpdateStateAndPickerLocked(
|
1810
1755
|
GRPC_CHANNEL_SHUTDOWN, absl::Status(), "shutdown from API",
|
1811
1756
|
absl::make_unique<LoadBalancingPolicy::TransientFailurePicker>(
|
@@ -1827,7 +1772,7 @@ void ClientChannel::StartTransportOp(grpc_channel_element* elem,
|
|
1827
1772
|
// Pop into control plane work_serializer for remaining ops.
|
1828
1773
|
GRPC_CHANNEL_STACK_REF(chand->owning_stack_, "start_transport_op");
|
1829
1774
|
chand->work_serializer_->Run(
|
1830
|
-
[chand, op]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand->work_serializer_) {
|
1775
|
+
[chand, op]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand->work_serializer_) {
|
1831
1776
|
chand->StartTransportOpLocked(op);
|
1832
1777
|
},
|
1833
1778
|
DEBUG_LOCATION);
|
@@ -1838,11 +1783,11 @@ void ClientChannel::GetChannelInfo(grpc_channel_element* elem,
|
|
1838
1783
|
ClientChannel* chand = static_cast<ClientChannel*>(elem->channel_data);
|
1839
1784
|
MutexLock lock(&chand->info_mu_);
|
1840
1785
|
if (info->lb_policy_name != nullptr) {
|
1841
|
-
*info->lb_policy_name = gpr_strdup(chand->info_lb_policy_name_.
|
1786
|
+
*info->lb_policy_name = gpr_strdup(chand->info_lb_policy_name_.c_str());
|
1842
1787
|
}
|
1843
1788
|
if (info->service_config_json != nullptr) {
|
1844
1789
|
*info->service_config_json =
|
1845
|
-
gpr_strdup(chand->info_service_config_json_.
|
1790
|
+
gpr_strdup(chand->info_service_config_json_.c_str());
|
1846
1791
|
}
|
1847
1792
|
}
|
1848
1793
|
|
@@ -1870,17 +1815,6 @@ void ClientChannel::RemoveLbQueuedCall(LbQueuedCall* to_remove,
|
|
1870
1815
|
}
|
1871
1816
|
}
|
1872
1817
|
|
1873
|
-
RefCountedPtr<ConnectedSubchannel>
|
1874
|
-
ClientChannel::GetConnectedSubchannelInDataPlane(
|
1875
|
-
SubchannelInterface* subchannel) const {
|
1876
|
-
SubchannelWrapper* subchannel_wrapper =
|
1877
|
-
static_cast<SubchannelWrapper*>(subchannel);
|
1878
|
-
ConnectedSubchannel* connected_subchannel =
|
1879
|
-
subchannel_wrapper->connected_subchannel_in_data_plane();
|
1880
|
-
if (connected_subchannel == nullptr) return nullptr;
|
1881
|
-
return connected_subchannel->Ref();
|
1882
|
-
}
|
1883
|
-
|
1884
1818
|
void ClientChannel::TryToConnectLocked() {
|
1885
1819
|
if (lb_policy_ != nullptr) {
|
1886
1820
|
lb_policy_->ExitIdleLocked();
|
@@ -1900,7 +1834,7 @@ grpc_connectivity_state ClientChannel::CheckConnectivityState(
|
|
1900
1834
|
if (out == GRPC_CHANNEL_IDLE && try_to_connect) {
|
1901
1835
|
GRPC_CHANNEL_STACK_REF(owning_stack_, "TryToConnect");
|
1902
1836
|
work_serializer_->Run([this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(
|
1903
|
-
work_serializer_) { TryToConnectLocked(); },
|
1837
|
+
*work_serializer_) { TryToConnectLocked(); },
|
1904
1838
|
DEBUG_LOCATION);
|
1905
1839
|
}
|
1906
1840
|
return out;
|
@@ -1927,7 +1861,7 @@ ClientChannel::CallData::CallData(grpc_call_element* elem,
|
|
1927
1861
|
: deadline_state_(elem, args,
|
1928
1862
|
GPR_LIKELY(chand.deadline_checking_enabled_)
|
1929
1863
|
? args.deadline
|
1930
|
-
:
|
1864
|
+
: Timestamp::InfFuture()),
|
1931
1865
|
path_(grpc_slice_ref_internal(args.path)),
|
1932
1866
|
call_start_time_(args.start_time),
|
1933
1867
|
deadline_(args.deadline),
|
@@ -1976,6 +1910,11 @@ void ClientChannel::CallData::StartTransportStreamOpBatch(
|
|
1976
1910
|
GPR_TIMER_SCOPE("cc_start_transport_stream_op_batch", 0);
|
1977
1911
|
CallData* calld = static_cast<CallData*>(elem->call_data);
|
1978
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
|
+
}
|
1979
1918
|
if (GPR_LIKELY(chand->deadline_checking_enabled_)) {
|
1980
1919
|
grpc_deadline_state_client_start_transport_stream_op_batch(elem, batch);
|
1981
1920
|
}
|
@@ -1983,8 +1922,13 @@ void ClientChannel::CallData::StartTransportStreamOpBatch(
|
|
1983
1922
|
// in case we wind up failing the call before we get down to the retry
|
1984
1923
|
// or LB call layer.
|
1985
1924
|
if (batch->recv_trailing_metadata) {
|
1986
|
-
calld->
|
1987
|
-
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_;
|
1988
1932
|
}
|
1989
1933
|
// If we already have a dynamic call, pass the batch down to it.
|
1990
1934
|
// Note that once we have done so, we do not need to acquire the channel's
|
@@ -2209,7 +2153,7 @@ class ClientChannel::CallData::ResolverQueuedCallCanceller {
|
|
2209
2153
|
auto* calld = static_cast<CallData*>(self->elem_->call_data);
|
2210
2154
|
{
|
2211
2155
|
MutexLock lock(&chand->resolution_mu_);
|
2212
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
2156
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
2213
2157
|
gpr_log(GPR_INFO,
|
2214
2158
|
"chand=%p calld=%p: cancelling resolver queued pick: "
|
2215
2159
|
"error=%s self=%p calld->resolver_pick_canceller=%p",
|
@@ -2236,7 +2180,7 @@ void ClientChannel::CallData::MaybeRemoveCallFromResolverQueuedCallsLocked(
|
|
2236
2180
|
grpc_call_element* elem) {
|
2237
2181
|
if (!queued_pending_resolver_result_) return;
|
2238
2182
|
auto* chand = static_cast<ClientChannel*>(elem->channel_data);
|
2239
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
2183
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
2240
2184
|
gpr_log(GPR_INFO,
|
2241
2185
|
"chand=%p calld=%p: removing from resolver queued picks list",
|
2242
2186
|
chand, this);
|
@@ -2251,7 +2195,7 @@ void ClientChannel::CallData::MaybeAddCallToResolverQueuedCallsLocked(
|
|
2251
2195
|
grpc_call_element* elem) {
|
2252
2196
|
if (queued_pending_resolver_result_) return;
|
2253
2197
|
auto* chand = static_cast<ClientChannel*>(elem->channel_data);
|
2254
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
2198
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
2255
2199
|
gpr_log(GPR_INFO, "chand=%p calld=%p: adding to resolver queued picks list",
|
2256
2200
|
chand, this);
|
2257
2201
|
}
|
@@ -2265,7 +2209,7 @@ void ClientChannel::CallData::MaybeAddCallToResolverQueuedCallsLocked(
|
|
2265
2209
|
grpc_error_handle ClientChannel::CallData::ApplyServiceConfigToCallLocked(
|
2266
2210
|
grpc_call_element* elem, grpc_metadata_batch* initial_metadata) {
|
2267
2211
|
ClientChannel* chand = static_cast<ClientChannel*>(elem->channel_data);
|
2268
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
2212
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
2269
2213
|
gpr_log(GPR_INFO, "chand=%p calld=%p: applying service config to call",
|
2270
2214
|
chand, this);
|
2271
2215
|
}
|
@@ -2275,25 +2219,27 @@ grpc_error_handle ClientChannel::CallData::ApplyServiceConfigToCallLocked(
|
|
2275
2219
|
ConfigSelector::CallConfig call_config =
|
2276
2220
|
config_selector->GetCallConfig({&path_, initial_metadata, arena_});
|
2277
2221
|
if (call_config.error != GRPC_ERROR_NONE) return call_config.error;
|
2278
|
-
// Create a
|
2279
|
-
// ServiceConfig and caches the right set of parsed configs
|
2280
|
-
// the call. The
|
2281
|
-
// so that it can be accessed by filters
|
2282
|
-
// will be cleaned up when the call ends.
|
2283
|
-
auto* service_config_call_data =
|
2284
|
-
|
2285
|
-
|
2286
|
-
|
2222
|
+
// Create a ClientChannelServiceConfigCallData for the call. This stores
|
2223
|
+
// a ref to the ServiceConfig and caches the right set of parsed configs
|
2224
|
+
// to use for the call. The ClientChannelServiceConfigCallData will store
|
2225
|
+
// itself in the call context, so that it can be accessed by filters
|
2226
|
+
// below us in the stack, and it will be cleaned up when the call ends.
|
2227
|
+
auto* service_config_call_data =
|
2228
|
+
arena_->New<ClientChannelServiceConfigCallData>(
|
2229
|
+
std::move(call_config.service_config), call_config.method_configs,
|
2230
|
+
std::move(call_config.call_attributes),
|
2231
|
+
call_config.call_dispatch_controller, call_context_);
|
2287
2232
|
// Apply our own method params to the call.
|
2288
2233
|
auto* method_params = static_cast<ClientChannelMethodParsedConfig*>(
|
2289
2234
|
service_config_call_data->GetMethodParsedConfig(
|
2290
|
-
|
2235
|
+
chand->service_config_parser_index_));
|
2291
2236
|
if (method_params != nullptr) {
|
2292
2237
|
// If the deadline from the service config is shorter than the one
|
2293
2238
|
// from the client API, reset the deadline timer.
|
2294
|
-
if (chand->deadline_checking_enabled_ &&
|
2295
|
-
|
2296
|
-
|
2239
|
+
if (chand->deadline_checking_enabled_ &&
|
2240
|
+
method_params->timeout() != Duration::Zero()) {
|
2241
|
+
const Timestamp per_method_deadline =
|
2242
|
+
Timestamp::FromCycleCounterRoundUp(call_start_time_) +
|
2297
2243
|
method_params->timeout();
|
2298
2244
|
if (per_method_deadline < deadline_) {
|
2299
2245
|
deadline_ = per_method_deadline;
|
@@ -2324,29 +2270,27 @@ grpc_error_handle ClientChannel::CallData::ApplyServiceConfigToCallLocked(
|
|
2324
2270
|
void ClientChannel::CallData::
|
2325
2271
|
RecvTrailingMetadataReadyForConfigSelectorCommitCallback(
|
2326
2272
|
void* arg, grpc_error_handle error) {
|
2327
|
-
auto*
|
2328
|
-
auto*
|
2329
|
-
|
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);
|
2276
|
+
auto* service_config_call_data =
|
2277
|
+
static_cast<ClientChannelServiceConfigCallData*>(
|
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
|
+
}
|
2330
2286
|
if (service_config_call_data != nullptr) {
|
2331
2287
|
service_config_call_data->call_dispatch_controller()->Commit();
|
2332
2288
|
}
|
2333
2289
|
// Chain to original callback.
|
2334
|
-
Closure::Run(DEBUG_LOCATION,
|
2290
|
+
Closure::Run(DEBUG_LOCATION, calld->original_recv_trailing_metadata_ready_,
|
2335
2291
|
GRPC_ERROR_REF(error));
|
2336
2292
|
}
|
2337
2293
|
|
2338
|
-
void ClientChannel::CallData::
|
2339
|
-
InjectRecvTrailingMetadataReadyForConfigSelectorCommitCallback(
|
2340
|
-
grpc_transport_stream_op_batch* batch) {
|
2341
|
-
original_recv_trailing_metadata_ready_ =
|
2342
|
-
batch->payload->recv_trailing_metadata.recv_trailing_metadata_ready;
|
2343
|
-
GRPC_CLOSURE_INIT(&recv_trailing_metadata_ready_,
|
2344
|
-
RecvTrailingMetadataReadyForConfigSelectorCommitCallback,
|
2345
|
-
this, nullptr);
|
2346
|
-
batch->payload->recv_trailing_metadata.recv_trailing_metadata_ready =
|
2347
|
-
&recv_trailing_metadata_ready_;
|
2348
|
-
}
|
2349
|
-
|
2350
2294
|
void ClientChannel::CallData::AsyncResolutionDone(grpc_call_element* elem,
|
2351
2295
|
grpc_error_handle error) {
|
2352
2296
|
// TODO(roth): Does this callback need to hold a ref to the call stack?
|
@@ -2360,7 +2304,7 @@ void ClientChannel::CallData::ResolutionDone(void* arg,
|
|
2360
2304
|
ClientChannel* chand = static_cast<ClientChannel*>(elem->channel_data);
|
2361
2305
|
CallData* calld = static_cast<CallData*>(elem->call_data);
|
2362
2306
|
if (error != GRPC_ERROR_NONE) {
|
2363
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
2307
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
2364
2308
|
gpr_log(GPR_INFO,
|
2365
2309
|
"chand=%p calld=%p: error applying config to call: error=%s",
|
2366
2310
|
chand, calld, grpc_error_std_string(error).c_str());
|
@@ -2392,6 +2336,9 @@ bool ClientChannel::CallData::CheckResolutionLocked(grpc_call_element* elem,
|
|
2392
2336
|
ClientChannel* chand = static_cast<ClientChannel*>(elem->channel_data);
|
2393
2337
|
// If we're still in IDLE, we need to start resolving.
|
2394
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
|
+
}
|
2395
2342
|
// Bounce into the control plane work serializer to start resolving,
|
2396
2343
|
// in case we are still in IDLE state. Since we are holding on to the
|
2397
2344
|
// resolution mutex here, we offload it on the ExecCtx so that we don't
|
@@ -2404,7 +2351,7 @@ bool ClientChannel::CallData::CheckResolutionLocked(grpc_call_element* elem,
|
|
2404
2351
|
auto* chand = static_cast<ClientChannel*>(arg);
|
2405
2352
|
chand->work_serializer_->Run(
|
2406
2353
|
[chand]()
|
2407
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand->work_serializer_) {
|
2354
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand->work_serializer_) {
|
2408
2355
|
chand->CheckConnectivityState(/*try_to_connect=*/true);
|
2409
2356
|
GRPC_CHANNEL_STACK_UNREF(chand->owning_stack_,
|
2410
2357
|
"CheckResolutionLocked");
|
@@ -2426,17 +2373,24 @@ bool ClientChannel::CallData::CheckResolutionLocked(grpc_call_element* elem,
|
|
2426
2373
|
if (GPR_UNLIKELY(!chand->received_service_config_data_)) {
|
2427
2374
|
// If the resolver returned transient failure before returning the
|
2428
2375
|
// first service config, fail any non-wait_for_ready calls.
|
2429
|
-
|
2430
|
-
if (resolver_error
|
2431
|
-
|
2432
|
-
|
2376
|
+
absl::Status resolver_error = chand->resolver_transient_failure_error_;
|
2377
|
+
if (!resolver_error.ok() && (send_initial_metadata_flags &
|
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
|
+
}
|
2433
2383
|
MaybeRemoveCallFromResolverQueuedCallsLocked(elem);
|
2434
|
-
*error =
|
2384
|
+
*error = absl_status_to_grpc_error(resolver_error);
|
2435
2385
|
return true;
|
2436
2386
|
}
|
2437
2387
|
// Either the resolver has not yet returned a result, or it has
|
2438
2388
|
// returned transient failure but the call is wait_for_ready. In
|
2439
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
|
+
}
|
2440
2394
|
MaybeAddCallToResolverQueuedCallsLocked(elem);
|
2441
2395
|
return false;
|
2442
2396
|
}
|
@@ -2461,7 +2415,7 @@ void ClientChannel::CallData::CreateDynamicCall(grpc_call_element* elem) {
|
|
2461
2415
|
call_combiner_};
|
2462
2416
|
grpc_error_handle error = GRPC_ERROR_NONE;
|
2463
2417
|
DynamicFilters* channel_stack = args.channel_stack.get();
|
2464
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
2418
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
2465
2419
|
gpr_log(
|
2466
2420
|
GPR_INFO,
|
2467
2421
|
"chand=%p calld=%p: creating dynamic call stack on channel_stack=%p",
|
@@ -2469,7 +2423,7 @@ void ClientChannel::CallData::CreateDynamicCall(grpc_call_element* elem) {
|
|
2469
2423
|
}
|
2470
2424
|
dynamic_call_ = channel_stack->CreateCall(std::move(args), &error);
|
2471
2425
|
if (error != GRPC_ERROR_NONE) {
|
2472
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
2426
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
2473
2427
|
gpr_log(GPR_INFO,
|
2474
2428
|
"chand=%p calld=%p: failed to create dynamic call: error=%s",
|
2475
2429
|
chand, this, grpc_error_std_string(error).c_str());
|
@@ -2487,62 +2441,71 @@ void ClientChannel::CallData::CreateDynamicCall(grpc_call_element* elem) {
|
|
2487
2441
|
class ClientChannel::LoadBalancedCall::Metadata
|
2488
2442
|
: public LoadBalancingPolicy::MetadataInterface {
|
2489
2443
|
public:
|
2490
|
-
Metadata(
|
2491
|
-
: lb_call_(lb_call), batch_(batch) {}
|
2444
|
+
explicit Metadata(grpc_metadata_batch* batch) : batch_(batch) {}
|
2492
2445
|
|
2493
2446
|
void Add(absl::string_view key, absl::string_view value) override {
|
2494
|
-
|
2495
|
-
|
2496
|
-
|
2497
|
-
|
2498
|
-
|
2499
|
-
|
2500
|
-
|
2447
|
+
if (batch_ == nullptr) return;
|
2448
|
+
// Gross, egregious hack to support legacy grpclb behavior.
|
2449
|
+
// TODO(ctiller): Use a promise context for this once that plumbing is done.
|
2450
|
+
if (key == GrpcLbClientStatsMetadata::key()) {
|
2451
|
+
batch_->Set(
|
2452
|
+
GrpcLbClientStatsMetadata(),
|
2453
|
+
const_cast<GrpcLbClientStats*>(
|
2454
|
+
reinterpret_cast<const GrpcLbClientStats*>(value.data())));
|
2455
|
+
return;
|
2456
|
+
}
|
2457
|
+
batch_->Append(key, Slice::FromStaticString(value),
|
2458
|
+
[key](absl::string_view error, const Slice& value) {
|
2459
|
+
gpr_log(GPR_ERROR, "%s",
|
2460
|
+
absl::StrCat(error, " key:", key,
|
2461
|
+
" value:", value.as_string_view())
|
2462
|
+
.c_str());
|
2463
|
+
});
|
2501
2464
|
}
|
2502
2465
|
|
2503
|
-
|
2504
|
-
|
2505
|
-
|
2506
|
-
|
2507
|
-
|
2508
|
-
|
2509
|
-
iterator end() const override {
|
2510
|
-
static_assert(sizeof(grpc_linked_mdelem*) <= sizeof(intptr_t),
|
2511
|
-
"iterator size too large");
|
2512
|
-
return iterator(this, 0);
|
2466
|
+
std::vector<std::pair<std::string, std::string>> TestOnlyCopyToVector()
|
2467
|
+
override {
|
2468
|
+
if (batch_ == nullptr) return {};
|
2469
|
+
Encoder encoder;
|
2470
|
+
batch_->Encode(&encoder);
|
2471
|
+
return encoder.Take();
|
2513
2472
|
}
|
2514
2473
|
|
2515
|
-
|
2516
|
-
|
2517
|
-
|
2518
|
-
|
2519
|
-
grpc_metadata_batch_remove(batch_, linked_mdelem);
|
2520
|
-
return iterator(this, handle);
|
2474
|
+
absl::optional<absl::string_view> Lookup(absl::string_view key,
|
2475
|
+
std::string* buffer) const override {
|
2476
|
+
if (batch_ == nullptr) return absl::nullopt;
|
2477
|
+
return batch_->GetStringValue(key, buffer);
|
2521
2478
|
}
|
2522
2479
|
|
2523
2480
|
private:
|
2524
|
-
|
2525
|
-
|
2526
|
-
|
2481
|
+
class Encoder {
|
2482
|
+
public:
|
2483
|
+
void Encode(const Slice& key, const Slice& value) {
|
2484
|
+
out_.emplace_back(std::string(key.as_string_view()),
|
2485
|
+
std::string(value.as_string_view()));
|
2527
2486
|
}
|
2528
|
-
return entry;
|
2529
|
-
}
|
2530
2487
|
|
2531
|
-
|
2532
|
-
|
2533
|
-
|
2534
|
-
|
2535
|
-
|
2488
|
+
template <class Which>
|
2489
|
+
void Encode(Which, const typename Which::ValueType& value) {
|
2490
|
+
auto value_slice = Which::Encode(value);
|
2491
|
+
out_.emplace_back(std::string(Which::key()),
|
2492
|
+
std::string(value_slice.as_string_view()));
|
2493
|
+
}
|
2536
2494
|
|
2537
|
-
|
2538
|
-
|
2539
|
-
|
2540
|
-
|
2541
|
-
|
2542
|
-
|
2543
|
-
|
2495
|
+
void Encode(GrpcTimeoutMetadata,
|
2496
|
+
const typename GrpcTimeoutMetadata::ValueType&) {}
|
2497
|
+
void Encode(HttpPathMetadata, const Slice&) {}
|
2498
|
+
void Encode(HttpMethodMetadata,
|
2499
|
+
const typename HttpMethodMetadata::ValueType&) {}
|
2500
|
+
|
2501
|
+
std::vector<std::pair<std::string, std::string>> Take() {
|
2502
|
+
return std::move(out_);
|
2503
|
+
}
|
2504
|
+
|
2505
|
+
private:
|
2506
|
+
std::vector<std::pair<std::string, std::string>> out_;
|
2507
|
+
};
|
2544
2508
|
|
2545
|
-
LoadBalancedCall* lb_call_;
|
2546
2509
|
grpc_metadata_batch* batch_;
|
2547
2510
|
};
|
2548
2511
|
|
@@ -2557,19 +2520,6 @@ class ClientChannel::LoadBalancedCall::LbCallState
|
|
2557
2520
|
|
2558
2521
|
void* Alloc(size_t size) override { return lb_call_->arena_->Alloc(size); }
|
2559
2522
|
|
2560
|
-
const LoadBalancingPolicy::BackendMetricData* GetBackendMetricData()
|
2561
|
-
override {
|
2562
|
-
if (lb_call_->backend_metric_data_ == nullptr) {
|
2563
|
-
grpc_linked_mdelem* md = lb_call_->recv_trailing_metadata_->idx.named
|
2564
|
-
.x_endpoint_load_metrics_bin;
|
2565
|
-
if (md != nullptr) {
|
2566
|
-
lb_call_->backend_metric_data_ =
|
2567
|
-
ParseBackendMetricData(GRPC_MDVALUE(md->md), lb_call_->arena_);
|
2568
|
-
}
|
2569
|
-
}
|
2570
|
-
return lb_call_->backend_metric_data_;
|
2571
|
-
}
|
2572
|
-
|
2573
2523
|
absl::string_view ExperimentalGetCallAttribute(const char* key) override {
|
2574
2524
|
auto* service_config_call_data = static_cast<ServiceConfigCallData*>(
|
2575
2525
|
lb_call_->call_context_[GRPC_CONTEXT_SERVICE_CONFIG_CALL_DATA].value);
|
@@ -2584,7 +2534,33 @@ class ClientChannel::LoadBalancedCall::LbCallState
|
|
2584
2534
|
};
|
2585
2535
|
|
2586
2536
|
//
|
2587
|
-
// LoadBalancedCall
|
2537
|
+
// ClientChannel::LoadBalancedCall::BackendMetricAccessor
|
2538
|
+
//
|
2539
|
+
|
2540
|
+
class ClientChannel::LoadBalancedCall::BackendMetricAccessor
|
2541
|
+
: public LoadBalancingPolicy::BackendMetricAccessor {
|
2542
|
+
public:
|
2543
|
+
explicit BackendMetricAccessor(LoadBalancedCall* lb_call)
|
2544
|
+
: lb_call_(lb_call) {}
|
2545
|
+
|
2546
|
+
const BackendMetricData* GetBackendMetricData() override {
|
2547
|
+
if (lb_call_->backend_metric_data_ == nullptr &&
|
2548
|
+
lb_call_->recv_trailing_metadata_ != nullptr) {
|
2549
|
+
if (const auto* md = lb_call_->recv_trailing_metadata_->get_pointer(
|
2550
|
+
XEndpointLoadMetricsBinMetadata())) {
|
2551
|
+
lb_call_->backend_metric_data_ =
|
2552
|
+
ParseBackendMetricData(*md, lb_call_->arena_);
|
2553
|
+
}
|
2554
|
+
}
|
2555
|
+
return lb_call_->backend_metric_data_;
|
2556
|
+
}
|
2557
|
+
|
2558
|
+
private:
|
2559
|
+
LoadBalancedCall* lb_call_;
|
2560
|
+
};
|
2561
|
+
|
2562
|
+
//
|
2563
|
+
// ClientChannel::LoadBalancedCall
|
2588
2564
|
//
|
2589
2565
|
|
2590
2566
|
namespace {
|
@@ -2605,7 +2581,7 @@ ClientChannel::LoadBalancedCall::LoadBalancedCall(
|
|
2605
2581
|
ConfigSelector::CallDispatchController* call_dispatch_controller,
|
2606
2582
|
bool is_transparent_retry)
|
2607
2583
|
: InternallyRefCounted(
|
2608
|
-
GRPC_TRACE_FLAG_ENABLED(
|
2584
|
+
GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)
|
2609
2585
|
? "LoadBalancedCall"
|
2610
2586
|
: nullptr),
|
2611
2587
|
chand_(chand),
|
@@ -2619,15 +2595,18 @@ ClientChannel::LoadBalancedCall::LoadBalancedCall(
|
|
2619
2595
|
on_call_destruction_complete_(on_call_destruction_complete),
|
2620
2596
|
call_dispatch_controller_(call_dispatch_controller),
|
2621
2597
|
call_attempt_tracer_(
|
2622
|
-
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
|
+
}
|
2623
2603
|
|
2624
2604
|
ClientChannel::LoadBalancedCall::~LoadBalancedCall() {
|
2625
|
-
grpc_slice_unref_internal(path_);
|
2626
2605
|
GRPC_ERROR_UNREF(cancel_error_);
|
2627
2606
|
GRPC_ERROR_UNREF(failure_error_);
|
2628
2607
|
if (backend_metric_data_ != nullptr) {
|
2629
|
-
backend_metric_data_
|
2630
|
-
|
2608
|
+
backend_metric_data_->LoadBalancingPolicy::BackendMetricAccessor::
|
2609
|
+
BackendMetricData::~BackendMetricData();
|
2631
2610
|
}
|
2632
2611
|
// Make sure there are no remaining pending batches.
|
2633
2612
|
for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
|
@@ -2640,6 +2619,12 @@ ClientChannel::LoadBalancedCall::~LoadBalancedCall() {
|
|
2640
2619
|
}
|
2641
2620
|
|
2642
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
|
+
}
|
2643
2628
|
// Compute latency and report it to the tracer.
|
2644
2629
|
if (call_attempt_tracer_ != nullptr) {
|
2645
2630
|
gpr_timespec latency =
|
@@ -2666,7 +2651,7 @@ size_t ClientChannel::LoadBalancedCall::GetBatchIndex(
|
|
2666
2651
|
void ClientChannel::LoadBalancedCall::PendingBatchesAdd(
|
2667
2652
|
grpc_transport_stream_op_batch* batch) {
|
2668
2653
|
const size_t idx = GetBatchIndex(batch);
|
2669
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
2654
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2670
2655
|
gpr_log(GPR_INFO,
|
2671
2656
|
"chand=%p lb_call=%p: adding pending batch at index %" PRIuPTR,
|
2672
2657
|
chand_, this, idx);
|
@@ -2693,7 +2678,7 @@ void ClientChannel::LoadBalancedCall::PendingBatchesFail(
|
|
2693
2678
|
GPR_ASSERT(error != GRPC_ERROR_NONE);
|
2694
2679
|
GRPC_ERROR_UNREF(failure_error_);
|
2695
2680
|
failure_error_ = error;
|
2696
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
2681
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2697
2682
|
size_t num_batches = 0;
|
2698
2683
|
for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
|
2699
2684
|
if (pending_batches_[i] != nullptr) ++num_batches;
|
@@ -2735,7 +2720,7 @@ void ClientChannel::LoadBalancedCall::ResumePendingBatchInCallCombiner(
|
|
2735
2720
|
|
2736
2721
|
// This is called via the call combiner, so access to calld is synchronized.
|
2737
2722
|
void ClientChannel::LoadBalancedCall::PendingBatchesResume() {
|
2738
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
2723
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2739
2724
|
size_t num_batches = 0;
|
2740
2725
|
for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
|
2741
2726
|
if (pending_batches_[i] != nullptr) ++num_batches;
|
@@ -2764,6 +2749,14 @@ void ClientChannel::LoadBalancedCall::PendingBatchesResume() {
|
|
2764
2749
|
|
2765
2750
|
void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
|
2766
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
|
+
}
|
2767
2760
|
// Handle call tracing.
|
2768
2761
|
if (call_attempt_tracer_ != nullptr) {
|
2769
2762
|
// Record send ops in tracer.
|
@@ -2827,7 +2820,7 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
|
|
2827
2820
|
// the channel's data plane mutex, which is more efficient (especially for
|
2828
2821
|
// streaming calls).
|
2829
2822
|
if (subchannel_call_ != nullptr) {
|
2830
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
2823
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2831
2824
|
gpr_log(GPR_INFO,
|
2832
2825
|
"chand=%p lb_call=%p: starting batch on subchannel_call=%p",
|
2833
2826
|
chand_, this, subchannel_call_.get());
|
@@ -2839,7 +2832,7 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
|
|
2839
2832
|
//
|
2840
2833
|
// If we've previously been cancelled, immediately fail any new batches.
|
2841
2834
|
if (GPR_UNLIKELY(cancel_error_ != GRPC_ERROR_NONE)) {
|
2842
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
2835
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2843
2836
|
gpr_log(GPR_INFO, "chand=%p lb_call=%p: failing batch with error: %s",
|
2844
2837
|
chand_, this, grpc_error_std_string(cancel_error_).c_str());
|
2845
2838
|
}
|
@@ -2857,7 +2850,7 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
|
|
2857
2850
|
// error to the caller when the first batch does get passed down.
|
2858
2851
|
GRPC_ERROR_UNREF(cancel_error_);
|
2859
2852
|
cancel_error_ = GRPC_ERROR_REF(batch->payload->cancel_stream.cancel_error);
|
2860
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
2853
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2861
2854
|
gpr_log(GPR_INFO, "chand=%p lb_call=%p: recording cancel_error=%s",
|
2862
2855
|
chand_, this, grpc_error_std_string(cancel_error_).c_str());
|
2863
2856
|
}
|
@@ -2873,7 +2866,7 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
|
|
2873
2866
|
// For batches containing a send_initial_metadata op, acquire the
|
2874
2867
|
// channel's data plane mutex to pick a subchannel.
|
2875
2868
|
if (GPR_LIKELY(batch->send_initial_metadata)) {
|
2876
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
2869
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2877
2870
|
gpr_log(GPR_INFO,
|
2878
2871
|
"chand=%p lb_call=%p: grabbing data plane mutex to perform pick",
|
2879
2872
|
chand_, this);
|
@@ -2881,7 +2874,7 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
|
|
2881
2874
|
PickSubchannel(this, GRPC_ERROR_NONE);
|
2882
2875
|
} else {
|
2883
2876
|
// For all other batches, release the call combiner.
|
2884
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
2877
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2885
2878
|
gpr_log(GPR_INFO,
|
2886
2879
|
"chand=%p lb_call=%p: saved batch, yielding call combiner",
|
2887
2880
|
chand_, this);
|
@@ -2894,6 +2887,12 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
|
|
2894
2887
|
void ClientChannel::LoadBalancedCall::SendInitialMetadataOnComplete(
|
2895
2888
|
void* arg, grpc_error_handle error) {
|
2896
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
|
+
}
|
2897
2896
|
self->call_attempt_tracer_->RecordOnDoneSendInitialMetadata(
|
2898
2897
|
self->peer_string_);
|
2899
2898
|
Closure::Run(DEBUG_LOCATION,
|
@@ -2904,6 +2903,11 @@ void ClientChannel::LoadBalancedCall::SendInitialMetadataOnComplete(
|
|
2904
2903
|
void ClientChannel::LoadBalancedCall::RecvInitialMetadataReady(
|
2905
2904
|
void* arg, grpc_error_handle error) {
|
2906
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
|
+
}
|
2907
2911
|
if (error == GRPC_ERROR_NONE) {
|
2908
2912
|
// recv_initial_metadata_flags is not populated for clients
|
2909
2913
|
self->call_attempt_tracer_->RecordReceivedInitialMetadata(
|
@@ -2916,6 +2920,10 @@ void ClientChannel::LoadBalancedCall::RecvInitialMetadataReady(
|
|
2916
2920
|
void ClientChannel::LoadBalancedCall::RecvMessageReady(
|
2917
2921
|
void* arg, grpc_error_handle error) {
|
2918
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
|
+
}
|
2919
2927
|
if (*self->recv_message_ != nullptr) {
|
2920
2928
|
self->call_attempt_tracer_->RecordReceivedMessage(**self->recv_message_);
|
2921
2929
|
}
|
@@ -2926,47 +2934,41 @@ void ClientChannel::LoadBalancedCall::RecvMessageReady(
|
|
2926
2934
|
void ClientChannel::LoadBalancedCall::RecvTrailingMetadataReady(
|
2927
2935
|
void* arg, grpc_error_handle error) {
|
2928
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
|
+
}
|
2929
2946
|
// Check if we have a tracer or an LB callback to invoke.
|
2930
2947
|
if (self->call_attempt_tracer_ != nullptr ||
|
2931
|
-
self->
|
2948
|
+
self->lb_subchannel_call_tracker_ != nullptr) {
|
2932
2949
|
// Get the call's status.
|
2933
2950
|
absl::Status status;
|
2934
2951
|
if (error != GRPC_ERROR_NONE) {
|
2935
2952
|
// Get status from error.
|
2936
2953
|
grpc_status_code code;
|
2937
|
-
|
2954
|
+
std::string message;
|
2938
2955
|
grpc_error_get_status(error, self->deadline_, &code, &message,
|
2939
2956
|
/*http_error=*/nullptr, /*error_string=*/nullptr);
|
2940
|
-
status = absl::Status(static_cast<absl::StatusCode>(code),
|
2941
|
-
StringViewFromSlice(message));
|
2957
|
+
status = absl::Status(static_cast<absl::StatusCode>(code), message);
|
2942
2958
|
} else {
|
2943
2959
|
// Get status from headers.
|
2944
|
-
const auto&
|
2945
|
-
GPR_ASSERT(fields.grpc_status != nullptr);
|
2960
|
+
const auto& md = *self->recv_trailing_metadata_;
|
2946
2961
|
grpc_status_code code =
|
2947
|
-
|
2962
|
+
md.get(GrpcStatusMetadata()).value_or(GRPC_STATUS_UNKNOWN);
|
2948
2963
|
if (code != GRPC_STATUS_OK) {
|
2949
2964
|
absl::string_view message;
|
2950
|
-
if (
|
2951
|
-
message =
|
2965
|
+
if (const auto* grpc_message = md.get_pointer(GrpcMessageMetadata())) {
|
2966
|
+
message = grpc_message->as_string_view();
|
2952
2967
|
}
|
2953
2968
|
status = absl::Status(static_cast<absl::StatusCode>(code), message);
|
2954
2969
|
}
|
2955
2970
|
}
|
2956
|
-
|
2957
|
-
if (self->call_attempt_tracer_ != nullptr) {
|
2958
|
-
self->call_attempt_tracer_->RecordReceivedTrailingMetadata(
|
2959
|
-
status, self->recv_trailing_metadata_,
|
2960
|
-
*self->transport_stream_stats_);
|
2961
|
-
}
|
2962
|
-
// If the LB policy requested a callback for trailing metadata, invoke
|
2963
|
-
// the callback.
|
2964
|
-
if (self->lb_recv_trailing_metadata_ready_ != nullptr) {
|
2965
|
-
Metadata trailing_metadata(self, self->recv_trailing_metadata_);
|
2966
|
-
LbCallState lb_call_state(self);
|
2967
|
-
self->lb_recv_trailing_metadata_ready_(status, &trailing_metadata,
|
2968
|
-
&lb_call_state);
|
2969
|
-
}
|
2971
|
+
self->RecordCallCompletion(status);
|
2970
2972
|
}
|
2971
2973
|
// Chain to original callback.
|
2972
2974
|
if (self->failure_error_ != GRPC_ERROR_NONE) {
|
@@ -2979,16 +2981,35 @@ void ClientChannel::LoadBalancedCall::RecvTrailingMetadataReady(
|
|
2979
2981
|
error);
|
2980
2982
|
}
|
2981
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
|
+
|
2982
3003
|
void ClientChannel::LoadBalancedCall::CreateSubchannelCall() {
|
2983
3004
|
SubchannelCall::Args call_args = {
|
2984
|
-
std::move(connected_subchannel_), pollent_, path_, /*start_time=*/0,
|
3005
|
+
std::move(connected_subchannel_), pollent_, path_.Ref(), /*start_time=*/0,
|
2985
3006
|
deadline_, arena_,
|
2986
3007
|
// TODO(roth): When we implement hedging support, we will probably
|
2987
3008
|
// need to use a separate call context for each subchannel call.
|
2988
3009
|
call_context_, call_combiner_};
|
2989
3010
|
grpc_error_handle error = GRPC_ERROR_NONE;
|
2990
3011
|
subchannel_call_ = SubchannelCall::Create(std::move(call_args), &error);
|
2991
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
3012
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2992
3013
|
gpr_log(GPR_INFO,
|
2993
3014
|
"chand=%p lb_call=%p: create subchannel_call=%p: error=%s", chand_,
|
2994
3015
|
this, subchannel_call_.get(), grpc_error_std_string(error).c_str());
|
@@ -3027,7 +3048,7 @@ class ClientChannel::LoadBalancedCall::LbQueuedCallCanceller {
|
|
3027
3048
|
auto* chand = lb_call->chand_;
|
3028
3049
|
{
|
3029
3050
|
MutexLock lock(&chand->data_plane_mu_);
|
3030
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
3051
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
3031
3052
|
gpr_log(GPR_INFO,
|
3032
3053
|
"chand=%p lb_call=%p: cancelling queued pick: "
|
3033
3054
|
"error=%s self=%p calld->pick_canceller=%p",
|
@@ -3053,7 +3074,7 @@ class ClientChannel::LoadBalancedCall::LbQueuedCallCanceller {
|
|
3053
3074
|
|
3054
3075
|
void ClientChannel::LoadBalancedCall::MaybeRemoveCallFromLbQueuedCallsLocked() {
|
3055
3076
|
if (!queued_pending_lb_pick_) return;
|
3056
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
3077
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
3057
3078
|
gpr_log(GPR_INFO, "chand=%p lb_call=%p: removing from queued picks list",
|
3058
3079
|
chand_, this);
|
3059
3080
|
}
|
@@ -3065,7 +3086,7 @@ void ClientChannel::LoadBalancedCall::MaybeRemoveCallFromLbQueuedCallsLocked() {
|
|
3065
3086
|
|
3066
3087
|
void ClientChannel::LoadBalancedCall::MaybeAddCallToLbQueuedCallsLocked() {
|
3067
3088
|
if (queued_pending_lb_pick_) return;
|
3068
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
3089
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
3069
3090
|
gpr_log(GPR_INFO, "chand=%p lb_call=%p: adding to queued picks list",
|
3070
3091
|
chand_, this);
|
3071
3092
|
}
|
@@ -3086,7 +3107,7 @@ void ClientChannel::LoadBalancedCall::PickDone(void* arg,
|
|
3086
3107
|
grpc_error_handle error) {
|
3087
3108
|
auto* self = static_cast<LoadBalancedCall*>(arg);
|
3088
3109
|
if (error != GRPC_ERROR_NONE) {
|
3089
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
3110
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
3090
3111
|
gpr_log(GPR_INFO,
|
3091
3112
|
"chand=%p lb_call=%p: failed to pick subchannel: error=%s",
|
3092
3113
|
self->chand_, self, grpc_error_std_string(error).c_str());
|
@@ -3125,10 +3146,10 @@ bool ClientChannel::LoadBalancedCall::PickSubchannelLocked(
|
|
3125
3146
|
send_initial_metadata.send_initial_metadata_flags;
|
3126
3147
|
// Perform LB pick.
|
3127
3148
|
LoadBalancingPolicy::PickArgs pick_args;
|
3128
|
-
pick_args.path =
|
3149
|
+
pick_args.path = path_.as_string_view();
|
3129
3150
|
LbCallState lb_call_state(this);
|
3130
3151
|
pick_args.call_state = &lb_call_state;
|
3131
|
-
Metadata initial_metadata(
|
3152
|
+
Metadata initial_metadata(initial_metadata_batch);
|
3132
3153
|
pick_args.initial_metadata = &initial_metadata;
|
3133
3154
|
auto result = chand_->picker_->Pick(pick_args);
|
3134
3155
|
return HandlePickResult<bool>(
|
@@ -3136,7 +3157,7 @@ bool ClientChannel::LoadBalancedCall::PickSubchannelLocked(
|
|
3136
3157
|
// CompletePick
|
3137
3158
|
[this](LoadBalancingPolicy::PickResult::Complete* complete_pick)
|
3138
3159
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::data_plane_mu_) {
|
3139
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
3160
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
3140
3161
|
gpr_log(GPR_INFO,
|
3141
3162
|
"chand=%p lb_call=%p: LB pick succeeded: subchannel=%p",
|
3142
3163
|
chand_, this, complete_pick->subchannel.get());
|
@@ -3144,18 +3165,35 @@ bool ClientChannel::LoadBalancedCall::PickSubchannelLocked(
|
|
3144
3165
|
GPR_ASSERT(complete_pick->subchannel != nullptr);
|
3145
3166
|
// Grab a ref to the connected subchannel while we're still
|
3146
3167
|
// holding the data plane mutex.
|
3147
|
-
|
3168
|
+
SubchannelWrapper* subchannel = static_cast<SubchannelWrapper*>(
|
3148
3169
|
complete_pick->subchannel.get());
|
3149
|
-
|
3150
|
-
|
3151
|
-
|
3170
|
+
connected_subchannel_ = subchannel->connected_subchannel();
|
3171
|
+
// If the subchannel has no connected subchannel (e.g., if the
|
3172
|
+
// subchannel has moved out of state READY but the LB policy hasn't
|
3173
|
+
// yet seen that change and given us a new picker), then just
|
3174
|
+
// queue the pick. We'll try again as soon as we get a new picker.
|
3175
|
+
if (connected_subchannel_ == nullptr) {
|
3176
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
3177
|
+
gpr_log(GPR_INFO,
|
3178
|
+
"chand=%p lb_call=%p: subchannel returned by LB picker "
|
3179
|
+
"has no connected subchannel; queueing pick",
|
3180
|
+
chand_, this);
|
3181
|
+
}
|
3182
|
+
MaybeAddCallToLbQueuedCallsLocked();
|
3183
|
+
return false;
|
3184
|
+
}
|
3185
|
+
lb_subchannel_call_tracker_ =
|
3186
|
+
std::move(complete_pick->subchannel_call_tracker);
|
3187
|
+
if (lb_subchannel_call_tracker_ != nullptr) {
|
3188
|
+
lb_subchannel_call_tracker_->Start();
|
3189
|
+
}
|
3152
3190
|
MaybeRemoveCallFromLbQueuedCallsLocked();
|
3153
3191
|
return true;
|
3154
3192
|
},
|
3155
3193
|
// QueuePick
|
3156
3194
|
[this](LoadBalancingPolicy::PickResult::Queue* /*queue_pick*/)
|
3157
3195
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::data_plane_mu_) {
|
3158
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
3196
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
3159
3197
|
gpr_log(GPR_INFO, "chand=%p lb_call=%p: LB pick queued", chand_,
|
3160
3198
|
this);
|
3161
3199
|
}
|
@@ -3166,17 +3204,10 @@ bool ClientChannel::LoadBalancedCall::PickSubchannelLocked(
|
|
3166
3204
|
[this, send_initial_metadata_flags,
|
3167
3205
|
&error](LoadBalancingPolicy::PickResult::Fail* fail_pick)
|
3168
3206
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::data_plane_mu_) {
|
3169
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
3207
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
3170
3208
|
gpr_log(GPR_INFO, "chand=%p lb_call=%p: LB pick failed: %s",
|
3171
3209
|
chand_, this, fail_pick->status.ToString().c_str());
|
3172
3210
|
}
|
3173
|
-
// If we're shutting down, fail all RPCs.
|
3174
|
-
grpc_error_handle disconnect_error = chand_->disconnect_error();
|
3175
|
-
if (disconnect_error != GRPC_ERROR_NONE) {
|
3176
|
-
MaybeRemoveCallFromLbQueuedCallsLocked();
|
3177
|
-
*error = GRPC_ERROR_REF(disconnect_error);
|
3178
|
-
return true;
|
3179
|
-
}
|
3180
3211
|
// If wait_for_ready is false, then the error indicates the RPC
|
3181
3212
|
// attempt's final status.
|
3182
3213
|
if ((send_initial_metadata_flags &
|
@@ -3197,7 +3228,7 @@ bool ClientChannel::LoadBalancedCall::PickSubchannelLocked(
|
|
3197
3228
|
// DropPick
|
3198
3229
|
[this, &error](LoadBalancingPolicy::PickResult::Drop* drop_pick)
|
3199
3230
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::data_plane_mu_) {
|
3200
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
3231
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
3201
3232
|
gpr_log(GPR_INFO, "chand=%p lb_call=%p: LB pick dropped: %s",
|
3202
3233
|
chand_, this, drop_pick->status.ToString().c_str());
|
3203
3234
|
}
|