grpc 1.42.0 → 1.51.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 +705 -451
- data/include/grpc/compression.h +1 -1
- data/include/grpc/event_engine/endpoint_config.h +11 -5
- data/include/grpc/event_engine/event_engine.h +122 -44
- data/include/grpc/event_engine/internal/memory_allocator_impl.h +1 -31
- data/include/grpc/event_engine/memory_allocator.h +27 -26
- data/include/grpc/event_engine/memory_request.h +57 -0
- data/include/grpc/event_engine/port.h +1 -1
- data/include/grpc/event_engine/slice.h +286 -0
- data/include/grpc/event_engine/slice_buffer.h +135 -0
- data/include/grpc/grpc.h +43 -27
- data/include/grpc/grpc_posix.h +20 -19
- data/include/grpc/grpc_security.h +323 -195
- data/include/grpc/grpc_security_constants.h +1 -14
- data/include/grpc/impl/codegen/atm_gcc_atomic.h +19 -28
- data/include/grpc/impl/codegen/atm_gcc_sync.h +0 -2
- data/include/grpc/impl/codegen/atm_windows.h +0 -2
- data/include/grpc/impl/codegen/compression_types.h +2 -3
- data/include/grpc/impl/codegen/connectivity_state.h +2 -1
- data/include/grpc/impl/codegen/gpr_types.h +2 -1
- data/include/grpc/impl/codegen/grpc_types.h +31 -30
- data/include/grpc/impl/codegen/port_platform.h +107 -47
- data/include/grpc/impl/codegen/slice.h +5 -2
- data/include/grpc/slice.h +0 -11
- data/src/core/ext/filters/census/grpc_context.cc +3 -0
- data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +315 -0
- data/src/core/ext/filters/channel_idle/channel_idle_filter.h +142 -0
- data/src/core/ext/filters/channel_idle/idle_filter_state.cc +96 -0
- data/src/core/ext/filters/channel_idle/idle_filter_state.h +68 -0
- data/src/core/ext/filters/client_channel/backend_metric.cc +20 -16
- data/src/core/ext/filters/client_channel/backend_metric.h +19 -8
- data/src/core/ext/filters/client_channel/backup_poller.cc +23 -19
- data/src/core/ext/filters/client_channel/backup_poller.h +2 -4
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +54 -30
- data/src/core/ext/filters/client_channel/client_channel.cc +684 -615
- data/src/core/ext/filters/client_channel/client_channel.h +103 -58
- data/src/core/ext/filters/client_channel/client_channel_channelz.cc +2 -6
- data/src/core/ext/filters/client_channel/client_channel_channelz.h +12 -2
- data/src/core/ext/filters/client_channel/client_channel_factory.cc +2 -26
- data/src/core/ext/filters/client_channel/client_channel_factory.h +8 -8
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +9 -41
- data/src/core/ext/filters/client_channel/client_channel_service_config.cc +153 -0
- data/src/core/ext/filters/client_channel/client_channel_service_config.h +111 -0
- data/src/core/ext/filters/client_channel/config_selector.cc +1 -0
- data/src/core/ext/filters/client_channel/config_selector.h +21 -11
- data/src/core/ext/filters/client_channel/connector.h +13 -8
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +36 -51
- data/src/core/ext/filters/client_channel/dynamic_filters.h +19 -10
- data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +4 -22
- data/src/core/ext/filters/client_channel/global_subchannel_pool.h +6 -15
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +139 -583
- data/src/core/ext/filters/client_channel/health/health_check_client.h +26 -160
- data/src/core/ext/filters/client_channel/http_proxy.cc +96 -130
- data/src/core/ext/filters/client_channel/http_proxy.h +25 -1
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +12 -8
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +7 -5
- data/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h +49 -0
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +36 -15
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +15 -9
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +21 -19
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h +1 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +380 -313
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +0 -7
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +15 -3
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +6 -2
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +2 -5
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +8 -2
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +26 -16
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +10 -8
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +415 -0
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.h +57 -0
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +1152 -0
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +94 -0
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +228 -207
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +491 -452
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +523 -391
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +16 -6
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +636 -626
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +280 -254
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +147 -134
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +275 -223
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +266 -249
- 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_attributes.h +64 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +288 -277
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +213 -182
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +589 -737
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_wrr_locality.cc +364 -0
- data/src/core/ext/filters/client_channel/local_subchannel_pool.cc +4 -0
- data/src/core/ext/filters/client_channel/local_subchannel_pool.h +1 -0
- data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +43 -33
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +676 -334
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +30 -13
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +29 -24
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +51 -71
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +358 -357
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +55 -40
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +3 -2
- data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.cc +2 -0
- data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.h +2 -1
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +124 -255
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +37 -49
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +18 -3
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +190 -102
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +258 -0
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +123 -0
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +56 -61
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +648 -503
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +3 -1
- data/src/core/ext/filters/client_channel/retry_filter.cc +382 -294
- data/src/core/ext/filters/client_channel/retry_filter.h +1 -0
- data/src/core/ext/filters/client_channel/retry_service_config.cc +198 -232
- data/src/core/ext/filters/client_channel/retry_service_config.h +41 -32
- data/src/core/ext/filters/client_channel/retry_throttle.cc +18 -39
- data/src/core/ext/filters/client_channel/retry_throttle.h +26 -13
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +37 -19
- data/src/core/ext/filters/client_channel/subchannel.cc +272 -319
- data/src/core/ext/filters/client_channel/subchannel.h +100 -47
- data/src/core/ext/filters/client_channel/subchannel_interface_internal.h +38 -0
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +17 -77
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +20 -26
- data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +470 -0
- data/src/core/ext/filters/client_channel/subchannel_stream_client.h +222 -0
- data/src/core/ext/filters/deadline/deadline_filter.cc +48 -39
- data/src/core/ext/filters/deadline/deadline_filter.h +11 -4
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +179 -403
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +38 -6
- data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.cc +118 -0
- data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.h +112 -0
- data/src/core/ext/filters/http/client/http_client_filter.cc +106 -551
- data/src/core/ext/filters/http/client/http_client_filter.h +35 -5
- data/src/core/ext/filters/http/client_authority_filter.cc +43 -112
- data/src/core/ext/filters/http/client_authority_filter.h +28 -6
- data/src/core/ext/filters/http/http_filters_plugin.cc +35 -28
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +112 -333
- data/src/core/ext/filters/http/message_compress/message_compress_filter.h +1 -2
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +85 -161
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.h +1 -0
- data/src/core/ext/filters/http/server/http_server_filter.cc +100 -476
- data/src/core/ext/filters/http/server/http_server_filter.h +37 -3
- data/src/core/ext/filters/message_size/message_size_filter.cc +130 -159
- data/src/core/ext/filters/message_size/message_size_filter.h +41 -17
- data/src/core/ext/filters/rbac/rbac_filter.cc +174 -0
- data/src/core/ext/filters/rbac/rbac_filter.h +84 -0
- data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +819 -0
- data/src/core/ext/filters/rbac/rbac_service_config_parser.h +86 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector.cc +62 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector.h +85 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +160 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.h +33 -0
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +268 -110
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +9 -9
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +387 -216
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +5 -5
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +7 -7
- data/src/core/ext/transport/chttp2/transport/bin_decoder.h +2 -1
- data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +2 -1
- data/src/core/ext/transport/chttp2/transport/bin_encoder.h +1 -1
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +791 -1179
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +16 -5
- data/src/core/ext/transport/chttp2/transport/context_list.cc +6 -3
- data/src/core/ext/transport/chttp2/transport/context_list.h +6 -4
- data/src/core/ext/transport/chttp2/transport/decode_huff.cc +287 -0
- data/src/core/ext/transport/chttp2/transport/decode_huff.h +1018 -0
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +297 -285
- data/src/core/ext/transport/chttp2/transport/flow_control.h +191 -293
- data/src/core/ext/transport/chttp2/transport/frame.h +0 -4
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +66 -218
- data/src/core/ext/transport/chttp2/transport/frame_data.h +13 -36
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +16 -13
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +3 -1
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +12 -7
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +3 -0
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +21 -9
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +3 -0
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +27 -59
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +4 -0
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +15 -16
- data/src/core/ext/transport/chttp2/transport/frame_window_update.h +3 -0
- data/src/core/ext/transport/chttp2/transport/hpack_constants.h +7 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +381 -260
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +106 -147
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +5 -2
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +12 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +157 -229
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +8 -2
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +143 -42
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +50 -50
- data/src/core/ext/transport/chttp2/transport/http2_settings.h +0 -1
- data/src/core/ext/transport/chttp2/transport/internal.h +74 -163
- data/src/core/ext/transport/chttp2/transport/parsing.cc +170 -91
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +11 -11
- data/src/core/ext/transport/chttp2/transport/stream_map.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/stream_map.h +1 -0
- data/src/core/ext/transport/chttp2/transport/varint.cc +2 -3
- data/src/core/ext/transport/chttp2/transport/varint.h +13 -8
- data/src/core/ext/transport/chttp2/transport/writing.cc +150 -183
- data/src/core/ext/transport/inproc/inproc_plugin.cc +0 -5
- data/src/core/ext/transport/inproc/inproc_transport.cc +237 -323
- data/src/core/ext/transport/inproc/inproc_transport.h +4 -5
- data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.c +117 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.h +502 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.c +121 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.h +569 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +60 -341
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +280 -1355
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.c +352 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.h +1768 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.c +56 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.h +159 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.c +64 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.h +189 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.c +46 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.h +128 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.c +43 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.h +106 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.c +43 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.h +101 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.c +106 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.h +613 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.c +48 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.h +107 -0
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c +43 -0
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +51 -0
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +30 -4
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +54 -17
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +143 -116
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +730 -385
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +241 -199
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +1360 -663
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +49 -28
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +213 -90
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +321 -271
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +1776 -826
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +20 -7
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +47 -23
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +60 -27
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +277 -98
- data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.c +299 -0
- data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.h +1437 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +74 -53
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +383 -189
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +21 -7
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +50 -24
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +215 -176
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +1179 -583
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +105 -45
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +554 -166
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +19 -6
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +43 -23
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +16 -22
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +46 -100
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.c +58 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.h +159 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +145 -117
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +821 -409
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +141 -92
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +773 -348
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +21 -8
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +62 -30
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +204 -125
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +1068 -398
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +17 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +33 -16
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +27 -13
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +92 -48
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +22 -9
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +80 -33
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +26 -13
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +98 -48
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +21 -8
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +51 -25
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +51 -35
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +207 -108
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +74 -55
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +374 -189
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +70 -53
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +378 -187
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +19 -6
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +39 -20
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +122 -71
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +660 -259
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +104 -79
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +589 -300
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +31 -16
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +109 -48
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +27 -10
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +98 -39
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.c +53 -0
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.h +140 -0
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +82 -61
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +446 -234
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +86 -65
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +443 -236
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +139 -103
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +649 -293
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +45 -41
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +255 -165
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +706 -570
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +4125 -1898
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +38 -19
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +161 -71
- data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.c +241 -0
- data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.h +1191 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.c +44 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.h +92 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.c +49 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.h +107 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +27 -13
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +86 -45
- data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.c +52 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.h +138 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.c +63 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.h +254 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.c +46 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.h +98 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.c +47 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.h +98 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.c +69 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.h +221 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.c +33 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.h +43 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.c +71 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.h +226 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.c +54 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.h +150 -0
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +17 -4
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +39 -23
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +45 -28
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +208 -111
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +51 -36
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +273 -131
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c +71 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +237 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +26 -13
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +91 -42
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +292 -224
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +1679 -733
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.c +52 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +168 -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/cert.upb.c +9 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +6 -3
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +107 -60
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +607 -234
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +41 -26
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +169 -86
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +126 -83
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +651 -262
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.c +62 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +168 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +15 -2
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +26 -14
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +206 -72
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +1095 -255
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +31 -17
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +116 -61
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +74 -57
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +368 -185
- data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.c +48 -0
- data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.h +116 -0
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +34 -18
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +140 -80
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c +74 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h +230 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +28 -14
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +108 -56
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +21 -8
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +55 -30
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +20 -7
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +53 -26
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +19 -6
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +43 -23
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +35 -20
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +130 -68
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +31 -17
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +132 -64
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +26 -12
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +94 -52
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +37 -22
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +163 -82
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +50 -31
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +258 -144
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +53 -36
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +256 -130
- data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.c +66 -0
- data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.h +213 -0
- data/src/core/ext/upb-generated/envoy/type/v3/http.upb.c +9 -0
- data/src/core/ext/upb-generated/envoy/type/v3/http.upb.h +3 -0
- data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.c +42 -0
- data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.h +143 -0
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c +23 -9
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +71 -35
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +30 -15
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +111 -51
- 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.c +26 -0
- data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_unit.upb.h +41 -0
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +19 -6
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +45 -18
- data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.c +51 -0
- data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.h +131 -0
- data/src/core/ext/upb-generated/google/api/annotations.upb.c +22 -0
- data/src/core/ext/upb-generated/google/api/annotations.upb.h +23 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +154 -125
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +765 -381
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +158 -126
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +844 -401
- data/src/core/ext/upb-generated/google/api/http.upb.c +43 -28
- data/src/core/ext/upb-generated/google/api/http.upb.h +229 -114
- data/src/core/ext/upb-generated/google/api/httpbody.upb.c +46 -0
- data/src/core/ext/upb-generated/google/api/httpbody.upb.h +115 -0
- data/src/core/ext/upb-generated/google/protobuf/any.upb.c +18 -5
- data/src/core/ext/upb-generated/google/protobuf/any.upb.h +43 -21
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +374 -282
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +2199 -1029
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +18 -5
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +41 -19
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +15 -2
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +26 -14
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +47 -31
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +190 -92
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +18 -5
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +41 -19
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +57 -36
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +277 -148
- data/src/core/ext/upb-generated/google/rpc/status.upb.c +21 -8
- data/src/core/ext/upb-generated/google/rpc/status.upb.h +57 -29
- data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.c +84 -0
- data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.h +335 -0
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +32 -18
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +108 -47
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +135 -107
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +726 -358
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +27 -12
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +85 -40
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +22 -8
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +65 -34
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +81 -61
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +435 -237
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +34 -19
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +124 -62
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.c +175 -0
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.h +792 -0
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +75 -13
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +206 -56
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +31 -5
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +59 -17
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c +21 -0
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +16 -0
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +31 -5
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +61 -19
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +30 -4
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +54 -17
- data/src/core/ext/upb-generated/validate/validate.upb.c +406 -310
- data/src/core/ext/upb-generated/validate/validate.upb.h +2822 -1164
- data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.c +110 -0
- data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.h +290 -0
- data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.c +55 -0
- data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.h +112 -0
- data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.c +38 -0
- data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.h +46 -0
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +64 -17
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +191 -67
- data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.c +53 -0
- data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.h +103 -0
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +17 -4
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +35 -18
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +30 -16
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +107 -54
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +25 -11
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +58 -29
- data/src/core/ext/upb-generated/xds/core/v3/extension.upb.c +46 -0
- data/src/core/ext/upb-generated/xds/core/v3/extension.upb.h +107 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +22 -9
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +60 -29
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +33 -19
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +139 -69
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +22 -9
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +63 -29
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +36 -21
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +106 -45
- data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.c +47 -0
- data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.h +113 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.c +207 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.h +914 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.c +52 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.h +151 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.c +65 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.h +226 -0
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +20 -7
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +47 -23
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/certs.upbdefs.c +84 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/certs.upbdefs.h +55 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/clusters.upbdefs.c +127 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/clusters.upbdefs.h +50 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +75 -327
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h +16 -101
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.c +256 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.h +115 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/init_dump.upbdefs.c +43 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/init_dump.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.c +56 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/memory.upbdefs.c +49 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/memory.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/metrics.upbdefs.c +46 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/metrics.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/mutex_stats.upbdefs.c +46 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/mutex_stats.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/server_info.upbdefs.c +142 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/server_info.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/tap.upbdefs.c +51 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/tap.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c +10 -8
- data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.h +1 -1
- data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.c +10 -13
- data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +120 -150
- data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.h +46 -46
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +253 -280
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.h +55 -55
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +60 -62
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.h +10 -10
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +387 -424
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +76 -76
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c +16 -18
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +25 -23
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/config/common/matcher/v3/matcher.upbdefs.c +206 -0
- data/src/core/ext/upbdefs-generated/envoy/config/common/matcher/v3/matcher.upbdefs.h +105 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c +17 -32
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.h +22 -22
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.c +17 -19
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +203 -246
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +73 -73
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +140 -116
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h +26 -16
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.c +16 -19
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c +24 -43
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.h +4 -9
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_method_list.upbdefs.c +53 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_method_list.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c +23 -51
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.h +43 -43
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +179 -187
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.h +30 -25
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.c +16 -19
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +254 -254
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h +53 -43
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +14 -16
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.c +16 -20
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.h +7 -7
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c +16 -18
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +26 -28
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.c +15 -18
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c +20 -28
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.h +13 -13
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +21 -33
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.h +19 -19
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c +20 -30
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.h +16 -16
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.c +16 -18
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +180 -165
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +24 -19
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +155 -166
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.h +22 -22
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c +21 -23
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +46 -42
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.h +7 -7
- data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/metrics_service.upbdefs.c +69 -0
- data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/metrics_service.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.c +19 -35
- data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.h +25 -25
- data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.c +19 -37
- data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.h +28 -28
- data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +194 -0
- data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h +75 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +82 -85
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +7 -12
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +874 -917
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +170 -160
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c +54 -48
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.h +10 -10
- data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.c +199 -0
- data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.h +90 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/datadog.upbdefs.c +54 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/datadog.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/dynamic_ot.upbdefs.c +57 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/dynamic_ot.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c +17 -21
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.h +7 -7
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/lightstep.upbdefs.c +72 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/lightstep.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opencensus.upbdefs.c +99 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opencensus.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.c +47 -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/service.upbdefs.c +52 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/service.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/skywalking.upbdefs.c +71 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/skywalking.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.c +61 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.h +30 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/xray.upbdefs.c +75 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/xray.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/zipkin.upbdefs.c +77 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/zipkin.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +17 -18
- data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c +19 -29
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.h +16 -16
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +20 -26
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.h +10 -10
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +80 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +19 -20
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +405 -410
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +63 -58
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +17 -13
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h +1 -1
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +174 -157
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h +24 -19
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +21 -27
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h +10 -10
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +219 -216
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h +24 -19
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.c +58 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c +16 -18
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +162 -107
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +57 -22
- data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +18 -22
- data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.h +7 -7
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +125 -135
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.h +16 -16
- data/src/core/ext/upbdefs-generated/envoy/type/http/v3/cookie.upbdefs.c +46 -0
- data/src/core/ext/upbdefs-generated/envoy/type/http/v3/cookie.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.c +15 -23
- data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.h +13 -13
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.c +52 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.h +50 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c +17 -21
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.h +7 -7
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.c +17 -19
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.c +17 -19
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.c +17 -19
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +38 -43
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.h +10 -10
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c +17 -21
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.h +7 -7
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.c +16 -21
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.h +7 -7
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.c +18 -24
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.h +10 -10
- data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c +15 -29
- data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.h +22 -22
- data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c +16 -26
- data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.h +16 -16
- data/src/core/ext/upbdefs-generated/envoy/type/v3/hash_policy.upbdefs.c +53 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/hash_policy.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.c +12 -10
- data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.h +1 -1
- data/src/core/ext/upbdefs-generated/envoy/type/v3/http_status.upbdefs.c +94 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/http_status.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c +14 -19
- data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.h +7 -7
- data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c +13 -19
- data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.h +10 -10
- data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_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 +38 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_unit.upbdefs.h +30 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c +13 -16
- data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/type/v3/token_bucket.upbdefs.c +57 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/token_bucket.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.c +7 -7
- data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.h +1 -1
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.c +154 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.h +95 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.c +153 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.h +100 -0
- data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.c +5 -14
- data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.h +10 -10
- data/src/core/ext/upbdefs-generated/google/api/httpbody.upbdefs.c +39 -0
- data/src/core/ext/upbdefs-generated/google/api/httpbody.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c +5 -10
- data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +96 -151
- data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.h +82 -82
- data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c +5 -10
- data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c +5 -10
- data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c +5 -16
- data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.h +13 -13
- data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c +5 -10
- data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c +5 -26
- data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.h +28 -28
- data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c +6 -11
- data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/opencensus/proto/trace/v1/trace_config.upbdefs.c +67 -0
- data/src/core/ext/upbdefs-generated/opencensus/proto/trace/v1/trace_config.upbdefs.h +50 -0
- data/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.c +99 -0
- data/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.h +75 -0
- data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c +6 -15
- data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.h +10 -10
- data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c +7 -12
- data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c +6 -6
- data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.h +1 -1
- data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c +6 -11
- data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c +6 -11
- data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +8 -57
- data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.h +70 -70
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/migrate.upbdefs.c +63 -0
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/migrate.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/security.upbdefs.c +47 -0
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/security.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/sensitive.upbdefs.c +35 -0
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/sensitive.upbdefs.h +30 -0
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.c +6 -17
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.h +13 -13
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/versioning.upbdefs.c +40 -0
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/versioning.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c +7 -12
- data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +9 -16
- data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.h +7 -7
- data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +6 -13
- data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.h +7 -7
- data/src/core/ext/upbdefs-generated/xds/core/v3/extension.upbdefs.c +41 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/extension.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +8 -13
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +8 -15
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.h +7 -7
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +8 -13
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/matcher.upbdefs.c +126 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/matcher.upbdefs.h +80 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/regex.upbdefs.c +40 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/regex.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/string.upbdefs.c +52 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/string.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.c +7 -12
- data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.h +4 -4
- data/src/core/ext/xds/certificate_provider_store.cc +75 -3
- data/src/core/ext/xds/certificate_provider_store.h +28 -2
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +20 -14
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +11 -3
- data/src/core/ext/xds/upb_utils.h +45 -0
- data/src/core/ext/xds/xds_api.cc +329 -3648
- data/src/core/ext/xds/xds_api.h +78 -630
- data/src/core/ext/xds/xds_bootstrap.cc +10 -443
- data/src/core/ext/xds/xds_bootstrap.h +44 -81
- data/src/core/ext/xds/xds_bootstrap_grpc.cc +361 -0
- data/src/core/ext/xds/xds_bootstrap_grpc.h +184 -0
- data/src/core/ext/xds/xds_certificate_provider.cc +36 -25
- data/src/core/ext/xds/xds_certificate_provider.h +35 -3
- data/src/core/ext/xds/xds_channel_stack_modifier.cc +27 -21
- data/src/core/ext/xds/xds_channel_stack_modifier.h +17 -4
- data/src/core/ext/xds/xds_client.cc +1278 -2037
- data/src/core/ext/xds/xds_client.h +158 -197
- data/src/core/ext/xds/xds_client_grpc.cc +210 -0
- data/src/core/ext/xds/xds_client_grpc.h +79 -0
- data/src/core/ext/xds/xds_client_stats.cc +18 -19
- data/src/core/ext/xds/xds_client_stats.h +9 -7
- data/src/core/ext/xds/xds_cluster.cc +659 -0
- data/src/core/ext/xds/xds_cluster.h +116 -0
- data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +152 -0
- data/src/core/ext/xds/xds_cluster_specifier_plugin.h +92 -0
- data/src/core/ext/xds/xds_common_types.cc +501 -0
- data/src/core/ext/xds/xds_common_types.h +108 -0
- data/src/core/ext/xds/xds_endpoint.cc +468 -0
- data/src/core/ext/xds/xds_endpoint.h +139 -0
- data/src/core/ext/xds/xds_http_fault_filter.cc +67 -59
- data/src/core/ext/xds/xds_http_fault_filter.h +18 -24
- data/src/core/ext/xds/xds_http_filters.cc +66 -66
- data/src/core/ext/xds/xds_http_filters.h +72 -24
- data/src/core/ext/xds/xds_http_rbac_filter.cc +505 -0
- data/src/core/ext/xds/xds_http_rbac_filter.h +58 -0
- data/src/core/ext/xds/xds_lb_policy_registry.cc +243 -0
- data/src/core/ext/xds/xds_lb_policy_registry.h +71 -0
- data/src/core/ext/xds/xds_listener.cc +1144 -0
- data/src/core/ext/xds/xds_listener.h +224 -0
- data/src/core/ext/xds/xds_resource_type.h +104 -0
- data/src/core/ext/xds/xds_resource_type_impl.h +86 -0
- data/src/core/ext/xds/xds_route_config.cc +1166 -0
- data/src/core/ext/xds/xds_route_config.h +241 -0
- data/src/core/ext/xds/xds_routing.cc +264 -0
- data/src/core/ext/xds/xds_routing.h +106 -0
- data/src/core/ext/xds/xds_server_config_fetcher.cc +1155 -324
- 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 +36 -16
- data/src/core/lib/address_utils/parse_address.h +11 -2
- data/src/core/lib/address_utils/sockaddr_utils.cc +82 -51
- data/src/core/lib/address_utils/sockaddr_utils.h +9 -19
- data/src/core/lib/avl/avl.h +476 -88
- data/src/core/lib/backoff/backoff.cc +9 -40
- data/src/core/lib/backoff/backoff.h +12 -12
- data/src/core/lib/channel/call_finalization.h +88 -0
- data/src/core/lib/channel/call_tracer.h +16 -7
- data/src/core/lib/channel/channel_args.cc +274 -48
- data/src/core/lib/channel/channel_args.h +413 -12
- data/src/core/lib/channel/channel_args_preconditioning.cc +43 -0
- data/src/core/lib/channel/channel_args_preconditioning.h +62 -0
- data/src/core/lib/channel/channel_fwd.h +26 -0
- data/src/core/lib/channel/channel_stack.cc +64 -17
- data/src/core/lib/channel/channel_stack.h +96 -14
- data/src/core/lib/channel/channel_stack_builder.cc +18 -280
- data/src/core/lib/channel/channel_stack_builder.h +112 -150
- data/src/core/lib/channel/channel_stack_builder_impl.cc +113 -0
- data/src/core/lib/channel/channel_stack_builder_impl.h +48 -0
- data/src/core/lib/channel/channel_trace.cc +12 -22
- data/src/core/lib/channel/channel_trace.h +6 -3
- data/src/core/lib/channel/channelz.cc +36 -49
- data/src/core/lib/channel/channelz.h +24 -7
- data/src/core/lib/channel/channelz_registry.cc +11 -19
- data/src/core/lib/channel/channelz_registry.h +10 -9
- data/src/core/lib/channel/connected_channel.cc +704 -48
- data/src/core/lib/channel/connected_channel.h +3 -4
- data/src/core/lib/channel/context.h +11 -0
- data/src/core/lib/channel/promise_based_filter.cc +2126 -0
- data/src/core/lib/channel/promise_based_filter.h +848 -0
- data/src/core/lib/channel/status_util.cc +29 -0
- data/src/core/lib/channel/status_util.h +9 -2
- data/src/core/lib/compression/compression.cc +26 -113
- data/src/core/lib/compression/compression_internal.cc +170 -204
- data/src/core/lib/compression/compression_internal.h +68 -72
- data/src/core/lib/compression/message_compress.cc +18 -16
- data/src/core/lib/compression/message_compress.h +4 -5
- data/src/core/lib/config/core_configuration.cc +18 -3
- data/src/core/lib/config/core_configuration.h +133 -36
- 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 +31 -135
- data/src/core/lib/debug/stats.h +30 -37
- data/src/core/lib/debug/stats_data.cc +290 -638
- data/src/core/lib/debug/stats_data.h +263 -527
- data/src/core/lib/debug/trace.cc +0 -2
- data/src/core/lib/debug/trace.h +15 -14
- data/src/core/lib/event_engine/channel_args_endpoint_config.cc +40 -0
- data/src/core/lib/event_engine/channel_args_endpoint_config.h +49 -0
- data/src/core/lib/event_engine/common_closures.h +71 -0
- data/src/core/lib/event_engine/default_event_engine.cc +94 -0
- data/src/core/lib/event_engine/default_event_engine.h +49 -0
- data/src/core/lib/event_engine/default_event_engine_factory.cc +48 -0
- data/src/core/lib/event_engine/default_event_engine_factory.h +33 -0
- data/src/core/lib/event_engine/executor/executor.h +38 -0
- data/src/core/lib/event_engine/forkable.cc +101 -0
- data/src/core/lib/event_engine/forkable.h +61 -0
- data/src/core/lib/event_engine/handle_containers.h +67 -0
- data/src/core/lib/event_engine/memory_allocator.cc +74 -0
- data/src/core/lib/event_engine/poller.h +62 -0
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +618 -0
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +129 -0
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +901 -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 +267 -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 +1270 -0
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +682 -0
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +577 -0
- data/src/core/lib/event_engine/posix_engine/posix_engine.h +245 -0
- data/src/core/lib/event_engine/posix_engine/posix_engine_closure.h +80 -0
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +1081 -0
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +361 -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 +174 -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 +301 -0
- data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +179 -0
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.cc +126 -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 +151 -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 +41 -0
- data/src/core/lib/event_engine/slice.cc +103 -0
- data/src/core/lib/event_engine/slice_buffer.cc +50 -0
- data/src/core/lib/event_engine/socket_notifier.h +55 -0
- data/src/core/lib/event_engine/thread_pool.cc +276 -0
- data/src/core/lib/event_engine/thread_pool.h +137 -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 +18 -0
- data/src/core/lib/event_engine/trace.h +30 -0
- data/src/core/lib/event_engine/utils.cc +44 -0
- data/src/core/lib/event_engine/utils.h +36 -0
- data/src/core/lib/event_engine/windows/iocp.cc +155 -0
- data/src/core/lib/event_engine/windows/iocp.h +69 -0
- data/src/core/lib/event_engine/windows/win_socket.cc +196 -0
- data/src/core/lib/event_engine/windows/win_socket.h +120 -0
- data/src/core/lib/event_engine/windows/windows_engine.cc +165 -0
- data/src/core/lib/event_engine/windows/windows_engine.h +124 -0
- data/src/core/lib/experiments/config.cc +146 -0
- data/src/core/lib/experiments/config.h +43 -0
- data/src/core/lib/experiments/experiments.cc +86 -0
- data/src/core/lib/experiments/experiments.h +63 -0
- data/src/core/lib/gpr/alloc.cc +1 -9
- data/src/core/lib/gpr/cpu_linux.cc +6 -2
- data/src/core/lib/gpr/log.cc +5 -0
- data/src/core/lib/gpr/log_linux.cc +3 -4
- data/src/core/lib/gpr/log_windows.cc +0 -1
- data/src/core/lib/gpr/string.h +1 -1
- data/src/core/lib/gpr/string_util_windows.cc +3 -30
- data/src/core/lib/gpr/sync_abseil.cc +0 -14
- data/src/core/lib/gpr/sync_posix.cc +1 -14
- data/src/core/lib/gpr/time.cc +13 -10
- data/src/core/lib/gpr/time_posix.cc +6 -15
- data/src/core/lib/gpr/time_precise.h +1 -1
- data/src/core/lib/gpr/time_windows.cc +10 -7
- data/src/core/lib/gpr/tmpfile_posix.cc +3 -2
- data/src/core/lib/gpr/tmpfile_windows.cc +5 -7
- data/src/core/lib/gpr/useful.h +58 -0
- data/src/core/lib/gprpp/bitset.h +27 -14
- data/src/core/lib/gprpp/chunked_vector.h +49 -3
- data/src/core/lib/gprpp/construct_destruct.h +1 -0
- data/src/core/lib/gprpp/cpp_impl_of.h +49 -0
- data/src/core/lib/gprpp/debug_location.h +41 -7
- data/src/core/lib/gprpp/dual_ref_counted.h +1 -4
- 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.h +0 -1
- data/src/core/lib/gprpp/fork.cc +17 -28
- data/src/core/lib/gprpp/fork.h +0 -8
- data/src/core/lib/gprpp/global_config.h +2 -4
- data/src/core/lib/gprpp/global_config_env.cc +16 -14
- data/src/core/lib/gprpp/global_config_env.h +5 -3
- data/src/core/lib/gprpp/global_config_generic.h +0 -4
- data/src/core/lib/gprpp/host_port.cc +2 -0
- 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 +0 -70
- data/src/core/lib/gprpp/match.h +2 -0
- data/src/core/lib/gprpp/memory.h +1 -5
- data/src/core/lib/gprpp/no_destruct.h +94 -0
- data/src/core/lib/gprpp/notification.h +67 -0
- data/src/core/lib/gprpp/orphanable.h +2 -5
- 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 +4 -4
- data/src/core/lib/gprpp/ref_counted_ptr.h +23 -39
- data/src/core/lib/gprpp/single_set_ptr.h +87 -0
- data/src/core/lib/gprpp/sorted_pack.h +98 -0
- data/src/core/lib/gprpp/stat.h +0 -2
- data/src/core/lib/gprpp/stat_posix.cc +10 -4
- data/src/core/lib/gprpp/stat_windows.cc +3 -2
- data/src/core/lib/gprpp/status_helper.cc +75 -48
- data/src/core/lib/gprpp/status_helper.h +16 -21
- data/src/core/lib/gprpp/strerror.cc +41 -0
- data/src/core/lib/gprpp/strerror.h +29 -0
- data/src/core/lib/gprpp/sync.h +3 -1
- data/src/core/lib/gprpp/table.h +42 -2
- 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 +2 -5
- data/src/core/lib/gprpp/thd_posix.cc +4 -2
- data/src/core/lib/gprpp/thd_windows.cc +3 -2
- data/src/core/lib/gprpp/time.cc +234 -0
- data/src/core/lib/gprpp/time.h +367 -0
- 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.cc +4 -0
- data/src/core/lib/gprpp/time_util.h +1 -1
- data/src/core/lib/gprpp/unique_type_name.h +104 -0
- data/src/core/lib/gprpp/validation_errors.cc +61 -0
- data/src/core/lib/gprpp/validation_errors.h +127 -0
- data/src/core/lib/gprpp/work_serializer.cc +247 -0
- data/src/core/lib/gprpp/work_serializer.h +86 -0
- 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 +62 -29
- data/src/core/lib/http/format_request.h +10 -7
- data/src/core/lib/http/httpcli.cc +313 -244
- data/src/core/lib/http/httpcli.h +234 -90
- data/src/core/lib/http/httpcli_security_connector.cc +84 -86
- data/src/core/lib/http/httpcli_ssl_credentials.h +39 -0
- data/src/core/lib/http/parser.cc +124 -65
- data/src/core/lib/http/parser.h +18 -2
- data/src/core/lib/iomgr/buffer_list.cc +110 -121
- data/src/core/lib/iomgr/buffer_list.h +68 -52
- data/src/core/lib/iomgr/call_combiner.cc +17 -40
- data/src/core/lib/iomgr/call_combiner.h +3 -4
- data/src/core/lib/iomgr/cfstream_handle.cc +13 -16
- data/src/core/lib/iomgr/closure.h +68 -14
- data/src/core/lib/iomgr/combiner.cc +11 -9
- data/src/core/lib/iomgr/endpoint.cc +4 -4
- data/src/core/lib/iomgr/endpoint.h +7 -6
- data/src/core/lib/iomgr/endpoint_cfstream.cc +40 -53
- data/src/core/lib/iomgr/endpoint_cfstream.h +4 -4
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +15 -11
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +5 -14
- data/src/core/lib/iomgr/error.cc +30 -813
- data/src/core/lib/iomgr/error.h +22 -295
- data/src/core/lib/iomgr/error_cfstream.cc +0 -5
- data/src/core/lib/iomgr/ev_apple.cc +10 -9
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +88 -84
- data/src/core/lib/iomgr/ev_epoll1_linux.h +1 -1
- data/src/core/lib/iomgr/ev_poll_posix.cc +123 -109
- data/src/core/lib/iomgr/ev_poll_posix.h +2 -2
- data/src/core/lib/iomgr/ev_posix.cc +58 -100
- data/src/core/lib/iomgr/ev_posix.h +6 -4
- data/src/core/lib/iomgr/exec_ctx.cc +14 -109
- data/src/core/lib/iomgr/exec_ctx.h +24 -66
- data/src/core/lib/iomgr/executor.cc +16 -21
- data/src/core/lib/iomgr/executor.h +1 -4
- data/src/core/lib/iomgr/fork_posix.cc +1 -0
- data/src/core/lib/iomgr/internal_errqueue.cc +40 -47
- data/src/core/lib/iomgr/internal_errqueue.h +1 -6
- data/src/core/lib/iomgr/iocp_windows.cc +10 -10
- data/src/core/lib/iomgr/iocp_windows.h +1 -1
- data/src/core/lib/iomgr/iomgr.cc +6 -2
- data/src/core/lib/iomgr/iomgr_fwd.h +26 -0
- data/src/core/lib/iomgr/iomgr_posix.cc +4 -3
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +4 -2
- data/src/core/lib/iomgr/iomgr_windows.cc +3 -2
- data/src/core/lib/iomgr/load_file.cc +5 -9
- data/src/core/lib/iomgr/lockfree_event.cc +10 -27
- data/src/core/lib/iomgr/polling_entity.h +6 -0
- data/src/core/lib/iomgr/pollset.cc +1 -1
- data/src/core/lib/iomgr/pollset.h +5 -5
- data/src/core/lib/iomgr/pollset_set.h +1 -3
- data/src/core/lib/iomgr/pollset_windows.cc +6 -6
- data/src/core/lib/iomgr/port.h +29 -12
- data/src/core/lib/iomgr/python_util.h +2 -2
- data/src/core/lib/iomgr/resolve_address.cc +16 -22
- data/src/core/lib/iomgr/resolve_address.h +79 -46
- data/src/core/lib/iomgr/resolve_address_impl.h +59 -0
- data/src/core/lib/iomgr/resolve_address_posix.cc +112 -78
- data/src/core/lib/iomgr/resolve_address_posix.h +63 -0
- data/src/core/lib/iomgr/resolve_address_windows.cc +125 -81
- data/src/core/lib/iomgr/resolve_address_windows.h +63 -0
- data/src/core/lib/iomgr/resolved_address.h +39 -0
- data/src/core/lib/iomgr/sockaddr.h +2 -3
- data/src/core/lib/iomgr/sockaddr_posix.h +2 -0
- data/src/core/lib/iomgr/sockaddr_utils_posix.cc +63 -0
- data/src/core/lib/iomgr/sockaddr_windows.h +2 -0
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +44 -81
- data/src/core/lib/iomgr/socket_utils_posix.cc +84 -1
- data/src/core/lib/iomgr/socket_utils_posix.h +98 -6
- data/src/core/lib/iomgr/socket_windows.cc +2 -2
- data/src/core/lib/iomgr/socket_windows.h +0 -2
- data/src/core/lib/iomgr/tcp_client.cc +11 -9
- data/src/core/lib/iomgr/tcp_client.h +25 -15
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +28 -26
- data/src/core/lib/iomgr/tcp_client_posix.cc +194 -85
- data/src/core/lib/iomgr/tcp_client_posix.h +14 -12
- data/src/core/lib/iomgr/tcp_client_windows.cc +33 -35
- data/src/core/lib/iomgr/tcp_posix.cc +465 -254
- data/src/core/lib/iomgr/tcp_posix.h +4 -4
- data/src/core/lib/iomgr/tcp_server.cc +3 -4
- data/src/core/lib/iomgr/tcp_server.h +5 -4
- data/src/core/lib/iomgr/tcp_server_posix.cc +109 -101
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +21 -20
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +50 -49
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +19 -16
- data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +1 -1
- data/src/core/lib/iomgr/tcp_server_windows.cc +45 -48
- data/src/core/lib/iomgr/tcp_windows.cc +43 -46
- data/src/core/lib/iomgr/tcp_windows.h +1 -3
- data/src/core/lib/iomgr/timer.cc +2 -2
- data/src/core/lib/iomgr/timer.h +18 -13
- data/src/core/lib/iomgr/timer_generic.cc +108 -97
- data/src/core/lib/iomgr/timer_manager.cc +14 -14
- data/src/core/lib/iomgr/unix_sockets_posix.cc +20 -34
- data/src/core/lib/iomgr/unix_sockets_posix.h +4 -7
- data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +6 -15
- data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +4 -5
- data/src/core/lib/iomgr/wakeup_fd_pipe.cc +10 -8
- data/src/core/lib/iomgr/wakeup_fd_posix.cc +15 -12
- data/src/core/lib/iomgr/wakeup_fd_posix.h +0 -2
- data/src/core/lib/json/json.h +20 -24
- data/src/core/lib/json/json_args.h +34 -0
- data/src/core/lib/json/json_channel_args.h +42 -0
- data/src/core/lib/json/json_object_loader.cc +207 -0
- data/src/core/lib/json/json_object_loader.h +620 -0
- data/src/core/lib/json/json_reader.cc +155 -75
- data/src/core/lib/json/json_util.cc +17 -37
- data/src/core/lib/json/json_util.h +18 -9
- data/src/core/lib/json/json_writer.cc +6 -1
- data/src/core/lib/load_balancing/lb_policy.cc +93 -0
- data/src/core/lib/load_balancing/lb_policy.h +439 -0
- data/src/core/lib/load_balancing/lb_policy_factory.h +49 -0
- data/src/core/lib/load_balancing/lb_policy_registry.cc +141 -0
- data/src/core/lib/load_balancing/lb_policy_registry.h +82 -0
- data/src/core/lib/load_balancing/subchannel_interface.h +133 -0
- data/src/core/lib/matchers/matchers.cc +10 -8
- data/src/core/lib/matchers/matchers.h +2 -0
- data/src/core/lib/promise/activity.cc +134 -0
- data/src/core/lib/promise/activity.h +604 -0
- data/src/core/lib/promise/arena_promise.h +230 -0
- data/src/core/lib/promise/context.h +92 -0
- data/src/core/lib/promise/detail/basic_seq.h +497 -0
- data/src/core/lib/promise/detail/promise_factory.h +235 -0
- data/src/core/lib/promise/detail/promise_like.h +85 -0
- data/src/core/lib/promise/detail/status.h +78 -0
- data/src/core/lib/promise/detail/switch.h +1455 -0
- data/src/core/lib/promise/exec_ctx_wakeup_scheduler.h +50 -0
- data/src/core/lib/promise/for_each.h +129 -0
- data/src/core/lib/promise/intra_activity_waiter.h +49 -0
- data/src/core/lib/promise/latch.h +103 -0
- data/src/core/lib/promise/loop.h +138 -0
- data/src/core/lib/promise/map.h +87 -0
- data/src/core/lib/promise/map_pipe.h +87 -0
- data/src/core/lib/promise/pipe.cc +19 -0
- data/src/core/lib/promise/pipe.h +505 -0
- data/src/core/lib/promise/poll.h +79 -0
- data/src/core/lib/promise/promise.h +96 -0
- data/src/core/lib/promise/race.h +83 -0
- data/src/core/lib/promise/seq.h +106 -0
- data/src/core/lib/promise/sleep.cc +90 -0
- data/src/core/lib/promise/sleep.h +84 -0
- data/src/core/lib/promise/try_concurrently.h +341 -0
- data/src/core/lib/promise/try_seq.h +174 -0
- data/src/core/lib/resolver/resolver.cc +37 -0
- data/src/core/lib/resolver/resolver.h +138 -0
- data/src/core/lib/resolver/resolver_factory.h +77 -0
- data/src/core/lib/resolver/resolver_registry.cc +149 -0
- data/src/core/lib/resolver/resolver_registry.h +123 -0
- data/src/core/lib/resolver/server_address.cc +181 -0
- data/src/core/lib/resolver/server_address.h +145 -0
- data/src/core/lib/resource_quota/api.cc +104 -0
- data/src/core/lib/resource_quota/api.h +49 -0
- data/src/core/lib/resource_quota/arena.cc +138 -0
- data/src/core/lib/resource_quota/arena.h +252 -0
- data/src/core/lib/resource_quota/memory_quota.cc +603 -0
- data/src/core/lib/resource_quota/memory_quota.h +530 -0
- 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.cc +33 -0
- data/src/core/lib/resource_quota/resource_quota.h +74 -0
- data/src/core/lib/resource_quota/thread_quota.cc +45 -0
- data/src/core/lib/resource_quota/thread_quota.h +61 -0
- data/src/core/lib/resource_quota/trace.cc +19 -0
- data/src/core/lib/resource_quota/trace.h +24 -0
- data/src/core/lib/security/authorization/authorization_policy_provider.h +14 -0
- data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +4 -0
- data/src/core/lib/security/authorization/evaluate_args.cc +53 -45
- data/src/core/lib/security/authorization/evaluate_args.h +9 -5
- data/src/core/lib/security/authorization/grpc_authorization_engine.cc +64 -0
- data/src/core/lib/security/authorization/grpc_authorization_engine.h +69 -0
- data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +122 -0
- data/src/core/lib/security/authorization/grpc_server_authz_filter.h +61 -0
- data/src/core/lib/security/authorization/matchers.cc +241 -0
- data/src/core/lib/security/authorization/matchers.h +218 -0
- data/src/core/lib/security/authorization/rbac_policy.cc +445 -0
- data/src/core/lib/security/authorization/rbac_policy.h +178 -0
- data/src/core/lib/security/certificate_provider/certificate_provider_factory.h +66 -0
- 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 +9 -4
- data/src/core/lib/security/context/security_context.h +33 -4
- data/src/core/lib/security/credentials/alts/alts_credentials.cc +18 -10
- data/src/core/lib/security/credentials/alts/alts_credentials.h +18 -4
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc +1 -3
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc +1 -4
- data/src/core/lib/security/credentials/call_creds_util.cc +97 -0
- data/src/core/lib/security/credentials/call_creds_util.h +43 -0
- data/src/core/lib/security/credentials/channel_creds_registry.h +103 -0
- data/src/core/lib/security/credentials/channel_creds_registry_init.cc +80 -0
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +32 -91
- data/src/core/lib/security/credentials/composite/composite_credentials.h +42 -16
- data/src/core/lib/security/credentials/credentials.cc +6 -11
- data/src/core/lib/security/credentials/credentials.h +106 -99
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +249 -107
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +19 -0
- data/src/core/lib/security/credentials/external/aws_request_signer.cc +13 -3
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +137 -103
- data/src/core/lib/security/credentials/external/external_account_credentials.h +16 -9
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +29 -27
- data/src/core/lib/security/credentials/external/file_external_account_credentials.h +6 -0
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +76 -45
- data/src/core/lib/security/credentials/external/url_external_account_credentials.h +11 -0
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +43 -43
- data/src/core/lib/security/credentials/fake/fake_credentials.h +35 -26
- data/src/core/lib/security/credentials/google_default/credentials_generic.cc +6 -8
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +118 -80
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +20 -7
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +32 -30
- data/src/core/lib/security/credentials/iam/iam_credentials.h +25 -9
- data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +35 -26
- data/src/core/lib/security/credentials/insecure/insecure_credentials.h +61 -0
- data/src/core/lib/security/credentials/jwt/json_token.cc +21 -12
- data/src/core/lib/security/credentials/jwt/json_token.h +2 -2
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +46 -55
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +30 -12
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +96 -61
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +6 -4
- data/src/core/lib/security/credentials/local/local_credentials.cc +19 -13
- data/src/core/lib/security/credentials/local/local_credentials.h +19 -3
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +214 -222
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +81 -34
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +104 -156
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +80 -27
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +31 -35
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +29 -6
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +21 -29
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +13 -14
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +75 -58
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +73 -14
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +241 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +168 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +37 -92
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +73 -149
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +59 -42
- data/src/core/lib/security/credentials/tls/tls_credentials.h +13 -4
- data/src/core/lib/security/credentials/tls/tls_utils.cc +5 -1
- data/src/core/lib/security/credentials/tls/tls_utils.h +1 -1
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +81 -89
- data/src/core/lib/security/credentials/xds/xds_credentials.h +53 -8
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +46 -45
- data/src/core/lib/security/security_connector/alts/alts_security_connector.h +9 -6
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +58 -70
- data/src/core/lib/security/security_connector/fake/fake_security_connector.h +3 -5
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +23 -24
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +34 -27
- data/src/core/lib/security/security_connector/load_system_roots_fallback.cc +5 -3
- data/src/core/lib/security/security_connector/load_system_roots_supported.cc +175 -0
- data/src/core/lib/security/security_connector/load_system_roots_supported.h +46 -0
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +52 -40
- data/src/core/lib/security/security_connector/local/local_security_connector.h +7 -3
- data/src/core/lib/security/security_connector/security_connector.cc +22 -32
- data/src/core/lib/security/security_connector/security_connector.h +49 -31
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +39 -34
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +4 -2
- data/src/core/lib/security/security_connector/ssl_utils.cc +54 -40
- data/src/core/lib/security/security_connector/ssl_utils.h +23 -24
- data/src/core/lib/security/security_connector/ssl_utils_config.h +1 -1
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +391 -230
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +97 -54
- data/src/core/lib/security/transport/auth_filters.h +45 -5
- data/src/core/lib/security/transport/client_auth_filter.cc +122 -368
- data/src/core/lib/security/transport/secure_endpoint.cc +282 -158
- data/src/core/lib/security/transport/secure_endpoint.h +5 -4
- data/src/core/lib/security/transport/security_handshaker.cc +123 -92
- data/src/core/lib/security/transport/security_handshaker.h +7 -2
- data/src/core/lib/security/transport/server_auth_filter.cc +87 -58
- data/src/core/lib/security/transport/tsi_error.cc +6 -3
- data/src/core/lib/security/util/json_util.cc +7 -7
- data/src/core/lib/security/util/json_util.h +0 -2
- data/src/core/lib/service_config/service_config.h +89 -0
- data/src/core/lib/service_config/service_config_call_data.h +76 -0
- data/src/core/lib/service_config/service_config_impl.cc +191 -0
- data/src/core/lib/service_config/service_config_impl.h +125 -0
- data/src/core/lib/service_config/service_config_parser.cc +81 -0
- data/src/core/lib/service_config/service_config_parser.h +105 -0
- data/src/core/lib/slice/b64.cc +2 -2
- data/src/core/lib/slice/b64.h +2 -0
- data/src/core/lib/slice/percent_encoding.cc +35 -97
- data/src/core/lib/slice/percent_encoding.h +4 -16
- data/src/core/lib/slice/slice.cc +94 -184
- data/src/core/lib/slice/slice.h +402 -0
- data/src/core/lib/slice/slice_buffer.cc +92 -33
- data/src/core/lib/slice/slice_buffer.h +137 -0
- data/src/core/lib/slice/slice_internal.h +22 -48
- data/src/core/lib/slice/slice_refcount.h +32 -93
- data/src/core/lib/slice/slice_string_helpers.cc +0 -16
- data/src/core/lib/slice/slice_string_helpers.h +1 -8
- data/src/core/lib/surface/builtins.cc +11 -6
- data/src/core/lib/surface/byte_buffer.cc +9 -4
- data/src/core/lib/surface/byte_buffer_reader.cc +7 -7
- data/src/core/lib/surface/call.cc +2324 -1337
- data/src/core/lib/surface/call.h +69 -21
- data/src/core/lib/surface/call_details.cc +6 -6
- data/src/core/lib/surface/call_log_batch.cc +7 -1
- data/src/core/lib/surface/call_test_only.h +4 -1
- data/src/core/lib/surface/call_trace.cc +113 -0
- data/src/core/lib/surface/call_trace.h +30 -0
- data/src/core/lib/surface/channel.cc +230 -328
- data/src/core/lib/surface/channel.h +110 -74
- data/src/core/lib/surface/channel_init.cc +2 -3
- data/src/core/lib/surface/channel_init.h +4 -6
- data/src/core/lib/surface/channel_ping.cc +9 -3
- data/src/core/lib/surface/channel_stack_type.cc +4 -2
- data/src/core/lib/surface/channel_stack_type.h +2 -2
- data/src/core/lib/surface/completion_queue.cc +76 -94
- data/src/core/lib/surface/completion_queue.h +8 -6
- data/src/core/lib/surface/completion_queue_factory.cc +6 -0
- data/src/core/lib/surface/completion_queue_factory.h +1 -3
- data/src/core/lib/surface/event_string.cc +1 -7
- data/src/core/lib/surface/event_string.h +1 -1
- data/src/core/lib/surface/init.cc +87 -78
- data/src/core/lib/surface/init.h +0 -10
- data/src/core/lib/surface/init_internally.cc +24 -0
- data/src/core/lib/surface/init_internally.h +36 -0
- data/src/core/lib/surface/lame_client.cc +69 -107
- data/src/core/lib/surface/lame_client.h +41 -3
- data/src/core/lib/surface/metadata_array.cc +2 -0
- data/src/core/lib/surface/server.cc +153 -206
- data/src/core/lib/surface/server.h +64 -36
- data/src/core/lib/surface/validate_metadata.cc +17 -31
- data/src/core/lib/surface/validate_metadata.h +3 -0
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.cc +11 -12
- data/src/core/lib/transport/bdp_estimator.h +4 -5
- data/src/core/lib/transport/connectivity_state.cc +7 -6
- data/src/core/lib/transport/connectivity_state.h +3 -4
- data/src/core/lib/transport/error_utils.cc +45 -65
- data/src/core/lib/transport/error_utils.h +10 -5
- data/src/core/lib/transport/handshaker.cc +225 -0
- data/src/core/lib/transport/handshaker.h +167 -0
- data/src/core/lib/transport/handshaker_factory.h +74 -0
- data/src/core/lib/transport/handshaker_registry.cc +61 -0
- data/src/core/lib/transport/handshaker_registry.h +69 -0
- data/src/core/lib/transport/http_connect_handshaker.cc +400 -0
- data/src/core/lib/transport/http_connect_handshaker.h +42 -0
- data/src/core/lib/transport/metadata_batch.cc +266 -69
- data/src/core/lib/transport/metadata_batch.h +1108 -837
- data/src/core/lib/transport/parsed_metadata.cc +35 -0
- data/src/core/lib/transport/parsed_metadata.h +239 -93
- data/src/core/lib/transport/pid_controller.cc +4 -4
- data/src/core/lib/transport/status_conversion.cc +3 -3
- data/src/core/lib/transport/status_conversion.h +3 -3
- data/src/core/lib/transport/tcp_connect_handshaker.cc +246 -0
- data/src/core/lib/transport/tcp_connect_handshaker.h +39 -0
- data/src/core/lib/transport/timeout_encoding.cc +203 -70
- data/src/core/lib/transport/timeout_encoding.h +44 -10
- data/src/core/lib/transport/transport.cc +82 -58
- data/src/core/lib/transport/transport.h +154 -35
- data/src/core/lib/transport/transport_fwd.h +20 -0
- data/src/core/lib/transport/transport_impl.h +24 -0
- data/src/core/lib/transport/transport_op_string.cc +24 -66
- data/src/core/lib/uri/uri_parser.cc +248 -66
- data/src/core/lib/uri/uri_parser.h +39 -25
- data/src/core/plugin_registry/grpc_plugin_registry.cc +56 -140
- data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +61 -0
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +76 -52
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +1 -1
- data/src/core/tsi/alts/handshaker/alts_shared_resource.cc +9 -1
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +43 -28
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +1 -1
- data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +4 -3
- data/src/core/tsi/alts/handshaker/alts_tsi_utils.h +1 -1
- data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +2 -2
- data/src/core/tsi/alts/handshaker/transport_security_common_api.h +2 -2
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +7 -7
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.cc +7 -6
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +1 -1
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +14 -6
- data/src/core/tsi/fake_transport_security.cc +69 -34
- data/src/core/tsi/fake_transport_security.h +6 -0
- data/src/core/tsi/local_transport_security.cc +24 -28
- data/src/core/tsi/local_transport_security.h +1 -4
- data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +145 -0
- data/src/core/tsi/ssl/key_logging/ssl_key_logging.h +81 -0
- data/src/core/tsi/ssl/session_cache/ssl_session.h +3 -3
- data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +3 -1
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +13 -6
- data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +8 -2
- data/src/core/tsi/ssl_transport_security.cc +249 -68
- data/src/core/tsi/ssl_transport_security.h +47 -8
- data/src/core/tsi/transport_security.cc +18 -6
- data/src/core/tsi/transport_security.h +2 -1
- data/src/core/tsi/transport_security_grpc.cc +3 -2
- data/src/core/tsi/transport_security_grpc.h +5 -2
- data/src/core/tsi/transport_security_interface.h +19 -5
- data/src/ruby/ext/grpc/ext-export-truffleruby.clang +2 -0
- data/src/ruby/ext/grpc/ext-export-truffleruby.gcc +7 -0
- data/src/ruby/ext/grpc/ext-export.clang +1 -0
- data/src/ruby/ext/grpc/ext-export.gcc +1 -0
- data/src/ruby/ext/grpc/extconf.rb +61 -21
- data/src/ruby/ext/grpc/rb_channel.c +5 -2
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +26 -36
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +40 -55
- data/src/ruby/ext/grpc/rb_loader.c +6 -2
- data/src/ruby/ext/grpc/rb_server.c +7 -4
- data/src/ruby/lib/grpc/errors.rb +1 -1
- data/src/ruby/lib/grpc/generic/active_call.rb +7 -1
- data/src/ruby/lib/grpc/grpc.rb +1 -1
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/generate_proto_ruby.sh +1 -0
- data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +4 -0
- data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +2 -1
- data/src/ruby/pb/test/client.rb +769 -0
- data/src/ruby/pb/test/server.rb +252 -0
- data/src/ruby/pb/test/xds_client.rb +415 -0
- data/src/ruby/spec/channel_spec.rb +5 -43
- 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 +102 -92
- data/third_party/abseil-cpp/absl/base/attributes.h +112 -52
- data/third_party/abseil-cpp/absl/base/casts.h +61 -68
- data/third_party/abseil-cpp/absl/base/config.h +245 -74
- data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +1 -26
- data/third_party/abseil-cpp/absl/base/internal/cycleclock.cc +12 -42
- data/third_party/abseil-cpp/absl/base/internal/cycleclock.h +67 -2
- data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +3 -3
- data/third_party/abseil-cpp/absl/base/internal/endian.h +17 -62
- data/third_party/abseil-cpp/absl/base/internal/fast_type_id.h +50 -0
- data/third_party/abseil-cpp/absl/base/internal/invoke.h +54 -0
- data/third_party/abseil-cpp/absl/base/internal/prefetch.h +138 -0
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +29 -22
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +13 -12
- data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +3 -0
- data/third_party/abseil-cpp/absl/base/internal/spinlock.h +11 -1
- data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +2 -5
- data/third_party/abseil-cpp/absl/base/internal/spinlock_wait.h +2 -0
- 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 +68 -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 -4
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +22 -7
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +15 -6
- 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/optimization.h +19 -11
- data/third_party/abseil-cpp/absl/base/options.h +1 -1
- data/third_party/abseil-cpp/absl/base/thread_annotations.h +2 -2
- data/third_party/abseil-cpp/absl/cleanup/cleanup.h +140 -0
- data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +100 -0
- data/third_party/abseil-cpp/absl/container/fixed_array.h +2 -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 +510 -0
- data/third_party/abseil-cpp/absl/container/inlined_vector.h +118 -99
- data/third_party/abseil-cpp/absl/container/internal/common.h +6 -5
- data/third_party/abseil-cpp/absl/container/internal/container_memory.h +10 -28
- data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +17 -15
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +77 -113
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +62 -85
- data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +417 -431
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +3 -2
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +18 -8
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +724 -262
- data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc +45 -88
- data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +11 -1
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +16 -11
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +7 -2
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +8 -3
- 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 +13 -5
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +110 -0
- 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 +236 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +33 -10
- data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +8 -2
- data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +35 -4
- data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +2 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize.cc +7 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +60 -7
- data/third_party/abseil-cpp/absl/debugging/symbolize_emscripten.inc +72 -0
- data/third_party/abseil-cpp/absl/functional/any_invocable.h +313 -0
- data/third_party/abseil-cpp/absl/functional/bind_front.h +10 -1
- data/third_party/abseil-cpp/absl/functional/function_ref.h +6 -2
- data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +857 -0
- data/third_party/abseil-cpp/absl/hash/hash.h +104 -8
- data/third_party/abseil-cpp/absl/hash/internal/hash.cc +15 -16
- data/third_party/abseil-cpp/absl/hash/internal/hash.h +297 -51
- data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc +123 -0
- data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.h +50 -0
- data/third_party/abseil-cpp/absl/memory/memory.h +1 -1
- data/third_party/abseil-cpp/absl/meta/type_traits.h +32 -2
- data/third_party/abseil-cpp/absl/numeric/bits.h +2 -1
- data/third_party/abseil-cpp/absl/numeric/int128.cc +7 -12
- data/third_party/abseil-cpp/absl/numeric/int128.h +148 -75
- data/third_party/abseil-cpp/absl/numeric/int128_have_intrinsic.inc +19 -25
- data/third_party/abseil-cpp/absl/numeric/int128_no_intrinsic.inc +73 -70
- data/third_party/abseil-cpp/absl/profiling/internal/exponential_biased.cc +93 -0
- data/third_party/abseil-cpp/absl/profiling/internal/exponential_biased.h +130 -0
- data/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h +245 -0
- data/third_party/abseil-cpp/absl/random/bernoulli_distribution.h +200 -0
- data/third_party/abseil-cpp/absl/random/beta_distribution.h +427 -0
- data/third_party/abseil-cpp/absl/random/discrete_distribution.cc +98 -0
- data/third_party/abseil-cpp/absl/random/discrete_distribution.h +247 -0
- data/third_party/abseil-cpp/absl/random/distributions.h +452 -0
- data/third_party/abseil-cpp/absl/random/exponential_distribution.h +165 -0
- data/third_party/abseil-cpp/absl/random/gaussian_distribution.cc +104 -0
- data/third_party/abseil-cpp/absl/random/gaussian_distribution.h +275 -0
- data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +95 -0
- data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +269 -0
- data/third_party/abseil-cpp/absl/random/internal/fastmath.h +57 -0
- data/third_party/abseil-cpp/absl/random/internal/generate_real.h +144 -0
- data/third_party/abseil-cpp/absl/random/internal/iostream_state_saver.h +245 -0
- data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +161 -0
- data/third_party/abseil-cpp/absl/random/internal/pcg_engine.h +308 -0
- data/third_party/abseil-cpp/absl/random/internal/platform.h +171 -0
- data/third_party/abseil-cpp/absl/random/internal/pool_urbg.cc +253 -0
- data/third_party/abseil-cpp/absl/random/internal/pool_urbg.h +131 -0
- data/third_party/abseil-cpp/absl/random/internal/randen.cc +91 -0
- data/third_party/abseil-cpp/absl/random/internal/randen.h +96 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +225 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_detect.h +33 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +264 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_hwaes.cc +526 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_hwaes.h +50 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_round_keys.cc +462 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_slow.cc +471 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_slow.h +40 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_traits.h +88 -0
- data/third_party/abseil-cpp/absl/random/internal/salted_seed_seq.h +165 -0
- data/third_party/abseil-cpp/absl/random/internal/seed_material.cc +267 -0
- data/third_party/abseil-cpp/absl/random/internal/seed_material.h +104 -0
- data/third_party/abseil-cpp/absl/random/internal/traits.h +149 -0
- data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +244 -0
- data/third_party/abseil-cpp/absl/random/internal/wide_multiply.h +96 -0
- data/third_party/abseil-cpp/absl/random/log_uniform_int_distribution.h +256 -0
- data/third_party/abseil-cpp/absl/random/poisson_distribution.h +261 -0
- data/third_party/abseil-cpp/absl/random/random.h +189 -0
- data/third_party/abseil-cpp/absl/random/seed_gen_exception.cc +46 -0
- data/third_party/abseil-cpp/absl/random/seed_gen_exception.h +55 -0
- data/third_party/abseil-cpp/absl/random/seed_sequences.cc +29 -0
- data/third_party/abseil-cpp/absl/random/seed_sequences.h +111 -0
- data/third_party/abseil-cpp/absl/random/uniform_int_distribution.h +275 -0
- data/third_party/abseil-cpp/absl/random/uniform_real_distribution.h +202 -0
- data/third_party/abseil-cpp/absl/random/zipf_distribution.h +272 -0
- data/third_party/abseil-cpp/absl/status/internal/status_internal.h +22 -5
- data/third_party/abseil-cpp/absl/status/status.cc +183 -19
- data/third_party/abseil-cpp/absl/status/status.h +41 -27
- data/third_party/abseil-cpp/absl/status/statusor.cc +34 -2
- data/third_party/abseil-cpp/absl/status/statusor.h +40 -24
- data/third_party/abseil-cpp/absl/strings/ascii.h +4 -4
- data/third_party/abseil-cpp/absl/strings/charconv.cc +3 -3
- data/third_party/abseil-cpp/absl/strings/charconv.h +3 -2
- data/third_party/abseil-cpp/absl/strings/cord.cc +469 -1094
- data/third_party/abseil-cpp/absl/strings/cord.h +392 -144
- 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 +572 -0
- data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +1 -1
- 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 +23 -29
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +208 -96
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +1228 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h +924 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.cc +187 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.h +267 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.cc +69 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.h +212 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.cc +62 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.h +50 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.cc +54 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.h +102 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +60 -19
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +48 -172
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.h +42 -24
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring_reader.h +4 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_functions.cc +96 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_functions.h +85 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.cc +139 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.h +131 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +418 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_info.h +298 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_statistics.h +88 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_update_scope.h +71 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_update_tracker.h +123 -0
- data/third_party/abseil-cpp/absl/strings/internal/escaping.cc +6 -5
- data/third_party/abseil-cpp/absl/strings/internal/ostringstream.cc +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/resize_uninitialized.h +48 -2
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +9 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +3 -4
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +39 -8
- data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +7 -2
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +10 -11
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +41 -20
- 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 +62 -73
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +28 -18
- 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 +35 -35
- data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +10 -2
- data/third_party/abseil-cpp/absl/strings/internal/utf8.cc +9 -9
- data/third_party/abseil-cpp/absl/strings/numbers.cc +9 -9
- data/third_party/abseil-cpp/absl/strings/numbers.h +60 -23
- data/third_party/abseil-cpp/absl/strings/str_cat.cc +4 -4
- data/third_party/abseil-cpp/absl/strings/str_cat.h +20 -13
- data/third_party/abseil-cpp/absl/strings/str_format.h +1 -2
- 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 +18 -34
- data/third_party/abseil-cpp/absl/strings/string_view.h +123 -41
- data/third_party/abseil-cpp/absl/strings/strip.h +8 -6
- data/third_party/abseil-cpp/absl/strings/substitute.cc +2 -1
- data/third_party/abseil-cpp/absl/strings/substitute.h +109 -76
- data/third_party/abseil-cpp/absl/synchronization/blocking_counter.cc +25 -15
- data/third_party/abseil-cpp/absl/synchronization/blocking_counter.h +5 -3
- data/third_party/abseil-cpp/absl/synchronization/internal/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/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 +1 -26
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +10 -4
- data/third_party/abseil-cpp/absl/synchronization/mutex.cc +75 -40
- data/third_party/abseil-cpp/absl/synchronization/mutex.h +20 -12
- data/third_party/abseil-cpp/absl/synchronization/notification.h +3 -2
- data/third_party/abseil-cpp/absl/time/civil_time.cc +1 -3
- data/third_party/abseil-cpp/absl/time/duration.cc +5 -4
- 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/include/cctz/time_zone.h +93 -20
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.cc +1 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.h +2 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +83 -21
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +49 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +1 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +2 -3
- data/third_party/abseil-cpp/absl/time/time.h +82 -47
- data/third_party/abseil-cpp/absl/types/bad_optional_access.h +1 -1
- data/third_party/abseil-cpp/absl/types/bad_variant_access.h +2 -2
- data/third_party/abseil-cpp/absl/types/internal/optional.h +8 -0
- data/third_party/abseil-cpp/absl/types/internal/variant.h +3 -3
- data/third_party/abseil-cpp/absl/types/optional.h +17 -14
- data/third_party/abseil-cpp/absl/types/span.h +5 -4
- data/third_party/boringssl-with-bazel/err_data.c +681 -677
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +19 -11
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +41 -30
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +59 -47
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c +24 -28
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +28 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +48 -272
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.c +8 -6
- data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +13 -0
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c +3 -1
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +21 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +12 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +1 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +7 -7
- data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/mem.c +18 -0
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7.c +29 -0
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/pool/internal.h +5 -1
- data/third_party/boringssl-with-bazel/src/crypto/pool/pool.c +59 -23
- data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +2 -18
- data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +8 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +216 -11
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_cache.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_lib.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_map.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_node.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_tree.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +21 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +971 -253
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +3 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +0 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/base64.h +8 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +13 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +4 -12
- data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +27 -41
- data/third_party/boringssl-with-bazel/src/include/openssl/ec_key.h +12 -27
- data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +8 -10
- data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +29 -55
- data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +12 -13
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +6 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/pool.h +7 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +24 -28
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +29 -11
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +12 -43
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +4 -3
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +3 -3
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +4 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +4 -0
- data/third_party/cares/cares/include/ares.h +742 -0
- data/third_party/cares/cares/include/ares_dns.h +112 -0
- data/third_party/cares/cares/{ares_rules.h → include/ares_rules.h} +0 -0
- data/third_party/cares/cares/include/ares_version.h +24 -0
- data/third_party/cares/cares/src/lib/ares__close_sockets.c +61 -0
- data/third_party/cares/cares/src/lib/ares__get_hostent.c +260 -0
- data/third_party/cares/cares/src/lib/ares__parse_into_addrinfo.c +260 -0
- data/third_party/cares/cares/{ares__read_line.c → src/lib/ares__read_line.c} +0 -0
- data/third_party/cares/cares/src/lib/ares__readaddrinfo.c +264 -0
- data/third_party/cares/cares/src/lib/ares__sortaddrinfo.c +499 -0
- data/third_party/cares/cares/{ares__timeval.c → src/lib/ares__timeval.c} +0 -0
- data/third_party/cares/cares/src/lib/ares_android.c +444 -0
- data/third_party/cares/cares/src/lib/ares_android.h +27 -0
- data/third_party/cares/cares/{ares_cancel.c → src/lib/ares_cancel.c} +0 -0
- data/third_party/cares/cares/src/lib/ares_create_query.c +197 -0
- data/third_party/cares/cares/src/lib/ares_data.c +240 -0
- data/third_party/cares/cares/src/lib/ares_data.h +74 -0
- data/third_party/cares/cares/{ares_destroy.c → src/lib/ares_destroy.c} +0 -0
- data/third_party/cares/cares/src/lib/ares_expand_name.c +300 -0
- data/third_party/cares/cares/src/lib/ares_expand_string.c +67 -0
- data/third_party/cares/cares/{ares_fds.c → src/lib/ares_fds.c} +0 -0
- data/third_party/cares/cares/src/lib/ares_free_hostent.c +43 -0
- data/third_party/cares/cares/{ares_free_string.c → src/lib/ares_free_string.c} +0 -0
- data/third_party/cares/cares/src/lib/ares_freeaddrinfo.c +59 -0
- data/third_party/cares/cares/src/lib/ares_getaddrinfo.c +772 -0
- data/third_party/cares/cares/src/lib/ares_getenv.c +28 -0
- data/third_party/cares/cares/{ares_getenv.h → src/lib/ares_getenv.h} +0 -0
- data/third_party/cares/cares/src/lib/ares_gethostbyaddr.c +287 -0
- data/third_party/cares/cares/src/lib/ares_gethostbyname.c +534 -0
- data/third_party/cares/cares/src/lib/ares_getnameinfo.c +447 -0
- data/third_party/cares/cares/{ares_getsock.c → src/lib/ares_getsock.c} +0 -0
- data/third_party/cares/cares/{ares_inet_net_pton.h → src/lib/ares_inet_net_pton.h} +0 -0
- data/third_party/cares/cares/src/lib/ares_init.c +2654 -0
- data/third_party/cares/cares/{ares_iphlpapi.h → src/lib/ares_iphlpapi.h} +0 -0
- data/third_party/cares/cares/src/lib/ares_ipv6.h +85 -0
- data/third_party/cares/cares/src/lib/ares_library_init.c +200 -0
- data/third_party/cares/cares/src/lib/ares_library_init.h +43 -0
- data/third_party/cares/cares/{ares_llist.c → src/lib/ares_llist.c} +0 -0
- data/third_party/cares/cares/{ares_llist.h → src/lib/ares_llist.h} +0 -0
- data/third_party/cares/cares/{ares_mkquery.c → src/lib/ares_mkquery.c} +0 -0
- data/third_party/cares/cares/src/lib/ares_nameser.h +482 -0
- data/third_party/cares/cares/{ares_nowarn.c → src/lib/ares_nowarn.c} +0 -0
- data/third_party/cares/cares/{ares_nowarn.h → src/lib/ares_nowarn.h} +0 -0
- data/third_party/cares/cares/{ares_options.c → src/lib/ares_options.c} +0 -0
- data/third_party/cares/cares/src/lib/ares_parse_a_reply.c +209 -0
- data/third_party/cares/cares/src/lib/ares_parse_aaaa_reply.c +212 -0
- data/third_party/cares/cares/src/lib/ares_parse_caa_reply.c +199 -0
- data/third_party/cares/cares/src/lib/ares_parse_mx_reply.c +164 -0
- data/third_party/cares/cares/src/lib/ares_parse_naptr_reply.c +183 -0
- data/third_party/cares/cares/src/lib/ares_parse_ns_reply.c +177 -0
- data/third_party/cares/cares/src/lib/ares_parse_ptr_reply.c +228 -0
- data/third_party/cares/cares/src/lib/ares_parse_soa_reply.c +179 -0
- data/third_party/cares/cares/src/lib/ares_parse_srv_reply.c +168 -0
- data/third_party/cares/cares/src/lib/ares_parse_txt_reply.c +214 -0
- data/third_party/cares/cares/{ares_platform.c → src/lib/ares_platform.c} +0 -0
- data/third_party/cares/cares/{ares_platform.h → src/lib/ares_platform.h} +0 -0
- data/third_party/cares/cares/src/lib/ares_private.h +423 -0
- data/third_party/cares/cares/src/lib/ares_process.c +1548 -0
- data/third_party/cares/cares/src/lib/ares_query.c +180 -0
- data/third_party/cares/cares/src/lib/ares_search.c +321 -0
- data/third_party/cares/cares/src/lib/ares_send.c +131 -0
- data/third_party/cares/cares/src/lib/ares_setup.h +220 -0
- data/third_party/cares/cares/{ares_strcasecmp.c → src/lib/ares_strcasecmp.c} +0 -0
- data/third_party/cares/cares/{ares_strcasecmp.h → src/lib/ares_strcasecmp.h} +0 -0
- data/third_party/cares/cares/{ares_strdup.c → src/lib/ares_strdup.c} +0 -0
- data/third_party/cares/cares/{ares_strdup.h → src/lib/ares_strdup.h} +0 -0
- data/third_party/cares/cares/{ares_strerror.c → src/lib/ares_strerror.c} +0 -0
- data/third_party/cares/cares/src/lib/ares_strsplit.c +178 -0
- data/third_party/cares/cares/{ares_strsplit.h → src/lib/ares_strsplit.h} +0 -0
- data/third_party/cares/cares/{ares_timeout.c → src/lib/ares_timeout.c} +0 -0
- data/third_party/cares/cares/{ares_version.c → src/lib/ares_version.c} +0 -0
- data/third_party/cares/cares/{ares_writev.c → src/lib/ares_writev.c} +0 -0
- data/third_party/cares/cares/src/lib/ares_writev.h +36 -0
- data/third_party/cares/cares/{bitncmp.c → src/lib/bitncmp.c} +0 -0
- data/third_party/cares/cares/{bitncmp.h → src/lib/bitncmp.h} +0 -0
- data/third_party/cares/cares/src/lib/config-dos.h +115 -0
- data/third_party/cares/cares/{config-win32.h → src/lib/config-win32.h} +0 -0
- data/third_party/cares/cares/src/lib/inet_net_pton.c +444 -0
- data/third_party/cares/cares/src/lib/inet_ntop.c +201 -0
- data/third_party/cares/cares/{setup_once.h → src/lib/setup_once.h} +0 -0
- data/third_party/cares/cares/{windows_port.c → src/lib/windows_port.c} +0 -0
- data/third_party/upb/third_party/utf8_range/naive.c +92 -0
- data/third_party/upb/third_party/utf8_range/range2-neon.c +157 -0
- data/third_party/upb/third_party/utf8_range/range2-sse.c +170 -0
- data/third_party/upb/third_party/utf8_range/utf8_range.h +9 -0
- data/third_party/upb/upb/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 +832 -382
- data/third_party/upb/upb/decode.h +44 -17
- data/third_party/upb/upb/decode_fast.c +304 -302
- data/third_party/upb/upb/decode_fast.h +18 -18
- data/third_party/upb/upb/def.c +2083 -982
- data/third_party/upb/upb/def.h +339 -260
- data/third_party/upb/upb/def.hpp +144 -171
- data/third_party/upb/upb/encode.c +287 -185
- data/third_party/upb/upb/encode.h +24 -16
- 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/internal/decode.h +211 -0
- data/third_party/upb/upb/internal/table.h +385 -0
- data/third_party/upb/upb/internal/upb.h +68 -0
- 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 +780 -0
- data/third_party/upb/upb/json_encode.h +65 -0
- 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 +132 -161
- data/third_party/upb/upb/msg.h +18 -55
- data/third_party/upb/upb/msg_internal.h +404 -254
- data/third_party/upb/upb/port_def.inc +10 -1
- data/third_party/upb/upb/port_undef.inc +2 -0
- data/third_party/upb/upb/reflection.c +203 -280
- data/third_party/upb/upb/reflection.h +40 -126
- data/third_party/upb/upb/reflection.hpp +6 -6
- 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 +233 -149
- data/third_party/upb/upb/table_internal.h +9 -324
- data/third_party/upb/upb/text_encode.c +116 -92
- data/third_party/upb/upb/text_encode.h +10 -10
- data/third_party/upb/upb/upb.c +34 -273
- data/third_party/upb/upb/upb.h +79 -262
- data/third_party/upb/upb/upb.hpp +31 -28
- data/third_party/xxhash/xxhash.h +607 -352
- data/third_party/zlib/compress.c +3 -3
- data/third_party/zlib/crc32.c +975 -292
- data/third_party/zlib/crc32.h +9441 -436
- data/third_party/zlib/deflate.c +183 -129
- data/third_party/zlib/deflate.h +12 -15
- data/third_party/zlib/gzguts.h +3 -2
- data/third_party/zlib/gzlib.c +6 -4
- data/third_party/zlib/gzread.c +8 -12
- data/third_party/zlib/gzwrite.c +26 -14
- data/third_party/zlib/infback.c +12 -8
- data/third_party/zlib/inffast.c +14 -14
- data/third_party/zlib/inflate.c +44 -10
- data/third_party/zlib/inflate.h +3 -2
- data/third_party/zlib/inftrees.c +3 -3
- data/third_party/zlib/inftrees.h +1 -1
- data/third_party/zlib/trees.c +85 -107
- data/third_party/zlib/uncompr.c +2 -2
- data/third_party/zlib/zconf.h +16 -3
- data/third_party/zlib/zlib.h +129 -106
- data/third_party/zlib/zutil.c +11 -9
- data/third_party/zlib/zutil.h +13 -9
- metadata +713 -295
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +0 -392
- data/src/core/ext/filters/client_channel/http_connect_handshaker.h +0 -42
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +0 -44
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +0 -83
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +0 -60
- data/src/core/ext/filters/client_channel/lb_policy.cc +0 -131
- data/src/core/ext/filters/client_channel/lb_policy.h +0 -425
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +0 -48
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +0 -185
- data/src/core/ext/filters/client_channel/lb_policy_registry.h +0 -65
- data/src/core/ext/filters/client_channel/proxy_mapper.h +0 -54
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +0 -89
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.h +0 -50
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_event_engine.cc +0 -31
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_event_engine.cc +0 -28
- data/src/core/ext/filters/client_channel/resolver.cc +0 -87
- data/src/core/ext/filters/client_channel/resolver.h +0 -136
- data/src/core/ext/filters/client_channel/resolver_factory.h +0 -75
- data/src/core/ext/filters/client_channel/resolver_registry.cc +0 -195
- data/src/core/ext/filters/client_channel/resolver_registry.h +0 -89
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +0 -189
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +0 -99
- data/src/core/ext/filters/client_channel/server_address.cc +0 -170
- data/src/core/ext/filters/client_channel/server_address.h +0 -144
- data/src/core/ext/filters/client_channel/subchannel_interface.h +0 -130
- data/src/core/ext/filters/client_idle/client_idle_filter.cc +0 -264
- data/src/core/ext/filters/client_idle/idle_filter_state.cc +0 -96
- data/src/core/ext/filters/client_idle/idle_filter_state.h +0 -66
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +0 -181
- data/src/core/ext/filters/fault_injection/service_config_parser.h +0 -85
- data/src/core/ext/filters/max_age/max_age_filter.cc +0 -560
- data/src/core/ext/filters/max_age/max_age_filter.h +0 -26
- data/src/core/ext/service_config/service_config.cc +0 -227
- data/src/core/ext/service_config/service_config.h +0 -127
- data/src/core/ext/service_config/service_config_call_data.h +0 -72
- data/src/core/ext/service_config/service_config_parser.cc +0 -89
- data/src/core/ext/service_config/service_config_parser.h +0 -97
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +0 -119
- data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +0 -95
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +0 -189
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +0 -53
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +0 -83
- data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +0 -125
- data/src/core/ext/transport/chttp2/transport/chttp2_plugin.cc +0 -37
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_index.h +0 -107
- data/src/core/ext/transport/chttp2/transport/hpack_utils.cc +0 -46
- data/src/core/ext/transport/chttp2/transport/hpack_utils.h +0 -30
- data/src/core/ext/transport/chttp2/transport/popularity_count.h +0 -60
- data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.c +0 -27
- data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.h +0 -62
- data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.c +0 -27
- data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.h +0 -62
- data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.c +0 -27
- data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.h +0 -62
- data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.c +0 -27
- data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.h +0 -62
- data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.c +0 -27
- data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.h +0 -62
- data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.c +0 -72
- data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.h +0 -35
- data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c +0 -73
- data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.h +0 -35
- data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.c +0 -72
- data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.h +0 -35
- data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.c +0 -80
- data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.h +0 -35
- data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.c +0 -74
- data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.h +0 -35
- data/src/core/ext/xds/certificate_provider_factory.h +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/avl/avl.cc +0 -306
- data/src/core/lib/channel/handshaker.cc +0 -222
- data/src/core/lib/channel/handshaker.h +0 -161
- data/src/core/lib/channel/handshaker_factory.h +0 -50
- data/src/core/lib/channel/handshaker_registry.cc +0 -50
- data/src/core/lib/channel/handshaker_registry.h +0 -71
- data/src/core/lib/compression/algorithm_metadata.h +0 -62
- data/src/core/lib/compression/compression_args.cc +0 -138
- data/src/core/lib/compression/compression_args.h +0 -56
- data/src/core/lib/compression/stream_compression.cc +0 -81
- data/src/core/lib/compression/stream_compression.h +0 -117
- data/src/core/lib/compression/stream_compression_gzip.cc +0 -231
- data/src/core/lib/compression/stream_compression_gzip.h +0 -28
- data/src/core/lib/compression/stream_compression_identity.cc +0 -91
- data/src/core/lib/compression/stream_compression_identity.h +0 -29
- data/src/core/lib/event_engine/endpoint_config.cc +0 -45
- data/src/core/lib/event_engine/endpoint_config_internal.h +0 -42
- data/src/core/lib/event_engine/event_engine.cc +0 -50
- data/src/core/lib/event_engine/sockaddr.cc +0 -40
- data/src/core/lib/event_engine/sockaddr.h +0 -44
- 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 -151
- data/src/core/lib/gprpp/arena.cc +0 -104
- data/src/core/lib/gprpp/arena.h +0 -131
- data/src/core/lib/iomgr/endpoint_pair_event_engine.cc +0 -32
- data/src/core/lib/iomgr/error_internal.h +0 -66
- data/src/core/lib/iomgr/ev_epollex_linux.cc +0 -1654
- data/src/core/lib/iomgr/ev_epollex_linux.h +0 -30
- data/src/core/lib/iomgr/event_engine/closure.cc +0 -77
- data/src/core/lib/iomgr/event_engine/closure.h +0 -42
- data/src/core/lib/iomgr/event_engine/endpoint.cc +0 -173
- data/src/core/lib/iomgr/event_engine/endpoint.h +0 -52
- data/src/core/lib/iomgr/event_engine/iomgr.cc +0 -104
- data/src/core/lib/iomgr/event_engine/iomgr.h +0 -42
- data/src/core/lib/iomgr/event_engine/pollset.cc +0 -88
- data/src/core/lib/iomgr/event_engine/pollset.h +0 -25
- data/src/core/lib/iomgr/event_engine/promise.h +0 -51
- data/src/core/lib/iomgr/event_engine/resolved_address_internal.cc +0 -41
- data/src/core/lib/iomgr/event_engine/resolved_address_internal.h +0 -35
- data/src/core/lib/iomgr/event_engine/resolver.cc +0 -114
- data/src/core/lib/iomgr/event_engine/tcp.cc +0 -293
- data/src/core/lib/iomgr/event_engine/timer.cc +0 -62
- 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/iomgr_custom.cc +0 -79
- data/src/core/lib/iomgr/iomgr_custom.h +0 -49
- data/src/core/lib/iomgr/is_epollexclusive_available.cc +0 -119
- data/src/core/lib/iomgr/is_epollexclusive_available.h +0 -36
- data/src/core/lib/iomgr/pollset_custom.cc +0 -105
- data/src/core/lib/iomgr/pollset_custom.h +0 -37
- data/src/core/lib/iomgr/pollset_set_custom.cc +0 -47
- data/src/core/lib/iomgr/pollset_set_custom.h +0 -26
- data/src/core/lib/iomgr/resolve_address_custom.cc +0 -169
- data/src/core/lib/iomgr/resolve_address_custom.h +0 -44
- data/src/core/lib/iomgr/resource_quota.cc +0 -1106
- data/src/core/lib/iomgr/resource_quota.h +0 -226
- data/src/core/lib/iomgr/sys_epoll_wrapper.h +0 -30
- data/src/core/lib/iomgr/tcp_client_custom.cc +0 -152
- data/src/core/lib/iomgr/tcp_custom.cc +0 -377
- data/src/core/lib/iomgr/tcp_custom.h +0 -86
- data/src/core/lib/iomgr/tcp_server_custom.cc +0 -467
- 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/iomgr/timer_custom.cc +0 -96
- data/src/core/lib/iomgr/timer_custom.h +0 -43
- data/src/core/lib/iomgr/work_serializer.cc +0 -155
- data/src/core/lib/iomgr/work_serializer.h +0 -81
- 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/security/authorization/sdk_server_authz_filter.cc +0 -171
- data/src/core/lib/security/authorization/sdk_server_authz_filter.h +0 -67
- data/src/core/lib/security/credentials/credentials_metadata.cc +0 -61
- data/src/core/lib/security/security_connector/load_system_roots_linux.cc +0 -171
- 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_intern.cc +0 -367
- data/src/core/lib/slice/slice_refcount.cc +0 -17
- data/src/core/lib/slice/slice_refcount_base.h +0 -173
- data/src/core/lib/slice/slice_split.cc +0 -100
- data/src/core/lib/slice/slice_split.h +0 -40
- data/src/core/lib/slice/slice_utils.h +0 -200
- data/src/core/lib/slice/static_slice.cc +0 -529
- data/src/core/lib/slice/static_slice.h +0 -331
- data/src/core/lib/surface/init_secure.cc +0 -103
- data/src/core/lib/transport/byte_stream.cc +0 -158
- data/src/core/lib/transport/byte_stream.h +0 -166
- data/src/core/lib/transport/metadata.cc +0 -714
- data/src/core/lib/transport/metadata.h +0 -449
- data/src/core/lib/transport/static_metadata.cc +0 -1117
- data/src/core/lib/transport/static_metadata.h +0 -340
- data/src/core/lib/transport/status_metadata.cc +0 -63
- data/src/core/lib/transport/status_metadata.h +0 -48
- data/third_party/abseil-cpp/absl/base/internal/exponential_biased.cc +0 -93
- data/third_party/abseil-cpp/absl/base/internal/exponential_biased.h +0 -130
- data/third_party/abseil-cpp/absl/container/internal/have_sse.h +0 -50
- data/third_party/abseil-cpp/absl/hash/internal/wyhash.cc +0 -111
- data/third_party/abseil-cpp/absl/hash/internal/wyhash.h +0 -48
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_enum.c +0 -93
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_int.h +0 -217
- data/third_party/cares/cares/ares.h +0 -670
- data/third_party/cares/cares/ares__close_sockets.c +0 -61
- data/third_party/cares/cares/ares__get_hostent.c +0 -261
- data/third_party/cares/cares/ares_create_query.c +0 -206
- data/third_party/cares/cares/ares_data.c +0 -222
- data/third_party/cares/cares/ares_data.h +0 -72
- data/third_party/cares/cares/ares_dns.h +0 -103
- data/third_party/cares/cares/ares_expand_name.c +0 -209
- data/third_party/cares/cares/ares_expand_string.c +0 -70
- data/third_party/cares/cares/ares_free_hostent.c +0 -41
- data/third_party/cares/cares/ares_getenv.c +0 -30
- data/third_party/cares/cares/ares_gethostbyaddr.c +0 -294
- data/third_party/cares/cares/ares_gethostbyname.c +0 -529
- data/third_party/cares/cares/ares_getnameinfo.c +0 -453
- data/third_party/cares/cares/ares_getopt.c +0 -122
- data/third_party/cares/cares/ares_getopt.h +0 -53
- data/third_party/cares/cares/ares_init.c +0 -2615
- data/third_party/cares/cares/ares_ipv6.h +0 -78
- data/third_party/cares/cares/ares_library_init.c +0 -195
- data/third_party/cares/cares/ares_library_init.h +0 -43
- data/third_party/cares/cares/ares_parse_a_reply.c +0 -264
- data/third_party/cares/cares/ares_parse_aaaa_reply.c +0 -264
- data/third_party/cares/cares/ares_parse_mx_reply.c +0 -170
- data/third_party/cares/cares/ares_parse_naptr_reply.c +0 -194
- data/third_party/cares/cares/ares_parse_ns_reply.c +0 -183
- data/third_party/cares/cares/ares_parse_ptr_reply.c +0 -221
- data/third_party/cares/cares/ares_parse_soa_reply.c +0 -133
- data/third_party/cares/cares/ares_parse_srv_reply.c +0 -179
- data/third_party/cares/cares/ares_parse_txt_reply.c +0 -220
- data/third_party/cares/cares/ares_private.h +0 -382
- data/third_party/cares/cares/ares_process.c +0 -1473
- data/third_party/cares/cares/ares_query.c +0 -186
- data/third_party/cares/cares/ares_search.c +0 -323
- data/third_party/cares/cares/ares_send.c +0 -137
- data/third_party/cares/cares/ares_setup.h +0 -217
- data/third_party/cares/cares/ares_strsplit.c +0 -174
- data/third_party/cares/cares/ares_version.h +0 -24
- data/third_party/cares/cares/inet_net_pton.c +0 -450
- data/third_party/cares/cares/inet_ntop.c +0 -207
- data/third_party/upb/upb/decode_internal.h +0 -193
- data/third_party/upb/upb/upb_internal.h +0 -58
@@ -18,30 +18,61 @@
|
|
18
18
|
|
19
19
|
#include "src/core/ext/filters/client_channel/retry_filter.h"
|
20
20
|
|
21
|
+
#include <inttypes.h>
|
22
|
+
#include <limits.h>
|
23
|
+
#include <stddef.h>
|
24
|
+
|
25
|
+
#include <memory>
|
26
|
+
#include <new>
|
27
|
+
#include <string>
|
28
|
+
#include <utility>
|
29
|
+
|
21
30
|
#include "absl/container/inlined_vector.h"
|
31
|
+
#include "absl/status/status.h"
|
22
32
|
#include "absl/status/statusor.h"
|
33
|
+
#include "absl/strings/str_cat.h"
|
34
|
+
#include "absl/strings/string_view.h"
|
23
35
|
#include "absl/strings/strip.h"
|
36
|
+
#include "absl/types/optional.h"
|
24
37
|
|
38
|
+
#include <grpc/impl/codegen/grpc_types.h>
|
39
|
+
#include <grpc/slice.h>
|
40
|
+
#include <grpc/status.h>
|
41
|
+
#include <grpc/support/atm.h>
|
25
42
|
#include <grpc/support/log.h>
|
26
43
|
|
27
44
|
#include "src/core/ext/filters/client_channel/client_channel.h"
|
45
|
+
#include "src/core/ext/filters/client_channel/config_selector.h"
|
28
46
|
#include "src/core/ext/filters/client_channel/retry_service_config.h"
|
29
47
|
#include "src/core/ext/filters/client_channel/retry_throttle.h"
|
30
|
-
#include "src/core/ext/service_config/service_config.h"
|
31
|
-
#include "src/core/ext/service_config/service_config_call_data.h"
|
32
48
|
#include "src/core/lib/backoff/backoff.h"
|
33
49
|
#include "src/core/lib/channel/channel_args.h"
|
34
50
|
#include "src/core/lib/channel/channel_stack.h"
|
51
|
+
#include "src/core/lib/channel/context.h"
|
35
52
|
#include "src/core/lib/channel/status_util.h"
|
36
|
-
#include "src/core/lib/
|
53
|
+
#include "src/core/lib/debug/trace.h"
|
54
|
+
#include "src/core/lib/gpr/useful.h"
|
55
|
+
#include "src/core/lib/gprpp/construct_destruct.h"
|
56
|
+
#include "src/core/lib/gprpp/debug_location.h"
|
57
|
+
#include "src/core/lib/gprpp/orphanable.h"
|
58
|
+
#include "src/core/lib/gprpp/ref_counted.h"
|
59
|
+
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
60
|
+
#include "src/core/lib/gprpp/status_helper.h"
|
61
|
+
#include "src/core/lib/gprpp/time.h"
|
62
|
+
#include "src/core/lib/iomgr/call_combiner.h"
|
63
|
+
#include "src/core/lib/iomgr/closure.h"
|
64
|
+
#include "src/core/lib/iomgr/error.h"
|
65
|
+
#include "src/core/lib/iomgr/exec_ctx.h"
|
37
66
|
#include "src/core/lib/iomgr/polling_entity.h"
|
38
|
-
#include "src/core/lib/
|
39
|
-
#include "src/core/lib/
|
67
|
+
#include "src/core/lib/iomgr/timer.h"
|
68
|
+
#include "src/core/lib/resource_quota/arena.h"
|
69
|
+
#include "src/core/lib/service_config/service_config.h"
|
70
|
+
#include "src/core/lib/service_config/service_config_call_data.h"
|
71
|
+
#include "src/core/lib/slice/slice.h"
|
72
|
+
#include "src/core/lib/slice/slice_buffer.h"
|
40
73
|
#include "src/core/lib/transport/error_utils.h"
|
41
|
-
#include "src/core/lib/transport/metadata.h"
|
42
74
|
#include "src/core/lib/transport/metadata_batch.h"
|
43
|
-
#include "src/core/lib/transport/
|
44
|
-
#include "src/core/lib/transport/status_metadata.h"
|
75
|
+
#include "src/core/lib/transport/transport.h"
|
45
76
|
#include "src/core/lib/uri/uri_parser.h"
|
46
77
|
|
47
78
|
//
|
@@ -87,7 +118,6 @@
|
|
87
118
|
// which batches need to be sent on the LB call for a given attempt.
|
88
119
|
|
89
120
|
// TODO(roth): In subsequent PRs:
|
90
|
-
// - add support for transparent retries (including initial metadata)
|
91
121
|
// - implement hedging
|
92
122
|
|
93
123
|
// By default, we buffer 256 KiB per RPC for retries.
|
@@ -121,7 +151,7 @@ class RetryFilter {
|
|
121
151
|
grpc_channel_element_args* args) {
|
122
152
|
GPR_ASSERT(args->is_last);
|
123
153
|
GPR_ASSERT(elem->filter == &kRetryFilterVtable);
|
124
|
-
grpc_error_handle error
|
154
|
+
grpc_error_handle error;
|
125
155
|
new (elem->channel_data) RetryFilter(args->channel_args, &error);
|
126
156
|
return error;
|
127
157
|
}
|
@@ -147,7 +177,9 @@ class RetryFilter {
|
|
147
177
|
RetryFilter(const grpc_channel_args* args, grpc_error_handle* error)
|
148
178
|
: client_channel_(grpc_channel_args_find_pointer<ClientChannel>(
|
149
179
|
args, GRPC_ARG_CLIENT_CHANNEL)),
|
150
|
-
per_rpc_retry_buffer_size_(GetMaxPerRpcRetryBufferSize(args))
|
180
|
+
per_rpc_retry_buffer_size_(GetMaxPerRpcRetryBufferSize(args)),
|
181
|
+
service_config_parser_index_(
|
182
|
+
internal::RetryServiceConfigParser::ParserIndex()) {
|
151
183
|
// Get retry throttling parameters from service config.
|
152
184
|
auto* service_config = grpc_channel_args_find_pointer<ServiceConfig>(
|
153
185
|
args, GRPC_ARG_SERVICE_CONFIG_OBJ);
|
@@ -160,26 +192,32 @@ class RetryFilter {
|
|
160
192
|
const char* server_uri =
|
161
193
|
grpc_channel_args_find_string(args, GRPC_ARG_SERVER_URI);
|
162
194
|
if (server_uri == nullptr) {
|
163
|
-
*error =
|
195
|
+
*error = GRPC_ERROR_CREATE(
|
164
196
|
"server URI channel arg missing or wrong type in client channel "
|
165
197
|
"filter");
|
166
198
|
return;
|
167
199
|
}
|
168
200
|
absl::StatusOr<URI> uri = URI::Parse(server_uri);
|
169
201
|
if (!uri.ok() || uri->path().empty()) {
|
170
|
-
*error =
|
171
|
-
"could not extract server name from target URI");
|
202
|
+
*error =
|
203
|
+
GRPC_ERROR_CREATE("could not extract server name from target URI");
|
172
204
|
return;
|
173
205
|
}
|
174
206
|
std::string server_name(absl::StripPrefix(uri->path(), "/"));
|
175
207
|
// Get throttling config for server_name.
|
176
|
-
retry_throttle_data_ =
|
177
|
-
|
208
|
+
retry_throttle_data_ =
|
209
|
+
internal::ServerRetryThrottleMap::Get()->GetDataForServer(
|
210
|
+
server_name, config->max_milli_tokens(),
|
211
|
+
config->milli_token_ratio());
|
178
212
|
}
|
179
213
|
|
214
|
+
const RetryMethodConfig* GetRetryPolicy(
|
215
|
+
const grpc_call_context_element* context);
|
216
|
+
|
180
217
|
ClientChannel* client_channel_;
|
181
218
|
size_t per_rpc_retry_buffer_size_;
|
182
219
|
RefCountedPtr<ServerRetryThrottleData> retry_throttle_data_;
|
220
|
+
const size_t service_config_parser_index_;
|
183
221
|
};
|
184
222
|
|
185
223
|
//
|
@@ -211,7 +249,7 @@ class RetryFilter::CallData {
|
|
211
249
|
// State associated with each call attempt.
|
212
250
|
class CallAttempt : public RefCounted<CallAttempt> {
|
213
251
|
public:
|
214
|
-
|
252
|
+
CallAttempt(CallData* calld, bool is_transparent_retry);
|
215
253
|
~CallAttempt() override;
|
216
254
|
|
217
255
|
bool lb_call_committed() const { return lb_call_committed_; }
|
@@ -314,7 +352,11 @@ class RetryFilter::CallData {
|
|
314
352
|
// cancel_stream op.
|
315
353
|
static void OnCompleteForCancelOp(void* arg, grpc_error_handle error);
|
316
354
|
|
317
|
-
RefCountedPtr
|
355
|
+
// This DOES hold a ref, but it cannot be a RefCountedPtr<>, because
|
356
|
+
// our dtor unrefs the owning call, which may delete the arena in
|
357
|
+
// which we are allocated, which means that running the dtor of any
|
358
|
+
// data members after that would cause a crash.
|
359
|
+
CallAttempt* call_attempt_;
|
318
360
|
// The batch to use in the LB call.
|
319
361
|
// Its payload field points to CallAttempt::batch_payload_.
|
320
362
|
grpc_transport_stream_op_batch batch_;
|
@@ -373,9 +415,10 @@ class RetryFilter::CallData {
|
|
373
415
|
void AddBatchForInternalRecvTrailingMetadata(
|
374
416
|
CallCombinerClosureList* closures);
|
375
417
|
|
376
|
-
// Adds a batch to closures to cancel this call attempt
|
377
|
-
|
378
|
-
|
418
|
+
// Adds a batch to closures to cancel this call attempt, if
|
419
|
+
// cancellation has not already been sent on the LB call.
|
420
|
+
void MaybeAddBatchForCancelOp(grpc_error_handle error,
|
421
|
+
CallCombinerClosureList* closures);
|
379
422
|
|
380
423
|
// Adds batches for pending batches to closures.
|
381
424
|
void AddBatchesForPendingBatches(CallCombinerClosureList* closures);
|
@@ -396,10 +439,8 @@ class RetryFilter::CallData {
|
|
396
439
|
void MaybeSwitchToFastPath();
|
397
440
|
|
398
441
|
// Returns true if the call should be retried.
|
399
|
-
|
400
|
-
|
401
|
-
grpc_mdelem* server_pushback_md,
|
402
|
-
grpc_millis* server_pushback_ms);
|
442
|
+
bool ShouldRetry(absl::optional<grpc_status_code> status,
|
443
|
+
absl::optional<Duration> server_pushback_ms);
|
403
444
|
|
404
445
|
// Abandons the call attempt. Unrefs any deferred batches.
|
405
446
|
void Abandon();
|
@@ -420,11 +461,7 @@ class RetryFilter::CallData {
|
|
420
461
|
// BatchData.batch.payload points to this.
|
421
462
|
grpc_transport_stream_op_batch_payload batch_payload_;
|
422
463
|
// For send_initial_metadata.
|
423
|
-
grpc_linked_mdelem retry_attempts_metadata_;
|
424
464
|
grpc_metadata_batch send_initial_metadata_{calld_->arena_};
|
425
|
-
// For send_message.
|
426
|
-
// TODO(roth): Restructure this to eliminate use of ManualConstructor.
|
427
|
-
ManualConstructor<ByteStreamCache::CachingByteStream> send_message_;
|
428
465
|
// For send_trailing_metadata.
|
429
466
|
grpc_metadata_batch send_trailing_metadata_{calld_->arena_};
|
430
467
|
// For intercepting recv_initial_metadata.
|
@@ -433,7 +470,8 @@ class RetryFilter::CallData {
|
|
433
470
|
bool trailing_metadata_available_ = false;
|
434
471
|
// For intercepting recv_message.
|
435
472
|
grpc_closure recv_message_ready_;
|
436
|
-
|
473
|
+
absl::optional<SliceBuffer> recv_message_;
|
474
|
+
uint32_t recv_message_flags_;
|
437
475
|
// For intercepting recv_trailing_metadata.
|
438
476
|
grpc_metadata_batch recv_trailing_metadata_{calld_->arena_};
|
439
477
|
grpc_transport_stream_stats collect_stats_;
|
@@ -452,11 +490,12 @@ class RetryFilter::CallData {
|
|
452
490
|
bool completed_recv_initial_metadata_ : 1;
|
453
491
|
bool started_recv_trailing_metadata_ : 1;
|
454
492
|
bool completed_recv_trailing_metadata_ : 1;
|
493
|
+
bool sent_cancel_stream_ : 1;
|
455
494
|
// State for callback processing.
|
456
495
|
RefCountedPtr<BatchData> recv_initial_metadata_ready_deferred_batch_;
|
457
|
-
grpc_error_handle recv_initial_metadata_error_
|
496
|
+
grpc_error_handle recv_initial_metadata_error_;
|
458
497
|
RefCountedPtr<BatchData> recv_message_ready_deferred_batch_;
|
459
|
-
grpc_error_handle recv_message_error_
|
498
|
+
grpc_error_handle recv_message_error_;
|
460
499
|
struct OnCompleteDeferredBatch {
|
461
500
|
OnCompleteDeferredBatch(RefCountedPtr<BatchData> batch,
|
462
501
|
grpc_error_handle error)
|
@@ -468,7 +507,7 @@ class RetryFilter::CallData {
|
|
468
507
|
absl::InlinedVector<OnCompleteDeferredBatch, 3>
|
469
508
|
on_complete_deferred_batches_;
|
470
509
|
RefCountedPtr<BatchData> recv_trailing_metadata_internal_batch_;
|
471
|
-
grpc_error_handle recv_trailing_metadata_error_
|
510
|
+
grpc_error_handle recv_trailing_metadata_error_;
|
472
511
|
bool seen_recv_trailing_metadata_from_surface_ : 1;
|
473
512
|
// NOTE: Do not move this next to the metadata bitfields above. That would
|
474
513
|
// save space but will also result in a data race because compiler
|
@@ -509,16 +548,21 @@ class RetryFilter::CallData {
|
|
509
548
|
void RetryCommit(CallAttempt* call_attempt);
|
510
549
|
|
511
550
|
// Starts a timer to retry after appropriate back-off.
|
512
|
-
// If
|
513
|
-
void StartRetryTimer(
|
551
|
+
// If server_pushback is nullopt, retry_backoff_ is used.
|
552
|
+
void StartRetryTimer(absl::optional<Duration> server_pushback);
|
514
553
|
|
515
554
|
static void OnRetryTimer(void* arg, grpc_error_handle error);
|
516
555
|
static void OnRetryTimerLocked(void* arg, grpc_error_handle error);
|
517
556
|
|
557
|
+
// Adds a closure to closures to start a transparent retry.
|
558
|
+
void AddClosureToStartTransparentRetry(CallCombinerClosureList* closures);
|
559
|
+
static void StartTransparentRetry(void* arg, grpc_error_handle error);
|
560
|
+
|
518
561
|
OrphanablePtr<ClientChannel::LoadBalancedCall> CreateLoadBalancedCall(
|
519
|
-
ConfigSelector::CallDispatchController* call_dispatch_controller
|
562
|
+
ConfigSelector::CallDispatchController* call_dispatch_controller,
|
563
|
+
bool is_transparent_retry);
|
520
564
|
|
521
|
-
void CreateCallAttempt();
|
565
|
+
void CreateCallAttempt(bool is_transparent_retry);
|
522
566
|
|
523
567
|
RetryFilter* chand_;
|
524
568
|
grpc_polling_entity* pollent_;
|
@@ -527,13 +571,13 @@ class RetryFilter::CallData {
|
|
527
571
|
BackOff retry_backoff_;
|
528
572
|
|
529
573
|
grpc_slice path_; // Request path.
|
530
|
-
|
574
|
+
Timestamp deadline_;
|
531
575
|
Arena* arena_;
|
532
576
|
grpc_call_stack* owning_call_;
|
533
577
|
CallCombiner* call_combiner_;
|
534
578
|
grpc_call_context_element* call_context_;
|
535
579
|
|
536
|
-
grpc_error_handle cancelled_from_surface_
|
580
|
+
grpc_error_handle cancelled_from_surface_;
|
537
581
|
|
538
582
|
RefCountedPtr<CallStackDestructionBarrier> call_stack_destruction_barrier_;
|
539
583
|
|
@@ -561,6 +605,8 @@ class RetryFilter::CallData {
|
|
561
605
|
// Retry state.
|
562
606
|
bool retry_committed_ : 1;
|
563
607
|
bool retry_timer_pending_ : 1;
|
608
|
+
bool retry_codepath_started_ : 1;
|
609
|
+
bool sent_transparent_retry_not_seen_by_server_ : 1;
|
564
610
|
int num_attempts_completed_ = 0;
|
565
611
|
grpc_timer retry_timer_;
|
566
612
|
grpc_closure retry_closure_;
|
@@ -569,7 +615,6 @@ class RetryFilter::CallData {
|
|
569
615
|
// send_initial_metadata
|
570
616
|
bool seen_send_initial_metadata_ = false;
|
571
617
|
grpc_metadata_batch send_initial_metadata_{arena_};
|
572
|
-
uint32_t send_initial_metadata_flags_;
|
573
618
|
// TODO(roth): As part of implementing hedging, we'll probably need to
|
574
619
|
// have the LB call set a value in CallAttempt and then propagate it
|
575
620
|
// from CallAttempt to the parent call when we commit. Otherwise, we
|
@@ -586,11 +631,11 @@ class RetryFilter::CallData {
|
|
586
631
|
// Note: We inline the cache for the first 3 send_message ops and use
|
587
632
|
// dynamic allocation after that. This number was essentially picked
|
588
633
|
// at random; it could be changed in the future to tune performance.
|
589
|
-
|
590
|
-
|
591
|
-
|
592
|
-
|
593
|
-
absl::InlinedVector<
|
634
|
+
struct CachedSendMessage {
|
635
|
+
SliceBuffer* slices;
|
636
|
+
uint32_t flags;
|
637
|
+
};
|
638
|
+
absl::InlinedVector<CachedSendMessage, 3> send_messages_;
|
594
639
|
// send_trailing_metadata
|
595
640
|
bool seen_send_trailing_metadata_ = false;
|
596
641
|
grpc_metadata_batch send_trailing_metadata_{arena_};
|
@@ -620,7 +665,7 @@ class RetryFilter::CallData::CallStackDestructionBarrier
|
|
620
665
|
|
621
666
|
~CallStackDestructionBarrier() override {
|
622
667
|
// TODO(yashkt) : This can potentially be a Closure::Run
|
623
|
-
ExecCtx::Run(DEBUG_LOCATION, on_call_stack_destruction_,
|
668
|
+
ExecCtx::Run(DEBUG_LOCATION, on_call_stack_destruction_, absl::OkStatus());
|
624
669
|
}
|
625
670
|
|
626
671
|
// Set the closure from the surface. This closure will be invoked
|
@@ -653,7 +698,8 @@ class RetryFilter::CallData::CallStackDestructionBarrier
|
|
653
698
|
// RetryFilter::CallData::CallAttempt
|
654
699
|
//
|
655
700
|
|
656
|
-
RetryFilter::CallData::CallAttempt::CallAttempt(CallData* calld
|
701
|
+
RetryFilter::CallData::CallAttempt::CallAttempt(CallData* calld,
|
702
|
+
bool is_transparent_retry)
|
657
703
|
: RefCounted(GRPC_TRACE_FLAG_ENABLED(grpc_retry_trace) ? "CallAttempt"
|
658
704
|
: nullptr),
|
659
705
|
calld_(calld),
|
@@ -667,25 +713,27 @@ RetryFilter::CallData::CallAttempt::CallAttempt(CallData* calld)
|
|
667
713
|
completed_recv_initial_metadata_(false),
|
668
714
|
started_recv_trailing_metadata_(false),
|
669
715
|
completed_recv_trailing_metadata_(false),
|
716
|
+
sent_cancel_stream_(false),
|
670
717
|
seen_recv_trailing_metadata_from_surface_(false),
|
671
718
|
abandoned_(false) {
|
672
|
-
lb_call_ = calld->CreateLoadBalancedCall(&attempt_dispatch_controller_
|
719
|
+
lb_call_ = calld->CreateLoadBalancedCall(&attempt_dispatch_controller_,
|
720
|
+
is_transparent_retry);
|
673
721
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_retry_trace)) {
|
674
|
-
gpr_log(GPR_INFO,
|
722
|
+
gpr_log(GPR_INFO,
|
723
|
+
"chand=%p calld=%p attempt=%p: created attempt, lb_call=%p",
|
675
724
|
calld->chand_, calld, this, lb_call_.get());
|
676
725
|
}
|
677
726
|
// If per_attempt_recv_timeout is set, start a timer.
|
678
727
|
if (calld->retry_policy_ != nullptr &&
|
679
728
|
calld->retry_policy_->per_attempt_recv_timeout().has_value()) {
|
680
|
-
|
681
|
-
|
682
|
-
*calld->retry_policy_->per_attempt_recv_timeout();
|
729
|
+
Timestamp per_attempt_recv_deadline =
|
730
|
+
Timestamp::Now() + *calld->retry_policy_->per_attempt_recv_timeout();
|
683
731
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_retry_trace)) {
|
684
732
|
gpr_log(GPR_INFO,
|
685
733
|
"chand=%p calld=%p attempt=%p: per-attempt timeout in %" PRId64
|
686
734
|
" ms",
|
687
735
|
calld->chand_, calld, this,
|
688
|
-
|
736
|
+
calld->retry_policy_->per_attempt_recv_timeout()->millis());
|
689
737
|
}
|
690
738
|
// Schedule retry after computed delay.
|
691
739
|
GRPC_CLOSURE_INIT(&on_per_attempt_recv_timer_, OnPerAttemptRecvTimer, this,
|
@@ -855,7 +903,7 @@ void RetryFilter::CallData::CallAttempt::AddClosureForBatch(
|
|
855
903
|
batch->handler_private.extra_arg = lb_call_.get();
|
856
904
|
GRPC_CLOSURE_INIT(&batch->handler_private.closure, StartBatchInCallCombiner,
|
857
905
|
batch, grpc_schedule_on_exec_ctx);
|
858
|
-
closures->Add(&batch->handler_private.closure,
|
906
|
+
closures->Add(&batch->handler_private.closure, absl::OkStatus(), reason);
|
859
907
|
}
|
860
908
|
|
861
909
|
void RetryFilter::CallData::CallAttempt::
|
@@ -877,8 +925,12 @@ void RetryFilter::CallData::CallAttempt::
|
|
877
925
|
"starting internal recv_trailing_metadata", closures);
|
878
926
|
}
|
879
927
|
|
880
|
-
void RetryFilter::CallData::CallAttempt::
|
928
|
+
void RetryFilter::CallData::CallAttempt::MaybeAddBatchForCancelOp(
|
881
929
|
grpc_error_handle error, CallCombinerClosureList* closures) {
|
930
|
+
if (sent_cancel_stream_) {
|
931
|
+
return;
|
932
|
+
}
|
933
|
+
sent_cancel_stream_ = true;
|
882
934
|
BatchData* cancel_batch_data = CreateBatch(1, /*set_on_complete=*/true);
|
883
935
|
cancel_batch_data->AddCancelStreamOp(error);
|
884
936
|
AddClosureForBatch(cancel_batch_data->batch(),
|
@@ -907,7 +959,16 @@ void RetryFilter::CallData::CallAttempt::AddBatchesForPendingBatches(
|
|
907
959
|
has_send_ops = true;
|
908
960
|
}
|
909
961
|
if (batch->send_message) {
|
910
|
-
|
962
|
+
// Cases where we can't start this send_message op:
|
963
|
+
// - We are currently replaying a previous cached send_message op.
|
964
|
+
// - We have already replayed all send_message ops, including this
|
965
|
+
// one. (This can happen if a send_message op is in the same
|
966
|
+
// batch as a recv op, the send_message op has already completed
|
967
|
+
// but the recv op hasn't, and then a subsequent batch with another
|
968
|
+
// recv op is started from the surface.)
|
969
|
+
if (completed_send_message_count_ < started_send_message_count_ ||
|
970
|
+
completed_send_message_count_ ==
|
971
|
+
(calld_->send_messages_.size() + !pending->send_ops_cached)) {
|
911
972
|
continue;
|
912
973
|
}
|
913
974
|
has_send_ops = true;
|
@@ -929,7 +990,10 @@ void RetryFilter::CallData::CallAttempt::AddBatchesForPendingBatches(
|
|
929
990
|
++num_callbacks;
|
930
991
|
}
|
931
992
|
if (batch->recv_message) {
|
932
|
-
if
|
993
|
+
// Skip if the op is already in flight, or if it has already completed
|
994
|
+
// but the completion has not yet been sent to the surface.
|
995
|
+
if (completed_recv_message_count_ < started_recv_message_count_ ||
|
996
|
+
recv_message_ready_deferred_batch_ != nullptr) {
|
933
997
|
continue;
|
934
998
|
}
|
935
999
|
++num_callbacks;
|
@@ -957,9 +1021,8 @@ void RetryFilter::CallData::CallAttempt::AddBatchesForPendingBatches(
|
|
957
1021
|
DEBUG_LOCATION,
|
958
1022
|
"internally started recv_trailing_metadata batch pending and "
|
959
1023
|
"recv_trailing_metadata started from surface");
|
960
|
-
GRPC_ERROR_UNREF(recv_trailing_metadata_error_);
|
961
1024
|
}
|
962
|
-
recv_trailing_metadata_error_ =
|
1025
|
+
recv_trailing_metadata_error_ = absl::OkStatus();
|
963
1026
|
}
|
964
1027
|
// We don't want the fact that we've already started this op internally
|
965
1028
|
// to prevent us from adding a batch that may contain other ops.
|
@@ -1006,8 +1069,6 @@ void RetryFilter::CallData::CallAttempt::AddBatchesForPendingBatches(
|
|
1006
1069
|
}
|
1007
1070
|
// recv_initial_metadata.
|
1008
1071
|
if (batch->recv_initial_metadata) {
|
1009
|
-
// recv_flags is only used on the server side.
|
1010
|
-
GPR_ASSERT(batch->payload->recv_initial_metadata.recv_flags == nullptr);
|
1011
1072
|
batch_data->AddRetriableRecvInitialMetadataOp();
|
1012
1073
|
}
|
1013
1074
|
// recv_message.
|
@@ -1059,16 +1120,14 @@ void RetryFilter::CallData::CallAttempt::StartRetriableBatches() {
|
|
1059
1120
|
void RetryFilter::CallData::CallAttempt::CancelFromSurface(
|
1060
1121
|
grpc_transport_stream_op_batch* cancel_batch) {
|
1061
1122
|
MaybeCancelPerAttemptRecvTimer();
|
1123
|
+
Abandon();
|
1062
1124
|
// Propagate cancellation to LB call.
|
1063
1125
|
lb_call_->StartTransportStreamOpBatch(cancel_batch);
|
1064
1126
|
}
|
1065
1127
|
|
1066
1128
|
bool RetryFilter::CallData::CallAttempt::ShouldRetry(
|
1067
|
-
absl::optional<grpc_status_code> status,
|
1068
|
-
|
1069
|
-
// LB drops always inhibit retries.
|
1070
|
-
if (is_lb_drop) return false;
|
1071
|
-
// TODO(roth): Handle transparent retries here.
|
1129
|
+
absl::optional<grpc_status_code> status,
|
1130
|
+
absl::optional<Duration> server_pushback) {
|
1072
1131
|
// If no retry policy, don't retry.
|
1073
1132
|
if (calld_->retry_policy_ == nullptr) return false;
|
1074
1133
|
// Check status.
|
@@ -1131,10 +1190,8 @@ bool RetryFilter::CallData::CallAttempt::ShouldRetry(
|
|
1131
1190
|
return false;
|
1132
1191
|
}
|
1133
1192
|
// Check server push-back.
|
1134
|
-
if (
|
1135
|
-
|
1136
|
-
uint32_t ms;
|
1137
|
-
if (!grpc_parse_slice_to_uint32(GRPC_MDVALUE(*server_pushback_md), &ms)) {
|
1193
|
+
if (server_pushback.has_value()) {
|
1194
|
+
if (*server_pushback < Duration::Zero()) {
|
1138
1195
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_retry_trace)) {
|
1139
1196
|
gpr_log(GPR_INFO,
|
1140
1197
|
"chand=%p calld=%p attempt=%p: not retrying due to server "
|
@@ -1146,10 +1203,10 @@ bool RetryFilter::CallData::CallAttempt::ShouldRetry(
|
|
1146
1203
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_retry_trace)) {
|
1147
1204
|
gpr_log(
|
1148
1205
|
GPR_INFO,
|
1149
|
-
"chand=%p calld=%p attempt=%p: server push-back: retry in %
|
1150
|
-
|
1206
|
+
"chand=%p calld=%p attempt=%p: server push-back: retry in %" PRIu64
|
1207
|
+
" ms",
|
1208
|
+
calld_->chand_, calld_, this, server_pushback->millis());
|
1151
1209
|
}
|
1152
|
-
*server_pushback_ms = static_cast<grpc_millis>(ms);
|
1153
1210
|
}
|
1154
1211
|
}
|
1155
1212
|
// Check with call dispatch controller.
|
@@ -1177,24 +1234,20 @@ void RetryFilter::CallData::CallAttempt::Abandon() {
|
|
1177
1234
|
!seen_recv_trailing_metadata_from_surface_) {
|
1178
1235
|
recv_trailing_metadata_internal_batch_.reset(
|
1179
1236
|
DEBUG_LOCATION,
|
1180
|
-
"internal
|
1181
|
-
"started from the surface");
|
1237
|
+
"unref internal recv_trailing_metadata_ready batch; attempt abandoned");
|
1182
1238
|
}
|
1183
|
-
|
1184
|
-
recv_trailing_metadata_error_ = GRPC_ERROR_NONE;
|
1239
|
+
recv_trailing_metadata_error_ = absl::OkStatus();
|
1185
1240
|
recv_initial_metadata_ready_deferred_batch_.reset(
|
1186
1241
|
DEBUG_LOCATION,
|
1187
|
-
"unref deferred recv_initial_metadata_ready batch
|
1188
|
-
|
1189
|
-
recv_initial_metadata_error_ = GRPC_ERROR_NONE;
|
1242
|
+
"unref deferred recv_initial_metadata_ready batch; attempt abandoned");
|
1243
|
+
recv_initial_metadata_error_ = absl::OkStatus();
|
1190
1244
|
recv_message_ready_deferred_batch_.reset(
|
1191
|
-
DEBUG_LOCATION,
|
1192
|
-
|
1193
|
-
recv_message_error_ =
|
1245
|
+
DEBUG_LOCATION,
|
1246
|
+
"unref deferred recv_message_ready batch; attempt abandoned");
|
1247
|
+
recv_message_error_ = absl::OkStatus();
|
1194
1248
|
for (auto& on_complete_deferred_batch : on_complete_deferred_batches_) {
|
1195
1249
|
on_complete_deferred_batch.batch.reset(
|
1196
|
-
DEBUG_LOCATION, "unref deferred on_complete batch
|
1197
|
-
GRPC_ERROR_UNREF(on_complete_deferred_batch.error);
|
1250
|
+
DEBUG_LOCATION, "unref deferred on_complete batch; attempt abandoned");
|
1198
1251
|
}
|
1199
1252
|
on_complete_deferred_batches_.clear();
|
1200
1253
|
}
|
@@ -1205,8 +1258,8 @@ void RetryFilter::CallData::CallAttempt::OnPerAttemptRecvTimer(
|
|
1205
1258
|
GRPC_CLOSURE_INIT(&call_attempt->on_per_attempt_recv_timer_,
|
1206
1259
|
OnPerAttemptRecvTimerLocked, call_attempt, nullptr);
|
1207
1260
|
GRPC_CALL_COMBINER_START(call_attempt->calld_->call_combiner_,
|
1208
|
-
&call_attempt->on_per_attempt_recv_timer_,
|
1209
|
-
|
1261
|
+
&call_attempt->on_per_attempt_recv_timer_, error,
|
1262
|
+
"per-attempt timer fired");
|
1210
1263
|
}
|
1211
1264
|
|
1212
1265
|
void RetryFilter::CallData::CallAttempt::OnPerAttemptRecvTimerLocked(
|
@@ -1217,30 +1270,27 @@ void RetryFilter::CallData::CallAttempt::OnPerAttemptRecvTimerLocked(
|
|
1217
1270
|
gpr_log(GPR_INFO,
|
1218
1271
|
"chand=%p calld=%p attempt=%p: perAttemptRecvTimeout timer fired: "
|
1219
1272
|
"error=%s, per_attempt_recv_timer_pending_=%d",
|
1220
|
-
calld->chand_, calld, call_attempt,
|
1221
|
-
grpc_error_std_string(error).c_str(),
|
1273
|
+
calld->chand_, calld, call_attempt, StatusToString(error).c_str(),
|
1222
1274
|
call_attempt->per_attempt_recv_timer_pending_);
|
1223
1275
|
}
|
1224
1276
|
CallCombinerClosureList closures;
|
1225
|
-
if (error
|
1226
|
-
call_attempt->per_attempt_recv_timer_pending_) {
|
1277
|
+
if (error.ok() && call_attempt->per_attempt_recv_timer_pending_) {
|
1227
1278
|
call_attempt->per_attempt_recv_timer_pending_ = false;
|
1228
1279
|
// Cancel this attempt.
|
1229
1280
|
// TODO(roth): When implementing hedging, we should not cancel the
|
1230
1281
|
// current attempt.
|
1231
|
-
call_attempt->
|
1232
|
-
grpc_error_set_int(
|
1233
|
-
|
1234
|
-
|
1282
|
+
call_attempt->MaybeAddBatchForCancelOp(
|
1283
|
+
grpc_error_set_int(
|
1284
|
+
GRPC_ERROR_CREATE("retry perAttemptRecvTimeout exceeded"),
|
1285
|
+
StatusIntProperty::kRpcStatus, GRPC_STATUS_CANCELLED),
|
1235
1286
|
&closures);
|
1236
1287
|
// Check whether we should retry.
|
1237
|
-
if (call_attempt->ShouldRetry(
|
1238
|
-
|
1239
|
-
/*server_pushback_md=*/nullptr, /*server_pushback_ms=*/nullptr)) {
|
1288
|
+
if (call_attempt->ShouldRetry(/*status=*/absl::nullopt,
|
1289
|
+
/*server_pushback_ms=*/absl::nullopt)) {
|
1240
1290
|
// Mark current attempt as abandoned.
|
1241
1291
|
call_attempt->Abandon();
|
1242
1292
|
// We are retrying. Start backoff timer.
|
1243
|
-
calld->StartRetryTimer(/*
|
1293
|
+
calld->StartRetryTimer(/*server_pushback=*/absl::nullopt);
|
1244
1294
|
} else {
|
1245
1295
|
// Not retrying, so commit the call.
|
1246
1296
|
calld->RetryCommit(call_attempt);
|
@@ -1276,11 +1326,11 @@ RetryFilter::CallData::CallAttempt::BatchData::BatchData(
|
|
1276
1326
|
: RefCounted(
|
1277
1327
|
GRPC_TRACE_FLAG_ENABLED(grpc_retry_trace) ? "BatchData" : nullptr,
|
1278
1328
|
refcount),
|
1279
|
-
call_attempt_(
|
1329
|
+
call_attempt_(attempt.release()) {
|
1280
1330
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_retry_trace)) {
|
1281
1331
|
gpr_log(GPR_INFO, "chand=%p calld=%p attempt=%p: creating batch %p",
|
1282
|
-
call_attempt_->calld_->chand_, call_attempt_->calld_,
|
1283
|
-
|
1332
|
+
call_attempt_->calld_->chand_, call_attempt_->calld_, call_attempt_,
|
1333
|
+
this);
|
1284
1334
|
}
|
1285
1335
|
// We hold a ref to the call stack for every batch sent on a call attempt.
|
1286
1336
|
// This is because some batches on the call attempt may not complete
|
@@ -1300,11 +1350,12 @@ RetryFilter::CallData::CallAttempt::BatchData::BatchData(
|
|
1300
1350
|
RetryFilter::CallData::CallAttempt::BatchData::~BatchData() {
|
1301
1351
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_retry_trace)) {
|
1302
1352
|
gpr_log(GPR_INFO, "chand=%p calld=%p attempt=%p: destroying batch %p",
|
1303
|
-
call_attempt_->calld_->chand_, call_attempt_->calld_,
|
1304
|
-
|
1353
|
+
call_attempt_->calld_->chand_, call_attempt_->calld_, call_attempt_,
|
1354
|
+
this);
|
1305
1355
|
}
|
1306
|
-
|
1307
|
-
|
1356
|
+
CallAttempt* call_attempt = std::exchange(call_attempt_, nullptr);
|
1357
|
+
GRPC_CALL_STACK_UNREF(call_attempt->calld_->owning_call_, "Retry BatchData");
|
1358
|
+
call_attempt->Unref(DEBUG_LOCATION, "~BatchData");
|
1308
1359
|
}
|
1309
1360
|
|
1310
1361
|
void RetryFilter::CallData::CallAttempt::BatchData::
|
@@ -1342,7 +1393,6 @@ void RetryFilter::CallData::CallAttempt::BatchData::
|
|
1342
1393
|
.recv_initial_metadata_ready != nullptr;
|
1343
1394
|
});
|
1344
1395
|
if (pending == nullptr) {
|
1345
|
-
GRPC_ERROR_UNREF(error);
|
1346
1396
|
return;
|
1347
1397
|
}
|
1348
1398
|
// Return metadata.
|
@@ -1368,14 +1418,14 @@ void RetryFilter::CallData::CallAttempt::BatchData::
|
|
1368
1418
|
void RetryFilter::CallData::CallAttempt::BatchData::RecvInitialMetadataReady(
|
1369
1419
|
void* arg, grpc_error_handle error) {
|
1370
1420
|
RefCountedPtr<BatchData> batch_data(static_cast<BatchData*>(arg));
|
1371
|
-
CallAttempt* call_attempt = batch_data->call_attempt_
|
1421
|
+
CallAttempt* call_attempt = batch_data->call_attempt_;
|
1372
1422
|
CallData* calld = call_attempt->calld_;
|
1373
1423
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_retry_trace)) {
|
1374
1424
|
gpr_log(GPR_INFO,
|
1375
1425
|
"chand=%p calld=%p attempt=%p batch_data=%p: "
|
1376
1426
|
"got recv_initial_metadata_ready, error=%s",
|
1377
1427
|
calld->chand_, calld, call_attempt, batch_data.get(),
|
1378
|
-
|
1428
|
+
StatusToString(error).c_str());
|
1379
1429
|
}
|
1380
1430
|
call_attempt->completed_recv_initial_metadata_ = true;
|
1381
1431
|
// If this attempt has been abandoned, then we're not going to use the
|
@@ -1394,9 +1444,9 @@ void RetryFilter::CallData::CallAttempt::BatchData::RecvInitialMetadataReady(
|
|
1394
1444
|
// the recv_trailing_metadata_ready callback, then defer propagating this
|
1395
1445
|
// callback back to the surface. We can evaluate whether to retry when
|
1396
1446
|
// recv_trailing_metadata comes back.
|
1397
|
-
if (GPR_UNLIKELY(
|
1398
|
-
|
1399
|
-
|
1447
|
+
if (GPR_UNLIKELY(
|
1448
|
+
(call_attempt->trailing_metadata_available_ || !error.ok()) &&
|
1449
|
+
!call_attempt->completed_recv_trailing_metadata_)) {
|
1400
1450
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_retry_trace)) {
|
1401
1451
|
gpr_log(GPR_INFO,
|
1402
1452
|
"chand=%p calld=%p attempt=%p: deferring "
|
@@ -1405,10 +1455,10 @@ void RetryFilter::CallData::CallAttempt::BatchData::RecvInitialMetadataReady(
|
|
1405
1455
|
}
|
1406
1456
|
call_attempt->recv_initial_metadata_ready_deferred_batch_ =
|
1407
1457
|
std::move(batch_data);
|
1408
|
-
call_attempt->recv_initial_metadata_error_ =
|
1458
|
+
call_attempt->recv_initial_metadata_error_ = error;
|
1409
1459
|
CallCombinerClosureList closures;
|
1410
|
-
if (error
|
1411
|
-
call_attempt->
|
1460
|
+
if (!error.ok()) {
|
1461
|
+
call_attempt->MaybeAddBatchForCancelOp(error, &closures);
|
1412
1462
|
}
|
1413
1463
|
if (!call_attempt->started_recv_trailing_metadata_) {
|
1414
1464
|
// recv_trailing_metadata not yet started by application; start it
|
@@ -1426,8 +1476,7 @@ void RetryFilter::CallData::CallAttempt::BatchData::RecvInitialMetadataReady(
|
|
1426
1476
|
}
|
1427
1477
|
// Invoke the callback to return the result to the surface.
|
1428
1478
|
CallCombinerClosureList closures;
|
1429
|
-
batch_data->MaybeAddClosureForRecvInitialMetadataCallback(
|
1430
|
-
GRPC_ERROR_REF(error), &closures);
|
1479
|
+
batch_data->MaybeAddClosureForRecvInitialMetadataCallback(error, &closures);
|
1431
1480
|
closures.RunClosures(calld->call_combiner_);
|
1432
1481
|
}
|
1433
1482
|
|
@@ -1446,12 +1495,13 @@ void RetryFilter::CallData::CallAttempt::BatchData::
|
|
1446
1495
|
batch->payload->recv_message.recv_message_ready != nullptr;
|
1447
1496
|
});
|
1448
1497
|
if (pending == nullptr) {
|
1449
|
-
GRPC_ERROR_UNREF(error);
|
1450
1498
|
return;
|
1451
1499
|
}
|
1452
1500
|
// Return payload.
|
1453
1501
|
*pending->batch->payload->recv_message.recv_message =
|
1454
1502
|
std::move(call_attempt_->recv_message_);
|
1503
|
+
*pending->batch->payload->recv_message.flags =
|
1504
|
+
call_attempt_->recv_message_flags_;
|
1455
1505
|
// Update bookkeeping.
|
1456
1506
|
// Note: Need to do this before invoking the callback, since invoking
|
1457
1507
|
// the callback will result in yielding the call combiner.
|
@@ -1467,19 +1517,23 @@ void RetryFilter::CallData::CallAttempt::BatchData::
|
|
1467
1517
|
void RetryFilter::CallData::CallAttempt::BatchData::RecvMessageReady(
|
1468
1518
|
void* arg, grpc_error_handle error) {
|
1469
1519
|
RefCountedPtr<BatchData> batch_data(static_cast<BatchData*>(arg));
|
1470
|
-
CallAttempt* call_attempt = batch_data->call_attempt_
|
1520
|
+
CallAttempt* call_attempt = batch_data->call_attempt_;
|
1471
1521
|
CallData* calld = call_attempt->calld_;
|
1472
1522
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_retry_trace)) {
|
1473
1523
|
gpr_log(GPR_INFO,
|
1474
1524
|
"chand=%p calld=%p attempt=%p batch_data=%p: "
|
1475
1525
|
"got recv_message_ready, error=%s",
|
1476
1526
|
calld->chand_, calld, call_attempt, batch_data.get(),
|
1477
|
-
|
1527
|
+
StatusToString(error).c_str());
|
1478
1528
|
}
|
1479
1529
|
++call_attempt->completed_recv_message_count_;
|
1480
1530
|
// If this attempt has been abandoned, then we're not going to use the
|
1481
1531
|
// result of this recv_message op, so do nothing.
|
1482
1532
|
if (call_attempt->abandoned_) {
|
1533
|
+
// The transport will not invoke recv_trailing_metadata_ready until the byte
|
1534
|
+
// stream for any recv_message op is orphaned, so we do that here to ensure
|
1535
|
+
// that any pending recv_trailing_metadata op can complete.
|
1536
|
+
call_attempt->recv_message_.reset();
|
1483
1537
|
GRPC_CALL_COMBINER_STOP(calld->call_combiner_,
|
1484
1538
|
"recv_message_ready for abandoned attempt");
|
1485
1539
|
return;
|
@@ -1492,9 +1546,9 @@ void RetryFilter::CallData::CallAttempt::BatchData::RecvMessageReady(
|
|
1492
1546
|
// the recv_trailing_metadata_ready callback, then defer propagating this
|
1493
1547
|
// callback back to the surface. We can evaluate whether to retry when
|
1494
1548
|
// recv_trailing_metadata comes back.
|
1495
|
-
if (GPR_UNLIKELY(
|
1496
|
-
|
1497
|
-
|
1549
|
+
if (GPR_UNLIKELY(
|
1550
|
+
(!call_attempt->recv_message_.has_value() || !error.ok()) &&
|
1551
|
+
!call_attempt->completed_recv_trailing_metadata_)) {
|
1498
1552
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_retry_trace)) {
|
1499
1553
|
gpr_log(GPR_INFO,
|
1500
1554
|
"chand=%p calld=%p attempt=%p: deferring recv_message_ready "
|
@@ -1502,10 +1556,10 @@ void RetryFilter::CallData::CallAttempt::BatchData::RecvMessageReady(
|
|
1502
1556
|
calld->chand_, calld, call_attempt);
|
1503
1557
|
}
|
1504
1558
|
call_attempt->recv_message_ready_deferred_batch_ = std::move(batch_data);
|
1505
|
-
call_attempt->recv_message_error_ =
|
1559
|
+
call_attempt->recv_message_error_ = error;
|
1506
1560
|
CallCombinerClosureList closures;
|
1507
|
-
if (error
|
1508
|
-
call_attempt->
|
1561
|
+
if (!error.ok()) {
|
1562
|
+
call_attempt->MaybeAddBatchForCancelOp(error, &closures);
|
1509
1563
|
}
|
1510
1564
|
if (!call_attempt->started_recv_trailing_metadata_) {
|
1511
1565
|
// recv_trailing_metadata not yet started by application; start it
|
@@ -1523,8 +1577,7 @@ void RetryFilter::CallData::CallAttempt::BatchData::RecvMessageReady(
|
|
1523
1577
|
}
|
1524
1578
|
// Invoke the callback to return the result to the surface.
|
1525
1579
|
CallCombinerClosureList closures;
|
1526
|
-
batch_data->MaybeAddClosureForRecvMessageCallback(
|
1527
|
-
&closures);
|
1580
|
+
batch_data->MaybeAddClosureForRecvMessageCallback(error, &closures);
|
1528
1581
|
closures.RunClosures(calld->call_combiner_);
|
1529
1582
|
}
|
1530
1583
|
|
@@ -1534,28 +1587,25 @@ void RetryFilter::CallData::CallAttempt::BatchData::RecvMessageReady(
|
|
1534
1587
|
|
1535
1588
|
namespace {
|
1536
1589
|
|
1537
|
-
// Sets *status, *
|
1590
|
+
// Sets *status, *server_pushback, and *is_lb_drop based on md_batch
|
1538
1591
|
// and error.
|
1539
|
-
void GetCallStatus(
|
1540
|
-
|
1541
|
-
|
1542
|
-
|
1592
|
+
void GetCallStatus(
|
1593
|
+
Timestamp deadline, grpc_metadata_batch* md_batch, grpc_error_handle error,
|
1594
|
+
grpc_status_code* status, absl::optional<Duration>* server_pushback,
|
1595
|
+
bool* is_lb_drop,
|
1596
|
+
absl::optional<GrpcStreamNetworkState::ValueType>* stream_network_state) {
|
1597
|
+
if (!error.ok()) {
|
1543
1598
|
grpc_error_get_status(error, deadline, status, nullptr, nullptr, nullptr);
|
1544
1599
|
intptr_t value = 0;
|
1545
|
-
if (grpc_error_get_int(error,
|
1600
|
+
if (grpc_error_get_int(error, StatusIntProperty::kLbPolicyDrop, &value) &&
|
1546
1601
|
value != 0) {
|
1547
1602
|
*is_lb_drop = true;
|
1548
1603
|
}
|
1549
1604
|
} else {
|
1550
|
-
|
1551
|
-
*status = grpc_get_status_code_from_metadata(
|
1552
|
-
md_batch->legacy_index()->named.grpc_status->md);
|
1553
|
-
if (md_batch->legacy_index()->named.grpc_retry_pushback_ms != nullptr) {
|
1554
|
-
*server_pushback_md =
|
1555
|
-
&md_batch->legacy_index()->named.grpc_retry_pushback_ms->md;
|
1556
|
-
}
|
1605
|
+
*status = *md_batch->get(GrpcStatusMetadata());
|
1557
1606
|
}
|
1558
|
-
|
1607
|
+
*server_pushback = md_batch->get(GrpcRetryPushbackMsMetadata());
|
1608
|
+
*stream_network_state = md_batch->get(GrpcStreamNetworkState());
|
1559
1609
|
}
|
1560
1610
|
|
1561
1611
|
} // namespace
|
@@ -1606,7 +1656,7 @@ void RetryFilter::CallData::CallAttempt::BatchData::
|
|
1606
1656
|
call_attempt_->recv_initial_metadata_error_, closures);
|
1607
1657
|
call_attempt_->recv_initial_metadata_ready_deferred_batch_.reset(
|
1608
1658
|
DEBUG_LOCATION, "resuming deferred recv_initial_metadata_ready");
|
1609
|
-
call_attempt_->recv_initial_metadata_error_ =
|
1659
|
+
call_attempt_->recv_initial_metadata_error_ = absl::OkStatus();
|
1610
1660
|
}
|
1611
1661
|
// Add closure for deferred recv_message_ready.
|
1612
1662
|
if (GPR_UNLIKELY(call_attempt_->recv_message_ready_deferred_batch_ !=
|
@@ -1615,7 +1665,7 @@ void RetryFilter::CallData::CallAttempt::BatchData::
|
|
1615
1665
|
closures);
|
1616
1666
|
call_attempt_->recv_message_ready_deferred_batch_.reset(
|
1617
1667
|
DEBUG_LOCATION, "resuming deferred recv_message_ready");
|
1618
|
-
call_attempt_->recv_message_error_ =
|
1668
|
+
call_attempt_->recv_message_error_ = absl::OkStatus();
|
1619
1669
|
}
|
1620
1670
|
// Add closures for deferred on_complete callbacks.
|
1621
1671
|
for (auto& on_complete_deferred_batch :
|
@@ -1635,13 +1685,12 @@ void RetryFilter::CallData::CallAttempt::BatchData::
|
|
1635
1685
|
PendingBatch* pending = &calld->pending_batches_[i];
|
1636
1686
|
if (pending->batch == nullptr) continue;
|
1637
1687
|
if (call_attempt_->PendingBatchContainsUnstartedSendOps(pending)) {
|
1638
|
-
closures->Add(pending->batch->on_complete,
|
1688
|
+
closures->Add(pending->batch->on_complete, error,
|
1639
1689
|
"failing on_complete for pending batch");
|
1640
1690
|
pending->batch->on_complete = nullptr;
|
1641
1691
|
calld->MaybeClearPendingBatch(pending);
|
1642
1692
|
}
|
1643
1693
|
}
|
1644
|
-
GRPC_ERROR_UNREF(error);
|
1645
1694
|
}
|
1646
1695
|
|
1647
1696
|
void RetryFilter::CallData::CallAttempt::BatchData::RunClosuresForCompletedCall(
|
@@ -1649,28 +1698,27 @@ void RetryFilter::CallData::CallAttempt::BatchData::RunClosuresForCompletedCall(
|
|
1649
1698
|
// Construct list of closures to execute.
|
1650
1699
|
CallCombinerClosureList closures;
|
1651
1700
|
// First, add closure for recv_trailing_metadata_ready.
|
1652
|
-
MaybeAddClosureForRecvTrailingMetadataReady(
|
1701
|
+
MaybeAddClosureForRecvTrailingMetadataReady(error, &closures);
|
1653
1702
|
// If there are deferred batch completion callbacks, add them to closures.
|
1654
1703
|
AddClosuresForDeferredCompletionCallbacks(&closures);
|
1655
1704
|
// Add closures to fail any pending batches that have not yet been started.
|
1656
|
-
AddClosuresToFailUnstartedPendingBatches(
|
1705
|
+
AddClosuresToFailUnstartedPendingBatches(error, &closures);
|
1657
1706
|
// Schedule all of the closures identified above.
|
1658
1707
|
// Note: This will release the call combiner.
|
1659
1708
|
closures.RunClosures(call_attempt_->calld_->call_combiner_);
|
1660
|
-
GRPC_ERROR_UNREF(error);
|
1661
1709
|
}
|
1662
1710
|
|
1663
1711
|
void RetryFilter::CallData::CallAttempt::BatchData::RecvTrailingMetadataReady(
|
1664
1712
|
void* arg, grpc_error_handle error) {
|
1665
1713
|
RefCountedPtr<BatchData> batch_data(static_cast<BatchData*>(arg));
|
1666
|
-
CallAttempt* call_attempt = batch_data->call_attempt_
|
1714
|
+
CallAttempt* call_attempt = batch_data->call_attempt_;
|
1667
1715
|
CallData* calld = call_attempt->calld_;
|
1668
1716
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_retry_trace)) {
|
1669
1717
|
gpr_log(GPR_INFO,
|
1670
1718
|
"chand=%p calld=%p attempt=%p batch_data=%p: "
|
1671
1719
|
"got recv_trailing_metadata_ready, error=%s",
|
1672
1720
|
calld->chand_, calld, call_attempt, batch_data.get(),
|
1673
|
-
|
1721
|
+
StatusToString(error).c_str());
|
1674
1722
|
}
|
1675
1723
|
call_attempt->completed_recv_trailing_metadata_ = true;
|
1676
1724
|
// If this attempt has been abandoned, then we're not going to use the
|
@@ -1685,39 +1733,71 @@ void RetryFilter::CallData::CallAttempt::BatchData::RecvTrailingMetadataReady(
|
|
1685
1733
|
call_attempt->MaybeCancelPerAttemptRecvTimer();
|
1686
1734
|
// Get the call's status and check for server pushback metadata.
|
1687
1735
|
grpc_status_code status = GRPC_STATUS_OK;
|
1688
|
-
|
1736
|
+
absl::optional<Duration> server_pushback;
|
1737
|
+
bool is_lb_drop = false;
|
1738
|
+
absl::optional<GrpcStreamNetworkState::ValueType> stream_network_state;
|
1689
1739
|
grpc_metadata_batch* md_batch =
|
1690
1740
|
batch_data->batch_.payload->recv_trailing_metadata.recv_trailing_metadata;
|
1691
|
-
|
1692
|
-
|
1693
|
-
&server_pushback_md, &is_lb_drop);
|
1741
|
+
GetCallStatus(calld->deadline_, md_batch, error, &status, &server_pushback,
|
1742
|
+
&is_lb_drop, &stream_network_state);
|
1694
1743
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_retry_trace)) {
|
1695
|
-
gpr_log(
|
1696
|
-
|
1697
|
-
|
1698
|
-
|
1699
|
-
|
1744
|
+
gpr_log(GPR_INFO,
|
1745
|
+
"chand=%p calld=%p attempt=%p: call finished, status=%s "
|
1746
|
+
"server_pushback=%s is_lb_drop=%d stream_network_state=%s",
|
1747
|
+
calld->chand_, calld, call_attempt,
|
1748
|
+
grpc_status_code_to_string(status),
|
1749
|
+
server_pushback.has_value() ? server_pushback->ToString().c_str()
|
1750
|
+
: "N/A",
|
1751
|
+
is_lb_drop,
|
1752
|
+
stream_network_state.has_value()
|
1753
|
+
? absl::StrCat(*stream_network_state).c_str()
|
1754
|
+
: "N/A");
|
1700
1755
|
}
|
1701
1756
|
// Check if we should retry.
|
1702
|
-
|
1703
|
-
|
1704
|
-
|
1705
|
-
|
1706
|
-
|
1707
|
-
|
1708
|
-
|
1709
|
-
|
1710
|
-
|
1711
|
-
|
1712
|
-
|
1713
|
-
|
1714
|
-
|
1715
|
-
|
1716
|
-
|
1717
|
-
|
1718
|
-
|
1719
|
-
|
1720
|
-
|
1757
|
+
if (!is_lb_drop) { // Never retry on LB drops.
|
1758
|
+
enum { kNoRetry, kTransparentRetry, kConfigurableRetry } retry = kNoRetry;
|
1759
|
+
// Handle transparent retries.
|
1760
|
+
if (stream_network_state.has_value() && !calld->retry_committed_) {
|
1761
|
+
// If not sent on wire, then always retry.
|
1762
|
+
// If sent on wire but not seen by server, retry exactly once.
|
1763
|
+
if (*stream_network_state == GrpcStreamNetworkState::kNotSentOnWire) {
|
1764
|
+
retry = kTransparentRetry;
|
1765
|
+
} else if (*stream_network_state ==
|
1766
|
+
GrpcStreamNetworkState::kNotSeenByServer &&
|
1767
|
+
!calld->sent_transparent_retry_not_seen_by_server_) {
|
1768
|
+
calld->sent_transparent_retry_not_seen_by_server_ = true;
|
1769
|
+
retry = kTransparentRetry;
|
1770
|
+
}
|
1771
|
+
}
|
1772
|
+
// If not transparently retrying, check for configurable retry.
|
1773
|
+
if (retry == kNoRetry &&
|
1774
|
+
call_attempt->ShouldRetry(status, server_pushback)) {
|
1775
|
+
retry = kConfigurableRetry;
|
1776
|
+
}
|
1777
|
+
// If we're retrying, do so.
|
1778
|
+
if (retry != kNoRetry) {
|
1779
|
+
CallCombinerClosureList closures;
|
1780
|
+
// Cancel call attempt.
|
1781
|
+
call_attempt->MaybeAddBatchForCancelOp(
|
1782
|
+
error.ok() ? grpc_error_set_int(
|
1783
|
+
GRPC_ERROR_CREATE("call attempt failed"),
|
1784
|
+
StatusIntProperty::kRpcStatus, GRPC_STATUS_CANCELLED)
|
1785
|
+
: error,
|
1786
|
+
&closures);
|
1787
|
+
// For transparent retries, add a closure to immediately start a new
|
1788
|
+
// call attempt.
|
1789
|
+
// For configurable retries, start retry timer.
|
1790
|
+
if (retry == kTransparentRetry) {
|
1791
|
+
calld->AddClosureToStartTransparentRetry(&closures);
|
1792
|
+
} else {
|
1793
|
+
calld->StartRetryTimer(server_pushback);
|
1794
|
+
}
|
1795
|
+
// Record that this attempt has been abandoned.
|
1796
|
+
call_attempt->Abandon();
|
1797
|
+
// Yields call combiner.
|
1798
|
+
closures.RunClosures(calld->call_combiner_);
|
1799
|
+
return;
|
1800
|
+
}
|
1721
1801
|
}
|
1722
1802
|
// Not retrying, so commit the call.
|
1723
1803
|
calld->RetryCommit(call_attempt);
|
@@ -1725,7 +1805,7 @@ void RetryFilter::CallData::CallAttempt::BatchData::RecvTrailingMetadataReady(
|
|
1725
1805
|
// subsequent batches.
|
1726
1806
|
call_attempt->MaybeSwitchToFastPath();
|
1727
1807
|
// Run any necessary closures.
|
1728
|
-
batch_data->RunClosuresForCompletedCall(
|
1808
|
+
batch_data->RunClosuresForCompletedCall(error);
|
1729
1809
|
}
|
1730
1810
|
|
1731
1811
|
//
|
@@ -1748,7 +1828,6 @@ void RetryFilter::CallData::CallAttempt::BatchData::
|
|
1748
1828
|
// If batch_data is a replay batch, then there will be no pending
|
1749
1829
|
// batch to complete.
|
1750
1830
|
if (pending == nullptr) {
|
1751
|
-
GRPC_ERROR_UNREF(error);
|
1752
1831
|
return;
|
1753
1832
|
}
|
1754
1833
|
// Propagate payload.
|
@@ -1786,7 +1865,7 @@ void RetryFilter::CallData::CallAttempt::BatchData::
|
|
1786
1865
|
gpr_log(GPR_INFO,
|
1787
1866
|
"chand=%p calld=%p attempt=%p: starting next batch for pending "
|
1788
1867
|
"send op(s)",
|
1789
|
-
calld->chand_, calld, call_attempt_
|
1868
|
+
calld->chand_, calld, call_attempt_);
|
1790
1869
|
}
|
1791
1870
|
call_attempt_->AddRetriableBatches(closures);
|
1792
1871
|
}
|
@@ -1795,14 +1874,14 @@ void RetryFilter::CallData::CallAttempt::BatchData::
|
|
1795
1874
|
void RetryFilter::CallData::CallAttempt::BatchData::OnComplete(
|
1796
1875
|
void* arg, grpc_error_handle error) {
|
1797
1876
|
RefCountedPtr<BatchData> batch_data(static_cast<BatchData*>(arg));
|
1798
|
-
CallAttempt* call_attempt = batch_data->call_attempt_
|
1877
|
+
CallAttempt* call_attempt = batch_data->call_attempt_;
|
1799
1878
|
CallData* calld = call_attempt->calld_;
|
1800
1879
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_retry_trace)) {
|
1801
1880
|
gpr_log(GPR_INFO,
|
1802
1881
|
"chand=%p calld=%p attempt=%p batch_data=%p: "
|
1803
1882
|
"got on_complete, error=%s, batch=%s",
|
1804
1883
|
calld->chand_, calld, call_attempt, batch_data.get(),
|
1805
|
-
|
1884
|
+
StatusToString(error).c_str(),
|
1806
1885
|
grpc_transport_stream_op_batch_string(&batch_data->batch_).c_str());
|
1807
1886
|
}
|
1808
1887
|
// If this attempt has been abandoned, then we're not going to propagate
|
@@ -1816,16 +1895,16 @@ void RetryFilter::CallData::CallAttempt::BatchData::OnComplete(
|
|
1816
1895
|
// recv_trailing_metadata_ready callback, then defer propagating this
|
1817
1896
|
// callback back to the surface. We can evaluate whether to retry when
|
1818
1897
|
// recv_trailing_metadata comes back.
|
1819
|
-
if (GPR_UNLIKELY(!calld->retry_committed_ && error
|
1898
|
+
if (GPR_UNLIKELY(!calld->retry_committed_ && !error.ok() &&
|
1820
1899
|
!call_attempt->completed_recv_trailing_metadata_)) {
|
1821
1900
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_retry_trace)) {
|
1822
1901
|
gpr_log(GPR_INFO, "chand=%p calld=%p attempt=%p: deferring on_complete",
|
1823
1902
|
calld->chand_, calld, call_attempt);
|
1824
1903
|
}
|
1825
1904
|
call_attempt->on_complete_deferred_batches_.emplace_back(
|
1826
|
-
std::move(batch_data),
|
1905
|
+
std::move(batch_data), error);
|
1827
1906
|
CallCombinerClosureList closures;
|
1828
|
-
call_attempt->
|
1907
|
+
call_attempt->MaybeAddBatchForCancelOp(error, &closures);
|
1829
1908
|
if (!call_attempt->started_recv_trailing_metadata_) {
|
1830
1909
|
// recv_trailing_metadata not yet started by application; start it
|
1831
1910
|
// ourselves to get status.
|
@@ -1852,8 +1931,7 @@ void RetryFilter::CallData::CallAttempt::BatchData::OnComplete(
|
|
1852
1931
|
// Construct list of closures to execute.
|
1853
1932
|
CallCombinerClosureList closures;
|
1854
1933
|
// Add closure for the completed pending batch, if any.
|
1855
|
-
batch_data->AddClosuresForCompletedPendingBatch(
|
1856
|
-
&closures);
|
1934
|
+
batch_data->AddClosuresForCompletedPendingBatch(error, &closures);
|
1857
1935
|
// If needed, add a callback to start any replay or pending send ops on
|
1858
1936
|
// the LB call.
|
1859
1937
|
if (!call_attempt->completed_recv_trailing_metadata_) {
|
@@ -1871,14 +1949,14 @@ void RetryFilter::CallData::CallAttempt::BatchData::OnComplete(
|
|
1871
1949
|
void RetryFilter::CallData::CallAttempt::BatchData::OnCompleteForCancelOp(
|
1872
1950
|
void* arg, grpc_error_handle error) {
|
1873
1951
|
RefCountedPtr<BatchData> batch_data(static_cast<BatchData*>(arg));
|
1874
|
-
CallAttempt* call_attempt = batch_data->call_attempt_
|
1952
|
+
CallAttempt* call_attempt = batch_data->call_attempt_;
|
1875
1953
|
CallData* calld = call_attempt->calld_;
|
1876
1954
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_retry_trace)) {
|
1877
1955
|
gpr_log(GPR_INFO,
|
1878
1956
|
"chand=%p calld=%p attempt=%p batch_data=%p: "
|
1879
1957
|
"got on_complete for cancel_stream batch, error=%s, batch=%s",
|
1880
1958
|
calld->chand_, calld, call_attempt, batch_data.get(),
|
1881
|
-
|
1959
|
+
StatusToString(error).c_str(),
|
1882
1960
|
grpc_transport_stream_op_batch_string(&batch_data->batch_).c_str());
|
1883
1961
|
}
|
1884
1962
|
GRPC_CALL_COMBINER_STOP(
|
@@ -1893,42 +1971,24 @@ void RetryFilter::CallData::CallAttempt::BatchData::OnCompleteForCancelOp(
|
|
1893
1971
|
void RetryFilter::CallData::CallAttempt::BatchData::
|
1894
1972
|
AddRetriableSendInitialMetadataOp() {
|
1895
1973
|
auto* calld = call_attempt_->calld_;
|
1896
|
-
// Maps the number of retries to the corresponding metadata value slice.
|
1897
|
-
const grpc_slice* retry_count_strings[] = {&GRPC_MDSTR_1, &GRPC_MDSTR_2,
|
1898
|
-
&GRPC_MDSTR_3, &GRPC_MDSTR_4};
|
1899
1974
|
// We need to make a copy of the metadata batch for each attempt, since
|
1900
1975
|
// the filters in the subchannel stack may modify this batch, and we don't
|
1901
1976
|
// want those modifications to be passed forward to subsequent attempts.
|
1902
1977
|
//
|
1903
1978
|
// If we've already completed one or more attempts, add the
|
1904
1979
|
// grpc-retry-attempts header.
|
1905
|
-
|
1906
|
-
&call_attempt_->send_initial_metadata_);
|
1907
|
-
if (GPR_UNLIKELY(call_attempt_->send_initial_metadata_.legacy_index()
|
1908
|
-
->named.grpc_previous_rpc_attempts != nullptr)) {
|
1909
|
-
call_attempt_->send_initial_metadata_.Remove(
|
1910
|
-
GRPC_BATCH_GRPC_PREVIOUS_RPC_ATTEMPTS);
|
1911
|
-
}
|
1980
|
+
call_attempt_->send_initial_metadata_ = calld->send_initial_metadata_.Copy();
|
1912
1981
|
if (GPR_UNLIKELY(calld->num_attempts_completed_ > 0)) {
|
1913
|
-
|
1914
|
-
|
1915
|
-
|
1916
|
-
|
1917
|
-
|
1918
|
-
&call_attempt_->retry_attempts_metadata_, retry_md,
|
1919
|
-
GRPC_BATCH_GRPC_PREVIOUS_RPC_ATTEMPTS);
|
1920
|
-
if (GPR_UNLIKELY(error != GRPC_ERROR_NONE)) {
|
1921
|
-
gpr_log(GPR_ERROR, "error adding retry metadata: %s",
|
1922
|
-
grpc_error_std_string(error).c_str());
|
1923
|
-
GPR_ASSERT(false);
|
1924
|
-
}
|
1982
|
+
call_attempt_->send_initial_metadata_.Set(GrpcPreviousRpcAttemptsMetadata(),
|
1983
|
+
calld->num_attempts_completed_);
|
1984
|
+
} else {
|
1985
|
+
call_attempt_->send_initial_metadata_.Remove(
|
1986
|
+
GrpcPreviousRpcAttemptsMetadata());
|
1925
1987
|
}
|
1926
1988
|
call_attempt_->started_send_initial_metadata_ = true;
|
1927
1989
|
batch_.send_initial_metadata = true;
|
1928
1990
|
batch_.payload->send_initial_metadata.send_initial_metadata =
|
1929
1991
|
&call_attempt_->send_initial_metadata_;
|
1930
|
-
batch_.payload->send_initial_metadata.send_initial_metadata_flags =
|
1931
|
-
calld->send_initial_metadata_flags_;
|
1932
1992
|
batch_.payload->send_initial_metadata.peer_string = calld->peer_string_;
|
1933
1993
|
}
|
1934
1994
|
|
@@ -1940,16 +2000,15 @@ void RetryFilter::CallData::CallAttempt::BatchData::
|
|
1940
2000
|
GPR_INFO,
|
1941
2001
|
"chand=%p calld=%p attempt=%p: starting calld->send_messages[%" PRIuPTR
|
1942
2002
|
"]",
|
1943
|
-
calld->chand_, calld, call_attempt_
|
2003
|
+
calld->chand_, calld, call_attempt_,
|
1944
2004
|
call_attempt_->started_send_message_count_);
|
1945
2005
|
}
|
1946
|
-
|
2006
|
+
CachedSendMessage cache =
|
1947
2007
|
calld->send_messages_[call_attempt_->started_send_message_count_];
|
1948
2008
|
++call_attempt_->started_send_message_count_;
|
1949
|
-
call_attempt_->send_message_.Init(cache);
|
1950
2009
|
batch_.send_message = true;
|
1951
|
-
batch_.payload->send_message.send_message.
|
1952
|
-
|
2010
|
+
batch_.payload->send_message.send_message = cache.slices;
|
2011
|
+
batch_.payload->send_message.flags = cache.flags;
|
1953
2012
|
}
|
1954
2013
|
|
1955
2014
|
void RetryFilter::CallData::CallAttempt::BatchData::
|
@@ -1958,8 +2017,8 @@ void RetryFilter::CallData::CallAttempt::BatchData::
|
|
1958
2017
|
// We need to make a copy of the metadata batch for each attempt, since
|
1959
2018
|
// the filters in the subchannel stack may modify this batch, and we don't
|
1960
2019
|
// want those modifications to be passed forward to subsequent attempts.
|
1961
|
-
|
1962
|
-
|
2020
|
+
call_attempt_->send_trailing_metadata_ =
|
2021
|
+
calld->send_trailing_metadata_.Copy();
|
1963
2022
|
call_attempt_->started_send_trailing_metadata_ = true;
|
1964
2023
|
batch_.send_trailing_metadata = true;
|
1965
2024
|
batch_.payload->send_trailing_metadata.send_trailing_metadata =
|
@@ -1986,6 +2045,7 @@ void RetryFilter::CallData::CallAttempt::BatchData::
|
|
1986
2045
|
++call_attempt_->started_recv_message_count_;
|
1987
2046
|
batch_.recv_message = true;
|
1988
2047
|
batch_.payload->recv_message.recv_message = &call_attempt_->recv_message_;
|
2048
|
+
batch_.payload->recv_message.flags = &call_attempt_->recv_message_flags_;
|
1989
2049
|
batch_.payload->recv_message.call_failed_before_recv_message = nullptr;
|
1990
2050
|
GRPC_CLOSURE_INIT(&call_attempt_->recv_message_ready_, RecvMessageReady, this,
|
1991
2051
|
grpc_schedule_on_exec_ctx);
|
@@ -2028,7 +2088,7 @@ grpc_error_handle RetryFilter::CallData::Init(
|
|
2028
2088
|
gpr_log(GPR_INFO, "chand=%p calld=%p: created call", chand,
|
2029
2089
|
elem->call_data);
|
2030
2090
|
}
|
2031
|
-
return
|
2091
|
+
return absl::OkStatus();
|
2032
2092
|
}
|
2033
2093
|
|
2034
2094
|
void RetryFilter::CallData::Destroy(grpc_call_element* elem,
|
@@ -2064,34 +2124,34 @@ void RetryFilter::CallData::SetPollent(grpc_call_element* elem,
|
|
2064
2124
|
// CallData implementation
|
2065
2125
|
//
|
2066
2126
|
|
2067
|
-
const RetryMethodConfig* GetRetryPolicy(
|
2127
|
+
const RetryMethodConfig* RetryFilter::GetRetryPolicy(
|
2068
2128
|
const grpc_call_context_element* context) {
|
2069
2129
|
if (context == nullptr) return nullptr;
|
2070
2130
|
auto* svc_cfg_call_data = static_cast<ServiceConfigCallData*>(
|
2071
2131
|
context[GRPC_CONTEXT_SERVICE_CONFIG_CALL_DATA].value);
|
2072
2132
|
if (svc_cfg_call_data == nullptr) return nullptr;
|
2073
2133
|
return static_cast<const RetryMethodConfig*>(
|
2074
|
-
svc_cfg_call_data->GetMethodParsedConfig(
|
2075
|
-
RetryServiceConfigParser::ParserIndex()));
|
2134
|
+
svc_cfg_call_data->GetMethodParsedConfig(service_config_parser_index_));
|
2076
2135
|
}
|
2077
2136
|
|
2078
2137
|
RetryFilter::CallData::CallData(RetryFilter* chand,
|
2079
2138
|
const grpc_call_element_args& args)
|
2080
2139
|
: chand_(chand),
|
2081
2140
|
retry_throttle_data_(chand->retry_throttle_data_),
|
2082
|
-
retry_policy_(GetRetryPolicy(args.context)),
|
2141
|
+
retry_policy_(chand->GetRetryPolicy(args.context)),
|
2083
2142
|
retry_backoff_(
|
2084
2143
|
BackOff::Options()
|
2085
2144
|
.set_initial_backoff(retry_policy_ == nullptr
|
2086
|
-
?
|
2145
|
+
? Duration::Zero()
|
2087
2146
|
: retry_policy_->initial_backoff())
|
2088
2147
|
.set_multiplier(retry_policy_ == nullptr
|
2089
2148
|
? 0
|
2090
2149
|
: retry_policy_->backoff_multiplier())
|
2091
2150
|
.set_jitter(RETRY_BACKOFF_JITTER)
|
2092
|
-
.set_max_backoff(
|
2093
|
-
|
2094
|
-
|
2151
|
+
.set_max_backoff(retry_policy_ == nullptr
|
2152
|
+
? Duration::Zero()
|
2153
|
+
: retry_policy_->max_backoff())),
|
2154
|
+
path_(CSliceRef(args.path)),
|
2095
2155
|
deadline_(args.deadline),
|
2096
2156
|
arena_(args.arena),
|
2097
2157
|
owning_call_(args.call_stack),
|
@@ -2103,32 +2163,50 @@ RetryFilter::CallData::CallData(RetryFilter* chand,
|
|
2103
2163
|
pending_send_message_(false),
|
2104
2164
|
pending_send_trailing_metadata_(false),
|
2105
2165
|
retry_committed_(false),
|
2106
|
-
retry_timer_pending_(false)
|
2166
|
+
retry_timer_pending_(false),
|
2167
|
+
retry_codepath_started_(false),
|
2168
|
+
sent_transparent_retry_not_seen_by_server_(false) {}
|
2107
2169
|
|
2108
2170
|
RetryFilter::CallData::~CallData() {
|
2109
|
-
|
2171
|
+
FreeAllCachedSendOpData();
|
2172
|
+
CSliceUnref(path_);
|
2110
2173
|
// Make sure there are no remaining pending batches.
|
2111
2174
|
for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
|
2112
2175
|
GPR_ASSERT(pending_batches_[i].batch == nullptr);
|
2113
2176
|
}
|
2114
|
-
GRPC_ERROR_UNREF(cancelled_from_surface_);
|
2115
2177
|
}
|
2116
2178
|
|
2117
2179
|
void RetryFilter::CallData::StartTransportStreamOpBatch(
|
2118
2180
|
grpc_transport_stream_op_batch* batch) {
|
2181
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_retry_trace) &&
|
2182
|
+
!GRPC_TRACE_FLAG_ENABLED(grpc_trace_channel)) {
|
2183
|
+
gpr_log(GPR_INFO, "chand=%p calld=%p: batch started from surface: %s",
|
2184
|
+
chand_, this, grpc_transport_stream_op_batch_string(batch).c_str());
|
2185
|
+
}
|
2119
2186
|
// If we have an LB call, delegate to the LB call.
|
2120
2187
|
if (committed_call_ != nullptr) {
|
2121
2188
|
// Note: This will release the call combiner.
|
2122
2189
|
committed_call_->StartTransportStreamOpBatch(batch);
|
2123
2190
|
return;
|
2124
2191
|
}
|
2192
|
+
// If we were previously cancelled from the surface, fail this
|
2193
|
+
// batch immediately.
|
2194
|
+
if (!cancelled_from_surface_.ok()) {
|
2195
|
+
// Note: This will release the call combiner.
|
2196
|
+
grpc_transport_stream_op_batch_finish_with_failure(
|
2197
|
+
batch, cancelled_from_surface_, call_combiner_);
|
2198
|
+
return;
|
2199
|
+
}
|
2125
2200
|
// Handle cancellation.
|
2126
2201
|
if (GPR_UNLIKELY(batch->cancel_stream)) {
|
2127
|
-
|
2202
|
+
// Save cancel_error in case subsequent batches are started.
|
2203
|
+
cancelled_from_surface_ = batch->payload->cancel_stream.cancel_error;
|
2128
2204
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_retry_trace)) {
|
2129
2205
|
gpr_log(GPR_INFO, "chand=%p calld=%p: cancelled from surface: %s", chand_,
|
2130
|
-
this,
|
2206
|
+
this, StatusToString(cancelled_from_surface_).c_str());
|
2131
2207
|
}
|
2208
|
+
// Fail any pending batches.
|
2209
|
+
PendingBatchesFail(cancelled_from_surface_);
|
2132
2210
|
// If we have a current call attempt, commit the call, then send
|
2133
2211
|
// the cancellation down to that attempt. When the call fails, it
|
2134
2212
|
// will not be retried, because we have committed it here.
|
@@ -2144,10 +2222,7 @@ void RetryFilter::CallData::StartTransportStreamOpBatch(
|
|
2144
2222
|
call_attempt_->CancelFromSurface(batch);
|
2145
2223
|
return;
|
2146
2224
|
}
|
2147
|
-
//
|
2148
|
-
GRPC_ERROR_UNREF(cancelled_from_surface_);
|
2149
|
-
cancelled_from_surface_ = GRPC_ERROR_REF(cancel_error);
|
2150
|
-
// Cancel retry timer.
|
2225
|
+
// Cancel retry timer if needed.
|
2151
2226
|
if (retry_timer_pending_) {
|
2152
2227
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_retry_trace)) {
|
2153
2228
|
gpr_log(GPR_INFO, "chand=%p calld=%p: cancelling retry timer", chand_,
|
@@ -2157,11 +2232,11 @@ void RetryFilter::CallData::StartTransportStreamOpBatch(
|
|
2157
2232
|
grpc_timer_cancel(&retry_timer_);
|
2158
2233
|
FreeAllCachedSendOpData();
|
2159
2234
|
}
|
2160
|
-
//
|
2161
|
-
|
2235
|
+
// We have no call attempt, so there's nowhere to send the cancellation
|
2236
|
+
// batch. Return it back to the surface immediately.
|
2162
2237
|
// Note: This will release the call combiner.
|
2163
2238
|
grpc_transport_stream_op_batch_finish_with_failure(
|
2164
|
-
batch,
|
2239
|
+
batch, cancelled_from_surface_, call_combiner_);
|
2165
2240
|
return;
|
2166
2241
|
}
|
2167
2242
|
// Add the batch to the pending list.
|
@@ -2175,20 +2250,6 @@ void RetryFilter::CallData::StartTransportStreamOpBatch(
|
|
2175
2250
|
}
|
2176
2251
|
// If we do not yet have a call attempt, create one.
|
2177
2252
|
if (call_attempt_ == nullptr) {
|
2178
|
-
// If we were previously cancelled from the surface, cancel this
|
2179
|
-
// batch instead of creating a call attempt.
|
2180
|
-
if (cancelled_from_surface_ != GRPC_ERROR_NONE) {
|
2181
|
-
PendingBatchClear(pending);
|
2182
|
-
// Note: This will release the call combiner.
|
2183
|
-
grpc_transport_stream_op_batch_finish_with_failure(
|
2184
|
-
batch, GRPC_ERROR_REF(cancelled_from_surface_), call_combiner_);
|
2185
|
-
return;
|
2186
|
-
}
|
2187
|
-
// If there is no retry policy, then commit retries immediately.
|
2188
|
-
// This ensures that the code below will always jump to the fast path.
|
2189
|
-
// TODO(roth): Remove this special case when we implement
|
2190
|
-
// transparent retries.
|
2191
|
-
if (retry_policy_ == nullptr) retry_committed_ = true;
|
2192
2253
|
// If this is the first batch and retries are already committed
|
2193
2254
|
// (e.g., if this batch put the call above the buffer size limit), then
|
2194
2255
|
// immediately create an LB call and delegate the batch to it. This
|
@@ -2204,7 +2265,7 @@ void RetryFilter::CallData::StartTransportStreamOpBatch(
|
|
2204
2265
|
// We also skip this optimization if perAttemptRecvTimeout is set in the
|
2205
2266
|
// retry policy, because we need the code in CallAttempt to handle
|
2206
2267
|
// the associated timer.
|
2207
|
-
if (
|
2268
|
+
if (!retry_codepath_started_ && retry_committed_ &&
|
2208
2269
|
(retry_policy_ == nullptr ||
|
2209
2270
|
!retry_policy_->per_attempt_recv_timeout().has_value())) {
|
2210
2271
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_retry_trace)) {
|
@@ -2218,7 +2279,8 @@ void RetryFilter::CallData::StartTransportStreamOpBatch(
|
|
2218
2279
|
static_cast<ClientChannelServiceConfigCallData*>(
|
2219
2280
|
call_context_[GRPC_CONTEXT_SERVICE_CONFIG_CALL_DATA].value);
|
2220
2281
|
committed_call_ = CreateLoadBalancedCall(
|
2221
|
-
service_config_call_data->call_dispatch_controller()
|
2282
|
+
service_config_call_data->call_dispatch_controller(),
|
2283
|
+
/*is_transparent_retry=*/false);
|
2222
2284
|
committed_call_->StartTransportStreamOpBatch(batch);
|
2223
2285
|
return;
|
2224
2286
|
}
|
@@ -2229,7 +2291,8 @@ void RetryFilter::CallData::StartTransportStreamOpBatch(
|
|
2229
2291
|
gpr_log(GPR_INFO, "chand=%p calld=%p: creating call attempt", chand_,
|
2230
2292
|
this);
|
2231
2293
|
}
|
2232
|
-
|
2294
|
+
retry_codepath_started_ = true;
|
2295
|
+
CreateCallAttempt(/*is_transparent_retry=*/false);
|
2233
2296
|
return;
|
2234
2297
|
}
|
2235
2298
|
// Send batches to call attempt.
|
@@ -2242,7 +2305,8 @@ void RetryFilter::CallData::StartTransportStreamOpBatch(
|
|
2242
2305
|
|
2243
2306
|
OrphanablePtr<ClientChannel::LoadBalancedCall>
|
2244
2307
|
RetryFilter::CallData::CreateLoadBalancedCall(
|
2245
|
-
ConfigSelector::CallDispatchController* call_dispatch_controller
|
2308
|
+
ConfigSelector::CallDispatchController* call_dispatch_controller,
|
2309
|
+
bool is_transparent_retry) {
|
2246
2310
|
grpc_call_element_args args = {owning_call_, nullptr, call_context_,
|
2247
2311
|
path_, /*start_time=*/0, deadline_,
|
2248
2312
|
arena_, call_combiner_};
|
@@ -2251,13 +2315,11 @@ RetryFilter::CallData::CreateLoadBalancedCall(
|
|
2251
2315
|
// This callback holds a ref to the CallStackDestructionBarrier
|
2252
2316
|
// object until the LB call is destroyed.
|
2253
2317
|
call_stack_destruction_barrier_->MakeLbCallDestructionClosure(this),
|
2254
|
-
call_dispatch_controller,
|
2255
|
-
// TODO(roth): Change this when we support transparent retries.
|
2256
|
-
/*is_transparent_retry=*/false);
|
2318
|
+
call_dispatch_controller, is_transparent_retry);
|
2257
2319
|
}
|
2258
2320
|
|
2259
|
-
void RetryFilter::CallData::CreateCallAttempt() {
|
2260
|
-
call_attempt_ = MakeRefCounted<CallAttempt>(this);
|
2321
|
+
void RetryFilter::CallData::CreateCallAttempt(bool is_transparent_retry) {
|
2322
|
+
call_attempt_ = MakeRefCounted<CallAttempt>(this, is_transparent_retry);
|
2261
2323
|
call_attempt_->StartRetriableBatches();
|
2262
2324
|
}
|
2263
2325
|
|
@@ -2274,23 +2336,21 @@ void RetryFilter::CallData::MaybeCacheSendOpsForBatch(PendingBatch* pending) {
|
|
2274
2336
|
seen_send_initial_metadata_ = true;
|
2275
2337
|
grpc_metadata_batch* send_initial_metadata =
|
2276
2338
|
batch->payload->send_initial_metadata.send_initial_metadata;
|
2277
|
-
|
2278
|
-
send_initial_metadata_flags_ =
|
2279
|
-
batch->payload->send_initial_metadata.send_initial_metadata_flags;
|
2339
|
+
send_initial_metadata_ = send_initial_metadata->Copy();
|
2280
2340
|
peer_string_ = batch->payload->send_initial_metadata.peer_string;
|
2281
2341
|
}
|
2282
2342
|
// Set up cache for send_message ops.
|
2283
2343
|
if (batch->send_message) {
|
2284
|
-
|
2285
|
-
std::
|
2286
|
-
send_messages_.push_back(cache);
|
2344
|
+
SliceBuffer* cache = arena_->New<SliceBuffer>(std::move(
|
2345
|
+
*std::exchange(batch->payload->send_message.send_message, nullptr)));
|
2346
|
+
send_messages_.push_back({cache, batch->payload->send_message.flags});
|
2287
2347
|
}
|
2288
2348
|
// Save metadata batch for send_trailing_metadata ops.
|
2289
2349
|
if (batch->send_trailing_metadata) {
|
2290
2350
|
seen_send_trailing_metadata_ = true;
|
2291
2351
|
grpc_metadata_batch* send_trailing_metadata =
|
2292
2352
|
batch->payload->send_trailing_metadata.send_trailing_metadata;
|
2293
|
-
|
2353
|
+
send_trailing_metadata_ = send_trailing_metadata->Copy();
|
2294
2354
|
}
|
2295
2355
|
}
|
2296
2356
|
|
@@ -2303,12 +2363,14 @@ void RetryFilter::CallData::FreeCachedSendInitialMetadata() {
|
|
2303
2363
|
}
|
2304
2364
|
|
2305
2365
|
void RetryFilter::CallData::FreeCachedSendMessage(size_t idx) {
|
2306
|
-
if (
|
2307
|
-
|
2308
|
-
|
2309
|
-
|
2366
|
+
if (send_messages_[idx].slices != nullptr) {
|
2367
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_retry_trace)) {
|
2368
|
+
gpr_log(GPR_INFO,
|
2369
|
+
"chand=%p calld=%p: destroying send_messages[%" PRIuPTR "]",
|
2370
|
+
chand_, this, idx);
|
2371
|
+
}
|
2372
|
+
Destruct(std::exchange(send_messages_[idx].slices, nullptr));
|
2310
2373
|
}
|
2311
|
-
send_messages_[idx]->Destroy();
|
2312
2374
|
}
|
2313
2375
|
|
2314
2376
|
void RetryFilter::CallData::FreeCachedSendTrailingMetadata() {
|
@@ -2371,7 +2433,7 @@ RetryFilter::CallData::PendingBatch* RetryFilter::CallData::PendingBatchesAdd(
|
|
2371
2433
|
if (batch->send_message) {
|
2372
2434
|
pending_send_message_ = true;
|
2373
2435
|
bytes_buffered_for_retry_ +=
|
2374
|
-
batch->payload->send_message.send_message->
|
2436
|
+
batch->payload->send_message.send_message->Length();
|
2375
2437
|
}
|
2376
2438
|
if (batch->send_trailing_metadata) {
|
2377
2439
|
pending_send_trailing_metadata_ = true;
|
@@ -2432,13 +2494,13 @@ void RetryFilter::CallData::FailPendingBatchInCallCombiner(
|
|
2432
2494
|
static_cast<grpc_transport_stream_op_batch*>(arg);
|
2433
2495
|
CallData* call = static_cast<CallData*>(batch->handler_private.extra_arg);
|
2434
2496
|
// Note: This will release the call combiner.
|
2435
|
-
grpc_transport_stream_op_batch_finish_with_failure(
|
2436
|
-
|
2497
|
+
grpc_transport_stream_op_batch_finish_with_failure(batch, error,
|
2498
|
+
call->call_combiner_);
|
2437
2499
|
}
|
2438
2500
|
|
2439
2501
|
// This is called via the call combiner, so access to calld is synchronized.
|
2440
2502
|
void RetryFilter::CallData::PendingBatchesFail(grpc_error_handle error) {
|
2441
|
-
GPR_ASSERT(error
|
2503
|
+
GPR_ASSERT(!error.ok());
|
2442
2504
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_retry_trace)) {
|
2443
2505
|
size_t num_batches = 0;
|
2444
2506
|
for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
|
@@ -2446,7 +2508,7 @@ void RetryFilter::CallData::PendingBatchesFail(grpc_error_handle error) {
|
|
2446
2508
|
}
|
2447
2509
|
gpr_log(GPR_INFO,
|
2448
2510
|
"chand=%p calld=%p: failing %" PRIuPTR " pending batches: %s",
|
2449
|
-
chand_, this, num_batches,
|
2511
|
+
chand_, this, num_batches, StatusToString(error).c_str());
|
2450
2512
|
}
|
2451
2513
|
CallCombinerClosureList closures;
|
2452
2514
|
for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
|
@@ -2457,13 +2519,12 @@ void RetryFilter::CallData::PendingBatchesFail(grpc_error_handle error) {
|
|
2457
2519
|
GRPC_CLOSURE_INIT(&batch->handler_private.closure,
|
2458
2520
|
FailPendingBatchInCallCombiner, batch,
|
2459
2521
|
grpc_schedule_on_exec_ctx);
|
2460
|
-
closures.Add(&batch->handler_private.closure,
|
2522
|
+
closures.Add(&batch->handler_private.closure, error,
|
2461
2523
|
"PendingBatchesFail");
|
2462
2524
|
PendingBatchClear(pending);
|
2463
2525
|
}
|
2464
2526
|
}
|
2465
2527
|
closures.RunClosuresWithoutYielding(call_combiner_);
|
2466
|
-
GRPC_ERROR_UNREF(error);
|
2467
2528
|
}
|
2468
2529
|
|
2469
2530
|
template <typename Predicate>
|
@@ -2512,13 +2573,15 @@ void RetryFilter::CallData::RetryCommit(CallAttempt* call_attempt) {
|
|
2512
2573
|
}
|
2513
2574
|
}
|
2514
2575
|
|
2515
|
-
void RetryFilter::CallData::StartRetryTimer(
|
2576
|
+
void RetryFilter::CallData::StartRetryTimer(
|
2577
|
+
absl::optional<Duration> server_pushback) {
|
2516
2578
|
// Reset call attempt.
|
2517
2579
|
call_attempt_.reset(DEBUG_LOCATION, "StartRetryTimer");
|
2518
2580
|
// Compute backoff delay.
|
2519
|
-
|
2520
|
-
if (
|
2521
|
-
|
2581
|
+
Timestamp next_attempt_time;
|
2582
|
+
if (server_pushback.has_value()) {
|
2583
|
+
GPR_ASSERT(*server_pushback >= Duration::Zero());
|
2584
|
+
next_attempt_time = Timestamp::Now() + *server_pushback;
|
2522
2585
|
retry_backoff_.Reset();
|
2523
2586
|
} else {
|
2524
2587
|
next_attempt_time = retry_backoff_.NextAttemptTime();
|
@@ -2526,7 +2589,7 @@ void RetryFilter::CallData::StartRetryTimer(grpc_millis server_pushback_ms) {
|
|
2526
2589
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_retry_trace)) {
|
2527
2590
|
gpr_log(GPR_INFO,
|
2528
2591
|
"chand=%p calld=%p: retrying failed call in %" PRId64 " ms", chand_,
|
2529
|
-
this, next_attempt_time -
|
2592
|
+
this, (next_attempt_time - Timestamp::Now()).millis());
|
2530
2593
|
}
|
2531
2594
|
// Schedule retry after computed delay.
|
2532
2595
|
GRPC_CLOSURE_INIT(&retry_closure_, OnRetryTimer, this, nullptr);
|
@@ -2538,26 +2601,50 @@ void RetryFilter::CallData::StartRetryTimer(grpc_millis server_pushback_ms) {
|
|
2538
2601
|
void RetryFilter::CallData::OnRetryTimer(void* arg, grpc_error_handle error) {
|
2539
2602
|
auto* calld = static_cast<CallData*>(arg);
|
2540
2603
|
GRPC_CLOSURE_INIT(&calld->retry_closure_, OnRetryTimerLocked, calld, nullptr);
|
2541
|
-
GRPC_CALL_COMBINER_START(calld->call_combiner_, &calld->retry_closure_,
|
2542
|
-
|
2604
|
+
GRPC_CALL_COMBINER_START(calld->call_combiner_, &calld->retry_closure_, error,
|
2605
|
+
"retry timer fired");
|
2543
2606
|
}
|
2544
2607
|
|
2545
2608
|
void RetryFilter::CallData::OnRetryTimerLocked(void* arg,
|
2546
2609
|
grpc_error_handle error) {
|
2547
2610
|
auto* calld = static_cast<CallData*>(arg);
|
2548
|
-
if (error
|
2611
|
+
if (error.ok() && calld->retry_timer_pending_) {
|
2549
2612
|
calld->retry_timer_pending_ = false;
|
2550
|
-
calld->CreateCallAttempt();
|
2613
|
+
calld->CreateCallAttempt(/*is_transparent_retry=*/false);
|
2551
2614
|
} else {
|
2552
2615
|
GRPC_CALL_COMBINER_STOP(calld->call_combiner_, "retry timer cancelled");
|
2553
2616
|
}
|
2554
2617
|
GRPC_CALL_STACK_UNREF(calld->owning_call_, "OnRetryTimer");
|
2555
2618
|
}
|
2556
2619
|
|
2620
|
+
void RetryFilter::CallData::AddClosureToStartTransparentRetry(
|
2621
|
+
CallCombinerClosureList* closures) {
|
2622
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_retry_trace)) {
|
2623
|
+
gpr_log(GPR_INFO, "chand=%p calld=%p: scheduling transparent retry", chand_,
|
2624
|
+
this);
|
2625
|
+
}
|
2626
|
+
GRPC_CALL_STACK_REF(owning_call_, "OnRetryTimer");
|
2627
|
+
GRPC_CLOSURE_INIT(&retry_closure_, StartTransparentRetry, this, nullptr);
|
2628
|
+
closures->Add(&retry_closure_, absl::OkStatus(), "start transparent retry");
|
2629
|
+
}
|
2630
|
+
|
2631
|
+
void RetryFilter::CallData::StartTransparentRetry(void* arg,
|
2632
|
+
grpc_error_handle /*error*/) {
|
2633
|
+
auto* calld = static_cast<CallData*>(arg);
|
2634
|
+
if (calld->cancelled_from_surface_.ok()) {
|
2635
|
+
calld->CreateCallAttempt(/*is_transparent_retry=*/true);
|
2636
|
+
} else {
|
2637
|
+
GRPC_CALL_COMBINER_STOP(calld->call_combiner_,
|
2638
|
+
"call cancelled before transparent retry");
|
2639
|
+
}
|
2640
|
+
GRPC_CALL_STACK_UNREF(calld->owning_call_, "OnRetryTimer");
|
2641
|
+
}
|
2642
|
+
|
2557
2643
|
} // namespace
|
2558
2644
|
|
2559
2645
|
const grpc_channel_filter kRetryFilterVtable = {
|
2560
2646
|
RetryFilter::CallData::StartTransportStreamOpBatch,
|
2647
|
+
nullptr,
|
2561
2648
|
RetryFilter::StartTransportOp,
|
2562
2649
|
sizeof(RetryFilter::CallData),
|
2563
2650
|
RetryFilter::CallData::Init,
|
@@ -2565,6 +2652,7 @@ const grpc_channel_filter kRetryFilterVtable = {
|
|
2565
2652
|
RetryFilter::CallData::Destroy,
|
2566
2653
|
sizeof(RetryFilter),
|
2567
2654
|
RetryFilter::Init,
|
2655
|
+
grpc_channel_stack_no_post_init,
|
2568
2656
|
RetryFilter::Destroy,
|
2569
2657
|
RetryFilter::GetChannelInfo,
|
2570
2658
|
"retry_filter",
|