grpc 1.47.0 → 1.53.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 +386 -162
- 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/endpoint_config.h +11 -5
- data/include/grpc/event_engine/event_engine.h +87 -32
- 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 +52 -5
- data/include/grpc/fork.h +25 -1
- data/include/grpc/grpc.h +4 -14
- data/include/grpc/grpc_posix.h +1 -1
- data/include/grpc/impl/codegen/atm.h +3 -71
- data/include/grpc/impl/codegen/atm_gcc_atomic.h +3 -67
- data/include/grpc/impl/codegen/atm_gcc_sync.h +3 -61
- data/include/grpc/impl/codegen/atm_windows.h +3 -108
- 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 +5 -83
- data/include/grpc/impl/codegen/connectivity_state.h +5 -21
- data/include/grpc/impl/codegen/fork.h +4 -25
- data/include/grpc/impl/codegen/gpr_types.h +4 -35
- data/include/grpc/impl/codegen/grpc_types.h +5 -791
- data/include/grpc/impl/codegen/log.h +3 -86
- data/include/grpc/impl/codegen/port_platform.h +3 -763
- 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 +827 -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 +5 -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/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 +148 -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 +19 -17
- data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +49 -31
- data/src/core/ext/filters/channel_idle/channel_idle_filter.h +22 -5
- data/src/core/ext/filters/channel_idle/idle_filter_state.h +6 -4
- data/src/core/ext/filters/client_channel/backend_metric.cc +2 -0
- data/src/core/ext/filters/client_channel/backend_metric.h +3 -3
- data/src/core/ext/filters/client_channel/backup_poller.cc +30 -30
- data/src/core/ext/filters/client_channel/backup_poller.h +24 -24
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +52 -29
- data/src/core/ext/filters/client_channel/client_channel.cc +348 -441
- data/src/core/ext/filters/client_channel/client_channel.h +46 -24
- data/src/core/ext/filters/client_channel/client_channel_channelz.cc +17 -19
- 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 -46
- data/src/core/ext/filters/client_channel/client_channel_factory.h +5 -13
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +18 -34
- 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 -26
- data/src/core/ext/filters/client_channel/config_selector.h +27 -23
- data/src/core/ext/filters/client_channel/connector.h +13 -10
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +29 -54
- 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/health/health_check_client.cc +4 -5
- data/src/core/ext/filters/client_channel/health/health_check_client.h +3 -3
- data/src/core/ext/filters/client_channel/http_proxy.cc +90 -110
- data/src/core/ext/filters/client_channel/http_proxy.h +36 -32
- data/src/core/ext/filters/client_channel/lb_call_state_internal.h +39 -0
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +4 -5
- 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 +21 -21
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +27 -18
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +14 -14
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +66 -132
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h +41 -24
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +361 -366
- 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 +12 -4
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +9 -7
- 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 -19
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +22 -24
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +28 -98
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.h +5 -5
- 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 +418 -327
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +46 -6
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +140 -154
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +304 -387
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +388 -363
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +19 -11
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +578 -628
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +154 -138
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +134 -115
- data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/static_stride_scheduler.cc +128 -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 +972 -0
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +202 -224
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +124 -139
- 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 +154 -258
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +183 -214
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +361 -411
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.cc +819 -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 +369 -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 +15 -18
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +452 -175
- 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 +88 -83
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +276 -202
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +69 -57
- 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_selection.h +20 -21
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +32 -23
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +9 -21
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +15 -4
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +83 -57
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +123 -67
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +25 -17
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +9 -19
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +293 -286
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +6 -4
- data/src/core/ext/filters/client_channel/retry_filter.cc +135 -172
- data/src/core/ext/filters/client_channel/retry_filter.h +4 -3
- data/src/core/ext/filters/client_channel/retry_service_config.cc +193 -224
- data/src/core/ext/filters/client_channel/retry_service_config.h +22 -28
- 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 +13 -13
- data/src/core/ext/filters/client_channel/subchannel.cc +275 -323
- data/src/core/ext/filters/client_channel/subchannel.h +45 -75
- data/src/core/ext/filters/client_channel/subchannel_interface_internal.h +4 -4
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +6 -76
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +37 -46
- data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +23 -111
- data/src/core/ext/filters/client_channel/subchannel_stream_client.h +8 -12
- data/src/core/ext/filters/deadline/deadline_filter.cc +90 -76
- data/src/core/ext/filters/deadline/deadline_filter.h +14 -12
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +43 -18
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +20 -11
- 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} +34 -13
- data/src/core/ext/filters/http/client/http_client_filter.cc +61 -48
- data/src/core/ext/filters/http/client/http_client_filter.h +29 -22
- data/src/core/ext/filters/http/client_authority_filter.cc +28 -28
- data/src/core/ext/filters/http/client_authority_filter.h +27 -24
- data/src/core/ext/filters/http/http_filters_plugin.cc +43 -51
- data/src/core/ext/filters/http/message_compress/compression_filter.cc +307 -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 +63 -56
- data/src/core/ext/filters/http/server/http_server_filter.h +28 -23
- data/src/core/ext/filters/message_size/message_size_filter.cc +109 -123
- data/src/core/ext/filters/message_size/message_size_filter.h +34 -17
- data/src/core/ext/filters/rbac/rbac_filter.cc +28 -16
- data/src/core/ext/filters/rbac/rbac_filter.h +11 -3
- data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +736 -523
- data/src/core/ext/filters/rbac/rbac_service_config_parser.h +18 -7
- data/src/core/ext/filters/server_config_selector/server_config_selector.h +20 -8
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +28 -12
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.h +4 -3
- data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +219 -0
- data/src/core/ext/filters/stateful_session/stateful_session_filter.h +66 -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/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 +109 -131
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +30 -24
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +167 -203
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +25 -27
- 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 +30 -30
- data/src/core/ext/transport/chttp2/transport/bin_encoder.h +29 -29
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +714 -1060
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +24 -24
- data/src/core/ext/transport/chttp2/transport/context_list.cc +19 -19
- data/src/core/ext/transport/chttp2/transport/context_list.h +28 -28
- data/src/core/ext/transport/chttp2/transport/decode_huff.cc +251 -0
- data/src/core/ext/transport/chttp2/transport/decode_huff.h +971 -0
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +347 -301
- data/src/core/ext/transport/chttp2/transport/flow_control.h +245 -326
- data/src/core/ext/transport/chttp2/transport/frame.h +21 -21
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +84 -239
- data/src/core/ext/transport/chttp2/transport/frame_data.h +36 -62
- 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 -26
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +22 -22
- 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 +35 -77
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +22 -22
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +31 -33
- data/src/core/ext/transport/chttp2/transport/frame_window_update.h +21 -21
- data/src/core/ext/transport/chttp2/transport/hpack_constants.h +10 -4
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +159 -208
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +46 -61
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +11 -5
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +96 -542
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +23 -23
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +28 -38
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +32 -27
- 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 +225 -296
- data/src/core/ext/transport/chttp2/transport/parsing.cc +333 -129
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +19 -23
- 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 +85 -94
- data/src/core/ext/transport/inproc/inproc_plugin.cc +17 -18
- data/src/core/ext/transport/inproc/inproc_transport.cc +223 -273
- data/src/core/ext/transport/inproc/inproc_transport.h +23 -21
- data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.h +30 -10
- data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.c +6 -5
- data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.h +33 -8
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +8 -327
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +83 -1723
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.c +388 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.h +1953 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.c +6 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.h +33 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +7 -3
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +14 -14
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +90 -30
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +25 -19
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +168 -34
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +35 -43
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +195 -116
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.c +11 -11
- data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.h +84 -28
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +35 -12
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +179 -14
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +25 -23
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +156 -48
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +42 -14
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +12 -12
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +78 -26
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +23 -20
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +137 -69
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +23 -21
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +132 -44
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +17 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +67 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +15 -9
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +73 -18
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +30 -10
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +39 -13
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +194 -15
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +42 -14
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +5 -3
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +28 -2
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +7 -4
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +36 -4
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +6 -6
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +48 -16
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +54 -18
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +26 -11
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +124 -14
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +19 -15
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +78 -69
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +168 -82
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +887 -166
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.c +34 -15
- data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.h +161 -22
- data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.c +3 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.h +15 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.c +47 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.h +107 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.h +1 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.c +7 -6
- data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.h +27 -14
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +30 -10
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c +11 -4
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +58 -4
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +6 -3
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +29 -2
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.c +62 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.h +179 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +38 -27
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +207 -52
- data/src/core/ext/upb-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb.c +46 -0
- data/src/core/ext/upb-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb.h +98 -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 +54 -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 +188 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/common/v3/common.upb.c +111 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/common/v3/common.upb.h +444 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.c +56 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +192 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.c +46 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.h +98 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +10 -8
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +66 -14
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +13 -11
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +73 -23
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +133 -16
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +656 -12
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +30 -10
- data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +24 -8
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/filter_state.upb.c +47 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/filter_state.upb.h +113 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h +24 -8
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/status_code_input.upb.c +43 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/status_code_input.upb.h +114 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +42 -14
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +30 -10
- data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.c +63 -0
- data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.h +202 -0
- data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_unit.upb.h +3 -1
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.h +6 -2
- data/src/core/ext/upb-generated/google/api/annotations.upb.h +1 -1
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +11 -11
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +66 -22
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +9 -9
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +72 -24
- data/src/core/ext/upb-generated/google/api/http.upb.c +3 -3
- data/src/core/ext/upb-generated/google/api/http.upb.h +18 -6
- data/src/core/ext/upb-generated/google/api/httpbody.upb.c +1 -1
- data/src/core/ext/upb-generated/google/api/httpbody.upb.h +6 -2
- data/src/core/ext/upb-generated/google/protobuf/any.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/any.upb.h +6 -2
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +44 -43
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +177 -55
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +6 -2
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +6 -2
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +2 -2
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +18 -6
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +6 -2
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +6 -6
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +54 -18
- data/src/core/ext/upb-generated/google/rpc/status.upb.c +1 -1
- data/src/core/ext/upb-generated/google/rpc/status.upb.h +6 -2
- data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.c +2 -2
- data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.h +24 -8
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +6 -2
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +7 -7
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +60 -20
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +1 -1
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +12 -4
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +2 -2
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +12 -4
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +6 -6
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +54 -18
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +2 -2
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +12 -4
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.c +7 -7
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.h +42 -14
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +3 -3
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +23 -11
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +1 -1
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +7 -3
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +7 -3
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +1 -1
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +7 -3
- data/src/core/ext/upb-generated/validate/validate.upb.c +22 -22
- data/src/core/ext/upb-generated/validate/validate.upb.h +139 -47
- data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.c +3 -3
- data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.h +23 -11
- data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.h +7 -3
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +3 -3
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +27 -11
- data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.h +7 -3
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +6 -2
- data/src/core/ext/upb-generated/xds/core/v3/cidr.upb.c +47 -0
- data/src/core/ext/upb-generated/xds/core/v3/cidr.upb.h +107 -0
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +2 -2
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +12 -4
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +6 -2
- data/src/core/ext/upb-generated/xds/core/v3/extension.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/extension.upb.h +6 -2
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +6 -2
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +12 -4
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +6 -2
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +3 -2
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +15 -2
- data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.c +1 -2
- data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.h +6 -2
- data/src/core/ext/upb-generated/xds/type/matcher/v3/cel.upb.c +46 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/cel.upb.h +98 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/domain.upb.c +62 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/domain.upb.h +174 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/http_inputs.upb.c +36 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/http_inputs.upb.h +74 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/ip.upb.c +65 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/ip.upb.h +191 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.c +6 -6
- data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.h +54 -18
- data/src/core/ext/upb-generated/xds/type/matcher/v3/range.upb.c +127 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/range.upb.h +474 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.c +2 -2
- data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.h +12 -4
- data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.h +12 -4
- data/src/core/ext/upb-generated/xds/type/v3/cel.upb.c +67 -0
- data/src/core/ext/upb-generated/xds/type/v3/cel.upb.h +214 -0
- data/src/core/ext/upb-generated/xds/type/v3/range.upb.c +64 -0
- data/src/core/ext/upb-generated/xds/type/v3/range.upb.h +208 -0
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +1 -2
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +6 -2
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/clusters.upbdefs.c +54 -53
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +67 -274
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h +0 -85
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.c +277 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.h +125 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.c +14 -11
- data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +107 -107
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +199 -187
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +232 -222
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +0 -5
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c +95 -75
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +187 -183
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +81 -75
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +190 -186
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c +7 -3
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +16 -16
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +71 -66
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +164 -137
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c +16 -12
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +39 -31
- data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +140 -129
- data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +82 -74
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +2 -2
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +740 -667
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +20 -0
- data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.c +150 -139
- data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/datadog.upbdefs.c +16 -14
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.c +48 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.c +16 -12
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/zipkin.upbdefs.c +20 -18
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +46 -25
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +53 -42
- 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 +40 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +485 -467
- 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 +35 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +21 -18
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +149 -145
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +156 -84
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +113 -113
- 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 +35 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +29 -28
- 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 +40 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.c +69 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_unit.upbdefs.c +10 -9
- data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +92 -90
- 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 +35 -0
- 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 +35 -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 +40 -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 +35 -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 +40 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/matcher.upbdefs.c +9 -9
- 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 +60 -0
- 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 +40 -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 +45 -0
- data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.c +4 -7
- data/src/core/ext/xds/certificate_provider_store.cc +65 -3
- data/src/core/ext/xds/certificate_provider_store.h +21 -4
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +17 -10
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +12 -4
- data/src/core/ext/xds/upb_utils.h +3 -25
- data/src/core/ext/xds/xds_api.cc +90 -196
- data/src/core/ext/xds/xds_api.h +41 -39
- data/src/core/ext/xds/xds_bootstrap.cc +5 -537
- data/src/core/ext/xds/xds_bootstrap.h +41 -96
- data/src/core/ext/xds/xds_bootstrap_grpc.cc +362 -0
- data/src/core/ext/xds/xds_bootstrap_grpc.h +184 -0
- data/src/core/ext/xds/xds_certificate_provider.cc +31 -25
- data/src/core/ext/xds/xds_certificate_provider.h +28 -4
- data/src/core/ext/xds/xds_channel_args.h +3 -3
- data/src/core/ext/xds/xds_channel_stack_modifier.cc +15 -5
- data/src/core/ext/xds/xds_channel_stack_modifier.h +16 -4
- data/src/core/ext/xds/xds_client.cc +833 -1324
- data/src/core/ext/xds/xds_client.h +57 -61
- data/src/core/ext/xds/xds_client_grpc.cc +235 -0
- data/src/core/ext/xds/xds_client_grpc.h +79 -0
- data/src/core/ext/xds/xds_client_stats.cc +24 -25
- data/src/core/ext/xds/xds_client_stats.h +26 -24
- data/src/core/ext/xds/xds_cluster.cc +413 -245
- data/src/core/ext/xds/xds_cluster.h +66 -40
- data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +67 -77
- data/src/core/ext/xds/xds_cluster_specifier_plugin.h +47 -29
- data/src/core/ext/xds/xds_common_types.cc +238 -123
- data/src/core/ext/xds/xds_common_types.h +29 -16
- data/src/core/ext/xds/xds_endpoint.cc +265 -162
- data/src/core/ext/xds/xds_endpoint.h +19 -15
- 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 +66 -57
- data/src/core/ext/xds/xds_http_fault_filter.h +19 -25
- data/src/core/ext/xds/xds_http_filters.cc +70 -71
- data/src/core/ext/xds/xds_http_filters.h +73 -25
- data/src/core/ext/xds/xds_http_rbac_filter.cc +168 -225
- data/src/core/ext/xds/xds_http_rbac_filter.h +22 -18
- data/src/core/ext/xds/xds_http_stateful_session_filter.cc +218 -0
- data/src/core/ext/xds/xds_http_stateful_session_filter.h +58 -0
- data/src/core/ext/xds/xds_lb_policy_registry.cc +334 -0
- data/src/core/ext/xds/xds_lb_policy_registry.h +71 -0
- data/src/core/ext/xds/xds_listener.cc +557 -475
- data/src/core/ext/xds/xds_listener.h +57 -51
- data/src/core/ext/xds/xds_resource_type.h +28 -22
- data/src/core/ext/xds/xds_resource_type_impl.h +18 -17
- data/src/core/ext/xds/xds_route_config.cc +592 -570
- data/src/core/ext/xds/xds_route_config.h +74 -40
- data/src/core/ext/xds/xds_routing.cc +21 -7
- data/src/core/ext/xds/xds_routing.h +17 -12
- data/src/core/ext/xds/xds_server_config_fetcher.cc +227 -179
- data/src/core/ext/xds/xds_transport.h +86 -0
- data/src/core/ext/xds/xds_transport_grpc.cc +356 -0
- data/src/core/ext/xds/xds_transport_grpc.h +135 -0
- data/src/core/lib/address_utils/parse_address.cc +52 -52
- data/src/core/lib/address_utils/parse_address.h +46 -42
- data/src/core/lib/address_utils/sockaddr_utils.cc +38 -35
- data/src/core/lib/address_utils/sockaddr_utils.h +38 -36
- data/src/core/lib/avl/avl.h +54 -32
- data/src/core/lib/backoff/backoff.cc +19 -21
- data/src/core/lib/backoff/backoff.h +21 -21
- data/src/core/lib/channel/call_finalization.h +4 -6
- data/src/core/lib/channel/call_tracer.h +17 -8
- data/src/core/lib/channel/channel_args.cc +108 -39
- data/src/core/lib/channel/channel_args.h +285 -111
- data/src/core/lib/channel/channel_args_preconditioning.cc +1 -0
- data/src/core/lib/channel/channel_args_preconditioning.h +4 -4
- data/src/core/lib/channel/channel_fwd.h +26 -0
- data/src/core/lib/channel/channel_stack.cc +60 -58
- data/src/core/lib/channel/channel_stack.h +149 -146
- data/src/core/lib/channel/channel_stack_builder.cc +21 -24
- data/src/core/lib/channel/channel_stack_builder.h +19 -14
- data/src/core/lib/channel/channel_stack_builder_impl.cc +55 -26
- data/src/core/lib/channel/channel_stack_builder_impl.h +6 -3
- data/src/core/lib/channel/channel_trace.cc +24 -26
- data/src/core/lib/channel/channel_trace.h +22 -22
- data/src/core/lib/channel/channelz.cc +44 -54
- data/src/core/lib/channel/channelz.h +40 -32
- data/src/core/lib/channel/channelz_registry.cc +21 -22
- data/src/core/lib/channel/channelz_registry.h +21 -21
- data/src/core/lib/channel/connected_channel.cc +1264 -65
- data/src/core/lib/channel/connected_channel.h +21 -24
- data/src/core/lib/channel/context.h +25 -21
- data/src/core/lib/channel/promise_based_filter.cc +1544 -280
- data/src/core/lib/channel/promise_based_filter.h +466 -99
- data/src/core/lib/channel/status_util.cc +62 -17
- data/src/core/lib/channel/status_util.h +39 -22
- data/src/core/lib/compression/compression.cc +24 -19
- data/src/core/lib/compression/compression_internal.cc +43 -53
- data/src/core/lib/compression/compression_internal.h +27 -26
- data/src/core/lib/compression/message_compress.cc +28 -26
- data/src/core/lib/compression/message_compress.h +28 -29
- data/src/core/lib/config/core_configuration.cc +5 -1
- data/src/core/lib/config/core_configuration.h +84 -38
- 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 +48 -152
- data/src/core/lib/debug/stats.h +50 -57
- data/src/core/lib/debug/stats_data.cc +302 -645
- data/src/core/lib/debug/stats_data.h +293 -545
- data/src/core/lib/debug/trace.cc +18 -20
- data/src/core/lib/debug/trace.h +27 -48
- data/src/core/lib/event_engine/channel_args_endpoint_config.cc +15 -18
- data/src/core/lib/event_engine/channel_args_endpoint_config.h +16 -10
- data/src/core/lib/event_engine/common_closures.h +71 -0
- data/src/core/lib/event_engine/default_event_engine.cc +99 -0
- data/src/core/lib/event_engine/default_event_engine.h +73 -0
- data/src/core/lib/event_engine/default_event_engine_factory.cc +20 -5
- data/src/core/lib/event_engine/{event_engine_factory.h → default_event_engine_factory.h} +4 -12
- data/src/core/lib/event_engine/event_engine.cc +3 -40
- data/src/core/lib/event_engine/executor/executor.h +38 -0
- data/src/core/lib/event_engine/forkable.cc +106 -0
- data/src/core/lib/event_engine/forkable.h +61 -0
- data/src/core/lib/event_engine/handle_containers.h +10 -3
- data/src/core/lib/event_engine/memory_allocator.cc +1 -1
- data/src/core/lib/event_engine/poller.h +62 -0
- data/src/core/lib/event_engine/posix.h +158 -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 +899 -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 +74 -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 +265 -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 +1305 -0
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +717 -0
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +640 -0
- data/src/core/lib/event_engine/posix_engine/posix_engine.h +259 -0
- 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 +289 -0
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +279 -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 +853 -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 +311 -0
- data/src/core/lib/event_engine/posix_engine/timer.h +194 -0
- data/src/core/lib/event_engine/posix_engine/timer_heap.cc +107 -0
- data/src/core/lib/event_engine/posix_engine/timer_heap.h +56 -0
- data/src/core/lib/event_engine/posix_engine/timer_manager.cc +173 -0
- data/src/core/lib/event_engine/posix_engine/timer_manager.h +114 -0
- 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 +19 -0
- data/src/core/lib/event_engine/resolved_address_internal.h +34 -0
- data/src/core/lib/event_engine/shim.cc +56 -0
- data/src/core/lib/event_engine/shim.h +33 -0
- 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.cc +253 -0
- data/src/core/lib/event_engine/thread_pool.h +141 -0
- data/src/core/lib/event_engine/time_util.cc +30 -0
- data/src/core/lib/event_engine/time_util.h +32 -0
- data/src/core/lib/event_engine/trace.cc +6 -0
- data/src/core/lib/event_engine/trace.h +16 -3
- data/src/core/lib/event_engine/utils.cc +44 -0
- data/src/core/lib/event_engine/utils.h +44 -0
- data/src/core/lib/event_engine/windows/iocp.cc +140 -0
- data/src/core/lib/event_engine/windows/iocp.h +69 -0
- data/src/core/lib/event_engine/windows/win_socket.cc +219 -0
- data/src/core/lib/event_engine/windows/win_socket.h +129 -0
- data/src/core/lib/event_engine/windows/windows_endpoint.cc +331 -0
- data/src/core/lib/event_engine/windows/windows_endpoint.h +103 -0
- data/src/core/lib/event_engine/windows/windows_engine.cc +388 -0
- data/src/core/lib/event_engine/windows/windows_engine.h +163 -0
- data/src/core/lib/experiments/config.cc +161 -0
- data/src/core/lib/experiments/config.h +53 -0
- data/src/core/lib/experiments/experiments.cc +81 -0
- data/src/core/lib/experiments/experiments.h +117 -0
- data/src/core/lib/gpr/alloc.cc +19 -25
- data/src/core/lib/gpr/alloc.h +20 -20
- data/src/core/lib/gpr/atm.cc +17 -17
- data/src/core/lib/gpr/cpu_iphone.cc +24 -24
- data/src/core/lib/gpr/cpu_linux.cc +28 -23
- data/src/core/lib/gpr/cpu_posix.cc +23 -22
- data/src/core/lib/gpr/cpu_windows.cc +20 -18
- data/src/core/lib/gpr/log.cc +27 -19
- data/src/core/lib/gpr/log_android.cc +22 -20
- data/src/core/lib/gpr/log_linux.cc +24 -24
- data/src/core/lib/gpr/log_posix.cc +20 -19
- data/src/core/lib/gpr/log_windows.cc +25 -25
- 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/string_posix.cc +24 -24
- data/src/core/lib/gpr/string_util_windows.cc +25 -52
- data/src/core/lib/gpr/string_windows.cc +24 -24
- data/src/core/lib/gpr/sync.cc +25 -25
- data/src/core/lib/gpr/sync_abseil.cc +36 -40
- data/src/core/lib/gpr/sync_posix.cc +22 -34
- data/src/core/lib/gpr/sync_windows.cc +29 -27
- data/src/core/lib/gpr/time.cc +34 -30
- data/src/core/lib/gpr/time_posix.cc +41 -45
- data/src/core/lib/gpr/time_precise.cc +22 -22
- data/src/core/lib/gpr/time_precise.h +21 -22
- data/src/core/lib/gpr/time_windows.cc +35 -29
- data/src/core/lib/gpr/tmpfile.h +24 -24
- data/src/core/lib/gpr/tmpfile_msys.cc +21 -20
- data/src/core/lib/gpr/tmpfile_posix.cc +22 -20
- data/src/core/lib/gpr/tmpfile_windows.cc +28 -29
- data/src/core/lib/gpr/useful.h +83 -30
- 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 +30 -16
- 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/{ext/xds/xds_resource_type.cc → lib/gprpp/crash.cc} +12 -12
- data/src/core/lib/gprpp/crash.h +34 -0
- data/src/core/lib/gprpp/debug_location.h +60 -31
- data/src/core/lib/gprpp/dual_ref_counted.h +3 -3
- data/src/core/lib/gprpp/env.h +53 -0
- data/src/core/lib/gprpp/env_linux.cc +80 -0
- data/src/core/lib/gprpp/env_posix.cc +47 -0
- data/src/core/lib/gprpp/env_windows.cc +56 -0
- 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 +56 -48
- data/src/core/lib/gprpp/fork.h +29 -35
- data/src/core/lib/gprpp/global_config.h +20 -20
- data/src/core/lib/gprpp/global_config_custom.h +20 -20
- data/src/core/lib/gprpp/global_config_env.cc +25 -23
- data/src/core/lib/gprpp/global_config_env.h +26 -26
- data/src/core/lib/gprpp/global_config_generic.h +21 -21
- 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/load_file.cc +75 -0
- data/src/core/lib/gprpp/load_file.h +33 -0
- data/src/core/lib/gprpp/manual_constructor.h +21 -88
- 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 +95 -0
- data/src/core/lib/gprpp/notification.h +67 -0
- data/src/core/lib/gprpp/orphanable.h +21 -21
- data/src/core/lib/gprpp/overload.h +3 -3
- data/src/core/lib/gprpp/packed_table.h +40 -0
- data/src/core/lib/gprpp/per_cpu.h +46 -0
- data/src/core/lib/gprpp/ref_counted.h +21 -21
- data/src/core/lib/gprpp/ref_counted_ptr.h +41 -54
- data/src/core/lib/gprpp/single_set_ptr.h +3 -3
- data/src/core/lib/gprpp/sorted_pack.h +98 -0
- data/src/core/lib/gprpp/stat.h +3 -3
- data/src/core/lib/gprpp/stat_posix.cc +5 -4
- data/src/core/lib/gprpp/stat_windows.cc +4 -2
- data/src/core/lib/gprpp/status_helper.cc +49 -33
- data/src/core/lib/gprpp/status_helper.h +9 -5
- 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 +12 -4
- data/src/core/lib/gprpp/tchar.cc +49 -0
- data/src/core/lib/gprpp/tchar.h +33 -0
- data/src/core/lib/gprpp/thd.h +23 -23
- data/src/core/lib/gprpp/thd_posix.cc +30 -31
- data/src/core/lib/gprpp/thd_windows.cc +26 -26
- data/src/core/lib/gprpp/time.cc +44 -9
- data/src/core/lib/gprpp/time.h +73 -4
- data/src/core/lib/gprpp/time_averaged_stats.cc +60 -0
- data/src/core/lib/gprpp/time_averaged_stats.h +79 -0
- 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 +61 -0
- data/src/core/lib/gprpp/validation_errors.h +127 -0
- data/src/core/lib/{iomgr → gprpp}/work_serializer.cc +34 -18
- data/src/core/lib/{iomgr → gprpp}/work_serializer.h +21 -28
- data/src/core/lib/handshaker/proxy_mapper.h +53 -0
- data/src/core/lib/handshaker/proxy_mapper_registry.cc +71 -0
- data/src/core/lib/handshaker/proxy_mapper_registry.h +75 -0
- data/src/core/lib/http/format_request.cc +24 -22
- data/src/core/lib/http/format_request.h +21 -21
- data/src/core/lib/http/httpcli.cc +79 -88
- data/src/core/lib/http/httpcli.h +47 -31
- data/src/core/lib/http/httpcli_security_connector.cc +47 -38
- data/src/core/lib/http/httpcli_ssl_credentials.h +6 -4
- data/src/core/lib/http/parser.cc +78 -90
- data/src/core/lib/http/parser.h +38 -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 +123 -101
- data/src/core/lib/iomgr/call_combiner.cc +32 -64
- data/src/core/lib/iomgr/call_combiner.h +24 -25
- data/src/core/lib/iomgr/cfstream_handle.cc +33 -36
- 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 -58
- data/src/core/lib/iomgr/combiner.cc +20 -39
- 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 +44 -43
- data/src/core/lib/iomgr/endpoint_cfstream.h +32 -32
- data/src/core/lib/iomgr/endpoint_pair.h +20 -20
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +34 -28
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +30 -21
- data/src/core/lib/iomgr/error.cc +51 -834
- data/src/core/lib/iomgr/error.h +45 -317
- data/src/core/lib/iomgr/error_cfstream.cc +18 -23
- data/src/core/lib/iomgr/error_cfstream.h +21 -21
- data/src/core/lib/iomgr/ev_apple.cc +21 -21
- data/src/core/lib/iomgr/ev_apple.h +21 -21
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +263 -248
- data/src/core/lib/iomgr/ev_epoll1_linux.h +21 -21
- data/src/core/lib/iomgr/ev_poll_posix.cc +296 -271
- data/src/core/lib/iomgr/ev_poll_posix.h +22 -22
- data/src/core/lib/iomgr/ev_posix.cc +87 -117
- data/src/core/lib/iomgr/ev_posix.h +93 -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/iomgr/event_engine_shims/closure.h +39 -0
- data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +430 -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 -56
- data/src/core/lib/iomgr/exec_ctx.h +151 -175
- data/src/core/lib/iomgr/executor.cc +21 -31
- data/src/core/lib/iomgr/executor.h +27 -30
- data/src/core/lib/iomgr/fork_posix.cc +30 -27
- 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 +23 -23
- data/src/core/lib/iomgr/iocp_windows.h +21 -21
- data/src/core/lib/iomgr/iomgr.cc +25 -19
- data/src/core/lib/iomgr/iomgr.h +35 -35
- data/src/core/lib/iomgr/iomgr_fwd.h +4 -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 +21 -20
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +21 -19
- data/src/core/lib/iomgr/iomgr_windows.cc +24 -22
- 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 -131
- 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 +55 -55
- data/src/core/lib/iomgr/pollset_set.cc +17 -17
- data/src/core/lib/iomgr/pollset_set.h +25 -26
- data/src/core/lib/iomgr/pollset_set_windows.cc +18 -18
- data/src/core/lib/iomgr/pollset_set_windows.h +20 -20
- data/src/core/lib/iomgr/pollset_windows.cc +32 -31
- data/src/core/lib/iomgr/pollset_windows.h +24 -24
- data/src/core/lib/iomgr/port.h +34 -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 +54 -31
- data/src/core/lib/iomgr/resolve_address_impl.h +5 -4
- data/src/core/lib/iomgr/resolve_address_posix.cc +74 -49
- data/src/core/lib/iomgr/resolve_address_posix.h +23 -10
- data/src/core/lib/iomgr/resolve_address_windows.cc +59 -26
- data/src/core/lib/iomgr/resolve_address_windows.h +23 -10
- 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 +20 -18
- 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 +80 -100
- data/src/core/lib/iomgr/socket_utils_linux.cc +18 -17
- data/src/core/lib/iomgr/socket_utils_posix.cc +103 -19
- data/src/core/lib/iomgr/socket_utils_posix.h +176 -84
- data/src/core/lib/iomgr/socket_utils_windows.cc +20 -19
- data/src/core/lib/iomgr/socket_windows.cc +37 -36
- data/src/core/lib/iomgr/socket_windows.h +59 -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 +28 -24
- data/src/core/lib/iomgr/tcp_client.h +49 -38
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +39 -36
- data/src/core/lib/iomgr/tcp_client_posix.cc +236 -105
- data/src/core/lib/iomgr/tcp_client_posix.h +55 -52
- data/src/core/lib/iomgr/tcp_client_windows.cc +64 -51
- data/src/core/lib/iomgr/tcp_posix.cc +502 -341
- data/src/core/lib/iomgr/tcp_posix.h +32 -30
- data/src/core/lib/iomgr/tcp_server.cc +33 -24
- data/src/core/lib/iomgr/tcp_server.h +78 -69
- data/src/core/lib/iomgr/tcp_server_posix.cc +358 -124
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +68 -55
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +93 -58
- 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 +106 -116
- data/src/core/lib/iomgr/tcp_windows.cc +109 -94
- data/src/core/lib/iomgr/tcp_windows.h +34 -35
- 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 +125 -134
- 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 +31 -31
- 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 -23
- 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 +33 -30
- data/src/core/lib/iomgr/wakeup_fd_posix.h +52 -54
- data/src/core/lib/json/json.h +22 -25
- data/src/core/{ext/filters/http/message_compress/message_decompress_filter.h → lib/json/json_args.h} +13 -10
- data/src/core/lib/json/json_channel_args.h +42 -0
- data/src/core/lib/json/json_object_loader.cc +217 -0
- data/src/core/lib/json/json_object_loader.h +634 -0
- data/src/core/lib/json/json_reader.cc +115 -90
- data/src/core/lib/json/json_util.cc +14 -41
- data/src/core/lib/json/json_util.h +7 -7
- data/src/core/lib/json/json_writer.cc +56 -56
- data/src/core/{ext/filters/client_channel → lib/load_balancing}/lb_policy.cc +26 -58
- data/src/core/{ext/filters/client_channel → lib/load_balancing}/lb_policy.h +32 -41
- data/src/core/lib/load_balancing/lb_policy_factory.h +49 -0
- data/src/core/lib/load_balancing/lb_policy_registry.cc +142 -0
- data/src/core/lib/load_balancing/lb_policy_registry.h +82 -0
- data/src/core/{ext/filters/client_channel → lib/load_balancing}/subchannel_interface.h +18 -31
- data/src/core/lib/matchers/matchers.cc +12 -7
- data/src/core/lib/matchers/matchers.h +5 -3
- data/src/core/lib/promise/activity.cc +22 -7
- data/src/core/lib/promise/activity.h +110 -52
- data/src/core/lib/promise/arena_promise.h +105 -72
- data/src/core/lib/promise/context.h +17 -10
- data/src/core/lib/promise/detail/basic_join.h +197 -0
- data/src/core/lib/promise/detail/basic_seq.h +27 -32
- data/src/core/lib/promise/detail/promise_factory.h +61 -13
- 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 +21 -21
- data/src/core/lib/promise/exec_ctx_wakeup_scheduler.h +23 -15
- data/src/core/lib/promise/if.h +195 -0
- data/src/core/lib/promise/interceptor_list.h +308 -0
- data/src/core/lib/promise/intra_activity_waiter.h +9 -3
- data/src/core/lib/promise/latch.h +110 -22
- data/src/core/lib/promise/loop.h +12 -9
- data/src/core/lib/promise/map.h +4 -6
- data/src/core/lib/promise/pipe.h +608 -0
- data/src/core/lib/promise/poll.h +129 -11
- data/src/core/lib/promise/promise.h +5 -5
- data/src/core/lib/promise/race.h +6 -9
- data/src/core/lib/promise/seq.h +32 -12
- data/src/core/lib/promise/sleep.cc +56 -42
- data/src/core/lib/promise/sleep.h +40 -32
- 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 +39 -21
- data/src/core/lib/resolver/resolver.cc +17 -59
- data/src/core/lib/resolver/resolver.h +21 -18
- data/src/core/lib/resolver/resolver_factory.h +10 -8
- data/src/core/lib/resolver/resolver_registry.cc +17 -9
- data/src/core/lib/resolver/resolver_registry.h +15 -5
- data/src/core/lib/resolver/server_address.cc +38 -32
- data/src/core/lib/resolver/server_address.h +32 -31
- data/src/core/lib/resource_quota/api.cc +10 -2
- data/src/core/lib/resource_quota/api.h +10 -4
- data/src/core/lib/resource_quota/arena.cc +85 -21
- data/src/core/lib/resource_quota/arena.h +196 -23
- data/src/core/lib/resource_quota/memory_quota.cc +287 -108
- data/src/core/lib/resource_quota/memory_quota.h +175 -59
- data/src/core/lib/resource_quota/periodic_update.cc +78 -0
- data/src/core/lib/resource_quota/periodic_update.h +71 -0
- 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/authorization_engine.h +3 -3
- data/src/core/lib/security/authorization/authorization_policy_provider.h +10 -3
- data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +3 -0
- data/src/core/lib/security/authorization/evaluate_args.cc +17 -8
- data/src/core/lib/security/authorization/evaluate_args.h +9 -6
- data/src/core/lib/security/authorization/grpc_authorization_engine.cc +5 -1
- data/src/core/lib/security/authorization/grpc_authorization_engine.h +10 -3
- data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +16 -3
- data/src/core/lib/security/authorization/grpc_server_authz_filter.h +16 -5
- data/src/core/lib/security/authorization/matchers.cc +44 -30
- data/src/core/lib/security/authorization/matchers.h +10 -3
- data/src/core/lib/security/authorization/rbac_policy.cc +6 -2
- data/src/core/lib/security/authorization/rbac_policy.h +10 -3
- data/src/core/{ext/xds → lib/security/certificate_provider}/certificate_provider_factory.h +9 -4
- data/src/core/lib/security/certificate_provider/certificate_provider_registry.cc +60 -0
- data/src/core/lib/security/certificate_provider/certificate_provider_registry.h +70 -0
- data/src/core/lib/security/context/security_context.cc +27 -25
- data/src/core/lib/security/context/security_context.h +56 -34
- data/src/core/lib/security/credentials/alts/alts_credentials.cc +23 -22
- data/src/core/lib/security/credentials/alts/alts_credentials.h +61 -57
- 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 +20 -22
- 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 +19 -22
- data/src/core/lib/security/credentials/call_creds_util.cc +8 -0
- data/src/core/lib/security/credentials/call_creds_util.h +4 -3
- data/src/core/lib/security/credentials/channel_creds_registry.h +9 -4
- data/src/core/lib/security/credentials/channel_creds_registry_init.cc +13 -3
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +27 -31
- data/src/core/lib/security/credentials/composite/composite_credentials.h +40 -29
- data/src/core/lib/security/credentials/credentials.cc +23 -26
- data/src/core/lib/security/credentials/credentials.h +62 -55
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +123 -76
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +13 -3
- data/src/core/lib/security/credentials/external/aws_request_signer.cc +14 -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 +83 -68
- data/src/core/lib/security/credentials/external/external_account_credentials.h +14 -3
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +29 -26
- data/src/core/lib/security/credentials/external/file_external_account_credentials.h +9 -3
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +42 -31
- data/src/core/lib/security/credentials/external/url_external_account_credentials.h +13 -3
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +30 -36
- data/src/core/lib/security/credentials/fake/fake_credentials.h +49 -42
- data/src/core/lib/security/credentials/google_default/credentials_generic.cc +23 -25
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +129 -107
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +31 -25
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +27 -20
- data/src/core/lib/security/credentials/iam/iam_credentials.h +31 -21
- data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +7 -3
- data/src/core/lib/security/credentials/insecure/insecure_credentials.h +10 -6
- data/src/core/lib/security/credentials/jwt/json_token.cc +40 -29
- data/src/core/lib/security/credentials/jwt/json_token.h +36 -36
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +29 -27
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +35 -21
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +113 -89
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +49 -47
- data/src/core/lib/security/credentials/local/local_credentials.cc +24 -24
- data/src/core/lib/security/credentials/local/local_credentials.h +32 -26
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +85 -81
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +42 -21
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +31 -30
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +47 -23
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +36 -40
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +35 -23
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +22 -30
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +16 -17
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +55 -48
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +22 -9
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +10 -3
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +9 -10
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +22 -23
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +3 -3
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +36 -44
- data/src/core/lib/security/credentials/tls/tls_credentials.h +28 -25
- data/src/core/lib/security/credentials/tls/tls_utils.cc +5 -1
- data/src/core/lib/security/credentials/tls/tls_utils.h +4 -4
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +21 -32
- data/src/core/lib/security/credentials/xds/xds_credentials.h +19 -5
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +60 -54
- data/src/core/lib/security/security_connector/alts/alts_security_connector.h +49 -47
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +74 -78
- data/src/core/lib/security/security_connector/fake/fake_security_connector.h +25 -26
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +15 -6
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +26 -15
- 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 +22 -20
- data/src/core/lib/security/security_connector/{load_system_roots_linux.cc → load_system_roots_supported.cc} +43 -38
- data/src/core/lib/security/security_connector/load_system_roots_supported.h +45 -0
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +64 -47
- data/src/core/lib/security/security_connector/local/local_security_connector.h +49 -46
- data/src/core/lib/security/security_connector/security_connector.cc +37 -35
- data/src/core/lib/security/security_connector/security_connector.h +57 -44
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +54 -45
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +44 -43
- data/src/core/lib/security/security_connector/ssl_utils.cc +47 -39
- data/src/core/lib/security/security_connector/ssl_utils.h +45 -42
- data/src/core/lib/security/security_connector/ssl_utils_config.cc +22 -22
- data/src/core/lib/security/security_connector/ssl_utils_config.h +21 -22
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +58 -56
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +48 -28
- data/src/core/lib/security/transport/auth_filters.h +53 -24
- data/src/core/lib/security/transport/client_auth_filter.cc +51 -32
- data/src/core/lib/security/transport/secure_endpoint.cc +112 -68
- data/src/core/lib/security/transport/secure_endpoint.h +28 -27
- data/src/core/lib/security/transport/security_handshaker.cc +139 -109
- data/src/core/lib/security/transport/security_handshaker.h +27 -22
- data/src/core/lib/security/transport/server_auth_filter.cc +157 -267
- 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 +24 -24
- data/src/core/lib/security/util/json_util.h +21 -23
- data/src/core/lib/service_config/service_config.h +15 -4
- data/src/core/lib/service_config/service_config_call_data.h +11 -4
- data/src/core/lib/service_config/service_config_impl.cc +107 -153
- data/src/core/lib/service_config/service_config_impl.h +19 -26
- data/src/core/lib/service_config/service_config_parser.cc +10 -30
- data/src/core/lib/service_config/service_config_parser.h +13 -21
- 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 +21 -30
- data/src/core/lib/slice/percent_encoding.h +28 -28
- data/src/core/lib/slice/slice.cc +57 -45
- data/src/core/lib/slice/slice.h +57 -18
- data/src/core/lib/slice/slice_buffer.cc +93 -60
- data/src/core/lib/slice/slice_buffer.h +72 -10
- 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 -37
- data/src/core/lib/slice/slice_string_helpers.h +21 -25
- 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.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 +2205 -471
- data/src/core/lib/surface/call.h +121 -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/lib/surface/call_trace.h +30 -0
- data/src/core/lib/surface/channel.cc +65 -69
- data/src/core/lib/surface/channel.h +45 -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 +20 -20
- 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 +188 -218
- data/src/core/lib/surface/completion_queue.h +39 -41
- data/src/core/lib/surface/completion_queue_factory.cc +33 -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 +44 -73
- data/src/core/lib/surface/init.h +20 -20
- data/src/core/lib/surface/init_internally.cc +25 -0
- data/src/core/lib/surface/init_internally.h +37 -0
- data/src/core/lib/surface/lame_client.cc +33 -30
- data/src/core/lib/surface/lame_client.h +23 -23
- data/src/core/lib/surface/metadata_array.cc +17 -18
- data/src/core/lib/surface/server.cc +349 -130
- data/src/core/lib/surface/server.h +24 -22
- data/src/core/lib/surface/validate_metadata.cc +32 -43
- data/src/core/lib/surface/validate_metadata.h +21 -21
- data/src/core/lib/surface/version.cc +21 -21
- data/src/core/lib/transport/bdp_estimator.cc +18 -20
- data/src/core/lib/transport/bdp_estimator.h +21 -22
- data/src/core/lib/transport/connectivity_state.cc +19 -20
- data/src/core/lib/transport/connectivity_state.h +23 -23
- data/src/core/lib/transport/error_utils.cc +54 -78
- data/src/core/lib/transport/error_utils.h +24 -24
- data/src/core/lib/transport/handshaker.cc +66 -54
- data/src/core/lib/transport/handshaker.h +51 -47
- data/src/core/lib/transport/handshaker_factory.h +49 -24
- data/src/core/lib/transport/handshaker_registry.cc +27 -20
- data/src/core/lib/transport/handshaker_registry.h +25 -28
- data/src/core/lib/transport/http2_errors.h +22 -22
- data/src/core/lib/transport/http_connect_handshaker.cc +56 -57
- data/src/core/lib/transport/http_connect_handshaker.h +21 -21
- data/src/core/lib/transport/metadata_batch.cc +22 -4
- data/src/core/lib/transport/metadata_batch.h +129 -35
- data/src/core/lib/transport/parsed_metadata.cc +2 -6
- data/src/core/lib/transport/parsed_metadata.h +7 -5
- 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/status_conversion.cc +23 -25
- data/src/core/lib/transport/status_conversion.h +22 -22
- data/src/core/lib/transport/tcp_connect_handshaker.cc +34 -42
- data/src/core/lib/transport/tcp_connect_handshaker.h +3 -3
- data/src/core/lib/transport/timeout_encoding.cc +22 -22
- data/src/core/lib/transport/timeout_encoding.h +20 -20
- data/src/core/lib/transport/transport.cc +85 -46
- data/src/core/lib/transport/transport.h +219 -215
- data/src/core/lib/transport/transport_fwd.h +20 -0
- data/src/core/lib/transport/transport_impl.h +46 -46
- data/src/core/lib/transport/transport_op_string.cc +32 -30
- 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 +53 -73
- data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +20 -39
- 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 +72 -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 +117 -97
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +104 -104
- 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 +51 -43
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +60 -60
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +24 -24
- 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 +67 -58
- 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 +146 -110
- data/src/core/tsi/fake_transport_security.h +36 -30
- data/src/core/tsi/local_transport_security.cc +43 -38
- 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 +31 -22
- data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +25 -20
- data/src/core/tsi/ssl_transport_security.cc +299 -370
- 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 +44 -32
- data/src/core/tsi/transport_security.h +49 -48
- data/src/core/tsi/transport_security_grpc.cc +23 -22
- data/src/core/tsi/transport_security_grpc.h +44 -41
- data/src/core/tsi/transport_security_interface.h +344 -332
- data/src/ruby/ext/grpc/ext-export-truffleruby-with-ruby-abi-version.clang +2 -0
- data/src/ruby/ext/grpc/ext-export-truffleruby-with-ruby-abi-version.gcc +7 -0
- 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.gcc +1 -1
- data/src/ruby/ext/grpc/extconf.rb +97 -19
- 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 +60 -60
- data/src/ruby/ext/grpc/rb_loader.c +6 -2
- data/src/ruby/lib/grpc/errors.rb +1 -1
- 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/pb/src/proto/grpc/testing/messages_pb.rb +4 -0
- data/src/ruby/spec/channel_spec.rb +5 -43
- data/src/ruby/spec/client_server_spec.rb +20 -8
- data/src/ruby/spec/generic/active_call_spec.rb +12 -3
- data/src/ruby/spec/generic/client_stub_spec.rb +23 -23
- data/src/ruby/spec/generic/server_interceptors_spec.rb +1 -1
- data/src/ruby/spec/user_agent_spec.rb +1 -1
- data/third_party/abseil-cpp/absl/algorithm/container.h +57 -58
- data/third_party/abseil-cpp/absl/base/attributes.h +88 -41
- data/third_party/abseil-cpp/absl/base/casts.h +61 -68
- data/third_party/abseil-cpp/absl/base/config.h +221 -39
- data/third_party/abseil-cpp/absl/base/internal/cycleclock.cc +12 -42
- data/third_party/abseil-cpp/absl/base/internal/cycleclock.h +52 -2
- data/third_party/abseil-cpp/absl/base/internal/cycleclock_config.h +55 -0
- data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +5 -4
- data/third_party/abseil-cpp/absl/base/internal/endian.h +17 -62
- data/third_party/abseil-cpp/absl/base/internal/fast_type_id.h +2 -0
- data/third_party/abseil-cpp/absl/base/internal/inline_variable.h +3 -3
- data/third_party/abseil-cpp/absl/base/internal/invoke.h +54 -0
- 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/prefetch.h +138 -0
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +39 -28
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +36 -36
- data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +6 -3
- data/third_party/abseil-cpp/absl/base/internal/spinlock.h +10 -6
- data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +2 -5
- data/third_party/abseil-cpp/absl/base/internal/spinlock_win32.inc +4 -1
- data/third_party/abseil-cpp/absl/base/internal/strerror.cc +88 -0
- data/third_party/abseil-cpp/absl/base/internal/strerror.h +39 -0
- data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +14 -11
- data/third_party/abseil-cpp/absl/base/internal/thread_annotations.h +9 -0
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +2 -1
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +4 -0
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +6 -7
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +12 -40
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock_config.h +62 -0
- data/third_party/abseil-cpp/absl/base/log_severity.cc +28 -0
- data/third_party/abseil-cpp/absl/base/log_severity.h +51 -0
- data/third_party/abseil-cpp/absl/base/macros.h +4 -21
- data/third_party/abseil-cpp/absl/base/optimization.h +76 -16
- 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/base/thread_annotations.h +2 -2
- data/third_party/abseil-cpp/absl/container/fixed_array.h +9 -5
- data/third_party/abseil-cpp/absl/container/flat_hash_map.h +11 -4
- data/third_party/abseil-cpp/absl/container/flat_hash_set.h +15 -16
- data/third_party/abseil-cpp/absl/container/inlined_vector.h +84 -25
- data/third_party/abseil-cpp/absl/container/internal/common.h +9 -8
- 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 +23 -29
- 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 +116 -23
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +40 -54
- data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +165 -66
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +159 -4
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +1121 -470
- 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 +45 -88
- 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 +16 -13
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +3 -2
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +19 -12
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +8 -3
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +2 -1
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +1 -1
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +8 -3
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +59 -102
- 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 +41 -11
- data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +18 -4
- data/third_party/abseil-cpp/absl/debugging/symbolize.cc +6 -1
- data/third_party/abseil-cpp/absl/debugging/symbolize_darwin.inc +3 -2
- data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +164 -101
- data/third_party/abseil-cpp/absl/debugging/symbolize_win32.inc +7 -6
- data/third_party/abseil-cpp/absl/functional/any_invocable.h +316 -0
- data/third_party/abseil-cpp/absl/functional/bind_front.h +10 -1
- data/third_party/abseil-cpp/absl/functional/function_ref.h +2 -1
- data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +878 -0
- data/third_party/abseil-cpp/absl/hash/hash.h +82 -8
- data/third_party/abseil-cpp/absl/hash/internal/city.cc +10 -10
- data/third_party/abseil-cpp/absl/hash/internal/hash.h +235 -26
- 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 +1 -1
- data/third_party/abseil-cpp/absl/numeric/int128.cc +14 -10
- data/third_party/abseil-cpp/absl/numeric/int128.h +2 -2
- data/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h +33 -10
- data/third_party/abseil-cpp/absl/random/bernoulli_distribution.h +4 -4
- data/third_party/abseil-cpp/absl/random/distributions.h +3 -3
- data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +3 -0
- data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +4 -2
- data/third_party/abseil-cpp/absl/random/internal/generate_real.h +2 -2
- data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +59 -48
- data/third_party/abseil-cpp/absl/random/internal/pcg_engine.h +3 -24
- data/third_party/abseil-cpp/absl/random/internal/pool_urbg.cc +9 -9
- data/third_party/abseil-cpp/absl/random/internal/randen.h +5 -11
- data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +6 -2
- data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +48 -23
- data/third_party/abseil-cpp/absl/random/internal/salted_seed_seq.h +24 -26
- data/third_party/abseil-cpp/absl/random/internal/seed_material.cc +2 -2
- data/third_party/abseil-cpp/absl/random/internal/traits.h +53 -5
- data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +5 -5
- data/third_party/abseil-cpp/absl/random/internal/wide_multiply.h +33 -48
- data/third_party/abseil-cpp/absl/random/log_uniform_int_distribution.h +9 -10
- data/third_party/abseil-cpp/absl/random/poisson_distribution.h +7 -4
- data/third_party/abseil-cpp/absl/random/random.h +6 -6
- data/third_party/abseil-cpp/absl/random/seed_sequences.h +1 -0
- data/third_party/abseil-cpp/absl/random/uniform_int_distribution.h +2 -2
- data/third_party/abseil-cpp/absl/random/uniform_real_distribution.h +1 -1
- data/third_party/abseil-cpp/absl/random/zipf_distribution.h +4 -3
- data/third_party/abseil-cpp/absl/status/internal/status_internal.h +18 -0
- data/third_party/abseil-cpp/absl/status/status.cc +193 -14
- data/third_party/abseil-cpp/absl/status/status.h +24 -14
- data/third_party/abseil-cpp/absl/status/statusor.h +9 -3
- data/third_party/abseil-cpp/absl/strings/ascii.cc +5 -5
- data/third_party/abseil-cpp/absl/strings/ascii.h +4 -4
- data/third_party/abseil-cpp/absl/strings/charconv.cc +534 -96
- data/third_party/abseil-cpp/absl/strings/cord.cc +257 -924
- data/third_party/abseil-cpp/absl/strings/cord.h +268 -156
- data/third_party/abseil-cpp/absl/strings/cord_analysis.cc +188 -0
- data/third_party/abseil-cpp/absl/strings/cord_analysis.h +44 -0
- data/third_party/abseil-cpp/absl/strings/cord_buffer.cc +30 -0
- data/third_party/abseil-cpp/absl/strings/cord_buffer.h +575 -0
- 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_data_edge.h +63 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +20 -32
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +441 -150
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +157 -53
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h +70 -73
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.cc +8 -6
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.h +4 -2
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.cc +3 -2
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.h +5 -4
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.cc +7 -74
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.cc +56 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.h +103 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +58 -17
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +13 -11
- 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 +19 -43
- data/third_party/abseil-cpp/absl/strings/internal/cordz_info.h +7 -7
- data/third_party/abseil-cpp/absl/strings/internal/cordz_statistics.h +5 -4
- data/third_party/abseil-cpp/absl/strings/internal/cordz_update_tracker.h +4 -2
- 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 +18 -15
- 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 +127 -30
- 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 +42 -10
- data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +56 -289
- 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 +6 -6
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +9 -4
- 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/output.h +2 -1
- 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 +14 -103
- data/third_party/abseil-cpp/absl/strings/internal/str_join_internal.h +9 -6
- data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +2 -1
- data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +10 -2
- 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/internal/utf8.cc +9 -9
- data/third_party/abseil-cpp/absl/strings/numbers.cc +42 -39
- data/third_party/abseil-cpp/absl/strings/numbers.h +26 -23
- data/third_party/abseil-cpp/absl/strings/str_cat.cc +9 -6
- data/third_party/abseil-cpp/absl/strings/str_cat.h +70 -16
- data/third_party/abseil-cpp/absl/strings/str_format.h +71 -9
- data/third_party/abseil-cpp/absl/strings/str_join.h +9 -15
- data/third_party/abseil-cpp/absl/strings/str_split.h +1 -2
- data/third_party/abseil-cpp/absl/strings/string_view.cc +8 -19
- data/third_party/abseil-cpp/absl/strings/string_view.h +6 -12
- data/third_party/abseil-cpp/absl/strings/strip.h +8 -6
- data/third_party/abseil-cpp/absl/strings/substitute.cc +8 -6
- data/third_party/abseil-cpp/absl/strings/substitute.h +55 -21
- data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +9 -6
- data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.h +0 -4
- 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/internal/per_thread_sem.cc +0 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +1 -6
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +0 -25
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +10 -4
- data/third_party/abseil-cpp/absl/synchronization/mutex.cc +172 -88
- data/third_party/abseil-cpp/absl/synchronization/mutex.h +102 -55
- data/third_party/abseil-cpp/absl/synchronization/notification.cc +0 -1
- data/third_party/abseil-cpp/absl/synchronization/notification.h +3 -3
- 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 +12 -11
- data/third_party/abseil-cpp/absl/time/format.cc +2 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +11 -7
- 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 +268 -169
- data/third_party/abseil-cpp/absl/types/internal/optional.h +8 -0
- 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/optional.h +17 -14
- data/third_party/abseil-cpp/absl/types/span.h +31 -8
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +1 -2
- 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/third_party/utf8_range/utf8_range.h +1 -1
- data/third_party/upb/upb/arena.c +277 -0
- data/third_party/upb/upb/arena.h +225 -0
- data/third_party/upb/upb/array.c +114 -0
- data/third_party/upb/upb/array.h +83 -0
- data/third_party/upb/upb/collections.h +36 -0
- data/third_party/upb/upb/decode.c +161 -65
- data/third_party/upb/upb/decode.h +1 -0
- data/third_party/upb/upb/decode_fast.c +1 -1
- data/third_party/upb/upb/def.c +10 -2
- data/third_party/upb/upb/def.h +8 -1
- data/third_party/upb/upb/def.hpp +7 -4
- data/third_party/upb/upb/encode.c +29 -20
- data/third_party/upb/upb/encode.h +16 -6
- data/third_party/upb/upb/extension_registry.c +93 -0
- data/third_party/upb/upb/extension_registry.h +84 -0
- data/third_party/upb/upb/{decode_internal.h → internal/decode.h} +5 -5
- data/third_party/upb/upb/internal/table.h +385 -0
- data/third_party/upb/upb/{upb_internal.h → internal/upb.h} +3 -3
- data/third_party/upb/upb/internal/vsnprintf_compat.h +52 -0
- data/third_party/upb/upb/json_decode.c +1512 -0
- data/third_party/upb/upb/json_decode.h +47 -0
- data/third_party/upb/upb/json_encode.c +7 -3
- data/third_party/upb/upb/json_encode.h +6 -3
- data/third_party/upb/upb/map.c +108 -0
- data/third_party/upb/upb/map.h +117 -0
- data/third_party/upb/upb/message_value.h +66 -0
- data/third_party/upb/upb/mini_table.c +1147 -0
- data/third_party/upb/upb/mini_table.h +189 -0
- data/third_party/upb/upb/mini_table.hpp +112 -0
- data/third_party/upb/upb/msg.c +2 -62
- data/third_party/upb/upb/msg.h +2 -45
- data/third_party/upb/upb/msg_internal.h +28 -22
- data/third_party/upb/upb/port_def.inc +2 -1
- data/third_party/upb/upb/port_undef.inc +1 -0
- data/third_party/upb/upb/reflection.c +2 -159
- data/third_party/upb/upb/reflection.h +2 -112
- data/third_party/upb/upb/status.c +86 -0
- data/third_party/upb/upb/status.h +66 -0
- data/third_party/upb/upb/table.c +2 -2
- data/third_party/upb/upb/table_internal.h +3 -352
- data/third_party/upb/upb/text_encode.c +3 -2
- data/third_party/upb/upb/upb.c +4 -290
- data/third_party/upb/upb/upb.h +7 -196
- 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 +339 -78
- data/include/grpc/impl/codegen/gpr_slice.h +0 -71
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +0 -50
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +0 -192
- data/src/core/ext/filters/client_channel/lb_policy_registry.h +0 -70
- data/src/core/ext/filters/client_channel/proxy_mapper.h +0 -54
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +0 -91
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.h +0 -55
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +0 -180
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +0 -179
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +0 -457
- data/src/core/ext/filters/http/message_compress/message_compress_filter.h +0 -53
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +0 -388
- data/src/core/ext/filters/server_config_selector/server_config_selector.cc +0 -61
- data/src/core/ext/xds/certificate_provider_registry.cc +0 -103
- data/src/core/ext/xds/certificate_provider_registry.h +0 -57
- data/src/core/lib/event_engine/iomgr_engine.cc +0 -206
- data/src/core/lib/event_engine/iomgr_engine.h +0 -118
- data/src/core/lib/gpr/env.h +0 -40
- data/src/core/lib/gpr/env_linux.cc +0 -75
- data/src/core/lib/gpr/env_posix.cc +0 -46
- data/src/core/lib/gpr/env_windows.cc +0 -74
- 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.h +0 -32
- data/src/core/lib/gpr/tls.h +0 -156
- data/src/core/lib/iomgr/error_internal.h +0 -66
- data/src/core/lib/iomgr/executor/mpmcqueue.cc +0 -182
- data/src/core/lib/iomgr/executor/mpmcqueue.h +0 -171
- data/src/core/lib/iomgr/executor/threadpool.cc +0 -136
- data/src/core/lib/iomgr/executor/threadpool.h +0 -150
- data/src/core/lib/iomgr/time_averaged_stats.cc +0 -64
- data/src/core/lib/iomgr/time_averaged_stats.h +0 -72
- data/src/core/lib/profiling/basic_timers.cc +0 -295
- data/src/core/lib/profiling/stap_timers.cc +0 -50
- data/src/core/lib/profiling/timers.h +0 -94
- data/src/core/lib/promise/call_push_pull.h +0 -148
- data/src/core/lib/security/security_connector/load_system_roots_linux.h +0 -46
- 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/src/core/lib/slice/slice_split.cc +0 -103
- data/src/core/lib/slice/slice_split.h +0 -36
- data/src/core/lib/transport/byte_stream.cc +0 -165
- data/src/core/lib/transport/byte_stream.h +0 -170
- data/third_party/abseil-cpp/absl/container/internal/have_sse.h +0 -50
@@ -20,7 +20,6 @@
|
|
20
20
|
|
21
21
|
#include <inttypes.h>
|
22
22
|
#include <limits.h>
|
23
|
-
#include <string.h>
|
24
23
|
|
25
24
|
#include <algorithm>
|
26
25
|
#include <functional>
|
@@ -28,8 +27,7 @@
|
|
28
27
|
#include <set>
|
29
28
|
#include <vector>
|
30
29
|
|
31
|
-
#include "absl/
|
32
|
-
#include "absl/memory/memory.h"
|
30
|
+
#include "absl/status/status.h"
|
33
31
|
#include "absl/status/statusor.h"
|
34
32
|
#include "absl/strings/cord.h"
|
35
33
|
#include "absl/strings/numbers.h"
|
@@ -39,49 +37,49 @@
|
|
39
37
|
#include "absl/types/optional.h"
|
40
38
|
#include "absl/types/variant.h"
|
41
39
|
|
42
|
-
#include <grpc/
|
40
|
+
#include <grpc/event_engine/event_engine.h>
|
43
41
|
#include <grpc/slice.h>
|
44
42
|
#include <grpc/status.h>
|
45
|
-
#include <grpc/support/alloc.h>
|
46
43
|
#include <grpc/support/log.h>
|
47
44
|
#include <grpc/support/string_util.h>
|
45
|
+
#include <grpc/support/time.h>
|
48
46
|
|
49
47
|
#include "src/core/ext/filters/client_channel/backend_metric.h"
|
50
48
|
#include "src/core/ext/filters/client_channel/backup_poller.h"
|
51
49
|
#include "src/core/ext/filters/client_channel/client_channel_channelz.h"
|
50
|
+
#include "src/core/ext/filters/client_channel/client_channel_service_config.h"
|
52
51
|
#include "src/core/ext/filters/client_channel/config_selector.h"
|
53
52
|
#include "src/core/ext/filters/client_channel/dynamic_filters.h"
|
54
53
|
#include "src/core/ext/filters/client_channel/global_subchannel_pool.h"
|
55
54
|
#include "src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h"
|
56
|
-
#include "src/core/ext/filters/client_channel/lb_policy_registry.h"
|
57
55
|
#include "src/core/ext/filters/client_channel/local_subchannel_pool.h"
|
58
|
-
#include "src/core/ext/filters/client_channel/proxy_mapper_registry.h"
|
59
|
-
#include "src/core/ext/filters/client_channel/resolver_result_parsing.h"
|
60
56
|
#include "src/core/ext/filters/client_channel/retry_filter.h"
|
61
57
|
#include "src/core/ext/filters/client_channel/subchannel.h"
|
62
|
-
#include "src/core/ext/filters/client_channel/subchannel_interface.h"
|
63
58
|
#include "src/core/ext/filters/client_channel/subchannel_interface_internal.h"
|
64
59
|
#include "src/core/ext/filters/deadline/deadline_filter.h"
|
65
60
|
#include "src/core/lib/channel/channel_args.h"
|
66
61
|
#include "src/core/lib/channel/channel_stack.h"
|
67
62
|
#include "src/core/lib/channel/channel_trace.h"
|
63
|
+
#include "src/core/lib/channel/status_util.h"
|
68
64
|
#include "src/core/lib/config/core_configuration.h"
|
69
65
|
#include "src/core/lib/debug/trace.h"
|
70
66
|
#include "src/core/lib/gpr/useful.h"
|
71
67
|
#include "src/core/lib/gprpp/debug_location.h"
|
68
|
+
#include "src/core/lib/gprpp/status_helper.h"
|
72
69
|
#include "src/core/lib/gprpp/sync.h"
|
70
|
+
#include "src/core/lib/gprpp/work_serializer.h"
|
71
|
+
#include "src/core/lib/handshaker/proxy_mapper_registry.h"
|
73
72
|
#include "src/core/lib/iomgr/exec_ctx.h"
|
74
73
|
#include "src/core/lib/iomgr/polling_entity.h"
|
75
74
|
#include "src/core/lib/iomgr/pollset_set.h"
|
76
|
-
#include "src/core/lib/iomgr/work_serializer.h"
|
77
75
|
#include "src/core/lib/json/json.h"
|
78
|
-
#include "src/core/lib/
|
76
|
+
#include "src/core/lib/load_balancing/lb_policy_registry.h"
|
77
|
+
#include "src/core/lib/load_balancing/subchannel_interface.h"
|
79
78
|
#include "src/core/lib/resolver/resolver_registry.h"
|
80
79
|
#include "src/core/lib/resolver/server_address.h"
|
81
80
|
#include "src/core/lib/service_config/service_config_call_data.h"
|
82
81
|
#include "src/core/lib/service_config/service_config_impl.h"
|
83
82
|
#include "src/core/lib/slice/slice_internal.h"
|
84
|
-
#include "src/core/lib/slice/slice_refcount.h"
|
85
83
|
#include "src/core/lib/surface/channel.h"
|
86
84
|
#include "src/core/lib/transport/connectivity_state.h"
|
87
85
|
#include "src/core/lib/transport/error_utils.h"
|
@@ -96,9 +94,7 @@
|
|
96
94
|
|
97
95
|
namespace grpc_core {
|
98
96
|
|
99
|
-
using internal::ClientChannelGlobalParsedConfig;
|
100
97
|
using internal::ClientChannelMethodParsedConfig;
|
101
|
-
using internal::ClientChannelServiceConfigParser;
|
102
98
|
|
103
99
|
TraceFlag grpc_client_channel_trace(false, "client_channel");
|
104
100
|
TraceFlag grpc_client_channel_call_trace(false, "client_channel_call");
|
@@ -194,20 +190,16 @@ class ClientChannel::CallData {
|
|
194
190
|
|
195
191
|
void CreateDynamicCall(grpc_call_element* elem);
|
196
192
|
|
193
|
+
Arena* arena() const { return deadline_state_.arena; }
|
194
|
+
grpc_call_stack* owning_call() const { return deadline_state_.call_stack; }
|
195
|
+
CallCombiner* call_combiner() const { return deadline_state_.call_combiner; }
|
196
|
+
|
197
197
|
// State for handling deadlines.
|
198
|
-
// The code in deadline_filter.c requires this to be the first field.
|
199
|
-
// TODO(roth): This is slightly sub-optimal in that grpc_deadline_state
|
200
|
-
// and this struct both independently store pointers to the call stack
|
201
|
-
// and call combiner. If/when we have time, find a way to avoid this
|
202
|
-
// without breaking the grpc_deadline_state abstraction.
|
203
198
|
grpc_deadline_state deadline_state_;
|
204
199
|
|
205
200
|
grpc_slice path_; // Request path.
|
206
201
|
gpr_cycle_counter call_start_time_;
|
207
202
|
Timestamp deadline_;
|
208
|
-
Arena* arena_;
|
209
|
-
grpc_call_stack* owning_call_;
|
210
|
-
CallCombiner* call_combiner_;
|
211
203
|
grpc_call_context_element* call_context_;
|
212
204
|
|
213
205
|
grpc_polling_entity* pollent_ = nullptr;
|
@@ -238,7 +230,7 @@ class ClientChannel::CallData {
|
|
238
230
|
grpc_transport_stream_op_batch* pending_batches_[MAX_PENDING_BATCHES] = {};
|
239
231
|
|
240
232
|
// Set when we get a cancel_stream op.
|
241
|
-
grpc_error_handle cancel_error_
|
233
|
+
grpc_error_handle cancel_error_;
|
242
234
|
};
|
243
235
|
|
244
236
|
//
|
@@ -267,28 +259,6 @@ const grpc_channel_filter ClientChannel::kFilterVtable = {
|
|
267
259
|
|
268
260
|
namespace {
|
269
261
|
|
270
|
-
// Channel arg pointer vtable for GRPC_ARG_CLIENT_CHANNEL.
|
271
|
-
void* ClientChannelArgCopy(void* p) { return p; }
|
272
|
-
void ClientChannelArgDestroy(void* /*p*/) {}
|
273
|
-
int ClientChannelArgCmp(void* p, void* q) { return QsortCompare(p, q); }
|
274
|
-
const grpc_arg_pointer_vtable kClientChannelArgPointerVtable = {
|
275
|
-
ClientChannelArgCopy, ClientChannelArgDestroy, ClientChannelArgCmp};
|
276
|
-
|
277
|
-
// Channel arg pointer vtable for GRPC_ARG_SERVICE_CONFIG_OBJ.
|
278
|
-
void* ServiceConfigObjArgCopy(void* p) {
|
279
|
-
auto* service_config = static_cast<ServiceConfig*>(p);
|
280
|
-
service_config->Ref().release();
|
281
|
-
return p;
|
282
|
-
}
|
283
|
-
void ServiceConfigObjArgDestroy(void* p) {
|
284
|
-
auto* service_config = static_cast<ServiceConfig*>(p);
|
285
|
-
service_config->Unref();
|
286
|
-
}
|
287
|
-
int ServiceConfigObjArgCmp(void* p, void* q) { return QsortCompare(p, q); }
|
288
|
-
const grpc_arg_pointer_vtable kServiceConfigObjArgPointerVtable = {
|
289
|
-
ServiceConfigObjArgCopy, ServiceConfigObjArgDestroy,
|
290
|
-
ServiceConfigObjArgCmp};
|
291
|
-
|
292
262
|
class DynamicTerminationFilter {
|
293
263
|
public:
|
294
264
|
class CallData;
|
@@ -300,7 +270,7 @@ class DynamicTerminationFilter {
|
|
300
270
|
GPR_ASSERT(args->is_last);
|
301
271
|
GPR_ASSERT(elem->filter == &kFilterVtable);
|
302
272
|
new (elem->channel_data) DynamicTerminationFilter(args->channel_args);
|
303
|
-
return
|
273
|
+
return absl::OkStatus();
|
304
274
|
}
|
305
275
|
|
306
276
|
static void Destroy(grpc_channel_element* elem) {
|
@@ -315,9 +285,8 @@ class DynamicTerminationFilter {
|
|
315
285
|
const grpc_channel_info* /*info*/) {}
|
316
286
|
|
317
287
|
private:
|
318
|
-
explicit DynamicTerminationFilter(const
|
319
|
-
: chand_(
|
320
|
-
args, GRPC_ARG_CLIENT_CHANNEL)) {}
|
288
|
+
explicit DynamicTerminationFilter(const ChannelArgs& args)
|
289
|
+
: chand_(args.GetObject<ClientChannel>()) {}
|
321
290
|
|
322
291
|
ClientChannel* chand_;
|
323
292
|
};
|
@@ -327,7 +296,7 @@ class DynamicTerminationFilter::CallData {
|
|
327
296
|
static grpc_error_handle Init(grpc_call_element* elem,
|
328
297
|
const grpc_call_element_args* args) {
|
329
298
|
new (elem->call_data) CallData(*args);
|
330
|
-
return
|
299
|
+
return absl::OkStatus();
|
331
300
|
}
|
332
301
|
|
333
302
|
static void Destroy(grpc_call_element* elem,
|
@@ -343,7 +312,7 @@ class DynamicTerminationFilter::CallData {
|
|
343
312
|
subchannel_call->SetAfterCallStackDestroy(then_schedule_closure);
|
344
313
|
} else {
|
345
314
|
// TODO(yashkt) : This can potentially be a Closure::Run
|
346
|
-
ExecCtx::Run(DEBUG_LOCATION, then_schedule_closure,
|
315
|
+
ExecCtx::Run(DEBUG_LOCATION, then_schedule_closure, absl::OkStatus());
|
347
316
|
}
|
348
317
|
}
|
349
318
|
|
@@ -378,14 +347,14 @@ class DynamicTerminationFilter::CallData {
|
|
378
347
|
|
379
348
|
private:
|
380
349
|
explicit CallData(const grpc_call_element_args& args)
|
381
|
-
: path_(
|
350
|
+
: path_(CSliceRef(args.path)),
|
382
351
|
deadline_(args.deadline),
|
383
352
|
arena_(args.arena),
|
384
353
|
owning_call_(args.call_stack),
|
385
354
|
call_combiner_(args.call_combiner),
|
386
355
|
call_context_(args.context) {}
|
387
356
|
|
388
|
-
~CallData() {
|
357
|
+
~CallData() { CSliceUnref(path_); }
|
389
358
|
|
390
359
|
grpc_slice path_; // Request path.
|
391
360
|
Timestamp deadline_;
|
@@ -507,21 +476,15 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
|
|
507
476
|
GRPC_CHANNEL_STACK_UNREF(chand_->owning_stack_, "SubchannelWrapper");
|
508
477
|
}
|
509
478
|
|
510
|
-
grpc_connectivity_state CheckConnectivityState() override {
|
511
|
-
return subchannel_->CheckConnectivityState(health_check_service_name_);
|
512
|
-
}
|
513
|
-
|
514
479
|
void WatchConnectivityState(
|
515
|
-
grpc_connectivity_state initial_state,
|
516
480
|
std::unique_ptr<ConnectivityStateWatcherInterface> watcher) override
|
517
481
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
518
482
|
auto& watcher_wrapper = watcher_map_[watcher.get()];
|
519
483
|
GPR_ASSERT(watcher_wrapper == nullptr);
|
520
484
|
watcher_wrapper = new WatcherWrapper(std::move(watcher),
|
521
|
-
Ref(DEBUG_LOCATION, "WatcherWrapper")
|
522
|
-
initial_state);
|
485
|
+
Ref(DEBUG_LOCATION, "WatcherWrapper"));
|
523
486
|
subchannel_->WatchConnectivityState(
|
524
|
-
|
487
|
+
health_check_service_name_,
|
525
488
|
RefCountedPtr<Subchannel::ConnectivityStateWatcherInterface>(
|
526
489
|
watcher_wrapper));
|
527
490
|
}
|
@@ -552,10 +515,6 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
|
|
552
515
|
data_watchers_.push_back(std::move(internal_watcher));
|
553
516
|
}
|
554
517
|
|
555
|
-
const grpc_channel_args* channel_args() override {
|
556
|
-
return subchannel_->channel_args();
|
557
|
-
}
|
558
|
-
|
559
518
|
void ThrottleKeepaliveTime(int new_keepalive_time) {
|
560
519
|
subchannel_->ThrottleKeepaliveTime(new_keepalive_time);
|
561
520
|
}
|
@@ -580,11 +539,8 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
|
|
580
539
|
WatcherWrapper(
|
581
540
|
std::unique_ptr<SubchannelInterface::ConnectivityStateWatcherInterface>
|
582
541
|
watcher,
|
583
|
-
RefCountedPtr<SubchannelWrapper> parent
|
584
|
-
|
585
|
-
: watcher_(std::move(watcher)),
|
586
|
-
parent_(std::move(parent)),
|
587
|
-
last_seen_state_(initial_state) {}
|
542
|
+
RefCountedPtr<SubchannelWrapper> parent)
|
543
|
+
: watcher_(std::move(watcher)), parent_(std::move(parent)) {}
|
588
544
|
|
589
545
|
~WatcherWrapper() override {
|
590
546
|
auto* parent = parent_.release(); // ref owned by lambda
|
@@ -596,7 +552,8 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
|
|
596
552
|
DEBUG_LOCATION);
|
597
553
|
}
|
598
554
|
|
599
|
-
void OnConnectivityStateChange(
|
555
|
+
void OnConnectivityStateChange(grpc_connectivity_state state,
|
556
|
+
const absl::Status& status) override {
|
600
557
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
601
558
|
gpr_log(GPR_INFO,
|
602
559
|
"chand=%p: connectivity change for subchannel wrapper %p "
|
@@ -605,9 +562,9 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
|
|
605
562
|
}
|
606
563
|
Ref().release(); // ref owned by lambda
|
607
564
|
parent_->chand_->work_serializer_->Run(
|
608
|
-
[this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(
|
565
|
+
[this, state, status]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(
|
609
566
|
*parent_->chand_->work_serializer_) {
|
610
|
-
ApplyUpdateInControlPlaneWorkSerializer();
|
567
|
+
ApplyUpdateInControlPlaneWorkSerializer(state, status);
|
611
568
|
Unref();
|
612
569
|
},
|
613
570
|
DEBUG_LOCATION);
|
@@ -621,28 +578,26 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
|
|
621
578
|
}
|
622
579
|
|
623
580
|
WatcherWrapper* MakeReplacement() {
|
624
|
-
auto* replacement =
|
625
|
-
new WatcherWrapper(std::move(watcher_), parent_, last_seen_state_);
|
581
|
+
auto* replacement = new WatcherWrapper(std::move(watcher_), parent_);
|
626
582
|
replacement_ = replacement;
|
627
583
|
return replacement;
|
628
584
|
}
|
629
585
|
|
630
|
-
grpc_connectivity_state last_seen_state() const { return last_seen_state_; }
|
631
|
-
|
632
586
|
private:
|
633
|
-
void ApplyUpdateInControlPlaneWorkSerializer(
|
587
|
+
void ApplyUpdateInControlPlaneWorkSerializer(grpc_connectivity_state state,
|
588
|
+
const absl::Status& status)
|
634
589
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(*parent_->chand_->work_serializer_) {
|
635
590
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
636
591
|
gpr_log(GPR_INFO,
|
637
592
|
"chand=%p: processing connectivity change in work serializer "
|
638
|
-
"for subchannel wrapper %p subchannel %p "
|
639
|
-
"
|
593
|
+
"for subchannel wrapper %p subchannel %p watcher=%p "
|
594
|
+
"state=%s status=%s",
|
640
595
|
parent_->chand_, parent_.get(), parent_->subchannel_.get(),
|
641
|
-
watcher_.get())
|
596
|
+
watcher_.get(), ConnectivityStateName(state),
|
597
|
+
status.ToString().c_str());
|
642
598
|
}
|
643
|
-
ConnectivityStateChange state_change = PopConnectivityStateChange();
|
644
599
|
absl::optional<absl::Cord> keepalive_throttling =
|
645
|
-
|
600
|
+
status.GetPayload(kKeepaliveThrottlingKey);
|
646
601
|
if (keepalive_throttling.has_value()) {
|
647
602
|
int new_keepalive_time = -1;
|
648
603
|
if (absl::SimpleAtoi(std::string(keepalive_throttling.value()),
|
@@ -670,15 +625,19 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
|
|
670
625
|
// Ignore update if the parent WatcherWrapper has been replaced
|
671
626
|
// since this callback was scheduled.
|
672
627
|
if (watcher_ != nullptr) {
|
673
|
-
|
674
|
-
|
628
|
+
// Propagate status only in state TF.
|
629
|
+
// We specifically want to avoid propagating the status for
|
630
|
+
// state IDLE that the real subchannel gave us only for the
|
631
|
+
// purpose of keepalive propagation.
|
632
|
+
watcher_->OnConnectivityStateChange(
|
633
|
+
state, state == GRPC_CHANNEL_TRANSIENT_FAILURE ? status
|
634
|
+
: absl::OkStatus());
|
675
635
|
}
|
676
636
|
}
|
677
637
|
|
678
638
|
std::unique_ptr<SubchannelInterface::ConnectivityStateWatcherInterface>
|
679
639
|
watcher_;
|
680
640
|
RefCountedPtr<SubchannelWrapper> parent_;
|
681
|
-
grpc_connectivity_state last_seen_state_;
|
682
641
|
WatcherWrapper* replacement_ = nullptr;
|
683
642
|
};
|
684
643
|
|
@@ -767,14 +726,18 @@ void ClientChannel::ExternalConnectivityWatcher::Notify(
|
|
767
726
|
chand_, on_complete_, /*cancel=*/false);
|
768
727
|
// Report new state to the user.
|
769
728
|
*state_ = state;
|
770
|
-
ExecCtx::Run(DEBUG_LOCATION, on_complete_,
|
729
|
+
ExecCtx::Run(DEBUG_LOCATION, on_complete_, absl::OkStatus());
|
771
730
|
// Hop back into the work_serializer to clean up.
|
772
731
|
// Not needed in state SHUTDOWN, because the tracker will
|
773
732
|
// automatically remove all watchers in that case.
|
733
|
+
// Note: The callback takes a ref in case the ref inside the state tracker
|
734
|
+
// gets removed before the callback runs via a SHUTDOWN notification.
|
774
735
|
if (state != GRPC_CHANNEL_SHUTDOWN) {
|
736
|
+
Ref(DEBUG_LOCATION, "RemoveWatcherLocked()").release();
|
775
737
|
chand_->work_serializer_->Run(
|
776
738
|
[this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
777
739
|
RemoveWatcherLocked();
|
740
|
+
Unref(DEBUG_LOCATION, "RemoveWatcherLocked()");
|
778
741
|
},
|
779
742
|
DEBUG_LOCATION);
|
780
743
|
}
|
@@ -786,17 +749,21 @@ void ClientChannel::ExternalConnectivityWatcher::Cancel() {
|
|
786
749
|
std::memory_order_relaxed)) {
|
787
750
|
return; // Already done.
|
788
751
|
}
|
789
|
-
ExecCtx::Run(DEBUG_LOCATION, on_complete_,
|
752
|
+
ExecCtx::Run(DEBUG_LOCATION, on_complete_, absl::CancelledError());
|
790
753
|
// Hop back into the work_serializer to clean up.
|
754
|
+
// Note: The callback takes a ref in case the ref inside the state tracker
|
755
|
+
// gets removed before the callback runs via a SHUTDOWN notification.
|
756
|
+
Ref(DEBUG_LOCATION, "RemoveWatcherLocked()").release();
|
791
757
|
chand_->work_serializer_->Run(
|
792
758
|
[this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
793
759
|
RemoveWatcherLocked();
|
760
|
+
Unref(DEBUG_LOCATION, "RemoveWatcherLocked()");
|
794
761
|
},
|
795
762
|
DEBUG_LOCATION);
|
796
763
|
}
|
797
764
|
|
798
765
|
void ClientChannel::ExternalConnectivityWatcher::AddWatcherLocked() {
|
799
|
-
Closure::Run(DEBUG_LOCATION, watcher_timer_init_,
|
766
|
+
Closure::Run(DEBUG_LOCATION, watcher_timer_init_, absl::OkStatus());
|
800
767
|
// Add new watcher. Pass the ref of the object from creation to OrphanablePtr.
|
801
768
|
chand_->state_tracker_.AddWatcher(
|
802
769
|
initial_state_, OrphanablePtr<ConnectivityStateWatcherInterface>(this));
|
@@ -886,67 +853,23 @@ class ClientChannel::ClientChannelControlHelper
|
|
886
853
|
}
|
887
854
|
|
888
855
|
RefCountedPtr<SubchannelInterface> CreateSubchannel(
|
889
|
-
ServerAddress address, const
|
856
|
+
ServerAddress address, const ChannelArgs& args) override
|
890
857
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
891
858
|
if (chand_->resolver_ == nullptr) return nullptr; // Shutting down.
|
892
859
|
// Determine health check service name.
|
893
860
|
absl::optional<std::string> health_check_service_name;
|
894
|
-
|
895
|
-
|
896
|
-
|
897
|
-
bool inhibit_health_checking = grpc_channel_args_find_bool(
|
898
|
-
&args, GRPC_ARG_INHIBIT_HEALTH_CHECKING, false);
|
899
|
-
if (!inhibit_health_checking) {
|
900
|
-
health_check_service_name = health_check_service_name_arg;
|
901
|
-
}
|
861
|
+
if (!args.GetBool(GRPC_ARG_INHIBIT_HEALTH_CHECKING).value_or(false)) {
|
862
|
+
health_check_service_name =
|
863
|
+
args.GetOwnedString(GRPC_ARG_HEALTH_CHECK_SERVICE_NAME);
|
902
864
|
}
|
903
865
|
// Construct channel args for subchannel.
|
904
|
-
|
905
|
-
|
906
|
-
|
907
|
-
GRPC_ARG_INHIBIT_HEALTH_CHECKING,
|
908
|
-
GRPC_ARG_CHANNELZ_CHANNEL_NODE,
|
909
|
-
};
|
910
|
-
// Add channel args needed for the subchannel.
|
911
|
-
absl::InlinedVector<grpc_arg, 2> args_to_add = {
|
912
|
-
SubchannelPoolInterface::CreateChannelArg(
|
913
|
-
chand_->subchannel_pool_.get()),
|
914
|
-
};
|
915
|
-
// Check if default authority arg is already set.
|
916
|
-
const char* default_authority =
|
917
|
-
grpc_channel_args_find_string(&args, GRPC_ARG_DEFAULT_AUTHORITY);
|
918
|
-
// Add args from subchannel address.
|
919
|
-
if (address.args() != nullptr) {
|
920
|
-
for (size_t j = 0; j < address.args()->num_args; ++j) {
|
921
|
-
grpc_arg& arg = address.args()->args[j];
|
922
|
-
if (strcmp(arg.key, GRPC_ARG_DEFAULT_AUTHORITY) == 0) {
|
923
|
-
// Don't add default authority arg from subchannel address if
|
924
|
-
// it's already set at the channel level -- the value from the
|
925
|
-
// application should take precedence over what is set by the
|
926
|
-
// resolver.
|
927
|
-
if (default_authority != nullptr) continue;
|
928
|
-
default_authority = arg.value.string;
|
929
|
-
}
|
930
|
-
args_to_add.emplace_back(arg);
|
931
|
-
}
|
932
|
-
}
|
933
|
-
// If we haven't already set the default authority arg, add it from
|
934
|
-
// the channel.
|
935
|
-
if (default_authority == nullptr) {
|
936
|
-
// Remove it, just in case it's actually present but is the wrong type.
|
937
|
-
args_to_remove.push_back(GRPC_ARG_DEFAULT_AUTHORITY);
|
938
|
-
args_to_add.push_back(grpc_channel_arg_string_create(
|
939
|
-
const_cast<char*>(GRPC_ARG_DEFAULT_AUTHORITY),
|
940
|
-
const_cast<char*>(chand_->default_authority_.c_str())));
|
941
|
-
}
|
942
|
-
grpc_channel_args* new_args = grpc_channel_args_copy_and_add_and_remove(
|
943
|
-
&args, args_to_remove.data(), args_to_remove.size(), args_to_add.data(),
|
944
|
-
args_to_add.size());
|
866
|
+
ChannelArgs subchannel_args = ClientChannel::MakeSubchannelArgs(
|
867
|
+
args, address.args(), chand_->subchannel_pool_,
|
868
|
+
chand_->default_authority_);
|
945
869
|
// Create subchannel.
|
946
870
|
RefCountedPtr<Subchannel> subchannel =
|
947
871
|
chand_->client_channel_factory_->CreateSubchannel(address.address(),
|
948
|
-
|
949
|
-
grpc_channel_args_destroy(new_args);
|
872
|
+
subchannel_args);
|
950
873
|
if (subchannel == nullptr) return nullptr;
|
951
874
|
// Make sure the subchannel has updated keepalive time.
|
952
875
|
subchannel->ThrottleKeepaliveTime(chand_->keepalive_time_);
|
@@ -955,13 +878,12 @@ class ClientChannel::ClientChannelControlHelper
|
|
955
878
|
chand_, std::move(subchannel), std::move(health_check_service_name));
|
956
879
|
}
|
957
880
|
|
958
|
-
void UpdateState(
|
959
|
-
|
960
|
-
|
961
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
881
|
+
void UpdateState(grpc_connectivity_state state, const absl::Status& status,
|
882
|
+
RefCountedPtr<LoadBalancingPolicy::SubchannelPicker> picker)
|
883
|
+
override ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
962
884
|
if (chand_->resolver_ == nullptr) return; // Shutting down.
|
963
885
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
964
|
-
const char* extra = chand_->disconnect_error_
|
886
|
+
const char* extra = chand_->disconnect_error_.ok()
|
965
887
|
? ""
|
966
888
|
: " (ignoring -- channel shutting down)";
|
967
889
|
gpr_log(GPR_INFO, "chand=%p: update: state=%s status=(%s) picker=%p%s",
|
@@ -969,7 +891,7 @@ class ClientChannel::ClientChannelControlHelper
|
|
969
891
|
picker.get(), extra);
|
970
892
|
}
|
971
893
|
// Do update only if not shutting down.
|
972
|
-
if (chand_->disconnect_error_
|
894
|
+
if (chand_->disconnect_error_.ok()) {
|
973
895
|
chand_->UpdateStateAndPickerLocked(state, status, "helper",
|
974
896
|
std::move(picker));
|
975
897
|
}
|
@@ -988,6 +910,10 @@ class ClientChannel::ClientChannelControlHelper
|
|
988
910
|
return chand_->default_authority_;
|
989
911
|
}
|
990
912
|
|
913
|
+
grpc_event_engine::experimental::EventEngine* GetEventEngine() override {
|
914
|
+
return chand_->owning_stack_->EventEngine();
|
915
|
+
}
|
916
|
+
|
991
917
|
void AddTraceEvent(TraceSeverity severity, absl::string_view message) override
|
992
918
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
993
919
|
if (chand_->resolver_ == nullptr) return; // Shutting down.
|
@@ -1024,7 +950,7 @@ grpc_error_handle ClientChannel::Init(grpc_channel_element* elem,
|
|
1024
950
|
grpc_channel_element_args* args) {
|
1025
951
|
GPR_ASSERT(args->is_last);
|
1026
952
|
GPR_ASSERT(elem->filter == &kFilterVtable);
|
1027
|
-
grpc_error_handle error
|
953
|
+
grpc_error_handle error;
|
1028
954
|
new (elem->channel_data) ClientChannel(args, &error);
|
1029
955
|
return error;
|
1030
956
|
}
|
@@ -1037,36 +963,28 @@ void ClientChannel::Destroy(grpc_channel_element* elem) {
|
|
1037
963
|
namespace {
|
1038
964
|
|
1039
965
|
RefCountedPtr<SubchannelPoolInterface> GetSubchannelPool(
|
1040
|
-
const
|
1041
|
-
|
1042
|
-
args, GRPC_ARG_USE_LOCAL_SUBCHANNEL_POOL, false);
|
1043
|
-
if (use_local_subchannel_pool) {
|
966
|
+
const ChannelArgs& args) {
|
967
|
+
if (args.GetBool(GRPC_ARG_USE_LOCAL_SUBCHANNEL_POOL).value_or(false)) {
|
1044
968
|
return MakeRefCounted<LocalSubchannelPool>();
|
1045
969
|
}
|
1046
970
|
return GlobalSubchannelPool::instance();
|
1047
971
|
}
|
1048
972
|
|
1049
|
-
channelz::ChannelNode* GetChannelzNode(const grpc_channel_args* args) {
|
1050
|
-
return grpc_channel_args_find_pointer<channelz::ChannelNode>(
|
1051
|
-
args, GRPC_ARG_CHANNELZ_CHANNEL_NODE);
|
1052
|
-
}
|
1053
|
-
|
1054
973
|
} // namespace
|
1055
974
|
|
1056
975
|
ClientChannel::ClientChannel(grpc_channel_element_args* args,
|
1057
976
|
grpc_error_handle* error)
|
1058
|
-
:
|
1059
|
-
|
977
|
+
: channel_args_(args->channel_args),
|
978
|
+
deadline_checking_enabled_(grpc_deadline_checking_enabled(channel_args_)),
|
1060
979
|
owning_stack_(args->channel_stack),
|
1061
|
-
client_channel_factory_(
|
1062
|
-
|
1063
|
-
channelz_node_(GetChannelzNode(args->channel_args)),
|
980
|
+
client_channel_factory_(channel_args_.GetObject<ClientChannelFactory>()),
|
981
|
+
channelz_node_(channel_args_.GetObject<channelz::ChannelNode>()),
|
1064
982
|
interested_parties_(grpc_pollset_set_create()),
|
1065
983
|
service_config_parser_index_(
|
1066
984
|
internal::ClientChannelServiceConfigParser::ParserIndex()),
|
1067
985
|
work_serializer_(std::make_shared<WorkSerializer>()),
|
1068
986
|
state_tracker_("client_channel", GRPC_CHANNEL_IDLE),
|
1069
|
-
subchannel_pool_(GetSubchannelPool(
|
987
|
+
subchannel_pool_(GetSubchannelPool(channel_args_)) {
|
1070
988
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1071
989
|
gpr_log(GPR_INFO, "chand=%p: creating client_channel for channel stack %p",
|
1072
990
|
this, owning_stack_);
|
@@ -1075,70 +993,66 @@ ClientChannel::ClientChannel(grpc_channel_element_args* args,
|
|
1075
993
|
grpc_client_channel_start_backup_polling(interested_parties_);
|
1076
994
|
// Check client channel factory.
|
1077
995
|
if (client_channel_factory_ == nullptr) {
|
1078
|
-
*error =
|
996
|
+
*error = GRPC_ERROR_CREATE(
|
1079
997
|
"Missing client channel factory in args for client channel filter");
|
1080
998
|
return;
|
1081
999
|
}
|
1082
1000
|
// Get default service config. If none is specified via the client API,
|
1083
1001
|
// we use an empty config.
|
1084
|
-
|
1085
|
-
|
1086
|
-
if (service_config_json
|
1087
|
-
*error =
|
1088
|
-
|
1089
|
-
ServiceConfigImpl::Create(
|
1090
|
-
if (
|
1091
|
-
|
1002
|
+
absl::optional<absl::string_view> service_config_json =
|
1003
|
+
channel_args_.GetString(GRPC_ARG_SERVICE_CONFIG);
|
1004
|
+
if (!service_config_json.has_value()) service_config_json = "{}";
|
1005
|
+
*error = absl::OkStatus();
|
1006
|
+
auto service_config =
|
1007
|
+
ServiceConfigImpl::Create(channel_args_, *service_config_json);
|
1008
|
+
if (!service_config.ok()) {
|
1009
|
+
*error = absl_status_to_grpc_error(service_config.status());
|
1092
1010
|
return;
|
1093
1011
|
}
|
1012
|
+
default_service_config_ = std::move(*service_config);
|
1094
1013
|
// Get URI to resolve, using proxy mapper if needed.
|
1095
|
-
|
1096
|
-
|
1097
|
-
if (server_uri
|
1098
|
-
*error =
|
1014
|
+
absl::optional<std::string> server_uri =
|
1015
|
+
channel_args_.GetOwnedString(GRPC_ARG_SERVER_URI);
|
1016
|
+
if (!server_uri.has_value()) {
|
1017
|
+
*error = GRPC_ERROR_CREATE(
|
1099
1018
|
"target URI channel arg missing or wrong type in client channel "
|
1100
1019
|
"filter");
|
1101
1020
|
return;
|
1102
1021
|
}
|
1103
|
-
uri_to_resolve_ =
|
1104
|
-
|
1105
|
-
|
1106
|
-
|
1107
|
-
&new_args);
|
1108
|
-
if (proxy_name != nullptr) {
|
1109
|
-
uri_to_resolve_ = proxy_name;
|
1110
|
-
gpr_free(proxy_name);
|
1111
|
-
}
|
1022
|
+
uri_to_resolve_ = CoreConfiguration::Get()
|
1023
|
+
.proxy_mapper_registry()
|
1024
|
+
.MapName(*server_uri, &channel_args_)
|
1025
|
+
.value_or(*server_uri);
|
1112
1026
|
// Make sure the URI to resolve is valid, so that we know that
|
1113
1027
|
// resolver creation will succeed later.
|
1114
1028
|
if (!CoreConfiguration::Get().resolver_registry().IsValidTarget(
|
1115
1029
|
uri_to_resolve_)) {
|
1116
|
-
*error =
|
1030
|
+
*error = GRPC_ERROR_CREATE(
|
1117
1031
|
absl::StrCat("the target uri is not valid: ", uri_to_resolve_));
|
1118
1032
|
return;
|
1119
1033
|
}
|
1120
1034
|
// Strip out service config channel arg, so that it doesn't affect
|
1121
1035
|
// subchannel uniqueness when the args flow down to that layer.
|
1122
|
-
|
1123
|
-
channel_args_ = grpc_channel_args_copy_and_remove(
|
1124
|
-
new_args != nullptr ? new_args : args->channel_args, &arg_to_remove, 1);
|
1125
|
-
grpc_channel_args_destroy(new_args);
|
1036
|
+
channel_args_ = channel_args_.Remove(GRPC_ARG_SERVICE_CONFIG);
|
1126
1037
|
// Set initial keepalive time.
|
1127
|
-
|
1128
|
-
|
1129
|
-
|
1038
|
+
auto keepalive_arg = channel_args_.GetInt(GRPC_ARG_KEEPALIVE_TIME_MS);
|
1039
|
+
if (keepalive_arg.has_value()) {
|
1040
|
+
keepalive_time_ = Clamp(*keepalive_arg, 1, INT_MAX);
|
1041
|
+
} else {
|
1042
|
+
keepalive_time_ = -1; // unset
|
1043
|
+
}
|
1130
1044
|
// Set default authority.
|
1131
|
-
|
1132
|
-
|
1133
|
-
if (default_authority
|
1045
|
+
absl::optional<std::string> default_authority =
|
1046
|
+
channel_args_.GetOwnedString(GRPC_ARG_DEFAULT_AUTHORITY);
|
1047
|
+
if (!default_authority.has_value()) {
|
1134
1048
|
default_authority_ =
|
1135
1049
|
CoreConfiguration::Get().resolver_registry().GetDefaultAuthority(
|
1136
|
-
server_uri);
|
1050
|
+
*server_uri);
|
1137
1051
|
} else {
|
1138
|
-
default_authority_ = default_authority;
|
1052
|
+
default_authority_ = std::move(*default_authority);
|
1139
1053
|
}
|
1140
1054
|
// Success.
|
1141
|
-
*error =
|
1055
|
+
*error = absl::OkStatus();
|
1142
1056
|
}
|
1143
1057
|
|
1144
1058
|
ClientChannel::~ClientChannel() {
|
@@ -1146,11 +1060,9 @@ ClientChannel::~ClientChannel() {
|
|
1146
1060
|
gpr_log(GPR_INFO, "chand=%p: destroying channel", this);
|
1147
1061
|
}
|
1148
1062
|
DestroyResolverAndLbPolicyLocked();
|
1149
|
-
grpc_channel_args_destroy(channel_args_);
|
1150
1063
|
// Stop backup polling.
|
1151
1064
|
grpc_client_channel_stop_backup_polling(interested_parties_);
|
1152
1065
|
grpc_pollset_set_destroy(interested_parties_);
|
1153
|
-
GRPC_ERROR_UNREF(disconnect_error_);
|
1154
1066
|
}
|
1155
1067
|
|
1156
1068
|
OrphanablePtr<ClientChannel::LoadBalancedCall>
|
@@ -1164,6 +1076,29 @@ ClientChannel::CreateLoadBalancedCall(
|
|
1164
1076
|
call_dispatch_controller, is_transparent_retry));
|
1165
1077
|
}
|
1166
1078
|
|
1079
|
+
ChannelArgs ClientChannel::MakeSubchannelArgs(
|
1080
|
+
const ChannelArgs& channel_args, const ChannelArgs& address_args,
|
1081
|
+
const RefCountedPtr<SubchannelPoolInterface>& subchannel_pool,
|
1082
|
+
const std::string& channel_default_authority) {
|
1083
|
+
// Note that we start with the channel-level args and then apply the
|
1084
|
+
// per-address args, so that if a value is present in both, the one
|
1085
|
+
// in the channel-level args is used. This is particularly important
|
1086
|
+
// for the GRPC_ARG_DEFAULT_AUTHORITY arg, which we want to allow
|
1087
|
+
// resolvers to set on a per-address basis only if the application
|
1088
|
+
// did not explicitly set it at the channel level.
|
1089
|
+
return channel_args.UnionWith(address_args)
|
1090
|
+
.SetObject(subchannel_pool)
|
1091
|
+
// If we haven't already set the default authority arg (i.e., it
|
1092
|
+
// was not explicitly set by the application nor overridden by
|
1093
|
+
// the resolver), add it from the channel's default.
|
1094
|
+
.SetIfUnset(GRPC_ARG_DEFAULT_AUTHORITY, channel_default_authority)
|
1095
|
+
// Remove channel args that should not affect subchannel
|
1096
|
+
// uniqueness.
|
1097
|
+
.Remove(GRPC_ARG_HEALTH_CHECK_SERVICE_NAME)
|
1098
|
+
.Remove(GRPC_ARG_INHIBIT_HEALTH_CHECKING)
|
1099
|
+
.Remove(GRPC_ARG_CHANNELZ_CHANNEL_NODE);
|
1100
|
+
}
|
1101
|
+
|
1167
1102
|
namespace {
|
1168
1103
|
|
1169
1104
|
RefCountedPtr<LoadBalancingPolicy::Config> ChooseLbPolicy(
|
@@ -1175,41 +1110,41 @@ RefCountedPtr<LoadBalancingPolicy::Config> ChooseLbPolicy(
|
|
1175
1110
|
}
|
1176
1111
|
// Try the deprecated LB policy name from the service config.
|
1177
1112
|
// If not, try the setting from channel args.
|
1178
|
-
|
1113
|
+
absl::optional<absl::string_view> policy_name;
|
1179
1114
|
if (!parsed_service_config->parsed_deprecated_lb_policy().empty()) {
|
1180
|
-
policy_name = parsed_service_config->parsed_deprecated_lb_policy()
|
1115
|
+
policy_name = parsed_service_config->parsed_deprecated_lb_policy();
|
1181
1116
|
} else {
|
1182
|
-
policy_name =
|
1183
|
-
GRPC_ARG_LB_POLICY_NAME);
|
1117
|
+
policy_name = resolver_result.args.GetString(GRPC_ARG_LB_POLICY_NAME);
|
1184
1118
|
bool requires_config = false;
|
1185
|
-
if (policy_name
|
1186
|
-
(!
|
1187
|
-
|
1119
|
+
if (policy_name.has_value() &&
|
1120
|
+
(!CoreConfiguration::Get()
|
1121
|
+
.lb_policy_registry()
|
1122
|
+
.LoadBalancingPolicyExists(*policy_name, &requires_config) ||
|
1188
1123
|
requires_config)) {
|
1189
1124
|
if (requires_config) {
|
1190
1125
|
gpr_log(GPR_ERROR,
|
1191
1126
|
"LB policy: %s passed through channel_args must not "
|
1192
1127
|
"require a config. Using pick_first instead.",
|
1193
|
-
policy_name);
|
1128
|
+
std::string(*policy_name).c_str());
|
1194
1129
|
} else {
|
1195
1130
|
gpr_log(GPR_ERROR,
|
1196
1131
|
"LB policy: %s passed through channel_args does not exist. "
|
1197
1132
|
"Using pick_first instead.",
|
1198
|
-
policy_name);
|
1133
|
+
std::string(*policy_name).c_str());
|
1199
1134
|
}
|
1200
1135
|
policy_name = "pick_first";
|
1201
1136
|
}
|
1202
1137
|
}
|
1203
1138
|
// Use pick_first if nothing was specified and we didn't select grpclb
|
1204
1139
|
// above.
|
1205
|
-
if (policy_name
|
1140
|
+
if (!policy_name.has_value()) policy_name = "pick_first";
|
1206
1141
|
// Now that we have the policy name, construct an empty config for it.
|
1207
1142
|
Json config_json = Json::Array{Json::Object{
|
1208
|
-
{policy_name, Json::Object{}},
|
1143
|
+
{std::string(*policy_name), Json::Object{}},
|
1209
1144
|
}};
|
1210
|
-
|
1211
|
-
|
1212
|
-
|
1145
|
+
auto lb_policy_config =
|
1146
|
+
CoreConfiguration::Get().lb_policy_registry().ParseLoadBalancingConfig(
|
1147
|
+
config_json);
|
1213
1148
|
// The policy name came from one of three places:
|
1214
1149
|
// - The deprecated loadBalancingPolicy field in the service config,
|
1215
1150
|
// in which case the code in ClientChannelServiceConfigParser
|
@@ -1219,9 +1154,8 @@ RefCountedPtr<LoadBalancingPolicy::Config> ChooseLbPolicy(
|
|
1219
1154
|
// - A channel arg, in which case we check that the specified policy exists
|
1220
1155
|
// and accepts an empty config. If not, we revert to using pick_first
|
1221
1156
|
// lb_policy
|
1222
|
-
GPR_ASSERT(lb_policy_config
|
1223
|
-
|
1224
|
-
return lb_policy_config;
|
1157
|
+
GPR_ASSERT(lb_policy_config.ok());
|
1158
|
+
return std::move(*lb_policy_config);
|
1225
1159
|
}
|
1226
1160
|
|
1227
1161
|
} // namespace
|
@@ -1232,6 +1166,9 @@ void ClientChannel::OnResolverResultChangedLocked(Resolver::Result result) {
|
|
1232
1166
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1233
1167
|
gpr_log(GPR_INFO, "chand=%p: got resolver result", this);
|
1234
1168
|
}
|
1169
|
+
// Grab resolver result health callback.
|
1170
|
+
auto resolver_callback = std::move(result.result_health_callback);
|
1171
|
+
absl::Status resolver_result_status;
|
1235
1172
|
// We only want to trace the address resolution in the follow cases:
|
1236
1173
|
// (a) Address resolution resulted in service config change.
|
1237
1174
|
// (b) Address resolution that causes number of backends to go from
|
@@ -1241,7 +1178,7 @@ void ClientChannel::OnResolverResultChangedLocked(Resolver::Result result) {
|
|
1241
1178
|
// (d) Address resolution that causes a new LB policy to be created.
|
1242
1179
|
//
|
1243
1180
|
// We track a list of strings to eventually be concatenated and traced.
|
1244
|
-
|
1181
|
+
std::vector<const char*> trace_strings;
|
1245
1182
|
const bool resolution_contains_addresses =
|
1246
1183
|
result.addresses.ok() && !result.addresses->empty();
|
1247
1184
|
if (!resolution_contains_addresses &&
|
@@ -1283,6 +1220,8 @@ void ClientChannel::OnResolverResultChangedLocked(Resolver::Result result) {
|
|
1283
1220
|
// TRANSIENT_FAILURE.
|
1284
1221
|
OnResolverErrorLocked(result.service_config.status());
|
1285
1222
|
trace_strings.push_back("no valid service config");
|
1223
|
+
resolver_result_status =
|
1224
|
+
absl::UnavailableError("no valid service config");
|
1286
1225
|
}
|
1287
1226
|
} else if (*result.service_config == nullptr) {
|
1288
1227
|
// Resolver did not return any service config.
|
@@ -1296,7 +1235,7 @@ void ClientChannel::OnResolverResultChangedLocked(Resolver::Result result) {
|
|
1296
1235
|
} else {
|
1297
1236
|
// Use ServiceConfig and ConfigSelector returned by resolver.
|
1298
1237
|
service_config = std::move(*result.service_config);
|
1299
|
-
config_selector =
|
1238
|
+
config_selector = result.args.GetObjectRef<ConfigSelector>();
|
1300
1239
|
}
|
1301
1240
|
// Note: The only case in which service_config is null here is if the resolver
|
1302
1241
|
// returned a service config error and we don't have a previous service
|
@@ -1320,14 +1259,14 @@ void ClientChannel::OnResolverResultChangedLocked(Resolver::Result result) {
|
|
1320
1259
|
// If either has changed, apply the global parameters now.
|
1321
1260
|
if (service_config_changed || config_selector_changed) {
|
1322
1261
|
// Update service config in control plane.
|
1323
|
-
UpdateServiceConfigInControlPlaneLocked(
|
1324
|
-
|
1325
|
-
|
1262
|
+
UpdateServiceConfigInControlPlaneLocked(
|
1263
|
+
std::move(service_config), std::move(config_selector),
|
1264
|
+
std::string(lb_policy_config->name()));
|
1326
1265
|
} else if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1327
1266
|
gpr_log(GPR_INFO, "chand=%p: service config not changed", this);
|
1328
1267
|
}
|
1329
1268
|
// Create or update LB policy, as needed.
|
1330
|
-
CreateOrUpdateLbPolicyLocked(
|
1269
|
+
resolver_result_status = CreateOrUpdateLbPolicyLocked(
|
1331
1270
|
std::move(lb_policy_config),
|
1332
1271
|
parsed_service_config->health_check_service_name(), std::move(result));
|
1333
1272
|
if (service_config_changed || config_selector_changed) {
|
@@ -1341,6 +1280,10 @@ void ClientChannel::OnResolverResultChangedLocked(Resolver::Result result) {
|
|
1341
1280
|
trace_strings.push_back("Service config changed");
|
1342
1281
|
}
|
1343
1282
|
}
|
1283
|
+
// Invoke resolver callback if needed.
|
1284
|
+
if (resolver_callback != nullptr) {
|
1285
|
+
resolver_callback(std::move(resolver_result_status));
|
1286
|
+
}
|
1344
1287
|
// Add channel trace event.
|
1345
1288
|
if (!trace_strings.empty()) {
|
1346
1289
|
std::string message =
|
@@ -1362,31 +1305,30 @@ void ClientChannel::OnResolverErrorLocked(absl::Status status) {
|
|
1362
1305
|
// result, then we continue to let it set the connectivity state.
|
1363
1306
|
// Otherwise, we go into TRANSIENT_FAILURE.
|
1364
1307
|
if (lb_policy_ == nullptr) {
|
1365
|
-
grpc_error_handle error = absl_status_to_grpc_error(status);
|
1366
1308
|
{
|
1367
1309
|
MutexLock lock(&resolution_mu_);
|
1368
1310
|
// Update resolver transient failure.
|
1369
|
-
resolver_transient_failure_error_ =
|
1311
|
+
resolver_transient_failure_error_ =
|
1312
|
+
MaybeRewriteIllegalStatusCode(status, "resolver");
|
1370
1313
|
// Process calls that were queued waiting for the resolver result.
|
1371
1314
|
for (ResolverQueuedCall* call = resolver_queued_calls_; call != nullptr;
|
1372
1315
|
call = call->next) {
|
1373
1316
|
grpc_call_element* elem = call->elem;
|
1374
1317
|
CallData* calld = static_cast<CallData*>(elem->call_data);
|
1375
|
-
grpc_error_handle error
|
1318
|
+
grpc_error_handle error;
|
1376
1319
|
if (calld->CheckResolutionLocked(elem, &error)) {
|
1377
1320
|
calld->AsyncResolutionDone(elem, error);
|
1378
1321
|
}
|
1379
1322
|
}
|
1380
1323
|
}
|
1381
|
-
GRPC_ERROR_UNREF(error);
|
1382
1324
|
// Update connectivity state.
|
1383
1325
|
UpdateStateAndPickerLocked(
|
1384
1326
|
GRPC_CHANNEL_TRANSIENT_FAILURE, status, "resolver failure",
|
1385
|
-
|
1327
|
+
MakeRefCounted<LoadBalancingPolicy::TransientFailurePicker>(status));
|
1386
1328
|
}
|
1387
1329
|
}
|
1388
1330
|
|
1389
|
-
|
1331
|
+
absl::Status ClientChannel::CreateOrUpdateLbPolicyLocked(
|
1390
1332
|
RefCountedPtr<LoadBalancingPolicy::Config> lb_policy_config,
|
1391
1333
|
const absl::optional<std::string>& health_check_service_name,
|
1392
1334
|
Resolver::Result result) {
|
@@ -1395,39 +1337,35 @@ void ClientChannel::CreateOrUpdateLbPolicyLocked(
|
|
1395
1337
|
update_args.addresses = std::move(result.addresses);
|
1396
1338
|
update_args.config = std::move(lb_policy_config);
|
1397
1339
|
update_args.resolution_note = std::move(result.resolution_note);
|
1398
|
-
// Add health check service name to channel args.
|
1399
|
-
absl::InlinedVector<grpc_arg, 1> args_to_add;
|
1400
|
-
if (health_check_service_name.has_value()) {
|
1401
|
-
args_to_add.push_back(grpc_channel_arg_string_create(
|
1402
|
-
const_cast<char*>(GRPC_ARG_HEALTH_CHECK_SERVICE_NAME),
|
1403
|
-
const_cast<char*>(health_check_service_name->c_str())));
|
1404
|
-
}
|
1405
1340
|
// Remove the config selector from channel args so that we're not holding
|
1406
1341
|
// unnecessary refs that cause it to be destroyed somewhere other than in the
|
1407
1342
|
// WorkSerializer.
|
1408
|
-
|
1409
|
-
|
1410
|
-
|
1343
|
+
update_args.args = result.args.Remove(GRPC_ARG_CONFIG_SELECTOR);
|
1344
|
+
// Add health check service name to channel args.
|
1345
|
+
if (health_check_service_name.has_value()) {
|
1346
|
+
update_args.args = update_args.args.Set(GRPC_ARG_HEALTH_CHECK_SERVICE_NAME,
|
1347
|
+
*health_check_service_name);
|
1348
|
+
}
|
1411
1349
|
// Create policy if needed.
|
1412
1350
|
if (lb_policy_ == nullptr) {
|
1413
|
-
lb_policy_ = CreateLbPolicyLocked(
|
1351
|
+
lb_policy_ = CreateLbPolicyLocked(update_args.args);
|
1414
1352
|
}
|
1415
1353
|
// Update the policy.
|
1416
1354
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1417
1355
|
gpr_log(GPR_INFO, "chand=%p: Updating child policy %p", this,
|
1418
1356
|
lb_policy_.get());
|
1419
1357
|
}
|
1420
|
-
lb_policy_->UpdateLocked(std::move(update_args));
|
1358
|
+
return lb_policy_->UpdateLocked(std::move(update_args));
|
1421
1359
|
}
|
1422
1360
|
|
1423
1361
|
// Creates a new LB policy.
|
1424
1362
|
OrphanablePtr<LoadBalancingPolicy> ClientChannel::CreateLbPolicyLocked(
|
1425
|
-
const
|
1363
|
+
const ChannelArgs& args) {
|
1426
1364
|
LoadBalancingPolicy::Args lb_policy_args;
|
1427
1365
|
lb_policy_args.work_serializer = work_serializer_;
|
1428
1366
|
lb_policy_args.channel_control_helper =
|
1429
|
-
|
1430
|
-
lb_policy_args.args =
|
1367
|
+
std::make_unique<ClientChannelControlHelper>(this);
|
1368
|
+
lb_policy_args.args = args;
|
1431
1369
|
OrphanablePtr<LoadBalancingPolicy> lb_policy =
|
1432
1370
|
MakeOrphanable<ChildPolicyHandler>(std::move(lb_policy_args),
|
1433
1371
|
&grpc_client_channel_trace);
|
@@ -1469,8 +1407,7 @@ void ClientChannel::UpdateServiceConfigInControlPlaneLocked(
|
|
1469
1407
|
RefCountedPtr<ConfigSelector> config_selector, std::string lb_policy_name) {
|
1470
1408
|
std::string service_config_json(service_config->json_string());
|
1471
1409
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1472
|
-
gpr_log(GPR_INFO,
|
1473
|
-
"chand=%p: resolver returned updated service config: \"%s\"", this,
|
1410
|
+
gpr_log(GPR_INFO, "chand=%p: using service config: \"%s\"", this,
|
1474
1411
|
service_config_json.c_str());
|
1475
1412
|
}
|
1476
1413
|
// Save service config.
|
@@ -1502,19 +1439,11 @@ void ClientChannel::UpdateServiceConfigInDataPlaneLocked() {
|
|
1502
1439
|
config_selector =
|
1503
1440
|
MakeRefCounted<DefaultConfigSelector>(saved_service_config_);
|
1504
1441
|
}
|
1505
|
-
|
1506
|
-
|
1507
|
-
const_cast<char*>(GRPC_ARG_CLIENT_CHANNEL), this,
|
1508
|
-
&kClientChannelArgPointerVtable),
|
1509
|
-
grpc_channel_arg_pointer_create(
|
1510
|
-
const_cast<char*>(GRPC_ARG_SERVICE_CONFIG_OBJ), service_config.get(),
|
1511
|
-
&kServiceConfigObjArgPointerVtable),
|
1512
|
-
};
|
1513
|
-
grpc_channel_args* new_args = grpc_channel_args_copy_and_add(
|
1514
|
-
channel_args_, args_to_add.data(), args_to_add.size());
|
1515
|
-
new_args = config_selector->ModifyChannelArgs(new_args);
|
1442
|
+
ChannelArgs new_args =
|
1443
|
+
channel_args_.SetObject(this).SetObject(service_config);
|
1516
1444
|
bool enable_retries =
|
1517
|
-
|
1445
|
+
!new_args.WantMinimalStack() &&
|
1446
|
+
new_args.GetBool(GRPC_ARG_ENABLE_RETRIES).value_or(true);
|
1518
1447
|
// Construct dynamic filter stack.
|
1519
1448
|
std::vector<const grpc_channel_filter*> filters =
|
1520
1449
|
config_selector->GetFilters();
|
@@ -1526,7 +1455,6 @@ void ClientChannel::UpdateServiceConfigInDataPlaneLocked() {
|
|
1526
1455
|
RefCountedPtr<DynamicFilters> dynamic_filters =
|
1527
1456
|
DynamicFilters::Create(new_args, std::move(filters));
|
1528
1457
|
GPR_ASSERT(dynamic_filters != nullptr);
|
1529
|
-
grpc_channel_args_destroy(new_args);
|
1530
1458
|
// Grab data plane lock to update service config.
|
1531
1459
|
//
|
1532
1460
|
// We defer unreffing the old values (and deallocating memory) until
|
@@ -1554,7 +1482,7 @@ void ClientChannel::UpdateServiceConfigInDataPlaneLocked() {
|
|
1554
1482
|
ExecCtx::Get()->InvalidateNow();
|
1555
1483
|
grpc_call_element* elem = call->elem;
|
1556
1484
|
CallData* calld = static_cast<CallData*>(elem->call_data);
|
1557
|
-
grpc_error_handle error
|
1485
|
+
grpc_error_handle error;
|
1558
1486
|
if (calld->CheckResolutionLocked(elem, &error)) {
|
1559
1487
|
calld->AsyncResolutionDone(elem, error);
|
1560
1488
|
}
|
@@ -1570,13 +1498,13 @@ void ClientChannel::CreateResolverLocked() {
|
|
1570
1498
|
}
|
1571
1499
|
resolver_ = CoreConfiguration::Get().resolver_registry().CreateResolver(
|
1572
1500
|
uri_to_resolve_.c_str(), channel_args_, interested_parties_,
|
1573
|
-
work_serializer_,
|
1501
|
+
work_serializer_, std::make_unique<ResolverResultHandler>(this));
|
1574
1502
|
// Since the validity of the args was checked when the channel was created,
|
1575
1503
|
// CreateResolver() must return a non-null result.
|
1576
1504
|
GPR_ASSERT(resolver_ != nullptr);
|
1577
1505
|
UpdateStateAndPickerLocked(
|
1578
1506
|
GRPC_CHANNEL_CONNECTING, absl::Status(), "started resolving",
|
1579
|
-
|
1507
|
+
MakeRefCounted<LoadBalancingPolicy::QueuePicker>(nullptr));
|
1580
1508
|
resolver_->StartLocked();
|
1581
1509
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1582
1510
|
gpr_log(GPR_INFO, "chand=%p: created resolver=%p", this, resolver_.get());
|
@@ -1605,7 +1533,7 @@ void ClientChannel::DestroyResolverAndLbPolicyLocked() {
|
|
1605
1533
|
void ClientChannel::UpdateStateAndPickerLocked(
|
1606
1534
|
grpc_connectivity_state state, const absl::Status& status,
|
1607
1535
|
const char* reason,
|
1608
|
-
|
1536
|
+
RefCountedPtr<LoadBalancingPolicy::SubchannelPicker> picker) {
|
1609
1537
|
// Special case for IDLE and SHUTDOWN states.
|
1610
1538
|
if (picker == nullptr || state == GRPC_CHANNEL_SHUTDOWN) {
|
1611
1539
|
saved_service_config_.reset();
|
@@ -1652,7 +1580,7 @@ void ClientChannel::UpdateStateAndPickerLocked(
|
|
1652
1580
|
// on the stale value, which results in the timer firing too early. To
|
1653
1581
|
// avoid this, we invalidate the cached value for each call we process.
|
1654
1582
|
ExecCtx::Get()->InvalidateNow();
|
1655
|
-
grpc_error_handle error
|
1583
|
+
grpc_error_handle error;
|
1656
1584
|
if (call->lb_call->PickSubchannelLocked(&error)) {
|
1657
1585
|
call->lb_call->AsyncPickDone(error);
|
1658
1586
|
}
|
@@ -1696,7 +1624,7 @@ T HandlePickResult(
|
|
1696
1624
|
|
1697
1625
|
grpc_error_handle ClientChannel::DoPingLocked(grpc_transport_op* op) {
|
1698
1626
|
if (state_tracker_.state() != GRPC_CHANNEL_READY) {
|
1699
|
-
return
|
1627
|
+
return GRPC_ERROR_CREATE("channel not connected");
|
1700
1628
|
}
|
1701
1629
|
LoadBalancingPolicy::PickResult result;
|
1702
1630
|
{
|
@@ -1712,13 +1640,16 @@ grpc_error_handle ClientChannel::DoPingLocked(grpc_transport_op* op) {
|
|
1712
1640
|
complete_pick->subchannel.get());
|
1713
1641
|
RefCountedPtr<ConnectedSubchannel> connected_subchannel =
|
1714
1642
|
subchannel->connected_subchannel();
|
1643
|
+
if (connected_subchannel == nullptr) {
|
1644
|
+
return GRPC_ERROR_CREATE("LB pick for ping not connected");
|
1645
|
+
}
|
1715
1646
|
connected_subchannel->Ping(op->send_ping.on_initiate,
|
1716
1647
|
op->send_ping.on_ack);
|
1717
|
-
return
|
1648
|
+
return absl::OkStatus();
|
1718
1649
|
},
|
1719
1650
|
// Queue pick.
|
1720
1651
|
[](LoadBalancingPolicy::PickResult::Queue* /*queue_pick*/) {
|
1721
|
-
return
|
1652
|
+
return GRPC_ERROR_CREATE("LB picker queued call");
|
1722
1653
|
},
|
1723
1654
|
// Fail pick.
|
1724
1655
|
[](LoadBalancingPolicy::PickResult::Fail* fail_pick) {
|
@@ -1742,9 +1673,8 @@ void ClientChannel::StartTransportOpLocked(grpc_transport_op* op) {
|
|
1742
1673
|
// Ping.
|
1743
1674
|
if (op->send_ping.on_initiate != nullptr || op->send_ping.on_ack != nullptr) {
|
1744
1675
|
grpc_error_handle error = DoPingLocked(op);
|
1745
|
-
if (error
|
1746
|
-
ExecCtx::Run(DEBUG_LOCATION, op->send_ping.on_initiate,
|
1747
|
-
GRPC_ERROR_REF(error));
|
1676
|
+
if (!error.ok()) {
|
1677
|
+
ExecCtx::Run(DEBUG_LOCATION, op->send_ping.on_initiate, error);
|
1748
1678
|
ExecCtx::Run(DEBUG_LOCATION, op->send_ping.on_ack, error);
|
1749
1679
|
}
|
1750
1680
|
op->bind_pollset = nullptr;
|
@@ -1758,34 +1688,34 @@ void ClientChannel::StartTransportOpLocked(grpc_transport_op* op) {
|
|
1758
1688
|
}
|
1759
1689
|
}
|
1760
1690
|
// Disconnect or enter IDLE.
|
1761
|
-
if (op->disconnect_with_error
|
1691
|
+
if (!op->disconnect_with_error.ok()) {
|
1762
1692
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1763
1693
|
gpr_log(GPR_INFO, "chand=%p: disconnect_with_error: %s", this,
|
1764
|
-
|
1694
|
+
StatusToString(op->disconnect_with_error).c_str());
|
1765
1695
|
}
|
1766
1696
|
DestroyResolverAndLbPolicyLocked();
|
1767
1697
|
intptr_t value;
|
1768
1698
|
if (grpc_error_get_int(op->disconnect_with_error,
|
1769
|
-
|
1699
|
+
StatusIntProperty::ChannelConnectivityState,
|
1700
|
+
&value) &&
|
1770
1701
|
static_cast<grpc_connectivity_state>(value) == GRPC_CHANNEL_IDLE) {
|
1771
|
-
if (disconnect_error_
|
1702
|
+
if (disconnect_error_.ok()) {
|
1772
1703
|
// Enter IDLE state.
|
1773
1704
|
UpdateStateAndPickerLocked(GRPC_CHANNEL_IDLE, absl::Status(),
|
1774
1705
|
"channel entering IDLE", nullptr);
|
1775
1706
|
}
|
1776
|
-
GRPC_ERROR_UNREF(op->disconnect_with_error);
|
1777
1707
|
} else {
|
1778
1708
|
// Disconnect.
|
1779
|
-
GPR_ASSERT(disconnect_error_
|
1709
|
+
GPR_ASSERT(disconnect_error_.ok());
|
1780
1710
|
disconnect_error_ = op->disconnect_with_error;
|
1781
1711
|
UpdateStateAndPickerLocked(
|
1782
1712
|
GRPC_CHANNEL_SHUTDOWN, absl::Status(), "shutdown from API",
|
1783
|
-
|
1713
|
+
MakeRefCounted<LoadBalancingPolicy::TransientFailurePicker>(
|
1784
1714
|
grpc_error_to_absl_status(op->disconnect_with_error)));
|
1785
1715
|
}
|
1786
1716
|
}
|
1787
1717
|
GRPC_CHANNEL_STACK_UNREF(owning_stack_, "start_transport_op");
|
1788
|
-
ExecCtx::Run(DEBUG_LOCATION, op->on_consumed,
|
1718
|
+
ExecCtx::Run(DEBUG_LOCATION, op->on_consumed, absl::OkStatus());
|
1789
1719
|
}
|
1790
1720
|
|
1791
1721
|
void ClientChannel::StartTransportOp(grpc_channel_element* elem,
|
@@ -1889,12 +1819,9 @@ ClientChannel::CallData::CallData(grpc_call_element* elem,
|
|
1889
1819
|
GPR_LIKELY(chand.deadline_checking_enabled_)
|
1890
1820
|
? args.deadline
|
1891
1821
|
: Timestamp::InfFuture()),
|
1892
|
-
path_(
|
1822
|
+
path_(CSliceRef(args.path)),
|
1893
1823
|
call_start_time_(args.start_time),
|
1894
1824
|
deadline_(args.deadline),
|
1895
|
-
arena_(args.arena),
|
1896
|
-
owning_call_(args.call_stack),
|
1897
|
-
call_combiner_(args.call_combiner),
|
1898
1825
|
call_context_(args.context) {
|
1899
1826
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
1900
1827
|
gpr_log(GPR_INFO, "chand=%p calld=%p: created call", &chand, this);
|
@@ -1902,8 +1829,7 @@ ClientChannel::CallData::CallData(grpc_call_element* elem,
|
|
1902
1829
|
}
|
1903
1830
|
|
1904
1831
|
ClientChannel::CallData::~CallData() {
|
1905
|
-
|
1906
|
-
GRPC_ERROR_UNREF(cancel_error_);
|
1832
|
+
CSliceUnref(path_);
|
1907
1833
|
// Make sure there are no remaining pending batches.
|
1908
1834
|
for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
|
1909
1835
|
GPR_ASSERT(pending_batches_[i] == nullptr);
|
@@ -1914,7 +1840,7 @@ grpc_error_handle ClientChannel::CallData::Init(
|
|
1914
1840
|
grpc_call_element* elem, const grpc_call_element_args* args) {
|
1915
1841
|
ClientChannel* chand = static_cast<ClientChannel*>(elem->channel_data);
|
1916
1842
|
new (elem->call_data) CallData(elem, *chand, *args);
|
1917
|
-
return
|
1843
|
+
return absl::OkStatus();
|
1918
1844
|
}
|
1919
1845
|
|
1920
1846
|
void ClientChannel::CallData::Destroy(
|
@@ -1928,13 +1854,12 @@ void ClientChannel::CallData::Destroy(
|
|
1928
1854
|
dynamic_call->SetAfterCallStackDestroy(then_schedule_closure);
|
1929
1855
|
} else {
|
1930
1856
|
// TODO(yashkt) : This can potentially be a Closure::Run
|
1931
|
-
ExecCtx::Run(DEBUG_LOCATION, then_schedule_closure,
|
1857
|
+
ExecCtx::Run(DEBUG_LOCATION, then_schedule_closure, absl::OkStatus());
|
1932
1858
|
}
|
1933
1859
|
}
|
1934
1860
|
|
1935
1861
|
void ClientChannel::CallData::StartTransportStreamOpBatch(
|
1936
1862
|
grpc_call_element* elem, grpc_transport_stream_op_batch* batch) {
|
1937
|
-
GPR_TIMER_SCOPE("cc_start_transport_stream_op_batch", 0);
|
1938
1863
|
CallData* calld = static_cast<CallData*>(elem->call_data);
|
1939
1864
|
ClientChannel* chand = static_cast<ClientChannel*>(elem->channel_data);
|
1940
1865
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace) &&
|
@@ -1943,7 +1868,8 @@ void ClientChannel::CallData::StartTransportStreamOpBatch(
|
|
1943
1868
|
calld, grpc_transport_stream_op_batch_string(batch).c_str());
|
1944
1869
|
}
|
1945
1870
|
if (GPR_LIKELY(chand->deadline_checking_enabled_)) {
|
1946
|
-
grpc_deadline_state_client_start_transport_stream_op_batch(
|
1871
|
+
grpc_deadline_state_client_start_transport_stream_op_batch(
|
1872
|
+
&calld->deadline_state_, batch);
|
1947
1873
|
}
|
1948
1874
|
// Intercept recv_trailing_metadata to call CallDispatchController::Commit(),
|
1949
1875
|
// in case we wind up failing the call before we get down to the retry
|
@@ -1971,15 +1897,14 @@ void ClientChannel::CallData::StartTransportStreamOpBatch(
|
|
1971
1897
|
// We do not yet have a dynamic call.
|
1972
1898
|
//
|
1973
1899
|
// If we've previously been cancelled, immediately fail any new batches.
|
1974
|
-
if (GPR_UNLIKELY(calld->cancel_error_
|
1900
|
+
if (GPR_UNLIKELY(!calld->cancel_error_.ok())) {
|
1975
1901
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
1976
1902
|
gpr_log(GPR_INFO, "chand=%p calld=%p: failing batch with error: %s",
|
1977
|
-
chand, calld,
|
1978
|
-
grpc_error_std_string(calld->cancel_error_).c_str());
|
1903
|
+
chand, calld, StatusToString(calld->cancel_error_).c_str());
|
1979
1904
|
}
|
1980
1905
|
// Note: This will release the call combiner.
|
1981
1906
|
grpc_transport_stream_op_batch_finish_with_failure(
|
1982
|
-
batch,
|
1907
|
+
batch, calld->cancel_error_, calld->call_combiner());
|
1983
1908
|
return;
|
1984
1909
|
}
|
1985
1910
|
// Handle cancellation.
|
@@ -1989,19 +1914,16 @@ void ClientChannel::CallData::StartTransportStreamOpBatch(
|
|
1989
1914
|
// cancelled before any batches are passed down (e.g., if the deadline
|
1990
1915
|
// is in the past when the call starts), we can return the right
|
1991
1916
|
// error to the caller when the first batch does get passed down.
|
1992
|
-
|
1993
|
-
calld->cancel_error_ =
|
1994
|
-
GRPC_ERROR_REF(batch->payload->cancel_stream.cancel_error);
|
1917
|
+
calld->cancel_error_ = batch->payload->cancel_stream.cancel_error;
|
1995
1918
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
1996
1919
|
gpr_log(GPR_INFO, "chand=%p calld=%p: recording cancel_error=%s", chand,
|
1997
|
-
calld,
|
1920
|
+
calld, StatusToString(calld->cancel_error_).c_str());
|
1998
1921
|
}
|
1999
1922
|
// Fail all pending batches.
|
2000
|
-
calld->PendingBatchesFail(elem,
|
2001
|
-
NoYieldCallCombiner);
|
1923
|
+
calld->PendingBatchesFail(elem, calld->cancel_error_, NoYieldCallCombiner);
|
2002
1924
|
// Note: This will release the call combiner.
|
2003
1925
|
grpc_transport_stream_op_batch_finish_with_failure(
|
2004
|
-
batch,
|
1926
|
+
batch, calld->cancel_error_, calld->call_combiner());
|
2005
1927
|
return;
|
2006
1928
|
}
|
2007
1929
|
// Add the batch to the pending list.
|
@@ -2016,7 +1938,7 @@ void ClientChannel::CallData::StartTransportStreamOpBatch(
|
|
2016
1938
|
"config",
|
2017
1939
|
chand, calld);
|
2018
1940
|
}
|
2019
|
-
CheckResolution(elem,
|
1941
|
+
CheckResolution(elem, absl::OkStatus());
|
2020
1942
|
} else {
|
2021
1943
|
// For all other batches, release the call combiner.
|
2022
1944
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
@@ -2024,7 +1946,7 @@ void ClientChannel::CallData::StartTransportStreamOpBatch(
|
|
2024
1946
|
"chand=%p calld=%p: saved batch, yielding call combiner", chand,
|
2025
1947
|
calld);
|
2026
1948
|
}
|
2027
|
-
GRPC_CALL_COMBINER_STOP(calld->
|
1949
|
+
GRPC_CALL_COMBINER_STOP(calld->call_combiner(),
|
2028
1950
|
"batch does not include send_initial_metadata");
|
2029
1951
|
}
|
2030
1952
|
}
|
@@ -2075,24 +1997,23 @@ void ClientChannel::CallData::FailPendingBatchInCallCombiner(
|
|
2075
1997
|
static_cast<grpc_transport_stream_op_batch*>(arg);
|
2076
1998
|
CallData* calld = static_cast<CallData*>(batch->handler_private.extra_arg);
|
2077
1999
|
// Note: This will release the call combiner.
|
2078
|
-
grpc_transport_stream_op_batch_finish_with_failure(
|
2079
|
-
|
2000
|
+
grpc_transport_stream_op_batch_finish_with_failure(batch, error,
|
2001
|
+
calld->call_combiner());
|
2080
2002
|
}
|
2081
2003
|
|
2082
2004
|
// This is called via the call combiner, so access to calld is synchronized.
|
2083
2005
|
void ClientChannel::CallData::PendingBatchesFail(
|
2084
2006
|
grpc_call_element* elem, grpc_error_handle error,
|
2085
2007
|
YieldCallCombinerPredicate yield_call_combiner_predicate) {
|
2086
|
-
GPR_ASSERT(error
|
2008
|
+
GPR_ASSERT(!error.ok());
|
2087
2009
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
2088
2010
|
size_t num_batches = 0;
|
2089
2011
|
for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
|
2090
2012
|
if (pending_batches_[i] != nullptr) ++num_batches;
|
2091
2013
|
}
|
2092
|
-
gpr_log(
|
2093
|
-
|
2094
|
-
|
2095
|
-
grpc_error_std_string(error).c_str());
|
2014
|
+
gpr_log(
|
2015
|
+
GPR_INFO, "chand=%p calld=%p: failing %" PRIuPTR " pending batches: %s",
|
2016
|
+
elem->channel_data, this, num_batches, StatusToString(error).c_str());
|
2096
2017
|
}
|
2097
2018
|
CallCombinerClosureList closures;
|
2098
2019
|
for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
|
@@ -2102,17 +2023,16 @@ void ClientChannel::CallData::PendingBatchesFail(
|
|
2102
2023
|
GRPC_CLOSURE_INIT(&batch->handler_private.closure,
|
2103
2024
|
FailPendingBatchInCallCombiner, batch,
|
2104
2025
|
grpc_schedule_on_exec_ctx);
|
2105
|
-
closures.Add(&batch->handler_private.closure,
|
2026
|
+
closures.Add(&batch->handler_private.closure, error,
|
2106
2027
|
"PendingBatchesFail");
|
2107
2028
|
batch = nullptr;
|
2108
2029
|
}
|
2109
2030
|
}
|
2110
2031
|
if (yield_call_combiner_predicate(closures)) {
|
2111
|
-
closures.RunClosures(
|
2032
|
+
closures.RunClosures(call_combiner());
|
2112
2033
|
} else {
|
2113
|
-
closures.RunClosuresWithoutYielding(
|
2034
|
+
closures.RunClosuresWithoutYielding(call_combiner());
|
2114
2035
|
}
|
2115
|
-
GRPC_ERROR_UNREF(error);
|
2116
2036
|
}
|
2117
2037
|
|
2118
2038
|
// This is called via the call combiner, so access to calld is synchronized.
|
@@ -2148,13 +2068,13 @@ void ClientChannel::CallData::PendingBatchesResume(grpc_call_element* elem) {
|
|
2148
2068
|
batch->handler_private.extra_arg = elem;
|
2149
2069
|
GRPC_CLOSURE_INIT(&batch->handler_private.closure,
|
2150
2070
|
ResumePendingBatchInCallCombiner, batch, nullptr);
|
2151
|
-
closures.Add(&batch->handler_private.closure,
|
2071
|
+
closures.Add(&batch->handler_private.closure, absl::OkStatus(),
|
2152
2072
|
"resuming pending batch from client channel call");
|
2153
2073
|
batch = nullptr;
|
2154
2074
|
}
|
2155
2075
|
}
|
2156
2076
|
// Note: This will release the call combiner.
|
2157
|
-
closures.RunClosures(
|
2077
|
+
closures.RunClosures(call_combiner());
|
2158
2078
|
}
|
2159
2079
|
|
2160
2080
|
//
|
@@ -2167,10 +2087,10 @@ class ClientChannel::CallData::ResolverQueuedCallCanceller {
|
|
2167
2087
|
public:
|
2168
2088
|
explicit ResolverQueuedCallCanceller(grpc_call_element* elem) : elem_(elem) {
|
2169
2089
|
auto* calld = static_cast<CallData*>(elem->call_data);
|
2170
|
-
GRPC_CALL_STACK_REF(calld->
|
2090
|
+
GRPC_CALL_STACK_REF(calld->owning_call(), "ResolverQueuedCallCanceller");
|
2171
2091
|
GRPC_CLOSURE_INIT(&closure_, &CancelLocked, this,
|
2172
2092
|
grpc_schedule_on_exec_ctx);
|
2173
|
-
calld->
|
2093
|
+
calld->call_combiner()->SetNotifyOnCancel(&closure_);
|
2174
2094
|
}
|
2175
2095
|
|
2176
2096
|
private:
|
@@ -2184,18 +2104,18 @@ class ClientChannel::CallData::ResolverQueuedCallCanceller {
|
|
2184
2104
|
gpr_log(GPR_INFO,
|
2185
2105
|
"chand=%p calld=%p: cancelling resolver queued pick: "
|
2186
2106
|
"error=%s self=%p calld->resolver_pick_canceller=%p",
|
2187
|
-
chand, calld,
|
2107
|
+
chand, calld, StatusToString(error).c_str(), self,
|
2188
2108
|
calld->resolver_call_canceller_);
|
2189
2109
|
}
|
2190
|
-
if (calld->resolver_call_canceller_ == self && error
|
2110
|
+
if (calld->resolver_call_canceller_ == self && !error.ok()) {
|
2191
2111
|
// Remove pick from list of queued picks.
|
2192
2112
|
calld->MaybeRemoveCallFromResolverQueuedCallsLocked(self->elem_);
|
2193
2113
|
// Fail pending batches on the call.
|
2194
|
-
calld->PendingBatchesFail(self->elem_,
|
2114
|
+
calld->PendingBatchesFail(self->elem_, error,
|
2195
2115
|
YieldCallCombinerIfPendingBatchesFound);
|
2196
2116
|
}
|
2197
2117
|
}
|
2198
|
-
GRPC_CALL_STACK_UNREF(calld->
|
2118
|
+
GRPC_CALL_STACK_UNREF(calld->owning_call(), "ResolvingQueuedCallCanceller");
|
2199
2119
|
delete self;
|
2200
2120
|
}
|
2201
2121
|
|
@@ -2216,6 +2136,12 @@ void ClientChannel::CallData::MaybeRemoveCallFromResolverQueuedCallsLocked(
|
|
2216
2136
|
queued_pending_resolver_result_ = false;
|
2217
2137
|
// Lame the call combiner canceller.
|
2218
2138
|
resolver_call_canceller_ = nullptr;
|
2139
|
+
// Add trace annotation
|
2140
|
+
auto* call_tracer =
|
2141
|
+
static_cast<CallTracer*>(call_context_[GRPC_CONTEXT_CALL_TRACER].value);
|
2142
|
+
if (call_tracer != nullptr) {
|
2143
|
+
call_tracer->RecordAnnotation("Delayed name resolution complete.");
|
2144
|
+
}
|
2219
2145
|
}
|
2220
2146
|
|
2221
2147
|
void ClientChannel::CallData::MaybeAddCallToResolverQueuedCallsLocked(
|
@@ -2243,19 +2169,22 @@ grpc_error_handle ClientChannel::CallData::ApplyServiceConfigToCallLocked(
|
|
2243
2169
|
ConfigSelector* config_selector = chand->config_selector_.get();
|
2244
2170
|
if (config_selector != nullptr) {
|
2245
2171
|
// Use the ConfigSelector to determine the config for the call.
|
2246
|
-
|
2247
|
-
config_selector->GetCallConfig({&path_, initial_metadata,
|
2248
|
-
if (call_config.
|
2172
|
+
auto call_config =
|
2173
|
+
config_selector->GetCallConfig({&path_, initial_metadata, arena()});
|
2174
|
+
if (!call_config.ok()) {
|
2175
|
+
return absl_status_to_grpc_error(MaybeRewriteIllegalStatusCode(
|
2176
|
+
call_config.status(), "ConfigSelector"));
|
2177
|
+
}
|
2249
2178
|
// Create a ClientChannelServiceConfigCallData for the call. This stores
|
2250
2179
|
// a ref to the ServiceConfig and caches the right set of parsed configs
|
2251
2180
|
// to use for the call. The ClientChannelServiceConfigCallData will store
|
2252
2181
|
// itself in the call context, so that it can be accessed by filters
|
2253
2182
|
// below us in the stack, and it will be cleaned up when the call ends.
|
2254
2183
|
auto* service_config_call_data =
|
2255
|
-
|
2256
|
-
std::move(call_config
|
2257
|
-
std::move(call_config
|
2258
|
-
call_config
|
2184
|
+
arena()->New<ClientChannelServiceConfigCallData>(
|
2185
|
+
std::move(call_config->service_config), call_config->method_configs,
|
2186
|
+
std::move(call_config->call_attributes),
|
2187
|
+
call_config->call_dispatch_controller, call_context_);
|
2259
2188
|
// Apply our own method params to the call.
|
2260
2189
|
auto* method_params = static_cast<ClientChannelMethodParsedConfig*>(
|
2261
2190
|
service_config_call_data->GetMethodParsedConfig(
|
@@ -2270,28 +2199,24 @@ grpc_error_handle ClientChannel::CallData::ApplyServiceConfigToCallLocked(
|
|
2270
2199
|
method_params->timeout();
|
2271
2200
|
if (per_method_deadline < deadline_) {
|
2272
2201
|
deadline_ = per_method_deadline;
|
2273
|
-
grpc_deadline_state_reset(
|
2202
|
+
grpc_deadline_state_reset(&deadline_state_, deadline_);
|
2274
2203
|
}
|
2275
2204
|
}
|
2276
2205
|
// If the service config set wait_for_ready and the application
|
2277
2206
|
// did not explicitly set it, use the value from the service config.
|
2278
|
-
|
2279
|
-
|
2280
|
-
|
2207
|
+
auto* wait_for_ready =
|
2208
|
+
pending_batches_[0]
|
2209
|
+
->payload->send_initial_metadata.send_initial_metadata
|
2210
|
+
->GetOrCreatePointer(WaitForReady());
|
2281
2211
|
if (method_params->wait_for_ready().has_value() &&
|
2282
|
-
!
|
2283
|
-
|
2284
|
-
if (method_params->wait_for_ready().value()) {
|
2285
|
-
*send_initial_metadata_flags |= GRPC_INITIAL_METADATA_WAIT_FOR_READY;
|
2286
|
-
} else {
|
2287
|
-
*send_initial_metadata_flags &= ~GRPC_INITIAL_METADATA_WAIT_FOR_READY;
|
2288
|
-
}
|
2212
|
+
!wait_for_ready->explicitly_set) {
|
2213
|
+
wait_for_ready->value = method_params->wait_for_ready().value();
|
2289
2214
|
}
|
2290
2215
|
}
|
2291
2216
|
// Set the dynamic filter stack.
|
2292
2217
|
dynamic_filters_ = chand->dynamic_filters_;
|
2293
2218
|
}
|
2294
|
-
return
|
2219
|
+
return absl::OkStatus();
|
2295
2220
|
}
|
2296
2221
|
|
2297
2222
|
void ClientChannel::CallData::
|
@@ -2307,7 +2232,7 @@ void ClientChannel::CallData::
|
|
2307
2232
|
gpr_log(GPR_INFO,
|
2308
2233
|
"chand=%p calld=%p: got recv_trailing_metadata_ready: error=%s "
|
2309
2234
|
"service_config_call_data=%p",
|
2310
|
-
chand, calld,
|
2235
|
+
chand, calld, StatusToString(error).c_str(),
|
2311
2236
|
service_config_call_data);
|
2312
2237
|
}
|
2313
2238
|
if (service_config_call_data != nullptr) {
|
@@ -2315,7 +2240,7 @@ void ClientChannel::CallData::
|
|
2315
2240
|
}
|
2316
2241
|
// Chain to original callback.
|
2317
2242
|
Closure::Run(DEBUG_LOCATION, calld->original_recv_trailing_metadata_ready_,
|
2318
|
-
|
2243
|
+
error);
|
2319
2244
|
}
|
2320
2245
|
|
2321
2246
|
void ClientChannel::CallData::AsyncResolutionDone(grpc_call_element* elem,
|
@@ -2330,13 +2255,13 @@ void ClientChannel::CallData::ResolutionDone(void* arg,
|
|
2330
2255
|
grpc_call_element* elem = static_cast<grpc_call_element*>(arg);
|
2331
2256
|
ClientChannel* chand = static_cast<ClientChannel*>(elem->channel_data);
|
2332
2257
|
CallData* calld = static_cast<CallData*>(elem->call_data);
|
2333
|
-
if (error
|
2258
|
+
if (!error.ok()) {
|
2334
2259
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
2335
2260
|
gpr_log(GPR_INFO,
|
2336
2261
|
"chand=%p calld=%p: error applying config to call: error=%s",
|
2337
|
-
chand, calld,
|
2262
|
+
chand, calld, StatusToString(error).c_str());
|
2338
2263
|
}
|
2339
|
-
calld->PendingBatchesFail(elem,
|
2264
|
+
calld->PendingBatchesFail(elem, error, YieldCallCombiner);
|
2340
2265
|
return;
|
2341
2266
|
}
|
2342
2267
|
calld->CreateDynamicCall(elem);
|
@@ -2354,7 +2279,6 @@ void ClientChannel::CallData::CheckResolution(void* arg,
|
|
2354
2279
|
}
|
2355
2280
|
if (resolution_complete) {
|
2356
2281
|
ResolutionDone(elem, error);
|
2357
|
-
GRPC_ERROR_UNREF(error);
|
2358
2282
|
}
|
2359
2283
|
}
|
2360
2284
|
|
@@ -2386,23 +2310,21 @@ bool ClientChannel::CallData::CheckResolutionLocked(grpc_call_element* elem,
|
|
2386
2310
|
DEBUG_LOCATION);
|
2387
2311
|
},
|
2388
2312
|
chand, nullptr),
|
2389
|
-
|
2313
|
+
absl::OkStatus());
|
2390
2314
|
}
|
2391
2315
|
// Get send_initial_metadata batch and flags.
|
2392
2316
|
auto& send_initial_metadata =
|
2393
2317
|
pending_batches_[0]->payload->send_initial_metadata;
|
2394
2318
|
grpc_metadata_batch* initial_metadata_batch =
|
2395
2319
|
send_initial_metadata.send_initial_metadata;
|
2396
|
-
const uint32_t send_initial_metadata_flags =
|
2397
|
-
send_initial_metadata.send_initial_metadata_flags;
|
2398
2320
|
// If we don't yet have a resolver result, we need to queue the call
|
2399
2321
|
// until we get one.
|
2400
2322
|
if (GPR_UNLIKELY(!chand->received_service_config_data_)) {
|
2401
2323
|
// If the resolver returned transient failure before returning the
|
2402
2324
|
// first service config, fail any non-wait_for_ready calls.
|
2403
2325
|
absl::Status resolver_error = chand->resolver_transient_failure_error_;
|
2404
|
-
if (!resolver_error.ok() &&
|
2405
|
-
|
2326
|
+
if (!resolver_error.ok() &&
|
2327
|
+
!initial_metadata_batch->GetOrCreatePointer(WaitForReady())->value) {
|
2406
2328
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
2407
2329
|
gpr_log(GPR_INFO, "chand=%p calld=%p: resolution failed, failing call",
|
2408
2330
|
chand, this);
|
@@ -2437,10 +2359,10 @@ void ClientChannel::CallData::CreateDynamicCall(grpc_call_element* elem) {
|
|
2437
2359
|
path_,
|
2438
2360
|
call_start_time_,
|
2439
2361
|
deadline_,
|
2440
|
-
|
2362
|
+
arena(),
|
2441
2363
|
call_context_,
|
2442
|
-
|
2443
|
-
grpc_error_handle error
|
2364
|
+
call_combiner()};
|
2365
|
+
grpc_error_handle error;
|
2444
2366
|
DynamicFilters* channel_stack = args.channel_stack.get();
|
2445
2367
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
2446
2368
|
gpr_log(
|
@@ -2449,11 +2371,11 @@ void ClientChannel::CallData::CreateDynamicCall(grpc_call_element* elem) {
|
|
2449
2371
|
chand, this, channel_stack);
|
2450
2372
|
}
|
2451
2373
|
dynamic_call_ = channel_stack->CreateCall(std::move(args), &error);
|
2452
|
-
if (error
|
2374
|
+
if (!error.ok()) {
|
2453
2375
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
2454
2376
|
gpr_log(GPR_INFO,
|
2455
2377
|
"chand=%p calld=%p: failed to create dynamic call: error=%s",
|
2456
|
-
chand, this,
|
2378
|
+
chand, this, StatusToString(error).c_str());
|
2457
2379
|
}
|
2458
2380
|
PendingBatchesFail(elem, error, YieldCallCombiner);
|
2459
2381
|
return;
|
@@ -2540,25 +2462,16 @@ class ClientChannel::LoadBalancedCall::Metadata
|
|
2540
2462
|
// ClientChannel::LoadBalancedCall::LbCallState
|
2541
2463
|
//
|
2542
2464
|
|
2543
|
-
|
2544
|
-
|
2545
|
-
|
2546
|
-
|
2547
|
-
|
2548
|
-
|
2549
|
-
|
2550
|
-
|
2551
|
-
|
2552
|
-
|
2553
|
-
auto& call_attributes = service_config_call_data->call_attributes();
|
2554
|
-
auto it = call_attributes.find(key);
|
2555
|
-
if (it == call_attributes.end()) return absl::string_view();
|
2556
|
-
return it->second;
|
2557
|
-
}
|
2558
|
-
|
2559
|
-
private:
|
2560
|
-
LoadBalancedCall* lb_call_;
|
2561
|
-
};
|
2465
|
+
absl::string_view
|
2466
|
+
ClientChannel::LoadBalancedCall::LbCallState::GetCallAttribute(
|
2467
|
+
UniqueTypeName type) {
|
2468
|
+
auto* service_config_call_data = static_cast<ServiceConfigCallData*>(
|
2469
|
+
lb_call_->call_context_[GRPC_CONTEXT_SERVICE_CONFIG_CALL_DATA].value);
|
2470
|
+
auto& call_attributes = service_config_call_data->call_attributes();
|
2471
|
+
auto it = call_attributes.find(type);
|
2472
|
+
if (it == call_attributes.end()) return absl::string_view();
|
2473
|
+
return it->second;
|
2474
|
+
}
|
2562
2475
|
|
2563
2476
|
//
|
2564
2477
|
// ClientChannel::LoadBalancedCall::BackendMetricAccessor
|
@@ -2629,7 +2542,7 @@ ClientChannel::LoadBalancedCall::LoadBalancedCall(
|
|
2629
2542
|
? "LoadBalancedCall"
|
2630
2543
|
: nullptr),
|
2631
2544
|
chand_(chand),
|
2632
|
-
path_(
|
2545
|
+
path_(CSliceRef(args.path)),
|
2633
2546
|
deadline_(args.deadline),
|
2634
2547
|
arena_(args.arena),
|
2635
2548
|
owning_call_(args.call_stack),
|
@@ -2646,8 +2559,6 @@ ClientChannel::LoadBalancedCall::LoadBalancedCall(
|
|
2646
2559
|
}
|
2647
2560
|
|
2648
2561
|
ClientChannel::LoadBalancedCall::~LoadBalancedCall() {
|
2649
|
-
GRPC_ERROR_UNREF(cancel_error_);
|
2650
|
-
GRPC_ERROR_UNREF(failure_error_);
|
2651
2562
|
if (backend_metric_data_ != nullptr) {
|
2652
2563
|
backend_metric_data_->BackendMetricData::~BackendMetricData();
|
2653
2564
|
}
|
@@ -2657,7 +2568,7 @@ ClientChannel::LoadBalancedCall::~LoadBalancedCall() {
|
|
2657
2568
|
}
|
2658
2569
|
if (on_call_destruction_complete_ != nullptr) {
|
2659
2570
|
ExecCtx::Run(DEBUG_LOCATION, on_call_destruction_complete_,
|
2660
|
-
|
2571
|
+
absl::OkStatus());
|
2661
2572
|
}
|
2662
2573
|
}
|
2663
2574
|
|
@@ -2710,16 +2621,15 @@ void ClientChannel::LoadBalancedCall::FailPendingBatchInCallCombiner(
|
|
2710
2621
|
static_cast<grpc_transport_stream_op_batch*>(arg);
|
2711
2622
|
auto* self = static_cast<LoadBalancedCall*>(batch->handler_private.extra_arg);
|
2712
2623
|
// Note: This will release the call combiner.
|
2713
|
-
grpc_transport_stream_op_batch_finish_with_failure(
|
2714
|
-
|
2624
|
+
grpc_transport_stream_op_batch_finish_with_failure(batch, error,
|
2625
|
+
self->call_combiner_);
|
2715
2626
|
}
|
2716
2627
|
|
2717
2628
|
// This is called via the call combiner, so access to calld is synchronized.
|
2718
2629
|
void ClientChannel::LoadBalancedCall::PendingBatchesFail(
|
2719
2630
|
grpc_error_handle error,
|
2720
2631
|
YieldCallCombinerPredicate yield_call_combiner_predicate) {
|
2721
|
-
GPR_ASSERT(error
|
2722
|
-
GRPC_ERROR_UNREF(failure_error_);
|
2632
|
+
GPR_ASSERT(!error.ok());
|
2723
2633
|
failure_error_ = error;
|
2724
2634
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2725
2635
|
size_t num_batches = 0;
|
@@ -2728,7 +2638,7 @@ void ClientChannel::LoadBalancedCall::PendingBatchesFail(
|
|
2728
2638
|
}
|
2729
2639
|
gpr_log(GPR_INFO,
|
2730
2640
|
"chand=%p lb_call=%p: failing %" PRIuPTR " pending batches: %s",
|
2731
|
-
chand_, this, num_batches,
|
2641
|
+
chand_, this, num_batches, StatusToString(error).c_str());
|
2732
2642
|
}
|
2733
2643
|
CallCombinerClosureList closures;
|
2734
2644
|
for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
|
@@ -2738,7 +2648,7 @@ void ClientChannel::LoadBalancedCall::PendingBatchesFail(
|
|
2738
2648
|
GRPC_CLOSURE_INIT(&batch->handler_private.closure,
|
2739
2649
|
FailPendingBatchInCallCombiner, batch,
|
2740
2650
|
grpc_schedule_on_exec_ctx);
|
2741
|
-
closures.Add(&batch->handler_private.closure,
|
2651
|
+
closures.Add(&batch->handler_private.closure, error,
|
2742
2652
|
"PendingBatchesFail");
|
2743
2653
|
batch = nullptr;
|
2744
2654
|
}
|
@@ -2781,7 +2691,7 @@ void ClientChannel::LoadBalancedCall::PendingBatchesResume() {
|
|
2781
2691
|
GRPC_CLOSURE_INIT(&batch->handler_private.closure,
|
2782
2692
|
ResumePendingBatchInCallCombiner, batch,
|
2783
2693
|
grpc_schedule_on_exec_ctx);
|
2784
|
-
closures.Add(&batch->handler_private.closure,
|
2694
|
+
closures.Add(&batch->handler_private.closure, absl::OkStatus(),
|
2785
2695
|
"resuming pending batch from LB call");
|
2786
2696
|
batch = nullptr;
|
2787
2697
|
}
|
@@ -2805,12 +2715,11 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
|
|
2805
2715
|
// Record send ops in tracer.
|
2806
2716
|
if (batch->cancel_stream) {
|
2807
2717
|
call_attempt_tracer_->RecordCancel(
|
2808
|
-
|
2718
|
+
batch->payload->cancel_stream.cancel_error);
|
2809
2719
|
}
|
2810
2720
|
if (batch->send_initial_metadata) {
|
2811
2721
|
call_attempt_tracer_->RecordSendInitialMetadata(
|
2812
|
-
batch->payload->send_initial_metadata.send_initial_metadata
|
2813
|
-
batch->payload->send_initial_metadata.send_initial_metadata_flags);
|
2722
|
+
batch->payload->send_initial_metadata.send_initial_metadata);
|
2814
2723
|
peer_string_ = batch->payload->send_initial_metadata.peer_string;
|
2815
2724
|
original_send_initial_metadata_on_complete_ = batch->on_complete;
|
2816
2725
|
GRPC_CLOSURE_INIT(&send_initial_metadata_on_complete_,
|
@@ -2874,14 +2783,14 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
|
|
2874
2783
|
// We do not yet have a subchannel call.
|
2875
2784
|
//
|
2876
2785
|
// If we've previously been cancelled, immediately fail any new batches.
|
2877
|
-
if (GPR_UNLIKELY(cancel_error_
|
2786
|
+
if (GPR_UNLIKELY(!cancel_error_.ok())) {
|
2878
2787
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2879
2788
|
gpr_log(GPR_INFO, "chand=%p lb_call=%p: failing batch with error: %s",
|
2880
|
-
chand_, this,
|
2789
|
+
chand_, this, StatusToString(cancel_error_).c_str());
|
2881
2790
|
}
|
2882
2791
|
// Note: This will release the call combiner.
|
2883
|
-
grpc_transport_stream_op_batch_finish_with_failure(
|
2884
|
-
|
2792
|
+
grpc_transport_stream_op_batch_finish_with_failure(batch, cancel_error_,
|
2793
|
+
call_combiner_);
|
2885
2794
|
return;
|
2886
2795
|
}
|
2887
2796
|
// Handle cancellation.
|
@@ -2891,17 +2800,16 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
|
|
2891
2800
|
// cancelled before any batches are passed down (e.g., if the deadline
|
2892
2801
|
// is in the past when the call starts), we can return the right
|
2893
2802
|
// error to the caller when the first batch does get passed down.
|
2894
|
-
|
2895
|
-
cancel_error_ = GRPC_ERROR_REF(batch->payload->cancel_stream.cancel_error);
|
2803
|
+
cancel_error_ = batch->payload->cancel_stream.cancel_error;
|
2896
2804
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2897
2805
|
gpr_log(GPR_INFO, "chand=%p lb_call=%p: recording cancel_error=%s",
|
2898
|
-
chand_, this,
|
2806
|
+
chand_, this, StatusToString(cancel_error_).c_str());
|
2899
2807
|
}
|
2900
2808
|
// Fail all pending batches.
|
2901
|
-
PendingBatchesFail(
|
2809
|
+
PendingBatchesFail(cancel_error_, NoYieldCallCombiner);
|
2902
2810
|
// Note: This will release the call combiner.
|
2903
|
-
grpc_transport_stream_op_batch_finish_with_failure(
|
2904
|
-
|
2811
|
+
grpc_transport_stream_op_batch_finish_with_failure(batch, cancel_error_,
|
2812
|
+
call_combiner_);
|
2905
2813
|
return;
|
2906
2814
|
}
|
2907
2815
|
// Add the batch to the pending list.
|
@@ -2914,7 +2822,7 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
|
|
2914
2822
|
"chand=%p lb_call=%p: grabbing data plane mutex to perform pick",
|
2915
2823
|
chand_, this);
|
2916
2824
|
}
|
2917
|
-
PickSubchannel(this,
|
2825
|
+
PickSubchannel(this, absl::OkStatus());
|
2918
2826
|
} else {
|
2919
2827
|
// For all other batches, release the call combiner.
|
2920
2828
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
@@ -2934,13 +2842,12 @@ void ClientChannel::LoadBalancedCall::SendInitialMetadataOnComplete(
|
|
2934
2842
|
gpr_log(GPR_INFO,
|
2935
2843
|
"chand=%p lb_call=%p: got on_complete for send_initial_metadata: "
|
2936
2844
|
"error=%s",
|
2937
|
-
self->chand_, self,
|
2845
|
+
self->chand_, self, StatusToString(error).c_str());
|
2938
2846
|
}
|
2939
2847
|
self->call_attempt_tracer_->RecordOnDoneSendInitialMetadata(
|
2940
2848
|
self->peer_string_);
|
2941
2849
|
Closure::Run(DEBUG_LOCATION,
|
2942
|
-
self->original_send_initial_metadata_on_complete_,
|
2943
|
-
GRPC_ERROR_REF(error));
|
2850
|
+
self->original_send_initial_metadata_on_complete_, error);
|
2944
2851
|
}
|
2945
2852
|
|
2946
2853
|
void ClientChannel::LoadBalancedCall::RecvInitialMetadataReady(
|
@@ -2949,15 +2856,15 @@ void ClientChannel::LoadBalancedCall::RecvInitialMetadataReady(
|
|
2949
2856
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2950
2857
|
gpr_log(GPR_INFO,
|
2951
2858
|
"chand=%p lb_call=%p: got recv_initial_metadata_ready: error=%s",
|
2952
|
-
self->chand_, self,
|
2859
|
+
self->chand_, self, StatusToString(error).c_str());
|
2953
2860
|
}
|
2954
|
-
if (error
|
2861
|
+
if (error.ok()) {
|
2955
2862
|
// recv_initial_metadata_flags is not populated for clients
|
2956
2863
|
self->call_attempt_tracer_->RecordReceivedInitialMetadata(
|
2957
2864
|
self->recv_initial_metadata_, 0 /* recv_initial_metadata_flags */);
|
2958
2865
|
}
|
2959
2866
|
Closure::Run(DEBUG_LOCATION, self->original_recv_initial_metadata_ready_,
|
2960
|
-
|
2867
|
+
error);
|
2961
2868
|
}
|
2962
2869
|
|
2963
2870
|
void ClientChannel::LoadBalancedCall::RecvMessageReady(
|
@@ -2965,13 +2872,12 @@ void ClientChannel::LoadBalancedCall::RecvMessageReady(
|
|
2965
2872
|
auto* self = static_cast<LoadBalancedCall*>(arg);
|
2966
2873
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2967
2874
|
gpr_log(GPR_INFO, "chand=%p lb_call=%p: got recv_message_ready: error=%s",
|
2968
|
-
self->chand_, self,
|
2875
|
+
self->chand_, self, StatusToString(error).c_str());
|
2969
2876
|
}
|
2970
|
-
if (
|
2877
|
+
if (self->recv_message_->has_value()) {
|
2971
2878
|
self->call_attempt_tracer_->RecordReceivedMessage(**self->recv_message_);
|
2972
2879
|
}
|
2973
|
-
Closure::Run(DEBUG_LOCATION, self->original_recv_message_ready_,
|
2974
|
-
GRPC_ERROR_REF(error));
|
2880
|
+
Closure::Run(DEBUG_LOCATION, self->original_recv_message_ready_, error);
|
2975
2881
|
}
|
2976
2882
|
|
2977
2883
|
void ClientChannel::LoadBalancedCall::RecvTrailingMetadataReady(
|
@@ -2982,16 +2888,16 @@ void ClientChannel::LoadBalancedCall::RecvTrailingMetadataReady(
|
|
2982
2888
|
"chand=%p lb_call=%p: got recv_trailing_metadata_ready: error=%s "
|
2983
2889
|
"call_attempt_tracer_=%p lb_subchannel_call_tracker_=%p "
|
2984
2890
|
"failure_error_=%s",
|
2985
|
-
self->chand_, self,
|
2891
|
+
self->chand_, self, StatusToString(error).c_str(),
|
2986
2892
|
self->call_attempt_tracer_, self->lb_subchannel_call_tracker_.get(),
|
2987
|
-
|
2893
|
+
StatusToString(self->failure_error_).c_str());
|
2988
2894
|
}
|
2989
2895
|
// Check if we have a tracer or an LB callback to invoke.
|
2990
2896
|
if (self->call_attempt_tracer_ != nullptr ||
|
2991
2897
|
self->lb_subchannel_call_tracker_ != nullptr) {
|
2992
2898
|
// Get the call's status.
|
2993
2899
|
absl::Status status;
|
2994
|
-
if (error
|
2900
|
+
if (!error.ok()) {
|
2995
2901
|
// Get status from error.
|
2996
2902
|
grpc_status_code code;
|
2997
2903
|
std::string message;
|
@@ -3014,11 +2920,9 @@ void ClientChannel::LoadBalancedCall::RecvTrailingMetadataReady(
|
|
3014
2920
|
self->RecordCallCompletion(status);
|
3015
2921
|
}
|
3016
2922
|
// Chain to original callback.
|
3017
|
-
if (self->failure_error_
|
2923
|
+
if (!self->failure_error_.ok()) {
|
3018
2924
|
error = self->failure_error_;
|
3019
|
-
self->failure_error_ =
|
3020
|
-
} else {
|
3021
|
-
error = GRPC_ERROR_REF(error);
|
2925
|
+
self->failure_error_ = absl::OkStatus();
|
3022
2926
|
}
|
3023
2927
|
Closure::Run(DEBUG_LOCATION, self->original_recv_trailing_metadata_ready_,
|
3024
2928
|
error);
|
@@ -3036,8 +2940,12 @@ void ClientChannel::LoadBalancedCall::RecordCallCompletion(
|
|
3036
2940
|
if (lb_subchannel_call_tracker_ != nullptr) {
|
3037
2941
|
Metadata trailing_metadata(recv_trailing_metadata_);
|
3038
2942
|
BackendMetricAccessor backend_metric_accessor(this);
|
2943
|
+
const char* peer_string =
|
2944
|
+
peer_string_ != nullptr
|
2945
|
+
? reinterpret_cast<char*>(gpr_atm_acq_load(peer_string_))
|
2946
|
+
: "";
|
3039
2947
|
LoadBalancingPolicy::SubchannelCallTrackerInterface::FinishArgs args = {
|
3040
|
-
status, &trailing_metadata, &backend_metric_accessor};
|
2948
|
+
peer_string, status, &trailing_metadata, &backend_metric_accessor};
|
3041
2949
|
lb_subchannel_call_tracker_->Finish(args);
|
3042
2950
|
lb_subchannel_call_tracker_.reset();
|
3043
2951
|
}
|
@@ -3050,18 +2958,18 @@ void ClientChannel::LoadBalancedCall::CreateSubchannelCall() {
|
|
3050
2958
|
// TODO(roth): When we implement hedging support, we will probably
|
3051
2959
|
// need to use a separate call context for each subchannel call.
|
3052
2960
|
call_context_, call_combiner_};
|
3053
|
-
grpc_error_handle error
|
2961
|
+
grpc_error_handle error;
|
3054
2962
|
subchannel_call_ = SubchannelCall::Create(std::move(call_args), &error);
|
3055
2963
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
3056
2964
|
gpr_log(GPR_INFO,
|
3057
2965
|
"chand=%p lb_call=%p: create subchannel_call=%p: error=%s", chand_,
|
3058
|
-
this, subchannel_call_.get(),
|
2966
|
+
this, subchannel_call_.get(), StatusToString(error).c_str());
|
3059
2967
|
}
|
3060
2968
|
if (on_call_destruction_complete_ != nullptr) {
|
3061
2969
|
subchannel_call_->SetAfterCallStackDestroy(on_call_destruction_complete_);
|
3062
2970
|
on_call_destruction_complete_ = nullptr;
|
3063
2971
|
}
|
3064
|
-
if (GPR_UNLIKELY(error
|
2972
|
+
if (GPR_UNLIKELY(!error.ok())) {
|
3065
2973
|
PendingBatchesFail(error, YieldCallCombiner);
|
3066
2974
|
} else {
|
3067
2975
|
PendingBatchesResume();
|
@@ -3095,15 +3003,15 @@ class ClientChannel::LoadBalancedCall::LbQueuedCallCanceller {
|
|
3095
3003
|
gpr_log(GPR_INFO,
|
3096
3004
|
"chand=%p lb_call=%p: cancelling queued pick: "
|
3097
3005
|
"error=%s self=%p calld->pick_canceller=%p",
|
3098
|
-
chand, lb_call,
|
3006
|
+
chand, lb_call, StatusToString(error).c_str(), self,
|
3099
3007
|
lb_call->lb_call_canceller_);
|
3100
3008
|
}
|
3101
|
-
if (lb_call->lb_call_canceller_ == self && error
|
3009
|
+
if (lb_call->lb_call_canceller_ == self && !error.ok()) {
|
3102
3010
|
lb_call->call_dispatch_controller_->Commit();
|
3103
3011
|
// Remove pick from list of queued picks.
|
3104
3012
|
lb_call->MaybeRemoveCallFromLbQueuedCallsLocked();
|
3105
3013
|
// Fail pending batches on the call.
|
3106
|
-
lb_call->PendingBatchesFail(
|
3014
|
+
lb_call->PendingBatchesFail(error,
|
3107
3015
|
YieldCallCombinerIfPendingBatchesFound);
|
3108
3016
|
}
|
3109
3017
|
}
|
@@ -3125,6 +3033,10 @@ void ClientChannel::LoadBalancedCall::MaybeRemoveCallFromLbQueuedCallsLocked() {
|
|
3125
3033
|
queued_pending_lb_pick_ = false;
|
3126
3034
|
// Lame the call combiner canceller.
|
3127
3035
|
lb_call_canceller_ = nullptr;
|
3036
|
+
// Add trace annotation
|
3037
|
+
if (call_attempt_tracer_ != nullptr) {
|
3038
|
+
call_attempt_tracer_->RecordAnnotation("Delayed LB pick complete.");
|
3039
|
+
}
|
3128
3040
|
}
|
3129
3041
|
|
3130
3042
|
void ClientChannel::LoadBalancedCall::MaybeAddCallToLbQueuedCallsLocked() {
|
@@ -3149,13 +3061,13 @@ void ClientChannel::LoadBalancedCall::AsyncPickDone(grpc_error_handle error) {
|
|
3149
3061
|
void ClientChannel::LoadBalancedCall::PickDone(void* arg,
|
3150
3062
|
grpc_error_handle error) {
|
3151
3063
|
auto* self = static_cast<LoadBalancedCall*>(arg);
|
3152
|
-
if (error
|
3064
|
+
if (!error.ok()) {
|
3153
3065
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
3154
3066
|
gpr_log(GPR_INFO,
|
3155
3067
|
"chand=%p lb_call=%p: failed to pick subchannel: error=%s",
|
3156
|
-
self->chand_, self,
|
3068
|
+
self->chand_, self, StatusToString(error).c_str());
|
3157
3069
|
}
|
3158
|
-
self->PendingBatchesFail(
|
3070
|
+
self->PendingBatchesFail(error, YieldCallCombiner);
|
3159
3071
|
return;
|
3160
3072
|
}
|
3161
3073
|
self->call_dispatch_controller_->Commit();
|
@@ -3172,7 +3084,6 @@ void ClientChannel::LoadBalancedCall::PickSubchannel(void* arg,
|
|
3172
3084
|
}
|
3173
3085
|
if (pick_complete) {
|
3174
3086
|
PickDone(self, error);
|
3175
|
-
GRPC_ERROR_UNREF(error);
|
3176
3087
|
}
|
3177
3088
|
}
|
3178
3089
|
|
@@ -3185,8 +3096,6 @@ bool ClientChannel::LoadBalancedCall::PickSubchannelLocked(
|
|
3185
3096
|
pending_batches_[0]->payload->send_initial_metadata;
|
3186
3097
|
grpc_metadata_batch* initial_metadata_batch =
|
3187
3098
|
send_initial_metadata.send_initial_metadata;
|
3188
|
-
const uint32_t send_initial_metadata_flags =
|
3189
|
-
send_initial_metadata.send_initial_metadata_flags;
|
3190
3099
|
// Perform LB pick.
|
3191
3100
|
LoadBalancingPolicy::PickArgs pick_args;
|
3192
3101
|
pick_args.path = path_.as_string_view();
|
@@ -3244,7 +3153,7 @@ bool ClientChannel::LoadBalancedCall::PickSubchannelLocked(
|
|
3244
3153
|
return false;
|
3245
3154
|
},
|
3246
3155
|
// FailPick
|
3247
|
-
[this,
|
3156
|
+
[this, initial_metadata_batch,
|
3248
3157
|
&error](LoadBalancingPolicy::PickResult::Fail* fail_pick)
|
3249
3158
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::data_plane_mu_) {
|
3250
3159
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
@@ -3253,13 +3162,10 @@ bool ClientChannel::LoadBalancedCall::PickSubchannelLocked(
|
|
3253
3162
|
}
|
3254
3163
|
// If wait_for_ready is false, then the error indicates the RPC
|
3255
3164
|
// attempt's final status.
|
3256
|
-
if ((
|
3257
|
-
|
3258
|
-
|
3259
|
-
|
3260
|
-
*error = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
|
3261
|
-
"Failed to pick subchannel", &lb_error, 1);
|
3262
|
-
GRPC_ERROR_UNREF(lb_error);
|
3165
|
+
if (!initial_metadata_batch->GetOrCreatePointer(WaitForReady())
|
3166
|
+
->value) {
|
3167
|
+
*error = absl_status_to_grpc_error(MaybeRewriteIllegalStatusCode(
|
3168
|
+
std::move(fail_pick->status), "LB pick"));
|
3263
3169
|
MaybeRemoveCallFromLbQueuedCallsLocked();
|
3264
3170
|
return true;
|
3265
3171
|
}
|
@@ -3275,9 +3181,10 @@ bool ClientChannel::LoadBalancedCall::PickSubchannelLocked(
|
|
3275
3181
|
gpr_log(GPR_INFO, "chand=%p lb_call=%p: LB pick dropped: %s",
|
3276
3182
|
chand_, this, drop_pick->status.ToString().c_str());
|
3277
3183
|
}
|
3278
|
-
*error =
|
3279
|
-
|
3280
|
-
|
3184
|
+
*error = grpc_error_set_int(
|
3185
|
+
absl_status_to_grpc_error(MaybeRewriteIllegalStatusCode(
|
3186
|
+
std::move(drop_pick->status), "LB drop")),
|
3187
|
+
StatusIntProperty::kLbPolicyDrop, 1);
|
3281
3188
|
MaybeRemoveCallFromLbQueuedCallsLocked();
|
3282
3189
|
return true;
|
3283
3190
|
});
|