grpc 1.40.0 → 1.46.3
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +462 -267
- data/etc/roots.pem +335 -326
- data/include/grpc/byte_buffer.h +1 -1
- data/include/grpc/byte_buffer_reader.h +1 -1
- data/include/grpc/event_engine/endpoint_config.h +6 -11
- data/include/grpc/event_engine/event_engine.h +164 -95
- data/include/grpc/event_engine/internal/memory_allocator_impl.h +68 -0
- data/include/grpc/event_engine/memory_allocator.h +226 -0
- data/include/grpc/event_engine/memory_request.h +57 -0
- data/include/grpc/event_engine/port.h +1 -3
- data/include/grpc/fork.h +1 -1
- data/include/grpc/grpc.h +54 -18
- data/include/grpc/grpc_posix.h +22 -18
- data/include/grpc/grpc_security.h +328 -193
- data/include/grpc/grpc_security_constants.h +2 -14
- data/include/grpc/impl/codegen/atm.h +5 -3
- data/include/grpc/impl/codegen/atm_gcc_atomic.h +2 -0
- data/include/grpc/impl/codegen/atm_gcc_sync.h +2 -0
- data/include/grpc/impl/codegen/atm_windows.h +2 -0
- data/include/grpc/impl/codegen/byte_buffer.h +2 -0
- data/include/grpc/impl/codegen/byte_buffer_reader.h +2 -0
- data/include/grpc/impl/codegen/compression_types.h +2 -2
- data/include/grpc/impl/codegen/connectivity_state.h +2 -0
- data/include/grpc/impl/codegen/fork.h +2 -0
- data/include/grpc/impl/codegen/gpr_slice.h +2 -0
- data/include/grpc/impl/codegen/gpr_types.h +2 -0
- data/include/grpc/impl/codegen/grpc_types.h +28 -26
- data/include/grpc/impl/codegen/log.h +2 -0
- data/include/grpc/impl/codegen/port_platform.h +37 -22
- data/include/grpc/impl/codegen/propagation_bits.h +2 -0
- data/include/grpc/impl/codegen/slice.h +6 -1
- data/include/grpc/impl/codegen/status.h +2 -0
- data/include/grpc/impl/codegen/sync.h +8 -5
- data/include/grpc/impl/codegen/sync_abseil.h +2 -0
- data/include/grpc/impl/codegen/sync_custom.h +2 -0
- data/include/grpc/impl/codegen/sync_generic.h +3 -0
- data/include/grpc/impl/codegen/sync_posix.h +4 -2
- data/include/grpc/impl/codegen/sync_windows.h +2 -0
- data/include/grpc/slice.h +1 -12
- data/include/grpc/status.h +1 -1
- data/include/grpc/support/atm.h +1 -1
- data/include/grpc/support/atm_gcc_atomic.h +1 -1
- data/include/grpc/support/atm_gcc_sync.h +1 -1
- data/include/grpc/support/atm_windows.h +1 -1
- data/include/grpc/support/log.h +1 -1
- data/include/grpc/support/port_platform.h +1 -1
- data/include/grpc/support/sync.h +1 -1
- data/include/grpc/support/sync_abseil.h +1 -1
- data/include/grpc/support/sync_custom.h +1 -1
- data/include/grpc/support/sync_generic.h +1 -1
- data/include/grpc/support/sync_posix.h +1 -1
- data/include/grpc/support/sync_windows.h +1 -1
- data/include/grpc/support/time.h +2 -2
- data/src/core/ext/filters/census/grpc_context.cc +1 -0
- data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +309 -0
- data/src/core/ext/filters/channel_idle/channel_idle_filter.h +122 -0
- data/src/core/ext/filters/channel_idle/idle_filter_state.cc +96 -0
- data/src/core/ext/filters/channel_idle/idle_filter_state.h +66 -0
- data/src/core/ext/filters/client_channel/backend_metric.cc +24 -27
- data/src/core/ext/filters/client_channel/backend_metric.h +4 -3
- data/src/core/ext/filters/client_channel/backup_poller.cc +14 -9
- data/src/core/ext/filters/client_channel/backup_poller.h +1 -0
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +75 -94
- data/src/core/ext/filters/client_channel/client_channel.cc +532 -501
- data/src/core/ext/filters/client_channel/client_channel.h +115 -64
- data/src/core/ext/filters/client_channel/client_channel_channelz.cc +6 -5
- data/src/core/ext/filters/client_channel/client_channel_channelz.h +1 -1
- data/src/core/ext/filters/client_channel/client_channel_factory.cc +2 -1
- data/src/core/ext/filters/client_channel/client_channel_factory.h +17 -19
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +18 -24
- data/src/core/ext/filters/client_channel/config_selector.cc +2 -1
- data/src/core/ext/filters/client_channel/config_selector.h +5 -6
- data/src/core/ext/filters/client_channel/connector.h +19 -19
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +6 -7
- data/src/core/ext/filters/client_channel/dynamic_filters.h +2 -2
- data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +2 -22
- data/src/core/ext/filters/client_channel/global_subchannel_pool.h +3 -16
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +128 -582
- data/src/core/ext/filters/client_channel/health/health_check_client.h +24 -159
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +30 -34
- data/src/core/ext/filters/client_channel/http_connect_handshaker.h +10 -2
- data/src/core/ext/filters/client_channel/http_proxy.cc +88 -110
- data/src/core/ext/filters/client_channel/http_proxy.h +17 -0
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +4 -3
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +6 -5
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +6 -2
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +6 -18
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +247 -150
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +3 -6
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +3 -4
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +4 -4
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +17 -18
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +4 -4
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +73 -39
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +226 -181
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +126 -79
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +2542 -0
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +68 -62
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +18 -13
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +106 -71
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +119 -159
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +162 -77
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +29 -19
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +331 -488
- data/src/core/ext/filters/client_channel/lb_policy.cc +15 -14
- data/src/core/ext/filters/client_channel/lb_policy.h +115 -106
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +1 -0
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +4 -7
- data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +133 -0
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +296 -324
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +23 -12
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +23 -18
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +37 -55
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +153 -275
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +38 -25
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +96 -254
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +23 -20
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +2 -1
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +85 -69
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +201 -0
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +106 -0
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +40 -39
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +509 -439
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +11 -15
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +13 -7
- data/src/core/ext/filters/client_channel/retry_filter.cc +282 -238
- data/src/core/ext/filters/client_channel/retry_service_config.cc +16 -18
- data/src/core/ext/filters/client_channel/retry_service_config.h +18 -12
- data/src/core/ext/filters/client_channel/retry_throttle.cc +14 -59
- data/src/core/ext/filters/client_channel/retry_throttle.h +11 -5
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +51 -37
- data/src/core/ext/filters/client_channel/subchannel.cc +132 -197
- data/src/core/ext/filters/client_channel/subchannel.h +36 -56
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +22 -7
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +11 -2
- data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +544 -0
- data/src/core/ext/filters/client_channel/subchannel_stream_client.h +214 -0
- data/src/core/ext/filters/deadline/deadline_filter.cc +31 -33
- data/src/core/ext/filters/deadline/deadline_filter.h +3 -2
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +158 -401
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +24 -1
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +17 -27
- data/src/core/ext/filters/fault_injection/service_config_parser.h +10 -4
- data/src/core/ext/filters/http/client/http_client_filter.cc +83 -548
- data/src/core/ext/filters/http/client/http_client_filter.h +21 -4
- data/src/core/ext/filters/http/client_authority_filter.cc +39 -103
- data/src/core/ext/filters/http/client_authority_filter.h +24 -5
- data/src/core/ext/filters/http/http_filters_plugin.cc +55 -73
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +49 -140
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +22 -35
- data/src/core/ext/filters/http/server/http_server_filter.cc +64 -274
- data/src/core/ext/filters/message_size/message_size_filter.cc +49 -58
- data/src/core/ext/filters/message_size/message_size_filter.h +10 -3
- data/src/core/ext/filters/rbac/rbac_filter.cc +162 -0
- data/src/core/ext/filters/rbac/rbac_filter.h +76 -0
- data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +606 -0
- data/src/core/ext/filters/rbac/rbac_service_config_parser.h +75 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector.cc +61 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector.h +71 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +143 -0
- data/src/core/ext/filters/{workarounds/workaround_cronet_compression_filter.h → server_config_selector/server_config_selector_filter.h} +11 -6
- data/src/core/ext/transport/chttp2/alpn/alpn.cc +2 -1
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +245 -12
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +294 -95
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +3 -1
- data/src/core/ext/transport/chttp2/transport/bin_decoder.h +2 -1
- data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +1 -0
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +368 -349
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +12 -4
- data/src/core/ext/transport/chttp2/transport/context_list.cc +2 -3
- data/src/core/ext/transport/chttp2/transport/context_list.h +3 -5
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +63 -44
- data/src/core/ext/transport/chttp2/transport/flow_control.h +18 -12
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +11 -12
- data/src/core/ext/transport/chttp2/transport/frame_data.h +1 -0
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +6 -4
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +1 -0
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +10 -9
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +1 -0
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +10 -8
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +1 -0
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +40 -7
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +1 -0
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +12 -7
- data/src/core/ext/transport/chttp2/transport/frame_window_update.h +1 -0
- data/src/core/ext/transport/chttp2/transport/hpack_constants.h +41 -0
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +516 -749
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +183 -71
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +86 -0
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +71 -0
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +764 -1062
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +75 -178
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +239 -0
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +115 -0
- data/src/core/ext/transport/chttp2/transport/internal.h +22 -48
- data/src/core/ext/transport/chttp2/transport/parsing.cc +61 -212
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/varint.cc +7 -3
- data/src/core/ext/transport/chttp2/transport/varint.h +39 -28
- data/src/core/ext/transport/chttp2/transport/writing.cc +125 -169
- data/src/core/ext/transport/inproc/inproc_plugin.cc +0 -4
- data/src/core/ext/transport/inproc/inproc_transport.cc +132 -173
- data/src/core/ext/transport/inproc/inproc_transport.h +1 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.c +117 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.h +482 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.c +121 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.h +553 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +248 -210
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +1382 -685
- data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.c +56 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.h +151 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.c +62 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.h +160 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.c +46 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.h +124 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.c +43 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.h +102 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.c +43 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.h +97 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.c +106 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.h +605 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.c +48 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.h +103 -0
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c +44 -1
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +52 -1
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +31 -5
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +57 -18
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +144 -117
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +761 -386
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +240 -200
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +1376 -667
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +50 -29
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +224 -95
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +337 -255
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +1901 -790
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +21 -8
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +50 -24
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +61 -28
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +280 -99
- data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.c +299 -0
- data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.h +1381 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +75 -54
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +398 -190
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +22 -8
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +53 -25
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +220 -171
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +1224 -567
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +106 -46
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +561 -171
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +20 -7
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +46 -24
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +17 -23
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +49 -95
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.c +58 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.h +151 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +146 -118
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +853 -415
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +142 -92
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +797 -345
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +22 -9
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +65 -31
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +205 -122
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +1097 -393
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +18 -5
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +36 -17
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +28 -14
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +97 -49
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +23 -10
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +83 -34
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +27 -14
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +101 -49
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +22 -9
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +54 -26
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +52 -36
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +214 -109
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +92 -39
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +449 -131
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +71 -54
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +389 -188
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +20 -7
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +42 -21
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +99 -72
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +541 -259
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +105 -80
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +610 -307
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +32 -17
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +112 -49
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +25 -11
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +79 -40
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.c +53 -0
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.h +136 -0
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +83 -62
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +463 -235
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +93 -60
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +483 -214
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +130 -100
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +628 -282
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +54 -35
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +291 -142
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +665 -567
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +3977 -1883
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +39 -20
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +168 -72
- data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.c +222 -0
- data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.h +1052 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.c +44 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.h +88 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.c +49 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.h +103 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +28 -14
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +91 -46
- data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.c +52 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.h +134 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.c +63 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.h +250 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.c +47 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.h +94 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.c +69 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.h +213 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.c +32 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.h +42 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.c +71 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.h +218 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.c +54 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.h +146 -0
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +18 -5
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +42 -24
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +46 -29
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +219 -112
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +52 -37
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +282 -134
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c +64 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +183 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +27 -14
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +94 -43
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +284 -225
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +1673 -738
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +10 -1
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +7 -4
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +113 -54
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +621 -216
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +42 -27
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +176 -87
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +128 -83
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +673 -259
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.c +62 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +160 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +16 -3
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +29 -15
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +92 -73
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +516 -260
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +32 -18
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +121 -62
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +74 -57
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +379 -186
- data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.c +48 -0
- data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.h +112 -0
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +35 -19
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +149 -81
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c +74 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h +214 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +29 -14
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +116 -56
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +22 -9
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +58 -31
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +21 -8
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +56 -27
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +20 -7
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +46 -24
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +36 -21
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +137 -69
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +32 -18
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +137 -65
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +27 -13
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +99 -53
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +38 -23
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +170 -83
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +51 -32
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +273 -145
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +54 -37
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +268 -132
- data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.c +66 -0
- data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.h +201 -0
- data/src/core/ext/upb-generated/envoy/type/v3/http.upb.c +10 -1
- data/src/core/ext/upb-generated/envoy/type/v3/http.upb.h +4 -1
- data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.c +42 -0
- data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.h +139 -0
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c +24 -10
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +76 -36
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +31 -16
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +118 -52
- data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_unit.upb.c +26 -0
- data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_unit.upb.h +41 -0
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +20 -7
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +48 -19
- data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.c +51 -0
- data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.h +127 -0
- data/src/core/ext/upb-generated/google/api/annotations.upb.c +23 -1
- data/src/core/ext/upb-generated/google/api/annotations.upb.h +24 -1
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +155 -126
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +791 -385
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +159 -127
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +869 -402
- data/src/core/ext/upb-generated/google/api/http.upb.c +44 -29
- data/src/core/ext/upb-generated/google/api/http.upb.h +236 -115
- data/src/core/ext/upb-generated/google/api/httpbody.upb.c +46 -0
- data/src/core/ext/upb-generated/google/api/httpbody.upb.h +111 -0
- data/src/core/ext/upb-generated/google/protobuf/any.upb.c +19 -6
- data/src/core/ext/upb-generated/google/protobuf/any.upb.h +46 -22
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +374 -283
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +2263 -1053
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +19 -6
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +44 -20
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +16 -3
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +29 -15
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +48 -32
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +197 -93
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +19 -6
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +44 -20
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +58 -37
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +296 -149
- data/src/core/ext/upb-generated/google/rpc/status.upb.c +22 -9
- data/src/core/ext/upb-generated/google/rpc/status.upb.h +60 -30
- data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.c +84 -0
- data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.h +319 -0
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +33 -19
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +111 -48
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +136 -108
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +753 -365
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +28 -13
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +90 -41
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +23 -9
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +70 -35
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +82 -62
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +448 -232
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +70 -0
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +208 -0
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.c +175 -0
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.h +764 -0
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +76 -14
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +213 -57
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +32 -8
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +62 -18
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c +22 -1
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +17 -1
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +32 -6
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +64 -20
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +31 -5
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +57 -18
- data/src/core/ext/upb-generated/validate/validate.upb.c +407 -311
- data/src/core/ext/upb-generated/validate/validate.upb.h +2904 -1200
- data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.c +110 -0
- data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.h +278 -0
- data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.c +55 -0
- data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.h +108 -0
- data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.c +38 -0
- data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.h +46 -0
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +105 -0
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +290 -0
- data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.c +53 -0
- data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.h +99 -0
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +19 -6
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +38 -19
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +32 -18
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +112 -55
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +27 -13
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +61 -30
- data/src/core/ext/upb-generated/xds/core/v3/extension.upb.c +46 -0
- data/src/core/ext/upb-generated/xds/core/v3/extension.upb.h +103 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +24 -11
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +63 -30
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +35 -21
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +144 -70
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +24 -11
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +66 -30
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +73 -0
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +187 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.c +207 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.h +878 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.c +52 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.h +143 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.c +65 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.h +218 -0
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +46 -0
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +103 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/certs.upbdefs.c +84 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/certs.upbdefs.h +55 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/clusters.upbdefs.c +127 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/clusters.upbdefs.h +50 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +16 -61
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h +67 -67
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/init_dump.upbdefs.c +43 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/init_dump.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.c +53 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/memory.upbdefs.c +49 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/memory.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/metrics.upbdefs.c +46 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/metrics.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/mutex_stats.upbdefs.c +46 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/mutex_stats.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/server_info.upbdefs.c +142 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/server_info.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/tap.upbdefs.c +51 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/tap.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c +10 -8
- data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.h +1 -1
- data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.c +10 -13
- data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +22 -52
- data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.h +46 -46
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +250 -281
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.h +55 -55
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +60 -62
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.h +10 -10
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +445 -458
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +80 -70
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c +16 -18
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +25 -23
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/config/common/matcher/v3/matcher.upbdefs.c +206 -0
- data/src/core/ext/upbdefs-generated/envoy/config/common/matcher/v3/matcher.upbdefs.h +105 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c +17 -32
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.h +22 -22
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.c +17 -19
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +121 -154
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +75 -70
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +140 -116
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h +26 -16
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.c +16 -19
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c +24 -43
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.h +4 -9
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_method_list.upbdefs.c +53 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_method_list.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c +23 -51
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.h +43 -43
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +179 -184
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.h +30 -25
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.c +16 -19
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +263 -252
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h +53 -43
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +14 -16
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.c +16 -20
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.h +7 -7
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c +16 -18
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +20 -22
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.c +15 -18
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c +20 -28
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.h +13 -13
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +98 -83
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.h +23 -13
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c +20 -30
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.h +16 -16
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.c +16 -18
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +54 -62
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +19 -19
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +155 -166
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.h +22 -22
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c +21 -23
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +17 -21
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.h +7 -7
- data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/metrics_service.upbdefs.c +69 -0
- data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/metrics_service.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.c +19 -35
- data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.h +25 -25
- data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.c +40 -47
- data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.h +30 -25
- data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +190 -0
- data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h +70 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +38 -38
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +10 -10
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +845 -913
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +160 -160
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c +54 -48
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.h +10 -10
- data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.c +188 -0
- data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.h +85 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/datadog.upbdefs.c +54 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/datadog.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/dynamic_ot.upbdefs.c +57 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/dynamic_ot.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c +17 -21
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.h +7 -7
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/lightstep.upbdefs.c +72 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/lightstep.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opencensus.upbdefs.c +99 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opencensus.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/service.upbdefs.c +52 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/service.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/skywalking.upbdefs.c +71 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/skywalking.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.c +57 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.h +30 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/xray.upbdefs.c +75 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/xray.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/zipkin.upbdefs.c +77 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/zipkin.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +17 -18
- data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c +19 -29
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.h +16 -16
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +20 -26
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.h +10 -10
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +59 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +19 -20
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +291 -311
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +63 -58
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +17 -13
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h +1 -1
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +173 -141
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h +26 -16
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +21 -27
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h +10 -10
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +219 -211
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h +24 -19
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.c +58 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c +16 -18
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +19 -33
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +22 -22
- data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +18 -22
- data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.h +7 -7
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +22 -32
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.h +16 -16
- data/src/core/ext/upbdefs-generated/envoy/type/http/v3/cookie.upbdefs.c +46 -0
- data/src/core/ext/upbdefs-generated/envoy/type/http/v3/cookie.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.c +15 -23
- data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.h +13 -13
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.c +52 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.h +50 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c +24 -27
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.h +7 -7
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.c +17 -19
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.c +17 -19
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.c +17 -19
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +17 -23
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.h +10 -10
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c +17 -21
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.h +7 -7
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.c +16 -21
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.h +7 -7
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.c +18 -24
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.h +10 -10
- data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c +15 -29
- data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.h +22 -22
- data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c +16 -26
- data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.h +16 -16
- data/src/core/ext/upbdefs-generated/envoy/type/v3/hash_policy.upbdefs.c +53 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/hash_policy.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.c +12 -10
- data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.h +1 -1
- data/src/core/ext/upbdefs-generated/envoy/type/v3/http_status.upbdefs.c +94 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/http_status.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c +14 -19
- data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.h +7 -7
- data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c +13 -19
- data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.h +10 -10
- data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_unit.upbdefs.c +38 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_unit.upbdefs.h +30 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c +13 -16
- data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/type/v3/token_bucket.upbdefs.c +57 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/token_bucket.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.c +7 -7
- data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.h +1 -1
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.c +154 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.h +95 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.c +153 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.h +100 -0
- data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.c +5 -14
- data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.h +10 -10
- data/src/core/ext/upbdefs-generated/google/api/httpbody.upbdefs.c +39 -0
- data/src/core/ext/upbdefs-generated/google/api/httpbody.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c +5 -10
- data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +107 -164
- data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.h +82 -82
- data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c +5 -10
- data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c +5 -10
- data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c +5 -16
- data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.h +13 -13
- data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c +5 -10
- data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c +5 -26
- data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.h +28 -28
- data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c +6 -11
- data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/opencensus/proto/trace/v1/trace_config.upbdefs.c +67 -0
- data/src/core/ext/upbdefs-generated/opencensus/proto/trace/v1/trace_config.upbdefs.h +50 -0
- data/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.c +99 -0
- data/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.h +75 -0
- data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c +10 -18
- data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.h +10 -10
- data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c +24 -33
- data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c +9 -8
- data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.h +1 -1
- data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c +10 -13
- data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c +10 -14
- data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +8 -57
- data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.h +70 -70
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/migrate.upbdefs.c +63 -0
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/migrate.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/security.upbdefs.c +47 -0
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/security.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/sensitive.upbdefs.c +35 -0
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/sensitive.upbdefs.h +30 -0
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.c +64 -0
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.h +50 -0
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/versioning.upbdefs.c +40 -0
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/versioning.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c +18 -22
- data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +32 -38
- data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.h +7 -7
- data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +20 -26
- data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.h +7 -7
- data/src/core/ext/upbdefs-generated/xds/core/v3/extension.upbdefs.c +41 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/extension.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +23 -27
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +39 -45
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.h +7 -7
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +25 -29
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/matcher.upbdefs.c +126 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/matcher.upbdefs.h +80 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/regex.upbdefs.c +40 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/regex.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/string.upbdefs.c +52 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/string.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.c +40 -0
- data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.h +35 -0
- data/src/core/ext/xds/certificate_provider_registry.cc +3 -3
- data/src/core/ext/xds/certificate_provider_store.cc +8 -0
- data/src/core/ext/xds/certificate_provider_store.h +10 -1
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +4 -4
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +2 -2
- data/src/core/ext/xds/upb_utils.h +67 -0
- data/src/core/ext/xds/xds_api.cc +214 -3608
- data/src/core/ext/xds/xds_api.h +62 -580
- data/src/core/ext/xds/xds_bootstrap.cc +241 -167
- data/src/core/ext/xds/xds_bootstrap.h +43 -15
- data/src/core/ext/xds/xds_certificate_provider.cc +5 -3
- data/src/core/ext/xds/xds_certificate_provider.h +10 -2
- data/src/core/ext/xds/xds_channel_stack_modifier.cc +109 -0
- data/src/core/ext/xds/xds_channel_stack_modifier.h +53 -0
- data/src/core/ext/xds/xds_client.cc +872 -899
- data/src/core/ext/xds/xds_client.h +132 -159
- data/src/core/ext/xds/xds_client_stats.cc +31 -30
- data/src/core/ext/xds/xds_client_stats.h +12 -11
- data/src/core/ext/xds/xds_cluster.cc +453 -0
- data/src/core/ext/xds/xds_cluster.h +108 -0
- data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +142 -0
- data/src/core/ext/xds/xds_cluster_specifier_plugin.h +79 -0
- data/src/core/ext/xds/xds_common_types.cc +388 -0
- data/src/core/ext/xds/xds_common_types.h +95 -0
- data/src/core/ext/xds/xds_endpoint.cc +371 -0
- data/src/core/ext/xds/xds_endpoint.h +135 -0
- data/src/core/ext/xds/xds_http_fault_filter.cc +11 -10
- data/src/core/ext/xds/xds_http_fault_filter.h +6 -5
- data/src/core/ext/xds/xds_http_filters.cc +12 -5
- data/src/core/ext/xds/xds_http_filters.h +4 -4
- data/src/core/ext/xds/xds_http_rbac_filter.cc +563 -0
- data/src/core/ext/xds/xds_http_rbac_filter.h +54 -0
- data/src/core/ext/xds/xds_listener.cc +1039 -0
- data/src/core/ext/xds/xds_listener.h +220 -0
- data/src/core/{lib/transport/authority_override.h → ext/xds/xds_resource_type.cc} +11 -15
- data/src/core/ext/xds/xds_resource_type.h +98 -0
- data/src/core/ext/xds/xds_resource_type_impl.h +87 -0
- data/src/core/ext/xds/xds_route_config.cc +1122 -0
- data/src/core/ext/xds/xds_route_config.h +218 -0
- data/src/core/ext/xds/xds_routing.cc +250 -0
- data/src/core/ext/xds/xds_routing.h +101 -0
- data/src/core/ext/xds/xds_server_config_fetcher.cc +1057 -289
- data/src/core/lib/address_utils/parse_address.cc +26 -8
- data/src/core/lib/address_utils/parse_address.h +5 -0
- data/src/core/lib/address_utils/sockaddr_utils.cc +33 -36
- data/src/core/lib/address_utils/sockaddr_utils.h +1 -16
- data/src/core/lib/avl/avl.h +452 -88
- data/src/core/lib/backoff/backoff.cc +9 -38
- data/src/core/lib/backoff/backoff.h +11 -11
- data/src/core/lib/channel/call_finalization.h +86 -0
- data/src/core/lib/channel/call_tracer.h +4 -1
- data/src/core/lib/channel/channel_args.cc +173 -16
- data/src/core/lib/channel/channel_args.h +214 -1
- data/src/core/lib/channel/channel_args_preconditioning.cc +42 -0
- data/src/core/lib/channel/channel_args_preconditioning.h +61 -0
- data/src/core/lib/channel/channel_stack.cc +15 -6
- data/src/core/lib/channel/channel_stack.h +39 -6
- data/src/core/lib/channel/channel_stack_builder.cc +24 -283
- data/src/core/lib/channel/channel_stack_builder.h +118 -157
- data/src/core/lib/channel/channel_stack_builder_impl.cc +102 -0
- data/src/core/lib/channel/channel_stack_builder_impl.h +48 -0
- data/src/core/lib/channel/channel_trace.cc +8 -10
- data/src/core/lib/channel/channel_trace.h +2 -1
- data/src/core/lib/channel/channelz.cc +44 -39
- data/src/core/lib/channel/channelz.h +29 -29
- data/src/core/lib/channel/channelz_registry.cc +8 -7
- data/src/core/lib/channel/channelz_registry.h +1 -1
- data/src/core/lib/channel/connected_channel.cc +10 -6
- data/src/core/lib/channel/connected_channel.h +2 -2
- data/src/core/lib/channel/context.h +11 -0
- data/src/core/lib/channel/handshaker.cc +3 -2
- data/src/core/lib/channel/handshaker.h +2 -3
- data/src/core/lib/channel/handshaker_factory.h +10 -2
- data/src/core/lib/channel/handshaker_registry.cc +15 -70
- data/src/core/lib/channel/handshaker_registry.h +29 -12
- data/src/core/lib/channel/promise_based_filter.cc +1002 -0
- data/src/core/lib/channel/promise_based_filter.h +437 -0
- data/src/core/lib/channel/status_util.h +2 -2
- data/src/core/lib/compression/compression.cc +22 -114
- data/src/core/lib/compression/compression_internal.cc +139 -207
- data/src/core/lib/compression/compression_internal.h +64 -69
- data/src/core/lib/compression/message_compress.cc +13 -13
- data/src/core/lib/compression/message_compress.h +2 -2
- data/src/core/lib/config/core_configuration.cc +104 -0
- data/src/core/lib/config/core_configuration.h +196 -0
- data/src/core/lib/debug/stats.cc +1 -1
- data/src/core/lib/debug/stats.h +1 -0
- data/src/core/lib/debug/stats_data.cc +17 -20
- data/src/core/lib/debug/stats_data.h +19 -21
- data/src/core/lib/debug/trace.cc +1 -0
- data/src/core/lib/debug/trace.h +4 -3
- data/src/core/lib/event_engine/{endpoint_config.cc → channel_args_endpoint_config.cc} +2 -2
- data/src/core/lib/event_engine/{endpoint_config_internal.h → channel_args_endpoint_config.h} +3 -3
- data/src/core/lib/{iomgr/event_engine/iomgr.h → event_engine/default_event_engine_factory.cc} +11 -8
- data/src/core/lib/event_engine/event_engine.cc +21 -19
- data/src/core/lib/event_engine/event_engine_factory.h +36 -0
- data/src/core/lib/event_engine/memory_allocator.cc +66 -0
- data/src/core/lib/event_engine/resolved_address.cc +39 -0
- data/src/core/lib/event_engine/sockaddr.cc +3 -3
- data/src/core/lib/gpr/alloc.cc +4 -3
- data/src/core/lib/gpr/atm.cc +1 -1
- data/src/core/lib/gpr/cpu_posix.cc +1 -1
- data/src/core/lib/gpr/env_linux.cc +1 -2
- data/src/core/lib/gpr/env_posix.cc +2 -3
- data/src/core/lib/gpr/log.cc +3 -3
- data/src/core/lib/gpr/log_android.cc +3 -2
- data/src/core/lib/gpr/log_linux.cc +7 -4
- data/src/core/lib/gpr/log_posix.cc +6 -3
- data/src/core/lib/gpr/string.cc +2 -2
- data/src/core/lib/gpr/string.h +2 -2
- data/src/core/lib/gpr/sync.cc +2 -2
- data/src/core/lib/gpr/sync_abseil.cc +7 -6
- data/src/core/lib/gpr/sync_posix.cc +4 -3
- data/src/core/lib/gpr/time.cc +5 -3
- data/src/core/lib/gpr/time_windows.cc +3 -2
- data/src/core/lib/gpr/tls.h +126 -40
- data/src/core/lib/gpr/tmpfile_posix.cc +1 -2
- data/src/core/lib/gpr/useful.h +97 -32
- data/src/core/lib/gprpp/atomic_utils.h +47 -0
- data/src/core/lib/gprpp/bitset.h +207 -0
- data/src/core/lib/gprpp/capture.h +76 -0
- data/src/core/lib/gprpp/chunked_vector.h +253 -0
- data/src/core/lib/{transport/authority_override.cc → gprpp/construct_destruct.h} +16 -17
- data/src/core/lib/gprpp/cpp_impl_of.h +49 -0
- data/src/core/lib/gprpp/debug_location.h +2 -0
- data/src/core/lib/gprpp/dual_ref_counted.h +25 -26
- data/src/core/lib/gprpp/fork.cc +14 -12
- data/src/core/lib/gprpp/fork.h +4 -4
- data/src/core/lib/gprpp/global_config.h +1 -2
- data/src/core/lib/gprpp/global_config_env.cc +14 -14
- data/src/core/lib/gprpp/global_config_env.h +2 -2
- data/src/core/lib/gprpp/global_config_generic.h +2 -2
- data/src/core/lib/gprpp/manual_constructor.h +10 -8
- data/src/core/lib/gprpp/match.h +73 -0
- data/src/core/lib/gprpp/memory.h +9 -3
- data/src/core/lib/gprpp/mpscq.cc +7 -7
- data/src/core/lib/gprpp/mpscq.h +6 -5
- data/src/core/lib/gprpp/orphanable.h +4 -4
- data/src/core/lib/gprpp/overload.h +59 -0
- data/src/core/lib/gprpp/ref_counted.h +21 -19
- data/src/core/lib/gprpp/ref_counted_ptr.h +2 -4
- data/src/core/lib/gprpp/single_set_ptr.h +87 -0
- data/src/core/lib/gprpp/status_helper.cc +65 -37
- data/src/core/lib/gprpp/status_helper.h +14 -16
- data/src/core/lib/gprpp/sync.h +3 -1
- data/src/core/lib/gprpp/table.h +434 -0
- data/src/core/lib/gprpp/thd_posix.cc +5 -5
- data/src/core/lib/gprpp/thd_windows.cc +4 -11
- data/src/core/lib/gprpp/time.cc +198 -0
- data/src/core/lib/gprpp/time.h +292 -0
- data/src/core/lib/gprpp/time_util.cc +2 -2
- data/src/core/lib/gprpp/time_util.h +2 -2
- data/src/core/lib/http/format_request.cc +29 -25
- data/src/core/lib/http/format_request.h +8 -6
- data/src/core/lib/http/httpcli.cc +298 -208
- data/src/core/lib/http/httpcli.h +183 -85
- data/src/core/lib/http/httpcli_security_connector.cc +67 -81
- data/src/core/lib/http/httpcli_ssl_credentials.h +37 -0
- data/src/core/lib/http/parser.cc +82 -11
- data/src/core/lib/http/parser.h +16 -2
- data/src/core/lib/iomgr/buffer_list.cc +11 -10
- data/src/core/lib/iomgr/buffer_list.h +19 -20
- data/src/core/lib/iomgr/call_combiner.cc +45 -16
- data/src/core/lib/iomgr/cfstream_handle.cc +1 -1
- data/src/core/lib/iomgr/closure.h +29 -9
- data/src/core/lib/iomgr/combiner.cc +34 -26
- data/src/core/lib/iomgr/combiner.h +1 -0
- data/src/core/lib/iomgr/dualstack_socket_posix.cc +1 -0
- data/src/core/lib/iomgr/endpoint.cc +0 -4
- data/src/core/lib/iomgr/endpoint.h +1 -4
- data/src/core/lib/iomgr/endpoint_cfstream.cc +15 -42
- data/src/core/lib/iomgr/endpoint_cfstream.h +4 -4
- data/src/core/lib/iomgr/endpoint_pair.h +1 -0
- data/src/core/lib/iomgr/endpoint_pair_event_engine.cc +1 -2
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +11 -9
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +5 -6
- data/src/core/lib/iomgr/error.cc +123 -59
- data/src/core/lib/iomgr/error.h +73 -20
- data/src/core/lib/iomgr/error_cfstream.cc +7 -2
- data/src/core/lib/iomgr/error_internal.h +1 -0
- data/src/core/lib/iomgr/ev_apple.cc +6 -5
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +25 -31
- data/src/core/lib/iomgr/ev_poll_posix.cc +49 -52
- data/src/core/lib/iomgr/ev_posix.cc +10 -12
- data/src/core/lib/iomgr/ev_posix.h +1 -1
- data/src/core/lib/iomgr/event_engine/closure.cc +41 -18
- data/src/core/lib/iomgr/event_engine/closure.h +10 -1
- data/src/core/lib/iomgr/event_engine/endpoint.cc +7 -27
- data/src/core/lib/iomgr/event_engine/endpoint.h +1 -2
- data/src/core/lib/iomgr/event_engine/iomgr.cc +10 -30
- data/src/core/lib/iomgr/event_engine/pollset.cc +6 -6
- data/src/core/lib/iomgr/event_engine/resolved_address_internal.cc +6 -0
- data/src/core/lib/iomgr/event_engine/resolved_address_internal.h +2 -0
- data/src/core/lib/iomgr/event_engine/resolver.cc +70 -47
- data/src/core/lib/iomgr/event_engine/resolver.h +56 -0
- data/src/core/lib/iomgr/event_engine/tcp.cc +70 -37
- data/src/core/lib/iomgr/event_engine/timer.cc +13 -8
- data/src/core/lib/iomgr/exec_ctx.cc +28 -109
- data/src/core/lib/iomgr/exec_ctx.h +28 -52
- data/src/core/lib/iomgr/executor/mpmcqueue.cc +15 -16
- data/src/core/lib/iomgr/executor/mpmcqueue.h +7 -11
- data/src/core/lib/iomgr/executor/threadpool.cc +2 -2
- data/src/core/lib/iomgr/executor/threadpool.h +2 -1
- data/src/core/lib/iomgr/executor.cc +30 -39
- data/src/core/lib/iomgr/executor.h +1 -1
- data/src/core/lib/iomgr/fork_posix.cc +2 -1
- data/src/core/lib/iomgr/grpc_if_nametoindex_posix.cc +2 -2
- data/src/core/lib/iomgr/grpc_if_nametoindex_unsupported.cc +2 -2
- data/src/core/lib/iomgr/internal_errqueue.cc +3 -2
- data/src/core/lib/iomgr/iocp_windows.cc +10 -9
- data/src/core/lib/iomgr/iocp_windows.h +1 -1
- data/src/core/lib/iomgr/iomgr.cc +3 -1
- data/src/core/lib/iomgr/iomgr.h +2 -2
- data/src/core/lib/iomgr/iomgr_internal.cc +6 -10
- data/src/core/lib/iomgr/iomgr_internal.h +3 -2
- data/src/core/lib/iomgr/iomgr_posix.cc +2 -2
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +2 -2
- data/src/core/lib/iomgr/iomgr_windows.cc +3 -4
- data/src/core/lib/iomgr/load_file.cc +2 -2
- data/src/core/lib/iomgr/lockfree_event.cc +18 -0
- data/src/core/lib/iomgr/polling_entity.cc +2 -2
- data/src/core/lib/iomgr/polling_entity.h +6 -0
- data/src/core/lib/iomgr/pollset.cc +1 -1
- data/src/core/lib/iomgr/pollset.h +4 -4
- data/src/core/lib/iomgr/pollset_set_windows.cc +1 -0
- data/src/core/lib/iomgr/pollset_windows.cc +2 -2
- data/src/core/lib/iomgr/port.h +6 -16
- data/src/core/lib/iomgr/python_util.h +1 -0
- data/src/core/lib/iomgr/resolve_address.cc +7 -25
- data/src/core/lib/iomgr/resolve_address.h +47 -48
- data/src/core/lib/iomgr/resolve_address_impl.h +59 -0
- data/src/core/lib/iomgr/resolve_address_posix.cc +90 -78
- data/src/core/lib/iomgr/resolve_address_posix.h +47 -0
- data/src/core/lib/iomgr/resolve_address_windows.cc +99 -82
- data/src/core/lib/iomgr/resolve_address_windows.h +47 -0
- data/src/core/lib/iomgr/resolved_address.h +39 -0
- data/src/core/lib/iomgr/sockaddr.h +1 -1
- data/src/core/lib/iomgr/{socket_utils_uv.cc → sockaddr_utils_posix.cc} +21 -8
- data/src/core/lib/iomgr/socket_factory_posix.cc +5 -5
- data/src/core/lib/iomgr/socket_factory_posix.h +1 -0
- data/src/core/lib/iomgr/socket_mutator.cc +2 -2
- data/src/core/lib/iomgr/socket_mutator.h +2 -2
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +4 -22
- data/src/core/lib/iomgr/socket_utils_linux.cc +4 -4
- data/src/core/lib/iomgr/socket_utils_posix.cc +2 -2
- data/src/core/lib/iomgr/socket_utils_posix.h +2 -2
- data/src/core/lib/iomgr/socket_utils_windows.cc +2 -2
- data/src/core/lib/iomgr/tcp_client.cc +1 -1
- data/src/core/lib/iomgr/tcp_client.h +5 -2
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +8 -24
- data/src/core/lib/iomgr/tcp_client_posix.cc +17 -27
- data/src/core/lib/iomgr/tcp_client_posix.h +4 -2
- data/src/core/lib/iomgr/tcp_client_windows.cc +8 -10
- data/src/core/lib/iomgr/tcp_posix.cc +143 -120
- data/src/core/lib/iomgr/tcp_posix.h +9 -12
- data/src/core/lib/iomgr/tcp_server.h +4 -3
- data/src/core/lib/iomgr/tcp_server_posix.cc +40 -29
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +21 -17
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +2 -2
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +4 -4
- data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +4 -4
- data/src/core/lib/iomgr/tcp_server_windows.cc +6 -10
- data/src/core/lib/iomgr/tcp_windows.cc +22 -39
- data/src/core/lib/iomgr/tcp_windows.h +1 -1
- data/src/core/lib/iomgr/timer.cc +3 -2
- data/src/core/lib/iomgr/timer.h +11 -7
- data/src/core/lib/iomgr/timer_generic.cc +113 -124
- data/src/core/lib/iomgr/timer_generic.h +1 -0
- data/src/core/lib/iomgr/timer_heap.cc +2 -3
- data/src/core/lib/iomgr/timer_manager.cc +15 -14
- data/src/core/lib/iomgr/unix_sockets_posix.cc +25 -39
- data/src/core/lib/iomgr/unix_sockets_posix.h +6 -10
- data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +6 -15
- data/src/core/lib/iomgr/wakeup_fd_nospecial.cc +1 -0
- data/src/core/lib/iomgr/wakeup_fd_pipe.cc +2 -3
- data/src/core/lib/iomgr/wakeup_fd_posix.cc +1 -0
- data/src/core/lib/iomgr/work_serializer.cc +120 -44
- data/src/core/lib/iomgr/work_serializer.h +17 -5
- data/src/core/lib/json/json_reader.cc +92 -52
- data/src/core/lib/json/json_util.cc +71 -3
- data/src/core/lib/json/json_util.h +67 -117
- data/src/core/lib/json/json_writer.cc +0 -3
- data/src/core/lib/matchers/matchers.cc +1 -1
- data/src/core/lib/matchers/matchers.h +0 -1
- data/src/core/lib/profiling/basic_timers.cc +8 -6
- data/src/core/lib/profiling/stap_timers.cc +2 -2
- data/src/core/lib/promise/activity.cc +121 -0
- data/src/core/lib/promise/activity.h +540 -0
- data/src/core/lib/promise/arena_promise.h +188 -0
- data/src/core/lib/promise/call_push_pull.h +144 -0
- data/src/core/lib/promise/context.h +86 -0
- data/src/core/lib/promise/detail/basic_seq.h +496 -0
- data/src/core/lib/promise/detail/promise_factory.h +189 -0
- data/src/core/lib/promise/detail/promise_like.h +85 -0
- data/src/core/lib/promise/detail/status.h +50 -0
- data/src/core/lib/promise/detail/switch.h +1455 -0
- data/src/core/lib/promise/exec_ctx_wakeup_scheduler.h +48 -0
- data/src/core/lib/promise/intra_activity_waiter.h +49 -0
- data/src/core/lib/promise/latch.h +104 -0
- data/src/core/lib/promise/loop.h +134 -0
- data/src/core/lib/promise/map.h +88 -0
- data/src/core/lib/promise/poll.h +66 -0
- data/src/core/lib/promise/promise.h +95 -0
- data/src/core/lib/promise/race.h +84 -0
- data/src/core/lib/promise/seq.h +89 -0
- data/src/core/lib/promise/sleep.cc +74 -0
- data/src/core/lib/promise/sleep.h +66 -0
- data/src/core/lib/promise/try_seq.h +157 -0
- data/src/core/{ext/filters/client_channel → lib/resolver}/resolver.cc +17 -25
- data/src/core/{ext/filters/client_channel → lib/resolver}/resolver.h +43 -44
- data/src/core/{ext/filters/client_channel → lib/resolver}/resolver_factory.h +32 -29
- data/src/core/lib/resolver/resolver_registry.cc +156 -0
- data/src/core/lib/resolver/resolver_registry.h +113 -0
- data/src/core/{ext/filters/client_channel → lib/resolver}/server_address.cc +1 -1
- data/src/core/{ext/filters/client_channel → lib/resolver}/server_address.h +5 -5
- data/src/core/lib/resource_quota/api.cc +83 -0
- data/src/core/lib/resource_quota/api.h +40 -0
- data/src/core/lib/{gprpp → resource_quota}/arena.cc +18 -14
- data/src/core/lib/{gprpp → resource_quota}/arena.h +37 -16
- data/src/core/lib/resource_quota/memory_quota.cc +478 -0
- data/src/core/lib/resource_quota/memory_quota.h +457 -0
- data/src/core/lib/resource_quota/resource_quota.cc +33 -0
- data/src/core/lib/resource_quota/resource_quota.h +66 -0
- data/src/core/lib/resource_quota/thread_quota.cc +43 -0
- data/src/core/lib/resource_quota/thread_quota.h +57 -0
- data/src/core/lib/resource_quota/trace.cc +19 -0
- data/src/core/{ext/filters/max_age/max_age_filter.h → lib/resource_quota/trace.h} +6 -8
- data/src/core/lib/security/authorization/authorization_policy_provider.h +12 -4
- data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +1 -1
- data/src/core/lib/security/authorization/evaluate_args.cc +39 -36
- data/src/core/lib/security/authorization/evaluate_args.h +3 -2
- data/src/core/lib/security/authorization/grpc_authorization_engine.cc +60 -0
- data/src/core/lib/security/authorization/grpc_authorization_engine.h +62 -0
- data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +106 -0
- data/src/core/lib/security/authorization/grpc_server_authz_filter.h +50 -0
- data/src/core/lib/security/authorization/matchers.cc +227 -0
- data/src/core/lib/security/authorization/matchers.h +211 -0
- data/src/core/lib/security/authorization/rbac_policy.cc +442 -0
- data/src/core/lib/security/authorization/rbac_policy.h +171 -0
- data/src/core/lib/security/context/security_context.cc +15 -10
- data/src/core/lib/security/context/security_context.h +9 -2
- data/src/core/lib/security/credentials/alts/alts_credentials.cc +6 -5
- data/src/core/lib/security/credentials/alts/alts_credentials.h +10 -0
- data/src/core/lib/security/credentials/alts/check_gcp_environment_linux.cc +2 -2
- data/src/core/lib/security/credentials/alts/check_gcp_environment_no_op.cc +2 -2
- data/src/core/lib/security/credentials/alts/check_gcp_environment_windows.cc +2 -2
- data/src/core/lib/security/credentials/call_creds_util.cc +87 -0
- data/src/core/lib/security/credentials/call_creds_util.h +42 -0
- data/src/core/lib/security/credentials/channel_creds_registry.h +97 -0
- data/src/core/lib/security/credentials/channel_creds_registry_init.cc +70 -0
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +28 -86
- data/src/core/lib/security/credentials/composite/composite_credentials.h +23 -10
- data/src/core/lib/security/credentials/credentials.cc +11 -10
- data/src/core/lib/security/credentials/credentials.h +81 -82
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +61 -59
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +2 -2
- data/src/core/lib/security/credentials/external/aws_request_signer.cc +3 -3
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +112 -68
- data/src/core/lib/security/credentials/external/external_account_credentials.h +6 -9
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +0 -1
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +35 -18
- data/src/core/lib/security/credentials/external/url_external_account_credentials.h +1 -0
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +23 -27
- data/src/core/lib/security/credentials/fake/fake_credentials.h +22 -21
- data/src/core/lib/security/credentials/google_default/credentials_generic.cc +1 -2
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +77 -20
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +9 -3
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +23 -29
- data/src/core/lib/security/credentials/iam/iam_credentials.h +15 -9
- data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +25 -26
- data/src/core/lib/security/credentials/insecure/insecure_credentials.h +57 -0
- data/src/core/lib/security/credentials/jwt/json_token.cc +5 -7
- data/src/core/lib/security/credentials/jwt/json_token.h +2 -1
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +56 -51
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +27 -15
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +59 -54
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +4 -4
- data/src/core/lib/security/credentials/local/local_credentials.cc +6 -6
- data/src/core/lib/security/credentials/local/local_credentials.h +10 -0
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +160 -181
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +61 -33
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +98 -156
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +56 -27
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +11 -18
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +14 -4
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +3 -2
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +10 -6
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +13 -13
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +62 -12
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +209 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +145 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +33 -87
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +75 -151
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +30 -16
- data/src/core/lib/security/credentials/tls/tls_credentials.h +6 -0
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +51 -58
- data/src/core/lib/security/credentials/xds/xds_credentials.h +37 -6
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +11 -17
- data/src/core/lib/security/security_connector/alts/alts_security_connector.h +3 -3
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +13 -24
- data/src/core/lib/security/security_connector/fake/fake_security_connector.h +0 -2
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +8 -18
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +11 -16
- data/src/core/lib/security/security_connector/load_system_roots_fallback.cc +1 -0
- data/src/core/lib/security/security_connector/load_system_roots_linux.cc +4 -5
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +14 -19
- data/src/core/lib/security/security_connector/security_connector.cc +8 -15
- data/src/core/lib/security/security_connector/security_connector.h +26 -22
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +14 -20
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +1 -2
- data/src/core/lib/security/security_connector/ssl_utils.cc +41 -36
- data/src/core/lib/security/security_connector/ssl_utils.h +14 -18
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +366 -211
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +69 -48
- data/src/core/lib/security/transport/auth_filters.h +39 -5
- data/src/core/lib/security/transport/client_auth_filter.cc +98 -363
- data/src/core/lib/security/transport/secure_endpoint.cc +202 -143
- data/src/core/lib/security/transport/secure_endpoint.h +2 -1
- data/src/core/lib/security/transport/security_handshaker.cc +95 -54
- data/src/core/lib/security/transport/security_handshaker.h +2 -1
- data/src/core/lib/security/transport/server_auth_filter.cc +41 -37
- data/src/core/lib/security/transport/tsi_error.cc +3 -5
- data/src/core/lib/security/util/json_util.cc +6 -8
- data/src/core/lib/service_config/service_config.h +82 -0
- data/src/core/lib/service_config/service_config_call_data.h +72 -0
- data/src/core/{ext/filters/client_channel/service_config.cc → lib/service_config/service_config_impl.cc} +20 -17
- data/src/core/{ext/filters/client_channel/service_config.h → lib/service_config/service_config_impl.h} +16 -18
- data/src/core/{ext/filters/client_channel → lib/service_config}/service_config_parser.cc +31 -27
- data/src/core/{ext/filters/client_channel → lib/service_config}/service_config_parser.h +39 -28
- data/src/core/lib/slice/percent_encoding.cc +84 -97
- data/src/core/lib/slice/percent_encoding.h +23 -28
- data/src/core/lib/slice/slice.cc +80 -200
- data/src/core/lib/slice/slice.h +384 -0
- data/src/core/lib/{iomgr/is_epollexclusive_available.h → slice/slice_api.cc} +15 -12
- data/src/core/lib/slice/slice_buffer.cc +10 -7
- data/src/core/lib/slice/slice_internal.h +15 -277
- data/src/core/lib/slice/slice_refcount.cc +35 -0
- data/src/core/lib/slice/slice_refcount.h +46 -0
- data/src/core/lib/slice/slice_refcount_base.h +61 -0
- data/src/core/lib/slice/slice_split.cc +100 -0
- data/src/core/lib/slice/slice_split.h +40 -0
- data/src/core/lib/slice/slice_string_helpers.cc +0 -83
- data/src/core/lib/slice/slice_string_helpers.h +0 -11
- data/src/core/lib/surface/api_trace.cc +2 -1
- data/src/core/lib/surface/api_trace.h +1 -0
- data/src/core/lib/surface/builtins.cc +49 -0
- data/src/core/lib/surface/builtins.h +26 -0
- data/src/core/lib/surface/byte_buffer_reader.cc +1 -1
- data/src/core/lib/surface/call.cc +1142 -1247
- data/src/core/lib/surface/call.h +8 -28
- data/src/core/lib/surface/call_details.cc +2 -2
- data/src/core/lib/surface/call_log_batch.cc +2 -2
- data/src/core/lib/surface/channel.cc +72 -103
- data/src/core/lib/surface/channel.h +15 -23
- data/src/core/lib/surface/channel_init.cc +22 -76
- data/src/core/lib/surface/channel_init.h +44 -40
- data/src/core/lib/surface/channel_ping.cc +1 -2
- data/src/core/lib/surface/channel_stack_type.cc +2 -1
- data/src/core/lib/surface/completion_queue.cc +70 -78
- data/src/core/lib/surface/completion_queue_factory.cc +2 -1
- data/src/core/lib/surface/completion_queue_factory.h +1 -0
- data/src/core/lib/surface/event_string.cc +1 -0
- data/src/core/lib/surface/init.cc +81 -57
- data/src/core/lib/surface/init.h +0 -3
- data/src/core/lib/surface/lame_client.cc +47 -32
- data/src/core/lib/surface/lame_client.h +1 -1
- data/src/core/lib/surface/metadata_array.cc +2 -2
- data/src/core/lib/surface/server.cc +71 -118
- data/src/core/lib/surface/server.h +40 -37
- data/src/core/lib/surface/validate_metadata.cc +49 -18
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.cc +11 -12
- data/src/core/lib/transport/bdp_estimator.h +2 -2
- data/src/core/lib/transport/byte_stream.cc +6 -0
- data/src/core/lib/transport/byte_stream.h +1 -0
- data/src/core/lib/transport/connectivity_state.cc +8 -5
- data/src/core/lib/transport/connectivity_state.h +2 -2
- data/src/core/lib/transport/error_utils.cc +48 -20
- data/src/core/lib/transport/error_utils.h +3 -2
- data/src/core/lib/transport/metadata_batch.h +1352 -171
- data/src/core/lib/transport/parsed_metadata.cc +37 -0
- data/src/core/lib/transport/parsed_metadata.h +401 -0
- data/src/core/lib/transport/pid_controller.cc +4 -4
- data/src/core/lib/transport/status_conversion.cc +2 -2
- data/src/core/lib/transport/status_conversion.h +1 -1
- data/src/core/lib/transport/timeout_encoding.cc +204 -67
- data/src/core/lib/transport/timeout_encoding.h +40 -10
- data/src/core/lib/transport/transport.cc +11 -32
- data/src/core/lib/transport/transport.h +103 -4
- data/src/core/lib/transport/transport_impl.h +14 -0
- data/src/core/lib/transport/transport_op_string.cc +7 -29
- data/src/core/lib/uri/uri_parser.cc +237 -63
- data/src/core/lib/uri/uri_parser.h +39 -23
- data/src/core/plugin_registry/grpc_plugin_registry.cc +69 -102
- data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +85 -0
- data/src/core/tsi/alts/crypt/aes_gcm.cc +6 -3
- data/src/core/tsi/alts/crypt/gsec.h +2 -3
- data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +13 -12
- data/src/core/tsi/alts/frame_protector/frame_handler.cc +10 -11
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +31 -27
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +2 -3
- data/src/core/tsi/alts/handshaker/alts_shared_resource.cc +9 -1
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +33 -15
- data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +2 -2
- data/src/core/tsi/alts/handshaker/alts_tsi_utils.h +1 -1
- data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +2 -2
- data/src/core/tsi/alts/handshaker/transport_security_common_api.h +2 -2
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +2 -2
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +1 -1
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +2 -2
- data/src/core/tsi/fake_transport_security.cc +15 -7
- data/src/core/tsi/local_transport_security.cc +42 -87
- data/src/core/tsi/local_transport_security.h +1 -4
- data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +141 -0
- data/src/core/tsi/ssl/key_logging/ssl_key_logging.h +81 -0
- data/src/core/tsi/ssl/session_cache/ssl_session.h +2 -4
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +20 -53
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +6 -7
- data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +2 -2
- data/src/core/tsi/ssl_transport_security.cc +229 -62
- data/src/core/tsi/ssl_transport_security.h +50 -9
- data/src/core/tsi/transport_security.cc +15 -3
- data/src/core/tsi/transport_security.h +16 -1
- data/src/core/tsi/transport_security_grpc.h +1 -0
- data/src/core/tsi/transport_security_interface.h +28 -0
- data/src/ruby/ext/grpc/extconf.rb +21 -11
- data/src/ruby/ext/grpc/rb_byte_buffer.c +2 -1
- data/src/ruby/ext/grpc/rb_call.c +5 -5
- data/src/ruby/ext/grpc/rb_call_credentials.c +5 -5
- data/src/ruby/ext/grpc/rb_channel.c +15 -10
- data/src/ruby/ext/grpc/rb_channel_args.c +2 -2
- data/src/ruby/ext/grpc/rb_channel_credentials.c +4 -4
- data/src/ruby/ext/grpc/rb_channel_credentials.h +1 -0
- data/src/ruby/ext/grpc/rb_completion_queue.c +3 -2
- data/src/ruby/ext/grpc/rb_compression_options.c +5 -4
- data/src/ruby/ext/grpc/rb_event_thread.c +4 -4
- data/src/ruby/ext/grpc/rb_grpc.c +5 -4
- data/src/ruby/ext/grpc/rb_grpc.h +1 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +30 -34
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +45 -51
- data/src/ruby/ext/grpc/rb_server.c +13 -9
- data/src/ruby/ext/grpc/rb_server_credentials.c +3 -3
- data/src/ruby/ext/grpc/rb_server_credentials.h +1 -0
- data/src/ruby/ext/grpc/rb_xds_channel_credentials.c +8 -5
- data/src/ruby/ext/grpc/rb_xds_channel_credentials.h +3 -1
- data/src/ruby/ext/grpc/rb_xds_server_credentials.c +6 -5
- data/src/ruby/ext/grpc/rb_xds_server_credentials.h +3 -1
- data/src/ruby/lib/grpc/generic/active_call.rb +7 -1
- data/src/ruby/lib/grpc/grpc.rb +1 -1
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/generate_proto_ruby.sh +1 -0
- data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +1 -0
- data/src/ruby/pb/test/client.rb +769 -0
- data/src/ruby/pb/test/server.rb +252 -0
- data/src/ruby/pb/test/xds_client.rb +415 -0
- data/src/ruby/spec/client_server_spec.rb +1 -1
- data/third_party/abseil-cpp/absl/algorithm/container.h +101 -91
- data/third_party/abseil-cpp/absl/base/attributes.h +64 -31
- data/third_party/abseil-cpp/absl/base/config.h +67 -37
- data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +1 -26
- data/third_party/abseil-cpp/absl/base/internal/fast_type_id.h +48 -0
- data/third_party/abseil-cpp/absl/base/internal/spinlock.h +3 -1
- data/third_party/abseil-cpp/absl/base/internal/spinlock_wait.h +2 -0
- data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +69 -0
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +4 -4
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +15 -10
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +16 -0
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +4 -4
- data/third_party/abseil-cpp/absl/base/options.h +1 -1
- data/third_party/abseil-cpp/absl/container/fixed_array.h +0 -5
- data/third_party/abseil-cpp/absl/container/inlined_vector.h +105 -97
- data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +17 -15
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +18 -102
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +37 -78
- data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +388 -423
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +3 -2
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +14 -8
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +251 -120
- data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +11 -1
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +12 -11
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +6 -2
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +12 -5
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +110 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +234 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +25 -7
- data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +8 -2
- data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +21 -3
- data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +2 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize.cc +2 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +14 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize_emscripten.inc +72 -0
- data/third_party/abseil-cpp/absl/functional/function_ref.h +4 -1
- data/third_party/abseil-cpp/absl/hash/hash.h +22 -0
- data/third_party/abseil-cpp/absl/hash/internal/hash.cc +15 -16
- data/third_party/abseil-cpp/absl/hash/internal/hash.h +88 -37
- data/third_party/abseil-cpp/absl/hash/internal/{wyhash.cc → low_level_hash.cc} +23 -11
- data/third_party/abseil-cpp/absl/hash/internal/{wyhash.h → low_level_hash.h} +14 -12
- data/third_party/abseil-cpp/absl/memory/memory.h +1 -1
- data/third_party/abseil-cpp/absl/meta/type_traits.h +32 -2
- data/third_party/abseil-cpp/absl/numeric/int128.cc +3 -10
- data/third_party/abseil-cpp/absl/numeric/int128.h +146 -73
- data/third_party/abseil-cpp/absl/numeric/int128_have_intrinsic.inc +19 -25
- data/third_party/abseil-cpp/absl/numeric/int128_no_intrinsic.inc +73 -70
- data/third_party/abseil-cpp/absl/{base → profiling}/internal/exponential_biased.cc +4 -4
- data/third_party/abseil-cpp/absl/{base → profiling}/internal/exponential_biased.h +6 -6
- data/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h +230 -0
- data/third_party/abseil-cpp/absl/random/bernoulli_distribution.h +200 -0
- data/third_party/abseil-cpp/absl/random/beta_distribution.h +427 -0
- data/third_party/abseil-cpp/absl/random/discrete_distribution.cc +98 -0
- data/third_party/abseil-cpp/absl/random/discrete_distribution.h +247 -0
- data/third_party/abseil-cpp/absl/random/distributions.h +452 -0
- data/third_party/abseil-cpp/absl/random/exponential_distribution.h +165 -0
- data/third_party/abseil-cpp/absl/random/gaussian_distribution.cc +104 -0
- data/third_party/abseil-cpp/absl/random/gaussian_distribution.h +275 -0
- data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +92 -0
- data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +268 -0
- data/third_party/abseil-cpp/absl/random/internal/fastmath.h +57 -0
- data/third_party/abseil-cpp/absl/random/internal/generate_real.h +144 -0
- data/third_party/abseil-cpp/absl/random/internal/iostream_state_saver.h +245 -0
- data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +150 -0
- data/third_party/abseil-cpp/absl/random/internal/pcg_engine.h +308 -0
- data/third_party/abseil-cpp/absl/random/internal/platform.h +171 -0
- data/third_party/abseil-cpp/absl/random/internal/pool_urbg.cc +253 -0
- data/third_party/abseil-cpp/absl/random/internal/pool_urbg.h +131 -0
- data/third_party/abseil-cpp/absl/random/internal/randen.cc +91 -0
- data/third_party/abseil-cpp/absl/random/internal/randen.h +102 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +221 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_detect.h +33 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +239 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_hwaes.cc +526 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_hwaes.h +50 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_round_keys.cc +462 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_slow.cc +471 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_slow.h +40 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_traits.h +88 -0
- data/third_party/abseil-cpp/absl/random/internal/salted_seed_seq.h +167 -0
- data/third_party/abseil-cpp/absl/random/internal/seed_material.cc +267 -0
- data/third_party/abseil-cpp/absl/random/internal/seed_material.h +104 -0
- data/third_party/abseil-cpp/absl/random/internal/traits.h +101 -0
- data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +244 -0
- data/third_party/abseil-cpp/absl/random/internal/wide_multiply.h +111 -0
- data/third_party/abseil-cpp/absl/random/log_uniform_int_distribution.h +257 -0
- data/third_party/abseil-cpp/absl/random/poisson_distribution.h +258 -0
- data/third_party/abseil-cpp/absl/random/random.h +189 -0
- data/third_party/abseil-cpp/absl/random/seed_gen_exception.cc +46 -0
- data/third_party/abseil-cpp/absl/random/seed_gen_exception.h +55 -0
- data/third_party/abseil-cpp/absl/random/seed_sequences.cc +29 -0
- data/third_party/abseil-cpp/absl/random/seed_sequences.h +110 -0
- data/third_party/abseil-cpp/absl/random/uniform_int_distribution.h +275 -0
- data/third_party/abseil-cpp/absl/random/uniform_real_distribution.h +202 -0
- data/third_party/abseil-cpp/absl/random/zipf_distribution.h +271 -0
- data/third_party/abseil-cpp/absl/status/internal/status_internal.h +5 -5
- data/third_party/abseil-cpp/absl/status/status.cc +9 -17
- data/third_party/abseil-cpp/absl/status/status.h +19 -15
- data/third_party/abseil-cpp/absl/status/statusor.cc +34 -2
- data/third_party/abseil-cpp/absl/status/statusor.h +31 -21
- data/third_party/abseil-cpp/absl/strings/charconv.cc +3 -3
- data/third_party/abseil-cpp/absl/strings/charconv.h +3 -2
- data/third_party/abseil-cpp/absl/strings/cord.cc +453 -359
- data/third_party/abseil-cpp/absl/strings/cord.h +197 -70
- data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +6 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +140 -63
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +1128 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h +939 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.cc +185 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.h +265 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.cc +68 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.h +211 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.cc +129 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.h +50 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +7 -7
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +55 -181
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.h +42 -24
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring_reader.h +4 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_functions.cc +96 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_functions.h +85 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.cc +139 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.h +131 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +445 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_info.h +298 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_statistics.h +87 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_update_scope.h +71 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_update_tracker.h +121 -0
- data/third_party/abseil-cpp/absl/strings/internal/resize_uninitialized.h +48 -2
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +8 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +3 -4
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +6 -6
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +36 -18
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +62 -73
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +24 -16
- data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +35 -35
- data/third_party/abseil-cpp/absl/strings/numbers.cc +1 -1
- data/third_party/abseil-cpp/absl/strings/numbers.h +34 -0
- data/third_party/abseil-cpp/absl/strings/str_cat.cc +4 -4
- data/third_party/abseil-cpp/absl/strings/str_format.h +1 -2
- data/third_party/abseil-cpp/absl/strings/string_view.cc +16 -21
- data/third_party/abseil-cpp/absl/strings/string_view.h +120 -39
- data/third_party/abseil-cpp/absl/strings/substitute.cc +2 -1
- data/third_party/abseil-cpp/absl/strings/substitute.h +99 -74
- data/third_party/abseil-cpp/absl/synchronization/blocking_counter.cc +25 -15
- data/third_party/abseil-cpp/absl/synchronization/blocking_counter.h +5 -3
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +1 -1
- data/third_party/abseil-cpp/absl/synchronization/mutex.h +3 -3
- data/third_party/abseil-cpp/absl/time/civil_time.cc +1 -3
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +93 -20
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.cc +1 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.h +2 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +83 -21
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +49 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +1 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +2 -3
- data/third_party/abseil-cpp/absl/time/time.h +67 -36
- data/third_party/abseil-cpp/absl/types/bad_optional_access.h +1 -1
- data/third_party/abseil-cpp/absl/types/bad_variant_access.h +2 -2
- data/third_party/abseil-cpp/absl/types/span.h +3 -3
- data/third_party/address_sorting/address_sorting_posix.c +1 -0
- data/third_party/boringssl-with-bazel/err_data.c +685 -673
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +67 -54
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +21 -22
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_d2i_fp.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_gentm.c +6 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.c +16 -23
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +55 -37
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_print.c +19 -29
- data/third_party/boringssl-with-bazel/src/crypto/{x509 → asn1}/a_strex.c +269 -272
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +106 -153
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +4 -4
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +1 -40
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utf8.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +59 -47
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_par.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c +24 -28
- data/third_party/boringssl-with-bazel/src/crypto/{x509 → asn1}/charmap.h +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/{asn1_locl.h → internal.h} +86 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +57 -281
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +291 -199
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +9 -9
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.c +10 -14
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.c +8 -6
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/time_support.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +24 -8
- data/third_party/boringssl-with-bazel/src/crypto/bio/bio_mem.c +1 -7
- data/third_party/boringssl-with-bazel/src/crypto/bio/connect.c +1 -5
- data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +0 -4
- data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +1 -7
- data/third_party/boringssl-with-bazel/src/crypto/bio/pair.c +1 -6
- data/third_party/boringssl-with-bazel/src/crypto/bio/socket.c +3 -17
- data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +4 -6
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c +3 -1
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbb.c +9 -0
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +8 -0
- data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c +38 -47
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/cipher_extra.c +45 -65
- data/third_party/boringssl-with-bazel/src/crypto/conf/conf.c +14 -3
- data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +6 -3
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +21 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/evp/scrypt.c +32 -34
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +26 -9
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd_extra.c +3 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +5 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/sqrt.c +5 -9
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +12 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +10 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/des/des.c +10 -11
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/des/internal.h +1 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +1 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md4/md4.c +4 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5.c +4 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm_nohw.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +5 -9
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +4 -6
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +24 -9
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +4 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +7 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +35 -35
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +11 -10
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +10 -37
- data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +36 -2
- data/third_party/boringssl-with-bazel/src/crypto/hrss/hrss.c +219 -121
- data/third_party/boringssl-with-bazel/src/crypto/hrss/internal.h +9 -2
- data/third_party/boringssl-with-bazel/src/crypto/internal.h +62 -2
- data/third_party/boringssl-with-bazel/src/crypto/lhash/internal.h +253 -0
- data/third_party/boringssl-with-bazel/src/crypto/lhash/lhash.c +28 -23
- data/third_party/boringssl-with-bazel/src/crypto/mem.c +32 -9
- data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +7 -3
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_all.c +0 -9
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_info.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +0 -8
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pk8.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pkey.c +0 -4
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/internal.h +16 -7
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7.c +38 -4
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +151 -12
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/pool/internal.h +5 -1
- data/third_party/boringssl-with-bazel/src/crypto/pool/pool.c +59 -22
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/deterministic.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/fuchsia.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/windows.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/siphash/siphash.c +6 -6
- data/third_party/boringssl-with-bazel/src/crypto/x509/a_verify.c +15 -11
- data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +2 -18
- data/third_party/boringssl-with-bazel/src/crypto/x509/by_dir.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/by_file.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +233 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/name_print.c +246 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +15 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c +10 -5
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +0 -179
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c +4 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +6 -23
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +1 -5
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c +25 -22
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +11 -54
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +2 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +1 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +0 -16
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +9 -11
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_exten.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c +23 -21
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +12 -11
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +232 -11
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_cache.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_lib.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_map.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_node.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_tree.c +5 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c +24 -5
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +18 -8
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c +3 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +6 -7
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_crld.c +4 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +23 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ncons.c +112 -55
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pci.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +14 -13
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +76 -31
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +1504 -561
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +5 -12
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +10 -6
- data/third_party/boringssl-with-bazel/src/include/openssl/base64.h +8 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +3 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/bn.h +3 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +9 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +21 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/conf.h +8 -5
- data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +4 -12
- data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +3 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +27 -41
- data/third_party/boringssl-with-bazel/src/include/openssl/ec_key.h +12 -27
- data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +8 -10
- data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +35 -55
- data/third_party/boringssl-with-bazel/src/include/openssl/hkdf.h +4 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +26 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/hrss.h +14 -12
- data/third_party/boringssl-with-bazel/src/include/openssl/lhash.h +4 -205
- data/third_party/boringssl-with-bazel/src/include/openssl/mem.h +12 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/obj.h +5 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +0 -20
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +24 -18
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +6 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/pool.h +7 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +29 -28
- data/third_party/boringssl-with-bazel/src/include/openssl/span.h +37 -15
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +110 -26
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +31 -32
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +725 -189
- data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +16 -695
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +52 -16
- data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +9 -16
- data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +310 -359
- data/third_party/boringssl-with-bazel/src/ssl/{t1_lib.cc → extensions.cc} +110 -159
- data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +24 -13
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +145 -142
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +106 -99
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +90 -51
- data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +1 -2
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +11 -5
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +6 -51
- data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +121 -65
- data/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc +6 -12
- data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +4 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc +28 -23
- data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +14 -27
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +210 -212
- data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +30 -41
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +48 -34
- data/third_party/cares/cares/{ares.h → include/ares.h} +73 -1
- data/third_party/cares/cares/{ares_dns.h → include/ares_dns.h} +9 -0
- data/third_party/cares/cares/{ares_rules.h → include/ares_rules.h} +0 -0
- data/third_party/cares/cares/{ares_version.h → include/ares_version.h} +3 -3
- data/third_party/cares/cares/{ares__close_sockets.c → src/lib/ares__close_sockets.c} +2 -2
- data/third_party/cares/cares/{ares__get_hostent.c → src/lib/ares__get_hostent.c} +1 -2
- data/third_party/cares/cares/src/lib/ares__parse_into_addrinfo.c +260 -0
- data/third_party/cares/cares/{ares__read_line.c → src/lib/ares__read_line.c} +0 -0
- data/third_party/cares/cares/src/lib/ares__readaddrinfo.c +264 -0
- data/third_party/cares/cares/src/lib/ares__sortaddrinfo.c +499 -0
- data/third_party/cares/cares/{ares__timeval.c → src/lib/ares__timeval.c} +0 -0
- data/third_party/cares/cares/src/lib/ares_android.c +444 -0
- data/third_party/cares/cares/src/lib/ares_android.h +27 -0
- data/third_party/cares/cares/{ares_cancel.c → src/lib/ares_cancel.c} +0 -0
- data/third_party/cares/cares/{ares_create_query.c → src/lib/ares_create_query.c} +8 -17
- data/third_party/cares/cares/{ares_data.c → src/lib/ares_data.c} +18 -0
- data/third_party/cares/cares/{ares_data.h → src/lib/ares_data.h} +2 -0
- data/third_party/cares/cares/{ares_destroy.c → src/lib/ares_destroy.c} +0 -0
- data/third_party/cares/cares/{ares_expand_name.c → src/lib/ares_expand_name.c} +114 -23
- data/third_party/cares/cares/{ares_expand_string.c → src/lib/ares_expand_string.c} +2 -5
- data/third_party/cares/cares/{ares_fds.c → src/lib/ares_fds.c} +0 -0
- data/third_party/cares/cares/{ares_free_hostent.c → src/lib/ares_free_hostent.c} +6 -4
- data/third_party/cares/cares/{ares_free_string.c → src/lib/ares_free_string.c} +0 -0
- data/third_party/cares/cares/src/lib/ares_freeaddrinfo.c +59 -0
- data/third_party/cares/cares/src/lib/ares_getaddrinfo.c +772 -0
- data/third_party/cares/cares/{ares_getenv.c → src/lib/ares_getenv.c} +0 -2
- data/third_party/cares/cares/{ares_getenv.h → src/lib/ares_getenv.h} +0 -0
- data/third_party/cares/cares/{ares_gethostbyaddr.c → src/lib/ares_gethostbyaddr.c} +2 -9
- data/third_party/cares/cares/{ares_gethostbyname.c → src/lib/ares_gethostbyname.c} +25 -20
- data/third_party/cares/cares/{ares_getnameinfo.c → src/lib/ares_getnameinfo.c} +4 -10
- data/third_party/cares/cares/{ares_getsock.c → src/lib/ares_getsock.c} +0 -0
- data/third_party/cares/cares/{ares_inet_net_pton.h → src/lib/ares_inet_net_pton.h} +0 -0
- data/third_party/cares/cares/{ares_init.c → src/lib/ares_init.c} +79 -40
- data/third_party/cares/cares/{ares_iphlpapi.h → src/lib/ares_iphlpapi.h} +0 -0
- data/third_party/cares/cares/{ares_ipv6.h → src/lib/ares_ipv6.h} +7 -0
- data/third_party/cares/cares/{ares_library_init.c → src/lib/ares_library_init.c} +7 -2
- data/third_party/cares/cares/{ares_library_init.h → src/lib/ares_library_init.h} +1 -1
- data/third_party/cares/cares/{ares_llist.c → src/lib/ares_llist.c} +0 -0
- data/third_party/cares/cares/{ares_llist.h → src/lib/ares_llist.h} +0 -0
- data/third_party/cares/cares/{ares_mkquery.c → src/lib/ares_mkquery.c} +0 -0
- data/third_party/cares/cares/src/lib/ares_nameser.h +482 -0
- data/third_party/cares/cares/{ares_nowarn.c → src/lib/ares_nowarn.c} +0 -0
- data/third_party/cares/cares/{ares_nowarn.h → src/lib/ares_nowarn.h} +0 -0
- data/third_party/cares/cares/{ares_options.c → src/lib/ares_options.c} +0 -0
- data/third_party/cares/cares/src/lib/ares_parse_a_reply.c +209 -0
- data/third_party/cares/cares/src/lib/ares_parse_aaaa_reply.c +212 -0
- data/third_party/cares/cares/src/lib/ares_parse_caa_reply.c +199 -0
- data/third_party/cares/cares/{ares_parse_mx_reply.c → src/lib/ares_parse_mx_reply.c} +2 -8
- data/third_party/cares/cares/{ares_parse_naptr_reply.c → src/lib/ares_parse_naptr_reply.c} +2 -13
- data/third_party/cares/cares/{ares_parse_ns_reply.c → src/lib/ares_parse_ns_reply.c} +5 -11
- data/third_party/cares/cares/{ares_parse_ptr_reply.c → src/lib/ares_parse_ptr_reply.c} +53 -46
- data/third_party/cares/cares/src/lib/ares_parse_soa_reply.c +179 -0
- data/third_party/cares/cares/{ares_parse_srv_reply.c → src/lib/ares_parse_srv_reply.c} +2 -13
- data/third_party/cares/cares/{ares_parse_txt_reply.c → src/lib/ares_parse_txt_reply.c} +3 -9
- data/third_party/cares/cares/{ares_platform.c → src/lib/ares_platform.c} +0 -0
- data/third_party/cares/cares/{ares_platform.h → src/lib/ares_platform.h} +0 -0
- data/third_party/cares/cares/{ares_private.h → src/lib/ares_private.h} +52 -11
- data/third_party/cares/cares/{ares_process.c → src/lib/ares_process.c} +127 -52
- data/third_party/cares/cares/{ares_query.c → src/lib/ares_query.c} +3 -9
- data/third_party/cares/cares/{ares_search.c → src/lib/ares_search.c} +5 -7
- data/third_party/cares/cares/{ares_send.c → src/lib/ares_send.c} +2 -8
- data/third_party/cares/cares/{ares_setup.h → src/lib/ares_setup.h} +4 -1
- data/third_party/cares/cares/{ares_strcasecmp.c → src/lib/ares_strcasecmp.c} +0 -0
- data/third_party/cares/cares/{ares_strcasecmp.h → src/lib/ares_strcasecmp.h} +0 -0
- data/third_party/cares/cares/{ares_strdup.c → src/lib/ares_strdup.c} +0 -0
- data/third_party/cares/cares/{ares_strdup.h → src/lib/ares_strdup.h} +0 -0
- data/third_party/cares/cares/{ares_strerror.c → src/lib/ares_strerror.c} +0 -0
- data/third_party/cares/cares/{ares_strsplit.c → src/lib/ares_strsplit.c} +4 -0
- data/third_party/cares/cares/{ares_strsplit.h → src/lib/ares_strsplit.h} +0 -0
- data/third_party/cares/cares/{ares_timeout.c → src/lib/ares_timeout.c} +0 -0
- data/third_party/cares/cares/{ares_version.c → src/lib/ares_version.c} +0 -0
- data/third_party/cares/cares/{ares_writev.c → src/lib/ares_writev.c} +0 -0
- data/third_party/cares/cares/src/lib/ares_writev.h +36 -0
- data/third_party/cares/cares/{bitncmp.c → src/lib/bitncmp.c} +0 -0
- data/third_party/cares/cares/{bitncmp.h → src/lib/bitncmp.h} +0 -0
- data/third_party/cares/cares/src/lib/config-dos.h +115 -0
- data/third_party/cares/cares/{config-win32.h → src/lib/config-win32.h} +0 -0
- data/third_party/cares/cares/{inet_net_pton.c → src/lib/inet_net_pton.c} +2 -8
- data/third_party/cares/cares/{inet_ntop.c → src/lib/inet_ntop.c} +2 -8
- data/third_party/cares/cares/{setup_once.h → src/lib/setup_once.h} +0 -0
- data/third_party/cares/cares/{windows_port.c → src/lib/windows_port.c} +0 -0
- data/third_party/re2/re2/compile.cc +91 -109
- data/third_party/re2/re2/dfa.cc +27 -39
- data/third_party/re2/re2/filtered_re2.cc +18 -2
- data/third_party/re2/re2/filtered_re2.h +10 -5
- data/third_party/re2/re2/nfa.cc +1 -1
- data/third_party/re2/re2/parse.cc +42 -23
- data/third_party/re2/re2/perl_groups.cc +34 -34
- data/third_party/re2/re2/prefilter.cc +3 -2
- data/third_party/re2/re2/prog.cc +182 -4
- data/third_party/re2/re2/prog.h +28 -9
- data/third_party/re2/re2/re2.cc +87 -118
- data/third_party/re2/re2/re2.h +156 -141
- data/third_party/re2/re2/regexp.cc +12 -5
- data/third_party/re2/re2/regexp.h +8 -2
- data/third_party/re2/re2/set.cc +31 -9
- data/third_party/re2/re2/set.h +9 -4
- data/third_party/re2/re2/simplify.cc +11 -3
- data/third_party/re2/re2/tostring.cc +1 -1
- data/third_party/re2/re2/walker-inl.h +1 -1
- data/third_party/re2/util/mutex.h +2 -2
- data/third_party/re2/util/pcre.h +3 -3
- data/third_party/upb/third_party/utf8_range/naive.c +92 -0
- data/third_party/upb/third_party/utf8_range/range2-neon.c +157 -0
- data/third_party/upb/third_party/utf8_range/range2-sse.c +170 -0
- data/third_party/upb/third_party/utf8_range/utf8_range.h +9 -0
- data/third_party/upb/upb/decode.c +774 -351
- data/third_party/upb/upb/decode.h +66 -12
- data/third_party/upb/upb/decode_fast.c +596 -581
- data/third_party/upb/upb/decode_fast.h +40 -13
- data/third_party/upb/upb/decode_internal.h +211 -0
- data/third_party/upb/upb/def.c +2151 -1068
- data/third_party/upb/upb/def.h +352 -258
- data/third_party/upb/upb/def.hpp +160 -161
- data/third_party/upb/upb/encode.c +291 -165
- data/third_party/upb/upb/encode.h +38 -13
- data/third_party/upb/upb/json_encode.c +776 -0
- data/third_party/upb/upb/json_encode.h +62 -0
- data/third_party/upb/upb/msg.c +274 -102
- data/third_party/upb/upb/msg.h +83 -582
- data/third_party/upb/upb/msg_internal.h +831 -0
- data/third_party/upb/upb/port_def.inc +93 -24
- data/third_party/upb/upb/port_undef.inc +39 -1
- data/third_party/upb/upb/reflection.c +312 -240
- data/third_party/upb/upb/reflection.h +119 -67
- data/third_party/upb/upb/reflection.hpp +37 -0
- data/third_party/upb/upb/table.c +406 -197
- data/third_party/upb/upb/table_internal.h +385 -0
- data/third_party/upb/upb/text_encode.c +141 -90
- data/third_party/upb/upb/text_encode.h +31 -5
- data/third_party/upb/upb/upb.c +164 -66
- data/third_party/upb/upb/upb.h +182 -146
- data/third_party/upb/upb/upb.hpp +50 -23
- data/third_party/upb/upb/upb_internal.h +68 -0
- data/third_party/xxhash/xxhash.h +607 -352
- data/third_party/zlib/crc32.c +966 -292
- data/third_party/zlib/crc32.h +9441 -436
- data/third_party/zlib/deflate.c +78 -30
- data/third_party/zlib/deflate.h +12 -15
- data/third_party/zlib/gzguts.h +3 -2
- data/third_party/zlib/gzlib.c +5 -3
- data/third_party/zlib/gzread.c +5 -7
- data/third_party/zlib/gzwrite.c +25 -13
- data/third_party/zlib/infback.c +2 -1
- data/third_party/zlib/inffast.c +14 -14
- data/third_party/zlib/inflate.c +39 -8
- data/third_party/zlib/inflate.h +3 -2
- data/third_party/zlib/inftrees.c +3 -3
- data/third_party/zlib/trees.c +27 -48
- data/third_party/zlib/zlib.h +123 -100
- data/third_party/zlib/zutil.c +2 -2
- data/third_party/zlib/zutil.h +12 -9
- metadata +559 -260
- data/include/grpc/event_engine/slice_allocator.h +0 -66
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +0 -44
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +0 -84
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +0 -179
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_libuv.cc +0 -38
- data/src/core/ext/filters/client_channel/resolver_registry.cc +0 -197
- data/src/core/ext/filters/client_channel/resolver_registry.h +0 -89
- data/src/core/ext/filters/client_channel/service_config_call_data.h +0 -126
- data/src/core/ext/filters/client_idle/client_idle_filter.cc +0 -441
- data/src/core/ext/filters/max_age/max_age_filter.cc +0 -562
- data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +0 -211
- data/src/core/ext/filters/workarounds/workaround_utils.cc +0 -53
- data/src/core/ext/filters/workarounds/workaround_utils.h +0 -39
- data/src/core/ext/transport/chttp2/client/authority.cc +0 -42
- data/src/core/ext/transport/chttp2/client/authority.h +0 -36
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +0 -125
- data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +0 -91
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +0 -213
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +0 -54
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +0 -77
- data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +0 -129
- data/src/core/ext/transport/chttp2/transport/chttp2_plugin.cc +0 -37
- data/src/core/ext/transport/chttp2/transport/chttp2_slice_allocator.cc +0 -66
- data/src/core/ext/transport/chttp2/transport/chttp2_slice_allocator.h +0 -74
- data/src/core/ext/transport/chttp2/transport/hpack_table.cc +0 -243
- data/src/core/ext/transport/chttp2/transport/hpack_table.h +0 -148
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +0 -66
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +0 -58
- data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.c +0 -27
- data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.h +0 -56
- data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.c +0 -27
- data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.h +0 -56
- data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.c +0 -27
- data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.h +0 -56
- data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.c +0 -27
- data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.h +0 -56
- data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.c +0 -27
- data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.h +0 -56
- data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c +0 -58
- data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h +0 -124
- data/src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.c +0 -33
- data/src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.h +0 -77
- data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.c +0 -72
- data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.h +0 -35
- data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c +0 -73
- data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.h +0 -35
- data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.c +0 -72
- data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.h +0 -35
- data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.c +0 -80
- data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.h +0 -35
- data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.c +0 -74
- data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.h +0 -35
- data/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.c +0 -44
- data/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.h +0 -35
- data/src/core/lib/avl/avl.cc +0 -306
- data/src/core/lib/compression/algorithm_metadata.h +0 -61
- data/src/core/lib/compression/compression_args.cc +0 -135
- data/src/core/lib/compression/compression_args.h +0 -56
- data/src/core/lib/compression/stream_compression.cc +0 -80
- data/src/core/lib/compression/stream_compression.h +0 -116
- data/src/core/lib/compression/stream_compression_gzip.cc +0 -230
- data/src/core/lib/compression/stream_compression_gzip.h +0 -28
- data/src/core/lib/compression/stream_compression_identity.cc +0 -90
- data/src/core/lib/compression/stream_compression_identity.h +0 -29
- data/src/core/lib/gpr/tls_gcc.h +0 -52
- data/src/core/lib/gpr/tls_msvc.h +0 -54
- data/src/core/lib/gpr/tls_pthread.cc +0 -30
- data/src/core/lib/gpr/tls_pthread.h +0 -56
- data/src/core/lib/gpr/tls_stdcpp.h +0 -48
- data/src/core/lib/gprpp/atomic.h +0 -104
- data/src/core/lib/iomgr/endpoint_pair_uv.cc +0 -40
- data/src/core/lib/iomgr/ev_epollex_linux.cc +0 -1661
- data/src/core/lib/iomgr/ev_epollex_linux.h +0 -30
- data/src/core/lib/iomgr/iomgr_custom.cc +0 -79
- data/src/core/lib/iomgr/iomgr_custom.h +0 -49
- data/src/core/lib/iomgr/iomgr_uv.cc +0 -43
- data/src/core/lib/iomgr/is_epollexclusive_available.cc +0 -119
- data/src/core/lib/iomgr/pollset_custom.cc +0 -106
- data/src/core/lib/iomgr/pollset_custom.h +0 -37
- data/src/core/lib/iomgr/pollset_set_custom.cc +0 -48
- data/src/core/lib/iomgr/pollset_set_custom.h +0 -26
- data/src/core/lib/iomgr/pollset_uv.cc +0 -95
- data/src/core/lib/iomgr/pollset_uv.h +0 -36
- data/src/core/lib/iomgr/resolve_address_custom.cc +0 -169
- data/src/core/lib/iomgr/resolve_address_custom.h +0 -45
- data/src/core/lib/iomgr/resource_quota.cc +0 -1019
- data/src/core/lib/iomgr/resource_quota.h +0 -177
- data/src/core/lib/iomgr/sockaddr_custom.h +0 -54
- data/src/core/lib/iomgr/sys_epoll_wrapper.h +0 -30
- data/src/core/lib/iomgr/tcp_client_custom.cc +0 -160
- data/src/core/lib/iomgr/tcp_custom.cc +0 -389
- data/src/core/lib/iomgr/tcp_custom.h +0 -85
- data/src/core/lib/iomgr/tcp_server_custom.cc +0 -484
- data/src/core/lib/iomgr/tcp_uv.cc +0 -421
- data/src/core/lib/iomgr/timer_custom.cc +0 -96
- data/src/core/lib/iomgr/timer_custom.h +0 -43
- data/src/core/lib/iomgr/timer_uv.cc +0 -66
- data/src/core/lib/iomgr/udp_server.cc +0 -748
- data/src/core/lib/iomgr/udp_server.h +0 -103
- data/src/core/lib/security/credentials/credentials_metadata.cc +0 -62
- data/src/core/lib/slice/slice_intern.cc +0 -373
- data/src/core/lib/slice/slice_utils.h +0 -200
- data/src/core/lib/surface/init_secure.cc +0 -81
- data/src/core/lib/transport/metadata.cc +0 -693
- data/src/core/lib/transport/metadata.h +0 -446
- data/src/core/lib/transport/metadata_batch.cc +0 -430
- data/src/core/lib/transport/static_metadata.cc +0 -1249
- data/src/core/lib/transport/static_metadata.h +0 -604
- data/src/core/lib/transport/status_metadata.cc +0 -62
- data/src/core/lib/transport/status_metadata.h +0 -48
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_enum.c +0 -93
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_int.h +0 -217
- data/third_party/cares/cares/ares_getopt.c +0 -122
- data/third_party/cares/cares/ares_getopt.h +0 -53
- data/third_party/cares/cares/ares_parse_a_reply.c +0 -264
- data/third_party/cares/cares/ares_parse_aaaa_reply.c +0 -264
- data/third_party/cares/cares/ares_parse_soa_reply.c +0 -133
- data/third_party/upb/third_party/wyhash/wyhash.h +0 -145
- data/third_party/upb/upb/decode.int.h +0 -163
- data/third_party/upb/upb/table.int.h +0 -475
- data/third_party/upb/upb/upb.int.h +0 -29
@@ -16,6 +16,8 @@
|
|
16
16
|
|
17
17
|
#include <grpc/support/port_platform.h>
|
18
18
|
|
19
|
+
#include "src/core/ext/xds/xds_client.h"
|
20
|
+
|
19
21
|
#include <inttypes.h>
|
20
22
|
#include <limits.h>
|
21
23
|
#include <string.h>
|
@@ -31,17 +33,20 @@
|
|
31
33
|
#include <grpc/support/time.h>
|
32
34
|
|
33
35
|
#include "src/core/ext/filters/client_channel/client_channel.h"
|
34
|
-
#include "src/core/ext/filters/client_channel/service_config.h"
|
35
36
|
#include "src/core/ext/xds/xds_api.h"
|
36
37
|
#include "src/core/ext/xds/xds_bootstrap.h"
|
37
38
|
#include "src/core/ext/xds/xds_channel_args.h"
|
38
|
-
#include "src/core/ext/xds/xds_client.h"
|
39
39
|
#include "src/core/ext/xds/xds_client_stats.h"
|
40
|
+
#include "src/core/ext/xds/xds_cluster.h"
|
41
|
+
#include "src/core/ext/xds/xds_cluster_specifier_plugin.h"
|
42
|
+
#include "src/core/ext/xds/xds_endpoint.h"
|
40
43
|
#include "src/core/ext/xds/xds_http_filters.h"
|
44
|
+
#include "src/core/ext/xds/xds_listener.h"
|
41
45
|
#include "src/core/lib/address_utils/sockaddr_utils.h"
|
42
46
|
#include "src/core/lib/backoff/backoff.h"
|
43
47
|
#include "src/core/lib/channel/channel_args.h"
|
44
48
|
#include "src/core/lib/channel/channel_stack.h"
|
49
|
+
#include "src/core/lib/config/core_configuration.h"
|
45
50
|
#include "src/core/lib/gpr/env.h"
|
46
51
|
#include "src/core/lib/gpr/string.h"
|
47
52
|
#include "src/core/lib/gprpp/memory.h"
|
@@ -50,12 +55,13 @@
|
|
50
55
|
#include "src/core/lib/gprpp/sync.h"
|
51
56
|
#include "src/core/lib/iomgr/sockaddr.h"
|
52
57
|
#include "src/core/lib/iomgr/timer.h"
|
58
|
+
#include "src/core/lib/security/credentials/channel_creds_registry.h"
|
53
59
|
#include "src/core/lib/slice/slice_internal.h"
|
54
60
|
#include "src/core/lib/slice/slice_string_helpers.h"
|
55
61
|
#include "src/core/lib/surface/call.h"
|
56
62
|
#include "src/core/lib/surface/channel.h"
|
57
|
-
#include "src/core/lib/surface/
|
58
|
-
#include "src/core/lib/
|
63
|
+
#include "src/core/lib/surface/lame_client.h"
|
64
|
+
#include "src/core/lib/uri/uri_parser.h"
|
59
65
|
|
60
66
|
#define GRPC_XDS_INITIAL_CONNECT_BACKOFF_SECONDS 1
|
61
67
|
#define GRPC_XDS_RECONNECT_BACKOFF_MULTIPLIER 1.6
|
@@ -71,6 +77,7 @@ TraceFlag grpc_xds_client_refcount_trace(false, "xds_client_refcount");
|
|
71
77
|
namespace {
|
72
78
|
|
73
79
|
Mutex* g_mu = nullptr;
|
80
|
+
|
74
81
|
const grpc_channel_args* g_channel_args ABSL_GUARDED_BY(*g_mu) = nullptr;
|
75
82
|
XdsClient* g_xds_client ABSL_GUARDED_BY(*g_mu) = nullptr;
|
76
83
|
char* g_fallback_bootstrap_config ABSL_GUARDED_BY(*g_mu) = nullptr;
|
@@ -87,7 +94,7 @@ template <typename T>
|
|
87
94
|
class XdsClient::ChannelState::RetryableCall
|
88
95
|
: public InternallyRefCounted<RetryableCall<T>> {
|
89
96
|
public:
|
90
|
-
explicit RetryableCall(
|
97
|
+
explicit RetryableCall(WeakRefCountedPtr<ChannelState> chand);
|
91
98
|
|
92
99
|
void Orphan() override;
|
93
100
|
|
@@ -108,7 +115,7 @@ class XdsClient::ChannelState::RetryableCall
|
|
108
115
|
// every time we start a new call. It's null during call retry backoff.
|
109
116
|
OrphanablePtr<T> calld_;
|
110
117
|
// The owning xds channel.
|
111
|
-
|
118
|
+
WeakRefCountedPtr<ChannelState> chand_;
|
112
119
|
|
113
120
|
// Retry state.
|
114
121
|
BackOff backoff_;
|
@@ -134,34 +141,66 @@ class XdsClient::ChannelState::AdsCallState
|
|
134
141
|
XdsClient* xds_client() const { return chand()->xds_client(); }
|
135
142
|
bool seen_response() const { return seen_response_; }
|
136
143
|
|
137
|
-
void SubscribeLocked(const
|
144
|
+
void SubscribeLocked(const XdsResourceType* type, const XdsResourceName& name,
|
145
|
+
bool delay_send)
|
138
146
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
|
139
|
-
void UnsubscribeLocked(const
|
140
|
-
bool delay_unsubscription)
|
147
|
+
void UnsubscribeLocked(const XdsResourceType* type,
|
148
|
+
const XdsResourceName& name, bool delay_unsubscription)
|
141
149
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
|
142
150
|
|
143
151
|
bool HasSubscribedResources() const;
|
144
152
|
|
145
153
|
private:
|
146
|
-
class
|
154
|
+
class AdsResponseParser : public XdsApi::AdsResponseParserInterface {
|
147
155
|
public:
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
156
|
+
struct Result {
|
157
|
+
const XdsResourceType* type;
|
158
|
+
std::string type_url;
|
159
|
+
std::string version;
|
160
|
+
std::string nonce;
|
161
|
+
std::vector<std::string> errors;
|
162
|
+
std::map<std::string /*authority*/, std::set<XdsResourceKey>>
|
163
|
+
resources_seen;
|
164
|
+
bool have_valid_resources = false;
|
165
|
+
};
|
166
|
+
|
167
|
+
explicit AdsResponseParser(AdsCallState* ads_call_state)
|
168
|
+
: ads_call_state_(ads_call_state) {}
|
169
|
+
|
170
|
+
absl::Status ProcessAdsResponseFields(AdsResponseFields fields) override
|
171
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
|
172
|
+
|
173
|
+
void ParseResource(const XdsEncodingContext& context, size_t idx,
|
174
|
+
absl::string_view type_url,
|
175
|
+
absl::string_view serialized_resource) override
|
176
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
|
177
|
+
|
178
|
+
Result TakeResult() { return std::move(result_); }
|
179
|
+
|
180
|
+
private:
|
181
|
+
XdsClient* xds_client() const { return ads_call_state_->xds_client(); }
|
182
|
+
|
183
|
+
AdsCallState* ads_call_state_;
|
184
|
+
const Timestamp update_time_ = ExecCtx::Get()->Now();
|
185
|
+
Result result_;
|
186
|
+
};
|
187
|
+
|
188
|
+
class ResourceTimer : public InternallyRefCounted<ResourceTimer> {
|
189
|
+
public:
|
190
|
+
ResourceTimer(const XdsResourceType* type, const XdsResourceName& name)
|
191
|
+
: type_(type), name_(name) {
|
153
192
|
GRPC_CLOSURE_INIT(&timer_callback_, OnTimer, this,
|
154
193
|
grpc_schedule_on_exec_ctx);
|
155
194
|
}
|
156
195
|
|
157
196
|
void Orphan() override {
|
158
|
-
|
197
|
+
MaybeCancelTimer();
|
159
198
|
Unref(DEBUG_LOCATION, "Orphan");
|
160
199
|
}
|
161
200
|
|
162
|
-
void
|
163
|
-
if (
|
164
|
-
|
201
|
+
void MaybeStartTimer(RefCountedPtr<AdsCallState> ads_calld) {
|
202
|
+
if (timer_started_) return;
|
203
|
+
timer_started_ = true;
|
165
204
|
ads_calld_ = std::move(ads_calld);
|
166
205
|
Ref(DEBUG_LOCATION, "timer").release();
|
167
206
|
timer_pending_ = true;
|
@@ -171,7 +210,7 @@ class XdsClient::ChannelState::AdsCallState
|
|
171
210
|
&timer_callback_);
|
172
211
|
}
|
173
212
|
|
174
|
-
void
|
213
|
+
void MaybeCancelTimer() {
|
175
214
|
if (timer_pending_) {
|
176
215
|
grpc_timer_cancel(&timer_);
|
177
216
|
timer_pending_ = false;
|
@@ -180,11 +219,12 @@ class XdsClient::ChannelState::AdsCallState
|
|
180
219
|
|
181
220
|
private:
|
182
221
|
static void OnTimer(void* arg, grpc_error_handle error) {
|
183
|
-
|
222
|
+
ResourceTimer* self = static_cast<ResourceTimer*>(arg);
|
184
223
|
{
|
185
224
|
MutexLock lock(&self->ads_calld_->xds_client()->mu_);
|
186
225
|
self->OnTimerLocked(GRPC_ERROR_REF(error));
|
187
226
|
}
|
227
|
+
self->ads_calld_->xds_client()->work_serializer_.DrainQueue();
|
188
228
|
self->ads_calld_.reset();
|
189
229
|
self->Unref(DEBUG_LOCATION, "timer");
|
190
230
|
}
|
@@ -193,55 +233,32 @@ class XdsClient::ChannelState::AdsCallState
|
|
193
233
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_) {
|
194
234
|
if (error == GRPC_ERROR_NONE && timer_pending_) {
|
195
235
|
timer_pending_ = false;
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
.
|
201
|
-
watcher_error = grpc_error_set_int(
|
202
|
-
watcher_error, GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE);
|
236
|
+
absl::Status watcher_error = absl::UnavailableError(absl::StrFormat(
|
237
|
+
"timeout obtaining resource {type=%s name=%s} from xds server",
|
238
|
+
type_->type_url(),
|
239
|
+
XdsClient::ConstructFullXdsResourceName(
|
240
|
+
name_.authority, type_->type_url(), name_.key)));
|
203
241
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
204
|
-
gpr_log(GPR_INFO, "[xds_client %p] %s",
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
ListenerState& state = ads_calld_->xds_client()->listener_map_[name_];
|
209
|
-
state.meta.client_status = XdsApi::ResourceMetadata::DOES_NOT_EXIST;
|
210
|
-
for (const auto& p : state.watchers) {
|
211
|
-
p.first->OnError(GRPC_ERROR_REF(watcher_error));
|
212
|
-
}
|
213
|
-
} else if (type_url_ == XdsApi::kRdsTypeUrl) {
|
214
|
-
RouteConfigState& state =
|
215
|
-
ads_calld_->xds_client()->route_config_map_[name_];
|
216
|
-
state.meta.client_status = XdsApi::ResourceMetadata::DOES_NOT_EXIST;
|
217
|
-
for (const auto& p : state.watchers) {
|
218
|
-
p.first->OnError(GRPC_ERROR_REF(watcher_error));
|
219
|
-
}
|
220
|
-
} else if (type_url_ == XdsApi::kCdsTypeUrl) {
|
221
|
-
ClusterState& state = ads_calld_->xds_client()->cluster_map_[name_];
|
222
|
-
state.meta.client_status = XdsApi::ResourceMetadata::DOES_NOT_EXIST;
|
223
|
-
for (const auto& p : state.watchers) {
|
224
|
-
p.first->OnError(GRPC_ERROR_REF(watcher_error));
|
225
|
-
}
|
226
|
-
} else if (type_url_ == XdsApi::kEdsTypeUrl) {
|
227
|
-
EndpointState& state = ads_calld_->xds_client()->endpoint_map_[name_];
|
228
|
-
state.meta.client_status = XdsApi::ResourceMetadata::DOES_NOT_EXIST;
|
229
|
-
for (const auto& p : state.watchers) {
|
230
|
-
p.first->OnError(GRPC_ERROR_REF(watcher_error));
|
231
|
-
}
|
232
|
-
} else {
|
233
|
-
GPR_UNREACHABLE_CODE(return );
|
242
|
+
gpr_log(GPR_INFO, "[xds_client %p] xds server %s: %s",
|
243
|
+
ads_calld_->xds_client(),
|
244
|
+
ads_calld_->chand()->server_.server_uri.c_str(),
|
245
|
+
watcher_error.ToString().c_str());
|
234
246
|
}
|
235
|
-
|
247
|
+
auto& authority_state =
|
248
|
+
ads_calld_->xds_client()->authority_state_map_[name_.authority];
|
249
|
+
ResourceState& state = authority_state.resource_map[type_][name_.key];
|
250
|
+
state.meta.client_status = XdsApi::ResourceMetadata::DOES_NOT_EXIST;
|
251
|
+
ads_calld_->xds_client()->NotifyWatchersOnErrorLocked(state.watchers,
|
252
|
+
watcher_error);
|
236
253
|
}
|
237
254
|
GRPC_ERROR_UNREF(error);
|
238
255
|
}
|
239
256
|
|
240
|
-
const
|
241
|
-
const
|
257
|
+
const XdsResourceType* type_;
|
258
|
+
const XdsResourceName name_;
|
242
259
|
|
243
260
|
RefCountedPtr<AdsCallState> ads_calld_;
|
244
|
-
bool
|
261
|
+
bool timer_started_ = false;
|
245
262
|
bool timer_pending_ = false;
|
246
263
|
grpc_timer timer_;
|
247
264
|
grpc_closure timer_callback_;
|
@@ -255,30 +272,12 @@ class XdsClient::ChannelState::AdsCallState
|
|
255
272
|
grpc_error_handle error = GRPC_ERROR_NONE;
|
256
273
|
|
257
274
|
// Subscribed resources of this type.
|
258
|
-
std::map<std::string /*
|
275
|
+
std::map<std::string /*authority*/,
|
276
|
+
std::map<XdsResourceKey, OrphanablePtr<ResourceTimer>>>
|
259
277
|
subscribed_resources;
|
260
278
|
};
|
261
279
|
|
262
|
-
void SendMessageLocked(const
|
263
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
|
264
|
-
|
265
|
-
void AcceptLdsUpdateLocked(std::string version, grpc_millis update_time,
|
266
|
-
XdsApi::LdsUpdateMap lds_update_map)
|
267
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
|
268
|
-
void AcceptRdsUpdateLocked(std::string version, grpc_millis update_time,
|
269
|
-
XdsApi::RdsUpdateMap rds_update_map)
|
270
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
|
271
|
-
void AcceptCdsUpdateLocked(std::string version, grpc_millis update_time,
|
272
|
-
XdsApi::CdsUpdateMap cds_update_map)
|
273
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
|
274
|
-
void AcceptEdsUpdateLocked(std::string version, grpc_millis update_time,
|
275
|
-
XdsApi::EdsUpdateMap eds_update_map)
|
276
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
|
277
|
-
|
278
|
-
template <typename StateMap>
|
279
|
-
void RejectAdsUpdateLocked(grpc_millis update_time,
|
280
|
-
const XdsApi::AdsParseResult& result,
|
281
|
-
StateMap* state_map)
|
280
|
+
void SendMessageLocked(const XdsResourceType* type)
|
282
281
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
|
283
282
|
|
284
283
|
static void OnRequestSent(void* arg, grpc_error_handle error);
|
@@ -293,8 +292,9 @@ class XdsClient::ChannelState::AdsCallState
|
|
293
292
|
|
294
293
|
bool IsCurrentCallOnChannel() const;
|
295
294
|
|
296
|
-
|
297
|
-
|
295
|
+
// Constructs a list of resource names of a given type for an ADS
|
296
|
+
// request. Also starts the timer for each resource if needed.
|
297
|
+
std::vector<std::string> ResourceNamesForRequest(const XdsResourceType* type);
|
298
298
|
|
299
299
|
// The owning RetryableCall<>.
|
300
300
|
RefCountedPtr<RetryableCall<AdsCallState>> parent_;
|
@@ -323,10 +323,10 @@ class XdsClient::ChannelState::AdsCallState
|
|
323
323
|
grpc_closure on_status_received_;
|
324
324
|
|
325
325
|
// Resource types for which requests need to be sent.
|
326
|
-
std::set<
|
326
|
+
std::set<const XdsResourceType*> buffered_requests_;
|
327
327
|
|
328
328
|
// State for each resource type.
|
329
|
-
std::map<
|
329
|
+
std::map<const XdsResourceType*, ResourceTypeState> state_map_;
|
330
330
|
};
|
331
331
|
|
332
332
|
// Contains an LRS call to the xds server.
|
@@ -350,7 +350,7 @@ class XdsClient::ChannelState::LrsCallState
|
|
350
350
|
// Reports client-side load stats according to a fixed interval.
|
351
351
|
class Reporter : public InternallyRefCounted<Reporter> {
|
352
352
|
public:
|
353
|
-
Reporter(RefCountedPtr<LrsCallState> parent,
|
353
|
+
Reporter(RefCountedPtr<LrsCallState> parent, Duration report_interval)
|
354
354
|
: parent_(std::move(parent)), report_interval_(report_interval) {
|
355
355
|
GRPC_CLOSURE_INIT(&on_next_report_timer_, OnNextReportTimer, this,
|
356
356
|
grpc_schedule_on_exec_ctx);
|
@@ -381,7 +381,7 @@ class XdsClient::ChannelState::LrsCallState
|
|
381
381
|
RefCountedPtr<LrsCallState> parent_;
|
382
382
|
|
383
383
|
// The load reporting state.
|
384
|
-
const
|
384
|
+
const Duration report_interval_;
|
385
385
|
bool last_report_counters_were_zero_ = false;
|
386
386
|
bool next_report_timer_callback_pending_ = false;
|
387
387
|
grpc_timer next_report_timer_;
|
@@ -428,7 +428,7 @@ class XdsClient::ChannelState::LrsCallState
|
|
428
428
|
// Load reporting state.
|
429
429
|
bool send_all_clusters_ = false;
|
430
430
|
std::set<std::string> cluster_names_; // Asked for by the LRS server.
|
431
|
-
|
431
|
+
Duration load_reporting_interval_;
|
432
432
|
OrphanablePtr<Reporter> reporter_;
|
433
433
|
};
|
434
434
|
|
@@ -439,27 +439,32 @@ class XdsClient::ChannelState::LrsCallState
|
|
439
439
|
class XdsClient::ChannelState::StateWatcher
|
440
440
|
: public AsyncConnectivityStateWatcherInterface {
|
441
441
|
public:
|
442
|
-
explicit StateWatcher(
|
442
|
+
explicit StateWatcher(WeakRefCountedPtr<ChannelState> parent)
|
443
443
|
: parent_(std::move(parent)) {}
|
444
444
|
|
445
445
|
private:
|
446
446
|
void OnConnectivityStateChange(grpc_connectivity_state new_state,
|
447
447
|
const absl::Status& status) override {
|
448
|
-
|
449
|
-
|
450
|
-
|
451
|
-
|
452
|
-
|
453
|
-
|
454
|
-
|
455
|
-
|
456
|
-
|
457
|
-
|
458
|
-
|
448
|
+
{
|
449
|
+
MutexLock lock(&parent_->xds_client_->mu_);
|
450
|
+
if (!parent_->shutting_down_ &&
|
451
|
+
new_state == GRPC_CHANNEL_TRANSIENT_FAILURE) {
|
452
|
+
// In TRANSIENT_FAILURE. Notify all watchers of error.
|
453
|
+
gpr_log(GPR_INFO,
|
454
|
+
"[xds_client %p] xds channel for server %s in "
|
455
|
+
"state TRANSIENT_FAILURE: %s",
|
456
|
+
parent_->xds_client(), parent_->server_.server_uri.c_str(),
|
457
|
+
status.ToString().c_str());
|
458
|
+
parent_->xds_client_->NotifyOnErrorLocked(
|
459
|
+
absl::UnavailableError(absl::StrCat(
|
460
|
+
"xds channel in TRANSIENT_FAILURE, connectivity error: ",
|
461
|
+
status.ToString())));
|
462
|
+
}
|
459
463
|
}
|
464
|
+
parent_->xds_client()->work_serializer_.DrainQueue();
|
460
465
|
}
|
461
466
|
|
462
|
-
|
467
|
+
WeakRefCountedPtr<ChannelState> parent_;
|
463
468
|
};
|
464
469
|
|
465
470
|
//
|
@@ -471,17 +476,17 @@ namespace {
|
|
471
476
|
grpc_channel* CreateXdsChannel(grpc_channel_args* args,
|
472
477
|
const XdsBootstrap::XdsServer& server) {
|
473
478
|
RefCountedPtr<grpc_channel_credentials> channel_creds =
|
474
|
-
|
475
|
-
|
476
|
-
return
|
477
|
-
|
479
|
+
CoreConfiguration::Get().channel_creds_registry().CreateChannelCreds(
|
480
|
+
server.channel_creds_type, server.channel_creds_config);
|
481
|
+
return grpc_channel_create(server.server_uri.c_str(), channel_creds.get(),
|
482
|
+
args);
|
478
483
|
}
|
479
484
|
|
480
485
|
} // namespace
|
481
486
|
|
482
487
|
XdsClient::ChannelState::ChannelState(WeakRefCountedPtr<XdsClient> xds_client,
|
483
488
|
const XdsBootstrap::XdsServer& server)
|
484
|
-
:
|
489
|
+
: DualRefCounted<ChannelState>(
|
485
490
|
GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_refcount_trace)
|
486
491
|
? "ChannelState"
|
487
492
|
: nullptr),
|
@@ -498,19 +503,26 @@ XdsClient::ChannelState::ChannelState(WeakRefCountedPtr<XdsClient> xds_client,
|
|
498
503
|
|
499
504
|
XdsClient::ChannelState::~ChannelState() {
|
500
505
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
501
|
-
gpr_log(GPR_INFO, "[xds_client %p]
|
502
|
-
this);
|
506
|
+
gpr_log(GPR_INFO, "[xds_client %p] destroying xds channel %p for server %s",
|
507
|
+
xds_client(), this, server_.server_uri.c_str());
|
503
508
|
}
|
504
509
|
grpc_channel_destroy(channel_);
|
505
510
|
xds_client_.reset(DEBUG_LOCATION, "ChannelState");
|
506
511
|
}
|
507
512
|
|
508
|
-
|
513
|
+
// This method should only ever be called when holding the lock, but we can't
|
514
|
+
// use a ABSL_EXCLUSIVE_LOCKS_REQUIRED annotation, because Orphan() will be
|
515
|
+
// called from DualRefCounted::Unref, which cannot have a lock annotation for a
|
516
|
+
// lock in this subclass.
|
517
|
+
void XdsClient::ChannelState::Orphan() ABSL_NO_THREAD_SAFETY_ANALYSIS {
|
509
518
|
shutting_down_ = true;
|
510
519
|
CancelConnectivityWatchLocked();
|
520
|
+
// At this time, all strong refs are removed, remove from channel map to
|
521
|
+
// prevent subsequent subscription from trying to use this ChannelState as it
|
522
|
+
// is shutting down.
|
523
|
+
xds_client_->xds_server_channel_map_.erase(server_);
|
511
524
|
ads_calld_.reset();
|
512
525
|
lrs_calld_.reset();
|
513
|
-
Unref(DEBUG_LOCATION, "ChannelState+orphaned");
|
514
526
|
}
|
515
527
|
|
516
528
|
XdsClient::ChannelState::AdsCallState* XdsClient::ChannelState::ads_calld()
|
@@ -529,33 +541,54 @@ bool XdsClient::ChannelState::HasActiveAdsCall() const {
|
|
529
541
|
|
530
542
|
void XdsClient::ChannelState::MaybeStartLrsCall() {
|
531
543
|
if (lrs_calld_ != nullptr) return;
|
532
|
-
lrs_calld_.reset(
|
533
|
-
|
544
|
+
lrs_calld_.reset(new RetryableCall<LrsCallState>(
|
545
|
+
WeakRef(DEBUG_LOCATION, "ChannelState+lrs")));
|
534
546
|
}
|
535
547
|
|
536
|
-
void XdsClient::ChannelState::
|
548
|
+
void XdsClient::ChannelState::StopLrsCallLocked() {
|
549
|
+
xds_client_->xds_load_report_server_map_.erase(server_);
|
550
|
+
lrs_calld_.reset();
|
551
|
+
}
|
552
|
+
|
553
|
+
namespace {
|
554
|
+
|
555
|
+
bool IsLameChannel(grpc_channel* channel) {
|
556
|
+
grpc_channel_element* elem =
|
557
|
+
grpc_channel_stack_last_element(grpc_channel_get_channel_stack(channel));
|
558
|
+
return elem->filter == &grpc_lame_filter;
|
559
|
+
}
|
560
|
+
|
561
|
+
} // namespace
|
537
562
|
|
538
563
|
void XdsClient::ChannelState::StartConnectivityWatchLocked() {
|
564
|
+
if (IsLameChannel(channel_)) {
|
565
|
+
xds_client()->NotifyOnErrorLocked(
|
566
|
+
absl::UnavailableError("xds client has a lame channel"));
|
567
|
+
return;
|
568
|
+
}
|
539
569
|
ClientChannel* client_channel = ClientChannel::GetFromChannel(channel_);
|
540
570
|
GPR_ASSERT(client_channel != nullptr);
|
541
|
-
watcher_ = new StateWatcher(
|
571
|
+
watcher_ = new StateWatcher(WeakRef(DEBUG_LOCATION, "ChannelState+watch"));
|
542
572
|
client_channel->AddConnectivityWatcher(
|
543
573
|
GRPC_CHANNEL_IDLE,
|
544
574
|
OrphanablePtr<AsyncConnectivityStateWatcherInterface>(watcher_));
|
545
575
|
}
|
546
576
|
|
547
577
|
void XdsClient::ChannelState::CancelConnectivityWatchLocked() {
|
578
|
+
if (IsLameChannel(channel_)) {
|
579
|
+
return;
|
580
|
+
}
|
548
581
|
ClientChannel* client_channel = ClientChannel::GetFromChannel(channel_);
|
549
582
|
GPR_ASSERT(client_channel != nullptr);
|
550
583
|
client_channel->RemoveConnectivityWatcher(watcher_);
|
551
584
|
}
|
552
585
|
|
553
|
-
void XdsClient::ChannelState::SubscribeLocked(const
|
554
|
-
const
|
586
|
+
void XdsClient::ChannelState::SubscribeLocked(const XdsResourceType* type,
|
587
|
+
const XdsResourceName& name) {
|
555
588
|
if (ads_calld_ == nullptr) {
|
556
589
|
// Start the ADS call if this is the first request.
|
557
590
|
ads_calld_.reset(new RetryableCall<AdsCallState>(
|
558
|
-
|
591
|
+
WeakRef(DEBUG_LOCATION, "ChannelState+ads")));
|
559
592
|
// Note: AdsCallState's ctor will automatically subscribe to all
|
560
593
|
// resources that the XdsClient already has watchers for, so we can
|
561
594
|
// return here.
|
@@ -565,17 +598,19 @@ void XdsClient::ChannelState::SubscribeLocked(const std::string& type_url,
|
|
565
598
|
// because when the call is restarted it will resend all necessary requests.
|
566
599
|
if (ads_calld() == nullptr) return;
|
567
600
|
// Subscribe to this resource if the ADS call is active.
|
568
|
-
ads_calld()->SubscribeLocked(
|
601
|
+
ads_calld()->SubscribeLocked(type, name, /*delay_send=*/false);
|
569
602
|
}
|
570
603
|
|
571
|
-
void XdsClient::ChannelState::UnsubscribeLocked(const
|
572
|
-
const
|
604
|
+
void XdsClient::ChannelState::UnsubscribeLocked(const XdsResourceType* type,
|
605
|
+
const XdsResourceName& name,
|
573
606
|
bool delay_unsubscription) {
|
574
607
|
if (ads_calld_ != nullptr) {
|
575
608
|
auto* calld = ads_calld_->calld();
|
576
609
|
if (calld != nullptr) {
|
577
|
-
calld->UnsubscribeLocked(
|
578
|
-
if (!calld->HasSubscribedResources())
|
610
|
+
calld->UnsubscribeLocked(type, name, delay_unsubscription);
|
611
|
+
if (!calld->HasSubscribedResources()) {
|
612
|
+
ads_calld_.reset();
|
613
|
+
}
|
579
614
|
}
|
580
615
|
}
|
581
616
|
}
|
@@ -586,15 +621,15 @@ void XdsClient::ChannelState::UnsubscribeLocked(const std::string& type_url,
|
|
586
621
|
|
587
622
|
template <typename T>
|
588
623
|
XdsClient::ChannelState::RetryableCall<T>::RetryableCall(
|
589
|
-
|
624
|
+
WeakRefCountedPtr<ChannelState> chand)
|
590
625
|
: chand_(std::move(chand)),
|
591
|
-
backoff_(
|
592
|
-
|
593
|
-
|
594
|
-
|
595
|
-
|
596
|
-
|
597
|
-
|
626
|
+
backoff_(BackOff::Options()
|
627
|
+
.set_initial_backoff(Duration::Seconds(
|
628
|
+
GRPC_XDS_INITIAL_CONNECT_BACKOFF_SECONDS))
|
629
|
+
.set_multiplier(GRPC_XDS_RECONNECT_BACKOFF_MULTIPLIER)
|
630
|
+
.set_jitter(GRPC_XDS_RECONNECT_JITTER)
|
631
|
+
.set_max_backoff(Duration::Seconds(
|
632
|
+
GRPC_XDS_RECONNECT_MAX_BACKOFF_SECONDS))) {
|
598
633
|
// Closure Initialization
|
599
634
|
GRPC_CLOSURE_INIT(&on_retry_timer_, OnRetryTimer, this,
|
600
635
|
grpc_schedule_on_exec_ctx);
|
@@ -611,17 +646,11 @@ void XdsClient::ChannelState::RetryableCall<T>::Orphan() {
|
|
611
646
|
|
612
647
|
template <typename T>
|
613
648
|
void XdsClient::ChannelState::RetryableCall<T>::OnCallFinishedLocked() {
|
614
|
-
|
649
|
+
// If we saw a response on the current stream, reset backoff.
|
650
|
+
if (calld_->seen_response()) backoff_.Reset();
|
615
651
|
calld_.reset();
|
616
|
-
|
617
|
-
|
618
|
-
// call immediately.
|
619
|
-
backoff_.Reset();
|
620
|
-
StartNewCallLocked();
|
621
|
-
} else {
|
622
|
-
// If we failed to connect to the xds server, retry later.
|
623
|
-
StartRetryTimerLocked();
|
624
|
-
}
|
652
|
+
// Start retry timer.
|
653
|
+
StartRetryTimerLocked();
|
625
654
|
}
|
626
655
|
|
627
656
|
template <typename T>
|
@@ -630,10 +659,10 @@ void XdsClient::ChannelState::RetryableCall<T>::StartNewCallLocked() {
|
|
630
659
|
GPR_ASSERT(chand_->channel_ != nullptr);
|
631
660
|
GPR_ASSERT(calld_ == nullptr);
|
632
661
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
633
|
-
gpr_log(
|
634
|
-
|
635
|
-
|
636
|
-
|
662
|
+
gpr_log(
|
663
|
+
GPR_INFO,
|
664
|
+
"[xds_client %p] xds server %s: start new call from retryable call %p",
|
665
|
+
chand()->xds_client(), chand()->server_.server_uri.c_str(), this);
|
637
666
|
}
|
638
667
|
calld_ = MakeOrphanable<T>(
|
639
668
|
this->Ref(DEBUG_LOCATION, "RetryableCall+start_new_call"));
|
@@ -642,13 +671,15 @@ void XdsClient::ChannelState::RetryableCall<T>::StartNewCallLocked() {
|
|
642
671
|
template <typename T>
|
643
672
|
void XdsClient::ChannelState::RetryableCall<T>::StartRetryTimerLocked() {
|
644
673
|
if (shutting_down_) return;
|
645
|
-
const
|
674
|
+
const Timestamp next_attempt_time = backoff_.NextAttemptTime();
|
646
675
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
647
|
-
|
676
|
+
Duration timeout =
|
677
|
+
std::max(next_attempt_time - ExecCtx::Get()->Now(), Duration::Zero());
|
648
678
|
gpr_log(GPR_INFO,
|
649
|
-
"[xds_client %p]
|
679
|
+
"[xds_client %p] xds server %s: call attempt failed; "
|
650
680
|
"retry timer will fire in %" PRId64 "ms.",
|
651
|
-
chand()->xds_client(), chand(),
|
681
|
+
chand()->xds_client(), chand()->server_.server_uri.c_str(),
|
682
|
+
timeout.millis());
|
652
683
|
}
|
653
684
|
this->Ref(DEBUG_LOCATION, "RetryableCall+retry_timer_start").release();
|
654
685
|
grpc_timer_init(&retry_timer_, next_attempt_time, &on_retry_timer_);
|
@@ -672,16 +703,179 @@ void XdsClient::ChannelState::RetryableCall<T>::OnRetryTimerLocked(
|
|
672
703
|
retry_timer_callback_pending_ = false;
|
673
704
|
if (!shutting_down_ && error == GRPC_ERROR_NONE) {
|
674
705
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
675
|
-
gpr_log(
|
676
|
-
|
677
|
-
|
678
|
-
|
706
|
+
gpr_log(GPR_INFO,
|
707
|
+
"[xds_client %p] xds server %s: retry timer fired (retryable "
|
708
|
+
"call: %p)",
|
709
|
+
chand()->xds_client(), chand()->server_.server_uri.c_str(), this);
|
679
710
|
}
|
680
711
|
StartNewCallLocked();
|
681
712
|
}
|
682
713
|
GRPC_ERROR_UNREF(error);
|
683
714
|
}
|
684
715
|
|
716
|
+
//
|
717
|
+
// XdsClient::ChannelState::AdsCallState::AdsResponseParser
|
718
|
+
//
|
719
|
+
|
720
|
+
absl::Status XdsClient::ChannelState::AdsCallState::AdsResponseParser::
|
721
|
+
ProcessAdsResponseFields(AdsResponseFields fields) {
|
722
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
723
|
+
gpr_log(
|
724
|
+
GPR_INFO,
|
725
|
+
"[xds_client %p] xds server %s: received ADS response: type_url=%s, "
|
726
|
+
"version=%s, nonce=%s, num_resources=%" PRIuPTR,
|
727
|
+
ads_call_state_->xds_client(),
|
728
|
+
ads_call_state_->chand()->server_.server_uri.c_str(),
|
729
|
+
fields.type_url.c_str(), fields.version.c_str(), fields.nonce.c_str(),
|
730
|
+
fields.num_resources);
|
731
|
+
}
|
732
|
+
result_.type =
|
733
|
+
ads_call_state_->xds_client()->GetResourceTypeLocked(fields.type_url);
|
734
|
+
if (result_.type == nullptr) {
|
735
|
+
return absl::InvalidArgumentError(
|
736
|
+
absl::StrCat("unknown resource type ", fields.type_url));
|
737
|
+
}
|
738
|
+
result_.type_url = std::move(fields.type_url);
|
739
|
+
result_.version = std::move(fields.version);
|
740
|
+
result_.nonce = std::move(fields.nonce);
|
741
|
+
return absl::OkStatus();
|
742
|
+
}
|
743
|
+
|
744
|
+
namespace {
|
745
|
+
|
746
|
+
// Build a resource metadata struct for ADS result accepting methods and CSDS.
|
747
|
+
XdsApi::ResourceMetadata CreateResourceMetadataAcked(
|
748
|
+
std::string serialized_proto, std::string version, Timestamp update_time) {
|
749
|
+
XdsApi::ResourceMetadata resource_metadata;
|
750
|
+
resource_metadata.serialized_proto = std::move(serialized_proto);
|
751
|
+
resource_metadata.update_time = update_time;
|
752
|
+
resource_metadata.version = std::move(version);
|
753
|
+
resource_metadata.client_status = XdsApi::ResourceMetadata::ACKED;
|
754
|
+
return resource_metadata;
|
755
|
+
}
|
756
|
+
|
757
|
+
// Update resource_metadata for NACK.
|
758
|
+
void UpdateResourceMetadataNacked(const std::string& version,
|
759
|
+
const std::string& details,
|
760
|
+
Timestamp update_time,
|
761
|
+
XdsApi::ResourceMetadata* resource_metadata) {
|
762
|
+
resource_metadata->client_status = XdsApi::ResourceMetadata::NACKED;
|
763
|
+
resource_metadata->failed_version = version;
|
764
|
+
resource_metadata->failed_details = details;
|
765
|
+
resource_metadata->failed_update_time = update_time;
|
766
|
+
}
|
767
|
+
|
768
|
+
} // namespace
|
769
|
+
|
770
|
+
void XdsClient::ChannelState::AdsCallState::AdsResponseParser::ParseResource(
|
771
|
+
const XdsEncodingContext& context, size_t idx, absl::string_view type_url,
|
772
|
+
absl::string_view serialized_resource) {
|
773
|
+
// Check the type_url of the resource.
|
774
|
+
bool is_v2 = false;
|
775
|
+
if (!result_.type->IsType(type_url, &is_v2)) {
|
776
|
+
result_.errors.emplace_back(
|
777
|
+
absl::StrCat("resource index ", idx, ": incorrect resource type ",
|
778
|
+
type_url, " (should be ", result_.type_url, ")"));
|
779
|
+
return;
|
780
|
+
}
|
781
|
+
// Parse the resource.
|
782
|
+
absl::StatusOr<XdsResourceType::DecodeResult> result =
|
783
|
+
result_.type->Decode(context, serialized_resource, is_v2);
|
784
|
+
if (!result.ok()) {
|
785
|
+
result_.errors.emplace_back(
|
786
|
+
absl::StrCat("resource index ", idx, ": ", result.status().ToString()));
|
787
|
+
return;
|
788
|
+
}
|
789
|
+
// Check the resource name.
|
790
|
+
auto resource_name =
|
791
|
+
xds_client()->ParseXdsResourceName(result->name, result_.type);
|
792
|
+
if (!resource_name.ok()) {
|
793
|
+
result_.errors.emplace_back(absl::StrCat(
|
794
|
+
"resource index ", idx, ": Cannot parse xDS resource name \"",
|
795
|
+
result->name, "\""));
|
796
|
+
return;
|
797
|
+
}
|
798
|
+
// Cancel resource-does-not-exist timer, if needed.
|
799
|
+
auto timer_it = ads_call_state_->state_map_.find(result_.type);
|
800
|
+
if (timer_it != ads_call_state_->state_map_.end()) {
|
801
|
+
auto it =
|
802
|
+
timer_it->second.subscribed_resources.find(resource_name->authority);
|
803
|
+
if (it != timer_it->second.subscribed_resources.end()) {
|
804
|
+
auto res_it = it->second.find(resource_name->key);
|
805
|
+
if (res_it != it->second.end()) {
|
806
|
+
res_it->second->MaybeCancelTimer();
|
807
|
+
}
|
808
|
+
}
|
809
|
+
}
|
810
|
+
// Lookup the authority in the cache.
|
811
|
+
auto authority_it =
|
812
|
+
xds_client()->authority_state_map_.find(resource_name->authority);
|
813
|
+
if (authority_it == xds_client()->authority_state_map_.end()) {
|
814
|
+
return; // Skip resource -- we don't have a subscription for it.
|
815
|
+
}
|
816
|
+
// Found authority, so look up type.
|
817
|
+
AuthorityState& authority_state = authority_it->second;
|
818
|
+
auto type_it = authority_state.resource_map.find(result_.type);
|
819
|
+
if (type_it == authority_state.resource_map.end()) {
|
820
|
+
return; // Skip resource -- we don't have a subscription for it.
|
821
|
+
}
|
822
|
+
auto& type_map = type_it->second;
|
823
|
+
// Found type, so look up resource key.
|
824
|
+
auto it = type_map.find(resource_name->key);
|
825
|
+
if (it == type_map.end()) {
|
826
|
+
return; // Skip resource -- we don't have a subscription for it.
|
827
|
+
}
|
828
|
+
ResourceState& resource_state = it->second;
|
829
|
+
// If needed, record that we've seen this resource.
|
830
|
+
if (result_.type->AllResourcesRequiredInSotW()) {
|
831
|
+
result_.resources_seen[resource_name->authority].insert(resource_name->key);
|
832
|
+
}
|
833
|
+
// Update resource state based on whether the resource is valid.
|
834
|
+
if (!result->resource.ok()) {
|
835
|
+
result_.errors.emplace_back(absl::StrCat(
|
836
|
+
"resource index ", idx, ": ", result->name,
|
837
|
+
": validation error: ", result->resource.status().ToString()));
|
838
|
+
xds_client()->NotifyWatchersOnErrorLocked(
|
839
|
+
resource_state.watchers,
|
840
|
+
absl::UnavailableError(absl::StrCat(
|
841
|
+
"invalid resource: ", result->resource.status().ToString())));
|
842
|
+
UpdateResourceMetadataNacked(result_.version,
|
843
|
+
result->resource.status().ToString(),
|
844
|
+
update_time_, &resource_state.meta);
|
845
|
+
return;
|
846
|
+
}
|
847
|
+
// Resource is valid.
|
848
|
+
result_.have_valid_resources = true;
|
849
|
+
// If it didn't change, ignore it.
|
850
|
+
if (resource_state.resource != nullptr &&
|
851
|
+
result_.type->ResourcesEqual(resource_state.resource.get(),
|
852
|
+
result->resource->get())) {
|
853
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
854
|
+
gpr_log(GPR_INFO,
|
855
|
+
"[xds_client %p] %s resource %s identical to current, ignoring.",
|
856
|
+
xds_client(), result_.type_url.c_str(), result->name.c_str());
|
857
|
+
}
|
858
|
+
return;
|
859
|
+
}
|
860
|
+
// Update the resource state.
|
861
|
+
resource_state.resource = std::move(*result->resource);
|
862
|
+
resource_state.meta = CreateResourceMetadataAcked(
|
863
|
+
std::string(serialized_resource), result_.version, update_time_);
|
864
|
+
// Notify watchers.
|
865
|
+
auto& watchers_list = resource_state.watchers;
|
866
|
+
auto* value =
|
867
|
+
result_.type->CopyResource(resource_state.resource.get()).release();
|
868
|
+
xds_client()->work_serializer_.Schedule(
|
869
|
+
[watchers_list, value]()
|
870
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&xds_client()->work_serializer_) {
|
871
|
+
for (const auto& p : watchers_list) {
|
872
|
+
p.first->OnGenericResourceChanged(value);
|
873
|
+
}
|
874
|
+
delete value;
|
875
|
+
},
|
876
|
+
DEBUG_LOCATION);
|
877
|
+
}
|
878
|
+
|
685
879
|
//
|
686
880
|
// XdsClient::ChannelState::AdsCallState
|
687
881
|
//
|
@@ -698,14 +892,17 @@ XdsClient::ChannelState::AdsCallState::AdsCallState(
|
|
698
892
|
// the polling entities from client_channel.
|
699
893
|
GPR_ASSERT(xds_client() != nullptr);
|
700
894
|
// Create a call with the specified method name.
|
701
|
-
const
|
895
|
+
const char* method =
|
702
896
|
chand()->server_.ShouldUseV3()
|
703
|
-
?
|
704
|
-
|
897
|
+
? "/envoy.service.discovery.v3.AggregatedDiscoveryService/"
|
898
|
+
"StreamAggregatedResources"
|
899
|
+
: "/envoy.service.discovery.v2.AggregatedDiscoveryService/"
|
900
|
+
"StreamAggregatedResources";
|
705
901
|
call_ = grpc_channel_create_pollset_set_call(
|
706
902
|
chand()->channel_, nullptr, GRPC_PROPAGATE_DEFAULTS,
|
707
|
-
xds_client()->interested_parties_,
|
708
|
-
|
903
|
+
xds_client()->interested_parties_,
|
904
|
+
StaticSlice::FromStaticString(method).c_slice(), nullptr,
|
905
|
+
Timestamp::InfFuture(), nullptr);
|
709
906
|
GPR_ASSERT(call_ != nullptr);
|
710
907
|
// Init data associated with the call.
|
711
908
|
grpc_metadata_array_init(&initial_metadata_recv_);
|
@@ -713,9 +910,9 @@ XdsClient::ChannelState::AdsCallState::AdsCallState(
|
|
713
910
|
// Start the call.
|
714
911
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
715
912
|
gpr_log(GPR_INFO,
|
716
|
-
"[xds_client %p]
|
717
|
-
"call: %p)",
|
718
|
-
xds_client(), chand(), this, call_);
|
913
|
+
"[xds_client %p] xds server %s: starting ADS call "
|
914
|
+
"(calld: %p, call: %p)",
|
915
|
+
xds_client(), chand()->server_.server_uri.c_str(), this, call_);
|
719
916
|
}
|
720
917
|
// Create the ops.
|
721
918
|
grpc_call_error call_error;
|
@@ -735,17 +932,20 @@ XdsClient::ChannelState::AdsCallState::AdsCallState(
|
|
735
932
|
// Op: send request message.
|
736
933
|
GRPC_CLOSURE_INIT(&on_request_sent_, OnRequestSent, this,
|
737
934
|
grpc_schedule_on_exec_ctx);
|
738
|
-
for (const auto&
|
739
|
-
|
740
|
-
|
741
|
-
|
742
|
-
|
743
|
-
|
744
|
-
|
745
|
-
|
935
|
+
for (const auto& a : xds_client()->authority_state_map_) {
|
936
|
+
const std::string& authority = a.first;
|
937
|
+
// Skip authorities that are not using this xDS channel.
|
938
|
+
if (a.second.channel_state != chand()) continue;
|
939
|
+
for (const auto& t : a.second.resource_map) {
|
940
|
+
const XdsResourceType* type = t.first;
|
941
|
+
for (const auto& r : t.second) {
|
942
|
+
const XdsResourceKey& resource_key = r.first;
|
943
|
+
SubscribeLocked(type, {authority, resource_key}, /*delay_send=*/true);
|
944
|
+
}
|
945
|
+
}
|
746
946
|
}
|
747
|
-
for (const auto& p :
|
748
|
-
|
947
|
+
for (const auto& p : state_map_) {
|
948
|
+
SendMessageLocked(p.first);
|
749
949
|
}
|
750
950
|
// Op: recv initial metadata.
|
751
951
|
op = ops;
|
@@ -809,34 +1009,30 @@ void XdsClient::ChannelState::AdsCallState::Orphan() {
|
|
809
1009
|
}
|
810
1010
|
|
811
1011
|
void XdsClient::ChannelState::AdsCallState::SendMessageLocked(
|
812
|
-
const
|
1012
|
+
const XdsResourceType* type)
|
813
1013
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_) {
|
814
1014
|
// Buffer message sending if an existing message is in flight.
|
815
1015
|
if (send_message_payload_ != nullptr) {
|
816
|
-
buffered_requests_.insert(
|
1016
|
+
buffered_requests_.insert(type);
|
817
1017
|
return;
|
818
1018
|
}
|
819
|
-
auto& state = state_map_[
|
1019
|
+
auto& state = state_map_[type];
|
820
1020
|
grpc_slice request_payload_slice;
|
821
|
-
std::set<absl::string_view> resource_names =
|
822
|
-
ResourceNamesForRequest(type_url);
|
823
1021
|
request_payload_slice = xds_client()->api_.CreateAdsRequest(
|
824
|
-
chand()->server_,
|
825
|
-
|
826
|
-
|
827
|
-
|
828
|
-
|
829
|
-
state_map_.erase(type_url);
|
830
|
-
}
|
1022
|
+
chand()->server_,
|
1023
|
+
chand()->server_.ShouldUseV3() ? type->type_url() : type->v2_type_url(),
|
1024
|
+
chand()->resource_type_version_map_[type], state.nonce,
|
1025
|
+
ResourceNamesForRequest(type), GRPC_ERROR_REF(state.error),
|
1026
|
+
!sent_initial_message_);
|
831
1027
|
sent_initial_message_ = true;
|
832
1028
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
833
1029
|
gpr_log(GPR_INFO,
|
834
|
-
"[xds_client %p] sending ADS request: type=%s
|
835
|
-
"
|
836
|
-
xds_client(),
|
837
|
-
|
838
|
-
|
839
|
-
|
1030
|
+
"[xds_client %p] xds server %s: sending ADS request: type=%s "
|
1031
|
+
"version=%s nonce=%s error=%s",
|
1032
|
+
xds_client(), chand()->server_.server_uri.c_str(),
|
1033
|
+
std::string(type->type_url()).c_str(),
|
1034
|
+
chand()->resource_type_version_map_[type].c_str(),
|
1035
|
+
state.nonce.c_str(), grpc_error_std_string(state.error).c_str());
|
840
1036
|
}
|
841
1037
|
GRPC_ERROR_UNREF(state.error);
|
842
1038
|
state.error = GRPC_ERROR_NONE;
|
@@ -856,27 +1052,33 @@ void XdsClient::ChannelState::AdsCallState::SendMessageLocked(
|
|
856
1052
|
grpc_call_start_batch_and_execute(call_, &op, 1, &on_request_sent_);
|
857
1053
|
if (GPR_UNLIKELY(call_error != GRPC_CALL_OK)) {
|
858
1054
|
gpr_log(GPR_ERROR,
|
859
|
-
"[xds_client %p]
|
860
|
-
|
1055
|
+
"[xds_client %p] xds server %s: error starting ADS send_message "
|
1056
|
+
"batch on calld=%p: call_error=%d",
|
1057
|
+
xds_client(), chand()->server_.server_uri.c_str(), this,
|
1058
|
+
call_error);
|
861
1059
|
GPR_ASSERT(GRPC_CALL_OK == call_error);
|
862
1060
|
}
|
863
1061
|
}
|
864
1062
|
|
865
1063
|
void XdsClient::ChannelState::AdsCallState::SubscribeLocked(
|
866
|
-
const
|
867
|
-
auto& state = state_map_[
|
1064
|
+
const XdsResourceType* type, const XdsResourceName& name, bool delay_send) {
|
1065
|
+
auto& state = state_map_[type].subscribed_resources[name.authority][name.key];
|
868
1066
|
if (state == nullptr) {
|
869
|
-
state = MakeOrphanable<
|
870
|
-
|
871
|
-
SendMessageLocked(type_url);
|
1067
|
+
state = MakeOrphanable<ResourceTimer>(type, name);
|
1068
|
+
if (!delay_send) SendMessageLocked(type);
|
872
1069
|
}
|
873
1070
|
}
|
874
1071
|
|
875
1072
|
void XdsClient::ChannelState::AdsCallState::UnsubscribeLocked(
|
876
|
-
const
|
1073
|
+
const XdsResourceType* type, const XdsResourceName& name,
|
877
1074
|
bool delay_unsubscription) {
|
878
|
-
state_map_[
|
879
|
-
|
1075
|
+
auto& type_state_map = state_map_[type];
|
1076
|
+
auto& authority_map = type_state_map.subscribed_resources[name.authority];
|
1077
|
+
authority_map.erase(name.key);
|
1078
|
+
if (authority_map.empty()) {
|
1079
|
+
type_state_map.subscribed_resources.erase(name.authority);
|
1080
|
+
}
|
1081
|
+
if (!delay_unsubscription) SendMessageLocked(type);
|
880
1082
|
}
|
881
1083
|
|
882
1084
|
bool XdsClient::ChannelState::AdsCallState::HasSubscribedResources() const {
|
@@ -886,312 +1088,6 @@ bool XdsClient::ChannelState::AdsCallState::HasSubscribedResources() const {
|
|
886
1088
|
return false;
|
887
1089
|
}
|
888
1090
|
|
889
|
-
namespace {
|
890
|
-
|
891
|
-
// Build a resource metadata struct for ADS result accepting methods and CSDS.
|
892
|
-
XdsApi::ResourceMetadata CreateResourceMetadataAcked(
|
893
|
-
std::string serialized_proto, std::string version,
|
894
|
-
grpc_millis update_time) {
|
895
|
-
XdsApi::ResourceMetadata resource_metadata;
|
896
|
-
resource_metadata.serialized_proto = std::move(serialized_proto);
|
897
|
-
resource_metadata.update_time = update_time;
|
898
|
-
resource_metadata.version = std::move(version);
|
899
|
-
resource_metadata.client_status = XdsApi::ResourceMetadata::ACKED;
|
900
|
-
return resource_metadata;
|
901
|
-
}
|
902
|
-
|
903
|
-
} // namespace
|
904
|
-
|
905
|
-
void XdsClient::ChannelState::AdsCallState::AcceptLdsUpdateLocked(
|
906
|
-
std::string version, grpc_millis update_time,
|
907
|
-
XdsApi::LdsUpdateMap lds_update_map) {
|
908
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
909
|
-
gpr_log(GPR_INFO,
|
910
|
-
"[xds_client %p] LDS update received containing %" PRIuPTR
|
911
|
-
" resources",
|
912
|
-
xds_client(), lds_update_map.size());
|
913
|
-
}
|
914
|
-
auto& lds_state = state_map_[XdsApi::kLdsTypeUrl];
|
915
|
-
std::set<std::string> rds_resource_names_seen;
|
916
|
-
for (auto& p : lds_update_map) {
|
917
|
-
const std::string& listener_name = p.first;
|
918
|
-
XdsApi::LdsUpdate& lds_update = p.second.resource;
|
919
|
-
auto& state = lds_state.subscribed_resources[listener_name];
|
920
|
-
if (state != nullptr) state->Finish();
|
921
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
922
|
-
gpr_log(GPR_INFO, "[xds_client %p] LDS resource %s: %s", xds_client(),
|
923
|
-
listener_name.c_str(), lds_update.ToString().c_str());
|
924
|
-
}
|
925
|
-
// Record the RDS resource names seen.
|
926
|
-
if (!lds_update.http_connection_manager.route_config_name.empty()) {
|
927
|
-
rds_resource_names_seen.insert(
|
928
|
-
lds_update.http_connection_manager.route_config_name);
|
929
|
-
}
|
930
|
-
// Ignore identical update.
|
931
|
-
ListenerState& listener_state = xds_client()->listener_map_[listener_name];
|
932
|
-
if (listener_state.update.has_value() &&
|
933
|
-
*listener_state.update == lds_update) {
|
934
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
935
|
-
gpr_log(GPR_INFO,
|
936
|
-
"[xds_client %p] LDS update for %s identical to current, "
|
937
|
-
"ignoring.",
|
938
|
-
xds_client(), listener_name.c_str());
|
939
|
-
}
|
940
|
-
continue;
|
941
|
-
}
|
942
|
-
// Update the listener state.
|
943
|
-
listener_state.update = std::move(lds_update);
|
944
|
-
listener_state.meta = CreateResourceMetadataAcked(
|
945
|
-
std::move(p.second.serialized_proto), version, update_time);
|
946
|
-
// Notify watchers.
|
947
|
-
for (const auto& p : listener_state.watchers) {
|
948
|
-
p.first->OnListenerChanged(*listener_state.update);
|
949
|
-
}
|
950
|
-
}
|
951
|
-
// For any subscribed resource that is not present in the update,
|
952
|
-
// remove it from the cache and notify watchers that it does not exist.
|
953
|
-
for (const auto& p : lds_state.subscribed_resources) {
|
954
|
-
const std::string& listener_name = p.first;
|
955
|
-
if (lds_update_map.find(listener_name) == lds_update_map.end()) {
|
956
|
-
ListenerState& listener_state =
|
957
|
-
xds_client()->listener_map_[listener_name];
|
958
|
-
// If the resource was newly requested but has not yet been received,
|
959
|
-
// we don't want to generate an error for the watchers, because this LDS
|
960
|
-
// response may be in reaction to an earlier request that did not yet
|
961
|
-
// request the new resource, so its absence from the response does not
|
962
|
-
// necessarily indicate that the resource does not exist.
|
963
|
-
// For that case, we rely on the request timeout instead.
|
964
|
-
if (!listener_state.update.has_value()) continue;
|
965
|
-
listener_state.update.reset();
|
966
|
-
for (const auto& p : listener_state.watchers) {
|
967
|
-
p.first->OnResourceDoesNotExist();
|
968
|
-
}
|
969
|
-
}
|
970
|
-
}
|
971
|
-
// For any RDS resource that is no longer referred to by any LDS
|
972
|
-
// resources, remove it from the cache and notify watchers that it
|
973
|
-
// does not exist.
|
974
|
-
auto& rds_state = state_map_[XdsApi::kRdsTypeUrl];
|
975
|
-
for (const auto& p : rds_state.subscribed_resources) {
|
976
|
-
const std::string& rds_resource_name = p.first;
|
977
|
-
if (rds_resource_names_seen.find(rds_resource_name) ==
|
978
|
-
rds_resource_names_seen.end()) {
|
979
|
-
RouteConfigState& route_config_state =
|
980
|
-
xds_client()->route_config_map_[rds_resource_name];
|
981
|
-
route_config_state.update.reset();
|
982
|
-
for (const auto& p : route_config_state.watchers) {
|
983
|
-
p.first->OnResourceDoesNotExist();
|
984
|
-
}
|
985
|
-
}
|
986
|
-
}
|
987
|
-
}
|
988
|
-
|
989
|
-
void XdsClient::ChannelState::AdsCallState::AcceptRdsUpdateLocked(
|
990
|
-
std::string version, grpc_millis update_time,
|
991
|
-
XdsApi::RdsUpdateMap rds_update_map) {
|
992
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
993
|
-
gpr_log(GPR_INFO,
|
994
|
-
"[xds_client %p] RDS update received containing %" PRIuPTR
|
995
|
-
" resources",
|
996
|
-
xds_client(), rds_update_map.size());
|
997
|
-
}
|
998
|
-
auto& rds_state = state_map_[XdsApi::kRdsTypeUrl];
|
999
|
-
for (auto& p : rds_update_map) {
|
1000
|
-
const std::string& route_config_name = p.first;
|
1001
|
-
XdsApi::RdsUpdate& rds_update = p.second.resource;
|
1002
|
-
auto& state = rds_state.subscribed_resources[route_config_name];
|
1003
|
-
if (state != nullptr) state->Finish();
|
1004
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
1005
|
-
gpr_log(GPR_INFO, "[xds_client %p] RDS resource:\n%s", xds_client(),
|
1006
|
-
rds_update.ToString().c_str());
|
1007
|
-
}
|
1008
|
-
RouteConfigState& route_config_state =
|
1009
|
-
xds_client()->route_config_map_[route_config_name];
|
1010
|
-
// Ignore identical update.
|
1011
|
-
if (route_config_state.update.has_value() &&
|
1012
|
-
*route_config_state.update == rds_update) {
|
1013
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
1014
|
-
gpr_log(GPR_INFO,
|
1015
|
-
"[xds_client %p] RDS resource identical to current, ignoring",
|
1016
|
-
xds_client());
|
1017
|
-
}
|
1018
|
-
continue;
|
1019
|
-
}
|
1020
|
-
// Update the cache.
|
1021
|
-
route_config_state.update = std::move(rds_update);
|
1022
|
-
route_config_state.meta = CreateResourceMetadataAcked(
|
1023
|
-
std::move(p.second.serialized_proto), version, update_time);
|
1024
|
-
// Notify all watchers.
|
1025
|
-
for (const auto& p : route_config_state.watchers) {
|
1026
|
-
p.first->OnRouteConfigChanged(*route_config_state.update);
|
1027
|
-
}
|
1028
|
-
}
|
1029
|
-
}
|
1030
|
-
|
1031
|
-
void XdsClient::ChannelState::AdsCallState::AcceptCdsUpdateLocked(
|
1032
|
-
std::string version, grpc_millis update_time,
|
1033
|
-
XdsApi::CdsUpdateMap cds_update_map) {
|
1034
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
1035
|
-
gpr_log(GPR_INFO,
|
1036
|
-
"[xds_client %p] CDS update received containing %" PRIuPTR
|
1037
|
-
" resources",
|
1038
|
-
xds_client(), cds_update_map.size());
|
1039
|
-
}
|
1040
|
-
auto& cds_state = state_map_[XdsApi::kCdsTypeUrl];
|
1041
|
-
std::set<std::string> eds_resource_names_seen;
|
1042
|
-
for (auto& p : cds_update_map) {
|
1043
|
-
const char* cluster_name = p.first.c_str();
|
1044
|
-
XdsApi::CdsUpdate& cds_update = p.second.resource;
|
1045
|
-
auto& state = cds_state.subscribed_resources[cluster_name];
|
1046
|
-
if (state != nullptr) state->Finish();
|
1047
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
1048
|
-
gpr_log(GPR_INFO, "[xds_client %p] cluster=%s: %s", xds_client(),
|
1049
|
-
cluster_name, cds_update.ToString().c_str());
|
1050
|
-
}
|
1051
|
-
// Record the EDS resource names seen.
|
1052
|
-
eds_resource_names_seen.insert(cds_update.eds_service_name.empty()
|
1053
|
-
? cluster_name
|
1054
|
-
: cds_update.eds_service_name);
|
1055
|
-
// Ignore identical update.
|
1056
|
-
ClusterState& cluster_state = xds_client()->cluster_map_[cluster_name];
|
1057
|
-
if (cluster_state.update.has_value() &&
|
1058
|
-
*cluster_state.update == cds_update) {
|
1059
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
1060
|
-
gpr_log(GPR_INFO,
|
1061
|
-
"[xds_client %p] CDS update identical to current, ignoring.",
|
1062
|
-
xds_client());
|
1063
|
-
}
|
1064
|
-
continue;
|
1065
|
-
}
|
1066
|
-
// Update the cluster state.
|
1067
|
-
cluster_state.update = std::move(cds_update);
|
1068
|
-
cluster_state.meta = CreateResourceMetadataAcked(
|
1069
|
-
std::move(p.second.serialized_proto), version, update_time);
|
1070
|
-
// Notify all watchers.
|
1071
|
-
for (const auto& p : cluster_state.watchers) {
|
1072
|
-
p.first->OnClusterChanged(cluster_state.update.value());
|
1073
|
-
}
|
1074
|
-
}
|
1075
|
-
// For any subscribed resource that is not present in the update,
|
1076
|
-
// remove it from the cache and notify watchers that it does not exist.
|
1077
|
-
for (const auto& p : cds_state.subscribed_resources) {
|
1078
|
-
const std::string& cluster_name = p.first;
|
1079
|
-
if (cds_update_map.find(cluster_name) == cds_update_map.end()) {
|
1080
|
-
ClusterState& cluster_state = xds_client()->cluster_map_[cluster_name];
|
1081
|
-
// If the resource was newly requested but has not yet been received,
|
1082
|
-
// we don't want to generate an error for the watchers, because this CDS
|
1083
|
-
// response may be in reaction to an earlier request that did not yet
|
1084
|
-
// request the new resource, so its absence from the response does not
|
1085
|
-
// necessarily indicate that the resource does not exist.
|
1086
|
-
// For that case, we rely on the request timeout instead.
|
1087
|
-
if (!cluster_state.update.has_value()) continue;
|
1088
|
-
cluster_state.update.reset();
|
1089
|
-
for (const auto& p : cluster_state.watchers) {
|
1090
|
-
p.first->OnResourceDoesNotExist();
|
1091
|
-
}
|
1092
|
-
}
|
1093
|
-
}
|
1094
|
-
// For any EDS resource that is no longer referred to by any CDS
|
1095
|
-
// resources, remove it from the cache and notify watchers that it
|
1096
|
-
// does not exist.
|
1097
|
-
auto& eds_state = state_map_[XdsApi::kEdsTypeUrl];
|
1098
|
-
for (const auto& p : eds_state.subscribed_resources) {
|
1099
|
-
const std::string& eds_resource_name = p.first;
|
1100
|
-
if (eds_resource_names_seen.find(eds_resource_name) ==
|
1101
|
-
eds_resource_names_seen.end()) {
|
1102
|
-
EndpointState& endpoint_state =
|
1103
|
-
xds_client()->endpoint_map_[eds_resource_name];
|
1104
|
-
endpoint_state.update.reset();
|
1105
|
-
for (const auto& p : endpoint_state.watchers) {
|
1106
|
-
p.first->OnResourceDoesNotExist();
|
1107
|
-
}
|
1108
|
-
}
|
1109
|
-
}
|
1110
|
-
}
|
1111
|
-
|
1112
|
-
void XdsClient::ChannelState::AdsCallState::AcceptEdsUpdateLocked(
|
1113
|
-
std::string version, grpc_millis update_time,
|
1114
|
-
XdsApi::EdsUpdateMap eds_update_map) {
|
1115
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
1116
|
-
gpr_log(GPR_INFO,
|
1117
|
-
"[xds_client %p] EDS update received containing %" PRIuPTR
|
1118
|
-
" resources",
|
1119
|
-
xds_client(), eds_update_map.size());
|
1120
|
-
}
|
1121
|
-
auto& eds_state = state_map_[XdsApi::kEdsTypeUrl];
|
1122
|
-
for (auto& p : eds_update_map) {
|
1123
|
-
const char* eds_service_name = p.first.c_str();
|
1124
|
-
XdsApi::EdsUpdate& eds_update = p.second.resource;
|
1125
|
-
auto& state = eds_state.subscribed_resources[eds_service_name];
|
1126
|
-
if (state != nullptr) state->Finish();
|
1127
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
1128
|
-
gpr_log(GPR_INFO, "[xds_client %p] EDS resource %s: %s", xds_client(),
|
1129
|
-
eds_service_name, eds_update.ToString().c_str());
|
1130
|
-
}
|
1131
|
-
EndpointState& endpoint_state =
|
1132
|
-
xds_client()->endpoint_map_[eds_service_name];
|
1133
|
-
// Ignore identical update.
|
1134
|
-
if (endpoint_state.update.has_value() &&
|
1135
|
-
*endpoint_state.update == eds_update) {
|
1136
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
1137
|
-
gpr_log(GPR_INFO,
|
1138
|
-
"[xds_client %p] EDS update identical to current, ignoring.",
|
1139
|
-
xds_client());
|
1140
|
-
}
|
1141
|
-
continue;
|
1142
|
-
}
|
1143
|
-
// Update the cluster state.
|
1144
|
-
endpoint_state.update = std::move(eds_update);
|
1145
|
-
endpoint_state.meta = CreateResourceMetadataAcked(
|
1146
|
-
std::move(p.second.serialized_proto), version, update_time);
|
1147
|
-
// Notify all watchers.
|
1148
|
-
for (const auto& p : endpoint_state.watchers) {
|
1149
|
-
p.first->OnEndpointChanged(endpoint_state.update.value());
|
1150
|
-
}
|
1151
|
-
}
|
1152
|
-
}
|
1153
|
-
|
1154
|
-
namespace {
|
1155
|
-
|
1156
|
-
// Update resource_metadata for NACK.
|
1157
|
-
void UpdateResourceMetadataNacked(const std::string& version,
|
1158
|
-
const std::string& details,
|
1159
|
-
grpc_millis update_time,
|
1160
|
-
XdsApi::ResourceMetadata* resource_metadata) {
|
1161
|
-
resource_metadata->client_status = XdsApi::ResourceMetadata::NACKED;
|
1162
|
-
resource_metadata->failed_version = version;
|
1163
|
-
resource_metadata->failed_details = details;
|
1164
|
-
resource_metadata->failed_update_time = update_time;
|
1165
|
-
}
|
1166
|
-
|
1167
|
-
} // namespace
|
1168
|
-
|
1169
|
-
template <typename StateMap>
|
1170
|
-
void XdsClient::ChannelState::AdsCallState::RejectAdsUpdateLocked(
|
1171
|
-
grpc_millis update_time, const XdsApi::AdsParseResult& result,
|
1172
|
-
StateMap* state_map) {
|
1173
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
1174
|
-
gpr_log(GPR_INFO,
|
1175
|
-
"[xds_client %p] %s update NACKed containing %" PRIuPTR
|
1176
|
-
" resources",
|
1177
|
-
xds_client(), result.type_url.c_str(),
|
1178
|
-
result.resource_names_failed.size());
|
1179
|
-
}
|
1180
|
-
std::string details = grpc_error_std_string(result.parse_error);
|
1181
|
-
for (auto& name : result.resource_names_failed) {
|
1182
|
-
auto it = state_map->find(name);
|
1183
|
-
if (it == state_map->end()) continue;
|
1184
|
-
auto& state = it->second;
|
1185
|
-
// Notify watchers of error.
|
1186
|
-
for (const auto& p : state.watchers) {
|
1187
|
-
p.first->OnError(GRPC_ERROR_REF(result.parse_error));
|
1188
|
-
}
|
1189
|
-
// Update resource metadata for CSDS.
|
1190
|
-
UpdateResourceMetadataNacked(result.version, details, update_time,
|
1191
|
-
&state.meta);
|
1192
|
-
}
|
1193
|
-
}
|
1194
|
-
|
1195
1091
|
void XdsClient::ChannelState::AdsCallState::OnRequestSent(
|
1196
1092
|
void* arg, grpc_error_handle error) {
|
1197
1093
|
AdsCallState* ads_calld = static_cast<AdsCallState*>(arg);
|
@@ -1234,6 +1130,7 @@ void XdsClient::ChannelState::AdsCallState::OnResponseReceived(
|
|
1234
1130
|
MutexLock lock(&ads_calld->xds_client()->mu_);
|
1235
1131
|
done = ads_calld->OnResponseReceivedLocked();
|
1236
1132
|
}
|
1133
|
+
ads_calld->xds_client()->work_serializer_.DrainQueue();
|
1237
1134
|
if (done) ads_calld->Unref(DEBUG_LOCATION, "ADS+OnResponseReceivedLocked");
|
1238
1135
|
}
|
1239
1136
|
|
@@ -1250,71 +1147,75 @@ bool XdsClient::ChannelState::AdsCallState::OnResponseReceivedLocked() {
|
|
1250
1147
|
grpc_byte_buffer_destroy(recv_message_payload_);
|
1251
1148
|
recv_message_payload_ = nullptr;
|
1252
1149
|
// Parse and validate the response.
|
1253
|
-
|
1254
|
-
|
1255
|
-
|
1256
|
-
ResourceNamesForRequest(XdsApi::kRdsTypeUrl),
|
1257
|
-
ResourceNamesForRequest(XdsApi::kCdsTypeUrl),
|
1258
|
-
ResourceNamesForRequest(XdsApi::kEdsTypeUrl));
|
1150
|
+
AdsResponseParser parser(this);
|
1151
|
+
absl::Status status = xds_client()->api_.ParseAdsResponse(
|
1152
|
+
chand()->server_, response_slice, &parser);
|
1259
1153
|
grpc_slice_unref_internal(response_slice);
|
1260
|
-
if (
|
1154
|
+
if (!status.ok()) {
|
1261
1155
|
// Ignore unparsable response.
|
1262
1156
|
gpr_log(GPR_ERROR,
|
1263
|
-
"[xds_client %p]
|
1264
|
-
|
1265
|
-
|
1157
|
+
"[xds_client %p] xds server %s: error parsing ADS response (%s) "
|
1158
|
+
"-- ignoring",
|
1159
|
+
xds_client(), chand()->server_.server_uri.c_str(),
|
1160
|
+
status.ToString().c_str());
|
1266
1161
|
} else {
|
1267
|
-
|
1162
|
+
seen_response_ = true;
|
1163
|
+
AdsResponseParser::Result result = parser.TakeResult();
|
1268
1164
|
// Update nonce.
|
1269
|
-
auto& state = state_map_[result.
|
1270
|
-
state.nonce =
|
1271
|
-
//
|
1272
|
-
if (result.
|
1273
|
-
|
1274
|
-
gpr_log(
|
1275
|
-
|
1276
|
-
|
1277
|
-
|
1278
|
-
|
1279
|
-
|
1280
|
-
|
1281
|
-
grpc_error_set_int(result.parse_error, GRPC_ERROR_INT_GRPC_STATUS,
|
1282
|
-
GRPC_STATUS_UNAVAILABLE);
|
1165
|
+
auto& state = state_map_[result.type];
|
1166
|
+
state.nonce = result.nonce;
|
1167
|
+
// If we got an error, set state.error so that we'll NACK the update.
|
1168
|
+
if (!result.errors.empty()) {
|
1169
|
+
std::string error = absl::StrJoin(result.errors, "; ");
|
1170
|
+
gpr_log(
|
1171
|
+
GPR_ERROR,
|
1172
|
+
"[xds_client %p] xds server %s: ADS response invalid for resource "
|
1173
|
+
"type %s version %s, will NACK: nonce=%s error=%s",
|
1174
|
+
xds_client(), chand()->server_.server_uri.c_str(),
|
1175
|
+
result.type_url.c_str(), result.version.c_str(), state.nonce.c_str(),
|
1176
|
+
error.c_str());
|
1283
1177
|
GRPC_ERROR_UNREF(state.error);
|
1284
|
-
state.error =
|
1285
|
-
|
1286
|
-
|
1287
|
-
|
1288
|
-
|
1289
|
-
|
1290
|
-
|
1291
|
-
|
1292
|
-
|
1293
|
-
|
1294
|
-
|
1295
|
-
|
1296
|
-
|
1297
|
-
|
1298
|
-
|
1299
|
-
|
1300
|
-
|
1301
|
-
|
1302
|
-
|
1303
|
-
|
1304
|
-
|
1305
|
-
|
1306
|
-
|
1307
|
-
|
1308
|
-
|
1309
|
-
|
1310
|
-
|
1311
|
-
|
1312
|
-
|
1178
|
+
state.error = grpc_error_set_int(GRPC_ERROR_CREATE_FROM_CPP_STRING(error),
|
1179
|
+
GRPC_ERROR_INT_GRPC_STATUS,
|
1180
|
+
GRPC_STATUS_UNAVAILABLE);
|
1181
|
+
}
|
1182
|
+
// Delete resources not seen in update if needed.
|
1183
|
+
if (result.type->AllResourcesRequiredInSotW()) {
|
1184
|
+
for (auto& a : xds_client()->authority_state_map_) {
|
1185
|
+
const std::string& authority = a.first;
|
1186
|
+
AuthorityState& authority_state = a.second;
|
1187
|
+
// Skip authorities that are not using this xDS channel.
|
1188
|
+
if (authority_state.channel_state != chand()) continue;
|
1189
|
+
auto seen_authority_it = result.resources_seen.find(authority);
|
1190
|
+
// Find this resource type.
|
1191
|
+
auto type_it = authority_state.resource_map.find(result.type);
|
1192
|
+
if (type_it == authority_state.resource_map.end()) continue;
|
1193
|
+
// Iterate over resource ids.
|
1194
|
+
for (auto& r : type_it->second) {
|
1195
|
+
const XdsResourceKey& resource_key = r.first;
|
1196
|
+
ResourceState& resource_state = r.second;
|
1197
|
+
if (seen_authority_it == result.resources_seen.end() ||
|
1198
|
+
seen_authority_it->second.find(resource_key) ==
|
1199
|
+
seen_authority_it->second.end()) {
|
1200
|
+
// If the resource was newly requested but has not yet been
|
1201
|
+
// received, we don't want to generate an error for the watchers,
|
1202
|
+
// because this ADS response may be in reaction to an earlier
|
1203
|
+
// request that did not yet request the new resource, so its absence
|
1204
|
+
// from the response does not necessarily indicate that the resource
|
1205
|
+
// does not exist. For that case, we rely on the request timeout
|
1206
|
+
// instead.
|
1207
|
+
if (resource_state.resource == nullptr) continue;
|
1208
|
+
resource_state.resource.reset();
|
1209
|
+
xds_client()->NotifyWatchersOnResourceDoesNotExist(
|
1210
|
+
resource_state.watchers);
|
1211
|
+
}
|
1212
|
+
}
|
1313
1213
|
}
|
1314
|
-
|
1214
|
+
}
|
1215
|
+
// If we had valid resources, update the version.
|
1216
|
+
if (result.have_valid_resources) {
|
1217
|
+
chand()->resource_type_version_map_[result.type] =
|
1315
1218
|
std::move(result.version);
|
1316
|
-
// ACK the update.
|
1317
|
-
SendMessageLocked(result.type_url);
|
1318
1219
|
// Start load reporting if needed.
|
1319
1220
|
auto& lrs_call = chand()->lrs_calld_;
|
1320
1221
|
if (lrs_call != nullptr) {
|
@@ -1322,6 +1223,8 @@ bool XdsClient::ChannelState::AdsCallState::OnResponseReceivedLocked() {
|
|
1322
1223
|
if (lrs_calld != nullptr) lrs_calld->MaybeStartReportingLocked();
|
1323
1224
|
}
|
1324
1225
|
}
|
1226
|
+
// Send ACK or NACK.
|
1227
|
+
SendMessageLocked(result.type);
|
1325
1228
|
}
|
1326
1229
|
if (xds_client()->shutting_down_) return true;
|
1327
1230
|
// Keep listening for updates.
|
@@ -1346,6 +1249,7 @@ void XdsClient::ChannelState::AdsCallState::OnStatusReceived(
|
|
1346
1249
|
MutexLock lock(&ads_calld->xds_client()->mu_);
|
1347
1250
|
ads_calld->OnStatusReceivedLocked(GRPC_ERROR_REF(error));
|
1348
1251
|
}
|
1252
|
+
ads_calld->xds_client()->work_serializer_.DrainQueue();
|
1349
1253
|
ads_calld->Unref(DEBUG_LOCATION, "ADS+OnStatusReceivedLocked");
|
1350
1254
|
}
|
1351
1255
|
|
@@ -1354,9 +1258,11 @@ void XdsClient::ChannelState::AdsCallState::OnStatusReceivedLocked(
|
|
1354
1258
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
1355
1259
|
char* status_details = grpc_slice_to_c_string(status_details_);
|
1356
1260
|
gpr_log(GPR_INFO,
|
1357
|
-
"[xds_client %p] ADS call status received
|
1358
|
-
"
|
1359
|
-
|
1261
|
+
"[xds_client %p] xds server %s: ADS call status received "
|
1262
|
+
"(chand=%p, ads_calld=%p, call=%p): "
|
1263
|
+
"status=%d, details='%s', error='%s'",
|
1264
|
+
xds_client(), chand()->server_.server_uri.c_str(), chand(), this,
|
1265
|
+
call_, status_code_, status_details,
|
1360
1266
|
grpc_error_std_string(error).c_str());
|
1361
1267
|
gpr_free(status_details);
|
1362
1268
|
}
|
@@ -1365,8 +1271,11 @@ void XdsClient::ChannelState::AdsCallState::OnStatusReceivedLocked(
|
|
1365
1271
|
// Try to restart the call.
|
1366
1272
|
parent_->OnCallFinishedLocked();
|
1367
1273
|
// Send error to all watchers.
|
1368
|
-
xds_client()->NotifyOnErrorLocked(
|
1369
|
-
|
1274
|
+
xds_client()->NotifyOnErrorLocked(absl::UnavailableError(absl::StrFormat(
|
1275
|
+
"xDS call failed: xDS server: %s, ADS call status code=%d, "
|
1276
|
+
"details='%s', error='%s'",
|
1277
|
+
chand()->server_.server_uri, status_code_,
|
1278
|
+
StringViewFromSlice(status_details_), grpc_error_std_string(error))));
|
1370
1279
|
}
|
1371
1280
|
GRPC_ERROR_UNREF(error);
|
1372
1281
|
}
|
@@ -1378,16 +1287,21 @@ bool XdsClient::ChannelState::AdsCallState::IsCurrentCallOnChannel() const {
|
|
1378
1287
|
return this == chand()->ads_calld_->calld();
|
1379
1288
|
}
|
1380
1289
|
|
1381
|
-
std::
|
1290
|
+
std::vector<std::string>
|
1382
1291
|
XdsClient::ChannelState::AdsCallState::ResourceNamesForRequest(
|
1383
|
-
const
|
1384
|
-
std::
|
1385
|
-
auto it = state_map_.find(
|
1292
|
+
const XdsResourceType* type) {
|
1293
|
+
std::vector<std::string> resource_names;
|
1294
|
+
auto it = state_map_.find(type);
|
1386
1295
|
if (it != state_map_.end()) {
|
1387
|
-
for (auto&
|
1388
|
-
|
1389
|
-
|
1390
|
-
|
1296
|
+
for (auto& a : it->second.subscribed_resources) {
|
1297
|
+
const std::string& authority = a.first;
|
1298
|
+
for (auto& p : a.second) {
|
1299
|
+
const XdsResourceKey& resource_key = p.first;
|
1300
|
+
resource_names.emplace_back(XdsClient::ConstructFullXdsResourceName(
|
1301
|
+
authority, type->type_url(), resource_key));
|
1302
|
+
OrphanablePtr<ResourceTimer>& resource_timer = p.second;
|
1303
|
+
resource_timer->MaybeStartTimer(Ref(DEBUG_LOCATION, "ResourceTimer"));
|
1304
|
+
}
|
1391
1305
|
}
|
1392
1306
|
}
|
1393
1307
|
return resource_names;
|
@@ -1405,7 +1319,7 @@ void XdsClient::ChannelState::LrsCallState::Reporter::Orphan() {
|
|
1405
1319
|
|
1406
1320
|
void XdsClient::ChannelState::LrsCallState::Reporter::
|
1407
1321
|
ScheduleNextReportLocked() {
|
1408
|
-
const
|
1322
|
+
const Timestamp next_report_time = ExecCtx::Get()->Now() + report_interval_;
|
1409
1323
|
grpc_timer_init(&next_report_timer_, next_report_time,
|
1410
1324
|
&on_next_report_timer_);
|
1411
1325
|
next_report_timer_callback_pending_ = true;
|
@@ -1451,15 +1365,19 @@ bool LoadReportCountersAreZero(const XdsApi::ClusterLoadReportMap& snapshot) {
|
|
1451
1365
|
bool XdsClient::ChannelState::LrsCallState::Reporter::SendReportLocked() {
|
1452
1366
|
// Construct snapshot from all reported stats.
|
1453
1367
|
XdsApi::ClusterLoadReportMap snapshot =
|
1454
|
-
xds_client()->BuildLoadReportSnapshotLocked(parent_->
|
1368
|
+
xds_client()->BuildLoadReportSnapshotLocked(parent_->chand()->server_,
|
1369
|
+
parent_->send_all_clusters_,
|
1455
1370
|
parent_->cluster_names_);
|
1456
1371
|
// Skip client load report if the counters were all zero in the last
|
1457
1372
|
// report and they are still zero in this one.
|
1458
1373
|
const bool old_val = last_report_counters_were_zero_;
|
1459
1374
|
last_report_counters_were_zero_ = LoadReportCountersAreZero(snapshot);
|
1460
1375
|
if (old_val && last_report_counters_were_zero_) {
|
1461
|
-
|
1462
|
-
|
1376
|
+
auto it = xds_client()->xds_load_report_server_map_.find(
|
1377
|
+
parent_->chand()->server_);
|
1378
|
+
if (it == xds_client()->xds_load_report_server_map_.end() ||
|
1379
|
+
it->second.load_report_map.empty()) {
|
1380
|
+
it->second.channel_state->StopLrsCallLocked();
|
1463
1381
|
return true;
|
1464
1382
|
}
|
1465
1383
|
ScheduleNextReportLocked();
|
@@ -1480,8 +1398,10 @@ bool XdsClient::ChannelState::LrsCallState::Reporter::SendReportLocked() {
|
|
1480
1398
|
parent_->call_, &op, 1, &on_report_done_);
|
1481
1399
|
if (GPR_UNLIKELY(call_error != GRPC_CALL_OK)) {
|
1482
1400
|
gpr_log(GPR_ERROR,
|
1483
|
-
"[xds_client %p]
|
1484
|
-
|
1401
|
+
"[xds_client %p] xds server %s: error starting LRS send_message "
|
1402
|
+
"batch on calld=%p: call_error=%d",
|
1403
|
+
xds_client(), parent_->chand()->server_.server_uri.c_str(), this,
|
1404
|
+
call_error);
|
1485
1405
|
GPR_ASSERT(GRPC_CALL_OK == call_error);
|
1486
1406
|
}
|
1487
1407
|
return false;
|
@@ -1503,8 +1423,11 @@ bool XdsClient::ChannelState::LrsCallState::Reporter::OnReportDoneLocked(
|
|
1503
1423
|
grpc_byte_buffer_destroy(parent_->send_message_payload_);
|
1504
1424
|
parent_->send_message_payload_ = nullptr;
|
1505
1425
|
// If there are no more registered stats to report, cancel the call.
|
1506
|
-
|
1507
|
-
|
1426
|
+
auto it =
|
1427
|
+
xds_client()->xds_load_report_server_map_.find(parent_->chand()->server_);
|
1428
|
+
if (it == xds_client()->xds_load_report_server_map_.end() ||
|
1429
|
+
it->second.load_report_map.empty()) {
|
1430
|
+
it->second.channel_state->StopLrsCallLocked();
|
1508
1431
|
GRPC_ERROR_UNREF(error);
|
1509
1432
|
return true;
|
1510
1433
|
}
|
@@ -1536,14 +1459,15 @@ XdsClient::ChannelState::LrsCallState::LrsCallState(
|
|
1536
1459
|
// activity in xds_client()->interested_parties_, which is comprised of
|
1537
1460
|
// the polling entities from client_channel.
|
1538
1461
|
GPR_ASSERT(xds_client() != nullptr);
|
1539
|
-
const
|
1462
|
+
const char* method =
|
1540
1463
|
chand()->server_.ShouldUseV3()
|
1541
|
-
?
|
1542
|
-
:
|
1464
|
+
? "/envoy.service.load_stats.v3.LoadReportingService/StreamLoadStats"
|
1465
|
+
: "/envoy.service.load_stats.v2.LoadReportingService/StreamLoadStats";
|
1543
1466
|
call_ = grpc_channel_create_pollset_set_call(
|
1544
1467
|
chand()->channel_, nullptr, GRPC_PROPAGATE_DEFAULTS,
|
1545
|
-
xds_client()->interested_parties_,
|
1546
|
-
|
1468
|
+
xds_client()->interested_parties_,
|
1469
|
+
Slice::FromStaticString(method).c_slice(), nullptr,
|
1470
|
+
Timestamp::InfFuture(), nullptr);
|
1547
1471
|
GPR_ASSERT(call_ != nullptr);
|
1548
1472
|
// Init the request payload.
|
1549
1473
|
grpc_slice request_payload_slice =
|
@@ -1556,10 +1480,10 @@ XdsClient::ChannelState::LrsCallState::LrsCallState(
|
|
1556
1480
|
grpc_metadata_array_init(&trailing_metadata_recv_);
|
1557
1481
|
// Start the call.
|
1558
1482
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
1559
|
-
gpr_log(
|
1560
|
-
|
1561
|
-
|
1562
|
-
|
1483
|
+
gpr_log(
|
1484
|
+
GPR_INFO,
|
1485
|
+
"[xds_client %p] xds server %s: starting LRS call (calld=%p, call=%p)",
|
1486
|
+
xds_client(), chand()->server_.server_uri.c_str(), this, call_);
|
1563
1487
|
}
|
1564
1488
|
// Create the ops.
|
1565
1489
|
grpc_call_error call_error;
|
@@ -1713,14 +1637,15 @@ bool XdsClient::ChannelState::LrsCallState::OnResponseReceivedLocked() {
|
|
1713
1637
|
// Parse the response.
|
1714
1638
|
bool send_all_clusters = false;
|
1715
1639
|
std::set<std::string> new_cluster_names;
|
1716
|
-
|
1640
|
+
Duration new_load_reporting_interval;
|
1717
1641
|
grpc_error_handle parse_error = xds_client()->api_.ParseLrsResponse(
|
1718
1642
|
response_slice, &send_all_clusters, &new_cluster_names,
|
1719
1643
|
&new_load_reporting_interval);
|
1720
1644
|
if (parse_error != GRPC_ERROR_NONE) {
|
1721
1645
|
gpr_log(GPR_ERROR,
|
1722
|
-
"[xds_client %p] LRS response parsing failed
|
1723
|
-
xds_client(),
|
1646
|
+
"[xds_client %p] xds server %s: LRS response parsing failed: %s",
|
1647
|
+
xds_client(), chand()->server_.server_uri.c_str(),
|
1648
|
+
grpc_error_std_string(parse_error).c_str());
|
1724
1649
|
GRPC_ERROR_UNREF(parse_error);
|
1725
1650
|
return;
|
1726
1651
|
}
|
@@ -1728,11 +1653,12 @@ bool XdsClient::ChannelState::LrsCallState::OnResponseReceivedLocked() {
|
|
1728
1653
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
1729
1654
|
gpr_log(
|
1730
1655
|
GPR_INFO,
|
1731
|
-
"[xds_client %p] LRS response received, %" PRIuPTR
|
1656
|
+
"[xds_client %p] xds server %s: LRS response received, %" PRIuPTR
|
1732
1657
|
" cluster names, send_all_clusters=%d, load_report_interval=%" PRId64
|
1733
1658
|
"ms",
|
1734
|
-
xds_client(),
|
1735
|
-
|
1659
|
+
xds_client(), chand()->server_.server_uri.c_str(),
|
1660
|
+
new_cluster_names.size(), send_all_clusters,
|
1661
|
+
new_load_reporting_interval.millis());
|
1736
1662
|
size_t i = 0;
|
1737
1663
|
for (const auto& name : new_cluster_names) {
|
1738
1664
|
gpr_log(GPR_INFO, "[xds_client %p] cluster_name %" PRIuPTR ": %s",
|
@@ -1740,14 +1666,16 @@ bool XdsClient::ChannelState::LrsCallState::OnResponseReceivedLocked() {
|
|
1740
1666
|
}
|
1741
1667
|
}
|
1742
1668
|
if (new_load_reporting_interval <
|
1743
|
-
|
1744
|
-
|
1745
|
-
|
1669
|
+
Duration::Milliseconds(
|
1670
|
+
GRPC_XDS_MIN_CLIENT_LOAD_REPORTING_INTERVAL_MS)) {
|
1671
|
+
new_load_reporting_interval = Duration::Milliseconds(
|
1672
|
+
GRPC_XDS_MIN_CLIENT_LOAD_REPORTING_INTERVAL_MS);
|
1746
1673
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
1747
1674
|
gpr_log(GPR_INFO,
|
1748
|
-
"[xds_client %p]
|
1749
|
-
"value %dms",
|
1750
|
-
xds_client(),
|
1675
|
+
"[xds_client %p] xds server %s: increased load_report_interval "
|
1676
|
+
"to minimum value %dms",
|
1677
|
+
xds_client(), chand()->server_.server_uri.c_str(),
|
1678
|
+
GRPC_XDS_MIN_CLIENT_LOAD_REPORTING_INTERVAL_MS);
|
1751
1679
|
}
|
1752
1680
|
}
|
1753
1681
|
// Ignore identical update.
|
@@ -1755,10 +1683,11 @@ bool XdsClient::ChannelState::LrsCallState::OnResponseReceivedLocked() {
|
|
1755
1683
|
cluster_names_ == new_cluster_names &&
|
1756
1684
|
load_reporting_interval_ == new_load_reporting_interval) {
|
1757
1685
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
1758
|
-
gpr_log(
|
1759
|
-
|
1760
|
-
|
1761
|
-
|
1686
|
+
gpr_log(
|
1687
|
+
GPR_INFO,
|
1688
|
+
"[xds_client %p] xds server %s: incoming LRS response identical "
|
1689
|
+
"to current, ignoring.",
|
1690
|
+
xds_client(), chand()->server_.server_uri.c_str());
|
1762
1691
|
}
|
1763
1692
|
return;
|
1764
1693
|
}
|
@@ -1804,15 +1733,16 @@ void XdsClient::ChannelState::LrsCallState::OnStatusReceivedLocked(
|
|
1804
1733
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
1805
1734
|
char* status_details = grpc_slice_to_c_string(status_details_);
|
1806
1735
|
gpr_log(GPR_INFO,
|
1807
|
-
"[xds_client %p] LRS call status received
|
1808
|
-
"
|
1809
|
-
|
1736
|
+
"[xds_client %p] xds server %s: LRS call status received "
|
1737
|
+
"(chand=%p, calld=%p, call=%p): "
|
1738
|
+
"status=%d, details='%s', error='%s'",
|
1739
|
+
xds_client(), chand()->server_.server_uri.c_str(), chand(), this,
|
1740
|
+
call_, status_code_, status_details,
|
1810
1741
|
grpc_error_std_string(error).c_str());
|
1811
1742
|
gpr_free(status_details);
|
1812
1743
|
}
|
1813
1744
|
// Ignore status from a stale call.
|
1814
1745
|
if (IsCurrentCallOnChannel()) {
|
1815
|
-
GPR_ASSERT(!xds_client()->shutting_down_);
|
1816
1746
|
// Try to restart the call.
|
1817
1747
|
parent_->OnCallFinishedLocked();
|
1818
1748
|
}
|
@@ -1832,19 +1762,17 @@ bool XdsClient::ChannelState::LrsCallState::IsCurrentCallOnChannel() const {
|
|
1832
1762
|
|
1833
1763
|
namespace {
|
1834
1764
|
|
1835
|
-
|
1836
|
-
return grpc_channel_args_find_integer(
|
1765
|
+
Duration GetRequestTimeout(const grpc_channel_args* args) {
|
1766
|
+
return Duration::Milliseconds(grpc_channel_args_find_integer(
|
1837
1767
|
args, GRPC_ARG_XDS_RESOURCE_DOES_NOT_EXIST_TIMEOUT_MS,
|
1838
|
-
{15000, 0, INT_MAX});
|
1768
|
+
{15000, 0, INT_MAX}));
|
1839
1769
|
}
|
1840
1770
|
|
1841
1771
|
grpc_channel_args* ModifyChannelArgs(const grpc_channel_args* args) {
|
1842
|
-
absl::InlinedVector<grpc_arg,
|
1772
|
+
absl::InlinedVector<grpc_arg, 1> args_to_add = {
|
1843
1773
|
grpc_channel_arg_integer_create(
|
1844
1774
|
const_cast<char*>(GRPC_ARG_KEEPALIVE_TIME_MS),
|
1845
1775
|
5 * 60 * GPR_MS_PER_SEC),
|
1846
|
-
grpc_channel_arg_integer_create(
|
1847
|
-
const_cast<char*>(GRPC_ARG_CHANNELZ_IS_INTERNAL_CHANNEL), 1),
|
1848
1776
|
};
|
1849
1777
|
return grpc_channel_args_copy_and_add(args, args_to_add.data(),
|
1850
1778
|
args_to_add.size());
|
@@ -1860,17 +1788,18 @@ XdsClient::XdsClient(std::unique_ptr<XdsBootstrap> bootstrap,
|
|
1860
1788
|
bootstrap_(std::move(bootstrap)),
|
1861
1789
|
args_(ModifyChannelArgs(args)),
|
1862
1790
|
request_timeout_(GetRequestTimeout(args)),
|
1791
|
+
xds_federation_enabled_(XdsFederationEnabled()),
|
1863
1792
|
interested_parties_(grpc_pollset_set_create()),
|
1864
1793
|
certificate_provider_store_(MakeOrphanable<CertificateProviderStore>(
|
1865
1794
|
bootstrap_->certificate_providers())),
|
1866
1795
|
api_(this, &grpc_xds_client_trace, bootstrap_->node(),
|
1867
|
-
&bootstrap_->certificate_providers()) {
|
1796
|
+
&bootstrap_->certificate_providers(), &symtab_) {
|
1868
1797
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
1869
1798
|
gpr_log(GPR_INFO, "[xds_client %p] creating xds client", this);
|
1870
1799
|
}
|
1871
|
-
//
|
1872
|
-
|
1873
|
-
|
1800
|
+
// Calling grpc_init to ensure gRPC does not shut down until the XdsClient is
|
1801
|
+
// destroyed.
|
1802
|
+
grpc_init();
|
1874
1803
|
}
|
1875
1804
|
|
1876
1805
|
XdsClient::~XdsClient() {
|
@@ -1879,26 +1808,9 @@ XdsClient::~XdsClient() {
|
|
1879
1808
|
}
|
1880
1809
|
grpc_channel_args_destroy(args_);
|
1881
1810
|
grpc_pollset_set_destroy(interested_parties_);
|
1882
|
-
|
1883
|
-
|
1884
|
-
|
1885
|
-
channelz::ChannelNode* parent_channelz_node) {
|
1886
|
-
MutexLock lock(&mu_);
|
1887
|
-
channelz::ChannelNode* xds_channelz_node =
|
1888
|
-
grpc_channel_get_channelz_node(chand_->channel());
|
1889
|
-
if (xds_channelz_node != nullptr) {
|
1890
|
-
parent_channelz_node->AddChildChannel(xds_channelz_node->uuid());
|
1891
|
-
}
|
1892
|
-
}
|
1893
|
-
|
1894
|
-
void XdsClient::RemoveChannelzLinkage(
|
1895
|
-
channelz::ChannelNode* parent_channelz_node) {
|
1896
|
-
MutexLock lock(&mu_);
|
1897
|
-
channelz::ChannelNode* xds_channelz_node =
|
1898
|
-
grpc_channel_get_channelz_node(chand_->channel());
|
1899
|
-
if (xds_channelz_node != nullptr) {
|
1900
|
-
parent_channelz_node->RemoveChildChannel(xds_channelz_node->uuid());
|
1901
|
-
}
|
1811
|
+
// Calling grpc_shutdown to ensure gRPC does not shut down until the XdsClient
|
1812
|
+
// is destroyed.
|
1813
|
+
grpc_shutdown();
|
1902
1814
|
}
|
1903
1815
|
|
1904
1816
|
void XdsClient::Orphan() {
|
@@ -1912,191 +1824,225 @@ void XdsClient::Orphan() {
|
|
1912
1824
|
{
|
1913
1825
|
MutexLock lock(&mu_);
|
1914
1826
|
shutting_down_ = true;
|
1915
|
-
//
|
1916
|
-
|
1917
|
-
|
1918
|
-
|
1919
|
-
|
1920
|
-
|
1921
|
-
|
1922
|
-
|
1923
|
-
|
1924
|
-
|
1925
|
-
|
1926
|
-
|
1927
|
-
|
1928
|
-
|
1929
|
-
|
1930
|
-
|
1931
|
-
|
1932
|
-
|
1933
|
-
|
1934
|
-
|
1935
|
-
|
1936
|
-
|
1937
|
-
|
1938
|
-
//
|
1939
|
-
|
1940
|
-
|
1941
|
-
|
1942
|
-
|
1943
|
-
|
1944
|
-
}
|
1945
|
-
|
1946
|
-
|
1947
|
-
|
1948
|
-
|
1949
|
-
|
1950
|
-
|
1951
|
-
|
1952
|
-
|
1953
|
-
|
1954
|
-
if (
|
1955
|
-
|
1956
|
-
|
1957
|
-
|
1958
|
-
if (it != listener_state.watchers.end()) {
|
1959
|
-
listener_state.watchers.erase(it);
|
1960
|
-
if (listener_state.watchers.empty()) {
|
1961
|
-
listener_map_.erase(listener_name_str);
|
1962
|
-
chand_->UnsubscribeLocked(XdsApi::kLdsTypeUrl, listener_name_str,
|
1963
|
-
delay_unsubscription);
|
1964
|
-
}
|
1827
|
+
// Clear cache and any remaining watchers that may not have been cancelled.
|
1828
|
+
authority_state_map_.clear();
|
1829
|
+
invalid_watchers_.clear();
|
1830
|
+
}
|
1831
|
+
}
|
1832
|
+
|
1833
|
+
RefCountedPtr<XdsClient::ChannelState> XdsClient::GetOrCreateChannelStateLocked(
|
1834
|
+
const XdsBootstrap::XdsServer& server) {
|
1835
|
+
auto it = xds_server_channel_map_.find(server);
|
1836
|
+
if (it != xds_server_channel_map_.end()) {
|
1837
|
+
return it->second->Ref(DEBUG_LOCATION, "Authority");
|
1838
|
+
}
|
1839
|
+
// Channel not found, so create a new one.
|
1840
|
+
auto channel_state = MakeRefCounted<ChannelState>(
|
1841
|
+
WeakRef(DEBUG_LOCATION, "ChannelState"), server);
|
1842
|
+
xds_server_channel_map_[server] = channel_state.get();
|
1843
|
+
return channel_state;
|
1844
|
+
}
|
1845
|
+
|
1846
|
+
void XdsClient::WatchResource(const XdsResourceType* type,
|
1847
|
+
absl::string_view name,
|
1848
|
+
RefCountedPtr<ResourceWatcherInterface> watcher) {
|
1849
|
+
ResourceWatcherInterface* w = watcher.get();
|
1850
|
+
// Lambda for handling failure cases.
|
1851
|
+
auto fail = [&](absl::Status status) mutable {
|
1852
|
+
{
|
1853
|
+
MutexLock lock(&mu_);
|
1854
|
+
MaybeRegisterResourceTypeLocked(type);
|
1855
|
+
invalid_watchers_[w] = watcher;
|
1856
|
+
}
|
1857
|
+
work_serializer_.Run(
|
1858
|
+
// TODO(yashykt): When we move to C++14, capture watcher using
|
1859
|
+
// std::move()
|
1860
|
+
[watcher, status]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(&work_serializer_) {
|
1861
|
+
watcher->OnError(status);
|
1862
|
+
},
|
1863
|
+
DEBUG_LOCATION);
|
1864
|
+
};
|
1865
|
+
auto resource_name = ParseXdsResourceName(name, type);
|
1866
|
+
if (!resource_name.ok()) {
|
1867
|
+
fail(absl::UnavailableError(absl::StrFormat(
|
1868
|
+
"Unable to parse resource name for listener %s", name)));
|
1869
|
+
return;
|
1965
1870
|
}
|
1966
|
-
|
1967
|
-
|
1968
|
-
|
1969
|
-
|
1970
|
-
std::
|
1971
|
-
|
1972
|
-
|
1973
|
-
|
1974
|
-
|
1975
|
-
|
1976
|
-
route_config_state.watchers[w] = std::move(watcher);
|
1977
|
-
// If we've already received an RDS update, notify the new watcher
|
1978
|
-
// immediately.
|
1979
|
-
if (route_config_state.update.has_value()) {
|
1980
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
1981
|
-
gpr_log(GPR_INFO,
|
1982
|
-
"[xds_client %p] returning cached route config data for %s", this,
|
1983
|
-
route_config_name_str.c_str());
|
1871
|
+
// Find server to use.
|
1872
|
+
const XdsBootstrap::XdsServer* xds_server = nullptr;
|
1873
|
+
absl::string_view authority_name = resource_name->authority;
|
1874
|
+
if (absl::ConsumePrefix(&authority_name, "xdstp:")) {
|
1875
|
+
auto* authority = bootstrap_->LookupAuthority(std::string(authority_name));
|
1876
|
+
if (authority == nullptr) {
|
1877
|
+
fail(absl::UnavailableError(
|
1878
|
+
absl::StrCat("authority \"", authority_name,
|
1879
|
+
"\" not present in bootstrap config")));
|
1880
|
+
return;
|
1984
1881
|
}
|
1985
|
-
|
1986
|
-
|
1987
|
-
chand_->SubscribeLocked(XdsApi::kRdsTypeUrl, route_config_name_str);
|
1988
|
-
}
|
1989
|
-
|
1990
|
-
void XdsClient::CancelRouteConfigDataWatch(absl::string_view route_config_name,
|
1991
|
-
RouteConfigWatcherInterface* watcher,
|
1992
|
-
bool delay_unsubscription) {
|
1993
|
-
MutexLock lock(&mu_);
|
1994
|
-
if (shutting_down_) return;
|
1995
|
-
std::string route_config_name_str = std::string(route_config_name);
|
1996
|
-
RouteConfigState& route_config_state =
|
1997
|
-
route_config_map_[route_config_name_str];
|
1998
|
-
auto it = route_config_state.watchers.find(watcher);
|
1999
|
-
if (it != route_config_state.watchers.end()) {
|
2000
|
-
route_config_state.watchers.erase(it);
|
2001
|
-
if (route_config_state.watchers.empty()) {
|
2002
|
-
route_config_map_.erase(route_config_name_str);
|
2003
|
-
chand_->UnsubscribeLocked(XdsApi::kRdsTypeUrl, route_config_name_str,
|
2004
|
-
delay_unsubscription);
|
1882
|
+
if (!authority->xds_servers.empty()) {
|
1883
|
+
xds_server = &authority->xds_servers[0];
|
2005
1884
|
}
|
2006
1885
|
}
|
2007
|
-
|
2008
|
-
|
2009
|
-
|
2010
|
-
|
2011
|
-
|
2012
|
-
|
1886
|
+
if (xds_server == nullptr) xds_server = &bootstrap_->server();
|
1887
|
+
{
|
1888
|
+
MutexLock lock(&mu_);
|
1889
|
+
MaybeRegisterResourceTypeLocked(type);
|
1890
|
+
AuthorityState& authority_state =
|
1891
|
+
authority_state_map_[resource_name->authority];
|
1892
|
+
ResourceState& resource_state =
|
1893
|
+
authority_state.resource_map[type][resource_name->key];
|
1894
|
+
resource_state.watchers[w] = watcher;
|
1895
|
+
// If we already have a cached value for the resource, notify the new
|
1896
|
+
// watcher immediately.
|
1897
|
+
if (resource_state.resource != nullptr) {
|
1898
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
1899
|
+
gpr_log(GPR_INFO,
|
1900
|
+
"[xds_client %p] returning cached listener data for %s", this,
|
1901
|
+
std::string(name).c_str());
|
1902
|
+
}
|
1903
|
+
auto* value = type->CopyResource(resource_state.resource.get()).release();
|
1904
|
+
work_serializer_.Schedule(
|
1905
|
+
[watcher, value]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(&work_serializer_) {
|
1906
|
+
watcher->OnGenericResourceChanged(value);
|
1907
|
+
delete value;
|
1908
|
+
},
|
1909
|
+
DEBUG_LOCATION);
|
1910
|
+
}
|
1911
|
+
// If the authority doesn't yet have a channel, set it, creating it if
|
1912
|
+
// needed.
|
1913
|
+
if (authority_state.channel_state == nullptr) {
|
1914
|
+
authority_state.channel_state =
|
1915
|
+
GetOrCreateChannelStateLocked(*xds_server);
|
1916
|
+
}
|
1917
|
+
authority_state.channel_state->SubscribeLocked(type, *resource_name);
|
1918
|
+
}
|
1919
|
+
work_serializer_.DrainQueue();
|
1920
|
+
}
|
1921
|
+
|
1922
|
+
void XdsClient::CancelResourceWatch(const XdsResourceType* type,
|
1923
|
+
absl::string_view name,
|
1924
|
+
ResourceWatcherInterface* watcher,
|
1925
|
+
bool delay_unsubscription) {
|
1926
|
+
auto resource_name = ParseXdsResourceName(name, type);
|
2013
1927
|
MutexLock lock(&mu_);
|
2014
|
-
|
2015
|
-
|
2016
|
-
|
2017
|
-
// If we've already received a CDS update, notify the new watcher
|
2018
|
-
// immediately.
|
2019
|
-
if (cluster_state.update.has_value()) {
|
2020
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
2021
|
-
gpr_log(GPR_INFO, "[xds_client %p] returning cached cluster data for %s",
|
2022
|
-
this, cluster_name_str.c_str());
|
2023
|
-
}
|
2024
|
-
w->OnClusterChanged(cluster_state.update.value());
|
1928
|
+
if (!resource_name.ok()) {
|
1929
|
+
invalid_watchers_.erase(watcher);
|
1930
|
+
return;
|
2025
1931
|
}
|
2026
|
-
chand_->SubscribeLocked(XdsApi::kCdsTypeUrl, cluster_name_str);
|
2027
|
-
}
|
2028
|
-
|
2029
|
-
void XdsClient::CancelClusterDataWatch(absl::string_view cluster_name,
|
2030
|
-
ClusterWatcherInterface* watcher,
|
2031
|
-
bool delay_unsubscription) {
|
2032
|
-
MutexLock lock(&mu_);
|
2033
1932
|
if (shutting_down_) return;
|
2034
|
-
|
2035
|
-
|
2036
|
-
auto
|
2037
|
-
if (
|
2038
|
-
|
2039
|
-
|
2040
|
-
|
2041
|
-
|
2042
|
-
|
2043
|
-
|
2044
|
-
|
2045
|
-
|
2046
|
-
|
2047
|
-
|
2048
|
-
|
2049
|
-
|
2050
|
-
|
2051
|
-
|
2052
|
-
|
2053
|
-
|
2054
|
-
|
2055
|
-
|
2056
|
-
|
2057
|
-
|
2058
|
-
|
2059
|
-
gpr_log(GPR_INFO, "[xds_client %p] returning cached endpoint data for %s",
|
2060
|
-
this, eds_service_name_str.c_str());
|
1933
|
+
// Find authority.
|
1934
|
+
if (!resource_name.ok()) return;
|
1935
|
+
auto authority_it = authority_state_map_.find(resource_name->authority);
|
1936
|
+
if (authority_it == authority_state_map_.end()) return;
|
1937
|
+
AuthorityState& authority_state = authority_it->second;
|
1938
|
+
// Find type map.
|
1939
|
+
auto type_it = authority_state.resource_map.find(type);
|
1940
|
+
if (type_it == authority_state.resource_map.end()) return;
|
1941
|
+
auto& type_map = type_it->second;
|
1942
|
+
// Find resource key.
|
1943
|
+
auto resource_it = type_map.find(resource_name->key);
|
1944
|
+
if (resource_it == type_map.end()) return;
|
1945
|
+
ResourceState& resource_state = resource_it->second;
|
1946
|
+
// Remove watcher.
|
1947
|
+
resource_state.watchers.erase(watcher);
|
1948
|
+
// Clean up empty map entries, if any.
|
1949
|
+
if (resource_state.watchers.empty()) {
|
1950
|
+
authority_state.channel_state->UnsubscribeLocked(type, *resource_name,
|
1951
|
+
delay_unsubscription);
|
1952
|
+
type_map.erase(resource_it);
|
1953
|
+
if (type_map.empty()) {
|
1954
|
+
authority_state.resource_map.erase(type_it);
|
1955
|
+
if (authority_state.resource_map.empty()) {
|
1956
|
+
authority_state.channel_state.reset();
|
1957
|
+
}
|
2061
1958
|
}
|
2062
|
-
w->OnEndpointChanged(endpoint_state.update.value());
|
2063
1959
|
}
|
2064
|
-
chand_->SubscribeLocked(XdsApi::kEdsTypeUrl, eds_service_name_str);
|
2065
1960
|
}
|
2066
1961
|
|
2067
|
-
void XdsClient::
|
2068
|
-
|
2069
|
-
|
2070
|
-
|
2071
|
-
|
2072
|
-
|
2073
|
-
EndpointState& endpoint_state = endpoint_map_[eds_service_name_str];
|
2074
|
-
auto it = endpoint_state.watchers.find(watcher);
|
2075
|
-
if (it != endpoint_state.watchers.end()) {
|
2076
|
-
endpoint_state.watchers.erase(it);
|
2077
|
-
if (endpoint_state.watchers.empty()) {
|
2078
|
-
endpoint_map_.erase(eds_service_name_str);
|
2079
|
-
chand_->UnsubscribeLocked(XdsApi::kEdsTypeUrl, eds_service_name_str,
|
2080
|
-
delay_unsubscription);
|
2081
|
-
}
|
1962
|
+
void XdsClient::MaybeRegisterResourceTypeLocked(
|
1963
|
+
const XdsResourceType* resource_type) {
|
1964
|
+
auto it = resource_types_.find(resource_type->type_url());
|
1965
|
+
if (it != resource_types_.end()) {
|
1966
|
+
GPR_ASSERT(it->second == resource_type);
|
1967
|
+
return;
|
2082
1968
|
}
|
1969
|
+
resource_types_.emplace(resource_type->type_url(), resource_type);
|
1970
|
+
v2_resource_types_.emplace(resource_type->v2_type_url(), resource_type);
|
1971
|
+
resource_type->InitUpbSymtab(symtab_.ptr());
|
1972
|
+
}
|
1973
|
+
|
1974
|
+
const XdsResourceType* XdsClient::GetResourceTypeLocked(
|
1975
|
+
absl::string_view resource_type) {
|
1976
|
+
auto it = resource_types_.find(resource_type);
|
1977
|
+
if (it != resource_types_.end()) return it->second;
|
1978
|
+
auto it2 = v2_resource_types_.find(resource_type);
|
1979
|
+
if (it2 != v2_resource_types_.end()) return it2->second;
|
1980
|
+
return nullptr;
|
1981
|
+
}
|
1982
|
+
|
1983
|
+
absl::StatusOr<XdsClient::XdsResourceName> XdsClient::ParseXdsResourceName(
|
1984
|
+
absl::string_view name, const XdsResourceType* type) {
|
1985
|
+
// Old-style names use the empty string for authority.
|
1986
|
+
// authority is prefixed with "old:" to indicate that it's an old-style name.
|
1987
|
+
if (!xds_federation_enabled_ || !absl::StartsWith(name, "xdstp:")) {
|
1988
|
+
return XdsResourceName{"old:", {std::string(name), {}}};
|
1989
|
+
}
|
1990
|
+
// New style name. Parse URI.
|
1991
|
+
auto uri = URI::Parse(name);
|
1992
|
+
if (!uri.ok()) return uri.status();
|
1993
|
+
// Split the resource type off of the path to get the id.
|
1994
|
+
std::pair<absl::string_view, absl::string_view> path_parts = absl::StrSplit(
|
1995
|
+
absl::StripPrefix(uri->path(), "/"), absl::MaxSplits('/', 1));
|
1996
|
+
if (!type->IsType(path_parts.first, nullptr)) {
|
1997
|
+
return absl::InvalidArgumentError(
|
1998
|
+
"xdstp URI path must indicate valid xDS resource type");
|
1999
|
+
}
|
2000
|
+
// Canonicalize order of query params.
|
2001
|
+
std::vector<URI::QueryParam> query_params;
|
2002
|
+
for (const auto& p : uri->query_parameter_map()) {
|
2003
|
+
query_params.emplace_back(
|
2004
|
+
URI::QueryParam{std::string(p.first), std::string(p.second)});
|
2005
|
+
}
|
2006
|
+
return XdsResourceName{
|
2007
|
+
absl::StrCat("xdstp:", uri->authority()),
|
2008
|
+
{std::string(path_parts.second), std::move(query_params)}};
|
2009
|
+
}
|
2010
|
+
|
2011
|
+
std::string XdsClient::ConstructFullXdsResourceName(
|
2012
|
+
absl::string_view authority, absl::string_view resource_type,
|
2013
|
+
const XdsResourceKey& key) {
|
2014
|
+
if (absl::ConsumePrefix(&authority, "xdstp:")) {
|
2015
|
+
auto uri = URI::Create("xdstp", std::string(authority),
|
2016
|
+
absl::StrCat("/", resource_type, "/", key.id),
|
2017
|
+
key.query_params, /*fragment=*/"");
|
2018
|
+
GPR_ASSERT(uri.ok());
|
2019
|
+
return uri->ToString();
|
2020
|
+
}
|
2021
|
+
// Old-style name.
|
2022
|
+
return key.id;
|
2083
2023
|
}
|
2084
2024
|
|
2085
2025
|
RefCountedPtr<XdsClusterDropStats> XdsClient::AddClusterDropStats(
|
2086
|
-
|
2026
|
+
const XdsBootstrap::XdsServer& xds_server, absl::string_view cluster_name,
|
2087
2027
|
absl::string_view eds_service_name) {
|
2088
|
-
|
2089
|
-
// server name specified in lrs_server.
|
2028
|
+
if (!bootstrap_->XdsServerExists(xds_server)) return nullptr;
|
2090
2029
|
auto key =
|
2091
2030
|
std::make_pair(std::string(cluster_name), std::string(eds_service_name));
|
2092
2031
|
MutexLock lock(&mu_);
|
2093
|
-
// We jump through some hoops here to make sure that the
|
2094
|
-
//
|
2032
|
+
// We jump through some hoops here to make sure that the const
|
2033
|
+
// XdsBootstrap::XdsServer& and absl::string_views
|
2034
|
+
// stored in the XdsClusterDropStats object point to the
|
2035
|
+
// XdsBootstrap::XdsServer and strings
|
2095
2036
|
// in the load_report_map_ key, so that they have the same lifetime.
|
2096
|
-
auto
|
2097
|
-
|
2098
|
-
|
2099
|
-
|
2037
|
+
auto server_it =
|
2038
|
+
xds_load_report_server_map_.emplace(xds_server, LoadReportServer()).first;
|
2039
|
+
if (server_it->second.channel_state == nullptr) {
|
2040
|
+
server_it->second.channel_state = GetOrCreateChannelStateLocked(xds_server);
|
2041
|
+
}
|
2042
|
+
auto load_report_it = server_it->second.load_report_map
|
2043
|
+
.emplace(std::move(key), LoadReportState())
|
2044
|
+
.first;
|
2045
|
+
LoadReportState& load_report_state = load_report_it->second;
|
2100
2046
|
RefCountedPtr<XdsClusterDropStats> cluster_drop_stats;
|
2101
2047
|
if (load_report_state.drop_stats != nullptr) {
|
2102
2048
|
cluster_drop_stats = load_report_state.drop_stats->RefIfNonZero();
|
@@ -2107,26 +2053,26 @@ RefCountedPtr<XdsClusterDropStats> XdsClient::AddClusterDropStats(
|
|
2107
2053
|
load_report_state.drop_stats->GetSnapshotAndReset();
|
2108
2054
|
}
|
2109
2055
|
cluster_drop_stats = MakeRefCounted<XdsClusterDropStats>(
|
2110
|
-
Ref(DEBUG_LOCATION, "DropStats"),
|
2111
|
-
|
2112
|
-
|
2056
|
+
Ref(DEBUG_LOCATION, "DropStats"), server_it->first,
|
2057
|
+
load_report_it->first.first /*cluster_name*/,
|
2058
|
+
load_report_it->first.second /*eds_service_name*/);
|
2113
2059
|
load_report_state.drop_stats = cluster_drop_stats.get();
|
2114
2060
|
}
|
2115
|
-
|
2061
|
+
server_it->second.channel_state->MaybeStartLrsCall();
|
2116
2062
|
return cluster_drop_stats;
|
2117
2063
|
}
|
2118
2064
|
|
2119
2065
|
void XdsClient::RemoveClusterDropStats(
|
2120
|
-
|
2066
|
+
const XdsBootstrap::XdsServer& xds_server, absl::string_view cluster_name,
|
2121
2067
|
absl::string_view eds_service_name,
|
2122
2068
|
XdsClusterDropStats* cluster_drop_stats) {
|
2123
2069
|
MutexLock lock(&mu_);
|
2124
|
-
|
2125
|
-
|
2126
|
-
auto
|
2070
|
+
auto server_it = xds_load_report_server_map_.find(xds_server);
|
2071
|
+
if (server_it == xds_load_report_server_map_.end()) return;
|
2072
|
+
auto load_report_it = server_it->second.load_report_map.find(
|
2127
2073
|
std::make_pair(std::string(cluster_name), std::string(eds_service_name)));
|
2128
|
-
if (
|
2129
|
-
LoadReportState& load_report_state =
|
2074
|
+
if (load_report_it == server_it->second.load_report_map.end()) return;
|
2075
|
+
LoadReportState& load_report_state = load_report_it->second;
|
2130
2076
|
if (load_report_state.drop_stats == cluster_drop_stats) {
|
2131
2077
|
// Record final snapshot in deleted_drop_stats, which will be
|
2132
2078
|
// added to the next load report.
|
@@ -2137,21 +2083,27 @@ void XdsClient::RemoveClusterDropStats(
|
|
2137
2083
|
}
|
2138
2084
|
|
2139
2085
|
RefCountedPtr<XdsClusterLocalityStats> XdsClient::AddClusterLocalityStats(
|
2140
|
-
|
2086
|
+
const XdsBootstrap::XdsServer& xds_server, absl::string_view cluster_name,
|
2141
2087
|
absl::string_view eds_service_name,
|
2142
2088
|
RefCountedPtr<XdsLocalityName> locality) {
|
2143
|
-
|
2144
|
-
// server name specified in lrs_server.
|
2089
|
+
if (!bootstrap_->XdsServerExists(xds_server)) return nullptr;
|
2145
2090
|
auto key =
|
2146
2091
|
std::make_pair(std::string(cluster_name), std::string(eds_service_name));
|
2147
2092
|
MutexLock lock(&mu_);
|
2148
|
-
// We jump through some hoops here to make sure that the
|
2149
|
-
//
|
2093
|
+
// We jump through some hoops here to make sure that the const
|
2094
|
+
// XdsBootstrap::XdsServer& and absl::string_views
|
2095
|
+
// stored in the XdsClusterDropStats object point to the
|
2096
|
+
// XdsBootstrap::XdsServer and strings
|
2150
2097
|
// in the load_report_map_ key, so that they have the same lifetime.
|
2151
|
-
auto
|
2152
|
-
|
2153
|
-
|
2154
|
-
|
2098
|
+
auto server_it =
|
2099
|
+
xds_load_report_server_map_.emplace(xds_server, LoadReportServer()).first;
|
2100
|
+
if (server_it->second.channel_state == nullptr) {
|
2101
|
+
server_it->second.channel_state = GetOrCreateChannelStateLocked(xds_server);
|
2102
|
+
}
|
2103
|
+
auto load_report_it = server_it->second.load_report_map
|
2104
|
+
.emplace(std::move(key), LoadReportState())
|
2105
|
+
.first;
|
2106
|
+
LoadReportState& load_report_state = load_report_it->second;
|
2155
2107
|
LoadReportState::LocalityState& locality_state =
|
2156
2108
|
load_report_state.locality_stats[locality];
|
2157
2109
|
RefCountedPtr<XdsClusterLocalityStats> cluster_locality_stats;
|
@@ -2164,27 +2116,27 @@ RefCountedPtr<XdsClusterLocalityStats> XdsClient::AddClusterLocalityStats(
|
|
2164
2116
|
locality_state.locality_stats->GetSnapshotAndReset();
|
2165
2117
|
}
|
2166
2118
|
cluster_locality_stats = MakeRefCounted<XdsClusterLocalityStats>(
|
2167
|
-
Ref(DEBUG_LOCATION, "LocalityStats"),
|
2168
|
-
|
2169
|
-
std::move(locality));
|
2119
|
+
Ref(DEBUG_LOCATION, "LocalityStats"), server_it->first,
|
2120
|
+
load_report_it->first.first /*cluster_name*/,
|
2121
|
+
load_report_it->first.second /*eds_service_name*/, std::move(locality));
|
2170
2122
|
locality_state.locality_stats = cluster_locality_stats.get();
|
2171
2123
|
}
|
2172
|
-
|
2124
|
+
server_it->second.channel_state->MaybeStartLrsCall();
|
2173
2125
|
return cluster_locality_stats;
|
2174
2126
|
}
|
2175
2127
|
|
2176
2128
|
void XdsClient::RemoveClusterLocalityStats(
|
2177
|
-
|
2129
|
+
const XdsBootstrap::XdsServer& xds_server, absl::string_view cluster_name,
|
2178
2130
|
absl::string_view eds_service_name,
|
2179
2131
|
const RefCountedPtr<XdsLocalityName>& locality,
|
2180
2132
|
XdsClusterLocalityStats* cluster_locality_stats) {
|
2181
2133
|
MutexLock lock(&mu_);
|
2182
|
-
|
2183
|
-
|
2184
|
-
auto
|
2134
|
+
auto server_it = xds_load_report_server_map_.find(xds_server);
|
2135
|
+
if (server_it == xds_load_report_server_map_.end()) return;
|
2136
|
+
auto load_report_it = server_it->second.load_report_map.find(
|
2185
2137
|
std::make_pair(std::string(cluster_name), std::string(eds_service_name)));
|
2186
|
-
if (
|
2187
|
-
LoadReportState& load_report_state =
|
2138
|
+
if (load_report_it == server_it->second.load_report_map.end()) return;
|
2139
|
+
LoadReportState& load_report_state = load_report_it->second;
|
2188
2140
|
auto locality_it = load_report_state.locality_stats.find(locality);
|
2189
2141
|
if (locality_it == load_report_state.locality_stats.end()) return;
|
2190
2142
|
LoadReportState::LocalityState& locality_state = locality_it->second;
|
@@ -2199,47 +2151,82 @@ void XdsClient::RemoveClusterLocalityStats(
|
|
2199
2151
|
|
2200
2152
|
void XdsClient::ResetBackoff() {
|
2201
2153
|
MutexLock lock(&mu_);
|
2202
|
-
|
2203
|
-
grpc_channel_reset_connect_backoff(
|
2154
|
+
for (auto& p : xds_server_channel_map_) {
|
2155
|
+
grpc_channel_reset_connect_backoff(p.second->channel());
|
2204
2156
|
}
|
2205
2157
|
}
|
2206
2158
|
|
2207
|
-
void XdsClient::NotifyOnErrorLocked(
|
2208
|
-
|
2209
|
-
|
2210
|
-
|
2211
|
-
|
2212
|
-
|
2159
|
+
void XdsClient::NotifyOnErrorLocked(absl::Status status) {
|
2160
|
+
const auto* node = bootstrap_->node();
|
2161
|
+
if (node != nullptr) {
|
2162
|
+
status = absl::Status(
|
2163
|
+
status.code(), absl::StrCat(status.message(),
|
2164
|
+
" (node ID:", bootstrap_->node()->id, ")"));
|
2213
2165
|
}
|
2214
|
-
|
2215
|
-
|
2216
|
-
for (const auto&
|
2217
|
-
|
2218
|
-
|
2219
|
-
|
2220
|
-
|
2221
|
-
|
2222
|
-
for (const auto& p : cluster_state.watchers) {
|
2223
|
-
p.first->OnError(GRPC_ERROR_REF(error));
|
2224
|
-
}
|
2225
|
-
}
|
2226
|
-
for (const auto& p : endpoint_map_) {
|
2227
|
-
const EndpointState& endpoint_state = p.second;
|
2228
|
-
for (const auto& p : endpoint_state.watchers) {
|
2229
|
-
p.first->OnError(GRPC_ERROR_REF(error));
|
2166
|
+
std::set<RefCountedPtr<ResourceWatcherInterface>> watchers;
|
2167
|
+
for (const auto& a : authority_state_map_) { // authority
|
2168
|
+
for (const auto& t : a.second.resource_map) { // type
|
2169
|
+
for (const auto& r : t.second) { // resource id
|
2170
|
+
for (const auto& w : r.second.watchers) { // watchers
|
2171
|
+
watchers.insert(w.second);
|
2172
|
+
}
|
2173
|
+
}
|
2230
2174
|
}
|
2231
2175
|
}
|
2232
|
-
|
2176
|
+
work_serializer_.Schedule(
|
2177
|
+
// TODO(yashykt): When we move to C++14, capture watchers using
|
2178
|
+
// std::move()
|
2179
|
+
[watchers, status]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(work_serializer_) {
|
2180
|
+
for (const auto& watcher : watchers) {
|
2181
|
+
watcher->OnError(status);
|
2182
|
+
}
|
2183
|
+
},
|
2184
|
+
DEBUG_LOCATION);
|
2185
|
+
}
|
2186
|
+
|
2187
|
+
void XdsClient::NotifyWatchersOnErrorLocked(
|
2188
|
+
const std::map<ResourceWatcherInterface*,
|
2189
|
+
RefCountedPtr<ResourceWatcherInterface>>& watchers,
|
2190
|
+
absl::Status status) {
|
2191
|
+
const auto* node = bootstrap_->node();
|
2192
|
+
if (node != nullptr) {
|
2193
|
+
status = absl::Status(
|
2194
|
+
status.code(), absl::StrCat(status.message(),
|
2195
|
+
" (node ID:", bootstrap_->node()->id, ")"));
|
2196
|
+
}
|
2197
|
+
work_serializer_.Schedule(
|
2198
|
+
[watchers, status]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(&work_serializer_) {
|
2199
|
+
for (const auto& p : watchers) {
|
2200
|
+
p.first->OnError(status);
|
2201
|
+
}
|
2202
|
+
},
|
2203
|
+
DEBUG_LOCATION);
|
2204
|
+
}
|
2205
|
+
|
2206
|
+
void XdsClient::NotifyWatchersOnResourceDoesNotExist(
|
2207
|
+
const std::map<ResourceWatcherInterface*,
|
2208
|
+
RefCountedPtr<ResourceWatcherInterface>>& watchers) {
|
2209
|
+
work_serializer_.Schedule(
|
2210
|
+
[watchers]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(&work_serializer_) {
|
2211
|
+
for (const auto& p : watchers) {
|
2212
|
+
p.first->OnResourceDoesNotExist();
|
2213
|
+
}
|
2214
|
+
},
|
2215
|
+
DEBUG_LOCATION);
|
2233
2216
|
}
|
2234
2217
|
|
2235
2218
|
XdsApi::ClusterLoadReportMap XdsClient::BuildLoadReportSnapshotLocked(
|
2236
|
-
|
2219
|
+
const XdsBootstrap::XdsServer& xds_server, bool send_all_clusters,
|
2220
|
+
const std::set<std::string>& clusters) {
|
2237
2221
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
2238
2222
|
gpr_log(GPR_INFO, "[xds_client %p] start building load report", this);
|
2239
2223
|
}
|
2240
2224
|
XdsApi::ClusterLoadReportMap snapshot_map;
|
2241
|
-
|
2242
|
-
|
2225
|
+
auto server_it = xds_load_report_server_map_.find(xds_server);
|
2226
|
+
if (server_it == xds_load_report_server_map_.end()) return snapshot_map;
|
2227
|
+
auto& load_report_map = server_it->second.load_report_map;
|
2228
|
+
for (auto load_report_it = load_report_map.begin();
|
2229
|
+
load_report_it != load_report_map.end();) {
|
2243
2230
|
// Cluster key is cluster and EDS service name.
|
2244
2231
|
const auto& cluster_key = load_report_it->first;
|
2245
2232
|
LoadReportState& load_report = load_report_it->second;
|
@@ -2294,7 +2281,7 @@ XdsApi::ClusterLoadReportMap XdsClient::BuildLoadReportSnapshotLocked(
|
|
2294
2281
|
}
|
2295
2282
|
}
|
2296
2283
|
// Compute load report interval.
|
2297
|
-
const
|
2284
|
+
const Timestamp now = ExecCtx::Get()->Now();
|
2298
2285
|
snapshot.load_report_interval = now - load_report.last_report_time;
|
2299
2286
|
load_report.last_report_time = now;
|
2300
2287
|
// Record snapshot.
|
@@ -2305,7 +2292,7 @@ XdsApi::ClusterLoadReportMap XdsClient::BuildLoadReportSnapshotLocked(
|
|
2305
2292
|
// deleted stats objects, remove the entry.
|
2306
2293
|
if (load_report.locality_stats.empty() &&
|
2307
2294
|
load_report.drop_stats == nullptr) {
|
2308
|
-
load_report_it =
|
2295
|
+
load_report_it = load_report_map.erase(load_report_it);
|
2309
2296
|
} else {
|
2310
2297
|
++load_report_it;
|
2311
2298
|
}
|
@@ -2316,34 +2303,19 @@ XdsApi::ClusterLoadReportMap XdsClient::BuildLoadReportSnapshotLocked(
|
|
2316
2303
|
std::string XdsClient::DumpClientConfigBinary() {
|
2317
2304
|
MutexLock lock(&mu_);
|
2318
2305
|
XdsApi::ResourceTypeMetadataMap resource_type_metadata_map;
|
2319
|
-
|
2320
|
-
|
2321
|
-
|
2322
|
-
|
2323
|
-
|
2324
|
-
|
2325
|
-
|
2326
|
-
|
2327
|
-
|
2328
|
-
|
2329
|
-
|
2330
|
-
|
2331
|
-
|
2332
|
-
resource_type_metadata_map[XdsApi::kRdsTypeUrl].resource_metadata_map;
|
2333
|
-
for (auto& p : route_config_map_) {
|
2334
|
-
rds_map[p.first] = &p.second.meta;
|
2335
|
-
}
|
2336
|
-
// Collect resource metadata from clusters
|
2337
|
-
auto& cds_map =
|
2338
|
-
resource_type_metadata_map[XdsApi::kCdsTypeUrl].resource_metadata_map;
|
2339
|
-
for (auto& p : cluster_map_) {
|
2340
|
-
cds_map[p.first] = &p.second.meta;
|
2341
|
-
}
|
2342
|
-
// Collect resource metadata from endpoints
|
2343
|
-
auto& eds_map =
|
2344
|
-
resource_type_metadata_map[XdsApi::kEdsTypeUrl].resource_metadata_map;
|
2345
|
-
for (auto& p : endpoint_map_) {
|
2346
|
-
eds_map[p.first] = &p.second.meta;
|
2306
|
+
for (const auto& a : authority_state_map_) { // authority
|
2307
|
+
const std::string& authority = a.first;
|
2308
|
+
for (const auto& t : a.second.resource_map) { // type
|
2309
|
+
const XdsResourceType* type = t.first;
|
2310
|
+
auto& resource_metadata_map =
|
2311
|
+
resource_type_metadata_map[type->type_url()];
|
2312
|
+
for (const auto& r : t.second) { // resource id
|
2313
|
+
const XdsResourceKey& resource_key = r.first;
|
2314
|
+
const ResourceState& resource_state = r.second;
|
2315
|
+
resource_metadata_map[ConstructFullXdsResourceName(
|
2316
|
+
authority, type->type_url(), resource_key)] = &resource_state.meta;
|
2317
|
+
}
|
2318
|
+
}
|
2347
2319
|
}
|
2348
2320
|
// Assemble config dump messages
|
2349
2321
|
return api_.AssembleClientConfig(resource_type_metadata_map);
|
@@ -2356,6 +2328,7 @@ std::string XdsClient::DumpClientConfigBinary() {
|
|
2356
2328
|
void XdsClientGlobalInit() {
|
2357
2329
|
g_mu = new Mutex;
|
2358
2330
|
XdsHttpFilterRegistry::Init();
|
2331
|
+
XdsClusterSpecifierPluginRegistry::Init();
|
2359
2332
|
}
|
2360
2333
|
|
2361
2334
|
// TODO(roth): Find a better way to clear the fallback config that does
|
@@ -2366,6 +2339,7 @@ void XdsClientGlobalShutdown() ABSL_NO_THREAD_SAFETY_ANALYSIS {
|
|
2366
2339
|
delete g_mu;
|
2367
2340
|
g_mu = nullptr;
|
2368
2341
|
XdsHttpFilterRegistry::Shutdown();
|
2342
|
+
XdsClusterSpecifierPluginRegistry::Shutdown();
|
2369
2343
|
}
|
2370
2344
|
|
2371
2345
|
namespace {
|
@@ -2373,7 +2347,7 @@ namespace {
|
|
2373
2347
|
std::string GetBootstrapContents(const char* fallback_config,
|
2374
2348
|
grpc_error_handle* error) {
|
2375
2349
|
// First, try GRPC_XDS_BOOTSTRAP env var.
|
2376
|
-
|
2350
|
+
UniquePtr<char> path(gpr_getenv("GRPC_XDS_BOOTSTRAP"));
|
2377
2351
|
if (path != nullptr) {
|
2378
2352
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
2379
2353
|
gpr_log(GPR_INFO,
|
@@ -2390,8 +2364,7 @@ std::string GetBootstrapContents(const char* fallback_config,
|
|
2390
2364
|
return contents_str;
|
2391
2365
|
}
|
2392
2366
|
// Next, try GRPC_XDS_BOOTSTRAP_CONFIG env var.
|
2393
|
-
|
2394
|
-
gpr_getenv("GRPC_XDS_BOOTSTRAP_CONFIG"));
|
2367
|
+
UniquePtr<char> env_config(gpr_getenv("GRPC_XDS_BOOTSTRAP_CONFIG"));
|
2395
2368
|
if (env_config != nullptr) {
|
2396
2369
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
2397
2370
|
gpr_log(GPR_INFO,
|
@@ -2501,7 +2474,7 @@ void XdsClientArgDestroy(void* p) {
|
|
2501
2474
|
xds_client->Unref(DEBUG_LOCATION, "channel arg");
|
2502
2475
|
}
|
2503
2476
|
|
2504
|
-
int XdsClientArgCmp(void* p, void* q) { return
|
2477
|
+
int XdsClientArgCmp(void* p, void* q) { return QsortCompare(p, q); }
|
2505
2478
|
|
2506
2479
|
const grpc_arg_pointer_vtable kXdsClientArgVtable = {
|
2507
2480
|
XdsClientArgCopy, XdsClientArgDestroy, XdsClientArgCmp};
|