grpc 1.50.0 → 1.56.0
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 +453 -176
- data/include/grpc/byte_buffer.h +76 -1
- data/include/grpc/byte_buffer_reader.h +19 -1
- data/include/grpc/compression.h +2 -2
- data/include/grpc/event_engine/event_engine.h +83 -23
- data/include/grpc/event_engine/internal/memory_allocator_impl.h +1 -1
- data/include/grpc/event_engine/internal/slice_cast.h +67 -0
- data/include/grpc/event_engine/memory_allocator.h +1 -1
- data/include/grpc/event_engine/slice.h +24 -4
- data/include/grpc/event_engine/slice_buffer.h +44 -3
- data/include/grpc/fork.h +25 -1
- data/include/grpc/grpc.h +3 -13
- data/include/grpc/grpc_audit_logging.h +96 -0
- data/include/grpc/grpc_posix.h +1 -1
- data/include/grpc/grpc_security.h +4 -0
- data/include/grpc/impl/codegen/atm.h +3 -71
- data/include/grpc/impl/codegen/atm_gcc_atomic.h +3 -58
- data/include/grpc/impl/codegen/atm_gcc_sync.h +3 -59
- data/include/grpc/impl/codegen/atm_windows.h +3 -106
- data/include/grpc/impl/codegen/byte_buffer.h +4 -78
- data/include/grpc/impl/codegen/byte_buffer_reader.h +4 -19
- data/include/grpc/impl/codegen/compression_types.h +3 -82
- data/include/grpc/impl/codegen/connectivity_state.h +3 -20
- data/include/grpc/impl/codegen/fork.h +4 -25
- data/include/grpc/impl/codegen/gpr_types.h +2 -34
- data/include/grpc/impl/codegen/grpc_types.h +3 -791
- data/include/grpc/impl/codegen/log.h +3 -86
- data/include/grpc/impl/codegen/port_platform.h +3 -758
- data/include/grpc/impl/codegen/propagation_bits.h +3 -28
- data/include/grpc/impl/codegen/slice.h +3 -106
- data/include/grpc/impl/codegen/status.h +4 -131
- data/include/grpc/impl/codegen/sync.h +3 -42
- data/include/grpc/impl/codegen/sync_abseil.h +3 -12
- data/include/grpc/impl/codegen/sync_custom.h +3 -14
- data/include/grpc/impl/codegen/sync_generic.h +3 -25
- data/include/grpc/impl/codegen/sync_posix.h +3 -28
- data/include/grpc/impl/codegen/sync_windows.h +3 -16
- data/include/grpc/impl/compression_types.h +109 -0
- data/include/grpc/impl/connectivity_state.h +47 -0
- data/include/grpc/impl/grpc_types.h +838 -0
- data/include/grpc/impl/propagation_bits.h +54 -0
- data/include/grpc/impl/slice_type.h +112 -0
- data/include/grpc/load_reporting.h +1 -1
- data/include/grpc/module.modulemap +7 -1
- data/include/grpc/slice.h +1 -1
- data/include/grpc/status.h +131 -1
- data/include/grpc/support/atm.h +70 -1
- data/include/grpc/support/atm_gcc_atomic.h +59 -1
- data/include/grpc/support/atm_gcc_sync.h +58 -1
- data/include/grpc/support/atm_windows.h +105 -1
- data/include/grpc/support/json.h +218 -0
- data/include/grpc/support/log.h +87 -1
- data/include/grpc/support/log_windows.h +1 -1
- data/include/grpc/support/port_platform.h +767 -1
- data/include/grpc/support/string_util.h +1 -1
- data/include/grpc/support/sync.h +35 -2
- data/include/grpc/support/sync_abseil.h +11 -1
- data/include/grpc/support/sync_custom.h +13 -1
- data/include/grpc/support/sync_generic.h +24 -1
- data/include/grpc/support/sync_posix.h +27 -1
- data/include/grpc/support/sync_windows.h +15 -1
- data/include/grpc/support/time.h +31 -6
- data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +164 -0
- data/src/core/ext/filters/backend_metrics/backend_metric_filter.h +52 -0
- data/src/core/ext/filters/backend_metrics/backend_metric_provider.h +29 -0
- data/src/core/ext/filters/census/grpc_context.cc +17 -18
- data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +28 -22
- data/src/core/ext/filters/channel_idle/channel_idle_filter.h +5 -4
- data/src/core/ext/filters/channel_idle/idle_filter_state.h +4 -4
- data/src/core/ext/filters/client_channel/backend_metric.cc +12 -1
- data/src/core/ext/filters/client_channel/backend_metric.h +3 -3
- data/src/core/ext/filters/client_channel/backup_poller.cc +26 -35
- data/src/core/ext/filters/client_channel/backup_poller.h +24 -27
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +51 -28
- data/src/core/ext/filters/client_channel/client_channel.cc +1014 -1016
- data/src/core/ext/filters/client_channel/client_channel.h +155 -187
- data/src/core/ext/filters/client_channel/client_channel_channelz.cc +36 -37
- data/src/core/ext/filters/client_channel/client_channel_channelz.h +22 -22
- data/src/core/ext/filters/client_channel/client_channel_factory.cc +17 -17
- data/src/core/ext/filters/client_channel/client_channel_factory.h +3 -3
- data/src/core/ext/filters/client_channel/client_channel_internal.h +77 -0
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +18 -18
- data/src/core/ext/filters/client_channel/client_channel_service_config.cc +153 -0
- data/src/core/ext/filters/client_channel/{resolver_result_parsing.h → client_channel_service_config.h} +26 -23
- data/src/core/ext/filters/client_channel/config_selector.h +25 -55
- data/src/core/ext/filters/client_channel/connector.h +9 -5
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +28 -55
- data/src/core/ext/filters/client_channel/dynamic_filters.h +10 -11
- data/src/core/ext/filters/client_channel/global_subchannel_pool.h +21 -21
- data/src/core/ext/filters/client_channel/http_proxy.cc +74 -42
- data/src/core/ext/filters/client_channel/http_proxy.h +21 -21
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +3 -4
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +3 -3
- data/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h +29 -21
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +7 -2
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +3 -4
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +66 -130
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h +40 -24
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +156 -178
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +26 -27
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +0 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +4 -6
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +18 -20
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +21 -22
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +19 -20
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +22 -23
- data/src/core/ext/filters/client_channel/lb_policy/health_check_client.cc +455 -0
- data/src/core/ext/filters/client_channel/lb_policy/health_check_client.h +54 -0
- data/src/core/ext/filters/client_channel/lb_policy/health_check_client_internal.h +186 -0
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +11 -94
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.h +4 -4
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric_internal.h +117 -0
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +263 -242
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +28 -7
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +28 -26
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +76 -112
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +159 -168
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +22 -5
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +173 -171
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +31 -25
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +68 -31
- data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/static_stride_scheduler.cc +198 -0
- data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/static_stride_scheduler.h +71 -0
- data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/weighted_round_robin.cc +1002 -0
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +76 -70
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +103 -105
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_attributes.cc +42 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/{xds.h → xds_attributes.h} +15 -17
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +3 -3
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +34 -41
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +76 -113
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +111 -185
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.cc +814 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.h +67 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_wrr_locality.cc +363 -0
- data/src/core/ext/filters/client_channel/local_subchannel_pool.h +21 -21
- data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +9 -10
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +59 -175
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.h +30 -0
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +42 -43
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +22 -23
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +92 -87
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +153 -153
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +54 -55
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_posix.cc +18 -18
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +18 -18
- data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_plugin.cc +60 -0
- data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_plugin.h +27 -0
- data/src/core/ext/filters/client_channel/resolver/dns/event_engine/event_engine_client_channel_resolver.cc +549 -0
- data/src/core/ext/filters/client_channel/resolver/dns/event_engine/event_engine_client_channel_resolver.h +35 -0
- data/src/core/ext/filters/client_channel/resolver/dns/event_engine/service_config_helper.cc +97 -0
- data/src/core/ext/filters/client_channel/resolver/dns/event_engine/service_config_helper.h +32 -0
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +20 -39
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.h +24 -0
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +1 -3
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +4 -4
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +85 -223
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +45 -36
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +12 -15
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +4 -7
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +280 -189
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +19 -4
- data/src/core/ext/filters/client_channel/retry_filter.cc +200 -264
- data/src/core/ext/filters/client_channel/retry_filter.h +3 -3
- data/src/core/ext/filters/client_channel/retry_service_config.cc +195 -236
- data/src/core/ext/filters/client_channel/retry_service_config.h +23 -26
- data/src/core/ext/filters/client_channel/retry_throttle.cc +27 -29
- data/src/core/ext/filters/client_channel/retry_throttle.h +29 -28
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +17 -47
- data/src/core/ext/filters/client_channel/subchannel.cc +133 -337
- data/src/core/ext/filters/client_channel/subchannel.h +23 -86
- data/src/core/ext/filters/client_channel/subchannel_interface_internal.h +3 -3
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +21 -21
- data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +36 -38
- data/src/core/ext/filters/client_channel/subchannel_stream_client.h +11 -8
- data/src/core/ext/filters/deadline/deadline_filter.cc +73 -64
- data/src/core/ext/filters/deadline/deadline_filter.h +6 -10
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +3 -2
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +3 -7
- data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.cc +118 -0
- data/src/core/ext/filters/fault_injection/{service_config_parser.h → fault_injection_service_config_parser.h} +20 -12
- data/src/core/ext/filters/http/client/http_client_filter.cc +47 -43
- data/src/core/ext/filters/http/client/http_client_filter.h +20 -20
- data/src/core/ext/filters/http/client_authority_filter.cc +19 -19
- data/src/core/ext/filters/http/client_authority_filter.h +21 -21
- data/src/core/ext/filters/http/http_filters_plugin.cc +30 -57
- data/src/core/ext/filters/http/message_compress/compression_filter.cc +323 -0
- data/src/core/ext/filters/http/message_compress/compression_filter.h +139 -0
- data/src/core/ext/filters/http/server/http_server_filter.cc +54 -52
- data/src/core/ext/filters/http/server/http_server_filter.h +21 -21
- data/src/core/ext/filters/message_size/message_size_filter.cc +184 -297
- data/src/core/ext/filters/message_size/message_size_filter.h +72 -20
- data/src/core/ext/filters/rbac/rbac_filter.cc +16 -15
- data/src/core/ext/filters/rbac/rbac_filter.h +3 -3
- data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +829 -538
- data/src/core/ext/filters/rbac/rbac_service_config_parser.h +7 -6
- data/src/core/ext/filters/server_config_selector/server_config_selector.h +9 -11
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +12 -16
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.h +3 -3
- data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +220 -0
- data/src/core/ext/filters/stateful_session/stateful_session_filter.h +81 -0
- data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.cc +82 -0
- data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.h +93 -0
- data/src/core/ext/gcp/metadata_query.cc +137 -0
- data/src/core/ext/gcp/metadata_query.h +87 -0
- data/src/core/ext/transport/chttp2/alpn/alpn.cc +18 -18
- data/src/core/ext/transport/chttp2/alpn/alpn.h +24 -24
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +68 -67
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +30 -24
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +149 -149
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +21 -21
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +22 -22
- data/src/core/ext/transport/chttp2/transport/bin_decoder.h +33 -33
- data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +41 -37
- data/src/core/ext/transport/chttp2/transport/bin_encoder.h +35 -31
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +673 -455
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +42 -22
- data/src/core/ext/transport/chttp2/transport/context_list_entry.h +70 -0
- data/src/core/ext/transport/chttp2/transport/decode_huff.cc +0 -36
- data/src/core/ext/transport/chttp2/transport/decode_huff.h +38 -85
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +130 -107
- data/src/core/ext/transport/chttp2/transport/flow_control.h +66 -39
- data/src/core/ext/transport/chttp2/transport/frame.h +21 -21
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +35 -32
- data/src/core/ext/transport/chttp2/transport/frame_data.h +27 -27
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +38 -36
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +20 -20
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +27 -31
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +21 -24
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +30 -25
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +21 -21
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +39 -37
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +22 -22
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +24 -21
- data/src/core/ext/transport/chttp2/transport/frame_window_update.h +21 -21
- data/src/core/ext/transport/chttp2/transport/hpack_constants.h +3 -3
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +201 -353
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +328 -164
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +4 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +5 -3
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +498 -744
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +30 -26
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +41 -37
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +30 -22
- data/src/core/ext/transport/chttp2/transport/http2_settings.cc +21 -19
- data/src/core/ext/transport/chttp2/transport/http2_settings.h +39 -37
- data/src/core/ext/transport/chttp2/transport/http_trace.cc +19 -0
- data/src/core/ext/transport/chttp2/transport/http_trace.h +24 -0
- data/src/core/ext/transport/chttp2/transport/huffsyms.cc +20 -20
- data/src/core/ext/transport/chttp2/transport/huffsyms.h +21 -21
- data/src/core/ext/transport/chttp2/transport/internal.h +220 -192
- data/src/core/ext/transport/chttp2/transport/parsing.cc +263 -109
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +19 -19
- data/src/core/ext/transport/chttp2/transport/stream_map.cc +23 -23
- data/src/core/ext/transport/chttp2/transport/stream_map.h +33 -33
- data/src/core/ext/transport/chttp2/transport/varint.cc +19 -20
- data/src/core/ext/transport/chttp2/transport/varint.h +37 -34
- data/src/core/ext/transport/chttp2/transport/writing.cc +93 -72
- data/src/core/ext/transport/inproc/inproc_plugin.cc +17 -17
- data/src/core/ext/transport/inproc/inproc_transport.cc +143 -155
- data/src/core/ext/transport/inproc/inproc_transport.h +21 -21
- data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.c +87 -52
- data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.h +414 -181
- data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.c +121 -59
- data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.h +485 -219
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +90 -55
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +415 -188
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.c +377 -194
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.h +1694 -666
- data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.c +30 -17
- data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.h +144 -47
- data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.c +34 -21
- data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.h +160 -62
- data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.c +27 -14
- data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.h +78 -38
- data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.c +20 -11
- data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.h +48 -26
- data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.c +20 -11
- data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.h +48 -26
- data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.c +109 -62
- data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.h +566 -244
- data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.c +21 -12
- data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.h +45 -30
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c +22 -19
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +82 -29
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +23 -16
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +45 -30
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +230 -143
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +733 -404
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +417 -258
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +1873 -867
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +74 -41
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +286 -148
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +537 -349
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +2038 -1178
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +21 -12
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +45 -30
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +89 -52
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +347 -232
- data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.c +264 -165
- data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.h +888 -476
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +154 -72
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +603 -213
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +22 -13
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +50 -36
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +380 -221
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +1168 -611
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +166 -94
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +666 -292
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +18 -11
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +37 -26
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +21 -12
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +45 -30
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.c +30 -17
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.h +144 -47
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +274 -167
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +789 -440
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +222 -128
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +1116 -485
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +22 -13
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +60 -37
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +350 -208
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +1088 -625
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +44 -11
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +175 -18
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +34 -19
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +118 -56
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +48 -16
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +189 -44
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +31 -18
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +143 -65
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +22 -13
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +51 -37
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +78 -43
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +265 -127
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +147 -84
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +454 -226
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +115 -62
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +559 -227
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +18 -11
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +35 -26
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +187 -107
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +969 -410
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +172 -95
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +864 -374
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +49 -23
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +182 -89
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +39 -18
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +74 -56
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.c +28 -15
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.h +71 -45
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +131 -74
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +489 -249
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +135 -80
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +505 -245
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +257 -127
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +1010 -387
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +91 -41
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +648 -183
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +1301 -751
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +5583 -2425
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +49 -28
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +164 -84
- data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.c +228 -141
- data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.h +738 -399
- data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.c +20 -10
- data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.h +53 -22
- data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.c +21 -12
- data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.h +45 -30
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +32 -19
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +70 -49
- data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.c +27 -14
- data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.h +110 -43
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.c +46 -25
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.h +259 -100
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.c +21 -12
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.h +49 -25
- data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.c +18 -11
- data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.h +35 -26
- data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.c +42 -23
- data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.h +108 -70
- data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.c +7 -4
- data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.h +21 -16
- data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.c +43 -24
- data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.h +110 -75
- data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.c +30 -16
- data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.h +100 -46
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +16 -9
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +73 -23
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +60 -37
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +150 -108
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +74 -43
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +357 -167
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c +44 -25
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +114 -80
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +42 -18
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +253 -67
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.c +75 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.h +201 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +474 -289
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +2156 -1037
- data/src/core/ext/upb-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb.c +53 -0
- data/src/core/ext/upb-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb.h +107 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.c +69 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.h +246 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/common/v3/common.upb.c +138 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/common/v3/common.upb.h +499 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.c +36 -17
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +144 -55
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.c +18 -11
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.h +35 -26
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +7 -4
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +15 -10
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +184 -96
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +907 -360
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +56 -33
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +150 -101
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +188 -109
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +827 -408
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.c +32 -19
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +109 -53
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +10 -7
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +18 -14
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +300 -175
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +1297 -511
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +42 -23
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +188 -75
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +130 -83
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +510 -238
- data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.c +22 -13
- data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.h +55 -34
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +39 -26
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +124 -68
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/filter_state.upb.c +56 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/filter_state.upb.h +130 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c +60 -26
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h +130 -51
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +37 -20
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +133 -63
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +22 -13
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +91 -40
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +21 -12
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +50 -32
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +18 -11
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +37 -26
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +46 -27
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +101 -70
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/status_code_input.upb.c +46 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/status_code_input.upb.h +117 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +40 -23
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +161 -75
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +31 -18
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +114 -56
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +46 -29
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +139 -91
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +65 -42
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +200 -121
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +80 -45
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +208 -131
- data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.c +34 -21
- data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.h +74 -53
- data/src/core/ext/upb-generated/envoy/type/v3/http.upb.c +7 -4
- data/src/core/ext/upb-generated/envoy/type/v3/http.upb.h +13 -8
- data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.c +16 -9
- data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.h +28 -18
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c +28 -15
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +55 -34
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +43 -22
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +91 -53
- data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.c +35 -20
- data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.h +92 -57
- data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_unit.upb.c +7 -4
- data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_unit.upb.h +16 -9
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +20 -11
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +48 -26
- data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.c +23 -14
- data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.h +61 -41
- data/src/core/ext/upb-generated/google/api/annotations.upb.c +14 -11
- data/src/core/ext/upb-generated/google/api/annotations.upb.h +30 -20
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +255 -154
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +934 -450
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +299 -180
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +946 -483
- data/src/core/ext/upb-generated/google/api/http.upb.c +68 -35
- data/src/core/ext/upb-generated/google/api/http.upb.h +284 -120
- data/src/core/ext/upb-generated/google/api/httpbody.upb.c +22 -13
- data/src/core/ext/upb-generated/google/api/httpbody.upb.h +95 -37
- data/src/core/ext/upb-generated/google/protobuf/any.upb.c +19 -10
- data/src/core/ext/upb-generated/google/protobuf/any.upb.h +38 -22
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +1018 -424
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +3851 -1412
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +19 -10
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +38 -22
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +10 -7
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +18 -14
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +62 -39
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +207 -102
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +19 -10
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +38 -22
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +90 -51
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +157 -107
- data/src/core/ext/upb-generated/google/rpc/status.upb.c +22 -13
- data/src/core/ext/upb-generated/google/rpc/status.upb.h +95 -37
- data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.c +59 -34
- data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.h +154 -92
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +43 -24
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +118 -60
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +250 -145
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +919 -415
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +34 -19
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +76 -51
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +25 -14
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +45 -30
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +144 -81
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +405 -217
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +51 -26
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +153 -61
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.c +173 -102
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.h +855 -298
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +68 -49
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +155 -104
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +26 -17
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +55 -34
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c +12 -9
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +31 -14
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +26 -17
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +55 -34
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +23 -16
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +45 -30
- data/src/core/ext/upb-generated/validate/validate.upb.c +845 -455
- data/src/core/ext/upb-generated/validate/validate.upb.h +4347 -1908
- data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.c +68 -49
- data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.h +155 -104
- data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.c +26 -17
- data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.h +55 -34
- data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.c +12 -9
- data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.h +31 -14
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +65 -44
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +137 -91
- data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.c +23 -16
- data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.h +45 -30
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +16 -9
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +28 -18
- data/src/core/ext/upb-generated/xds/core/v3/cidr.upb.c +56 -0
- data/src/core/ext/upb-generated/xds/core/v3/cidr.upb.h +122 -0
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +37 -22
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +96 -63
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +26 -17
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +52 -29
- data/src/core/ext/upb-generated/xds/core/v3/extension.upb.c +21 -12
- data/src/core/ext/upb-generated/xds/core/v3/extension.upb.h +45 -30
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +23 -14
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +62 -42
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +44 -25
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +169 -79
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +27 -14
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +65 -38
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +86 -30
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +223 -54
- data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.c +21 -13
- data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.h +89 -34
- data/src/core/ext/upb-generated/xds/type/matcher/v3/cel.upb.c +53 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/cel.upb.h +107 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/domain.upb.c +75 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/domain.upb.h +270 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/http_inputs.upb.c +39 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/http_inputs.upb.h +78 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/ip.upb.c +78 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/ip.upb.h +289 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.c +162 -101
- data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.h +501 -293
- data/src/core/ext/upb-generated/xds/type/matcher/v3/range.upb.c +160 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/range.upb.h +740 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.c +24 -15
- data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.h +53 -37
- data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.c +40 -23
- data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.h +161 -75
- data/src/core/ext/upb-generated/xds/type/v3/cel.upb.c +82 -0
- data/src/core/ext/upb-generated/xds/type/v3/cel.upb.h +240 -0
- data/src/core/ext/upb-generated/xds/type/v3/range.upb.c +85 -0
- data/src/core/ext/upb-generated/xds/type/v3/range.upb.h +246 -0
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +21 -13
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +45 -30
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/certs.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/certs.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/clusters.upbdefs.c +55 -54
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/clusters.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.c +35 -14
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.h +16 -5
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/init_dump.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/init_dump.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/memory.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/memory.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/metrics.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/metrics.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/mutex_stats.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/mutex_stats.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/server_info.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/server_info.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/tap.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/tap.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +252 -241
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +233 -225
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +6 -10
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/common/matcher/v3/matcher.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/common/matcher/v3/matcher.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c +96 -76
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.h +11 -5
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +95 -94
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +13 -12
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h +11 -5
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_method_list.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_method_list.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +82 -76
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +193 -188
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +32 -16
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.h +11 -5
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c +8 -4
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.h +11 -5
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +72 -67
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +141 -134
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +21 -5
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c +55 -42
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/metrics_service.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/metrics_service.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +167 -138
- data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h +16 -5
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +82 -71
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +11 -5
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +772 -739
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +16 -5
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/datadog.upbdefs.c +17 -15
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/datadog.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/dynamic_ot.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/dynamic_ot.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/lightstep.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/lightstep.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opencensus.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opencensus.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.c +7 -9
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/service.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/service.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/skywalking.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/skywalking.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/xray.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/xray.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/zipkin.upbdefs.c +21 -19
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/zipkin.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +54 -43
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.c +60 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.h +41 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +382 -364
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upbdefs.c +50 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upbdefs.h +36 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +138 -136
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +151 -147
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c +6 -6
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +17 -14
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +6 -6
- data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +12 -13
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/type/http/v3/cookie.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/type/http/v3/cookie.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/filter_state.upbdefs.c +48 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/filter_state.upbdefs.h +36 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.c +13 -10
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.h +11 -5
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +15 -15
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/status_code_input.upbdefs.c +40 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/status_code_input.upbdefs.h +41 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/type/v3/hash_policy.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/type/v3/hash_policy.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/type/v3/http_status.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/type/v3/http_status.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_unit.upbdefs.c +11 -10
- data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_unit.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/type/v3/token_bucket.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/type/v3/token_bucket.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/google/api/httpbody.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/google/api/httpbody.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +329 -273
- data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.h +11 -5
- data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/opencensus/proto/trace/v1/trace_config.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/opencensus/proto/trace/v1/trace_config.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/migrate.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/migrate.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/security.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/security.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/sensitive.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/sensitive.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/versioning.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/versioning.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/xds/core/v3/cidr.upbdefs.c +45 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/cidr.upbdefs.h +36 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/xds/core/v3/extension.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/xds/core/v3/extension.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/cel.upbdefs.c +43 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/cel.upbdefs.h +36 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/domain.upbdefs.c +51 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/domain.upbdefs.h +41 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/http_inputs.upbdefs.c +36 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/http_inputs.upbdefs.h +36 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/ip.upbdefs.c +55 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/ip.upbdefs.h +41 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/matcher.upbdefs.c +10 -10
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/matcher.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/range.upbdefs.c +71 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/range.upbdefs.h +61 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/regex.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/regex.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/string.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/string.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/xds/type/v3/cel.upbdefs.c +60 -0
- data/src/core/ext/upbdefs-generated/xds/type/v3/cel.upbdefs.h +41 -0
- data/src/core/ext/upbdefs-generated/xds/type/v3/range.upbdefs.c +36 -0
- data/src/core/ext/upbdefs-generated/xds/type/v3/range.upbdefs.h +46 -0
- data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.c +5 -8
- data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.h +6 -5
- data/src/core/ext/xds/certificate_provider_store.cc +8 -13
- data/src/core/ext/xds/certificate_provider_store.h +4 -4
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +32 -46
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +17 -12
- data/src/core/ext/xds/upb_utils.h +4 -4
- data/src/core/ext/xds/xds_api.cc +61 -113
- data/src/core/ext/xds/xds_api.h +13 -15
- data/src/core/ext/xds/xds_audit_logger_registry.cc +122 -0
- data/src/core/ext/xds/xds_audit_logger_registry.h +68 -0
- data/src/core/ext/xds/xds_bootstrap.cc +3 -3
- data/src/core/ext/xds/xds_bootstrap.h +3 -4
- data/src/core/ext/xds/xds_bootstrap_grpc.cc +37 -33
- data/src/core/ext/xds/xds_bootstrap_grpc.h +24 -4
- data/src/core/ext/xds/xds_certificate_provider.cc +22 -25
- data/src/core/ext/xds/xds_certificate_provider.h +4 -4
- data/src/core/ext/xds/xds_channel_args.h +3 -3
- data/src/core/ext/xds/xds_channel_stack_modifier.cc +1 -3
- data/src/core/ext/xds/xds_channel_stack_modifier.h +4 -4
- data/src/core/ext/xds/xds_client.cc +171 -104
- data/src/core/ext/xds/xds_client.h +17 -9
- data/src/core/ext/xds/xds_client_grpc.cc +30 -24
- data/src/core/ext/xds/xds_client_grpc.h +4 -4
- data/src/core/ext/xds/xds_client_stats.cc +46 -32
- data/src/core/ext/xds/xds_client_stats.h +46 -41
- data/src/core/ext/xds/xds_cluster.cc +358 -205
- data/src/core/ext/xds/xds_cluster.h +55 -39
- data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +61 -74
- data/src/core/ext/xds/xds_cluster_specifier_plugin.h +50 -26
- data/src/core/ext/xds/xds_common_types.cc +213 -141
- data/src/core/ext/xds/xds_common_types.h +22 -16
- data/src/core/ext/xds/xds_endpoint.cc +229 -132
- data/src/core/ext/xds/xds_endpoint.h +17 -12
- data/src/core/ext/xds/xds_health_status.cc +80 -0
- data/src/core/ext/xds/xds_health_status.h +109 -0
- data/src/core/ext/xds/xds_http_fault_filter.cc +68 -51
- data/src/core/ext/xds/xds_http_fault_filter.h +19 -26
- data/src/core/ext/xds/xds_http_filters.cc +65 -73
- data/src/core/ext/xds/xds_http_filters.h +76 -25
- data/src/core/ext/xds/xds_http_rbac_filter.cc +303 -272
- data/src/core/ext/xds/xds_http_rbac_filter.h +19 -21
- data/src/core/ext/xds/xds_http_stateful_session_filter.cc +222 -0
- data/src/core/ext/xds/xds_http_stateful_session_filter.h +59 -0
- data/src/core/ext/xds/xds_lb_policy_registry.cc +211 -166
- data/src/core/ext/xds/xds_lb_policy_registry.h +13 -14
- data/src/core/ext/xds/xds_listener.cc +456 -420
- data/src/core/ext/xds/xds_listener.h +49 -51
- data/src/core/ext/xds/xds_resource_type.h +8 -16
- data/src/core/ext/xds/xds_resource_type_impl.h +13 -16
- data/src/core/ext/xds/xds_route_config.cc +566 -534
- data/src/core/ext/xds/xds_route_config.h +43 -32
- data/src/core/ext/xds/xds_routing.cc +4 -3
- data/src/core/ext/xds/xds_routing.h +5 -3
- data/src/core/ext/xds/xds_server_config_fetcher.cc +109 -106
- data/src/core/ext/xds/xds_transport.h +3 -3
- data/src/core/ext/xds/xds_transport_grpc.cc +10 -9
- data/src/core/ext/xds/xds_transport_grpc.h +4 -4
- data/src/core/lib/address_utils/parse_address.cc +30 -29
- data/src/core/lib/address_utils/parse_address.h +35 -35
- data/src/core/lib/address_utils/sockaddr_utils.cc +30 -28
- data/src/core/lib/address_utils/sockaddr_utils.h +36 -36
- data/src/core/lib/avl/avl.h +12 -7
- data/src/core/lib/backoff/backoff.cc +17 -17
- data/src/core/lib/backoff/backoff.h +20 -20
- data/src/core/lib/backoff/random_early_detection.cc +31 -0
- data/src/core/lib/backoff/random_early_detection.h +59 -0
- data/src/core/lib/channel/call_finalization.h +4 -4
- data/src/core/lib/channel/call_tracer.cc +51 -0
- data/src/core/lib/channel/call_tracer.h +106 -34
- data/src/core/lib/channel/channel_args.cc +100 -42
- data/src/core/lib/channel/channel_args.h +104 -49
- data/src/core/lib/channel/channel_args_preconditioning.h +4 -4
- data/src/core/lib/channel/channel_fwd.h +3 -3
- data/src/core/lib/channel/channel_stack.cc +60 -57
- data/src/core/lib/channel/channel_stack.h +148 -135
- data/src/core/lib/channel/channel_stack_builder.cc +21 -24
- data/src/core/lib/channel/channel_stack_builder.h +17 -9
- data/src/core/lib/channel/channel_stack_builder_impl.cc +56 -25
- data/src/core/lib/channel/channel_stack_builder_impl.h +5 -3
- data/src/core/lib/channel/channel_trace.cc +37 -34
- data/src/core/lib/channel/channel_trace.h +22 -22
- data/src/core/lib/channel/channelz.cc +181 -154
- data/src/core/lib/channel/channelz.h +71 -64
- data/src/core/lib/channel/channelz_registry.cc +41 -37
- data/src/core/lib/channel/channelz_registry.h +21 -21
- data/src/core/lib/channel/connected_channel.cc +764 -67
- data/src/core/lib/channel/connected_channel.h +20 -24
- data/src/core/lib/channel/context.h +33 -22
- data/src/core/lib/channel/promise_based_filter.cc +1591 -278
- data/src/core/lib/channel/promise_based_filter.h +486 -104
- data/src/core/lib/channel/server_call_tracer_filter.cc +110 -0
- data/src/core/lib/channel/status_util.cc +35 -17
- data/src/core/lib/channel/status_util.h +29 -22
- data/src/core/lib/compression/compression.cc +19 -19
- data/src/core/lib/compression/compression_internal.cc +38 -48
- data/src/core/lib/compression/compression_internal.h +25 -25
- data/src/core/lib/compression/message_compress.cc +26 -26
- data/src/core/lib/compression/message_compress.h +27 -27
- data/src/core/lib/config/config_vars.cc +153 -0
- data/src/core/lib/config/config_vars.h +127 -0
- data/src/core/lib/config/config_vars_non_generated.cc +51 -0
- data/src/core/lib/config/core_configuration.h +3 -3
- data/src/core/lib/config/load_config.cc +79 -0
- data/src/core/lib/config/load_config.h +55 -0
- data/src/core/lib/debug/event_log.cc +88 -0
- data/src/core/lib/debug/event_log.h +81 -0
- data/src/core/lib/debug/histogram_view.cc +69 -0
- data/src/core/lib/debug/histogram_view.h +37 -0
- data/src/core/lib/debug/stats.cc +39 -136
- data/src/core/lib/debug/stats.h +49 -55
- data/src/core/lib/debug/stats_data.cc +240 -88
- data/src/core/lib/debug/stats_data.h +295 -145
- data/src/core/lib/debug/trace.cc +56 -79
- data/src/core/lib/debug/trace.h +37 -54
- data/src/core/lib/event_engine/cf_engine/cf_engine.cc +211 -0
- data/src/core/lib/event_engine/cf_engine/cf_engine.h +86 -0
- data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc +354 -0
- data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.h +146 -0
- data/src/core/lib/event_engine/cf_engine/cftype_unique_ref.h +79 -0
- data/src/core/lib/event_engine/channel_args_endpoint_config.cc +5 -0
- data/src/core/lib/event_engine/channel_args_endpoint_config.h +3 -3
- data/src/core/lib/event_engine/common_closures.h +71 -0
- data/src/core/lib/event_engine/default_event_engine.cc +56 -16
- data/src/core/lib/event_engine/default_event_engine.h +44 -8
- data/src/core/lib/event_engine/default_event_engine_factory.cc +16 -6
- data/src/core/lib/event_engine/default_event_engine_factory.h +3 -3
- data/src/core/lib/event_engine/event_engine.cc +60 -0
- data/src/core/lib/event_engine/forkable.cc +11 -6
- data/src/core/lib/event_engine/forkable.h +3 -3
- data/src/core/lib/event_engine/handle_containers.h +12 -20
- data/src/core/lib/event_engine/memory_allocator.cc +1 -1
- data/src/core/lib/event_engine/memory_allocator_factory.h +47 -0
- data/src/core/lib/event_engine/poller.h +13 -7
- data/src/core/lib/event_engine/posix.h +162 -0
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +642 -0
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +139 -0
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +895 -0
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +97 -0
- data/src/core/lib/event_engine/posix_engine/event_poller.h +111 -0
- data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +68 -0
- data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.h +33 -0
- data/src/core/lib/event_engine/posix_engine/internal_errqueue.cc +77 -0
- data/src/core/lib/event_engine/posix_engine/internal_errqueue.h +179 -0
- data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +254 -0
- data/src/core/lib/event_engine/posix_engine/lockfree_event.h +73 -0
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +1338 -0
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +726 -0
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +523 -28
- data/src/core/lib/event_engine/posix_engine/posix_engine.h +165 -27
- data/src/core/lib/event_engine/posix_engine/posix_engine_closure.h +80 -0
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +292 -0
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +278 -0
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +379 -0
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.h +91 -0
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +867 -0
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +316 -0
- data/src/core/lib/event_engine/posix_engine/timer.cc +49 -49
- data/src/core/lib/event_engine/posix_engine/timer.h +90 -89
- data/src/core/lib/event_engine/posix_engine/timer_heap.cc +27 -27
- data/src/core/lib/event_engine/posix_engine/timer_heap.h +24 -24
- data/src/core/lib/event_engine/posix_engine/timer_manager.cc +76 -214
- data/src/core/lib/event_engine/posix_engine/timer_manager.h +44 -72
- data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +332 -0
- data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +185 -0
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.cc +127 -0
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.h +45 -0
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc +150 -0
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.h +45 -0
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h +76 -0
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc +67 -0
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h +37 -0
- data/src/core/lib/event_engine/resolved_address.cc +21 -1
- data/src/core/lib/event_engine/{executor/executor.h → resolved_address_internal.h} +11 -15
- data/src/core/lib/event_engine/shim.cc +64 -0
- data/src/core/lib/event_engine/{executor/threaded_executor.cc → shim.h} +10 -13
- data/src/core/lib/event_engine/slice.cc +8 -7
- data/src/core/lib/event_engine/slice_buffer.cc +2 -2
- data/src/core/lib/event_engine/tcp_socket_utils.cc +389 -0
- data/src/core/lib/event_engine/tcp_socket_utils.h +90 -0
- data/src/core/lib/event_engine/thread_local.cc +29 -0
- data/src/core/lib/event_engine/thread_local.h +32 -0
- data/src/core/lib/event_engine/thread_pool/original_thread_pool.cc +256 -0
- data/src/core/lib/event_engine/thread_pool/original_thread_pool.h +137 -0
- data/src/core/lib/event_engine/thread_pool/thread_pool.h +50 -0
- data/src/core/lib/event_engine/thread_pool/thread_pool_factory.cc +40 -0
- data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +489 -0
- data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +249 -0
- data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.cc +166 -0
- data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.h +108 -0
- data/src/core/lib/event_engine/time_util.h +3 -3
- data/src/core/lib/event_engine/trace.cc +7 -0
- data/src/core/lib/event_engine/trace.h +22 -3
- data/src/core/lib/event_engine/utils.cc +2 -2
- data/src/core/lib/event_engine/utils.h +12 -4
- data/src/core/lib/event_engine/windows/iocp.cc +39 -53
- data/src/core/lib/event_engine/windows/iocp.h +7 -7
- data/src/core/lib/event_engine/windows/win_socket.cc +69 -47
- data/src/core/lib/event_engine/windows/win_socket.h +38 -29
- data/src/core/lib/event_engine/windows/windows_endpoint.cc +379 -0
- data/src/core/lib/event_engine/windows/windows_endpoint.h +120 -0
- data/src/core/lib/event_engine/windows/windows_engine.cc +285 -33
- data/src/core/lib/event_engine/windows/windows_engine.h +70 -26
- data/src/core/lib/event_engine/windows/windows_listener.cc +370 -0
- data/src/core/lib/event_engine/windows/windows_listener.h +156 -0
- data/src/core/lib/event_engine/work_queue/basic_work_queue.cc +63 -0
- data/src/core/lib/event_engine/work_queue/basic_work_queue.h +71 -0
- data/src/core/lib/event_engine/work_queue/work_queue.h +62 -0
- data/src/core/lib/experiments/config.cc +56 -17
- data/src/core/lib/experiments/config.h +29 -3
- data/src/core/lib/experiments/experiments.cc +92 -29
- data/src/core/lib/experiments/experiments.h +101 -23
- data/src/core/lib/gpr/alloc.cc +19 -17
- data/src/core/lib/gpr/alloc.h +20 -20
- data/src/core/lib/gpr/{log_android.cc → android/log.cc} +22 -20
- data/src/core/lib/gpr/atm.cc +17 -17
- data/src/core/lib/gpr/iphone/cpu.cc +44 -0
- data/src/core/lib/gpr/{cpu_linux.cc → linux/cpu.cc} +28 -23
- data/src/core/lib/gpr/{log_linux.cc → linux/log.cc} +24 -24
- data/src/core/lib/gpr/log.cc +42 -47
- data/src/core/lib/gpr/log_internal.h +55 -0
- data/src/core/lib/gpr/{tmpfile_msys.cc → msys/tmpfile.cc} +21 -20
- data/src/core/lib/gpr/{cpu_posix.cc → posix/cpu.cc} +23 -22
- data/src/core/lib/gpr/{log_posix.cc → posix/log.cc} +20 -19
- data/src/core/lib/gpr/{string_posix.cc → posix/string.cc} +24 -24
- data/src/core/lib/gpr/{sync_posix.cc → posix/sync.cc} +23 -21
- data/src/core/lib/gpr/{time_posix.cc → posix/time.cc} +40 -30
- data/src/core/lib/gpr/{tmpfile_posix.cc → posix/tmpfile.cc} +22 -20
- data/src/core/lib/gpr/spinlock.h +20 -20
- data/src/core/lib/gpr/string.cc +25 -24
- data/src/core/lib/gpr/string.h +61 -61
- data/src/core/lib/gpr/sync.cc +25 -25
- data/src/core/lib/gpr/sync_abseil.cc +37 -27
- data/src/core/lib/gpr/time.cc +23 -21
- data/src/core/lib/gpr/time_precise.cc +22 -22
- data/src/core/lib/gpr/time_precise.h +20 -21
- data/src/core/lib/gpr/tmpfile.h +24 -24
- data/src/core/lib/gpr/useful.h +43 -30
- data/src/core/{ext/filters/client_channel/resolver/dns/dns_resolver_selection.cc → lib/gpr/windows/cpu.cc} +16 -11
- data/src/core/lib/gpr/{log_windows.cc → windows/log.cc} +25 -24
- data/src/core/lib/gpr/windows/string.cc +69 -0
- data/src/core/lib/gpr/{string_util_windows.cc → windows/string_util.cc} +22 -22
- data/src/core/lib/gpr/{sync_windows.cc → windows/sync.cc} +29 -27
- data/src/core/lib/gpr/{time_windows.cc → windows/time.cc} +25 -22
- data/src/core/lib/gpr/{tmpfile_windows.cc → windows/tmpfile.cc} +23 -22
- data/src/core/lib/gpr/wrap_memcpy.cc +23 -23
- data/src/core/lib/gprpp/atomic_utils.h +20 -20
- data/src/core/lib/gprpp/bitset.h +27 -3
- data/src/core/lib/gprpp/chunked_vector.h +3 -3
- data/src/core/lib/gprpp/construct_destruct.h +3 -3
- data/src/core/lib/gprpp/cpp_impl_of.h +3 -3
- data/src/core/lib/gprpp/crash.cc +43 -0
- data/src/core/lib/gprpp/crash.h +37 -0
- data/src/core/lib/gprpp/debug_location.h +20 -23
- data/src/core/lib/gprpp/dual_ref_counted.h +3 -3
- data/src/core/lib/gprpp/env.h +23 -23
- data/src/core/lib/gprpp/examine_stack.cc +17 -17
- data/src/core/lib/gprpp/examine_stack.h +21 -21
- data/src/core/lib/gprpp/fork.cc +49 -39
- data/src/core/lib/gprpp/fork.h +29 -27
- data/src/core/lib/gprpp/host_port.cc +28 -26
- data/src/core/lib/gprpp/host_port.h +32 -31
- data/src/core/lib/gprpp/{env_linux.cc → linux/env.cc} +21 -21
- data/src/core/lib/gprpp/load_file.cc +75 -0
- data/src/core/lib/gprpp/load_file.h +33 -0
- data/src/core/lib/gprpp/manual_constructor.h +22 -21
- data/src/core/lib/gprpp/match.h +3 -3
- data/src/core/lib/gprpp/memory.h +21 -21
- data/src/core/lib/gprpp/mpscq.cc +17 -17
- data/src/core/lib/gprpp/mpscq.h +21 -21
- data/src/core/lib/gprpp/no_destruct.h +4 -3
- data/src/core/lib/gprpp/notification.h +3 -3
- data/src/core/lib/gprpp/orphanable.h +25 -24
- data/src/core/lib/gprpp/overload.h +3 -3
- data/src/core/lib/gprpp/packed_table.h +3 -3
- data/src/core/lib/gprpp/per_cpu.cc +33 -0
- data/src/core/lib/gprpp/per_cpu.h +75 -0
- data/src/core/lib/gprpp/posix/env.cc +47 -0
- data/src/core/lib/gprpp/{stat_posix.cc → posix/stat.cc} +5 -4
- data/src/core/lib/gprpp/{thd_posix.cc → posix/thd.cc} +75 -64
- data/src/core/lib/gprpp/ref_counted.h +54 -55
- data/src/core/lib/gprpp/ref_counted_ptr.h +22 -21
- data/src/core/lib/gprpp/single_set_ptr.h +3 -3
- data/src/core/lib/gprpp/sorted_pack.h +3 -3
- data/src/core/lib/gprpp/stat.h +3 -3
- data/src/core/lib/gprpp/status_helper.cc +6 -5
- data/src/core/lib/gprpp/status_helper.h +4 -6
- data/src/core/lib/gprpp/strerror.cc +43 -0
- data/src/core/lib/gprpp/strerror.h +29 -0
- data/src/core/lib/gprpp/sync.h +23 -23
- data/src/core/lib/gprpp/table.h +4 -3
- data/src/core/lib/gprpp/tchar.h +3 -3
- data/src/core/lib/gprpp/thd.h +39 -23
- data/src/core/lib/gprpp/time.cc +18 -10
- data/src/core/lib/gprpp/time.h +16 -6
- data/src/core/lib/gprpp/time_averaged_stats.cc +20 -20
- data/src/core/lib/gprpp/time_averaged_stats.h +50 -50
- data/src/core/lib/gprpp/time_util.h +4 -4
- data/src/core/lib/gprpp/unique_type_name.h +21 -21
- data/src/core/lib/gprpp/validation_errors.cc +8 -3
- data/src/core/lib/gprpp/validation_errors.h +37 -13
- data/src/core/lib/gprpp/{env_windows.cc → windows/env.cc} +18 -18
- data/src/core/lib/gprpp/{stat_windows.cc → windows/stat.cc} +4 -2
- data/src/core/lib/gprpp/{thd_windows.cc → windows/thd.cc} +28 -28
- data/src/core/lib/gprpp/work_serializer.h +3 -3
- data/src/core/lib/handshaker/proxy_mapper.h +21 -21
- data/src/core/lib/handshaker/proxy_mapper_registry.cc +17 -17
- data/src/core/lib/handshaker/proxy_mapper_registry.h +21 -21
- data/src/core/lib/http/format_request.cc +19 -18
- data/src/core/lib/http/format_request.h +20 -20
- data/src/core/lib/http/httpcli.cc +58 -61
- data/src/core/lib/http/httpcli.h +29 -29
- data/src/core/lib/http/httpcli_security_connector.cc +22 -25
- data/src/core/lib/http/httpcli_ssl_credentials.h +3 -3
- data/src/core/lib/http/parser.cc +76 -87
- data/src/core/lib/http/parser.h +35 -35
- data/src/core/lib/iomgr/block_annotate.h +23 -23
- data/src/core/lib/iomgr/buffer_list.cc +156 -136
- data/src/core/lib/iomgr/buffer_list.h +122 -101
- data/src/core/lib/iomgr/call_combiner.cc +32 -30
- data/src/core/lib/iomgr/call_combiner.h +26 -27
- data/src/core/lib/iomgr/cfstream_handle.cc +34 -37
- data/src/core/lib/iomgr/cfstream_handle.h +25 -25
- data/src/core/lib/iomgr/closure.cc +27 -0
- data/src/core/lib/iomgr/closure.h +95 -48
- data/src/core/lib/iomgr/combiner.cc +20 -19
- data/src/core/lib/iomgr/combiner.h +20 -20
- data/src/core/lib/iomgr/dualstack_socket_posix.cc +21 -21
- data/src/core/lib/iomgr/dynamic_annotations.h +22 -22
- data/src/core/lib/iomgr/endpoint.cc +17 -17
- data/src/core/lib/iomgr/endpoint.h +49 -49
- data/src/core/lib/iomgr/endpoint_cfstream.cc +58 -53
- data/src/core/lib/iomgr/endpoint_cfstream.h +32 -32
- data/src/core/lib/iomgr/endpoint_pair.h +22 -22
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +22 -21
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +29 -20
- data/src/core/lib/iomgr/error.cc +49 -61
- data/src/core/lib/iomgr/error.h +45 -176
- data/src/core/lib/iomgr/error_cfstream.cc +18 -18
- data/src/core/lib/iomgr/error_cfstream.h +21 -21
- data/src/core/lib/iomgr/ev_apple.cc +33 -33
- data/src/core/lib/iomgr/ev_apple.h +21 -21
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +218 -198
- data/src/core/lib/iomgr/ev_epoll1_linux.h +20 -20
- data/src/core/lib/iomgr/ev_poll_posix.cc +212 -205
- data/src/core/lib/iomgr/ev_poll_posix.h +20 -20
- data/src/core/lib/iomgr/ev_posix.cc +47 -79
- data/src/core/lib/iomgr/ev_posix.h +88 -87
- data/src/core/lib/iomgr/ev_windows.cc +18 -18
- data/src/core/lib/iomgr/event_engine_shims/closure.cc +62 -0
- data/src/core/lib/{event_engine/executor/threaded_executor.h → iomgr/event_engine_shims/closure.h} +11 -16
- data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +471 -0
- data/src/core/lib/iomgr/event_engine_shims/endpoint.h +43 -0
- data/src/core/lib/iomgr/event_engine_shims/tcp_client.cc +91 -0
- data/src/core/lib/iomgr/event_engine_shims/tcp_client.h +44 -0
- data/src/core/lib/iomgr/exec_ctx.cc +34 -34
- data/src/core/lib/iomgr/exec_ctx.h +144 -144
- data/src/core/lib/iomgr/executor.cc +21 -21
- data/src/core/lib/iomgr/executor.h +27 -27
- data/src/core/lib/iomgr/fork_posix.cc +29 -26
- data/src/core/lib/iomgr/fork_windows.cc +21 -21
- data/src/core/lib/iomgr/gethostname.h +20 -20
- data/src/core/lib/iomgr/gethostname_fallback.cc +17 -17
- data/src/core/lib/iomgr/gethostname_host_name_max.cc +17 -17
- data/src/core/lib/iomgr/gethostname_sysconf.cc +17 -17
- data/src/core/lib/iomgr/grpc_if_nametoindex.h +22 -22
- data/src/core/lib/iomgr/grpc_if_nametoindex_posix.cc +20 -19
- data/src/core/lib/iomgr/grpc_if_nametoindex_unsupported.cc +20 -19
- data/src/core/lib/iomgr/internal_errqueue.cc +4 -2
- data/src/core/lib/iomgr/internal_errqueue.h +83 -83
- data/src/core/lib/iomgr/iocp_windows.cc +46 -24
- data/src/core/lib/iomgr/iocp_windows.h +32 -21
- data/src/core/lib/iomgr/iomgr.cc +23 -26
- data/src/core/lib/iomgr/iomgr.h +35 -35
- data/src/core/lib/iomgr/iomgr_fwd.h +3 -3
- data/src/core/lib/iomgr/iomgr_internal.cc +17 -17
- data/src/core/lib/iomgr/iomgr_internal.h +28 -28
- data/src/core/lib/iomgr/iomgr_posix.cc +20 -20
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +21 -20
- data/src/core/lib/iomgr/iomgr_windows.cc +32 -24
- data/src/core/lib/iomgr/load_file.cc +24 -27
- data/src/core/lib/iomgr/load_file.h +22 -22
- data/src/core/lib/iomgr/lockfree_event.cc +114 -114
- data/src/core/lib/iomgr/lockfree_event.h +23 -23
- data/src/core/lib/iomgr/nameser.h +86 -86
- data/src/core/lib/iomgr/polling_entity.cc +25 -21
- data/src/core/lib/iomgr/polling_entity.h +29 -29
- data/src/core/lib/iomgr/pollset.cc +17 -17
- data/src/core/lib/iomgr/pollset.h +54 -54
- data/src/core/lib/iomgr/pollset_set.cc +17 -17
- data/src/core/lib/iomgr/pollset_set.h +25 -25
- data/src/core/lib/iomgr/pollset_set_windows.cc +27 -27
- data/src/core/lib/iomgr/pollset_set_windows.h +20 -20
- data/src/core/lib/iomgr/pollset_windows.cc +33 -32
- data/src/core/lib/iomgr/pollset_windows.h +24 -24
- data/src/core/lib/iomgr/port.h +31 -31
- data/src/core/lib/iomgr/python_util.h +24 -24
- data/src/core/lib/iomgr/resolve_address.cc +26 -20
- data/src/core/lib/iomgr/resolve_address.h +24 -25
- data/src/core/lib/iomgr/resolve_address_impl.h +4 -4
- data/src/core/lib/iomgr/resolve_address_posix.cc +35 -45
- data/src/core/lib/iomgr/resolve_address_posix.h +4 -5
- data/src/core/lib/iomgr/resolve_address_windows.cc +18 -20
- data/src/core/lib/iomgr/resolve_address_windows.h +4 -5
- data/src/core/lib/iomgr/resolved_address.h +3 -3
- data/src/core/lib/iomgr/sockaddr.h +23 -23
- data/src/core/lib/iomgr/sockaddr_posix.h +21 -21
- data/src/core/lib/iomgr/sockaddr_utils_posix.cc +18 -17
- data/src/core/lib/iomgr/sockaddr_windows.h +21 -21
- data/src/core/lib/iomgr/socket_factory_posix.cc +18 -18
- data/src/core/lib/iomgr/socket_factory_posix.h +32 -32
- data/src/core/lib/iomgr/socket_mutator.cc +19 -18
- data/src/core/lib/iomgr/socket_mutator.h +39 -39
- data/src/core/lib/iomgr/socket_utils.h +27 -27
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +87 -70
- data/src/core/lib/iomgr/socket_utils_linux.cc +18 -17
- data/src/core/lib/iomgr/socket_utils_posix.cc +25 -20
- data/src/core/lib/iomgr/socket_utils_posix.h +84 -81
- data/src/core/lib/iomgr/socket_utils_windows.cc +20 -19
- data/src/core/lib/iomgr/socket_windows.cc +97 -42
- data/src/core/lib/iomgr/socket_windows.h +68 -61
- data/src/core/lib/iomgr/systemd_utils.cc +116 -0
- data/src/core/lib/iomgr/systemd_utils.h +33 -0
- data/src/core/lib/iomgr/tcp_client.cc +17 -17
- data/src/core/lib/iomgr/tcp_client.h +28 -28
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +39 -31
- data/src/core/lib/iomgr/tcp_client_posix.cc +86 -73
- data/src/core/lib/iomgr/tcp_client_posix.h +45 -45
- data/src/core/lib/iomgr/tcp_client_windows.cc +51 -42
- data/src/core/lib/iomgr/tcp_posix.cc +270 -301
- data/src/core/lib/iomgr/tcp_posix.h +29 -29
- data/src/core/lib/iomgr/tcp_server.cc +30 -22
- data/src/core/lib/iomgr/tcp_server.h +71 -65
- data/src/core/lib/iomgr/tcp_server_posix.cc +373 -98
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +67 -54
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +90 -55
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +40 -40
- data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +19 -19
- data/src/core/lib/iomgr/tcp_server_windows.cc +277 -119
- data/src/core/lib/iomgr/tcp_windows.cc +121 -101
- data/src/core/lib/iomgr/tcp_windows.h +34 -34
- data/src/core/lib/iomgr/timer.cc +17 -17
- data/src/core/lib/iomgr/timer.h +68 -68
- data/src/core/lib/iomgr/timer_generic.cc +132 -138
- data/src/core/lib/iomgr/timer_generic.h +21 -21
- data/src/core/lib/iomgr/timer_heap.cc +25 -25
- data/src/core/lib/iomgr/timer_heap.h +22 -22
- data/src/core/lib/iomgr/timer_manager.cc +30 -29
- data/src/core/lib/iomgr/timer_manager.h +27 -27
- data/src/core/lib/iomgr/unix_sockets_posix.cc +20 -21
- data/src/core/lib/iomgr/unix_sockets_posix.h +21 -21
- data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +19 -17
- data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +23 -21
- data/src/core/lib/iomgr/wakeup_fd_nospecial.cc +23 -23
- data/src/core/lib/iomgr/wakeup_fd_pipe.cc +29 -26
- data/src/core/lib/iomgr/wakeup_fd_pipe.h +20 -20
- data/src/core/lib/iomgr/wakeup_fd_posix.cc +18 -18
- data/src/core/lib/iomgr/wakeup_fd_posix.h +52 -52
- data/src/core/lib/json/json.h +5 -221
- data/src/core/lib/json/json_args.h +3 -3
- data/src/core/lib/json/json_channel_args.h +42 -0
- data/src/core/lib/json/json_object_loader.cc +39 -25
- data/src/core/lib/json/json_object_loader.h +69 -21
- data/src/core/lib/json/json_reader.cc +98 -70
- data/src/core/lib/json/json_reader.h +34 -0
- data/src/core/lib/json/json_util.cc +14 -19
- data/src/core/lib/json/json_util.h +12 -11
- data/src/core/lib/json/json_writer.cc +80 -81
- data/src/core/{ext/xds/xds_resource_type.cc → lib/json/json_writer.h} +11 -11
- data/src/core/lib/load_balancing/lb_policy.cc +36 -31
- data/src/core/lib/load_balancing/lb_policy.h +32 -10
- data/src/core/lib/load_balancing/lb_policy_factory.h +3 -3
- data/src/core/lib/load_balancing/lb_policy_registry.cc +10 -8
- data/src/core/lib/load_balancing/lb_policy_registry.h +3 -3
- data/src/core/lib/load_balancing/subchannel_interface.h +9 -14
- data/src/core/lib/matchers/matchers.cc +10 -9
- data/src/core/lib/matchers/matchers.h +5 -4
- data/src/core/lib/promise/activity.cc +43 -6
- data/src/core/lib/promise/activity.h +143 -79
- data/src/core/lib/promise/arena_promise.h +84 -54
- data/src/core/lib/promise/cancel_callback.h +77 -0
- data/src/core/lib/promise/context.h +17 -9
- data/src/core/lib/promise/detail/basic_join.h +197 -0
- data/src/core/lib/promise/detail/basic_seq.h +20 -45
- data/src/core/lib/promise/detail/promise_factory.h +67 -14
- data/src/core/lib/promise/detail/promise_like.h +3 -3
- data/src/core/lib/promise/detail/status.h +31 -3
- data/src/core/lib/promise/detail/switch.h +1455 -0
- data/src/core/lib/promise/exec_ctx_wakeup_scheduler.h +23 -15
- data/src/core/lib/promise/for_each.h +176 -0
- data/src/core/lib/promise/if.h +204 -0
- data/src/core/lib/promise/interceptor_list.h +329 -0
- data/src/core/lib/promise/latch.h +197 -23
- data/src/core/lib/promise/loop.h +22 -16
- data/src/core/lib/promise/map.h +12 -6
- data/src/core/lib/promise/party.cc +304 -0
- data/src/core/lib/promise/party.h +508 -0
- data/src/core/lib/promise/pipe.h +762 -0
- data/src/core/lib/promise/poll.h +177 -11
- data/src/core/lib/promise/prioritized_race.h +95 -0
- data/src/core/lib/promise/promise.h +6 -7
- data/src/core/lib/promise/race.h +6 -9
- data/src/core/lib/promise/seq.h +7 -8
- data/src/core/lib/promise/sleep.cc +7 -5
- data/src/core/lib/promise/sleep.h +4 -5
- data/src/core/lib/promise/trace.cc +20 -0
- data/src/core/lib/promise/trace.h +24 -0
- data/src/core/lib/promise/try_join.h +82 -0
- data/src/core/lib/promise/try_seq.h +14 -16
- data/src/core/lib/resolver/resolver.cc +17 -17
- data/src/core/lib/resolver/resolver.h +3 -3
- data/src/core/lib/resolver/resolver_factory.h +4 -4
- data/src/core/lib/resolver/resolver_registry.cc +15 -0
- data/src/core/lib/resolver/resolver_registry.h +3 -3
- data/src/core/lib/resolver/server_address.cc +19 -25
- data/src/core/lib/resolver/server_address.h +22 -30
- data/src/core/lib/resource_quota/api.cc +0 -1
- data/src/core/lib/resource_quota/api.h +4 -4
- data/src/core/lib/resource_quota/arena.cc +82 -20
- data/src/core/lib/resource_quota/arena.h +287 -22
- data/src/core/lib/resource_quota/memory_quota.cc +141 -44
- data/src/core/lib/resource_quota/memory_quota.h +87 -26
- data/src/core/lib/resource_quota/periodic_update.h +3 -3
- data/src/core/lib/resource_quota/resource_quota.h +4 -4
- data/src/core/lib/resource_quota/thread_quota.h +3 -3
- data/src/core/lib/resource_quota/trace.h +3 -3
- data/src/core/lib/security/authorization/audit_logging.cc +98 -0
- data/src/core/lib/security/authorization/audit_logging.h +73 -0
- data/src/core/lib/security/authorization/authorization_engine.h +3 -3
- data/src/core/lib/security/authorization/authorization_policy_provider.h +4 -4
- data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +0 -1
- data/src/core/lib/security/authorization/evaluate_args.h +3 -3
- data/src/core/lib/security/authorization/grpc_authorization_engine.cc +47 -4
- data/src/core/lib/security/authorization/grpc_authorization_engine.h +21 -4
- data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +4 -2
- data/src/core/lib/security/authorization/grpc_server_authz_filter.h +3 -3
- data/src/core/lib/security/authorization/matchers.cc +25 -22
- data/src/core/lib/security/authorization/matchers.h +3 -3
- data/src/core/lib/security/authorization/rbac_policy.cc +39 -7
- data/src/core/lib/security/authorization/rbac_policy.h +22 -5
- data/src/core/lib/security/authorization/stdout_logger.cc +75 -0
- data/src/core/lib/security/authorization/stdout_logger.h +61 -0
- data/src/core/lib/security/certificate_provider/certificate_provider_factory.h +11 -7
- data/src/core/lib/security/certificate_provider/certificate_provider_registry.cc +8 -18
- data/src/core/lib/security/certificate_provider/certificate_provider_registry.h +17 -11
- data/src/core/lib/security/context/security_context.cc +22 -23
- data/src/core/lib/security/context/security_context.h +43 -33
- data/src/core/lib/security/credentials/alts/alts_credentials.cc +17 -17
- data/src/core/lib/security/credentials/alts/alts_credentials.h +53 -53
- data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +19 -19
- data/src/core/lib/security/credentials/alts/check_gcp_environment.h +43 -43
- data/src/core/lib/security/credentials/alts/check_gcp_environment_linux.cc +17 -17
- data/src/core/lib/security/credentials/alts/check_gcp_environment_no_op.cc +18 -17
- data/src/core/lib/security/credentials/alts/check_gcp_environment_windows.cc +18 -17
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc +19 -19
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.cc +18 -18
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.h +38 -39
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc +18 -18
- data/src/core/lib/security/credentials/call_creds_util.h +3 -3
- data/src/core/lib/security/credentials/channel_creds_registry.h +3 -3
- data/src/core/lib/security/credentials/channel_creds_registry_init.cc +3 -4
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +22 -22
- data/src/core/lib/security/credentials/composite/composite_credentials.h +23 -24
- data/src/core/lib/security/credentials/credentials.cc +19 -18
- data/src/core/lib/security/credentials/credentials.h +37 -36
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +113 -108
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +4 -3
- data/src/core/lib/security/credentials/external/aws_request_signer.cc +5 -3
- data/src/core/lib/security/credentials/external/aws_request_signer.h +3 -3
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +105 -115
- data/src/core/lib/security/credentials/external/external_account_credentials.h +3 -3
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +39 -41
- data/src/core/lib/security/credentials/external/file_external_account_credentials.h +3 -3
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +51 -52
- data/src/core/lib/security/credentials/external/url_external_account_credentials.h +3 -3
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +20 -19
- data/src/core/lib/security/credentials/fake/fake_credentials.h +37 -38
- data/src/core/lib/security/credentials/google_default/credentials_generic.cc +17 -17
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +72 -126
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +21 -22
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +19 -17
- data/src/core/lib/security/credentials/iam/iam_credentials.h +20 -20
- data/src/core/lib/security/credentials/insecure/insecure_credentials.h +3 -3
- data/src/core/lib/security/credentials/jwt/json_token.cc +43 -41
- data/src/core/lib/security/credentials/jwt/json_token.h +35 -35
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +27 -22
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +22 -22
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +115 -113
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +46 -46
- data/src/core/lib/security/credentials/local/local_credentials.cc +17 -17
- data/src/core/lib/security/credentials/local/local_credentials.h +23 -23
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +80 -80
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +24 -23
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +24 -23
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +25 -25
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +19 -20
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +20 -20
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +20 -28
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +7 -14
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +44 -44
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +5 -3
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +1 -1
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +3 -3
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +18 -18
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +3 -3
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +18 -19
- data/src/core/lib/security/credentials/tls/tls_credentials.h +21 -21
- data/src/core/lib/security/credentials/tls/tls_utils.h +3 -3
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +1 -2
- data/src/core/lib/security/credentials/xds/xds_credentials.h +3 -3
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +33 -43
- data/src/core/lib/security/security_connector/alts/alts_security_connector.h +43 -44
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +33 -41
- data/src/core/lib/security/security_connector/fake/fake_security_connector.h +22 -23
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +2 -2
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +5 -10
- data/src/core/lib/security/security_connector/load_system_roots.h +20 -20
- data/src/core/lib/security/security_connector/load_system_roots_fallback.cc +18 -18
- data/src/core/lib/security/security_connector/load_system_roots_supported.cc +24 -31
- data/src/core/lib/security/security_connector/load_system_roots_supported.h +22 -23
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +30 -34
- data/src/core/lib/security/security_connector/local/local_security_connector.h +42 -43
- data/src/core/lib/security/security_connector/security_connector.cc +17 -17
- data/src/core/lib/security/security_connector/security_connector.h +35 -36
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +35 -39
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +40 -41
- data/src/core/lib/security/security_connector/ssl_utils.cc +48 -64
- data/src/core/lib/security/security_connector/ssl_utils.h +35 -35
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +54 -48
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +21 -21
- data/src/core/lib/security/transport/auth_filters.h +45 -23
- data/src/core/lib/security/transport/client_auth_filter.cc +21 -21
- data/src/core/lib/security/transport/secure_endpoint.cc +58 -58
- data/src/core/lib/security/transport/secure_endpoint.h +25 -25
- data/src/core/lib/security/transport/security_handshaker.cc +79 -70
- data/src/core/lib/security/transport/security_handshaker.h +22 -22
- data/src/core/lib/security/transport/server_auth_filter.cc +160 -274
- data/src/core/lib/security/transport/tsi_error.cc +23 -20
- data/src/core/lib/security/transport/tsi_error.h +20 -20
- data/src/core/lib/security/util/json_util.cc +27 -27
- data/src/core/lib/security/util/json_util.h +20 -20
- data/src/core/lib/service_config/service_config.h +4 -4
- data/src/core/lib/service_config/service_config_call_data.h +54 -19
- data/src/core/lib/service_config/service_config_impl.cc +118 -158
- data/src/core/lib/service_config/service_config_impl.h +16 -19
- data/src/core/lib/service_config/service_config_parser.cc +14 -31
- data/src/core/lib/service_config/service_config_parser.h +16 -12
- data/src/core/lib/slice/b64.cc +26 -26
- data/src/core/lib/slice/b64.h +32 -32
- data/src/core/lib/slice/percent_encoding.cc +17 -17
- data/src/core/lib/slice/percent_encoding.h +28 -28
- data/src/core/lib/slice/slice.cc +48 -42
- data/src/core/lib/slice/slice.h +59 -18
- data/src/core/lib/slice/slice_buffer.cc +63 -59
- data/src/core/lib/slice/slice_buffer.h +35 -4
- data/src/core/lib/slice/slice_internal.h +34 -42
- data/src/core/lib/slice/slice_refcount.cc +3 -18
- data/src/core/lib/slice/slice_refcount.h +53 -18
- data/src/core/lib/slice/slice_string_helpers.cc +17 -17
- data/src/core/lib/slice/slice_string_helpers.h +21 -21
- data/src/core/lib/surface/api_trace.cc +17 -17
- data/src/core/lib/surface/api_trace.h +25 -25
- data/src/core/lib/surface/builtins.cc +2 -0
- data/src/core/lib/surface/builtins.h +3 -3
- data/src/core/lib/surface/byte_buffer.cc +22 -23
- data/src/core/lib/surface/byte_buffer_reader.cc +23 -23
- data/src/core/lib/surface/call.cc +2297 -535
- data/src/core/lib/surface/call.h +123 -42
- data/src/core/lib/surface/call_details.cc +20 -21
- data/src/core/lib/surface/call_log_batch.cc +19 -18
- data/src/core/lib/surface/call_test_only.h +33 -33
- data/src/core/lib/surface/call_trace.cc +123 -0
- data/src/core/{ext/filters/http/message_compress/message_decompress_filter.h → lib/surface/call_trace.h} +10 -12
- data/src/core/lib/surface/channel.cc +62 -67
- data/src/core/lib/surface/channel.h +43 -35
- data/src/core/lib/surface/channel_init.cc +17 -17
- data/src/core/lib/surface/channel_init.h +20 -20
- data/src/core/lib/surface/channel_ping.cc +19 -19
- data/src/core/lib/surface/channel_stack_type.cc +21 -17
- data/src/core/lib/surface/channel_stack_type.h +22 -20
- data/src/core/lib/surface/completion_queue.cc +182 -194
- data/src/core/lib/surface/completion_queue.h +36 -36
- data/src/core/lib/surface/completion_queue_factory.cc +28 -28
- data/src/core/lib/surface/completion_queue_factory.h +22 -22
- data/src/core/lib/surface/event_string.cc +18 -17
- data/src/core/lib/surface/event_string.h +22 -22
- data/src/core/lib/surface/init.cc +30 -59
- data/src/core/lib/surface/init.h +20 -20
- data/src/core/lib/surface/init_internally.cc +1 -0
- data/src/core/lib/surface/init_internally.h +12 -3
- data/src/core/lib/surface/lame_client.cc +31 -26
- data/src/core/lib/surface/lame_client.h +21 -21
- data/src/core/lib/surface/metadata_array.cc +17 -18
- data/src/core/lib/surface/server.cc +363 -111
- data/src/core/lib/surface/server.h +10 -9
- data/src/core/lib/surface/validate_metadata.cc +60 -60
- data/src/core/lib/surface/validate_metadata.h +30 -21
- data/src/core/lib/surface/version.cc +21 -21
- data/src/core/lib/transport/batch_builder.cc +182 -0
- data/src/core/lib/transport/batch_builder.h +480 -0
- data/src/core/lib/transport/bdp_estimator.cc +24 -24
- data/src/core/lib/transport/bdp_estimator.h +31 -28
- data/src/core/lib/transport/connectivity_state.cc +19 -19
- data/src/core/lib/transport/connectivity_state.h +22 -22
- data/src/core/lib/transport/custom_metadata.h +30 -0
- data/src/core/lib/transport/error_utils.cc +51 -45
- data/src/core/lib/transport/error_utils.h +24 -24
- data/src/core/lib/transport/handshaker.cc +60 -46
- data/src/core/lib/transport/handshaker.h +47 -42
- data/src/core/lib/transport/handshaker_factory.h +47 -21
- data/src/core/lib/transport/handshaker_registry.cc +25 -19
- data/src/core/lib/transport/handshaker_registry.h +23 -24
- data/src/core/lib/transport/http2_errors.h +22 -22
- data/src/core/lib/transport/http_connect_handshaker.cc +40 -41
- data/src/core/lib/transport/http_connect_handshaker.h +21 -21
- data/src/core/lib/transport/metadata_batch.cc +24 -7
- data/src/core/lib/transport/metadata_batch.h +193 -53
- data/src/core/lib/transport/metadata_compression_traits.h +67 -0
- data/src/core/lib/transport/parsed_metadata.cc +2 -6
- data/src/core/lib/transport/parsed_metadata.h +23 -12
- data/src/core/lib/transport/pid_controller.cc +20 -20
- data/src/core/lib/transport/pid_controller.h +27 -27
- data/src/core/lib/transport/simple_slice_based_metadata.h +48 -0
- data/src/core/lib/transport/status_conversion.cc +22 -22
- data/src/core/lib/transport/status_conversion.h +22 -22
- data/src/core/lib/transport/tcp_connect_handshaker.cc +15 -21
- data/src/core/lib/transport/tcp_connect_handshaker.h +3 -3
- data/src/core/lib/transport/timeout_encoding.cc +28 -23
- data/src/core/lib/transport/timeout_encoding.h +20 -20
- data/src/core/lib/transport/transport.cc +113 -43
- data/src/core/lib/transport/transport.h +275 -210
- data/src/core/lib/transport/transport_fwd.h +3 -3
- data/src/core/lib/transport/transport_impl.h +53 -46
- data/src/core/lib/transport/transport_op_string.cc +75 -63
- data/src/core/lib/uri/uri_parser.cc +1 -1
- data/src/core/lib/uri/uri_parser.h +3 -3
- data/src/core/plugin_registry/grpc_plugin_registry.cc +34 -35
- data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +9 -14
- data/src/core/tsi/alts/crypt/aes_gcm.cc +20 -20
- data/src/core/tsi/alts/crypt/gsec.cc +26 -26
- data/src/core/tsi/alts/crypt/gsec.h +336 -336
- data/src/core/tsi/alts/frame_protector/alts_counter.cc +23 -23
- data/src/core/tsi/alts/frame_protector/alts_counter.h +68 -68
- data/src/core/tsi/alts/frame_protector/alts_crypter.cc +19 -19
- data/src/core/tsi/alts/frame_protector/alts_crypter.h +209 -209
- data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +73 -71
- data/src/core/tsi/alts/frame_protector/alts_frame_protector.h +40 -40
- data/src/core/tsi/alts/frame_protector/alts_record_protocol_crypter_common.cc +18 -18
- data/src/core/tsi/alts/frame_protector/alts_record_protocol_crypter_common.h +82 -83
- data/src/core/tsi/alts/frame_protector/alts_seal_privacy_integrity_crypter.cc +22 -22
- data/src/core/tsi/alts/frame_protector/alts_unseal_privacy_integrity_crypter.cc +22 -22
- data/src/core/tsi/alts/frame_protector/frame_handler.cc +26 -25
- data/src/core/tsi/alts/frame_protector/frame_handler.h +169 -169
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +98 -80
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +107 -102
- data/src/core/tsi/alts/handshaker/alts_shared_resource.cc +18 -17
- data/src/core/tsi/alts/handshaker/alts_shared_resource.h +43 -44
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +38 -37
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +60 -60
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +23 -23
- data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +21 -20
- data/src/core/tsi/alts/handshaker/alts_tsi_utils.h +38 -38
- data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +19 -19
- data/src/core/tsi/alts/handshaker/transport_security_common_api.h +105 -104
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +45 -44
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.h +40 -41
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.cc +38 -36
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.h +35 -36
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol.h +67 -68
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +32 -31
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.h +55 -56
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.cc +54 -53
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.h +141 -142
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +58 -57
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.h +43 -44
- data/src/core/tsi/fake_transport_security.cc +80 -79
- data/src/core/tsi/fake_transport_security.h +33 -33
- data/src/core/tsi/local_transport_security.cc +34 -33
- data/src/core/tsi/local_transport_security.h +33 -33
- data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +9 -4
- data/src/core/tsi/ssl/key_logging/ssl_key_logging.h +3 -3
- data/src/core/tsi/ssl/session_cache/ssl_session.h +21 -21
- data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +19 -19
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +18 -17
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +22 -22
- data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +25 -20
- data/src/core/tsi/ssl_transport_security.cc +256 -349
- data/src/core/tsi/ssl_transport_security.h +206 -203
- data/src/core/tsi/ssl_transport_security_utils.cc +250 -0
- data/src/core/tsi/ssl_transport_security_utils.h +147 -0
- data/src/core/tsi/ssl_types.h +27 -27
- data/src/core/tsi/transport_security.cc +26 -26
- data/src/core/tsi/transport_security.h +47 -47
- data/src/core/tsi/transport_security_grpc.cc +20 -20
- data/src/core/tsi/transport_security_grpc.h +41 -41
- data/src/core/tsi/transport_security_interface.h +333 -333
- data/src/ruby/ext/grpc/ext-export-with-ruby-abi-version.clang +2 -0
- data/src/ruby/ext/grpc/ext-export-with-ruby-abi-version.gcc +7 -0
- data/src/ruby/ext/grpc/ext-export.clang +0 -1
- data/src/ruby/ext/grpc/ext-export.gcc +1 -2
- data/src/ruby/ext/grpc/extconf.rb +55 -11
- data/src/ruby/ext/grpc/rb_call.c +1 -0
- data/src/ruby/ext/grpc/rb_channel.c +1 -0
- data/src/ruby/ext/grpc/rb_channel_args.c +1 -0
- data/src/ruby/ext/grpc/rb_compression_options.c +1 -1
- data/src/ruby/ext/grpc/rb_grpc.c +1 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +38 -38
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +59 -59
- data/src/ruby/lib/grpc/generic/bidi_call.rb +2 -0
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/generate_proto_ruby.sh +0 -6
- data/src/ruby/spec/channel_spec.rb +0 -43
- data/src/ruby/spec/client_server_spec.rb +20 -8
- data/src/ruby/spec/generic/active_call_spec.rb +12 -3
- data/third_party/abseil-cpp/absl/algorithm/container.h +56 -57
- data/third_party/abseil-cpp/absl/base/attributes.h +39 -19
- data/third_party/abseil-cpp/absl/base/config.h +45 -4
- data/third_party/abseil-cpp/absl/base/internal/cycleclock.h +3 -18
- data/third_party/abseil-cpp/absl/base/internal/cycleclock_config.h +55 -0
- data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +2 -1
- data/third_party/abseil-cpp/absl/base/internal/inline_variable.h +3 -3
- data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +2 -2
- data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.h +1 -1
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +10 -6
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +23 -24
- data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +3 -3
- data/third_party/abseil-cpp/absl/base/internal/spinlock.h +2 -6
- data/third_party/abseil-cpp/absl/base/internal/spinlock_win32.inc +4 -1
- data/third_party/abseil-cpp/absl/base/internal/strerror.cc +4 -4
- data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +14 -10
- data/third_party/abseil-cpp/absl/base/internal/thread_annotations.h +9 -0
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +4 -0
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +3 -40
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock_config.h +62 -0
- data/third_party/abseil-cpp/absl/base/macros.h +4 -21
- data/third_party/abseil-cpp/absl/base/optimization.h +58 -6
- data/third_party/abseil-cpp/absl/base/options.h +1 -7
- data/third_party/abseil-cpp/absl/base/policy_checks.h +15 -13
- data/third_party/abseil-cpp/absl/cleanup/cleanup.h +140 -0
- data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +100 -0
- data/third_party/abseil-cpp/absl/container/fixed_array.h +7 -5
- data/third_party/abseil-cpp/absl/container/flat_hash_set.h +0 -7
- data/third_party/abseil-cpp/absl/container/inlined_vector.h +66 -18
- data/third_party/abseil-cpp/absl/container/internal/common.h +3 -3
- data/third_party/abseil-cpp/absl/container/internal/common_policy_traits.h +132 -0
- data/third_party/abseil-cpp/absl/container/internal/container_memory.h +13 -1
- data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +4 -55
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +50 -5
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +14 -46
- data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +110 -32
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +155 -4
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +661 -341
- data/third_party/abseil-cpp/absl/crc/crc32c.cc +99 -0
- data/third_party/abseil-cpp/absl/crc/crc32c.h +183 -0
- data/third_party/abseil-cpp/absl/crc/internal/cpu_detect.cc +256 -0
- data/third_party/abseil-cpp/absl/crc/internal/cpu_detect.h +57 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc.cc +468 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc.h +91 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h +269 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc32c.h +39 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc32c_inline.h +72 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc_cord_state.cc +130 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc_cord_state.h +159 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc_internal.h +179 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc_memcpy.h +119 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc_memcpy_fallback.cc +75 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc_memcpy_x86_64.cc +434 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc_non_temporal_memcpy.cc +93 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +725 -0
- data/third_party/abseil-cpp/absl/crc/internal/non_temporal_arm_intrinsics.h +79 -0
- data/third_party/abseil-cpp/absl/crc/internal/non_temporal_memcpy.h +180 -0
- data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc +1 -1
- data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +67 -38
- data/third_party/abseil-cpp/absl/debugging/internal/demangle.h +1 -1
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +12 -13
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +11 -9
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +1 -1
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +40 -85
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +5 -4
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +33 -8
- data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +3 -2
- data/third_party/abseil-cpp/absl/debugging/symbolize_darwin.inc +3 -2
- data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +118 -94
- data/third_party/abseil-cpp/absl/debugging/symbolize_win32.inc +7 -6
- data/third_party/abseil-cpp/absl/flags/commandlineflag.cc +34 -0
- data/third_party/abseil-cpp/absl/flags/commandlineflag.h +200 -0
- data/third_party/abseil-cpp/absl/flags/config.h +68 -0
- data/third_party/abseil-cpp/absl/flags/declare.h +73 -0
- data/third_party/abseil-cpp/absl/flags/flag.cc +38 -0
- data/third_party/abseil-cpp/absl/flags/flag.h +310 -0
- data/third_party/abseil-cpp/absl/flags/internal/commandlineflag.cc +26 -0
- data/third_party/abseil-cpp/absl/flags/internal/commandlineflag.h +68 -0
- data/third_party/abseil-cpp/absl/flags/internal/flag.cc +615 -0
- data/third_party/abseil-cpp/absl/flags/internal/flag.h +800 -0
- data/third_party/abseil-cpp/absl/flags/internal/flag_msvc.inc +116 -0
- data/third_party/abseil-cpp/absl/flags/internal/path_util.h +62 -0
- data/third_party/abseil-cpp/absl/flags/internal/private_handle_accessor.cc +65 -0
- data/third_party/abseil-cpp/absl/flags/internal/private_handle_accessor.h +61 -0
- data/third_party/abseil-cpp/absl/flags/internal/program_name.cc +60 -0
- data/third_party/abseil-cpp/absl/flags/internal/program_name.h +50 -0
- data/third_party/abseil-cpp/absl/flags/internal/registry.h +97 -0
- data/third_party/abseil-cpp/absl/flags/internal/sequence_lock.h +187 -0
- data/third_party/abseil-cpp/absl/flags/marshalling.cc +241 -0
- data/third_party/abseil-cpp/absl/flags/marshalling.h +356 -0
- data/third_party/abseil-cpp/absl/flags/reflection.cc +354 -0
- data/third_party/abseil-cpp/absl/flags/reflection.h +90 -0
- data/third_party/abseil-cpp/absl/flags/usage_config.cc +165 -0
- data/third_party/abseil-cpp/absl/flags/usage_config.h +135 -0
- data/third_party/abseil-cpp/absl/functional/any_invocable.h +5 -2
- data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +47 -26
- data/third_party/abseil-cpp/absl/hash/internal/city.cc +10 -10
- data/third_party/abseil-cpp/absl/hash/internal/hash.h +18 -4
- data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc +3 -14
- data/third_party/abseil-cpp/absl/memory/memory.h +26 -447
- data/third_party/abseil-cpp/absl/meta/type_traits.h +104 -12
- data/third_party/abseil-cpp/absl/numeric/bits.h +2 -3
- data/third_party/abseil-cpp/absl/numeric/int128.cc +10 -8
- data/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h +14 -6
- data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +2 -1
- data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +1 -1
- data/third_party/abseil-cpp/absl/random/internal/pcg_engine.h +2 -23
- data/third_party/abseil-cpp/absl/random/internal/pool_urbg.cc +9 -9
- data/third_party/abseil-cpp/absl/random/internal/seed_material.cc +2 -2
- data/third_party/abseil-cpp/absl/random/random.h +6 -6
- data/third_party/abseil-cpp/absl/status/internal/status_internal.h +1 -0
- data/third_party/abseil-cpp/absl/status/status.cc +19 -12
- data/third_party/abseil-cpp/absl/status/status.h +2 -2
- data/third_party/abseil-cpp/absl/strings/ascii.cc +5 -5
- data/third_party/abseil-cpp/absl/strings/charconv.cc +534 -96
- data/third_party/abseil-cpp/absl/strings/cord.cc +92 -40
- data/third_party/abseil-cpp/absl/strings/cord.h +71 -80
- data/third_party/abseil-cpp/absl/strings/cord_buffer.h +8 -5
- data/third_party/abseil-cpp/absl/strings/escaping.cc +73 -62
- data/third_party/abseil-cpp/absl/strings/escaping.h +24 -19
- data/third_party/abseil-cpp/absl/strings/internal/char_map.h +14 -12
- data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc +4 -4
- data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +2 -2
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +330 -70
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +8 -4
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h +26 -14
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.cc +5 -5
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.cc +9 -7
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.h +5 -4
- data/third_party/abseil-cpp/absl/strings/internal/cordz_functions.h +7 -15
- data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.h +3 -3
- data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +8 -5
- data/third_party/abseil-cpp/absl/strings/internal/cordz_info.h +7 -7
- data/third_party/abseil-cpp/absl/strings/internal/cordz_statistics.h +4 -4
- data/third_party/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.cc +93 -0
- data/third_party/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.h +34 -0
- data/third_party/abseil-cpp/absl/strings/internal/escaping.cc +12 -10
- data/third_party/abseil-cpp/absl/strings/internal/escaping.h +7 -9
- data/third_party/abseil-cpp/absl/strings/internal/has_absl_stringify.h +55 -0
- data/third_party/abseil-cpp/absl/strings/internal/memutil.cc +9 -6
- data/third_party/abseil-cpp/absl/strings/internal/ostringstream.cc +14 -7
- data/third_party/abseil-cpp/absl/strings/internal/ostringstream.h +35 -10
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +113 -46
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +126 -29
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +3 -2
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +4 -3
- data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +49 -287
- data/third_party/abseil-cpp/absl/strings/internal/str_format/constexpr_parser.h +351 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +2 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +4 -2
- data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +215 -181
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +10 -209
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +10 -101
- data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +2 -1
- data/third_party/abseil-cpp/absl/strings/internal/stringify_sink.cc +28 -0
- data/third_party/abseil-cpp/absl/strings/internal/stringify_sink.h +57 -0
- data/third_party/abseil-cpp/absl/strings/numbers.cc +34 -31
- data/third_party/abseil-cpp/absl/strings/str_cat.cc +9 -6
- data/third_party/abseil-cpp/absl/strings/str_cat.h +50 -3
- data/third_party/abseil-cpp/absl/strings/str_format.h +71 -9
- data/third_party/abseil-cpp/absl/strings/string_view.cc +6 -6
- data/third_party/abseil-cpp/absl/strings/string_view.h +3 -10
- data/third_party/abseil-cpp/absl/strings/substitute.cc +8 -6
- data/third_party/abseil-cpp/absl/strings/substitute.h +46 -20
- data/third_party/abseil-cpp/absl/synchronization/internal/futex.h +20 -17
- data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +37 -31
- data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +22 -8
- data/third_party/abseil-cpp/absl/synchronization/mutex.cc +104 -55
- data/third_party/abseil-cpp/absl/synchronization/mutex.h +85 -46
- data/third_party/abseil-cpp/absl/synchronization/notification.cc +0 -1
- data/third_party/abseil-cpp/absl/synchronization/notification.h +0 -1
- data/third_party/abseil-cpp/absl/time/civil_time.cc +26 -0
- data/third_party/abseil-cpp/absl/time/civil_time.h +25 -0
- data/third_party/abseil-cpp/absl/time/clock.cc +17 -11
- data/third_party/abseil-cpp/absl/time/duration.cc +7 -7
- data/third_party/abseil-cpp/absl/time/format.cc +2 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +1 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +26 -5
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +7 -6
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +36 -35
- data/third_party/abseil-cpp/absl/time/time.cc +2 -2
- data/third_party/abseil-cpp/absl/time/time.h +253 -158
- data/third_party/abseil-cpp/absl/types/internal/span.h +30 -19
- data/third_party/abseil-cpp/absl/types/internal/variant.h +28 -40
- data/third_party/abseil-cpp/absl/types/span.h +29 -7
- data/third_party/boringssl-with-bazel/err_data.c +728 -712
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +177 -177
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +28 -55
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_d2i_fp.c +21 -23
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_dup.c +20 -23
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_gentm.c +66 -185
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_i2d_fp.c +18 -21
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c +356 -311
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.c +177 -196
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +146 -210
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_octet.c +6 -9
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strex.c +346 -526
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +110 -131
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +130 -116
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +93 -60
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +93 -181
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +242 -305
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_par.c +41 -18
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c +30 -33
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c +36 -33
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_string.c +29 -26
- data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +135 -90
- data/third_party/boringssl-with-bazel/src/crypto/asn1/posix_time.c +230 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +797 -793
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +529 -526
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +114 -135
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.c +201 -207
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.c +21 -26
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.c +55 -68
- data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +2 -4
- data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +17 -11
- data/third_party/boringssl-with-bazel/src/crypto/bio/bio_mem.c +37 -51
- data/third_party/boringssl-with-bazel/src/crypto/bio/connect.c +15 -9
- data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +13 -9
- data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +22 -19
- data/third_party/boringssl-with-bazel/src/crypto/bio/pair.c +5 -5
- data/third_party/boringssl-with-bazel/src/crypto/bio/printf.c +0 -13
- data/third_party/boringssl-with-bazel/src/crypto/bio/socket.c +3 -6
- data/third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +40 -27
- data/third_party/boringssl-with-bazel/src/crypto/bn_extra/convert.c +10 -23
- data/third_party/boringssl-with-bazel/src/crypto/buf/buf.c +2 -6
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/asn1_compat.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c +29 -28
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbb.c +161 -201
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +254 -39
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/internal.h +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/derive_key.c +4 -4
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_aesctrhmac.c +9 -8
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_aesgcmsiv.c +37 -75
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_chacha20poly1305.c +8 -10
- data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/cipher → cipher_extra}/e_des.c +100 -78
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_null.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_rc2.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_rc4.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +34 -37
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +22 -11
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +189 -13
- data/third_party/boringssl-with-bazel/src/crypto/conf/conf.c +6 -10
- data/third_party/boringssl-with-bazel/src/crypto/conf/conf_def.h +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/conf/internal.h +12 -0
- data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_apple.c +74 -0
- data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_freebsd.c +62 -0
- data/third_party/boringssl-with-bazel/src/crypto/{cpu-aarch64-fuchsia.c → cpu_aarch64_fuchsia.c} +8 -7
- data/third_party/boringssl-with-bazel/src/crypto/{cpu-aarch64-linux.c → cpu_aarch64_linux.c} +6 -4
- data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_openbsd.c +62 -0
- data/third_party/boringssl-with-bazel/src/crypto/{cpu-aarch64-win.c → cpu_aarch64_win.c} +4 -4
- data/third_party/boringssl-with-bazel/src/crypto/{cpu-arm.c → cpu_arm.c} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_freebsd.c +55 -0
- data/third_party/boringssl-with-bazel/src/crypto/{cpu-arm-linux.c → cpu_arm_linux.c} +11 -90
- data/third_party/boringssl-with-bazel/src/crypto/{cpu-arm-linux.h → cpu_arm_linux.h} +0 -38
- data/third_party/boringssl-with-bazel/src/crypto/{cpu-ppc64le.c → cpu_arm_openbsd.c} +10 -17
- data/third_party/boringssl-with-bazel/src/crypto/{cpu-intel.c → cpu_intel.c} +1 -2
- data/third_party/boringssl-with-bazel/src/crypto/crypto.c +25 -20
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +22 -31
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519_tables.h +795 -795
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/internal.h +1 -5
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/spake25519.c +17 -32
- data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/des → des}/des.c +232 -232
- data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/des → des}/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/dh_extra/dh_asn1.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/dh_extra/params.c +232 -29
- data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +0 -3
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +43 -16
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.c +37 -7
- data/third_party/boringssl-with-bazel/src/crypto/dsa/internal.h +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_asn1.c +11 -36
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +229 -102
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +31 -7
- data/third_party/boringssl-with-bazel/src/crypto/ecdh_extra/ecdh_extra.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/ecdsa_extra/ecdsa_asn1.c +2 -4
- data/third_party/boringssl-with-bazel/src/crypto/err/err.c +83 -60
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +46 -12
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp_ctx.c +25 -23
- data/third_party/boringssl-with-bazel/src/crypto/evp/internal.h +43 -9
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_dsa_asn1.c +75 -44
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec.c +19 -25
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec_asn1.c +96 -45
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519.c +7 -8
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519_asn1.c +26 -23
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_hkdf.c +233 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa.c +6 -6
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa_asn1.c +42 -25
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519.c +4 -5
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519_asn1.c +35 -47
- data/third_party/boringssl-with-bazel/src/crypto/evp/print.c +135 -244
- data/third_party/boringssl-with-bazel/src/crypto/evp/scrypt.c +2 -4
- data/third_party/boringssl-with-bazel/src/crypto/evp/sign.c +15 -10
- data/third_party/boringssl-with-bazel/src/crypto/ex_data.c +29 -15
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes_nohw.c +13 -14
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/internal.h +3 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/key_wrap.c +13 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/mode_wrappers.c +9 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +36 -27
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bn.c +16 -26
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bytes.c +88 -60
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/cmp.c +4 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/ctx.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div_extra.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/exponentiation.c +99 -113
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd_extra.c +5 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/generic.c +112 -168
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +86 -31
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery.c +11 -6
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery_inv.c +4 -5
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/mul.c +4 -5
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/prime.c +13 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/random.c +13 -5
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/rsaz_exp.c +19 -108
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/rsaz_exp.h +19 -15
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/shift.c +15 -16
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/sqrt.c +22 -21
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/aead.c +3 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +79 -19
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +102 -99
- data/third_party/boringssl-with-bazel/src/crypto/{cipher_extra → fipsmodule/cipher}/e_aesccm.c +52 -46
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/internal.h +39 -0
- data/third_party/boringssl-with-bazel/src/crypto/{cmac → fipsmodule/cmac}/cmac.c +55 -11
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/check.c +2 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/dh.c +24 -6
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/internal.h +56 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.c +5 -3
- data/third_party/boringssl-with-bazel/src/crypto/{evp → fipsmodule/digestsign}/digestsign.c +51 -15
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +49 -49
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +92 -18
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_montgomery.c +12 -12
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +108 -86
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.c +55 -25
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +55 -71
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{p256-x86_64-table.h → p256-nistz-table.h} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{p256-x86_64.c → p256-nistz.c} +72 -65
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{p256-x86_64.h → p256-nistz.h} +5 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +62 -51
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256_table.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/scalar.c +2 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.c +12 -17
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +25 -26
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/wnaf.c +13 -14
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/ecdh.c +9 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +44 -16
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/internal.h +6 -0
- data/third_party/boringssl-with-bazel/src/crypto/{hkdf → fipsmodule/hkdf}/hkdf.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/hmac/hmac.c +52 -24
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +9 -23
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cfb.c +1 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +3 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +170 -160
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm_nohw.c +12 -14
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +69 -61
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +2 -12
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/polyval.c +27 -28
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/ctrdrbg.c +31 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.c +16 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.h +3 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/getrandom_fillin.h +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +9 -38
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +73 -59
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +22 -68
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/blinding.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +43 -16
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/padding.c +42 -314
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +244 -139
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +144 -205
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/fips.c +41 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +593 -421
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/service_indicator/internal.h +89 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/service_indicator/service_indicator.c +334 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/internal.h +3 -12
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +12 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +14 -12
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/internal.h +8 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/kdf.c +52 -6
- data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +192 -18
- data/third_party/boringssl-with-bazel/src/crypto/hrss/hrss.c +65 -29
- data/third_party/boringssl-with-bazel/src/crypto/internal.h +391 -18
- data/third_party/boringssl-with-bazel/src/crypto/kyber/internal.h +91 -0
- data/third_party/boringssl-with-bazel/src/crypto/kyber/keccak.c +204 -0
- data/third_party/boringssl-with-bazel/src/crypto/kyber/kyber.c +833 -0
- data/third_party/boringssl-with-bazel/src/crypto/lhash/internal.h +13 -1
- data/third_party/boringssl-with-bazel/src/crypto/mem.c +220 -13
- data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +19 -7
- data/third_party/boringssl-with-bazel/src/crypto/obj/obj_dat.h +9 -4
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_all.c +81 -90
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_info.c +150 -245
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +633 -613
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_oth.c +17 -17
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pk8.c +142 -149
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pkey.c +99 -131
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_x509.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_xaux.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8.c +0 -3
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +36 -66
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.c +31 -38
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_vec.c +18 -31
- data/third_party/boringssl-with-bazel/src/crypto/pool/internal.h +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/pool/pool.c +8 -1
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/passive.c +129 -5
- data/third_party/boringssl-with-bazel/src/crypto/refcount_c11.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/{refcount_lock.c → refcount_no_threads.c} +6 -17
- data/third_party/boringssl-with-bazel/src/crypto/refcount_win.c +89 -0
- data/third_party/boringssl-with-bazel/src/crypto/{asn1/a_print.c → rsa_extra/internal.h} +15 -21
- data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_crypt.c +568 -0
- data/third_party/boringssl-with-bazel/src/crypto/siphash/siphash.c +8 -11
- data/third_party/boringssl-with-bazel/src/crypto/stack/stack.c +61 -27
- data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +10 -13
- data/third_party/boringssl-with-bazel/src/crypto/thread_win.c +10 -13
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +128 -34
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +418 -133
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +116 -284
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +701 -87
- data/third_party/boringssl-with-bazel/src/crypto/x509/a_digest.c +22 -24
- data/third_party/boringssl-with-bazel/src/crypto/x509/a_sign.c +63 -55
- data/third_party/boringssl-with-bazel/src/crypto/x509/a_verify.c +32 -34
- data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +32 -16
- data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +465 -704
- data/third_party/boringssl-with-bazel/src/crypto/x509/by_dir.c +285 -331
- data/third_party/boringssl-with-bazel/src/crypto/x509/by_file.c +183 -178
- data/third_party/boringssl-with-bazel/src/crypto/x509/i2d_pr.c +11 -15
- data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +68 -50
- data/third_party/boringssl-with-bazel/src/crypto/x509/name_print.c +132 -151
- data/third_party/boringssl-with-bazel/src/crypto/x509/policy.c +790 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +95 -102
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c +72 -57
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_req.c +12 -10
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +220 -254
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c +52 -47
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509.c +3 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +136 -270
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +161 -327
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_d2.c +37 -33
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_def.c +14 -31
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.c +55 -85
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +528 -616
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.c +129 -122
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +164 -181
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +132 -132
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +186 -203
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_txt.c +64 -79
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c +175 -160
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +1864 -2050
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c +380 -480
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +156 -163
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +266 -265
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509rset.c +40 -15
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509spki.c +59 -63
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +63 -67
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +114 -144
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c +25 -26
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +329 -416
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_exten.c +8 -7
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_info.c +30 -28
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c +354 -370
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_pkey.c +37 -32
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +116 -119
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_req.c +36 -26
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c +3 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_spki.c +10 -13
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_val.c +3 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +419 -261
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +113 -105
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/ext_dat.h +11 -15
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +79 -171
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c +126 -131
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akeya.c +3 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +465 -469
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bcons.c +56 -54
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c +46 -49
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +294 -344
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +342 -365
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_crld.c +429 -393
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c +29 -24
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_extku.c +65 -59
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c +125 -121
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ia5.c +43 -42
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_info.c +120 -125
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_int.c +50 -20
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +228 -265
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ncons.c +386 -389
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ocsp.c +45 -32
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pcons.c +57 -54
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pmaps.c +63 -67
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +130 -135
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +652 -691
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +90 -75
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +1063 -1145
- data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +13 -11
- data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +28 -48
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +217 -191
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +26 -78
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +50 -14
- data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +29 -14
- data/third_party/boringssl-with-bazel/src/include/openssl/blake2.h +1 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/bn.h +49 -17
- data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +99 -29
- data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +49 -60
- data/third_party/boringssl-with-bazel/src/include/openssl/conf.h +2 -15
- data/third_party/boringssl-with-bazel/src/include/openssl/cpu.h +16 -200
- data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +34 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ctrdrbg.h +82 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +32 -30
- data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +7 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +4 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +48 -5
- data/third_party/boringssl-with-bazel/src/include/openssl/ec_key.h +37 -8
- data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +1 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/err.h +33 -5
- data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +25 -33
- data/third_party/boringssl-with-bazel/src/include/openssl/ex_data.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/hmac.h +7 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +69 -16
- data/third_party/boringssl-with-bazel/src/include/openssl/kdf.h +91 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/kyber.h +128 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/mem.h +74 -8
- data/third_party/boringssl-with-bazel/src/include/openssl/nid.h +7 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/obj.h +8 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/opensslconf.h +1 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +11 -18
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +8 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +12 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +98 -5
- data/third_party/boringssl-with-bazel/src/include/openssl/service_indicator.h +96 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/span.h +18 -21
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +285 -92
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl3.h +1 -6
- data/third_party/boringssl-with-bazel/src/include/openssl/stack.h +381 -287
- data/third_party/boringssl-with-bazel/src/include/openssl/thread.h +9 -6
- data/third_party/boringssl-with-bazel/src/include/openssl/time.h +41 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +22 -7
- data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +57 -23
- data/third_party/boringssl-with-bazel/src/include/openssl/type_check.h +0 -11
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +2075 -1407
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +242 -214
- data/third_party/boringssl-with-bazel/src/ssl/bio_ssl.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +6 -13
- data/third_party/boringssl-with-bazel/src/ssl/d1_pkt.cc +17 -18
- data/third_party/boringssl-with-bazel/src/ssl/dtls_method.cc +4 -5
- data/third_party/boringssl-with-bazel/src/ssl/dtls_record.cc +25 -33
- data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +45 -26
- data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +64 -35
- data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +198 -54
- data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +5 -5
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +53 -34
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +76 -44
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +200 -121
- data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +47 -12
- data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +91 -75
- data/third_party/boringssl-with-bazel/src/ssl/ssl_aead_ctx.cc +8 -10
- data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +47 -69
- data/third_party/boringssl-with-bazel/src/ssl/ssl_buffer.cc +1 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +5 -9
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +217 -226
- data/third_party/boringssl-with-bazel/src/ssl/ssl_file.cc +78 -101
- data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +106 -142
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +244 -35
- data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +167 -64
- data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +41 -32
- data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +27 -19
- data/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc +22 -6
- data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +15 -13
- data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +7 -44
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +7 -4
- data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +7 -23
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +25 -34
- data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/tls_record.cc +16 -98
- data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_32.h +1241 -657
- data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64.h +751 -398
- data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64_msvc.h +1281 -0
- data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_32.h +3551 -1938
- data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_64.h +1272 -487
- data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_64_msvc.h +2002 -0
- data/third_party/cares/cares/include/ares.h +23 -1
- data/third_party/cares/cares/{src/lib → include}/ares_nameser.h +9 -7
- data/third_party/cares/cares/include/ares_rules.h +2 -2
- data/third_party/cares/cares/include/ares_version.h +3 -3
- data/third_party/cares/cares/src/lib/ares__addrinfo2hostent.c +266 -0
- data/third_party/cares/cares/src/lib/ares__addrinfo_localhost.c +240 -0
- data/third_party/cares/cares/src/lib/ares__parse_into_addrinfo.c +49 -80
- data/third_party/cares/cares/src/lib/ares__readaddrinfo.c +37 -43
- data/third_party/cares/cares/src/lib/ares__sortaddrinfo.c +12 -4
- data/third_party/cares/cares/src/lib/ares_data.c +16 -0
- data/third_party/cares/cares/src/lib/ares_data.h +7 -0
- data/third_party/cares/cares/src/lib/ares_destroy.c +8 -0
- data/third_party/cares/cares/src/lib/ares_expand_name.c +17 -6
- data/third_party/cares/cares/src/lib/ares_freeaddrinfo.c +1 -0
- data/third_party/cares/cares/src/lib/ares_getaddrinfo.c +156 -78
- data/third_party/cares/cares/src/lib/ares_gethostbyname.c +130 -326
- data/third_party/cares/cares/src/lib/ares_init.c +97 -485
- data/third_party/cares/cares/src/lib/ares_library_init.c +2 -89
- data/third_party/cares/cares/src/lib/ares_parse_a_reply.c +23 -142
- data/third_party/cares/cares/src/lib/ares_parse_aaaa_reply.c +22 -142
- data/third_party/cares/cares/src/lib/ares_parse_uri_reply.c +184 -0
- data/third_party/cares/cares/src/lib/ares_private.h +30 -16
- data/third_party/cares/cares/src/lib/ares_process.c +55 -16
- data/third_party/cares/cares/src/lib/ares_query.c +1 -35
- data/third_party/cares/cares/src/lib/ares_rand.c +279 -0
- data/third_party/cares/cares/src/lib/ares_send.c +5 -7
- data/third_party/cares/cares/src/lib/ares_strdup.c +12 -19
- data/third_party/cares/cares/src/lib/ares_strsplit.c +44 -128
- data/third_party/cares/cares/src/lib/ares_strsplit.h +9 -10
- data/third_party/cares/cares/src/lib/inet_net_pton.c +78 -116
- data/third_party/cares/cares/src/tools/ares_getopt.h +53 -0
- data/third_party/re2/re2/bitstate.cc +3 -3
- data/third_party/re2/re2/dfa.cc +13 -13
- data/third_party/re2/re2/nfa.cc +4 -4
- data/third_party/re2/re2/onepass.cc +2 -2
- data/third_party/re2/re2/prefilter_tree.cc +27 -59
- data/third_party/re2/re2/prefilter_tree.h +3 -2
- data/third_party/re2/re2/prog.cc +11 -2
- data/third_party/re2/re2/prog.h +17 -5
- data/third_party/re2/re2/re2.cc +6 -11
- data/third_party/re2/re2/re2.h +1 -1
- data/third_party/re2/re2/regexp.cc +1 -2
- data/third_party/re2/re2/stringpiece.h +10 -7
- data/third_party/re2/re2/unicode_casefold.cc +25 -11
- data/third_party/re2/re2/unicode_groups.cc +319 -151
- data/third_party/re2/re2/walker-inl.h +3 -2
- data/third_party/re2/util/mutex.h +4 -4
- data/third_party/upb/upb/{table_internal.h → alloc.h} +6 -6
- data/third_party/upb/upb/arena.h +4 -193
- data/third_party/upb/upb/array.h +4 -51
- data/third_party/upb/upb/base/descriptor_constants.h +104 -0
- data/third_party/upb/upb/base/log2.h +57 -0
- data/third_party/upb/upb/{status.c → base/status.c} +2 -7
- data/third_party/upb/upb/base/status.h +66 -0
- data/third_party/upb/upb/base/string_view.h +75 -0
- data/third_party/upb/upb/{array.c → collections/array.c} +67 -36
- data/third_party/upb/upb/collections/array.h +85 -0
- data/third_party/upb/upb/collections/array_internal.h +135 -0
- data/third_party/upb/upb/{map.c → collections/map.c} +53 -26
- data/third_party/upb/upb/collections/map.h +135 -0
- data/third_party/upb/upb/collections/map_gencode_util.h +78 -0
- data/third_party/upb/upb/collections/map_internal.h +170 -0
- data/third_party/upb/upb/collections/map_sorter.c +166 -0
- data/third_party/upb/upb/collections/map_sorter_internal.h +109 -0
- data/third_party/upb/upb/{message_value.h → collections/message_value.h} +12 -13
- data/third_party/upb/upb/decode.h +3 -62
- data/third_party/upb/upb/def.h +4 -384
- data/third_party/upb/upb/def.hpp +3 -411
- data/third_party/upb/upb/encode.h +3 -48
- data/third_party/upb/upb/extension_registry.h +3 -52
- data/third_party/upb/upb/{table.c → hash/common.c} +52 -110
- data/third_party/upb/upb/hash/common.h +199 -0
- data/third_party/upb/upb/hash/int_table.h +102 -0
- data/third_party/upb/upb/hash/str_table.h +161 -0
- data/third_party/upb/upb/{json_decode.c → json/decode.c} +63 -98
- data/third_party/upb/upb/json/decode.h +52 -0
- data/third_party/upb/upb/{json_encode.c → json/encode.c} +69 -45
- data/third_party/upb/upb/json/encode.h +70 -0
- data/third_party/upb/upb/json_decode.h +4 -15
- data/third_party/upb/upb/json_encode.h +4 -33
- data/third_party/upb/upb/lex/atoi.c +68 -0
- data/third_party/upb/upb/lex/atoi.h +53 -0
- data/third_party/upb/upb/{upb.c → lex/round_trip.c} +2 -11
- data/third_party/upb/upb/{internal/upb.h → lex/round_trip.h} +17 -30
- data/third_party/upb/upb/lex/strtod.c +97 -0
- data/third_party/upb/upb/lex/strtod.h +46 -0
- data/third_party/upb/upb/lex/unicode.c +57 -0
- data/third_party/upb/upb/lex/unicode.h +77 -0
- data/third_party/upb/upb/map.h +4 -85
- data/third_party/upb/upb/mem/alloc.c +47 -0
- data/third_party/upb/upb/mem/alloc.h +98 -0
- data/third_party/upb/upb/mem/arena.c +367 -0
- data/third_party/upb/upb/mem/arena.h +160 -0
- data/third_party/upb/upb/mem/arena_internal.h +114 -0
- data/third_party/upb/upb/message/accessors.c +68 -0
- data/third_party/upb/upb/message/accessors.h +379 -0
- data/third_party/upb/upb/message/accessors_internal.h +325 -0
- data/third_party/upb/upb/message/extension_internal.h +83 -0
- data/third_party/upb/upb/message/internal.h +135 -0
- data/third_party/upb/upb/message/message.c +180 -0
- data/third_party/upb/upb/message/message.h +69 -0
- data/third_party/upb/upb/mini_table/common.c +128 -0
- data/third_party/upb/upb/mini_table/common.h +170 -0
- data/third_party/upb/upb/mini_table/common_internal.h +111 -0
- data/third_party/upb/upb/{mini_table.c → mini_table/decode.c} +513 -533
- data/third_party/upb/upb/mini_table/decode.h +179 -0
- data/third_party/upb/upb/mini_table/encode.c +300 -0
- data/third_party/upb/upb/mini_table/encode_internal.h +111 -0
- data/third_party/upb/upb/{mini_table.hpp → mini_table/encode_internal.hpp} +32 -8
- data/third_party/upb/upb/mini_table/enum_internal.h +88 -0
- data/third_party/upb/upb/mini_table/extension_internal.h +47 -0
- data/third_party/upb/upb/{extension_registry.c → mini_table/extension_registry.c} +27 -24
- data/third_party/upb/upb/mini_table/extension_registry.h +104 -0
- data/third_party/upb/upb/mini_table/field_internal.h +192 -0
- data/third_party/upb/upb/mini_table/file_internal.h +47 -0
- data/third_party/upb/upb/mini_table/message_internal.h +136 -0
- data/third_party/upb/upb/mini_table/sub_internal.h +38 -0
- data/third_party/upb/upb/mini_table/types.h +40 -0
- data/third_party/upb/upb/mini_table.h +4 -157
- data/third_party/upb/upb/msg.h +3 -38
- data/third_party/upb/upb/port/atomic.h +101 -0
- data/third_party/upb/upb/{port_def.inc → port/def.inc} +94 -27
- data/third_party/upb/upb/{port_undef.inc → port/undef.inc} +13 -3
- data/third_party/upb/upb/{internal → port}/vsnprintf_compat.h +5 -7
- data/third_party/upb/upb/reflection/common.h +67 -0
- data/third_party/upb/upb/reflection/def.h +42 -0
- data/third_party/upb/upb/reflection/def.hpp +610 -0
- data/third_party/upb/upb/reflection/def_builder.c +357 -0
- data/third_party/upb/upb/reflection/def_builder_internal.h +157 -0
- data/third_party/upb/upb/reflection/def_pool.c +462 -0
- data/third_party/upb/upb/reflection/def_pool.h +108 -0
- data/third_party/upb/upb/reflection/def_pool_internal.h +77 -0
- data/third_party/upb/upb/reflection/def_type.c +50 -0
- data/third_party/upb/upb/reflection/def_type.h +81 -0
- data/third_party/upb/upb/reflection/desc_state.c +53 -0
- data/third_party/upb/upb/reflection/desc_state_internal.h +64 -0
- data/third_party/upb/upb/reflection/enum_def.c +310 -0
- data/third_party/upb/upb/reflection/enum_def.h +80 -0
- data/third_party/upb/upb/reflection/enum_def_internal.h +56 -0
- data/third_party/upb/upb/reflection/enum_reserved_range.c +84 -0
- data/third_party/upb/upb/reflection/enum_reserved_range.h +51 -0
- data/third_party/upb/upb/reflection/enum_reserved_range_internal.h +55 -0
- data/third_party/upb/upb/reflection/enum_value_def.c +144 -0
- data/third_party/upb/upb/reflection/enum_value_def.h +57 -0
- data/third_party/upb/upb/reflection/enum_value_def_internal.h +57 -0
- data/third_party/upb/upb/reflection/extension_range.c +93 -0
- data/third_party/upb/upb/reflection/extension_range.h +55 -0
- data/third_party/upb/upb/reflection/extension_range_internal.h +54 -0
- data/third_party/upb/upb/reflection/field_def.c +930 -0
- data/third_party/upb/upb/reflection/field_def.h +91 -0
- data/third_party/upb/upb/reflection/field_def_internal.h +76 -0
- data/third_party/upb/upb/reflection/file_def.c +370 -0
- data/third_party/upb/upb/reflection/file_def.h +77 -0
- data/third_party/upb/upb/reflection/file_def_internal.h +57 -0
- data/third_party/upb/upb/reflection/message.c +233 -0
- data/third_party/upb/upb/reflection/message.h +102 -0
- data/third_party/upb/upb/reflection/message.hpp +37 -0
- data/third_party/upb/upb/reflection/message_def.c +718 -0
- data/third_party/upb/upb/reflection/message_def.h +174 -0
- data/third_party/upb/upb/reflection/message_def_internal.h +63 -0
- data/third_party/upb/upb/reflection/message_reserved_range.c +81 -0
- data/third_party/upb/upb/reflection/message_reserved_range.h +51 -0
- data/third_party/upb/upb/reflection/message_reserved_range_internal.h +55 -0
- data/third_party/upb/upb/reflection/method_def.c +124 -0
- data/third_party/upb/upb/reflection/method_def.h +59 -0
- data/third_party/upb/upb/reflection/method_def_internal.h +53 -0
- data/third_party/upb/upb/reflection/oneof_def.c +226 -0
- data/third_party/upb/upb/reflection/oneof_def.h +66 -0
- data/third_party/upb/upb/reflection/oneof_def_internal.h +57 -0
- data/third_party/upb/upb/reflection/service_def.c +128 -0
- data/third_party/upb/upb/reflection/service_def.h +60 -0
- data/third_party/upb/upb/reflection/service_def_internal.h +53 -0
- data/third_party/upb/upb/reflection.h +4 -78
- data/third_party/upb/upb/reflection.hpp +3 -7
- data/third_party/upb/upb/status.h +4 -34
- data/third_party/upb/upb/{collections.h → string_view.h} +7 -7
- data/third_party/upb/upb/{text_encode.c → text/encode.c} +74 -70
- data/third_party/upb/upb/text/encode.h +69 -0
- data/third_party/upb/upb/text_encode.h +4 -32
- data/third_party/upb/upb/upb.h +6 -151
- data/third_party/upb/upb/upb.hpp +10 -18
- data/third_party/upb/upb/wire/common.h +44 -0
- data/third_party/upb/upb/wire/common_internal.h +50 -0
- data/third_party/upb/upb/wire/decode.c +1343 -0
- data/third_party/upb/upb/wire/decode.h +108 -0
- data/third_party/upb/upb/{decode_fast.c → wire/decode_fast.c} +184 -225
- data/third_party/upb/upb/{decode_fast.h → wire/decode_fast.h} +21 -7
- data/third_party/upb/upb/{internal/decode.h → wire/decode_internal.h} +44 -92
- data/third_party/upb/upb/{encode.c → wire/encode.c} +114 -95
- data/third_party/upb/upb/wire/encode.h +92 -0
- data/third_party/upb/upb/wire/eps_copy_input_stream.c +39 -0
- data/third_party/upb/upb/wire/eps_copy_input_stream.h +425 -0
- data/third_party/upb/upb/wire/reader.c +67 -0
- data/third_party/upb/upb/wire/reader.h +227 -0
- data/third_party/upb/upb/wire/swap_internal.h +63 -0
- data/third_party/upb/upb/wire/types.h +41 -0
- data/third_party/{upb/third_party/utf8_range → utf8_range}/range2-neon.c +1 -1
- data/third_party/{upb/third_party/utf8_range → utf8_range}/utf8_range.h +12 -0
- data/third_party/zlib/compress.c +3 -3
- data/third_party/zlib/crc32.c +21 -12
- data/third_party/zlib/deflate.c +112 -106
- data/third_party/zlib/deflate.h +2 -2
- data/third_party/zlib/gzlib.c +1 -1
- data/third_party/zlib/gzread.c +3 -5
- data/third_party/zlib/gzwrite.c +1 -1
- data/third_party/zlib/infback.c +10 -7
- data/third_party/zlib/inflate.c +5 -2
- data/third_party/zlib/inftrees.c +2 -2
- data/third_party/zlib/inftrees.h +1 -1
- data/third_party/zlib/trees.c +61 -62
- data/third_party/zlib/uncompr.c +2 -2
- data/third_party/zlib/zconf.h +16 -3
- data/third_party/zlib/zlib.h +10 -10
- data/third_party/zlib/zutil.c +9 -7
- data/third_party/zlib/zutil.h +1 -0
- metadata +509 -152
- data/include/grpc/impl/codegen/gpr_slice.h +0 -71
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +0 -176
- data/src/core/ext/filters/client_channel/health/health_check_client.h +0 -43
- data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.h +0 -30
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +0 -188
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +0 -187
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +0 -332
- data/src/core/ext/filters/http/message_compress/message_compress_filter.h +0 -52
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +0 -322
- data/src/core/ext/filters/server_config_selector/server_config_selector.cc +0 -62
- data/src/core/ext/transport/chttp2/transport/context_list.cc +0 -71
- data/src/core/ext/transport/chttp2/transport/context_list.h +0 -54
- data/src/core/lib/event_engine/socket_notifier.h +0 -55
- data/src/core/lib/event_engine/thread_pool.cc +0 -195
- data/src/core/lib/event_engine/thread_pool.h +0 -114
- data/src/core/lib/gpr/cpu_iphone.cc +0 -44
- data/src/core/lib/gpr/cpu_windows.cc +0 -33
- data/src/core/lib/gpr/murmur_hash.cc +0 -82
- data/src/core/lib/gpr/murmur_hash.h +0 -29
- data/src/core/lib/gpr/string_windows.cc +0 -69
- data/src/core/lib/gpr/tls.h +0 -156
- data/src/core/lib/gprpp/env_posix.cc +0 -47
- data/src/core/lib/gprpp/global_config.h +0 -93
- data/src/core/lib/gprpp/global_config_custom.h +0 -29
- data/src/core/lib/gprpp/global_config_env.cc +0 -139
- data/src/core/lib/gprpp/global_config_env.h +0 -133
- data/src/core/lib/gprpp/global_config_generic.h +0 -40
- data/src/core/lib/promise/call_push_pull.h +0 -148
- data/src/core/lib/promise/intra_activity_waiter.h +0 -49
- data/src/core/lib/security/security_connector/ssl_utils_config.cc +0 -32
- data/src/core/lib/security/security_connector/ssl_utils_config.h +0 -30
- data/src/core/lib/slice/slice_api.cc +0 -39
- data/src/core/lib/slice/slice_buffer_api.cc +0 -35
- data/src/core/lib/slice/slice_refcount_base.h +0 -60
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_enum.c +0 -195
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utf8.c +0 -236
- data/third_party/boringssl-with-bazel/src/crypto/asn1/charmap.h +0 -15
- data/third_party/boringssl-with-bazel/src/crypto/asn1/time_support.c +0 -206
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1-altivec.c +0 -361
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_cache.c +0 -287
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +0 -132
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_lib.c +0 -155
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_map.c +0 -131
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_node.c +0 -189
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_tree.c +0 -843
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pci.c +0 -289
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pcia.c +0 -57
- data/third_party/cares/cares/src/lib/ares_library_init.h +0 -43
- data/third_party/upb/upb/arena.c +0 -277
- data/third_party/upb/upb/decode.c +0 -1221
- data/third_party/upb/upb/def.c +0 -3269
- data/third_party/upb/upb/internal/table.h +0 -385
- data/third_party/upb/upb/msg.c +0 -368
- data/third_party/upb/upb/msg_internal.h +0 -837
- data/third_party/upb/upb/reflection.c +0 -323
- /data/src/ruby/ext/grpc/{ext-export-truffleruby.clang → ext-export-truffleruby-with-ruby-abi-version.clang} +0 -0
- /data/src/ruby/ext/grpc/{ext-export-truffleruby.gcc → ext-export-truffleruby-with-ruby-abi-version.gcc} +0 -0
- /data/third_party/{upb/third_party/utf8_range → utf8_range}/naive.c +0 -0
- /data/third_party/{upb/third_party/utf8_range → utf8_range}/range2-sse.c +0 -0
@@ -24,10 +24,11 @@
|
|
24
24
|
#include <algorithm>
|
25
25
|
#include <functional>
|
26
26
|
#include <new>
|
27
|
-
#include <
|
27
|
+
#include <type_traits>
|
28
|
+
#include <utility>
|
28
29
|
#include <vector>
|
29
30
|
|
30
|
-
#include "absl/
|
31
|
+
#include "absl/cleanup/cleanup.h"
|
31
32
|
#include "absl/status/status.h"
|
32
33
|
#include "absl/status/statusor.h"
|
33
34
|
#include "absl/strings/cord.h"
|
@@ -38,21 +39,24 @@
|
|
38
39
|
#include "absl/types/optional.h"
|
39
40
|
#include "absl/types/variant.h"
|
40
41
|
|
41
|
-
#include <grpc/
|
42
|
+
#include <grpc/event_engine/event_engine.h>
|
42
43
|
#include <grpc/slice.h>
|
43
44
|
#include <grpc/status.h>
|
45
|
+
#include <grpc/support/json.h>
|
44
46
|
#include <grpc/support/log.h>
|
45
47
|
#include <grpc/support/string_util.h>
|
48
|
+
#include <grpc/support/time.h>
|
46
49
|
|
47
50
|
#include "src/core/ext/filters/client_channel/backend_metric.h"
|
48
51
|
#include "src/core/ext/filters/client_channel/backup_poller.h"
|
49
52
|
#include "src/core/ext/filters/client_channel/client_channel_channelz.h"
|
53
|
+
#include "src/core/ext/filters/client_channel/client_channel_internal.h"
|
54
|
+
#include "src/core/ext/filters/client_channel/client_channel_service_config.h"
|
50
55
|
#include "src/core/ext/filters/client_channel/config_selector.h"
|
51
56
|
#include "src/core/ext/filters/client_channel/dynamic_filters.h"
|
52
57
|
#include "src/core/ext/filters/client_channel/global_subchannel_pool.h"
|
53
58
|
#include "src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h"
|
54
59
|
#include "src/core/ext/filters/client_channel/local_subchannel_pool.h"
|
55
|
-
#include "src/core/ext/filters/client_channel/resolver_result_parsing.h"
|
56
60
|
#include "src/core/ext/filters/client_channel/retry_filter.h"
|
57
61
|
#include "src/core/ext/filters/client_channel/subchannel.h"
|
58
62
|
#include "src/core/ext/filters/client_channel/subchannel_interface_internal.h"
|
@@ -65,7 +69,9 @@
|
|
65
69
|
#include "src/core/lib/debug/trace.h"
|
66
70
|
#include "src/core/lib/gpr/useful.h"
|
67
71
|
#include "src/core/lib/gprpp/debug_location.h"
|
72
|
+
#include "src/core/lib/gprpp/status_helper.h"
|
68
73
|
#include "src/core/lib/gprpp/sync.h"
|
74
|
+
#include "src/core/lib/gprpp/unique_type_name.h"
|
69
75
|
#include "src/core/lib/gprpp/work_serializer.h"
|
70
76
|
#include "src/core/lib/handshaker/proxy_mapper_registry.h"
|
71
77
|
#include "src/core/lib/iomgr/exec_ctx.h"
|
@@ -78,8 +84,8 @@
|
|
78
84
|
#include "src/core/lib/resolver/server_address.h"
|
79
85
|
#include "src/core/lib/service_config/service_config_call_data.h"
|
80
86
|
#include "src/core/lib/service_config/service_config_impl.h"
|
87
|
+
#include "src/core/lib/slice/slice.h"
|
81
88
|
#include "src/core/lib/slice/slice_internal.h"
|
82
|
-
#include "src/core/lib/slice/slice_refcount.h"
|
83
89
|
#include "src/core/lib/surface/channel.h"
|
84
90
|
#include "src/core/lib/transport/connectivity_state.h"
|
85
91
|
#include "src/core/lib/transport/error_utils.h"
|
@@ -89,9 +95,6 @@
|
|
89
95
|
// Client channel filter
|
90
96
|
//
|
91
97
|
|
92
|
-
#define GRPC_ARG_HEALTH_CHECK_SERVICE_NAME \
|
93
|
-
"grpc.internal.health_check_service_name"
|
94
|
-
|
95
98
|
namespace grpc_core {
|
96
99
|
|
97
100
|
using internal::ClientChannelMethodParsedConfig;
|
@@ -105,6 +108,75 @@ TraceFlag grpc_client_channel_lb_call_trace(false, "client_channel_lb_call");
|
|
105
108
|
//
|
106
109
|
|
107
110
|
class ClientChannel::CallData {
|
111
|
+
public:
|
112
|
+
// Removes the call from the channel's list of calls queued
|
113
|
+
// for name resolution.
|
114
|
+
void RemoveCallFromResolverQueuedCallsLocked()
|
115
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::resolution_mu_);
|
116
|
+
|
117
|
+
// Called by the channel for each queued call when a new resolution
|
118
|
+
// result becomes available.
|
119
|
+
virtual void RetryCheckResolutionLocked()
|
120
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::resolution_mu_) = 0;
|
121
|
+
|
122
|
+
RefCountedPtr<DynamicFilters> dynamic_filters() const {
|
123
|
+
return dynamic_filters_;
|
124
|
+
}
|
125
|
+
|
126
|
+
protected:
|
127
|
+
CallData() = default;
|
128
|
+
virtual ~CallData() = default;
|
129
|
+
|
130
|
+
// Checks whether a resolver result is available. The following
|
131
|
+
// outcomes are possible:
|
132
|
+
// - No resolver result is available yet. The call will be queued and
|
133
|
+
// absl::nullopt will be returned. Later, when a resolver result
|
134
|
+
// becomes available, RetryCheckResolutionLocked() will be called.
|
135
|
+
// - The resolver has returned a transient failure. If the call is
|
136
|
+
// not wait_for_ready, a non-OK status will be returned. (If the
|
137
|
+
// call *is* wait_for_ready, it will be queued instead.)
|
138
|
+
// - There is a valid resolver result. The service config will be
|
139
|
+
// stored in the call context and an OK status will be returned.
|
140
|
+
absl::optional<absl::Status> CheckResolution(bool was_queued);
|
141
|
+
|
142
|
+
private:
|
143
|
+
// Accessors for data stored in the subclass.
|
144
|
+
virtual ClientChannel* chand() const = 0;
|
145
|
+
virtual Arena* arena() const = 0;
|
146
|
+
virtual grpc_polling_entity* pollent() const = 0;
|
147
|
+
virtual grpc_metadata_batch* send_initial_metadata() = 0;
|
148
|
+
virtual grpc_call_context_element* call_context() const = 0;
|
149
|
+
|
150
|
+
// Helper function for CheckResolution(). Returns true if the call
|
151
|
+
// can continue (i.e., there is a valid resolution result, or there is
|
152
|
+
// an invalid resolution result but the call is not wait_for_ready).
|
153
|
+
bool CheckResolutionLocked(
|
154
|
+
absl::StatusOr<RefCountedPtr<ConfigSelector>>* config_selector)
|
155
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::resolution_mu_);
|
156
|
+
|
157
|
+
// Adds the call to the channel's list of calls queued for name resolution.
|
158
|
+
void AddCallToResolverQueuedCallsLocked()
|
159
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::resolution_mu_);
|
160
|
+
|
161
|
+
// Called when adding the call to the resolver queue.
|
162
|
+
virtual void OnAddToQueueLocked()
|
163
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::resolution_mu_) {}
|
164
|
+
|
165
|
+
// Applies service config to the call. Must be invoked once we know
|
166
|
+
// that the resolver has returned results to the channel.
|
167
|
+
// If an error is returned, the error indicates the status with which
|
168
|
+
// the call should be failed.
|
169
|
+
grpc_error_handle ApplyServiceConfigToCallLocked(
|
170
|
+
const absl::StatusOr<RefCountedPtr<ConfigSelector>>& config_selector);
|
171
|
+
|
172
|
+
// Called to reset the deadline based on the service config obtained
|
173
|
+
// from the resolver.
|
174
|
+
virtual void ResetDeadline(Duration timeout) = 0;
|
175
|
+
|
176
|
+
RefCountedPtr<DynamicFilters> dynamic_filters_;
|
177
|
+
};
|
178
|
+
|
179
|
+
class ClientChannel::FilterBasedCallData : public ClientChannel::CallData {
|
108
180
|
public:
|
109
181
|
static grpc_error_handle Init(grpc_call_element* elem,
|
110
182
|
const grpc_call_element_args* args);
|
@@ -115,31 +187,33 @@ class ClientChannel::CallData {
|
|
115
187
|
grpc_call_element* elem, grpc_transport_stream_op_batch* batch);
|
116
188
|
static void SetPollent(grpc_call_element* elem, grpc_polling_entity* pollent);
|
117
189
|
|
118
|
-
// Invoked by channel for queued calls when name resolution is completed.
|
119
|
-
static void CheckResolution(void* arg, grpc_error_handle error);
|
120
|
-
// Helper function for applying the service config to a call while
|
121
|
-
// holding ClientChannel::resolution_mu_.
|
122
|
-
// Returns true if the service config has been applied to the call, in which
|
123
|
-
// case the caller must invoke ResolutionDone() or AsyncResolutionDone()
|
124
|
-
// with the returned error.
|
125
|
-
bool CheckResolutionLocked(grpc_call_element* elem, grpc_error_handle* error)
|
126
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::resolution_mu_);
|
127
|
-
// Schedules a callback to continue processing the call once
|
128
|
-
// resolution is complete. The callback will not run until after this
|
129
|
-
// method returns.
|
130
|
-
void AsyncResolutionDone(grpc_call_element* elem, grpc_error_handle error);
|
131
|
-
|
132
190
|
private:
|
133
191
|
class ResolverQueuedCallCanceller;
|
134
192
|
|
135
|
-
|
136
|
-
|
137
|
-
~
|
193
|
+
FilterBasedCallData(grpc_call_element* elem,
|
194
|
+
const grpc_call_element_args& args);
|
195
|
+
~FilterBasedCallData() override;
|
196
|
+
|
197
|
+
grpc_call_element* elem() const { return deadline_state_.elem; }
|
198
|
+
grpc_call_stack* owning_call() const { return deadline_state_.call_stack; }
|
199
|
+
CallCombiner* call_combiner() const { return deadline_state_.call_combiner; }
|
200
|
+
|
201
|
+
ClientChannel* chand() const override {
|
202
|
+
return static_cast<ClientChannel*>(elem()->channel_data);
|
203
|
+
}
|
204
|
+
Arena* arena() const override { return deadline_state_.arena; }
|
205
|
+
grpc_polling_entity* pollent() const override { return pollent_; }
|
206
|
+
grpc_metadata_batch* send_initial_metadata() override {
|
207
|
+
return pending_batches_[0]
|
208
|
+
->payload->send_initial_metadata.send_initial_metadata;
|
209
|
+
}
|
210
|
+
grpc_call_context_element* call_context() const override {
|
211
|
+
return call_context_;
|
212
|
+
}
|
138
213
|
|
139
214
|
// Returns the index into pending_batches_ to be used for batch.
|
140
215
|
static size_t GetBatchIndex(grpc_transport_stream_op_batch* batch);
|
141
|
-
void PendingBatchesAdd(
|
142
|
-
grpc_transport_stream_op_batch* batch);
|
216
|
+
void PendingBatchesAdd(grpc_transport_stream_op_batch* batch);
|
143
217
|
static void FailPendingBatchInCallCombiner(void* arg,
|
144
218
|
grpc_error_handle error);
|
145
219
|
// A predicate type and some useful implementations for PendingBatchesFail().
|
@@ -159,71 +233,55 @@ class ClientChannel::CallData {
|
|
159
233
|
// If yield_call_combiner_predicate returns true, assumes responsibility for
|
160
234
|
// yielding the call combiner.
|
161
235
|
void PendingBatchesFail(
|
162
|
-
|
236
|
+
grpc_error_handle error,
|
163
237
|
YieldCallCombinerPredicate yield_call_combiner_predicate);
|
164
238
|
static void ResumePendingBatchInCallCombiner(void* arg,
|
165
239
|
grpc_error_handle ignored);
|
166
|
-
// Resumes all pending batches on
|
167
|
-
void PendingBatchesResume(
|
240
|
+
// Resumes all pending batches on dynamic_call_.
|
241
|
+
void PendingBatchesResume();
|
168
242
|
|
169
|
-
//
|
170
|
-
//
|
171
|
-
//
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::resolution_mu_);
|
176
|
-
// Invoked when the resolver result is applied to the caller, on both
|
177
|
-
// success or failure.
|
178
|
-
static void ResolutionDone(void* arg, grpc_error_handle error);
|
179
|
-
// Removes the call (if present) from the channel's list of calls queued
|
180
|
-
// for name resolution.
|
181
|
-
void MaybeRemoveCallFromResolverQueuedCallsLocked(grpc_call_element* elem)
|
243
|
+
// Called to check for a resolution result, both when the call is
|
244
|
+
// initially started and when it is queued and the channel gets a new
|
245
|
+
// resolution result.
|
246
|
+
void TryCheckResolution(bool was_queued);
|
247
|
+
|
248
|
+
void OnAddToQueueLocked() override
|
182
249
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::resolution_mu_);
|
183
|
-
|
184
|
-
|
185
|
-
void MaybeAddCallToResolverQueuedCallsLocked(grpc_call_element* elem)
|
250
|
+
|
251
|
+
void RetryCheckResolutionLocked() override
|
186
252
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::resolution_mu_);
|
187
253
|
|
188
|
-
|
189
|
-
|
254
|
+
void ResetDeadline(Duration timeout) override {
|
255
|
+
const Timestamp per_method_deadline =
|
256
|
+
Timestamp::FromCycleCounterRoundUp(call_start_time_) + timeout;
|
257
|
+
if (per_method_deadline < deadline_) {
|
258
|
+
deadline_ = per_method_deadline;
|
259
|
+
grpc_deadline_state_reset(&deadline_state_, deadline_);
|
260
|
+
}
|
261
|
+
}
|
190
262
|
|
191
|
-
void CreateDynamicCall(
|
263
|
+
void CreateDynamicCall();
|
192
264
|
|
193
|
-
|
194
|
-
|
195
|
-
// TODO(roth): This is slightly sub-optimal in that grpc_deadline_state
|
196
|
-
// and this struct both independently store pointers to the call stack
|
197
|
-
// and call combiner. If/when we have time, find a way to avoid this
|
198
|
-
// without breaking the grpc_deadline_state abstraction.
|
199
|
-
grpc_deadline_state deadline_state_;
|
265
|
+
static void RecvTrailingMetadataReadyForConfigSelectorCommitCallback(
|
266
|
+
void* arg, grpc_error_handle error);
|
200
267
|
|
201
268
|
grpc_slice path_; // Request path.
|
269
|
+
grpc_call_context_element* call_context_;
|
202
270
|
gpr_cycle_counter call_start_time_;
|
203
271
|
Timestamp deadline_;
|
204
|
-
Arena* arena_;
|
205
|
-
grpc_call_stack* owning_call_;
|
206
|
-
CallCombiner* call_combiner_;
|
207
|
-
grpc_call_context_element* call_context_;
|
208
272
|
|
209
|
-
|
273
|
+
// State for handling deadlines.
|
274
|
+
grpc_deadline_state deadline_state_;
|
210
275
|
|
211
|
-
|
276
|
+
grpc_polling_entity* pollent_ = nullptr;
|
212
277
|
|
213
278
|
// Accessed while holding ClientChannel::resolution_mu_.
|
214
|
-
bool service_config_applied_ ABSL_GUARDED_BY(&ClientChannel::resolution_mu_) =
|
215
|
-
false;
|
216
|
-
bool queued_pending_resolver_result_
|
217
|
-
ABSL_GUARDED_BY(&ClientChannel::resolution_mu_) = false;
|
218
|
-
ClientChannel::ResolverQueuedCall resolver_queued_call_
|
219
|
-
ABSL_GUARDED_BY(&ClientChannel::resolution_mu_);
|
220
279
|
ResolverQueuedCallCanceller* resolver_call_canceller_
|
221
280
|
ABSL_GUARDED_BY(&ClientChannel::resolution_mu_) = nullptr;
|
222
281
|
|
223
282
|
grpc_closure* original_recv_trailing_metadata_ready_ = nullptr;
|
224
283
|
grpc_closure recv_trailing_metadata_ready_;
|
225
284
|
|
226
|
-
RefCountedPtr<DynamicFilters> dynamic_filters_;
|
227
285
|
RefCountedPtr<DynamicFilters::Call> dynamic_call_;
|
228
286
|
|
229
287
|
// Batches are added to this list when received from above.
|
@@ -234,7 +292,7 @@ class ClientChannel::CallData {
|
|
234
292
|
grpc_transport_stream_op_batch* pending_batches_[MAX_PENDING_BATCHES] = {};
|
235
293
|
|
236
294
|
// Set when we get a cancel_stream op.
|
237
|
-
grpc_error_handle cancel_error_
|
295
|
+
grpc_error_handle cancel_error_;
|
238
296
|
};
|
239
297
|
|
240
298
|
//
|
@@ -242,13 +300,13 @@ class ClientChannel::CallData {
|
|
242
300
|
//
|
243
301
|
|
244
302
|
const grpc_channel_filter ClientChannel::kFilterVtable = {
|
245
|
-
ClientChannel::
|
303
|
+
ClientChannel::FilterBasedCallData::StartTransportStreamOpBatch,
|
246
304
|
nullptr,
|
247
305
|
ClientChannel::StartTransportOp,
|
248
|
-
sizeof(ClientChannel::
|
249
|
-
ClientChannel::
|
250
|
-
ClientChannel::
|
251
|
-
ClientChannel::
|
306
|
+
sizeof(ClientChannel::FilterBasedCallData),
|
307
|
+
ClientChannel::FilterBasedCallData::Init,
|
308
|
+
ClientChannel::FilterBasedCallData::SetPollent,
|
309
|
+
ClientChannel::FilterBasedCallData::Destroy,
|
252
310
|
sizeof(ClientChannel),
|
253
311
|
ClientChannel::Init,
|
254
312
|
grpc_channel_stack_no_post_init,
|
@@ -274,7 +332,7 @@ class DynamicTerminationFilter {
|
|
274
332
|
GPR_ASSERT(args->is_last);
|
275
333
|
GPR_ASSERT(elem->filter == &kFilterVtable);
|
276
334
|
new (elem->channel_data) DynamicTerminationFilter(args->channel_args);
|
277
|
-
return
|
335
|
+
return absl::OkStatus();
|
278
336
|
}
|
279
337
|
|
280
338
|
static void Destroy(grpc_channel_element* elem) {
|
@@ -289,9 +347,8 @@ class DynamicTerminationFilter {
|
|
289
347
|
const grpc_channel_info* /*info*/) {}
|
290
348
|
|
291
349
|
private:
|
292
|
-
explicit DynamicTerminationFilter(const
|
293
|
-
: chand_(
|
294
|
-
args, GRPC_ARG_CLIENT_CHANNEL)) {}
|
350
|
+
explicit DynamicTerminationFilter(const ChannelArgs& args)
|
351
|
+
: chand_(args.GetObject<ClientChannel>()) {}
|
295
352
|
|
296
353
|
ClientChannel* chand_;
|
297
354
|
};
|
@@ -301,7 +358,7 @@ class DynamicTerminationFilter::CallData {
|
|
301
358
|
static grpc_error_handle Init(grpc_call_element* elem,
|
302
359
|
const grpc_call_element_args* args) {
|
303
360
|
new (elem->call_data) CallData(*args);
|
304
|
-
return
|
361
|
+
return absl::OkStatus();
|
305
362
|
}
|
306
363
|
|
307
364
|
static void Destroy(grpc_call_element* elem,
|
@@ -317,7 +374,7 @@ class DynamicTerminationFilter::CallData {
|
|
317
374
|
subchannel_call->SetAfterCallStackDestroy(then_schedule_closure);
|
318
375
|
} else {
|
319
376
|
// TODO(yashkt) : This can potentially be a Closure::Run
|
320
|
-
ExecCtx::Run(DEBUG_LOCATION, then_schedule_closure,
|
377
|
+
ExecCtx::Run(DEBUG_LOCATION, then_schedule_closure, absl::OkStatus());
|
321
378
|
}
|
322
379
|
}
|
323
380
|
|
@@ -341,7 +398,7 @@ class DynamicTerminationFilter::CallData {
|
|
341
398
|
calld->call_context_[GRPC_CONTEXT_SERVICE_CONFIG_CALL_DATA].value);
|
342
399
|
calld->lb_call_ = client_channel->CreateLoadBalancedCall(
|
343
400
|
args, pollent, nullptr,
|
344
|
-
service_config_call_data->
|
401
|
+
[service_config_call_data]() { service_config_call_data->Commit(); },
|
345
402
|
/*is_transparent_retry=*/false);
|
346
403
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
347
404
|
gpr_log(GPR_INFO,
|
@@ -352,14 +409,14 @@ class DynamicTerminationFilter::CallData {
|
|
352
409
|
|
353
410
|
private:
|
354
411
|
explicit CallData(const grpc_call_element_args& args)
|
355
|
-
: path_(
|
412
|
+
: path_(CSliceRef(args.path)),
|
356
413
|
deadline_(args.deadline),
|
357
414
|
arena_(args.arena),
|
358
415
|
owning_call_(args.call_stack),
|
359
416
|
call_combiner_(args.call_combiner),
|
360
417
|
call_context_(args.context) {}
|
361
418
|
|
362
|
-
~CallData() {
|
419
|
+
~CallData() { CSliceUnref(path_); }
|
363
420
|
|
364
421
|
grpc_slice path_; // Request path.
|
365
422
|
Timestamp deadline_;
|
@@ -368,7 +425,7 @@ class DynamicTerminationFilter::CallData {
|
|
368
425
|
CallCombiner* call_combiner_;
|
369
426
|
grpc_call_context_element* call_context_;
|
370
427
|
|
371
|
-
OrphanablePtr<ClientChannel::
|
428
|
+
OrphanablePtr<ClientChannel::FilterBasedLoadBalancedCall> lb_call_;
|
372
429
|
};
|
373
430
|
|
374
431
|
const grpc_channel_filter DynamicTerminationFilter::kFilterVtable = {
|
@@ -420,8 +477,8 @@ class ClientChannel::ResolverResultHandler : public Resolver::ResultHandler {
|
|
420
477
|
//
|
421
478
|
|
422
479
|
// This class is a wrapper for Subchannel that hides details of the
|
423
|
-
// channel's implementation (such as the
|
424
|
-
//
|
480
|
+
// channel's implementation (such as the connected subchannel) from the
|
481
|
+
// LB policy API.
|
425
482
|
//
|
426
483
|
// Note that no synchronization is needed here, because even if the
|
427
484
|
// underlying subchannel is shared between channels, this wrapper will only
|
@@ -429,14 +486,12 @@ class ClientChannel::ResolverResultHandler : public Resolver::ResultHandler {
|
|
429
486
|
// control plane work_serializer.
|
430
487
|
class ClientChannel::SubchannelWrapper : public SubchannelInterface {
|
431
488
|
public:
|
432
|
-
SubchannelWrapper(ClientChannel* chand, RefCountedPtr<Subchannel> subchannel
|
433
|
-
absl::optional<std::string> health_check_service_name)
|
489
|
+
SubchannelWrapper(ClientChannel* chand, RefCountedPtr<Subchannel> subchannel)
|
434
490
|
: SubchannelInterface(GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)
|
435
491
|
? "SubchannelWrapper"
|
436
492
|
: nullptr),
|
437
493
|
chand_(chand),
|
438
|
-
subchannel_(std::move(subchannel))
|
439
|
-
health_check_service_name_(std::move(health_check_service_name)) {
|
494
|
+
subchannel_(std::move(subchannel)) {
|
440
495
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
441
496
|
gpr_log(GPR_INFO,
|
442
497
|
"chand=%p: creating subchannel wrapper %p for subchannel %p",
|
@@ -489,7 +544,6 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
|
|
489
544
|
watcher_wrapper = new WatcherWrapper(std::move(watcher),
|
490
545
|
Ref(DEBUG_LOCATION, "WatcherWrapper"));
|
491
546
|
subchannel_->WatchConnectivityState(
|
492
|
-
health_check_service_name_,
|
493
547
|
RefCountedPtr<Subchannel::ConnectivityStateWatcherInterface>(
|
494
548
|
watcher_wrapper));
|
495
549
|
}
|
@@ -498,8 +552,7 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
|
|
498
552
|
override ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
499
553
|
auto it = watcher_map_.find(watcher);
|
500
554
|
GPR_ASSERT(it != watcher_map_.end());
|
501
|
-
subchannel_->CancelConnectivityStateWatch(
|
502
|
-
it->second);
|
555
|
+
subchannel_->CancelConnectivityStateWatch(it->second);
|
503
556
|
watcher_map_.erase(it);
|
504
557
|
}
|
505
558
|
|
@@ -520,27 +573,23 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
|
|
520
573
|
data_watchers_.push_back(std::move(internal_watcher));
|
521
574
|
}
|
522
575
|
|
523
|
-
ChannelArgs channel_args() override { return subchannel_->channel_args(); }
|
524
|
-
|
525
576
|
void ThrottleKeepaliveTime(int new_keepalive_time) {
|
526
577
|
subchannel_->ThrottleKeepaliveTime(new_keepalive_time);
|
527
578
|
}
|
528
579
|
|
529
580
|
private:
|
530
|
-
//
|
531
|
-
//
|
532
|
-
//
|
533
|
-
// the state, whereas the one in SubchannelInterface does not expose
|
534
|
-
// the ConnectedSubchannel.
|
535
|
-
//
|
536
|
-
// This wrapper provides a bridge between the two. It implements
|
537
|
-
// Subchannel::ConnectivityStateWatcherInterface and wraps
|
581
|
+
// This wrapper provides a bridge between the internal Subchannel API
|
582
|
+
// and the SubchannelInterface API that we expose to LB policies.
|
583
|
+
// It implements Subchannel::ConnectivityStateWatcherInterface and wraps
|
538
584
|
// the instance of SubchannelInterface::ConnectivityStateWatcherInterface
|
539
585
|
// that was passed in by the LB policy. We pass an instance of this
|
540
586
|
// class to the underlying Subchannel, and when we get updates from
|
541
587
|
// the subchannel, we pass those on to the wrapped watcher to return
|
542
|
-
// the update to the LB policy.
|
543
|
-
//
|
588
|
+
// the update to the LB policy.
|
589
|
+
//
|
590
|
+
// This class handles things like hopping into the WorkSerializer
|
591
|
+
// before passing notifications to the LB policy and propagating
|
592
|
+
// keepalive information betwen subchannels.
|
544
593
|
class WatcherWrapper : public Subchannel::ConnectivityStateWatcherInterface {
|
545
594
|
public:
|
546
595
|
WatcherWrapper(
|
@@ -559,7 +608,8 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
|
|
559
608
|
DEBUG_LOCATION);
|
560
609
|
}
|
561
610
|
|
562
|
-
void OnConnectivityStateChange(
|
611
|
+
void OnConnectivityStateChange(grpc_connectivity_state state,
|
612
|
+
const absl::Status& status) override {
|
563
613
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
564
614
|
gpr_log(GPR_INFO,
|
565
615
|
"chand=%p: connectivity change for subchannel wrapper %p "
|
@@ -568,41 +618,33 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
|
|
568
618
|
}
|
569
619
|
Ref().release(); // ref owned by lambda
|
570
620
|
parent_->chand_->work_serializer_->Run(
|
571
|
-
[this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(
|
621
|
+
[this, state, status]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(
|
572
622
|
*parent_->chand_->work_serializer_) {
|
573
|
-
ApplyUpdateInControlPlaneWorkSerializer();
|
623
|
+
ApplyUpdateInControlPlaneWorkSerializer(state, status);
|
574
624
|
Unref();
|
575
625
|
},
|
576
626
|
DEBUG_LOCATION);
|
577
627
|
}
|
578
628
|
|
579
629
|
grpc_pollset_set* interested_parties() override {
|
580
|
-
|
581
|
-
watcher_.get();
|
582
|
-
if (watcher_ == nullptr) watcher = replacement_->watcher_.get();
|
583
|
-
return watcher->interested_parties();
|
584
|
-
}
|
585
|
-
|
586
|
-
WatcherWrapper* MakeReplacement() {
|
587
|
-
auto* replacement = new WatcherWrapper(std::move(watcher_), parent_);
|
588
|
-
replacement_ = replacement;
|
589
|
-
return replacement;
|
630
|
+
return watcher_->interested_parties();
|
590
631
|
}
|
591
632
|
|
592
633
|
private:
|
593
|
-
void ApplyUpdateInControlPlaneWorkSerializer(
|
634
|
+
void ApplyUpdateInControlPlaneWorkSerializer(grpc_connectivity_state state,
|
635
|
+
const absl::Status& status)
|
594
636
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(*parent_->chand_->work_serializer_) {
|
595
637
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
596
638
|
gpr_log(GPR_INFO,
|
597
639
|
"chand=%p: processing connectivity change in work serializer "
|
598
|
-
"for subchannel wrapper %p subchannel %p "
|
599
|
-
"
|
640
|
+
"for subchannel wrapper %p subchannel %p watcher=%p "
|
641
|
+
"state=%s status=%s",
|
600
642
|
parent_->chand_, parent_.get(), parent_->subchannel_.get(),
|
601
|
-
watcher_.get())
|
643
|
+
watcher_.get(), ConnectivityStateName(state),
|
644
|
+
status.ToString().c_str());
|
602
645
|
}
|
603
|
-
ConnectivityStateChange state_change = PopConnectivityStateChange();
|
604
646
|
absl::optional<absl::Cord> keepalive_throttling =
|
605
|
-
|
647
|
+
status.GetPayload(kKeepaliveThrottlingKey);
|
606
648
|
if (keepalive_throttling.has_value()) {
|
607
649
|
int new_keepalive_time = -1;
|
608
650
|
if (absl::SimpleAtoi(std::string(keepalive_throttling.value()),
|
@@ -627,30 +669,22 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
|
|
627
669
|
std::string(keepalive_throttling.value()).c_str());
|
628
670
|
}
|
629
671
|
}
|
630
|
-
//
|
631
|
-
//
|
632
|
-
|
633
|
-
|
634
|
-
|
635
|
-
|
636
|
-
|
637
|
-
if (state_change.state != GRPC_CHANNEL_TRANSIENT_FAILURE) {
|
638
|
-
state_change.status = absl::OkStatus();
|
639
|
-
}
|
640
|
-
watcher_->OnConnectivityStateChange(state_change.state,
|
641
|
-
state_change.status);
|
642
|
-
}
|
672
|
+
// Propagate status only in state TF.
|
673
|
+
// We specifically want to avoid propagating the status for
|
674
|
+
// state IDLE that the real subchannel gave us only for the
|
675
|
+
// purpose of keepalive propagation.
|
676
|
+
watcher_->OnConnectivityStateChange(
|
677
|
+
state,
|
678
|
+
state == GRPC_CHANNEL_TRANSIENT_FAILURE ? status : absl::OkStatus());
|
643
679
|
}
|
644
680
|
|
645
681
|
std::unique_ptr<SubchannelInterface::ConnectivityStateWatcherInterface>
|
646
682
|
watcher_;
|
647
683
|
RefCountedPtr<SubchannelWrapper> parent_;
|
648
|
-
WatcherWrapper* replacement_ = nullptr;
|
649
684
|
};
|
650
685
|
|
651
686
|
ClientChannel* chand_;
|
652
687
|
RefCountedPtr<Subchannel> subchannel_;
|
653
|
-
absl::optional<std::string> health_check_service_name_;
|
654
688
|
// Maps from the address of the watcher passed to us by the LB policy
|
655
689
|
// to the address of the WrapperWatcher that we passed to the underlying
|
656
690
|
// subchannel. This is needed so that when the LB policy calls
|
@@ -733,7 +767,7 @@ void ClientChannel::ExternalConnectivityWatcher::Notify(
|
|
733
767
|
chand_, on_complete_, /*cancel=*/false);
|
734
768
|
// Report new state to the user.
|
735
769
|
*state_ = state;
|
736
|
-
ExecCtx::Run(DEBUG_LOCATION, on_complete_,
|
770
|
+
ExecCtx::Run(DEBUG_LOCATION, on_complete_, absl::OkStatus());
|
737
771
|
// Hop back into the work_serializer to clean up.
|
738
772
|
// Not needed in state SHUTDOWN, because the tracker will
|
739
773
|
// automatically remove all watchers in that case.
|
@@ -756,7 +790,7 @@ void ClientChannel::ExternalConnectivityWatcher::Cancel() {
|
|
756
790
|
std::memory_order_relaxed)) {
|
757
791
|
return; // Already done.
|
758
792
|
}
|
759
|
-
ExecCtx::Run(DEBUG_LOCATION, on_complete_,
|
793
|
+
ExecCtx::Run(DEBUG_LOCATION, on_complete_, absl::CancelledError());
|
760
794
|
// Hop back into the work_serializer to clean up.
|
761
795
|
// Note: The callback takes a ref in case the ref inside the state tracker
|
762
796
|
// gets removed before the callback runs via a SHUTDOWN notification.
|
@@ -770,7 +804,7 @@ void ClientChannel::ExternalConnectivityWatcher::Cancel() {
|
|
770
804
|
}
|
771
805
|
|
772
806
|
void ClientChannel::ExternalConnectivityWatcher::AddWatcherLocked() {
|
773
|
-
Closure::Run(DEBUG_LOCATION, watcher_timer_init_,
|
807
|
+
Closure::Run(DEBUG_LOCATION, watcher_timer_init_, absl::OkStatus());
|
774
808
|
// Add new watcher. Pass the ref of the object from creation to OrphanablePtr.
|
775
809
|
chand_->state_tracker_.AddWatcher(
|
776
810
|
initial_state_, OrphanablePtr<ConnectivityStateWatcherInterface>(this));
|
@@ -863,13 +897,6 @@ class ClientChannel::ClientChannelControlHelper
|
|
863
897
|
ServerAddress address, const ChannelArgs& args) override
|
864
898
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
865
899
|
if (chand_->resolver_ == nullptr) return nullptr; // Shutting down.
|
866
|
-
// Determine health check service name.
|
867
|
-
absl::optional<std::string> health_check_service_name;
|
868
|
-
if (!args.GetBool(GRPC_ARG_INHIBIT_HEALTH_CHECKING).value_or(false)) {
|
869
|
-
health_check_service_name =
|
870
|
-
args.GetOwnedString(GRPC_ARG_HEALTH_CHECK_SERVICE_NAME);
|
871
|
-
}
|
872
|
-
// Construct channel args for subchannel.
|
873
900
|
ChannelArgs subchannel_args = ClientChannel::MakeSubchannelArgs(
|
874
901
|
args, address.args(), chand_->subchannel_pool_,
|
875
902
|
chand_->default_authority_);
|
@@ -881,17 +908,15 @@ class ClientChannel::ClientChannelControlHelper
|
|
881
908
|
// Make sure the subchannel has updated keepalive time.
|
882
909
|
subchannel->ThrottleKeepaliveTime(chand_->keepalive_time_);
|
883
910
|
// Create and return wrapper for the subchannel.
|
884
|
-
return MakeRefCounted<SubchannelWrapper>(
|
885
|
-
chand_, std::move(subchannel), std::move(health_check_service_name));
|
911
|
+
return MakeRefCounted<SubchannelWrapper>(chand_, std::move(subchannel));
|
886
912
|
}
|
887
913
|
|
888
|
-
void UpdateState(
|
889
|
-
|
890
|
-
|
891
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
914
|
+
void UpdateState(grpc_connectivity_state state, const absl::Status& status,
|
915
|
+
RefCountedPtr<LoadBalancingPolicy::SubchannelPicker> picker)
|
916
|
+
override ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
892
917
|
if (chand_->resolver_ == nullptr) return; // Shutting down.
|
893
918
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
894
|
-
const char* extra =
|
919
|
+
const char* extra = chand_->disconnect_error_.ok()
|
895
920
|
? ""
|
896
921
|
: " (ignoring -- channel shutting down)";
|
897
922
|
gpr_log(GPR_INFO, "chand=%p: update: state=%s status=(%s) picker=%p%s",
|
@@ -899,7 +924,7 @@ class ClientChannel::ClientChannelControlHelper
|
|
899
924
|
picker.get(), extra);
|
900
925
|
}
|
901
926
|
// Do update only if not shutting down.
|
902
|
-
if (
|
927
|
+
if (chand_->disconnect_error_.ok()) {
|
903
928
|
chand_->UpdateStateAndPickerLocked(state, status, "helper",
|
904
929
|
std::move(picker));
|
905
930
|
}
|
@@ -918,6 +943,10 @@ class ClientChannel::ClientChannelControlHelper
|
|
918
943
|
return chand_->default_authority_;
|
919
944
|
}
|
920
945
|
|
946
|
+
grpc_event_engine::experimental::EventEngine* GetEventEngine() override {
|
947
|
+
return chand_->owning_stack_->EventEngine();
|
948
|
+
}
|
949
|
+
|
921
950
|
void AddTraceEvent(TraceSeverity severity, absl::string_view message) override
|
922
951
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
923
952
|
if (chand_->resolver_ == nullptr) return; // Shutting down.
|
@@ -954,7 +983,7 @@ grpc_error_handle ClientChannel::Init(grpc_channel_element* elem,
|
|
954
983
|
grpc_channel_element_args* args) {
|
955
984
|
GPR_ASSERT(args->is_last);
|
956
985
|
GPR_ASSERT(elem->filter == &kFilterVtable);
|
957
|
-
grpc_error_handle error
|
986
|
+
grpc_error_handle error;
|
958
987
|
new (elem->channel_data) ClientChannel(args, &error);
|
959
988
|
return error;
|
960
989
|
}
|
@@ -978,7 +1007,7 @@ RefCountedPtr<SubchannelPoolInterface> GetSubchannelPool(
|
|
978
1007
|
|
979
1008
|
ClientChannel::ClientChannel(grpc_channel_element_args* args,
|
980
1009
|
grpc_error_handle* error)
|
981
|
-
: channel_args_(
|
1010
|
+
: channel_args_(args->channel_args),
|
982
1011
|
deadline_checking_enabled_(grpc_deadline_checking_enabled(channel_args_)),
|
983
1012
|
owning_stack_(args->channel_stack),
|
984
1013
|
client_channel_factory_(channel_args_.GetObject<ClientChannelFactory>()),
|
@@ -997,7 +1026,7 @@ ClientChannel::ClientChannel(grpc_channel_element_args* args,
|
|
997
1026
|
grpc_client_channel_start_backup_polling(interested_parties_);
|
998
1027
|
// Check client channel factory.
|
999
1028
|
if (client_channel_factory_ == nullptr) {
|
1000
|
-
*error =
|
1029
|
+
*error = GRPC_ERROR_CREATE(
|
1001
1030
|
"Missing client channel factory in args for client channel filter");
|
1002
1031
|
return;
|
1003
1032
|
}
|
@@ -1006,7 +1035,7 @@ ClientChannel::ClientChannel(grpc_channel_element_args* args,
|
|
1006
1035
|
absl::optional<absl::string_view> service_config_json =
|
1007
1036
|
channel_args_.GetString(GRPC_ARG_SERVICE_CONFIG);
|
1008
1037
|
if (!service_config_json.has_value()) service_config_json = "{}";
|
1009
|
-
*error =
|
1038
|
+
*error = absl::OkStatus();
|
1010
1039
|
auto service_config =
|
1011
1040
|
ServiceConfigImpl::Create(channel_args_, *service_config_json);
|
1012
1041
|
if (!service_config.ok()) {
|
@@ -1018,7 +1047,7 @@ ClientChannel::ClientChannel(grpc_channel_element_args* args,
|
|
1018
1047
|
absl::optional<std::string> server_uri =
|
1019
1048
|
channel_args_.GetOwnedString(GRPC_ARG_SERVER_URI);
|
1020
1049
|
if (!server_uri.has_value()) {
|
1021
|
-
*error =
|
1050
|
+
*error = GRPC_ERROR_CREATE(
|
1022
1051
|
"target URI channel arg missing or wrong type in client channel "
|
1023
1052
|
"filter");
|
1024
1053
|
return;
|
@@ -1031,7 +1060,7 @@ ClientChannel::ClientChannel(grpc_channel_element_args* args,
|
|
1031
1060
|
// resolver creation will succeed later.
|
1032
1061
|
if (!CoreConfiguration::Get().resolver_registry().IsValidTarget(
|
1033
1062
|
uri_to_resolve_)) {
|
1034
|
-
*error =
|
1063
|
+
*error = GRPC_ERROR_CREATE(
|
1035
1064
|
absl::StrCat("the target uri is not valid: ", uri_to_resolve_));
|
1036
1065
|
return;
|
1037
1066
|
}
|
@@ -1056,7 +1085,7 @@ ClientChannel::ClientChannel(grpc_channel_element_args* args,
|
|
1056
1085
|
default_authority_ = std::move(*default_authority);
|
1057
1086
|
}
|
1058
1087
|
// Success.
|
1059
|
-
*error =
|
1088
|
+
*error = absl::OkStatus();
|
1060
1089
|
}
|
1061
1090
|
|
1062
1091
|
ClientChannel::~ClientChannel() {
|
@@ -1067,18 +1096,17 @@ ClientChannel::~ClientChannel() {
|
|
1067
1096
|
// Stop backup polling.
|
1068
1097
|
grpc_client_channel_stop_backup_polling(interested_parties_);
|
1069
1098
|
grpc_pollset_set_destroy(interested_parties_);
|
1070
|
-
GRPC_ERROR_UNREF(disconnect_error_);
|
1071
1099
|
}
|
1072
1100
|
|
1073
|
-
OrphanablePtr<ClientChannel::
|
1101
|
+
OrphanablePtr<ClientChannel::FilterBasedLoadBalancedCall>
|
1074
1102
|
ClientChannel::CreateLoadBalancedCall(
|
1075
1103
|
const grpc_call_element_args& args, grpc_polling_entity* pollent,
|
1076
1104
|
grpc_closure* on_call_destruction_complete,
|
1077
|
-
|
1078
|
-
|
1079
|
-
|
1080
|
-
|
1081
|
-
|
1105
|
+
absl::AnyInvocable<void()> on_commit, bool is_transparent_retry) {
|
1106
|
+
return OrphanablePtr<FilterBasedLoadBalancedCall>(
|
1107
|
+
args.arena->New<FilterBasedLoadBalancedCall>(
|
1108
|
+
this, args, pollent, on_call_destruction_complete,
|
1109
|
+
std::move(on_commit), is_transparent_retry));
|
1082
1110
|
}
|
1083
1111
|
|
1084
1112
|
ChannelArgs ClientChannel::MakeSubchannelArgs(
|
@@ -1104,6 +1132,14 @@ ChannelArgs ClientChannel::MakeSubchannelArgs(
|
|
1104
1132
|
.Remove(GRPC_ARG_CHANNELZ_CHANNEL_NODE);
|
1105
1133
|
}
|
1106
1134
|
|
1135
|
+
void ClientChannel::ReprocessQueuedResolverCalls() {
|
1136
|
+
for (CallData* calld : resolver_queued_calls_) {
|
1137
|
+
calld->RemoveCallFromResolverQueuedCallsLocked();
|
1138
|
+
calld->RetryCheckResolutionLocked();
|
1139
|
+
}
|
1140
|
+
resolver_queued_calls_.clear();
|
1141
|
+
}
|
1142
|
+
|
1107
1143
|
namespace {
|
1108
1144
|
|
1109
1145
|
RefCountedPtr<LoadBalancingPolicy::Config> ChooseLbPolicy(
|
@@ -1144,9 +1180,9 @@ RefCountedPtr<LoadBalancingPolicy::Config> ChooseLbPolicy(
|
|
1144
1180
|
// above.
|
1145
1181
|
if (!policy_name.has_value()) policy_name = "pick_first";
|
1146
1182
|
// Now that we have the policy name, construct an empty config for it.
|
1147
|
-
Json config_json = Json::
|
1148
|
-
{std::string(*policy_name), Json::
|
1149
|
-
}};
|
1183
|
+
Json config_json = Json::FromArray({Json::FromObject({
|
1184
|
+
{std::string(*policy_name), Json::FromObject({})},
|
1185
|
+
})});
|
1150
1186
|
auto lb_policy_config =
|
1151
1187
|
CoreConfiguration::Get().lb_policy_registry().ParseLoadBalancingConfig(
|
1152
1188
|
config_json);
|
@@ -1310,28 +1346,16 @@ void ClientChannel::OnResolverErrorLocked(absl::Status status) {
|
|
1310
1346
|
// result, then we continue to let it set the connectivity state.
|
1311
1347
|
// Otherwise, we go into TRANSIENT_FAILURE.
|
1312
1348
|
if (lb_policy_ == nullptr) {
|
1313
|
-
|
1349
|
+
// Update connectivity state.
|
1350
|
+
UpdateStateLocked(GRPC_CHANNEL_TRANSIENT_FAILURE, status,
|
1351
|
+
"resolver failure");
|
1314
1352
|
{
|
1315
1353
|
MutexLock lock(&resolution_mu_);
|
1316
1354
|
// Update resolver transient failure.
|
1317
1355
|
resolver_transient_failure_error_ =
|
1318
1356
|
MaybeRewriteIllegalStatusCode(status, "resolver");
|
1319
|
-
|
1320
|
-
for (ResolverQueuedCall* call = resolver_queued_calls_; call != nullptr;
|
1321
|
-
call = call->next) {
|
1322
|
-
grpc_call_element* elem = call->elem;
|
1323
|
-
CallData* calld = static_cast<CallData*>(elem->call_data);
|
1324
|
-
grpc_error_handle error = GRPC_ERROR_NONE;
|
1325
|
-
if (calld->CheckResolutionLocked(elem, &error)) {
|
1326
|
-
calld->AsyncResolutionDone(elem, error);
|
1327
|
-
}
|
1328
|
-
}
|
1357
|
+
ReprocessQueuedResolverCalls();
|
1329
1358
|
}
|
1330
|
-
GRPC_ERROR_UNREF(error);
|
1331
|
-
// Update connectivity state.
|
1332
|
-
UpdateStateAndPickerLocked(
|
1333
|
-
GRPC_CHANNEL_TRANSIENT_FAILURE, status, "resolver failure",
|
1334
|
-
absl::make_unique<LoadBalancingPolicy::TransientFailurePicker>(status));
|
1335
1359
|
}
|
1336
1360
|
}
|
1337
1361
|
|
@@ -1368,10 +1392,18 @@ absl::Status ClientChannel::CreateOrUpdateLbPolicyLocked(
|
|
1368
1392
|
// Creates a new LB policy.
|
1369
1393
|
OrphanablePtr<LoadBalancingPolicy> ClientChannel::CreateLbPolicyLocked(
|
1370
1394
|
const ChannelArgs& args) {
|
1395
|
+
// The LB policy will start in state CONNECTING but will not
|
1396
|
+
// necessarily send us an update synchronously, so set state to
|
1397
|
+
// CONNECTING (in case the resolver had previously failed and put the
|
1398
|
+
// channel into TRANSIENT_FAILURE) and make sure we have a queueing picker.
|
1399
|
+
UpdateStateAndPickerLocked(
|
1400
|
+
GRPC_CHANNEL_CONNECTING, absl::Status(), "started resolving",
|
1401
|
+
MakeRefCounted<LoadBalancingPolicy::QueuePicker>(nullptr));
|
1402
|
+
// Now create the LB policy.
|
1371
1403
|
LoadBalancingPolicy::Args lb_policy_args;
|
1372
1404
|
lb_policy_args.work_serializer = work_serializer_;
|
1373
1405
|
lb_policy_args.channel_control_helper =
|
1374
|
-
|
1406
|
+
std::make_unique<ClientChannelControlHelper>(this);
|
1375
1407
|
lb_policy_args.args = args;
|
1376
1408
|
OrphanablePtr<LoadBalancingPolicy> lb_policy =
|
1377
1409
|
MakeOrphanable<ChildPolicyHandler>(std::move(lb_policy_args),
|
@@ -1385,30 +1417,6 @@ OrphanablePtr<LoadBalancingPolicy> ClientChannel::CreateLbPolicyLocked(
|
|
1385
1417
|
return lb_policy;
|
1386
1418
|
}
|
1387
1419
|
|
1388
|
-
void ClientChannel::AddResolverQueuedCall(ResolverQueuedCall* call,
|
1389
|
-
grpc_polling_entity* pollent) {
|
1390
|
-
// Add call to queued calls list.
|
1391
|
-
call->next = resolver_queued_calls_;
|
1392
|
-
resolver_queued_calls_ = call;
|
1393
|
-
// Add call's pollent to channel's interested_parties, so that I/O
|
1394
|
-
// can be done under the call's CQ.
|
1395
|
-
grpc_polling_entity_add_to_pollset_set(pollent, interested_parties_);
|
1396
|
-
}
|
1397
|
-
|
1398
|
-
void ClientChannel::RemoveResolverQueuedCall(ResolverQueuedCall* to_remove,
|
1399
|
-
grpc_polling_entity* pollent) {
|
1400
|
-
// Remove call's pollent from channel's interested_parties.
|
1401
|
-
grpc_polling_entity_del_from_pollset_set(pollent, interested_parties_);
|
1402
|
-
// Remove from queued calls list.
|
1403
|
-
for (ResolverQueuedCall** call = &resolver_queued_calls_; *call != nullptr;
|
1404
|
-
call = &(*call)->next) {
|
1405
|
-
if (*call == to_remove) {
|
1406
|
-
*call = to_remove->next;
|
1407
|
-
return;
|
1408
|
-
}
|
1409
|
-
}
|
1410
|
-
}
|
1411
|
-
|
1412
1420
|
void ClientChannel::UpdateServiceConfigInControlPlaneLocked(
|
1413
1421
|
RefCountedPtr<ServiceConfig> service_config,
|
1414
1422
|
RefCountedPtr<ConfigSelector> config_selector, std::string lb_policy_name) {
|
@@ -1446,8 +1454,8 @@ void ClientChannel::UpdateServiceConfigInDataPlaneLocked() {
|
|
1446
1454
|
config_selector =
|
1447
1455
|
MakeRefCounted<DefaultConfigSelector>(saved_service_config_);
|
1448
1456
|
}
|
1449
|
-
ChannelArgs new_args =
|
1450
|
-
channel_args_.SetObject(this).SetObject(service_config)
|
1457
|
+
ChannelArgs new_args =
|
1458
|
+
channel_args_.SetObject(this).SetObject(service_config);
|
1451
1459
|
bool enable_retries =
|
1452
1460
|
!new_args.WantMinimalStack() &&
|
1453
1461
|
new_args.GetBool(GRPC_ARG_ENABLE_RETRIES).value_or(true);
|
@@ -1460,7 +1468,7 @@ void ClientChannel::UpdateServiceConfigInDataPlaneLocked() {
|
|
1460
1468
|
filters.push_back(&DynamicTerminationFilter::kFilterVtable);
|
1461
1469
|
}
|
1462
1470
|
RefCountedPtr<DynamicFilters> dynamic_filters =
|
1463
|
-
DynamicFilters::Create(new_args
|
1471
|
+
DynamicFilters::Create(new_args, std::move(filters));
|
1464
1472
|
GPR_ASSERT(dynamic_filters != nullptr);
|
1465
1473
|
// Grab data plane lock to update service config.
|
1466
1474
|
//
|
@@ -1475,25 +1483,8 @@ void ClientChannel::UpdateServiceConfigInDataPlaneLocked() {
|
|
1475
1483
|
service_config_.swap(service_config);
|
1476
1484
|
config_selector_.swap(config_selector);
|
1477
1485
|
dynamic_filters_.swap(dynamic_filters);
|
1478
|
-
//
|
1479
|
-
|
1480
|
-
call = call->next) {
|
1481
|
-
// If there are a lot of queued calls here, resuming them all may cause us
|
1482
|
-
// to stay inside C-core for a long period of time. All of that work would
|
1483
|
-
// be done using the same ExecCtx instance and therefore the same cached
|
1484
|
-
// value of "now". The longer it takes to finish all of this work and exit
|
1485
|
-
// from C-core, the more stale the cached value of "now" may become. This
|
1486
|
-
// can cause problems whereby (e.g.) we calculate a timer deadline based
|
1487
|
-
// on the stale value, which results in the timer firing too early. To
|
1488
|
-
// avoid this, we invalidate the cached value for each call we process.
|
1489
|
-
ExecCtx::Get()->InvalidateNow();
|
1490
|
-
grpc_call_element* elem = call->elem;
|
1491
|
-
CallData* calld = static_cast<CallData*>(elem->call_data);
|
1492
|
-
grpc_error_handle error = GRPC_ERROR_NONE;
|
1493
|
-
if (calld->CheckResolutionLocked(elem, &error)) {
|
1494
|
-
calld->AsyncResolutionDone(elem, error);
|
1495
|
-
}
|
1496
|
-
}
|
1486
|
+
// Re-process queued calls asynchronously.
|
1487
|
+
ReprocessQueuedResolverCalls();
|
1497
1488
|
}
|
1498
1489
|
// Old values will be unreffed after lock is released when they go out
|
1499
1490
|
// of scope.
|
@@ -1501,17 +1492,17 @@ void ClientChannel::UpdateServiceConfigInDataPlaneLocked() {
|
|
1501
1492
|
|
1502
1493
|
void ClientChannel::CreateResolverLocked() {
|
1503
1494
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1504
|
-
gpr_log(GPR_INFO, "chand=%p: starting name resolution", this
|
1495
|
+
gpr_log(GPR_INFO, "chand=%p: starting name resolution for %s", this,
|
1496
|
+
uri_to_resolve_.c_str());
|
1505
1497
|
}
|
1506
1498
|
resolver_ = CoreConfiguration::Get().resolver_registry().CreateResolver(
|
1507
|
-
uri_to_resolve_
|
1508
|
-
|
1499
|
+
uri_to_resolve_, channel_args_, interested_parties_, work_serializer_,
|
1500
|
+
std::make_unique<ResolverResultHandler>(this));
|
1509
1501
|
// Since the validity of the args was checked when the channel was created,
|
1510
1502
|
// CreateResolver() must return a non-null result.
|
1511
1503
|
GPR_ASSERT(resolver_ != nullptr);
|
1512
|
-
|
1513
|
-
|
1514
|
-
absl::make_unique<LoadBalancingPolicy::QueuePicker>(nullptr));
|
1504
|
+
UpdateStateLocked(GRPC_CHANNEL_CONNECTING, absl::Status(),
|
1505
|
+
"started resolving");
|
1515
1506
|
resolver_->StartLocked();
|
1516
1507
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1517
1508
|
gpr_log(GPR_INFO, "chand=%p: created resolver=%p", this, resolver_.get());
|
@@ -1525,24 +1516,7 @@ void ClientChannel::DestroyResolverAndLbPolicyLocked() {
|
|
1525
1516
|
resolver_.get());
|
1526
1517
|
}
|
1527
1518
|
resolver_.reset();
|
1528
|
-
|
1529
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1530
|
-
gpr_log(GPR_INFO, "chand=%p: shutting down lb_policy=%p", this,
|
1531
|
-
lb_policy_.get());
|
1532
|
-
}
|
1533
|
-
grpc_pollset_set_del_pollset_set(lb_policy_->interested_parties(),
|
1534
|
-
interested_parties_);
|
1535
|
-
lb_policy_.reset();
|
1536
|
-
}
|
1537
|
-
}
|
1538
|
-
}
|
1539
|
-
|
1540
|
-
void ClientChannel::UpdateStateAndPickerLocked(
|
1541
|
-
grpc_connectivity_state state, const absl::Status& status,
|
1542
|
-
const char* reason,
|
1543
|
-
std::unique_ptr<LoadBalancingPolicy::SubchannelPicker> picker) {
|
1544
|
-
// Special case for IDLE and SHUTDOWN states.
|
1545
|
-
if (picker == nullptr || state == GRPC_CHANNEL_SHUTDOWN) {
|
1519
|
+
// Clear resolution state.
|
1546
1520
|
saved_service_config_.reset();
|
1547
1521
|
saved_config_selector_.reset();
|
1548
1522
|
// Acquire resolution lock to update config selector and associated state.
|
@@ -1558,8 +1532,22 @@ void ClientChannel::UpdateStateAndPickerLocked(
|
|
1558
1532
|
config_selector_to_unref = std::move(config_selector_);
|
1559
1533
|
dynamic_filters_to_unref = std::move(dynamic_filters_);
|
1560
1534
|
}
|
1535
|
+
// Clear LB policy if set.
|
1536
|
+
if (lb_policy_ != nullptr) {
|
1537
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1538
|
+
gpr_log(GPR_INFO, "chand=%p: shutting down lb_policy=%p", this,
|
1539
|
+
lb_policy_.get());
|
1540
|
+
}
|
1541
|
+
grpc_pollset_set_del_pollset_set(lb_policy_->interested_parties(),
|
1542
|
+
interested_parties_);
|
1543
|
+
lb_policy_.reset();
|
1544
|
+
}
|
1561
1545
|
}
|
1562
|
-
|
1546
|
+
}
|
1547
|
+
|
1548
|
+
void ClientChannel::UpdateStateLocked(grpc_connectivity_state state,
|
1549
|
+
const absl::Status& status,
|
1550
|
+
const char* reason) {
|
1563
1551
|
state_tracker_.SetState(state, status, reason);
|
1564
1552
|
if (channelz_node_ != nullptr) {
|
1565
1553
|
channelz_node_->SetConnectivityState(state);
|
@@ -1569,30 +1557,24 @@ void ClientChannel::UpdateStateAndPickerLocked(
|
|
1569
1557
|
channelz::ChannelNode::GetChannelConnectivityStateChangeString(
|
1570
1558
|
state)));
|
1571
1559
|
}
|
1572
|
-
|
1573
|
-
|
1574
|
-
|
1575
|
-
|
1576
|
-
|
1577
|
-
|
1578
|
-
|
1579
|
-
|
1580
|
-
|
1581
|
-
|
1582
|
-
|
1583
|
-
|
1584
|
-
|
1585
|
-
|
1586
|
-
|
1587
|
-
|
1588
|
-
// avoid this, we invalidate the cached value for each call we process.
|
1589
|
-
ExecCtx::Get()->InvalidateNow();
|
1590
|
-
grpc_error_handle error = GRPC_ERROR_NONE;
|
1591
|
-
if (call->lb_call->PickSubchannelLocked(&error)) {
|
1592
|
-
call->lb_call->AsyncPickDone(error);
|
1593
|
-
}
|
1594
|
-
}
|
1560
|
+
}
|
1561
|
+
|
1562
|
+
void ClientChannel::UpdateStateAndPickerLocked(
|
1563
|
+
grpc_connectivity_state state, const absl::Status& status,
|
1564
|
+
const char* reason,
|
1565
|
+
RefCountedPtr<LoadBalancingPolicy::SubchannelPicker> picker) {
|
1566
|
+
UpdateStateLocked(state, status, reason);
|
1567
|
+
// Grab the LB lock to update the picker and trigger reprocessing of the
|
1568
|
+
// queued picks.
|
1569
|
+
// Old picker will be unreffed after releasing the lock.
|
1570
|
+
MutexLock lock(&lb_mu_);
|
1571
|
+
picker_.swap(picker);
|
1572
|
+
// Reprocess queued picks.
|
1573
|
+
for (LoadBalancedCall* call : lb_queued_calls_) {
|
1574
|
+
call->RemoveCallFromLbQueuedCallsLocked();
|
1575
|
+
call->RetryPickLocked();
|
1595
1576
|
}
|
1577
|
+
lb_queued_calls_.clear();
|
1596
1578
|
}
|
1597
1579
|
|
1598
1580
|
namespace {
|
@@ -1631,11 +1613,11 @@ T HandlePickResult(
|
|
1631
1613
|
|
1632
1614
|
grpc_error_handle ClientChannel::DoPingLocked(grpc_transport_op* op) {
|
1633
1615
|
if (state_tracker_.state() != GRPC_CHANNEL_READY) {
|
1634
|
-
return
|
1616
|
+
return GRPC_ERROR_CREATE("channel not connected");
|
1635
1617
|
}
|
1636
1618
|
LoadBalancingPolicy::PickResult result;
|
1637
1619
|
{
|
1638
|
-
MutexLock lock(&
|
1620
|
+
MutexLock lock(&lb_mu_);
|
1639
1621
|
result = picker_->Pick(LoadBalancingPolicy::PickArgs());
|
1640
1622
|
}
|
1641
1623
|
return HandlePickResult<grpc_error_handle>(
|
@@ -1648,16 +1630,15 @@ grpc_error_handle ClientChannel::DoPingLocked(grpc_transport_op* op) {
|
|
1648
1630
|
RefCountedPtr<ConnectedSubchannel> connected_subchannel =
|
1649
1631
|
subchannel->connected_subchannel();
|
1650
1632
|
if (connected_subchannel == nullptr) {
|
1651
|
-
return
|
1652
|
-
"LB pick for ping not connected");
|
1633
|
+
return GRPC_ERROR_CREATE("LB pick for ping not connected");
|
1653
1634
|
}
|
1654
1635
|
connected_subchannel->Ping(op->send_ping.on_initiate,
|
1655
1636
|
op->send_ping.on_ack);
|
1656
|
-
return
|
1637
|
+
return absl::OkStatus();
|
1657
1638
|
},
|
1658
1639
|
// Queue pick.
|
1659
1640
|
[](LoadBalancingPolicy::PickResult::Queue* /*queue_pick*/) {
|
1660
|
-
return
|
1641
|
+
return GRPC_ERROR_CREATE("LB picker queued call");
|
1661
1642
|
},
|
1662
1643
|
// Fail pick.
|
1663
1644
|
[](LoadBalancingPolicy::PickResult::Fail* fail_pick) {
|
@@ -1681,9 +1662,8 @@ void ClientChannel::StartTransportOpLocked(grpc_transport_op* op) {
|
|
1681
1662
|
// Ping.
|
1682
1663
|
if (op->send_ping.on_initiate != nullptr || op->send_ping.on_ack != nullptr) {
|
1683
1664
|
grpc_error_handle error = DoPingLocked(op);
|
1684
|
-
if (!
|
1685
|
-
ExecCtx::Run(DEBUG_LOCATION, op->send_ping.on_initiate,
|
1686
|
-
GRPC_ERROR_REF(error));
|
1665
|
+
if (!error.ok()) {
|
1666
|
+
ExecCtx::Run(DEBUG_LOCATION, op->send_ping.on_initiate, error);
|
1687
1667
|
ExecCtx::Run(DEBUG_LOCATION, op->send_ping.on_ack, error);
|
1688
1668
|
}
|
1689
1669
|
op->bind_pollset = nullptr;
|
@@ -1697,34 +1677,40 @@ void ClientChannel::StartTransportOpLocked(grpc_transport_op* op) {
|
|
1697
1677
|
}
|
1698
1678
|
}
|
1699
1679
|
// Disconnect or enter IDLE.
|
1700
|
-
if (!
|
1680
|
+
if (!op->disconnect_with_error.ok()) {
|
1701
1681
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1702
1682
|
gpr_log(GPR_INFO, "chand=%p: disconnect_with_error: %s", this,
|
1703
|
-
|
1683
|
+
StatusToString(op->disconnect_with_error).c_str());
|
1704
1684
|
}
|
1705
1685
|
DestroyResolverAndLbPolicyLocked();
|
1706
1686
|
intptr_t value;
|
1707
1687
|
if (grpc_error_get_int(op->disconnect_with_error,
|
1708
|
-
|
1688
|
+
StatusIntProperty::ChannelConnectivityState,
|
1689
|
+
&value) &&
|
1709
1690
|
static_cast<grpc_connectivity_state>(value) == GRPC_CHANNEL_IDLE) {
|
1710
|
-
if (
|
1691
|
+
if (disconnect_error_.ok()) { // Ignore if we're shutting down.
|
1711
1692
|
// Enter IDLE state.
|
1712
1693
|
UpdateStateAndPickerLocked(GRPC_CHANNEL_IDLE, absl::Status(),
|
1713
1694
|
"channel entering IDLE", nullptr);
|
1695
|
+
// TODO(roth): Do we need to check for any queued picks here, in
|
1696
|
+
// case there's a race condition in the client_idle filter?
|
1697
|
+
// And maybe also check for calls in the resolver queue?
|
1714
1698
|
}
|
1715
|
-
GRPC_ERROR_UNREF(op->disconnect_with_error);
|
1716
1699
|
} else {
|
1717
1700
|
// Disconnect.
|
1718
|
-
GPR_ASSERT(
|
1701
|
+
GPR_ASSERT(disconnect_error_.ok());
|
1719
1702
|
disconnect_error_ = op->disconnect_with_error;
|
1720
1703
|
UpdateStateAndPickerLocked(
|
1721
1704
|
GRPC_CHANNEL_SHUTDOWN, absl::Status(), "shutdown from API",
|
1722
|
-
|
1705
|
+
MakeRefCounted<LoadBalancingPolicy::TransientFailurePicker>(
|
1723
1706
|
grpc_error_to_absl_status(op->disconnect_with_error)));
|
1707
|
+
// TODO(roth): If this happens when we're still waiting for a
|
1708
|
+
// resolver result, we need to trigger failures for all calls in
|
1709
|
+
// the resolver queue here.
|
1724
1710
|
}
|
1725
1711
|
}
|
1726
1712
|
GRPC_CHANNEL_STACK_UNREF(owning_stack_, "start_transport_op");
|
1727
|
-
ExecCtx::Run(DEBUG_LOCATION, op->on_consumed,
|
1713
|
+
ExecCtx::Run(DEBUG_LOCATION, op->on_consumed, absl::OkStatus());
|
1728
1714
|
}
|
1729
1715
|
|
1730
1716
|
void ClientChannel::StartTransportOp(grpc_channel_element* elem,
|
@@ -1757,30 +1743,6 @@ void ClientChannel::GetChannelInfo(grpc_channel_element* elem,
|
|
1757
1743
|
}
|
1758
1744
|
}
|
1759
1745
|
|
1760
|
-
void ClientChannel::AddLbQueuedCall(LbQueuedCall* call,
|
1761
|
-
grpc_polling_entity* pollent) {
|
1762
|
-
// Add call to queued picks list.
|
1763
|
-
call->next = lb_queued_calls_;
|
1764
|
-
lb_queued_calls_ = call;
|
1765
|
-
// Add call's pollent to channel's interested_parties, so that I/O
|
1766
|
-
// can be done under the call's CQ.
|
1767
|
-
grpc_polling_entity_add_to_pollset_set(pollent, interested_parties_);
|
1768
|
-
}
|
1769
|
-
|
1770
|
-
void ClientChannel::RemoveLbQueuedCall(LbQueuedCall* to_remove,
|
1771
|
-
grpc_polling_entity* pollent) {
|
1772
|
-
// Remove call's pollent from channel's interested_parties.
|
1773
|
-
grpc_polling_entity_del_from_pollset_set(pollent, interested_parties_);
|
1774
|
-
// Remove from queued picks list.
|
1775
|
-
for (LbQueuedCall** call = &lb_queued_calls_; *call != nullptr;
|
1776
|
-
call = &(*call)->next) {
|
1777
|
-
if (*call == to_remove) {
|
1778
|
-
*call = to_remove->next;
|
1779
|
-
return;
|
1780
|
-
}
|
1781
|
-
}
|
1782
|
-
}
|
1783
|
-
|
1784
1746
|
void ClientChannel::TryToConnectLocked() {
|
1785
1747
|
if (lb_policy_ != nullptr) {
|
1786
1748
|
lb_policy_->ExitIdleLocked();
|
@@ -1821,77 +1783,226 @@ void ClientChannel::RemoveConnectivityWatcher(
|
|
1821
1783
|
// CallData implementation
|
1822
1784
|
//
|
1823
1785
|
|
1824
|
-
ClientChannel::CallData::
|
1825
|
-
|
1826
|
-
|
1827
|
-
|
1828
|
-
|
1829
|
-
|
1830
|
-
|
1831
|
-
|
1786
|
+
void ClientChannel::CallData::RemoveCallFromResolverQueuedCallsLocked() {
|
1787
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
1788
|
+
gpr_log(GPR_INFO,
|
1789
|
+
"chand=%p calld=%p: removing from resolver queued picks list",
|
1790
|
+
chand(), this);
|
1791
|
+
}
|
1792
|
+
// Remove call's pollent from channel's interested_parties.
|
1793
|
+
grpc_polling_entity_del_from_pollset_set(pollent(),
|
1794
|
+
chand()->interested_parties_);
|
1795
|
+
// Note: There's no need to actually remove the call from the queue
|
1796
|
+
// here, because that will be done in
|
1797
|
+
// ResolverQueuedCallCanceller::CancelLocked() or
|
1798
|
+
// ClientChannel::ReprocessQueuedResolverCalls().
|
1799
|
+
}
|
1800
|
+
|
1801
|
+
void ClientChannel::CallData::AddCallToResolverQueuedCallsLocked() {
|
1802
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
1803
|
+
gpr_log(GPR_INFO, "chand=%p calld=%p: adding to resolver queued picks list",
|
1804
|
+
chand(), this);
|
1805
|
+
}
|
1806
|
+
// Add call's pollent to channel's interested_parties, so that I/O
|
1807
|
+
// can be done under the call's CQ.
|
1808
|
+
grpc_polling_entity_add_to_pollset_set(pollent(),
|
1809
|
+
chand()->interested_parties_);
|
1810
|
+
// Add to queue.
|
1811
|
+
chand()->resolver_queued_calls_.insert(this);
|
1812
|
+
OnAddToQueueLocked();
|
1813
|
+
}
|
1814
|
+
|
1815
|
+
grpc_error_handle ClientChannel::CallData::ApplyServiceConfigToCallLocked(
|
1816
|
+
const absl::StatusOr<RefCountedPtr<ConfigSelector>>& config_selector) {
|
1817
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
1818
|
+
gpr_log(GPR_INFO, "chand=%p calld=%p: applying service config to call",
|
1819
|
+
chand(), this);
|
1820
|
+
}
|
1821
|
+
if (!config_selector.ok()) return config_selector.status();
|
1822
|
+
// Create a ClientChannelServiceConfigCallData for the call. This stores
|
1823
|
+
// a ref to the ServiceConfig and caches the right set of parsed configs
|
1824
|
+
// to use for the call. The ClientChannelServiceConfigCallData will store
|
1825
|
+
// itself in the call context, so that it can be accessed by filters
|
1826
|
+
// below us in the stack, and it will be cleaned up when the call ends.
|
1827
|
+
auto* service_config_call_data =
|
1828
|
+
arena()->New<ClientChannelServiceConfigCallData>(arena(), call_context());
|
1829
|
+
// Use the ConfigSelector to determine the config for the call.
|
1830
|
+
absl::Status call_config_status =
|
1831
|
+
(*config_selector)
|
1832
|
+
->GetCallConfig(
|
1833
|
+
{send_initial_metadata(), arena(), service_config_call_data});
|
1834
|
+
if (!call_config_status.ok()) {
|
1835
|
+
return absl_status_to_grpc_error(
|
1836
|
+
MaybeRewriteIllegalStatusCode(call_config_status, "ConfigSelector"));
|
1837
|
+
}
|
1838
|
+
// Apply our own method params to the call.
|
1839
|
+
auto* method_params = static_cast<ClientChannelMethodParsedConfig*>(
|
1840
|
+
service_config_call_data->GetMethodParsedConfig(
|
1841
|
+
chand()->service_config_parser_index_));
|
1842
|
+
if (method_params != nullptr) {
|
1843
|
+
// If the deadline from the service config is shorter than the one
|
1844
|
+
// from the client API, reset the deadline timer.
|
1845
|
+
if (chand()->deadline_checking_enabled_ &&
|
1846
|
+
method_params->timeout() != Duration::Zero()) {
|
1847
|
+
ResetDeadline(method_params->timeout());
|
1848
|
+
}
|
1849
|
+
// If the service config set wait_for_ready and the application
|
1850
|
+
// did not explicitly set it, use the value from the service config.
|
1851
|
+
auto* wait_for_ready =
|
1852
|
+
send_initial_metadata()->GetOrCreatePointer(WaitForReady());
|
1853
|
+
if (method_params->wait_for_ready().has_value() &&
|
1854
|
+
!wait_for_ready->explicitly_set) {
|
1855
|
+
wait_for_ready->value = method_params->wait_for_ready().value();
|
1856
|
+
}
|
1857
|
+
}
|
1858
|
+
return absl::OkStatus();
|
1859
|
+
}
|
1860
|
+
|
1861
|
+
absl::optional<absl::Status> ClientChannel::CallData::CheckResolution(
|
1862
|
+
bool was_queued) {
|
1863
|
+
// Check if we have a resolver result to use.
|
1864
|
+
absl::StatusOr<RefCountedPtr<ConfigSelector>> config_selector;
|
1865
|
+
{
|
1866
|
+
MutexLock lock(&chand()->resolution_mu_);
|
1867
|
+
bool result_ready = CheckResolutionLocked(&config_selector);
|
1868
|
+
// If no result is available, queue the call.
|
1869
|
+
if (!result_ready) {
|
1870
|
+
AddCallToResolverQueuedCallsLocked();
|
1871
|
+
return absl::nullopt;
|
1872
|
+
}
|
1873
|
+
}
|
1874
|
+
// We have a result. Apply service config to call.
|
1875
|
+
grpc_error_handle error = ApplyServiceConfigToCallLocked(config_selector);
|
1876
|
+
// ConfigSelector must be unreffed inside the WorkSerializer.
|
1877
|
+
if (config_selector.ok()) {
|
1878
|
+
chand()->work_serializer_->Run(
|
1879
|
+
[config_selector = std::move(*config_selector)]() mutable {
|
1880
|
+
config_selector.reset();
|
1881
|
+
},
|
1882
|
+
DEBUG_LOCATION);
|
1883
|
+
}
|
1884
|
+
// Handle errors.
|
1885
|
+
if (!error.ok()) {
|
1886
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
1887
|
+
gpr_log(GPR_INFO,
|
1888
|
+
"chand=%p calld=%p: error applying config to call: error=%s",
|
1889
|
+
chand(), this, StatusToString(error).c_str());
|
1890
|
+
}
|
1891
|
+
return error;
|
1892
|
+
}
|
1893
|
+
// If the call was queued, add trace annotation.
|
1894
|
+
if (was_queued) {
|
1895
|
+
auto* call_tracer = static_cast<CallTracerAnnotationInterface*>(
|
1896
|
+
call_context()[GRPC_CONTEXT_CALL_TRACER_ANNOTATION_INTERFACE].value);
|
1897
|
+
if (call_tracer != nullptr) {
|
1898
|
+
call_tracer->RecordAnnotation("Delayed name resolution complete.");
|
1899
|
+
}
|
1900
|
+
}
|
1901
|
+
return absl::OkStatus();
|
1902
|
+
}
|
1903
|
+
|
1904
|
+
bool ClientChannel::CallData::CheckResolutionLocked(
|
1905
|
+
absl::StatusOr<RefCountedPtr<ConfigSelector>>* config_selector) {
|
1906
|
+
// If we don't yet have a resolver result, we need to queue the call
|
1907
|
+
// until we get one.
|
1908
|
+
if (GPR_UNLIKELY(!chand()->received_service_config_data_)) {
|
1909
|
+
// If the resolver returned transient failure before returning the
|
1910
|
+
// first service config, fail any non-wait_for_ready calls.
|
1911
|
+
absl::Status resolver_error = chand()->resolver_transient_failure_error_;
|
1912
|
+
if (!resolver_error.ok() &&
|
1913
|
+
!send_initial_metadata()->GetOrCreatePointer(WaitForReady())->value) {
|
1914
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
1915
|
+
gpr_log(GPR_INFO, "chand=%p calld=%p: resolution failed, failing call",
|
1916
|
+
chand(), this);
|
1917
|
+
}
|
1918
|
+
*config_selector = absl_status_to_grpc_error(resolver_error);
|
1919
|
+
return true;
|
1920
|
+
}
|
1921
|
+
// Either the resolver has not yet returned a result, or it has
|
1922
|
+
// returned transient failure but the call is wait_for_ready. In
|
1923
|
+
// either case, queue the call.
|
1924
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
1925
|
+
gpr_log(GPR_INFO, "chand=%p calld=%p: no resolver result yet", chand(),
|
1926
|
+
this);
|
1927
|
+
}
|
1928
|
+
return false;
|
1929
|
+
}
|
1930
|
+
// Result found.
|
1931
|
+
*config_selector = chand()->config_selector_;
|
1932
|
+
dynamic_filters_ = chand()->dynamic_filters_;
|
1933
|
+
return true;
|
1934
|
+
}
|
1935
|
+
|
1936
|
+
//
|
1937
|
+
// FilterBasedCallData implementation
|
1938
|
+
//
|
1939
|
+
|
1940
|
+
ClientChannel::FilterBasedCallData::FilterBasedCallData(
|
1941
|
+
grpc_call_element* elem, const grpc_call_element_args& args)
|
1942
|
+
: path_(CSliceRef(args.path)),
|
1943
|
+
call_context_(args.context),
|
1832
1944
|
call_start_time_(args.start_time),
|
1833
1945
|
deadline_(args.deadline),
|
1834
|
-
|
1835
|
-
|
1836
|
-
|
1837
|
-
|
1946
|
+
deadline_state_(elem, args,
|
1947
|
+
GPR_LIKELY(static_cast<ClientChannel*>(elem->channel_data)
|
1948
|
+
->deadline_checking_enabled_)
|
1949
|
+
? args.deadline
|
1950
|
+
: Timestamp::InfFuture()) {
|
1838
1951
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
1839
|
-
gpr_log(GPR_INFO, "chand=%p calld=%p: created call",
|
1952
|
+
gpr_log(GPR_INFO, "chand=%p calld=%p: created call", chand(), this);
|
1840
1953
|
}
|
1841
1954
|
}
|
1842
1955
|
|
1843
|
-
ClientChannel::
|
1844
|
-
|
1845
|
-
GRPC_ERROR_UNREF(cancel_error_);
|
1956
|
+
ClientChannel::FilterBasedCallData::~FilterBasedCallData() {
|
1957
|
+
CSliceUnref(path_);
|
1846
1958
|
// Make sure there are no remaining pending batches.
|
1847
1959
|
for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
|
1848
1960
|
GPR_ASSERT(pending_batches_[i] == nullptr);
|
1849
1961
|
}
|
1850
1962
|
}
|
1851
1963
|
|
1852
|
-
grpc_error_handle ClientChannel::
|
1964
|
+
grpc_error_handle ClientChannel::FilterBasedCallData::Init(
|
1853
1965
|
grpc_call_element* elem, const grpc_call_element_args* args) {
|
1854
|
-
|
1855
|
-
|
1856
|
-
return GRPC_ERROR_NONE;
|
1966
|
+
new (elem->call_data) FilterBasedCallData(elem, *args);
|
1967
|
+
return absl::OkStatus();
|
1857
1968
|
}
|
1858
1969
|
|
1859
|
-
void ClientChannel::
|
1970
|
+
void ClientChannel::FilterBasedCallData::Destroy(
|
1860
1971
|
grpc_call_element* elem, const grpc_call_final_info* /*final_info*/,
|
1861
1972
|
grpc_closure* then_schedule_closure) {
|
1862
|
-
|
1973
|
+
auto* calld = static_cast<FilterBasedCallData*>(elem->call_data);
|
1863
1974
|
RefCountedPtr<DynamicFilters::Call> dynamic_call =
|
1864
1975
|
std::move(calld->dynamic_call_);
|
1865
|
-
calld->~
|
1976
|
+
calld->~FilterBasedCallData();
|
1866
1977
|
if (GPR_LIKELY(dynamic_call != nullptr)) {
|
1867
1978
|
dynamic_call->SetAfterCallStackDestroy(then_schedule_closure);
|
1868
1979
|
} else {
|
1869
1980
|
// TODO(yashkt) : This can potentially be a Closure::Run
|
1870
|
-
ExecCtx::Run(DEBUG_LOCATION, then_schedule_closure,
|
1981
|
+
ExecCtx::Run(DEBUG_LOCATION, then_schedule_closure, absl::OkStatus());
|
1871
1982
|
}
|
1872
1983
|
}
|
1873
1984
|
|
1874
|
-
void ClientChannel::
|
1985
|
+
void ClientChannel::FilterBasedCallData::StartTransportStreamOpBatch(
|
1875
1986
|
grpc_call_element* elem, grpc_transport_stream_op_batch* batch) {
|
1876
|
-
|
1987
|
+
auto* calld = static_cast<FilterBasedCallData*>(elem->call_data);
|
1877
1988
|
ClientChannel* chand = static_cast<ClientChannel*>(elem->channel_data);
|
1878
1989
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace) &&
|
1879
1990
|
!GRPC_TRACE_FLAG_ENABLED(grpc_trace_channel)) {
|
1880
1991
|
gpr_log(GPR_INFO, "chand=%p calld=%p: batch started from above: %s", chand,
|
1881
|
-
calld, grpc_transport_stream_op_batch_string(batch).c_str());
|
1992
|
+
calld, grpc_transport_stream_op_batch_string(batch, false).c_str());
|
1882
1993
|
}
|
1883
1994
|
if (GPR_LIKELY(chand->deadline_checking_enabled_)) {
|
1884
|
-
grpc_deadline_state_client_start_transport_stream_op_batch(
|
1995
|
+
grpc_deadline_state_client_start_transport_stream_op_batch(
|
1996
|
+
&calld->deadline_state_, batch);
|
1885
1997
|
}
|
1886
|
-
// Intercept recv_trailing_metadata to call
|
1887
|
-
//
|
1888
|
-
// or LB call layer.
|
1998
|
+
// Intercept recv_trailing_metadata to commit the call, in case we wind up
|
1999
|
+
// failing the call before we get down to the retry or LB call layer.
|
1889
2000
|
if (batch->recv_trailing_metadata) {
|
1890
2001
|
calld->original_recv_trailing_metadata_ready_ =
|
1891
2002
|
batch->payload->recv_trailing_metadata.recv_trailing_metadata_ready;
|
1892
2003
|
GRPC_CLOSURE_INIT(&calld->recv_trailing_metadata_ready_,
|
1893
2004
|
RecvTrailingMetadataReadyForConfigSelectorCommitCallback,
|
1894
|
-
|
2005
|
+
calld, nullptr);
|
1895
2006
|
batch->payload->recv_trailing_metadata.recv_trailing_metadata_ready =
|
1896
2007
|
&calld->recv_trailing_metadata_ready_;
|
1897
2008
|
}
|
@@ -1909,15 +2020,14 @@ void ClientChannel::CallData::StartTransportStreamOpBatch(
|
|
1909
2020
|
// We do not yet have a dynamic call.
|
1910
2021
|
//
|
1911
2022
|
// If we've previously been cancelled, immediately fail any new batches.
|
1912
|
-
if (GPR_UNLIKELY(!
|
2023
|
+
if (GPR_UNLIKELY(!calld->cancel_error_.ok())) {
|
1913
2024
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
1914
2025
|
gpr_log(GPR_INFO, "chand=%p calld=%p: failing batch with error: %s",
|
1915
|
-
chand, calld,
|
1916
|
-
grpc_error_std_string(calld->cancel_error_).c_str());
|
2026
|
+
chand, calld, StatusToString(calld->cancel_error_).c_str());
|
1917
2027
|
}
|
1918
2028
|
// Note: This will release the call combiner.
|
1919
2029
|
grpc_transport_stream_op_batch_finish_with_failure(
|
1920
|
-
batch,
|
2030
|
+
batch, calld->cancel_error_, calld->call_combiner());
|
1921
2031
|
return;
|
1922
2032
|
}
|
1923
2033
|
// Handle cancellation.
|
@@ -1927,23 +2037,20 @@ void ClientChannel::CallData::StartTransportStreamOpBatch(
|
|
1927
2037
|
// cancelled before any batches are passed down (e.g., if the deadline
|
1928
2038
|
// is in the past when the call starts), we can return the right
|
1929
2039
|
// error to the caller when the first batch does get passed down.
|
1930
|
-
|
1931
|
-
calld->cancel_error_ =
|
1932
|
-
GRPC_ERROR_REF(batch->payload->cancel_stream.cancel_error);
|
2040
|
+
calld->cancel_error_ = batch->payload->cancel_stream.cancel_error;
|
1933
2041
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
1934
2042
|
gpr_log(GPR_INFO, "chand=%p calld=%p: recording cancel_error=%s", chand,
|
1935
|
-
calld,
|
2043
|
+
calld, StatusToString(calld->cancel_error_).c_str());
|
1936
2044
|
}
|
1937
2045
|
// Fail all pending batches.
|
1938
|
-
calld->PendingBatchesFail(
|
1939
|
-
NoYieldCallCombiner);
|
2046
|
+
calld->PendingBatchesFail(calld->cancel_error_, NoYieldCallCombiner);
|
1940
2047
|
// Note: This will release the call combiner.
|
1941
2048
|
grpc_transport_stream_op_batch_finish_with_failure(
|
1942
|
-
batch,
|
2049
|
+
batch, calld->cancel_error_, calld->call_combiner());
|
1943
2050
|
return;
|
1944
2051
|
}
|
1945
2052
|
// Add the batch to the pending list.
|
1946
|
-
calld->PendingBatchesAdd(
|
2053
|
+
calld->PendingBatchesAdd(batch);
|
1947
2054
|
// For batches containing a send_initial_metadata op, acquire the
|
1948
2055
|
// channel's resolution mutex to apply the service config to the call,
|
1949
2056
|
// after which we will create a dynamic call.
|
@@ -1954,7 +2061,23 @@ void ClientChannel::CallData::StartTransportStreamOpBatch(
|
|
1954
2061
|
"config",
|
1955
2062
|
chand, calld);
|
1956
2063
|
}
|
1957
|
-
|
2064
|
+
// If we're still in IDLE, we need to start resolving.
|
2065
|
+
if (GPR_UNLIKELY(chand->CheckConnectivityState(false) ==
|
2066
|
+
GRPC_CHANNEL_IDLE)) {
|
2067
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
2068
|
+
gpr_log(GPR_INFO, "chand=%p calld=%p: triggering exit idle", chand,
|
2069
|
+
calld);
|
2070
|
+
}
|
2071
|
+
// Bounce into the control plane work serializer to start resolving.
|
2072
|
+
GRPC_CHANNEL_STACK_REF(chand->owning_stack_, "ExitIdle");
|
2073
|
+
chand->work_serializer_->Run(
|
2074
|
+
[chand]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand->work_serializer_) {
|
2075
|
+
chand->CheckConnectivityState(/*try_to_connect=*/true);
|
2076
|
+
GRPC_CHANNEL_STACK_UNREF(chand->owning_stack_, "ExitIdle");
|
2077
|
+
},
|
2078
|
+
DEBUG_LOCATION);
|
2079
|
+
}
|
2080
|
+
calld->TryCheckResolution(/*was_queued=*/false);
|
1958
2081
|
} else {
|
1959
2082
|
// For all other batches, release the call combiner.
|
1960
2083
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
@@ -1962,26 +2085,21 @@ void ClientChannel::CallData::StartTransportStreamOpBatch(
|
|
1962
2085
|
"chand=%p calld=%p: saved batch, yielding call combiner", chand,
|
1963
2086
|
calld);
|
1964
2087
|
}
|
1965
|
-
GRPC_CALL_COMBINER_STOP(calld->
|
2088
|
+
GRPC_CALL_COMBINER_STOP(calld->call_combiner(),
|
1966
2089
|
"batch does not include send_initial_metadata");
|
1967
2090
|
}
|
1968
2091
|
}
|
1969
2092
|
|
1970
|
-
void ClientChannel::
|
1971
|
-
|
1972
|
-
|
2093
|
+
void ClientChannel::FilterBasedCallData::SetPollent(
|
2094
|
+
grpc_call_element* elem, grpc_polling_entity* pollent) {
|
2095
|
+
auto* calld = static_cast<FilterBasedCallData*>(elem->call_data);
|
1973
2096
|
calld->pollent_ = pollent;
|
1974
2097
|
}
|
1975
2098
|
|
1976
|
-
|
1977
|
-
// pending_batches management
|
1978
|
-
//
|
1979
|
-
|
1980
|
-
size_t ClientChannel::CallData::GetBatchIndex(
|
2099
|
+
size_t ClientChannel::FilterBasedCallData::GetBatchIndex(
|
1981
2100
|
grpc_transport_stream_op_batch* batch) {
|
1982
2101
|
// Note: It is important the send_initial_metadata be the first entry
|
1983
|
-
// here, since the code in
|
1984
|
-
// CheckResolutionLocked() assumes it will be.
|
2102
|
+
// here, since the code in CheckResolution() assumes it will be.
|
1985
2103
|
if (batch->send_initial_metadata) return 0;
|
1986
2104
|
if (batch->send_message) return 1;
|
1987
2105
|
if (batch->send_trailing_metadata) return 2;
|
@@ -1992,14 +2110,13 @@ size_t ClientChannel::CallData::GetBatchIndex(
|
|
1992
2110
|
}
|
1993
2111
|
|
1994
2112
|
// This is called via the call combiner, so access to calld is synchronized.
|
1995
|
-
void ClientChannel::
|
1996
|
-
|
1997
|
-
ClientChannel* chand = static_cast<ClientChannel*>(elem->channel_data);
|
2113
|
+
void ClientChannel::FilterBasedCallData::PendingBatchesAdd(
|
2114
|
+
grpc_transport_stream_op_batch* batch) {
|
1998
2115
|
const size_t idx = GetBatchIndex(batch);
|
1999
2116
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
2000
2117
|
gpr_log(GPR_INFO,
|
2001
|
-
"chand=%p calld=%p: adding pending batch at index %" PRIuPTR,
|
2002
|
-
this, idx);
|
2118
|
+
"chand=%p calld=%p: adding pending batch at index %" PRIuPTR,
|
2119
|
+
chand(), this, idx);
|
2003
2120
|
}
|
2004
2121
|
grpc_transport_stream_op_batch*& pending = pending_batches_[idx];
|
2005
2122
|
GPR_ASSERT(pending == nullptr);
|
@@ -2007,21 +2124,22 @@ void ClientChannel::CallData::PendingBatchesAdd(
|
|
2007
2124
|
}
|
2008
2125
|
|
2009
2126
|
// This is called via the call combiner, so access to calld is synchronized.
|
2010
|
-
void ClientChannel::
|
2127
|
+
void ClientChannel::FilterBasedCallData::FailPendingBatchInCallCombiner(
|
2011
2128
|
void* arg, grpc_error_handle error) {
|
2012
2129
|
grpc_transport_stream_op_batch* batch =
|
2013
2130
|
static_cast<grpc_transport_stream_op_batch*>(arg);
|
2014
|
-
|
2131
|
+
auto* calld =
|
2132
|
+
static_cast<FilterBasedCallData*>(batch->handler_private.extra_arg);
|
2015
2133
|
// Note: This will release the call combiner.
|
2016
|
-
grpc_transport_stream_op_batch_finish_with_failure(
|
2017
|
-
|
2134
|
+
grpc_transport_stream_op_batch_finish_with_failure(batch, error,
|
2135
|
+
calld->call_combiner());
|
2018
2136
|
}
|
2019
2137
|
|
2020
2138
|
// This is called via the call combiner, so access to calld is synchronized.
|
2021
|
-
void ClientChannel::
|
2022
|
-
|
2139
|
+
void ClientChannel::FilterBasedCallData::PendingBatchesFail(
|
2140
|
+
grpc_error_handle error,
|
2023
2141
|
YieldCallCombinerPredicate yield_call_combiner_predicate) {
|
2024
|
-
GPR_ASSERT(!
|
2142
|
+
GPR_ASSERT(!error.ok());
|
2025
2143
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
2026
2144
|
size_t num_batches = 0;
|
2027
2145
|
for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
|
@@ -2029,8 +2147,7 @@ void ClientChannel::CallData::PendingBatchesFail(
|
|
2029
2147
|
}
|
2030
2148
|
gpr_log(GPR_INFO,
|
2031
2149
|
"chand=%p calld=%p: failing %" PRIuPTR " pending batches: %s",
|
2032
|
-
|
2033
|
-
grpc_error_std_string(error).c_str());
|
2150
|
+
chand(), this, num_batches, StatusToString(error).c_str());
|
2034
2151
|
}
|
2035
2152
|
CallCombinerClosureList closures;
|
2036
2153
|
for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
|
@@ -2040,34 +2157,31 @@ void ClientChannel::CallData::PendingBatchesFail(
|
|
2040
2157
|
GRPC_CLOSURE_INIT(&batch->handler_private.closure,
|
2041
2158
|
FailPendingBatchInCallCombiner, batch,
|
2042
2159
|
grpc_schedule_on_exec_ctx);
|
2043
|
-
closures.Add(&batch->handler_private.closure,
|
2160
|
+
closures.Add(&batch->handler_private.closure, error,
|
2044
2161
|
"PendingBatchesFail");
|
2045
2162
|
batch = nullptr;
|
2046
2163
|
}
|
2047
2164
|
}
|
2048
2165
|
if (yield_call_combiner_predicate(closures)) {
|
2049
|
-
closures.RunClosures(
|
2166
|
+
closures.RunClosures(call_combiner());
|
2050
2167
|
} else {
|
2051
|
-
closures.RunClosuresWithoutYielding(
|
2168
|
+
closures.RunClosuresWithoutYielding(call_combiner());
|
2052
2169
|
}
|
2053
|
-
GRPC_ERROR_UNREF(error);
|
2054
2170
|
}
|
2055
2171
|
|
2056
2172
|
// This is called via the call combiner, so access to calld is synchronized.
|
2057
|
-
void ClientChannel::
|
2173
|
+
void ClientChannel::FilterBasedCallData::ResumePendingBatchInCallCombiner(
|
2058
2174
|
void* arg, grpc_error_handle /*ignored*/) {
|
2059
2175
|
grpc_transport_stream_op_batch* batch =
|
2060
2176
|
static_cast<grpc_transport_stream_op_batch*>(arg);
|
2061
|
-
auto*
|
2062
|
-
static_cast<
|
2063
|
-
auto* calld = static_cast<CallData*>(elem->call_data);
|
2177
|
+
auto* calld =
|
2178
|
+
static_cast<FilterBasedCallData*>(batch->handler_private.extra_arg);
|
2064
2179
|
// Note: This will release the call combiner.
|
2065
2180
|
calld->dynamic_call_->StartTransportStreamOpBatch(batch);
|
2066
2181
|
}
|
2067
2182
|
|
2068
2183
|
// This is called via the call combiner, so access to calld is synchronized.
|
2069
|
-
void ClientChannel::
|
2070
|
-
ClientChannel* chand = static_cast<ClientChannel*>(elem->channel_data);
|
2184
|
+
void ClientChannel::FilterBasedCallData::PendingBatchesResume() {
|
2071
2185
|
// Retries not enabled; send down batches as-is.
|
2072
2186
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
2073
2187
|
size_t num_batches = 0;
|
@@ -2077,325 +2191,162 @@ void ClientChannel::CallData::PendingBatchesResume(grpc_call_element* elem) {
|
|
2077
2191
|
gpr_log(GPR_INFO,
|
2078
2192
|
"chand=%p calld=%p: starting %" PRIuPTR
|
2079
2193
|
" pending batches on dynamic_call=%p",
|
2080
|
-
chand, this, num_batches, dynamic_call_.get());
|
2194
|
+
chand(), this, num_batches, dynamic_call_.get());
|
2081
2195
|
}
|
2082
2196
|
CallCombinerClosureList closures;
|
2083
2197
|
for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
|
2084
2198
|
grpc_transport_stream_op_batch*& batch = pending_batches_[i];
|
2085
2199
|
if (batch != nullptr) {
|
2086
|
-
batch->handler_private.extra_arg =
|
2200
|
+
batch->handler_private.extra_arg = this;
|
2087
2201
|
GRPC_CLOSURE_INIT(&batch->handler_private.closure,
|
2088
2202
|
ResumePendingBatchInCallCombiner, batch, nullptr);
|
2089
|
-
closures.Add(&batch->handler_private.closure,
|
2203
|
+
closures.Add(&batch->handler_private.closure, absl::OkStatus(),
|
2090
2204
|
"resuming pending batch from client channel call");
|
2091
2205
|
batch = nullptr;
|
2092
2206
|
}
|
2093
2207
|
}
|
2094
2208
|
// Note: This will release the call combiner.
|
2095
|
-
closures.RunClosures(
|
2209
|
+
closures.RunClosures(call_combiner());
|
2096
2210
|
}
|
2097
2211
|
|
2098
|
-
//
|
2099
|
-
// name resolution
|
2100
|
-
//
|
2101
|
-
|
2102
2212
|
// A class to handle the call combiner cancellation callback for a
|
2103
2213
|
// queued pick.
|
2104
|
-
class ClientChannel::
|
2214
|
+
class ClientChannel::FilterBasedCallData::ResolverQueuedCallCanceller {
|
2105
2215
|
public:
|
2106
|
-
explicit ResolverQueuedCallCanceller(
|
2107
|
-
|
2108
|
-
GRPC_CALL_STACK_REF(calld->
|
2216
|
+
explicit ResolverQueuedCallCanceller(FilterBasedCallData* calld)
|
2217
|
+
: calld_(calld) {
|
2218
|
+
GRPC_CALL_STACK_REF(calld->owning_call(), "ResolverQueuedCallCanceller");
|
2109
2219
|
GRPC_CLOSURE_INIT(&closure_, &CancelLocked, this,
|
2110
2220
|
grpc_schedule_on_exec_ctx);
|
2111
|
-
calld->
|
2221
|
+
calld->call_combiner()->SetNotifyOnCancel(&closure_);
|
2112
2222
|
}
|
2113
2223
|
|
2114
2224
|
private:
|
2115
2225
|
static void CancelLocked(void* arg, grpc_error_handle error) {
|
2116
2226
|
auto* self = static_cast<ResolverQueuedCallCanceller*>(arg);
|
2117
|
-
auto*
|
2118
|
-
auto*
|
2227
|
+
auto* calld = self->calld_;
|
2228
|
+
auto* chand = calld->chand();
|
2119
2229
|
{
|
2120
2230
|
MutexLock lock(&chand->resolution_mu_);
|
2121
2231
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
2122
2232
|
gpr_log(GPR_INFO,
|
2123
2233
|
"chand=%p calld=%p: cancelling resolver queued pick: "
|
2124
2234
|
"error=%s self=%p calld->resolver_pick_canceller=%p",
|
2125
|
-
chand, calld,
|
2235
|
+
chand, calld, StatusToString(error).c_str(), self,
|
2126
2236
|
calld->resolver_call_canceller_);
|
2127
2237
|
}
|
2128
|
-
if (calld->resolver_call_canceller_ == self &&
|
2129
|
-
!GRPC_ERROR_IS_NONE(error)) {
|
2238
|
+
if (calld->resolver_call_canceller_ == self && !error.ok()) {
|
2130
2239
|
// Remove pick from list of queued picks.
|
2131
|
-
calld->
|
2240
|
+
calld->RemoveCallFromResolverQueuedCallsLocked();
|
2241
|
+
chand->resolver_queued_calls_.erase(calld);
|
2132
2242
|
// Fail pending batches on the call.
|
2133
|
-
calld->PendingBatchesFail(
|
2243
|
+
calld->PendingBatchesFail(error,
|
2134
2244
|
YieldCallCombinerIfPendingBatchesFound);
|
2135
2245
|
}
|
2136
2246
|
}
|
2137
|
-
GRPC_CALL_STACK_UNREF(calld->
|
2247
|
+
GRPC_CALL_STACK_UNREF(calld->owning_call(), "ResolvingQueuedCallCanceller");
|
2138
2248
|
delete self;
|
2139
2249
|
}
|
2140
2250
|
|
2141
|
-
|
2251
|
+
FilterBasedCallData* calld_;
|
2142
2252
|
grpc_closure closure_;
|
2143
2253
|
};
|
2144
2254
|
|
2145
|
-
void ClientChannel::
|
2146
|
-
|
2147
|
-
if (
|
2148
|
-
|
2149
|
-
|
2150
|
-
|
2151
|
-
|
2152
|
-
|
2255
|
+
void ClientChannel::FilterBasedCallData::TryCheckResolution(bool was_queued) {
|
2256
|
+
auto result = CheckResolution(was_queued);
|
2257
|
+
if (result.has_value()) {
|
2258
|
+
if (!result->ok()) {
|
2259
|
+
PendingBatchesFail(*result, YieldCallCombiner);
|
2260
|
+
return;
|
2261
|
+
}
|
2262
|
+
CreateDynamicCall();
|
2153
2263
|
}
|
2154
|
-
chand->RemoveResolverQueuedCall(&resolver_queued_call_, pollent_);
|
2155
|
-
queued_pending_resolver_result_ = false;
|
2156
|
-
// Lame the call combiner canceller.
|
2157
|
-
resolver_call_canceller_ = nullptr;
|
2158
2264
|
}
|
2159
2265
|
|
2160
|
-
void ClientChannel::
|
2161
|
-
grpc_call_element* elem) {
|
2162
|
-
if (queued_pending_resolver_result_) return;
|
2163
|
-
auto* chand = static_cast<ClientChannel*>(elem->channel_data);
|
2164
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
2165
|
-
gpr_log(GPR_INFO, "chand=%p calld=%p: adding to resolver queued picks list",
|
2166
|
-
chand, this);
|
2167
|
-
}
|
2168
|
-
queued_pending_resolver_result_ = true;
|
2169
|
-
resolver_queued_call_.elem = elem;
|
2170
|
-
chand->AddResolverQueuedCall(&resolver_queued_call_, pollent_);
|
2266
|
+
void ClientChannel::FilterBasedCallData::OnAddToQueueLocked() {
|
2171
2267
|
// Register call combiner cancellation callback.
|
2172
|
-
resolver_call_canceller_ = new ResolverQueuedCallCanceller(
|
2268
|
+
resolver_call_canceller_ = new ResolverQueuedCallCanceller(this);
|
2173
2269
|
}
|
2174
2270
|
|
2175
|
-
|
2176
|
-
|
2177
|
-
|
2271
|
+
void ClientChannel::FilterBasedCallData::RetryCheckResolutionLocked() {
|
2272
|
+
// Lame the call combiner canceller.
|
2273
|
+
resolver_call_canceller_ = nullptr;
|
2274
|
+
// Do an async callback to resume call processing, so that we're not
|
2275
|
+
// doing it while holding the channel's resolution mutex.
|
2276
|
+
chand()->owning_stack_->EventEngine()->Run([this]() {
|
2277
|
+
ApplicationCallbackExecCtx application_exec_ctx;
|
2278
|
+
ExecCtx exec_ctx;
|
2279
|
+
TryCheckResolution(/*was_queued=*/true);
|
2280
|
+
});
|
2281
|
+
}
|
2282
|
+
|
2283
|
+
void ClientChannel::FilterBasedCallData::CreateDynamicCall() {
|
2284
|
+
DynamicFilters::Call::Args args = {dynamic_filters(), pollent_, path_,
|
2285
|
+
call_start_time_, deadline_, arena(),
|
2286
|
+
call_context_, call_combiner()};
|
2287
|
+
grpc_error_handle error;
|
2288
|
+
DynamicFilters* channel_stack = args.channel_stack.get();
|
2178
2289
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
2179
|
-
gpr_log(
|
2180
|
-
|
2181
|
-
|
2182
|
-
|
2183
|
-
|
2184
|
-
|
2185
|
-
|
2186
|
-
|
2187
|
-
|
2188
|
-
|
2189
|
-
|
2190
|
-
}
|
2191
|
-
// Create a ClientChannelServiceConfigCallData for the call. This stores
|
2192
|
-
// a ref to the ServiceConfig and caches the right set of parsed configs
|
2193
|
-
// to use for the call. The ClientChannelServiceConfigCallData will store
|
2194
|
-
// itself in the call context, so that it can be accessed by filters
|
2195
|
-
// below us in the stack, and it will be cleaned up when the call ends.
|
2196
|
-
auto* service_config_call_data =
|
2197
|
-
arena_->New<ClientChannelServiceConfigCallData>(
|
2198
|
-
std::move(call_config.service_config), call_config.method_configs,
|
2199
|
-
std::move(call_config.call_attributes),
|
2200
|
-
call_config.call_dispatch_controller, call_context_);
|
2201
|
-
// Apply our own method params to the call.
|
2202
|
-
auto* method_params = static_cast<ClientChannelMethodParsedConfig*>(
|
2203
|
-
service_config_call_data->GetMethodParsedConfig(
|
2204
|
-
chand->service_config_parser_index_));
|
2205
|
-
if (method_params != nullptr) {
|
2206
|
-
// If the deadline from the service config is shorter than the one
|
2207
|
-
// from the client API, reset the deadline timer.
|
2208
|
-
if (chand->deadline_checking_enabled_ &&
|
2209
|
-
method_params->timeout() != Duration::Zero()) {
|
2210
|
-
const Timestamp per_method_deadline =
|
2211
|
-
Timestamp::FromCycleCounterRoundUp(call_start_time_) +
|
2212
|
-
method_params->timeout();
|
2213
|
-
if (per_method_deadline < deadline_) {
|
2214
|
-
deadline_ = per_method_deadline;
|
2215
|
-
grpc_deadline_state_reset(elem, deadline_);
|
2216
|
-
}
|
2217
|
-
}
|
2218
|
-
// If the service config set wait_for_ready and the application
|
2219
|
-
// did not explicitly set it, use the value from the service config.
|
2220
|
-
auto* wait_for_ready =
|
2221
|
-
pending_batches_[0]
|
2222
|
-
->payload->send_initial_metadata.send_initial_metadata
|
2223
|
-
->GetOrCreatePointer(WaitForReady());
|
2224
|
-
if (method_params->wait_for_ready().has_value() &&
|
2225
|
-
!wait_for_ready->explicitly_set) {
|
2226
|
-
wait_for_ready->value = method_params->wait_for_ready().value();
|
2227
|
-
}
|
2290
|
+
gpr_log(
|
2291
|
+
GPR_INFO,
|
2292
|
+
"chand=%p calld=%p: creating dynamic call stack on channel_stack=%p",
|
2293
|
+
chand(), this, channel_stack);
|
2294
|
+
}
|
2295
|
+
dynamic_call_ = channel_stack->CreateCall(std::move(args), &error);
|
2296
|
+
if (!error.ok()) {
|
2297
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
2298
|
+
gpr_log(GPR_INFO,
|
2299
|
+
"chand=%p calld=%p: failed to create dynamic call: error=%s",
|
2300
|
+
chand(), this, StatusToString(error).c_str());
|
2228
2301
|
}
|
2229
|
-
|
2230
|
-
|
2302
|
+
PendingBatchesFail(error, YieldCallCombiner);
|
2303
|
+
return;
|
2231
2304
|
}
|
2232
|
-
|
2305
|
+
PendingBatchesResume();
|
2233
2306
|
}
|
2234
2307
|
|
2235
|
-
void ClientChannel::
|
2308
|
+
void ClientChannel::FilterBasedCallData::
|
2236
2309
|
RecvTrailingMetadataReadyForConfigSelectorCommitCallback(
|
2237
2310
|
void* arg, grpc_error_handle error) {
|
2238
|
-
auto*
|
2239
|
-
auto* chand =
|
2240
|
-
auto* calld = static_cast<CallData*>(elem->call_data);
|
2311
|
+
auto* calld = static_cast<FilterBasedCallData*>(arg);
|
2312
|
+
auto* chand = calld->chand();
|
2241
2313
|
auto* service_config_call_data =
|
2242
2314
|
static_cast<ClientChannelServiceConfigCallData*>(
|
2243
|
-
calld->
|
2315
|
+
calld->call_context()[GRPC_CONTEXT_SERVICE_CONFIG_CALL_DATA].value);
|
2244
2316
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
2245
2317
|
gpr_log(GPR_INFO,
|
2246
2318
|
"chand=%p calld=%p: got recv_trailing_metadata_ready: error=%s "
|
2247
2319
|
"service_config_call_data=%p",
|
2248
|
-
chand, calld,
|
2320
|
+
chand, calld, StatusToString(error).c_str(),
|
2249
2321
|
service_config_call_data);
|
2250
2322
|
}
|
2251
2323
|
if (service_config_call_data != nullptr) {
|
2252
|
-
service_config_call_data->
|
2324
|
+
service_config_call_data->Commit();
|
2253
2325
|
}
|
2254
2326
|
// Chain to original callback.
|
2255
2327
|
Closure::Run(DEBUG_LOCATION, calld->original_recv_trailing_metadata_ready_,
|
2256
|
-
|
2257
|
-
}
|
2258
|
-
|
2259
|
-
void ClientChannel::CallData::AsyncResolutionDone(grpc_call_element* elem,
|
2260
|
-
grpc_error_handle error) {
|
2261
|
-
// TODO(roth): Does this callback need to hold a ref to the call stack?
|
2262
|
-
GRPC_CLOSURE_INIT(&resolution_done_closure_, ResolutionDone, elem, nullptr);
|
2263
|
-
ExecCtx::Run(DEBUG_LOCATION, &resolution_done_closure_, error);
|
2328
|
+
error);
|
2264
2329
|
}
|
2265
2330
|
|
2266
|
-
|
2267
|
-
|
2268
|
-
|
2269
|
-
ClientChannel* chand = static_cast<ClientChannel*>(elem->channel_data);
|
2270
|
-
CallData* calld = static_cast<CallData*>(elem->call_data);
|
2271
|
-
if (!GRPC_ERROR_IS_NONE(error)) {
|
2272
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
2273
|
-
gpr_log(GPR_INFO,
|
2274
|
-
"chand=%p calld=%p: error applying config to call: error=%s",
|
2275
|
-
chand, calld, grpc_error_std_string(error).c_str());
|
2276
|
-
}
|
2277
|
-
calld->PendingBatchesFail(elem, GRPC_ERROR_REF(error), YieldCallCombiner);
|
2278
|
-
return;
|
2279
|
-
}
|
2280
|
-
calld->CreateDynamicCall(elem);
|
2281
|
-
}
|
2331
|
+
//
|
2332
|
+
// ClientChannel::LoadBalancedCall::LbCallState
|
2333
|
+
//
|
2282
2334
|
|
2283
|
-
|
2284
|
-
|
2285
|
-
|
2286
|
-
|
2287
|
-
ClientChannel* chand = static_cast<ClientChannel*>(elem->channel_data);
|
2288
|
-
bool resolution_complete;
|
2289
|
-
{
|
2290
|
-
MutexLock lock(&chand->resolution_mu_);
|
2291
|
-
resolution_complete = calld->CheckResolutionLocked(elem, &error);
|
2292
|
-
}
|
2293
|
-
if (resolution_complete) {
|
2294
|
-
ResolutionDone(elem, error);
|
2295
|
-
GRPC_ERROR_UNREF(error);
|
2296
|
-
}
|
2297
|
-
}
|
2335
|
+
class ClientChannel::LoadBalancedCall::LbCallState
|
2336
|
+
: public ClientChannelLbCallState {
|
2337
|
+
public:
|
2338
|
+
explicit LbCallState(LoadBalancedCall* lb_call) : lb_call_(lb_call) {}
|
2298
2339
|
|
2299
|
-
|
2300
|
-
grpc_error_handle* error) {
|
2301
|
-
ClientChannel* chand = static_cast<ClientChannel*>(elem->channel_data);
|
2302
|
-
// If we're still in IDLE, we need to start resolving.
|
2303
|
-
if (GPR_UNLIKELY(chand->CheckConnectivityState(false) == GRPC_CHANNEL_IDLE)) {
|
2304
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
2305
|
-
gpr_log(GPR_INFO, "chand=%p calld=%p: triggering exit idle", chand, this);
|
2306
|
-
}
|
2307
|
-
// Bounce into the control plane work serializer to start resolving,
|
2308
|
-
// in case we are still in IDLE state. Since we are holding on to the
|
2309
|
-
// resolution mutex here, we offload it on the ExecCtx so that we don't
|
2310
|
-
// deadlock with ourselves.
|
2311
|
-
GRPC_CHANNEL_STACK_REF(chand->owning_stack_, "CheckResolutionLocked");
|
2312
|
-
ExecCtx::Run(
|
2313
|
-
DEBUG_LOCATION,
|
2314
|
-
GRPC_CLOSURE_CREATE(
|
2315
|
-
[](void* arg, grpc_error_handle /*error*/) {
|
2316
|
-
auto* chand = static_cast<ClientChannel*>(arg);
|
2317
|
-
chand->work_serializer_->Run(
|
2318
|
-
[chand]()
|
2319
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand->work_serializer_) {
|
2320
|
-
chand->CheckConnectivityState(/*try_to_connect=*/true);
|
2321
|
-
GRPC_CHANNEL_STACK_UNREF(chand->owning_stack_,
|
2322
|
-
"CheckResolutionLocked");
|
2323
|
-
},
|
2324
|
-
DEBUG_LOCATION);
|
2325
|
-
},
|
2326
|
-
chand, nullptr),
|
2327
|
-
GRPC_ERROR_NONE);
|
2328
|
-
}
|
2329
|
-
// Get send_initial_metadata batch and flags.
|
2330
|
-
auto& send_initial_metadata =
|
2331
|
-
pending_batches_[0]->payload->send_initial_metadata;
|
2332
|
-
grpc_metadata_batch* initial_metadata_batch =
|
2333
|
-
send_initial_metadata.send_initial_metadata;
|
2334
|
-
// If we don't yet have a resolver result, we need to queue the call
|
2335
|
-
// until we get one.
|
2336
|
-
if (GPR_UNLIKELY(!chand->received_service_config_data_)) {
|
2337
|
-
// If the resolver returned transient failure before returning the
|
2338
|
-
// first service config, fail any non-wait_for_ready calls.
|
2339
|
-
absl::Status resolver_error = chand->resolver_transient_failure_error_;
|
2340
|
-
if (!resolver_error.ok() &&
|
2341
|
-
!initial_metadata_batch->GetOrCreatePointer(WaitForReady())->value) {
|
2342
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
2343
|
-
gpr_log(GPR_INFO, "chand=%p calld=%p: resolution failed, failing call",
|
2344
|
-
chand, this);
|
2345
|
-
}
|
2346
|
-
MaybeRemoveCallFromResolverQueuedCallsLocked(elem);
|
2347
|
-
*error = absl_status_to_grpc_error(resolver_error);
|
2348
|
-
return true;
|
2349
|
-
}
|
2350
|
-
// Either the resolver has not yet returned a result, or it has
|
2351
|
-
// returned transient failure but the call is wait_for_ready. In
|
2352
|
-
// either case, queue the call.
|
2353
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
2354
|
-
gpr_log(GPR_INFO, "chand=%p calld=%p: queuing to wait for resolution",
|
2355
|
-
chand, this);
|
2356
|
-
}
|
2357
|
-
MaybeAddCallToResolverQueuedCallsLocked(elem);
|
2358
|
-
return false;
|
2359
|
-
}
|
2360
|
-
// Apply service config to call if not yet applied.
|
2361
|
-
if (GPR_LIKELY(!service_config_applied_)) {
|
2362
|
-
service_config_applied_ = true;
|
2363
|
-
*error = ApplyServiceConfigToCallLocked(elem, initial_metadata_batch);
|
2364
|
-
}
|
2365
|
-
MaybeRemoveCallFromResolverQueuedCallsLocked(elem);
|
2366
|
-
return true;
|
2367
|
-
}
|
2340
|
+
void* Alloc(size_t size) override { return lb_call_->arena()->Alloc(size); }
|
2368
2341
|
|
2369
|
-
|
2370
|
-
|
2371
|
-
|
2372
|
-
|
2373
|
-
|
2374
|
-
|
2375
|
-
|
2376
|
-
|
2377
|
-
call_context_,
|
2378
|
-
call_combiner_};
|
2379
|
-
grpc_error_handle error = GRPC_ERROR_NONE;
|
2380
|
-
DynamicFilters* channel_stack = args.channel_stack.get();
|
2381
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
2382
|
-
gpr_log(
|
2383
|
-
GPR_INFO,
|
2384
|
-
"chand=%p calld=%p: creating dynamic call stack on channel_stack=%p",
|
2385
|
-
chand, this, channel_stack);
|
2386
|
-
}
|
2387
|
-
dynamic_call_ = channel_stack->CreateCall(std::move(args), &error);
|
2388
|
-
if (!GRPC_ERROR_IS_NONE(error)) {
|
2389
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
2390
|
-
gpr_log(GPR_INFO,
|
2391
|
-
"chand=%p calld=%p: failed to create dynamic call: error=%s",
|
2392
|
-
chand, this, grpc_error_std_string(error).c_str());
|
2393
|
-
}
|
2394
|
-
PendingBatchesFail(elem, error, YieldCallCombiner);
|
2395
|
-
return;
|
2396
|
-
}
|
2397
|
-
PendingBatchesResume(elem);
|
2398
|
-
}
|
2342
|
+
// Internal API to allow first-party LB policies to access per-call
|
2343
|
+
// attributes set by the ConfigSelector.
|
2344
|
+
ServiceConfigCallData::CallAttributeInterface* GetCallAttribute(
|
2345
|
+
UniqueTypeName type) const override;
|
2346
|
+
|
2347
|
+
private:
|
2348
|
+
LoadBalancedCall* lb_call_;
|
2349
|
+
};
|
2399
2350
|
|
2400
2351
|
//
|
2401
2352
|
// ClientChannel::LoadBalancedCall::Metadata
|
@@ -2476,15 +2427,12 @@ class ClientChannel::LoadBalancedCall::Metadata
|
|
2476
2427
|
// ClientChannel::LoadBalancedCall::LbCallState
|
2477
2428
|
//
|
2478
2429
|
|
2479
|
-
|
2430
|
+
ServiceConfigCallData::CallAttributeInterface*
|
2480
2431
|
ClientChannel::LoadBalancedCall::LbCallState::GetCallAttribute(
|
2481
|
-
UniqueTypeName type) {
|
2432
|
+
UniqueTypeName type) const {
|
2482
2433
|
auto* service_config_call_data = static_cast<ServiceConfigCallData*>(
|
2483
|
-
lb_call_->
|
2484
|
-
|
2485
|
-
auto it = call_attributes.find(type);
|
2486
|
-
if (it == call_attributes.end()) return absl::string_view();
|
2487
|
-
return it->second;
|
2434
|
+
lb_call_->call_context()[GRPC_CONTEXT_SERVICE_CONFIG_CALL_DATA].value);
|
2435
|
+
return service_config_call_data->GetCallAttribute(type);
|
2488
2436
|
}
|
2489
2437
|
|
2490
2438
|
//
|
@@ -2494,15 +2442,16 @@ ClientChannel::LoadBalancedCall::LbCallState::GetCallAttribute(
|
|
2494
2442
|
class ClientChannel::LoadBalancedCall::BackendMetricAccessor
|
2495
2443
|
: public LoadBalancingPolicy::BackendMetricAccessor {
|
2496
2444
|
public:
|
2497
|
-
|
2498
|
-
|
2445
|
+
BackendMetricAccessor(LoadBalancedCall* lb_call,
|
2446
|
+
grpc_metadata_batch* recv_trailing_metadata)
|
2447
|
+
: lb_call_(lb_call), recv_trailing_metadata_(recv_trailing_metadata) {}
|
2499
2448
|
|
2500
2449
|
const BackendMetricData* GetBackendMetricData() override {
|
2501
2450
|
if (lb_call_->backend_metric_data_ == nullptr &&
|
2502
|
-
|
2503
|
-
if (const auto* md =
|
2451
|
+
recv_trailing_metadata_ != nullptr) {
|
2452
|
+
if (const auto* md = recv_trailing_metadata_->get_pointer(
|
2504
2453
|
EndpointLoadMetricsBinMetadata())) {
|
2505
|
-
BackendMetricAllocator allocator(lb_call_->
|
2454
|
+
BackendMetricAllocator allocator(lb_call_->arena());
|
2506
2455
|
lb_call_->backend_metric_data_ =
|
2507
2456
|
ParseBackendMetricData(md->as_string_view(), &allocator);
|
2508
2457
|
}
|
@@ -2528,6 +2477,7 @@ class ClientChannel::LoadBalancedCall::BackendMetricAccessor
|
|
2528
2477
|
};
|
2529
2478
|
|
2530
2479
|
LoadBalancedCall* lb_call_;
|
2480
|
+
grpc_metadata_batch* recv_trailing_metadata_;
|
2531
2481
|
};
|
2532
2482
|
|
2533
2483
|
//
|
@@ -2536,78 +2486,301 @@ class ClientChannel::LoadBalancedCall::BackendMetricAccessor
|
|
2536
2486
|
|
2537
2487
|
namespace {
|
2538
2488
|
|
2539
|
-
|
2489
|
+
ClientCallTracer::CallAttemptTracer* CreateCallAttemptTracer(
|
2540
2490
|
grpc_call_context_element* context, bool is_transparent_retry) {
|
2541
|
-
auto* call_tracer =
|
2542
|
-
|
2491
|
+
auto* call_tracer = static_cast<ClientCallTracer*>(
|
2492
|
+
context[GRPC_CONTEXT_CALL_TRACER_ANNOTATION_INTERFACE].value);
|
2543
2493
|
if (call_tracer == nullptr) return nullptr;
|
2544
|
-
|
2494
|
+
auto* tracer = call_tracer->StartNewAttempt(is_transparent_retry);
|
2495
|
+
context[GRPC_CONTEXT_CALL_TRACER].value = tracer;
|
2496
|
+
return tracer;
|
2545
2497
|
}
|
2546
2498
|
|
2547
2499
|
} // namespace
|
2548
2500
|
|
2549
2501
|
ClientChannel::LoadBalancedCall::LoadBalancedCall(
|
2550
|
-
ClientChannel* chand,
|
2551
|
-
|
2552
|
-
ConfigSelector::CallDispatchController* call_dispatch_controller,
|
2553
|
-
bool is_transparent_retry)
|
2502
|
+
ClientChannel* chand, grpc_call_context_element* call_context,
|
2503
|
+
absl::AnyInvocable<void()> on_commit, bool is_transparent_retry)
|
2554
2504
|
: InternallyRefCounted(
|
2555
2505
|
GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)
|
2556
2506
|
? "LoadBalancedCall"
|
2557
2507
|
: nullptr),
|
2558
2508
|
chand_(chand),
|
2559
|
-
|
2560
|
-
|
2561
|
-
arena_(args.arena),
|
2562
|
-
owning_call_(args.call_stack),
|
2563
|
-
call_combiner_(args.call_combiner),
|
2564
|
-
call_context_(args.context),
|
2565
|
-
pollent_(pollent),
|
2566
|
-
on_call_destruction_complete_(on_call_destruction_complete),
|
2567
|
-
call_dispatch_controller_(call_dispatch_controller),
|
2568
|
-
call_attempt_tracer_(
|
2569
|
-
GetCallAttemptTracer(args.context, is_transparent_retry)) {
|
2509
|
+
on_commit_(std::move(on_commit)) {
|
2510
|
+
CreateCallAttemptTracer(call_context, is_transparent_retry);
|
2570
2511
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2571
2512
|
gpr_log(GPR_INFO, "chand=%p lb_call=%p: created", chand_, this);
|
2572
2513
|
}
|
2573
2514
|
}
|
2574
2515
|
|
2575
2516
|
ClientChannel::LoadBalancedCall::~LoadBalancedCall() {
|
2576
|
-
GRPC_ERROR_UNREF(cancel_error_);
|
2577
|
-
GRPC_ERROR_UNREF(failure_error_);
|
2578
2517
|
if (backend_metric_data_ != nullptr) {
|
2579
2518
|
backend_metric_data_->BackendMetricData::~BackendMetricData();
|
2580
2519
|
}
|
2520
|
+
}
|
2521
|
+
|
2522
|
+
void ClientChannel::LoadBalancedCall::Orphan() {
|
2523
|
+
// Compute latency and report it to the tracer.
|
2524
|
+
if (call_attempt_tracer() != nullptr) {
|
2525
|
+
gpr_timespec latency =
|
2526
|
+
gpr_cycle_counter_sub(gpr_get_cycle_counter(), lb_call_start_time_);
|
2527
|
+
call_attempt_tracer()->RecordEnd(latency);
|
2528
|
+
}
|
2529
|
+
Unref();
|
2530
|
+
}
|
2531
|
+
|
2532
|
+
void ClientChannel::LoadBalancedCall::RecordCallCompletion(
|
2533
|
+
absl::Status status, grpc_metadata_batch* recv_trailing_metadata,
|
2534
|
+
grpc_transport_stream_stats* transport_stream_stats,
|
2535
|
+
absl::string_view peer_address) {
|
2536
|
+
// If we have a tracer, notify it.
|
2537
|
+
if (call_attempt_tracer() != nullptr) {
|
2538
|
+
call_attempt_tracer()->RecordReceivedTrailingMetadata(
|
2539
|
+
status, recv_trailing_metadata, transport_stream_stats);
|
2540
|
+
}
|
2541
|
+
// If the LB policy requested a callback for trailing metadata, invoke
|
2542
|
+
// the callback.
|
2543
|
+
if (lb_subchannel_call_tracker_ != nullptr) {
|
2544
|
+
Metadata trailing_metadata(recv_trailing_metadata);
|
2545
|
+
BackendMetricAccessor backend_metric_accessor(this, recv_trailing_metadata);
|
2546
|
+
LoadBalancingPolicy::SubchannelCallTrackerInterface::FinishArgs args = {
|
2547
|
+
peer_address, status, &trailing_metadata, &backend_metric_accessor};
|
2548
|
+
lb_subchannel_call_tracker_->Finish(args);
|
2549
|
+
lb_subchannel_call_tracker_.reset();
|
2550
|
+
}
|
2551
|
+
}
|
2552
|
+
|
2553
|
+
void ClientChannel::LoadBalancedCall::RemoveCallFromLbQueuedCallsLocked() {
|
2554
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2555
|
+
gpr_log(GPR_INFO, "chand=%p lb_call=%p: removing from queued picks list",
|
2556
|
+
chand_, this);
|
2557
|
+
}
|
2558
|
+
// Remove pollset_set linkage.
|
2559
|
+
grpc_polling_entity_del_from_pollset_set(pollent(),
|
2560
|
+
chand_->interested_parties_);
|
2561
|
+
// Note: There's no need to actually remove the call from the queue
|
2562
|
+
// here, beacuse that will be done in either
|
2563
|
+
// LbQueuedCallCanceller::CancelLocked() or
|
2564
|
+
// in ClientChannel::UpdateStateAndPickerLocked().
|
2565
|
+
}
|
2566
|
+
|
2567
|
+
void ClientChannel::LoadBalancedCall::AddCallToLbQueuedCallsLocked() {
|
2568
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2569
|
+
gpr_log(GPR_INFO, "chand=%p lb_call=%p: adding to queued picks list",
|
2570
|
+
chand_, this);
|
2571
|
+
}
|
2572
|
+
// Add call's pollent to channel's interested_parties, so that I/O
|
2573
|
+
// can be done under the call's CQ.
|
2574
|
+
grpc_polling_entity_add_to_pollset_set(pollent(),
|
2575
|
+
chand_->interested_parties_);
|
2576
|
+
// Add to queue.
|
2577
|
+
chand_->lb_queued_calls_.insert(this);
|
2578
|
+
OnAddToQueueLocked();
|
2579
|
+
}
|
2580
|
+
|
2581
|
+
absl::optional<absl::Status> ClientChannel::LoadBalancedCall::PickSubchannel(
|
2582
|
+
bool was_queued) {
|
2583
|
+
// We may accumulate multiple pickers here, because if a picker says
|
2584
|
+
// to queue the call, we check again to see if the picker has been
|
2585
|
+
// updated before we queue it.
|
2586
|
+
// We need to unref pickers in the WorkSerializer.
|
2587
|
+
std::vector<RefCountedPtr<LoadBalancingPolicy::SubchannelPicker>> pickers;
|
2588
|
+
auto cleanup = absl::MakeCleanup([&]() {
|
2589
|
+
chand_->work_serializer_->Run(
|
2590
|
+
[pickers = std::move(pickers)]() mutable {
|
2591
|
+
for (auto& picker : pickers) {
|
2592
|
+
picker.reset(DEBUG_LOCATION, "PickSubchannel");
|
2593
|
+
}
|
2594
|
+
},
|
2595
|
+
DEBUG_LOCATION);
|
2596
|
+
});
|
2597
|
+
// Grab mutex and take a ref to the picker.
|
2598
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2599
|
+
gpr_log(GPR_INFO, "chand=%p lb_call=%p: grabbing LB mutex to get picker",
|
2600
|
+
chand_, this);
|
2601
|
+
}
|
2602
|
+
{
|
2603
|
+
MutexLock lock(&chand_->lb_mu_);
|
2604
|
+
pickers.emplace_back(chand_->picker_);
|
2605
|
+
}
|
2606
|
+
while (true) {
|
2607
|
+
// Do pick.
|
2608
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2609
|
+
gpr_log(GPR_INFO, "chand=%p lb_call=%p: performing pick with picker=%p",
|
2610
|
+
chand_, this, pickers.back().get());
|
2611
|
+
}
|
2612
|
+
grpc_error_handle error;
|
2613
|
+
bool pick_complete = PickSubchannelImpl(pickers.back().get(), &error);
|
2614
|
+
if (!pick_complete) {
|
2615
|
+
MutexLock lock(&chand_->lb_mu_);
|
2616
|
+
// If picker has been swapped out since we grabbed it, try again.
|
2617
|
+
if (chand_->picker_ != pickers.back()) {
|
2618
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2619
|
+
gpr_log(GPR_INFO,
|
2620
|
+
"chand=%p lb_call=%p: pick not complete, but picker changed",
|
2621
|
+
chand_, this);
|
2622
|
+
}
|
2623
|
+
pickers.emplace_back(chand_->picker_);
|
2624
|
+
continue;
|
2625
|
+
}
|
2626
|
+
// Otherwise queue the pick to try again later when we get a new picker.
|
2627
|
+
AddCallToLbQueuedCallsLocked();
|
2628
|
+
return absl::nullopt;
|
2629
|
+
}
|
2630
|
+
// Pick is complete.
|
2631
|
+
// If it was queued, add a trace annotation.
|
2632
|
+
if (was_queued && call_attempt_tracer() != nullptr) {
|
2633
|
+
call_attempt_tracer()->RecordAnnotation("Delayed LB pick complete.");
|
2634
|
+
}
|
2635
|
+
// If the pick failed, fail the call.
|
2636
|
+
if (!error.ok()) {
|
2637
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2638
|
+
gpr_log(GPR_INFO,
|
2639
|
+
"chand=%p lb_call=%p: failed to pick subchannel: error=%s",
|
2640
|
+
chand_, this, StatusToString(error).c_str());
|
2641
|
+
}
|
2642
|
+
return error;
|
2643
|
+
}
|
2644
|
+
// Pick succeeded.
|
2645
|
+
Commit();
|
2646
|
+
return absl::OkStatus();
|
2647
|
+
}
|
2648
|
+
}
|
2649
|
+
|
2650
|
+
bool ClientChannel::LoadBalancedCall::PickSubchannelImpl(
|
2651
|
+
LoadBalancingPolicy::SubchannelPicker* picker, grpc_error_handle* error) {
|
2652
|
+
GPR_ASSERT(connected_subchannel_ == nullptr);
|
2653
|
+
// Perform LB pick.
|
2654
|
+
LoadBalancingPolicy::PickArgs pick_args;
|
2655
|
+
Slice* path = send_initial_metadata()->get_pointer(HttpPathMetadata());
|
2656
|
+
GPR_ASSERT(path != nullptr);
|
2657
|
+
pick_args.path = path->as_string_view();
|
2658
|
+
LbCallState lb_call_state(this);
|
2659
|
+
pick_args.call_state = &lb_call_state;
|
2660
|
+
Metadata initial_metadata(send_initial_metadata());
|
2661
|
+
pick_args.initial_metadata = &initial_metadata;
|
2662
|
+
auto result = picker->Pick(pick_args);
|
2663
|
+
return HandlePickResult<bool>(
|
2664
|
+
&result,
|
2665
|
+
// CompletePick
|
2666
|
+
[this](LoadBalancingPolicy::PickResult::Complete* complete_pick) {
|
2667
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2668
|
+
gpr_log(GPR_INFO,
|
2669
|
+
"chand=%p lb_call=%p: LB pick succeeded: subchannel=%p",
|
2670
|
+
chand_, this, complete_pick->subchannel.get());
|
2671
|
+
}
|
2672
|
+
GPR_ASSERT(complete_pick->subchannel != nullptr);
|
2673
|
+
// Grab a ref to the connected subchannel while we're still
|
2674
|
+
// holding the data plane mutex.
|
2675
|
+
SubchannelWrapper* subchannel =
|
2676
|
+
static_cast<SubchannelWrapper*>(complete_pick->subchannel.get());
|
2677
|
+
connected_subchannel_ = subchannel->connected_subchannel();
|
2678
|
+
// If the subchannel has no connected subchannel (e.g., if the
|
2679
|
+
// subchannel has moved out of state READY but the LB policy hasn't
|
2680
|
+
// yet seen that change and given us a new picker), then just
|
2681
|
+
// queue the pick. We'll try again as soon as we get a new picker.
|
2682
|
+
if (connected_subchannel_ == nullptr) {
|
2683
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2684
|
+
gpr_log(GPR_INFO,
|
2685
|
+
"chand=%p lb_call=%p: subchannel returned by LB picker "
|
2686
|
+
"has no connected subchannel; queueing pick",
|
2687
|
+
chand_, this);
|
2688
|
+
}
|
2689
|
+
return false;
|
2690
|
+
}
|
2691
|
+
lb_subchannel_call_tracker_ =
|
2692
|
+
std::move(complete_pick->subchannel_call_tracker);
|
2693
|
+
if (lb_subchannel_call_tracker_ != nullptr) {
|
2694
|
+
lb_subchannel_call_tracker_->Start();
|
2695
|
+
}
|
2696
|
+
return true;
|
2697
|
+
},
|
2698
|
+
// QueuePick
|
2699
|
+
[this](LoadBalancingPolicy::PickResult::Queue* /*queue_pick*/) {
|
2700
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2701
|
+
gpr_log(GPR_INFO, "chand=%p lb_call=%p: LB pick queued", chand_,
|
2702
|
+
this);
|
2703
|
+
}
|
2704
|
+
return false;
|
2705
|
+
},
|
2706
|
+
// FailPick
|
2707
|
+
[this, &error](LoadBalancingPolicy::PickResult::Fail* fail_pick) {
|
2708
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2709
|
+
gpr_log(GPR_INFO, "chand=%p lb_call=%p: LB pick failed: %s", chand_,
|
2710
|
+
this, fail_pick->status.ToString().c_str());
|
2711
|
+
}
|
2712
|
+
// If wait_for_ready is false, then the error indicates the RPC
|
2713
|
+
// attempt's final status.
|
2714
|
+
if (!send_initial_metadata()
|
2715
|
+
->GetOrCreatePointer(WaitForReady())
|
2716
|
+
->value) {
|
2717
|
+
*error = absl_status_to_grpc_error(MaybeRewriteIllegalStatusCode(
|
2718
|
+
std::move(fail_pick->status), "LB pick"));
|
2719
|
+
return true;
|
2720
|
+
}
|
2721
|
+
// If wait_for_ready is true, then queue to retry when we get a new
|
2722
|
+
// picker.
|
2723
|
+
return false;
|
2724
|
+
},
|
2725
|
+
// DropPick
|
2726
|
+
[this, &error](LoadBalancingPolicy::PickResult::Drop* drop_pick) {
|
2727
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2728
|
+
gpr_log(GPR_INFO, "chand=%p lb_call=%p: LB pick dropped: %s", chand_,
|
2729
|
+
this, drop_pick->status.ToString().c_str());
|
2730
|
+
}
|
2731
|
+
*error = grpc_error_set_int(
|
2732
|
+
absl_status_to_grpc_error(MaybeRewriteIllegalStatusCode(
|
2733
|
+
std::move(drop_pick->status), "LB drop")),
|
2734
|
+
StatusIntProperty::kLbPolicyDrop, 1);
|
2735
|
+
return true;
|
2736
|
+
});
|
2737
|
+
}
|
2738
|
+
|
2739
|
+
//
|
2740
|
+
// ClientChannel::FilterBasedLoadBalancedCall
|
2741
|
+
//
|
2742
|
+
|
2743
|
+
ClientChannel::FilterBasedLoadBalancedCall::FilterBasedLoadBalancedCall(
|
2744
|
+
ClientChannel* chand, const grpc_call_element_args& args,
|
2745
|
+
grpc_polling_entity* pollent, grpc_closure* on_call_destruction_complete,
|
2746
|
+
absl::AnyInvocable<void()> on_commit, bool is_transparent_retry)
|
2747
|
+
: LoadBalancedCall(chand, args.context, std::move(on_commit),
|
2748
|
+
is_transparent_retry),
|
2749
|
+
deadline_(args.deadline),
|
2750
|
+
arena_(args.arena),
|
2751
|
+
call_context_(args.context),
|
2752
|
+
owning_call_(args.call_stack),
|
2753
|
+
call_combiner_(args.call_combiner),
|
2754
|
+
pollent_(pollent),
|
2755
|
+
on_call_destruction_complete_(on_call_destruction_complete) {}
|
2756
|
+
|
2757
|
+
ClientChannel::FilterBasedLoadBalancedCall::~FilterBasedLoadBalancedCall() {
|
2581
2758
|
// Make sure there are no remaining pending batches.
|
2582
2759
|
for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
|
2583
2760
|
GPR_ASSERT(pending_batches_[i] == nullptr);
|
2584
2761
|
}
|
2585
2762
|
if (on_call_destruction_complete_ != nullptr) {
|
2586
2763
|
ExecCtx::Run(DEBUG_LOCATION, on_call_destruction_complete_,
|
2587
|
-
|
2764
|
+
absl::OkStatus());
|
2588
2765
|
}
|
2589
2766
|
}
|
2590
2767
|
|
2591
|
-
void ClientChannel::
|
2768
|
+
void ClientChannel::FilterBasedLoadBalancedCall::Orphan() {
|
2592
2769
|
// If the recv_trailing_metadata op was never started, then notify
|
2593
2770
|
// about call completion here, as best we can. We assume status
|
2594
2771
|
// CANCELLED in this case.
|
2595
2772
|
if (recv_trailing_metadata_ == nullptr) {
|
2596
|
-
RecordCallCompletion(absl::CancelledError("call cancelled")
|
2597
|
-
|
2598
|
-
// Compute latency and report it to the tracer.
|
2599
|
-
if (call_attempt_tracer_ != nullptr) {
|
2600
|
-
gpr_timespec latency =
|
2601
|
-
gpr_cycle_counter_sub(gpr_get_cycle_counter(), lb_call_start_time_);
|
2602
|
-
call_attempt_tracer_->RecordEnd(latency);
|
2773
|
+
RecordCallCompletion(absl::CancelledError("call cancelled"), nullptr,
|
2774
|
+
nullptr, "");
|
2603
2775
|
}
|
2604
|
-
|
2776
|
+
// Delegate to parent.
|
2777
|
+
LoadBalancedCall::Orphan();
|
2605
2778
|
}
|
2606
2779
|
|
2607
|
-
size_t ClientChannel::
|
2780
|
+
size_t ClientChannel::FilterBasedLoadBalancedCall::GetBatchIndex(
|
2608
2781
|
grpc_transport_stream_op_batch* batch) {
|
2609
2782
|
// Note: It is important the send_initial_metadata be the first entry
|
2610
|
-
// here, since the code in
|
2783
|
+
// here, since the code in PickSubchannelImpl() assumes it will be.
|
2611
2784
|
if (batch->send_initial_metadata) return 0;
|
2612
2785
|
if (batch->send_message) return 1;
|
2613
2786
|
if (batch->send_trailing_metadata) return 2;
|
@@ -2618,35 +2791,35 @@ size_t ClientChannel::LoadBalancedCall::GetBatchIndex(
|
|
2618
2791
|
}
|
2619
2792
|
|
2620
2793
|
// This is called via the call combiner, so access to calld is synchronized.
|
2621
|
-
void ClientChannel::
|
2794
|
+
void ClientChannel::FilterBasedLoadBalancedCall::PendingBatchesAdd(
|
2622
2795
|
grpc_transport_stream_op_batch* batch) {
|
2623
2796
|
const size_t idx = GetBatchIndex(batch);
|
2624
2797
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2625
2798
|
gpr_log(GPR_INFO,
|
2626
2799
|
"chand=%p lb_call=%p: adding pending batch at index %" PRIuPTR,
|
2627
|
-
|
2800
|
+
chand(), this, idx);
|
2628
2801
|
}
|
2629
2802
|
GPR_ASSERT(pending_batches_[idx] == nullptr);
|
2630
2803
|
pending_batches_[idx] = batch;
|
2631
2804
|
}
|
2632
2805
|
|
2633
2806
|
// This is called via the call combiner, so access to calld is synchronized.
|
2634
|
-
void ClientChannel::
|
2807
|
+
void ClientChannel::FilterBasedLoadBalancedCall::FailPendingBatchInCallCombiner(
|
2635
2808
|
void* arg, grpc_error_handle error) {
|
2636
2809
|
grpc_transport_stream_op_batch* batch =
|
2637
2810
|
static_cast<grpc_transport_stream_op_batch*>(arg);
|
2638
|
-
auto* self = static_cast<
|
2811
|
+
auto* self = static_cast<FilterBasedLoadBalancedCall*>(
|
2812
|
+
batch->handler_private.extra_arg);
|
2639
2813
|
// Note: This will release the call combiner.
|
2640
|
-
grpc_transport_stream_op_batch_finish_with_failure(
|
2641
|
-
|
2814
|
+
grpc_transport_stream_op_batch_finish_with_failure(batch, error,
|
2815
|
+
self->call_combiner_);
|
2642
2816
|
}
|
2643
2817
|
|
2644
2818
|
// This is called via the call combiner, so access to calld is synchronized.
|
2645
|
-
void ClientChannel::
|
2819
|
+
void ClientChannel::FilterBasedLoadBalancedCall::PendingBatchesFail(
|
2646
2820
|
grpc_error_handle error,
|
2647
2821
|
YieldCallCombinerPredicate yield_call_combiner_predicate) {
|
2648
|
-
GPR_ASSERT(!
|
2649
|
-
GRPC_ERROR_UNREF(failure_error_);
|
2822
|
+
GPR_ASSERT(!error.ok());
|
2650
2823
|
failure_error_ = error;
|
2651
2824
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2652
2825
|
size_t num_batches = 0;
|
@@ -2655,7 +2828,7 @@ void ClientChannel::LoadBalancedCall::PendingBatchesFail(
|
|
2655
2828
|
}
|
2656
2829
|
gpr_log(GPR_INFO,
|
2657
2830
|
"chand=%p lb_call=%p: failing %" PRIuPTR " pending batches: %s",
|
2658
|
-
|
2831
|
+
chand(), this, num_batches, StatusToString(error).c_str());
|
2659
2832
|
}
|
2660
2833
|
CallCombinerClosureList closures;
|
2661
2834
|
for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
|
@@ -2665,7 +2838,7 @@ void ClientChannel::LoadBalancedCall::PendingBatchesFail(
|
|
2665
2838
|
GRPC_CLOSURE_INIT(&batch->handler_private.closure,
|
2666
2839
|
FailPendingBatchInCallCombiner, batch,
|
2667
2840
|
grpc_schedule_on_exec_ctx);
|
2668
|
-
closures.Add(&batch->handler_private.closure,
|
2841
|
+
closures.Add(&batch->handler_private.closure, error,
|
2669
2842
|
"PendingBatchesFail");
|
2670
2843
|
batch = nullptr;
|
2671
2844
|
}
|
@@ -2678,8 +2851,8 @@ void ClientChannel::LoadBalancedCall::PendingBatchesFail(
|
|
2678
2851
|
}
|
2679
2852
|
|
2680
2853
|
// This is called via the call combiner, so access to calld is synchronized.
|
2681
|
-
void ClientChannel::
|
2682
|
-
void* arg, grpc_error_handle /*ignored*/) {
|
2854
|
+
void ClientChannel::FilterBasedLoadBalancedCall::
|
2855
|
+
ResumePendingBatchInCallCombiner(void* arg, grpc_error_handle /*ignored*/) {
|
2683
2856
|
grpc_transport_stream_op_batch* batch =
|
2684
2857
|
static_cast<grpc_transport_stream_op_batch*>(arg);
|
2685
2858
|
SubchannelCall* subchannel_call =
|
@@ -2689,7 +2862,7 @@ void ClientChannel::LoadBalancedCall::ResumePendingBatchInCallCombiner(
|
|
2689
2862
|
}
|
2690
2863
|
|
2691
2864
|
// This is called via the call combiner, so access to calld is synchronized.
|
2692
|
-
void ClientChannel::
|
2865
|
+
void ClientChannel::FilterBasedLoadBalancedCall::PendingBatchesResume() {
|
2693
2866
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2694
2867
|
size_t num_batches = 0;
|
2695
2868
|
for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
|
@@ -2698,7 +2871,7 @@ void ClientChannel::LoadBalancedCall::PendingBatchesResume() {
|
|
2698
2871
|
gpr_log(GPR_INFO,
|
2699
2872
|
"chand=%p lb_call=%p: starting %" PRIuPTR
|
2700
2873
|
" pending batches on subchannel_call=%p",
|
2701
|
-
|
2874
|
+
chand(), this, num_batches, subchannel_call_.get());
|
2702
2875
|
}
|
2703
2876
|
CallCombinerClosureList closures;
|
2704
2877
|
for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
|
@@ -2708,7 +2881,7 @@ void ClientChannel::LoadBalancedCall::PendingBatchesResume() {
|
|
2708
2881
|
GRPC_CLOSURE_INIT(&batch->handler_private.closure,
|
2709
2882
|
ResumePendingBatchInCallCombiner, batch,
|
2710
2883
|
grpc_schedule_on_exec_ctx);
|
2711
|
-
closures.Add(&batch->handler_private.closure,
|
2884
|
+
closures.Add(&batch->handler_private.closure, absl::OkStatus(),
|
2712
2885
|
"resuming pending batch from LB call");
|
2713
2886
|
batch = nullptr;
|
2714
2887
|
}
|
@@ -2717,38 +2890,30 @@ void ClientChannel::LoadBalancedCall::PendingBatchesResume() {
|
|
2717
2890
|
closures.RunClosures(call_combiner_);
|
2718
2891
|
}
|
2719
2892
|
|
2720
|
-
void ClientChannel::
|
2893
|
+
void ClientChannel::FilterBasedLoadBalancedCall::StartTransportStreamOpBatch(
|
2721
2894
|
grpc_transport_stream_op_batch* batch) {
|
2722
2895
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace) ||
|
2723
2896
|
GRPC_TRACE_FLAG_ENABLED(grpc_trace_channel)) {
|
2724
2897
|
gpr_log(GPR_INFO,
|
2725
2898
|
"chand=%p lb_call=%p: batch started from above: %s, "
|
2726
|
-
"
|
2727
|
-
|
2728
|
-
|
2899
|
+
"call_attempt_tracer()=%p",
|
2900
|
+
chand(), this,
|
2901
|
+
grpc_transport_stream_op_batch_string(batch, false).c_str(),
|
2902
|
+
call_attempt_tracer());
|
2729
2903
|
}
|
2730
2904
|
// Handle call tracing.
|
2731
|
-
if (
|
2905
|
+
if (call_attempt_tracer() != nullptr) {
|
2732
2906
|
// Record send ops in tracer.
|
2733
2907
|
if (batch->cancel_stream) {
|
2734
|
-
|
2735
|
-
|
2908
|
+
call_attempt_tracer()->RecordCancel(
|
2909
|
+
batch->payload->cancel_stream.cancel_error);
|
2736
2910
|
}
|
2737
2911
|
if (batch->send_initial_metadata) {
|
2738
|
-
|
2912
|
+
call_attempt_tracer()->RecordSendInitialMetadata(
|
2739
2913
|
batch->payload->send_initial_metadata.send_initial_metadata);
|
2740
|
-
peer_string_ = batch->payload->send_initial_metadata.peer_string;
|
2741
|
-
original_send_initial_metadata_on_complete_ = batch->on_complete;
|
2742
|
-
GRPC_CLOSURE_INIT(&send_initial_metadata_on_complete_,
|
2743
|
-
SendInitialMetadataOnComplete, this, nullptr);
|
2744
|
-
batch->on_complete = &send_initial_metadata_on_complete_;
|
2745
|
-
}
|
2746
|
-
if (batch->send_message) {
|
2747
|
-
call_attempt_tracer_->RecordSendMessage(
|
2748
|
-
*batch->payload->send_message.send_message);
|
2749
2914
|
}
|
2750
2915
|
if (batch->send_trailing_metadata) {
|
2751
|
-
|
2916
|
+
call_attempt_tracer()->RecordSendTrailingMetadata(
|
2752
2917
|
batch->payload->send_trailing_metadata.send_trailing_metadata);
|
2753
2918
|
}
|
2754
2919
|
// Intercept recv ops.
|
@@ -2762,13 +2927,6 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
|
|
2762
2927
|
batch->payload->recv_initial_metadata.recv_initial_metadata_ready =
|
2763
2928
|
&recv_initial_metadata_ready_;
|
2764
2929
|
}
|
2765
|
-
if (batch->recv_message) {
|
2766
|
-
recv_message_ = batch->payload->recv_message.recv_message;
|
2767
|
-
original_recv_message_ready_ =
|
2768
|
-
batch->payload->recv_message.recv_message_ready;
|
2769
|
-
GRPC_CLOSURE_INIT(&recv_message_ready_, RecvMessageReady, this, nullptr);
|
2770
|
-
batch->payload->recv_message.recv_message_ready = &recv_message_ready_;
|
2771
|
-
}
|
2772
2930
|
}
|
2773
2931
|
// Intercept recv_trailing_metadata even if there is no call tracer,
|
2774
2932
|
// since we may need to notify the LB policy about trailing metadata.
|
@@ -2792,7 +2950,7 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
|
|
2792
2950
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2793
2951
|
gpr_log(GPR_INFO,
|
2794
2952
|
"chand=%p lb_call=%p: starting batch on subchannel_call=%p",
|
2795
|
-
|
2953
|
+
chand(), this, subchannel_call_.get());
|
2796
2954
|
}
|
2797
2955
|
subchannel_call_->StartTransportStreamOpBatch(batch);
|
2798
2956
|
return;
|
@@ -2800,14 +2958,14 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
|
|
2800
2958
|
// We do not yet have a subchannel call.
|
2801
2959
|
//
|
2802
2960
|
// If we've previously been cancelled, immediately fail any new batches.
|
2803
|
-
if (GPR_UNLIKELY(!
|
2961
|
+
if (GPR_UNLIKELY(!cancel_error_.ok())) {
|
2804
2962
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2805
2963
|
gpr_log(GPR_INFO, "chand=%p lb_call=%p: failing batch with error: %s",
|
2806
|
-
|
2964
|
+
chand(), this, StatusToString(cancel_error_).c_str());
|
2807
2965
|
}
|
2808
2966
|
// Note: This will release the call combiner.
|
2809
|
-
grpc_transport_stream_op_batch_finish_with_failure(
|
2810
|
-
|
2967
|
+
grpc_transport_stream_op_batch_finish_with_failure(batch, cancel_error_,
|
2968
|
+
call_combiner_);
|
2811
2969
|
return;
|
2812
2970
|
}
|
2813
2971
|
// Handle cancellation.
|
@@ -2817,107 +2975,73 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
|
|
2817
2975
|
// cancelled before any batches are passed down (e.g., if the deadline
|
2818
2976
|
// is in the past when the call starts), we can return the right
|
2819
2977
|
// error to the caller when the first batch does get passed down.
|
2820
|
-
|
2821
|
-
cancel_error_ = GRPC_ERROR_REF(batch->payload->cancel_stream.cancel_error);
|
2978
|
+
cancel_error_ = batch->payload->cancel_stream.cancel_error;
|
2822
2979
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2823
2980
|
gpr_log(GPR_INFO, "chand=%p lb_call=%p: recording cancel_error=%s",
|
2824
|
-
|
2981
|
+
chand(), this, StatusToString(cancel_error_).c_str());
|
2825
2982
|
}
|
2826
2983
|
// Fail all pending batches.
|
2827
|
-
PendingBatchesFail(
|
2984
|
+
PendingBatchesFail(cancel_error_, NoYieldCallCombiner);
|
2828
2985
|
// Note: This will release the call combiner.
|
2829
|
-
grpc_transport_stream_op_batch_finish_with_failure(
|
2830
|
-
|
2986
|
+
grpc_transport_stream_op_batch_finish_with_failure(batch, cancel_error_,
|
2987
|
+
call_combiner_);
|
2831
2988
|
return;
|
2832
2989
|
}
|
2833
2990
|
// Add the batch to the pending list.
|
2834
2991
|
PendingBatchesAdd(batch);
|
2835
2992
|
// For batches containing a send_initial_metadata op, acquire the
|
2836
|
-
// channel's
|
2993
|
+
// channel's LB mutex to pick a subchannel.
|
2837
2994
|
if (GPR_LIKELY(batch->send_initial_metadata)) {
|
2838
|
-
|
2839
|
-
gpr_log(GPR_INFO,
|
2840
|
-
"chand=%p lb_call=%p: grabbing data plane mutex to perform pick",
|
2841
|
-
chand_, this);
|
2842
|
-
}
|
2843
|
-
PickSubchannel(this, GRPC_ERROR_NONE);
|
2995
|
+
TryPick(/*was_queued=*/false);
|
2844
2996
|
} else {
|
2845
2997
|
// For all other batches, release the call combiner.
|
2846
2998
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2847
2999
|
gpr_log(GPR_INFO,
|
2848
3000
|
"chand=%p lb_call=%p: saved batch, yielding call combiner",
|
2849
|
-
|
3001
|
+
chand(), this);
|
2850
3002
|
}
|
2851
3003
|
GRPC_CALL_COMBINER_STOP(call_combiner_,
|
2852
3004
|
"batch does not include send_initial_metadata");
|
2853
3005
|
}
|
2854
3006
|
}
|
2855
3007
|
|
2856
|
-
void ClientChannel::
|
2857
|
-
void* arg, grpc_error_handle error) {
|
2858
|
-
auto* self = static_cast<LoadBalancedCall*>(arg);
|
2859
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2860
|
-
gpr_log(GPR_INFO,
|
2861
|
-
"chand=%p lb_call=%p: got on_complete for send_initial_metadata: "
|
2862
|
-
"error=%s",
|
2863
|
-
self->chand_, self, grpc_error_std_string(error).c_str());
|
2864
|
-
}
|
2865
|
-
self->call_attempt_tracer_->RecordOnDoneSendInitialMetadata(
|
2866
|
-
self->peer_string_);
|
2867
|
-
Closure::Run(DEBUG_LOCATION,
|
2868
|
-
self->original_send_initial_metadata_on_complete_,
|
2869
|
-
GRPC_ERROR_REF(error));
|
2870
|
-
}
|
2871
|
-
|
2872
|
-
void ClientChannel::LoadBalancedCall::RecvInitialMetadataReady(
|
3008
|
+
void ClientChannel::FilterBasedLoadBalancedCall::RecvInitialMetadataReady(
|
2873
3009
|
void* arg, grpc_error_handle error) {
|
2874
|
-
auto* self = static_cast<
|
3010
|
+
auto* self = static_cast<FilterBasedLoadBalancedCall*>(arg);
|
2875
3011
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2876
3012
|
gpr_log(GPR_INFO,
|
2877
3013
|
"chand=%p lb_call=%p: got recv_initial_metadata_ready: error=%s",
|
2878
|
-
self->
|
3014
|
+
self->chand(), self, StatusToString(error).c_str());
|
2879
3015
|
}
|
2880
|
-
if (
|
3016
|
+
if (error.ok()) {
|
2881
3017
|
// recv_initial_metadata_flags is not populated for clients
|
2882
|
-
self->
|
2883
|
-
self->recv_initial_metadata_
|
3018
|
+
self->call_attempt_tracer()->RecordReceivedInitialMetadata(
|
3019
|
+
self->recv_initial_metadata_);
|
3020
|
+
auto* peer_string = self->recv_initial_metadata_->get_pointer(PeerString());
|
3021
|
+
if (peer_string != nullptr) self->peer_string_ = peer_string->Ref();
|
2884
3022
|
}
|
2885
3023
|
Closure::Run(DEBUG_LOCATION, self->original_recv_initial_metadata_ready_,
|
2886
|
-
|
2887
|
-
}
|
2888
|
-
|
2889
|
-
void ClientChannel::LoadBalancedCall::RecvMessageReady(
|
2890
|
-
void* arg, grpc_error_handle error) {
|
2891
|
-
auto* self = static_cast<LoadBalancedCall*>(arg);
|
2892
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2893
|
-
gpr_log(GPR_INFO, "chand=%p lb_call=%p: got recv_message_ready: error=%s",
|
2894
|
-
self->chand_, self, grpc_error_std_string(error).c_str());
|
2895
|
-
}
|
2896
|
-
if (self->recv_message_->has_value()) {
|
2897
|
-
self->call_attempt_tracer_->RecordReceivedMessage(**self->recv_message_);
|
2898
|
-
}
|
2899
|
-
Closure::Run(DEBUG_LOCATION, self->original_recv_message_ready_,
|
2900
|
-
GRPC_ERROR_REF(error));
|
3024
|
+
error);
|
2901
3025
|
}
|
2902
3026
|
|
2903
|
-
void ClientChannel::
|
3027
|
+
void ClientChannel::FilterBasedLoadBalancedCall::RecvTrailingMetadataReady(
|
2904
3028
|
void* arg, grpc_error_handle error) {
|
2905
|
-
auto* self = static_cast<
|
3029
|
+
auto* self = static_cast<FilterBasedLoadBalancedCall*>(arg);
|
2906
3030
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2907
3031
|
gpr_log(GPR_INFO,
|
2908
3032
|
"chand=%p lb_call=%p: got recv_trailing_metadata_ready: error=%s "
|
2909
|
-
"
|
3033
|
+
"call_attempt_tracer()=%p lb_subchannel_call_tracker_=%p "
|
2910
3034
|
"failure_error_=%s",
|
2911
|
-
self->
|
2912
|
-
self->
|
2913
|
-
|
3035
|
+
self->chand(), self, StatusToString(error).c_str(),
|
3036
|
+
self->call_attempt_tracer(), self->lb_subchannel_call_tracker(),
|
3037
|
+
StatusToString(self->failure_error_).c_str());
|
2914
3038
|
}
|
2915
3039
|
// Check if we have a tracer or an LB callback to invoke.
|
2916
|
-
if (self->
|
2917
|
-
self->
|
3040
|
+
if (self->call_attempt_tracer() != nullptr ||
|
3041
|
+
self->lb_subchannel_call_tracker() != nullptr) {
|
2918
3042
|
// Get the call's status.
|
2919
3043
|
absl::Status status;
|
2920
|
-
if (!
|
3044
|
+
if (!error.ok()) {
|
2921
3045
|
// Get status from error.
|
2922
3046
|
grpc_status_code code;
|
2923
3047
|
std::string message;
|
@@ -2937,63 +3061,22 @@ void ClientChannel::LoadBalancedCall::RecvTrailingMetadataReady(
|
|
2937
3061
|
status = absl::Status(static_cast<absl::StatusCode>(code), message);
|
2938
3062
|
}
|
2939
3063
|
}
|
2940
|
-
|
3064
|
+
absl::string_view peer_string;
|
3065
|
+
if (self->peer_string_.has_value()) {
|
3066
|
+
peer_string = self->peer_string_->as_string_view();
|
3067
|
+
}
|
3068
|
+
self->RecordCallCompletion(status, self->recv_trailing_metadata_,
|
3069
|
+
self->transport_stream_stats_, peer_string);
|
2941
3070
|
}
|
2942
3071
|
// Chain to original callback.
|
2943
|
-
if (!
|
3072
|
+
if (!self->failure_error_.ok()) {
|
2944
3073
|
error = self->failure_error_;
|
2945
|
-
self->failure_error_ =
|
2946
|
-
} else {
|
2947
|
-
error = GRPC_ERROR_REF(error);
|
3074
|
+
self->failure_error_ = absl::OkStatus();
|
2948
3075
|
}
|
2949
3076
|
Closure::Run(DEBUG_LOCATION, self->original_recv_trailing_metadata_ready_,
|
2950
3077
|
error);
|
2951
3078
|
}
|
2952
3079
|
|
2953
|
-
void ClientChannel::LoadBalancedCall::RecordCallCompletion(
|
2954
|
-
absl::Status status) {
|
2955
|
-
// If we have a tracer, notify it.
|
2956
|
-
if (call_attempt_tracer_ != nullptr) {
|
2957
|
-
call_attempt_tracer_->RecordReceivedTrailingMetadata(
|
2958
|
-
status, recv_trailing_metadata_, transport_stream_stats_);
|
2959
|
-
}
|
2960
|
-
// If the LB policy requested a callback for trailing metadata, invoke
|
2961
|
-
// the callback.
|
2962
|
-
if (lb_subchannel_call_tracker_ != nullptr) {
|
2963
|
-
Metadata trailing_metadata(recv_trailing_metadata_);
|
2964
|
-
BackendMetricAccessor backend_metric_accessor(this);
|
2965
|
-
LoadBalancingPolicy::SubchannelCallTrackerInterface::FinishArgs args = {
|
2966
|
-
status, &trailing_metadata, &backend_metric_accessor};
|
2967
|
-
lb_subchannel_call_tracker_->Finish(args);
|
2968
|
-
lb_subchannel_call_tracker_.reset();
|
2969
|
-
}
|
2970
|
-
}
|
2971
|
-
|
2972
|
-
void ClientChannel::LoadBalancedCall::CreateSubchannelCall() {
|
2973
|
-
SubchannelCall::Args call_args = {
|
2974
|
-
std::move(connected_subchannel_), pollent_, path_.Ref(), /*start_time=*/0,
|
2975
|
-
deadline_, arena_,
|
2976
|
-
// TODO(roth): When we implement hedging support, we will probably
|
2977
|
-
// need to use a separate call context for each subchannel call.
|
2978
|
-
call_context_, call_combiner_};
|
2979
|
-
grpc_error_handle error = GRPC_ERROR_NONE;
|
2980
|
-
subchannel_call_ = SubchannelCall::Create(std::move(call_args), &error);
|
2981
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2982
|
-
gpr_log(GPR_INFO,
|
2983
|
-
"chand=%p lb_call=%p: create subchannel_call=%p: error=%s", chand_,
|
2984
|
-
this, subchannel_call_.get(), grpc_error_std_string(error).c_str());
|
2985
|
-
}
|
2986
|
-
if (on_call_destruction_complete_ != nullptr) {
|
2987
|
-
subchannel_call_->SetAfterCallStackDestroy(on_call_destruction_complete_);
|
2988
|
-
on_call_destruction_complete_ = nullptr;
|
2989
|
-
}
|
2990
|
-
if (GPR_UNLIKELY(!GRPC_ERROR_IS_NONE(error))) {
|
2991
|
-
PendingBatchesFail(error, YieldCallCombiner);
|
2992
|
-
} else {
|
2993
|
-
PendingBatchesResume();
|
2994
|
-
}
|
2995
|
-
}
|
2996
|
-
|
2997
3080
|
// A class to handle the call combiner cancellation callback for a
|
2998
3081
|
// queued pick.
|
2999
3082
|
// TODO(roth): When we implement hedging support, we won't be able to
|
@@ -3001,9 +3084,10 @@ void ClientChannel::LoadBalancedCall::CreateSubchannelCall() {
|
|
3001
3084
|
// because there may be multiple LB picks happening in parallel.
|
3002
3085
|
// Instead, we will probably need to maintain a list in the CallData
|
3003
3086
|
// object of pending LB picks to be cancelled when the closure runs.
|
3004
|
-
class ClientChannel::
|
3087
|
+
class ClientChannel::FilterBasedLoadBalancedCall::LbQueuedCallCanceller {
|
3005
3088
|
public:
|
3006
|
-
explicit LbQueuedCallCanceller(
|
3089
|
+
explicit LbQueuedCallCanceller(
|
3090
|
+
RefCountedPtr<FilterBasedLoadBalancedCall> lb_call)
|
3007
3091
|
: lb_call_(std::move(lb_call)) {
|
3008
3092
|
GRPC_CALL_STACK_REF(lb_call_->owning_call_, "LbQueuedCallCanceller");
|
3009
3093
|
GRPC_CLOSURE_INIT(&closure_, &CancelLocked, this, nullptr);
|
@@ -3014,195 +3098,109 @@ class ClientChannel::LoadBalancedCall::LbQueuedCallCanceller {
|
|
3014
3098
|
static void CancelLocked(void* arg, grpc_error_handle error) {
|
3015
3099
|
auto* self = static_cast<LbQueuedCallCanceller*>(arg);
|
3016
3100
|
auto* lb_call = self->lb_call_.get();
|
3017
|
-
auto* chand = lb_call->
|
3101
|
+
auto* chand = lb_call->chand();
|
3018
3102
|
{
|
3019
|
-
MutexLock lock(&chand->
|
3103
|
+
MutexLock lock(&chand->lb_mu_);
|
3020
3104
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
3021
3105
|
gpr_log(GPR_INFO,
|
3022
3106
|
"chand=%p lb_call=%p: cancelling queued pick: "
|
3023
3107
|
"error=%s self=%p calld->pick_canceller=%p",
|
3024
|
-
chand, lb_call,
|
3108
|
+
chand, lb_call, StatusToString(error).c_str(), self,
|
3025
3109
|
lb_call->lb_call_canceller_);
|
3026
3110
|
}
|
3027
|
-
if (lb_call->lb_call_canceller_ == self && !
|
3028
|
-
lb_call->
|
3111
|
+
if (lb_call->lb_call_canceller_ == self && !error.ok()) {
|
3112
|
+
lb_call->Commit();
|
3029
3113
|
// Remove pick from list of queued picks.
|
3030
|
-
lb_call->
|
3114
|
+
lb_call->RemoveCallFromLbQueuedCallsLocked();
|
3115
|
+
// Remove from queued picks list.
|
3116
|
+
chand->lb_queued_calls_.erase(lb_call);
|
3031
3117
|
// Fail pending batches on the call.
|
3032
|
-
lb_call->PendingBatchesFail(
|
3118
|
+
lb_call->PendingBatchesFail(error,
|
3033
3119
|
YieldCallCombinerIfPendingBatchesFound);
|
3034
3120
|
}
|
3035
3121
|
}
|
3036
|
-
|
3122
|
+
// Unref lb_call before unreffing the call stack, since unreffing
|
3123
|
+
// the call stack may destroy the arena in which lb_call is allocated.
|
3124
|
+
auto* owning_call = lb_call->owning_call_;
|
3125
|
+
self->lb_call_.reset();
|
3126
|
+
GRPC_CALL_STACK_UNREF(owning_call, "LbQueuedCallCanceller");
|
3037
3127
|
delete self;
|
3038
3128
|
}
|
3039
3129
|
|
3040
|
-
RefCountedPtr<
|
3130
|
+
RefCountedPtr<FilterBasedLoadBalancedCall> lb_call_;
|
3041
3131
|
grpc_closure closure_;
|
3042
3132
|
};
|
3043
3133
|
|
3044
|
-
void ClientChannel::
|
3045
|
-
|
3046
|
-
if (
|
3047
|
-
|
3048
|
-
|
3134
|
+
void ClientChannel::FilterBasedLoadBalancedCall::TryPick(bool was_queued) {
|
3135
|
+
auto result = PickSubchannel(was_queued);
|
3136
|
+
if (result.has_value()) {
|
3137
|
+
if (!result->ok()) {
|
3138
|
+
PendingBatchesFail(*result, YieldCallCombiner);
|
3139
|
+
return;
|
3140
|
+
}
|
3141
|
+
CreateSubchannelCall();
|
3049
3142
|
}
|
3050
|
-
chand_->RemoveLbQueuedCall(&queued_call_, pollent_);
|
3051
|
-
queued_pending_lb_pick_ = false;
|
3052
|
-
// Lame the call combiner canceller.
|
3053
|
-
lb_call_canceller_ = nullptr;
|
3054
3143
|
}
|
3055
3144
|
|
3056
|
-
void ClientChannel::
|
3057
|
-
if (queued_pending_lb_pick_) return;
|
3058
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
3059
|
-
gpr_log(GPR_INFO, "chand=%p lb_call=%p: adding to queued picks list",
|
3060
|
-
chand_, this);
|
3061
|
-
}
|
3062
|
-
queued_pending_lb_pick_ = true;
|
3063
|
-
queued_call_.lb_call = this;
|
3064
|
-
chand_->AddLbQueuedCall(&queued_call_, pollent_);
|
3145
|
+
void ClientChannel::FilterBasedLoadBalancedCall::OnAddToQueueLocked() {
|
3065
3146
|
// Register call combiner cancellation callback.
|
3066
3147
|
lb_call_canceller_ = new LbQueuedCallCanceller(Ref());
|
3067
3148
|
}
|
3068
3149
|
|
3069
|
-
void ClientChannel::
|
3070
|
-
//
|
3071
|
-
|
3072
|
-
|
3073
|
-
|
3074
|
-
|
3075
|
-
|
3076
|
-
|
3077
|
-
|
3078
|
-
|
3079
|
-
|
3080
|
-
|
3081
|
-
|
3082
|
-
|
3083
|
-
|
3084
|
-
|
3085
|
-
|
3150
|
+
void ClientChannel::FilterBasedLoadBalancedCall::RetryPickLocked() {
|
3151
|
+
// Lame the call combiner canceller.
|
3152
|
+
lb_call_canceller_ = nullptr;
|
3153
|
+
// Do an async callback to resume call processing, so that we're not
|
3154
|
+
// doing it while holding the channel's LB mutex.
|
3155
|
+
// TODO(roth): We should really be using EventEngine::Run() here
|
3156
|
+
// instead of ExecCtx::Run(). Unfortunately, doing that seems to cause
|
3157
|
+
// a flaky TSAN failure for reasons that I do not fully understand.
|
3158
|
+
// However, given that we are working toward eliminating this code as
|
3159
|
+
// part of the promise conversion, it doesn't seem worth further
|
3160
|
+
// investigation right now.
|
3161
|
+
ExecCtx::Run(DEBUG_LOCATION, NewClosure([this](grpc_error_handle) {
|
3162
|
+
// If there are a lot of queued calls here, resuming them
|
3163
|
+
// all may cause us to stay inside C-core for a long period
|
3164
|
+
// of time. All of that work would be done using the same
|
3165
|
+
// ExecCtx instance and therefore the same cached value of
|
3166
|
+
// "now". The longer it takes to finish all of this work
|
3167
|
+
// and exit from C-core, the more stale the cached value of
|
3168
|
+
// "now" may become. This can cause problems whereby (e.g.)
|
3169
|
+
// we calculate a timer deadline based on the stale value,
|
3170
|
+
// which results in the timer firing too early. To avoid
|
3171
|
+
// this, we invalidate the cached value for each call we
|
3172
|
+
// process.
|
3173
|
+
ExecCtx::Get()->InvalidateNow();
|
3174
|
+
TryPick(/*was_queued=*/true);
|
3175
|
+
}),
|
3176
|
+
absl::OkStatus());
|
3177
|
+
}
|
3178
|
+
|
3179
|
+
void ClientChannel::FilterBasedLoadBalancedCall::CreateSubchannelCall() {
|
3180
|
+
Slice* path = send_initial_metadata()->get_pointer(HttpPathMetadata());
|
3181
|
+
GPR_ASSERT(path != nullptr);
|
3182
|
+
SubchannelCall::Args call_args = {
|
3183
|
+
connected_subchannel()->Ref(), pollent_, path->Ref(), /*start_time=*/0,
|
3184
|
+
deadline_, arena_,
|
3185
|
+
// TODO(roth): When we implement hedging support, we will probably
|
3186
|
+
// need to use a separate call context for each subchannel call.
|
3187
|
+
call_context_, call_combiner_};
|
3188
|
+
grpc_error_handle error;
|
3189
|
+
subchannel_call_ = SubchannelCall::Create(std::move(call_args), &error);
|
3190
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
3191
|
+
gpr_log(GPR_INFO,
|
3192
|
+
"chand=%p lb_call=%p: create subchannel_call=%p: error=%s", chand(),
|
3193
|
+
this, subchannel_call_.get(), StatusToString(error).c_str());
|
3086
3194
|
}
|
3087
|
-
|
3088
|
-
|
3089
|
-
|
3090
|
-
|
3091
|
-
void ClientChannel::LoadBalancedCall::PickSubchannel(void* arg,
|
3092
|
-
grpc_error_handle error) {
|
3093
|
-
auto* self = static_cast<LoadBalancedCall*>(arg);
|
3094
|
-
bool pick_complete;
|
3095
|
-
{
|
3096
|
-
MutexLock lock(&self->chand_->data_plane_mu_);
|
3097
|
-
pick_complete = self->PickSubchannelLocked(&error);
|
3195
|
+
if (on_call_destruction_complete_ != nullptr) {
|
3196
|
+
subchannel_call_->SetAfterCallStackDestroy(on_call_destruction_complete_);
|
3197
|
+
on_call_destruction_complete_ = nullptr;
|
3098
3198
|
}
|
3099
|
-
if (
|
3100
|
-
|
3101
|
-
|
3199
|
+
if (GPR_UNLIKELY(!error.ok())) {
|
3200
|
+
PendingBatchesFail(error, YieldCallCombiner);
|
3201
|
+
} else {
|
3202
|
+
PendingBatchesResume();
|
3102
3203
|
}
|
3103
3204
|
}
|
3104
3205
|
|
3105
|
-
bool ClientChannel::LoadBalancedCall::PickSubchannelLocked(
|
3106
|
-
grpc_error_handle* error) {
|
3107
|
-
GPR_ASSERT(connected_subchannel_ == nullptr);
|
3108
|
-
GPR_ASSERT(subchannel_call_ == nullptr);
|
3109
|
-
// Grab initial metadata.
|
3110
|
-
auto& send_initial_metadata =
|
3111
|
-
pending_batches_[0]->payload->send_initial_metadata;
|
3112
|
-
grpc_metadata_batch* initial_metadata_batch =
|
3113
|
-
send_initial_metadata.send_initial_metadata;
|
3114
|
-
// Perform LB pick.
|
3115
|
-
LoadBalancingPolicy::PickArgs pick_args;
|
3116
|
-
pick_args.path = path_.as_string_view();
|
3117
|
-
LbCallState lb_call_state(this);
|
3118
|
-
pick_args.call_state = &lb_call_state;
|
3119
|
-
Metadata initial_metadata(initial_metadata_batch);
|
3120
|
-
pick_args.initial_metadata = &initial_metadata;
|
3121
|
-
auto result = chand_->picker_->Pick(pick_args);
|
3122
|
-
return HandlePickResult<bool>(
|
3123
|
-
&result,
|
3124
|
-
// CompletePick
|
3125
|
-
[this](LoadBalancingPolicy::PickResult::Complete* complete_pick)
|
3126
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::data_plane_mu_) {
|
3127
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
3128
|
-
gpr_log(GPR_INFO,
|
3129
|
-
"chand=%p lb_call=%p: LB pick succeeded: subchannel=%p",
|
3130
|
-
chand_, this, complete_pick->subchannel.get());
|
3131
|
-
}
|
3132
|
-
GPR_ASSERT(complete_pick->subchannel != nullptr);
|
3133
|
-
// Grab a ref to the connected subchannel while we're still
|
3134
|
-
// holding the data plane mutex.
|
3135
|
-
SubchannelWrapper* subchannel = static_cast<SubchannelWrapper*>(
|
3136
|
-
complete_pick->subchannel.get());
|
3137
|
-
connected_subchannel_ = subchannel->connected_subchannel();
|
3138
|
-
// If the subchannel has no connected subchannel (e.g., if the
|
3139
|
-
// subchannel has moved out of state READY but the LB policy hasn't
|
3140
|
-
// yet seen that change and given us a new picker), then just
|
3141
|
-
// queue the pick. We'll try again as soon as we get a new picker.
|
3142
|
-
if (connected_subchannel_ == nullptr) {
|
3143
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
3144
|
-
gpr_log(GPR_INFO,
|
3145
|
-
"chand=%p lb_call=%p: subchannel returned by LB picker "
|
3146
|
-
"has no connected subchannel; queueing pick",
|
3147
|
-
chand_, this);
|
3148
|
-
}
|
3149
|
-
MaybeAddCallToLbQueuedCallsLocked();
|
3150
|
-
return false;
|
3151
|
-
}
|
3152
|
-
lb_subchannel_call_tracker_ =
|
3153
|
-
std::move(complete_pick->subchannel_call_tracker);
|
3154
|
-
if (lb_subchannel_call_tracker_ != nullptr) {
|
3155
|
-
lb_subchannel_call_tracker_->Start();
|
3156
|
-
}
|
3157
|
-
MaybeRemoveCallFromLbQueuedCallsLocked();
|
3158
|
-
return true;
|
3159
|
-
},
|
3160
|
-
// QueuePick
|
3161
|
-
[this](LoadBalancingPolicy::PickResult::Queue* /*queue_pick*/)
|
3162
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::data_plane_mu_) {
|
3163
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
3164
|
-
gpr_log(GPR_INFO, "chand=%p lb_call=%p: LB pick queued", chand_,
|
3165
|
-
this);
|
3166
|
-
}
|
3167
|
-
MaybeAddCallToLbQueuedCallsLocked();
|
3168
|
-
return false;
|
3169
|
-
},
|
3170
|
-
// FailPick
|
3171
|
-
[this, initial_metadata_batch,
|
3172
|
-
&error](LoadBalancingPolicy::PickResult::Fail* fail_pick)
|
3173
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::data_plane_mu_) {
|
3174
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
3175
|
-
gpr_log(GPR_INFO, "chand=%p lb_call=%p: LB pick failed: %s",
|
3176
|
-
chand_, this, fail_pick->status.ToString().c_str());
|
3177
|
-
}
|
3178
|
-
// If wait_for_ready is false, then the error indicates the RPC
|
3179
|
-
// attempt's final status.
|
3180
|
-
if (!initial_metadata_batch->GetOrCreatePointer(WaitForReady())
|
3181
|
-
->value) {
|
3182
|
-
*error = absl_status_to_grpc_error(MaybeRewriteIllegalStatusCode(
|
3183
|
-
std::move(fail_pick->status), "LB pick"));
|
3184
|
-
MaybeRemoveCallFromLbQueuedCallsLocked();
|
3185
|
-
return true;
|
3186
|
-
}
|
3187
|
-
// If wait_for_ready is true, then queue to retry when we get a new
|
3188
|
-
// picker.
|
3189
|
-
MaybeAddCallToLbQueuedCallsLocked();
|
3190
|
-
return false;
|
3191
|
-
},
|
3192
|
-
// DropPick
|
3193
|
-
[this, &error](LoadBalancingPolicy::PickResult::Drop* drop_pick)
|
3194
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::data_plane_mu_) {
|
3195
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
3196
|
-
gpr_log(GPR_INFO, "chand=%p lb_call=%p: LB pick dropped: %s",
|
3197
|
-
chand_, this, drop_pick->status.ToString().c_str());
|
3198
|
-
}
|
3199
|
-
*error = grpc_error_set_int(
|
3200
|
-
absl_status_to_grpc_error(MaybeRewriteIllegalStatusCode(
|
3201
|
-
std::move(drop_pick->status), "LB drop")),
|
3202
|
-
GRPC_ERROR_INT_LB_POLICY_DROP, 1);
|
3203
|
-
MaybeRemoveCallFromLbQueuedCallsLocked();
|
3204
|
-
return true;
|
3205
|
-
});
|
3206
|
-
}
|
3207
|
-
|
3208
3206
|
} // namespace grpc_core
|