grpc 1.35.0 → 1.47.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +617 -386
- 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/README.md +38 -0
- data/include/grpc/event_engine/endpoint_config.h +43 -0
- data/include/grpc/event_engine/event_engine.h +434 -0
- data/include/grpc/event_engine/internal/memory_allocator_impl.h +68 -0
- data/include/grpc/event_engine/memory_allocator.h +211 -0
- data/include/grpc/event_engine/memory_request.h +57 -0
- data/include/grpc/event_engine/port.h +39 -0
- data/include/grpc/event_engine/slice.h +286 -0
- data/include/grpc/event_engine/slice_buffer.h +112 -0
- data/include/grpc/fork.h +1 -1
- data/include/grpc/grpc.h +76 -19
- data/include/grpc/grpc_posix.h +22 -18
- data/include/grpc/grpc_security.h +378 -195
- data/include/grpc/grpc_security_constants.h +17 -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 +68 -41
- data/include/grpc/impl/codegen/log.h +2 -0
- data/include/grpc/impl/codegen/port_platform.h +162 -35
- 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/module.modulemap +14 -14
- 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 +297 -0
- data/src/core/ext/filters/channel_idle/channel_idle_filter.h +125 -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 +32 -30
- data/src/core/ext/filters/client_channel/backend_metric.h +19 -8
- data/src/core/ext/filters/client_channel/backup_poller.cc +22 -17
- data/src/core/ext/filters/client_channel/backup_poller.h +2 -3
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +181 -203
- data/src/core/ext/filters/client_channel/client_channel.cc +1429 -3634
- data/src/core/ext/filters/client_channel/client_channel.h +583 -56
- data/src/core/ext/filters/client_channel/client_channel_channelz.cc +6 -7
- data/src/core/ext/filters/client_channel/client_channel_channelz.h +14 -4
- data/src/core/ext/filters/client_channel/client_channel_factory.cc +7 -1
- data/src/core/ext/filters/client_channel/client_channel_factory.h +26 -19
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +19 -31
- data/src/core/ext/filters/client_channel/config_selector.cc +3 -1
- data/src/core/ext/filters/client_channel/config_selector.h +37 -15
- data/src/core/ext/filters/client_channel/connector.h +28 -22
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +35 -21
- data/src/core/ext/filters/client_channel/dynamic_filters.h +16 -6
- data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +27 -163
- data/src/core/ext/filters/client_channel/global_subchannel_pool.h +19 -24
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +141 -581
- data/src/core/ext/filters/client_channel/health/health_check_client.h +26 -158
- data/src/core/ext/filters/client_channel/http_proxy.cc +110 -109
- data/src/core/ext/filters/client_channel/http_proxy.h +20 -0
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +10 -5
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +7 -5
- data/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h +49 -0
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +18 -2
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +5 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +21 -27
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +350 -213
- 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 +5 -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 +11 -4
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +27 -19
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +10 -7
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +408 -0
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.h +57 -0
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +1038 -0
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +54 -0
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +144 -111
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +334 -245
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +865 -0
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +39 -0
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +2577 -0
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +205 -195
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +55 -47
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +146 -89
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +418 -275
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +7 -1
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +5 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +219 -133
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +84 -76
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +532 -515
- data/src/core/ext/filters/client_channel/lb_policy.cc +21 -29
- data/src/core/ext/filters/client_channel/lb_policy.h +168 -141
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +4 -1
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +16 -12
- data/src/core/ext/filters/client_channel/lb_policy_registry.h +7 -2
- data/src/core/ext/filters/client_channel/local_subchannel_pool.cc +31 -67
- data/src/core/ext/filters/client_channel/local_subchannel_pool.h +11 -9
- data/src/core/ext/filters/client_channel/proxy_mapper.h +1 -1
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +2 -0
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.h +5 -0
- data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +151 -0
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +396 -336
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +31 -13
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +33 -26
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +55 -71
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +220 -332
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +52 -30
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +4 -3
- data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.cc +2 -0
- data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.h +2 -1
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +118 -245
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +70 -73
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +14 -8
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +446 -0
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +213 -0
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +113 -0
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +59 -54
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +786 -452
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +46 -263
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +43 -60
- data/src/core/ext/filters/client_channel/retry_filter.cc +2695 -0
- data/src/core/ext/filters/client_channel/retry_filter.h +30 -0
- data/src/core/ext/filters/client_channel/retry_service_config.cc +313 -0
- data/src/core/ext/filters/client_channel/retry_service_config.h +111 -0
- data/src/core/ext/filters/client_channel/retry_throttle.cc +14 -66
- data/src/core/ext/filters/client_channel/retry_throttle.h +18 -6
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +72 -40
- data/src/core/ext/filters/client_channel/subchannel.cc +319 -464
- data/src/core/ext/filters/client_channel/subchannel.h +163 -154
- data/src/core/ext/filters/client_channel/subchannel_interface.h +41 -23
- data/src/core/ext/filters/client_channel/subchannel_interface_internal.h +38 -0
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +48 -9
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +26 -12
- data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +558 -0
- data/src/core/ext/filters/client_channel/subchannel_stream_client.h +226 -0
- data/src/core/ext/filters/deadline/deadline_filter.cc +45 -43
- data/src/core/ext/filters/deadline/deadline_filter.h +3 -2
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +255 -0
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +62 -0
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +179 -0
- data/src/core/ext/filters/fault_injection/service_config_parser.h +91 -0
- data/src/core/ext/filters/http/client/http_client_filter.cc +92 -538
- data/src/core/ext/filters/http/client/http_client_filter.h +27 -4
- data/src/core/ext/filters/http/client_authority_filter.cc +42 -111
- data/src/core/ext/filters/http/client_authority_filter.h +24 -5
- data/src/core/ext/filters/http/http_filters_plugin.cc +54 -73
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +68 -157
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +45 -56
- data/src/core/ext/filters/http/server/http_server_filter.cc +91 -464
- data/src/core/ext/filters/http/server/http_server_filter.h +31 -2
- data/src/core/ext/filters/message_size/message_size_filter.cc +78 -90
- data/src/core/ext/filters/message_size/message_size_filter.h +13 -6
- data/src/core/ext/filters/rbac/rbac_filter.cc +163 -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/server_config_selector/server_config_selector_filter.h +32 -0
- data/src/core/ext/transport/chttp2/alpn/alpn.cc +2 -1
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +285 -86
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +15 -13
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +778 -235
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +13 -2
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +7 -5
- data/src/core/ext/transport/chttp2/transport/bin_decoder.h +3 -1
- data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +2 -0
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +604 -489
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +29 -5
- data/src/core/ext/transport/chttp2/transport/context_list.cc +8 -6
- data/src/core/ext/transport/chttp2/transport/context_list.h +7 -6
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +72 -49
- data/src/core/ext/transport/chttp2/transport/flow_control.h +33 -23
- data/src/core/ext/transport/chttp2/transport/frame.h +0 -4
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +35 -26
- data/src/core/ext/transport/chttp2/transport/frame_data.h +15 -11
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +24 -20
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +10 -7
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +22 -17
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +11 -6
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +23 -17
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +10 -6
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +63 -20
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +11 -6
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +20 -14
- data/src/core/ext/transport/chttp2/transport/frame_window_update.h +8 -6
- data/src/core/ext/transport/chttp2/transport/hpack_constants.h +41 -0
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +526 -757
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +198 -73
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +89 -0
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +74 -0
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +836 -1200
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +109 -84
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +257 -0
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +132 -0
- data/src/core/ext/transport/chttp2/transport/http2_settings.h +0 -1
- data/src/core/ext/transport/chttp2/transport/internal.h +80 -79
- data/src/core/ext/transport/chttp2/transport/parsing.cc +192 -299
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +15 -11
- data/src/core/ext/transport/chttp2/transport/stream_map.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/stream_map.h +1 -0
- data/src/core/ext/transport/chttp2/transport/varint.cc +13 -7
- data/src/core/ext/transport/chttp2/transport/varint.h +41 -28
- data/src/core/ext/transport/chttp2/transport/writing.cc +169 -173
- data/src/core/ext/transport/inproc/inproc_plugin.cc +0 -4
- data/src/core/ext/transport/inproc/inproc_transport.cc +190 -216
- 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 +444 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +2156 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.c +56 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.h +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 -118
- 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 +411 -0
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +2161 -0
- 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 +341 -256
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +1943 -800
- 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 -27
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +291 -95
- 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 +252 -143
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +1285 -493
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +107 -47
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +562 -172
- 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 +807 -340
- 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 +235 -89
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +1244 -288
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +18 -6
- 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 +60 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +169 -0
- 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 +30 -10
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +118 -32
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +48 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +118 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +52 -37
- 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 +105 -68
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +616 -242
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +106 -75
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +637 -287
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +63 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +234 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +27 -12
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +96 -49
- 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 +165 -0
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +716 -0
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +174 -0
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +721 -0
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +131 -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 +63 -25
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +338 -115
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +688 -537
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +4135 -1819
- 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 -15
- 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 +42 -0
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +85 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +96 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +375 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +94 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +433 -0
- 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 +55 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +168 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +301 -202
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +1794 -663
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +10 -2
- 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 +114 -49
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +652 -198
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +43 -31
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +176 -104
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +128 -84
- 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 +99 -73
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +550 -282
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +32 -19
- 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 +138 -0
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +631 -0
- 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 +76 -0
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +249 -0
- 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 +49 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +117 -0
- 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 +37 -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 -19
- 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 +60 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +170 -0
- 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 +167 -118
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +886 -390
- 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 -295
- data/src/core/ext/upb-generated/validate/validate.upb.h +3021 -1221
- 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 +41 -0
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +79 -0
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +66 -0
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +200 -0
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +56 -0
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +115 -0
- 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 +49 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +127 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +68 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +240 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +49 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +121 -0
- 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/service/orca/v3/orca.upb.c +47 -0
- data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.h +109 -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 +309 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h +140 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/init_dump.upbdefs.c +43 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/init_dump.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.c +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 +22 -12
- 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 +183 -215
- 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 +393 -0
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.h +120 -0
- 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 +497 -498
- 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 +28 -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 +225 -224
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +83 -58
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +140 -115
- 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 +182 -187
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.h +30 -25
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.c +16 -19
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +267 -197
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h +61 -31
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +15 -20
- 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 +55 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.h +40 -0
- 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 +46 -31
- 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 +49 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c +69 -80
- 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 +157 -150
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +21 -16
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +155 -150
- 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 +88 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +40 -39
- 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 +125 -0
- data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.h +70 -0
- data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.c +134 -0
- data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.h +75 -0
- 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 +85 -67
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +12 -7
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +826 -845
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +166 -151
- 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 +32 -39
- 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 +50 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c +92 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.h +55 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +117 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.h +45 -0
- 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 +78 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +428 -388
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +67 -52
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +22 -22
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h +1 -1
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +174 -130
- 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 +57 -71
- 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 +217 -212
- 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 +99 -123
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +24 -19
- data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +19 -26
- 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 +153 -0
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.h +55 -0
- 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 +56 -0
- data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.h +50 -0
- 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 +54 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.h +35 -0
- 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 +45 -48
- 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 +40 -47
- 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 +58 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.h +40 -0
- 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 +9 -14
- 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 +189 -213
- 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 +38 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +56 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +39 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.h +40 -0
- 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 +45 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +61 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +46 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.h +35 -0
- 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_factory.h +1 -1
- data/src/core/ext/xds/certificate_provider_registry.cc +3 -3
- data/src/core/ext/xds/certificate_provider_store.cc +10 -0
- data/src/core/ext/xds/certificate_provider_store.h +13 -4
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +7 -7
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +4 -4
- data/src/core/ext/xds/upb_utils.h +67 -0
- data/src/core/ext/xds/xds_api.cc +347 -1925
- data/src/core/ext/xds/xds_api.h +127 -405
- data/src/core/ext/xds/xds_bootstrap.cc +324 -274
- data/src/core/ext/xds/xds_bootstrap.h +61 -26
- data/src/core/ext/xds/xds_certificate_provider.cc +192 -81
- data/src/core/ext/xds/xds_certificate_provider.h +92 -45
- data/src/core/ext/xds/xds_channel_args.h +5 -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 +1166 -867
- data/src/core/ext/xds/xds_client.h +172 -160
- data/src/core/ext/xds/xds_client_stats.cc +31 -29
- data/src/core/ext/xds/xds_client_stats.h +17 -15
- data/src/core/ext/xds/xds_cluster.cc +543 -0
- data/src/core/ext/xds/xds_cluster.h +111 -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 +227 -0
- data/src/core/ext/xds/xds_http_fault_filter.h +64 -0
- data/src/core/ext/xds/xds_http_filters.cc +122 -0
- data/src/core/ext/xds/xds_http_filters.h +133 -0
- 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 +1049 -0
- data/src/core/ext/xds/xds_listener.h +220 -0
- data/src/core/ext/xds/xds_resource_type.cc +33 -0
- 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 +1250 -66
- data/src/core/lib/address_utils/parse_address.cc +340 -0
- data/src/core/lib/address_utils/parse_address.h +82 -0
- data/src/core/lib/address_utils/sockaddr_utils.cc +442 -0
- data/src/core/lib/address_utils/sockaddr_utils.h +98 -0
- data/src/core/lib/avl/avl.h +454 -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 +90 -0
- data/src/core/lib/channel/call_tracer.h +94 -0
- data/src/core/lib/channel/channel_args.cc +212 -36
- data/src/core/lib/channel/channel_args.h +246 -3
- data/src/core/lib/channel/channel_args_preconditioning.cc +42 -0
- data/src/core/lib/channel/channel_args_preconditioning.h +62 -0
- data/src/core/lib/channel/channel_stack.cc +77 -17
- data/src/core/lib/channel/channel_stack.h +105 -18
- data/src/core/lib/channel/channel_stack_builder.cc +19 -288
- data/src/core/lib/channel/channel_stack_builder.h +107 -158
- data/src/core/lib/channel/channel_stack_builder_impl.cc +97 -0
- data/src/core/lib/channel/channel_stack_builder_impl.h +45 -0
- data/src/core/lib/channel/channel_trace.cc +13 -20
- data/src/core/lib/channel/channel_trace.h +8 -4
- data/src/core/lib/channel/channelz.cc +156 -60
- data/src/core/lib/channel/channelz.h +73 -32
- data/src/core/lib/channel/channelz_registry.cc +27 -19
- data/src/core/lib/channel/channelz_registry.h +11 -10
- data/src/core/lib/channel/connected_channel.cc +30 -36
- data/src/core/lib/channel/connected_channel.h +3 -2
- data/src/core/lib/channel/context.h +14 -0
- data/src/core/lib/channel/promise_based_filter.cc +1257 -0
- data/src/core/lib/channel/promise_based_filter.h +570 -0
- data/src/core/lib/channel/status_util.cc +14 -2
- data/src/core/lib/channel/status_util.h +9 -3
- data/src/core/lib/compression/compression.cc +22 -114
- data/src/core/lib/compression/compression_internal.cc +173 -206
- 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 +107 -0
- data/src/core/lib/config/core_configuration.h +197 -0
- data/src/core/lib/debug/stats.cc +1 -1
- data/src/core/lib/debug/stats.h +2 -1
- 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/channel_args_endpoint_config.cc +48 -0
- data/src/core/lib/event_engine/channel_args_endpoint_config.h +43 -0
- data/src/core/lib/event_engine/default_event_engine_factory.cc +33 -0
- data/src/core/lib/event_engine/event_engine.cc +62 -0
- data/src/core/lib/event_engine/event_engine_factory.h +41 -0
- data/src/core/lib/event_engine/handle_containers.h +67 -0
- data/src/core/lib/event_engine/iomgr_engine.cc +206 -0
- data/src/core/lib/event_engine/iomgr_engine.h +118 -0
- data/src/core/lib/event_engine/memory_allocator.cc +74 -0
- data/src/core/lib/event_engine/resolved_address.cc +41 -0
- data/src/core/lib/event_engine/slice.cc +102 -0
- data/src/core/lib/event_engine/slice_buffer.cc +50 -0
- data/src/core/lib/event_engine/trace.cc +18 -0
- data/src/core/lib/event_engine/trace.h +30 -0
- data/src/core/lib/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 +13 -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/murmur_hash.cc +4 -2
- 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 +10 -12
- data/src/core/lib/gpr/sync_posix.cc +4 -3
- data/src/core/lib/gpr/sync_windows.cc +2 -2
- 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 +124 -40
- data/src/core/lib/gpr/tmpfile_posix.cc +1 -2
- data/src/core/lib/gpr/useful.h +97 -32
- data/src/core/lib/gpr/wrap_memcpy.cc +2 -1
- data/src/core/lib/gprpp/atomic_utils.h +47 -0
- data/src/core/lib/gprpp/bitset.h +211 -0
- data/src/core/lib/gprpp/chunked_vector.h +257 -0
- data/src/core/lib/gprpp/construct_destruct.h +40 -0
- 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 +27 -31
- data/src/core/lib/gprpp/examine_stack.h +0 -1
- data/src/core/lib/gprpp/fork.cc +17 -18
- data/src/core/lib/gprpp/fork.h +4 -4
- data/src/core/lib/gprpp/global_config.h +2 -5
- data/src/core/lib/gprpp/global_config_env.cc +16 -15
- data/src/core/lib/gprpp/global_config_env.h +5 -3
- data/src/core/lib/gprpp/global_config_generic.h +0 -4
- data/src/core/lib/gprpp/host_port.cc +2 -0
- data/src/core/lib/gprpp/manual_constructor.h +11 -10
- data/src/core/lib/gprpp/match.h +75 -0
- data/src/core/lib/gprpp/memory.h +8 -6
- data/src/core/lib/gprpp/mpscq.cc +9 -9
- data/src/core/lib/gprpp/mpscq.h +6 -5
- data/src/core/lib/gprpp/orphanable.h +5 -8
- data/src/core/lib/gprpp/overload.h +59 -0
- data/src/core/lib/gprpp/ref_counted.h +49 -35
- data/src/core/lib/gprpp/ref_counted_ptr.h +5 -5
- data/src/core/lib/gprpp/single_set_ptr.h +87 -0
- data/src/core/lib/gprpp/stat.h +0 -2
- data/src/core/lib/gprpp/stat_posix.cc +7 -2
- data/src/core/lib/gprpp/status_helper.cc +439 -0
- data/src/core/lib/gprpp/status_helper.h +185 -0
- data/src/core/lib/gprpp/sync.h +109 -44
- data/src/core/lib/gprpp/table.h +444 -0
- data/src/core/lib/gprpp/thd.h +3 -6
- data/src/core/lib/gprpp/thd_posix.cc +9 -7
- data/src/core/lib/gprpp/thd_windows.cc +6 -11
- data/src/core/lib/gprpp/time.cc +206 -0
- data/src/core/lib/gprpp/time.h +297 -0
- data/src/core/lib/gprpp/time_util.cc +81 -0
- data/src/core/lib/gprpp/time_util.h +42 -0
- data/src/core/lib/gprpp/unique_type_name.h +104 -0
- data/src/core/lib/http/format_request.cc +58 -25
- data/src/core/lib/http/format_request.h +10 -6
- data/src/core/lib/http/httpcli.cc +306 -209
- data/src/core/lib/http/httpcli.h +215 -85
- data/src/core/lib/http/httpcli_security_connector.cc +72 -83
- data/src/core/lib/http/httpcli_ssl_credentials.h +37 -0
- data/src/core/lib/http/parser.cc +98 -27
- data/src/core/lib/http/parser.h +20 -6
- data/src/core/lib/iomgr/buffer_list.cc +16 -17
- data/src/core/lib/iomgr/buffer_list.h +23 -25
- data/src/core/lib/iomgr/call_combiner.cc +55 -23
- data/src/core/lib/iomgr/call_combiner.h +12 -14
- data/src/core/lib/iomgr/cfstream_handle.cc +6 -6
- data/src/core/lib/iomgr/cfstream_handle.h +1 -1
- data/src/core/lib/iomgr/closure.h +33 -12
- data/src/core/lib/iomgr/combiner.cc +46 -36
- data/src/core/lib/iomgr/combiner.h +3 -2
- data/src/core/lib/iomgr/dualstack_socket_posix.cc +1 -0
- data/src/core/lib/iomgr/endpoint.cc +5 -9
- data/src/core/lib/iomgr/endpoint.h +9 -10
- data/src/core/lib/iomgr/endpoint_cfstream.cc +32 -58
- 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_posix.cc +12 -9
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +5 -6
- data/src/core/lib/iomgr/error.cc +270 -99
- data/src/core/lib/iomgr/error.h +278 -114
- data/src/core/lib/iomgr/error_cfstream.cc +10 -4
- data/src/core/lib/iomgr/error_cfstream.h +2 -2
- data/src/core/lib/iomgr/error_internal.h +6 -1
- data/src/core/lib/iomgr/ev_apple.cc +19 -15
- data/src/core/lib/iomgr/ev_apple.h +1 -1
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +45 -51
- data/src/core/lib/iomgr/ev_poll_posix.cc +73 -73
- data/src/core/lib/iomgr/ev_posix.cc +22 -26
- data/src/core/lib/iomgr/ev_posix.h +9 -9
- data/src/core/lib/iomgr/exec_ctx.cc +29 -98
- data/src/core/lib/iomgr/exec_ctx.h +32 -58
- 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 +4 -5
- data/src/core/lib/iomgr/executor/threadpool.h +4 -3
- data/src/core/lib/iomgr/executor.cc +37 -46
- data/src/core/lib/iomgr/executor.h +3 -3
- 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 +41 -49
- data/src/core/lib/iomgr/internal_errqueue.h +1 -6
- 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 +5 -4
- data/src/core/lib/iomgr/iomgr.h +3 -3
- data/src/core/lib/iomgr/iomgr_fwd.h +25 -0
- data/src/core/lib/iomgr/iomgr_internal.cc +8 -12
- data/src/core/lib/iomgr/iomgr_internal.h +6 -5
- data/src/core/lib/iomgr/iomgr_posix.cc +5 -4
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +44 -15
- data/src/core/lib/iomgr/iomgr_windows.cc +4 -5
- data/src/core/lib/iomgr/load_file.cc +6 -6
- data/src/core/lib/iomgr/load_file.h +2 -2
- data/src/core/lib/iomgr/lockfree_event.cc +23 -5
- data/src/core/lib/iomgr/lockfree_event.h +1 -1
- 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 +5 -5
- data/src/core/lib/iomgr/pollset.h +9 -9
- data/src/core/lib/iomgr/pollset_set.h +1 -2
- data/src/core/lib/iomgr/pollset_set_windows.cc +1 -0
- data/src/core/lib/iomgr/pollset_windows.cc +6 -6
- data/src/core/lib/iomgr/port.h +28 -17
- data/src/core/lib/iomgr/python_util.h +3 -2
- data/src/core/lib/iomgr/resolve_address.cc +17 -23
- data/src/core/lib/iomgr/resolve_address.h +58 -46
- data/src/core/lib/iomgr/resolve_address_impl.h +58 -0
- data/src/core/lib/iomgr/resolve_address_posix.cc +84 -78
- data/src/core/lib/iomgr/resolve_address_posix.h +50 -0
- data/src/core/lib/iomgr/resolve_address_windows.cc +95 -85
- data/src/core/lib/iomgr/resolve_address_windows.h +50 -0
- data/src/core/lib/iomgr/resolved_address.h +39 -0
- data/src/core/lib/iomgr/sockaddr.h +3 -3
- data/src/core/lib/iomgr/sockaddr_posix.h +2 -0
- data/src/core/lib/iomgr/sockaddr_utils_posix.cc +62 -0
- data/src/core/lib/iomgr/sockaddr_windows.h +2 -0
- 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 +17 -4
- data/src/core/lib/iomgr/socket_mutator.h +27 -3
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +30 -44
- 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 +22 -22
- 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 +22 -30
- data/src/core/lib/iomgr/tcp_client_posix.cc +50 -50
- data/src/core/lib/iomgr/tcp_client_posix.h +7 -6
- data/src/core/lib/iomgr/tcp_client_windows.cc +26 -19
- data/src/core/lib/iomgr/tcp_posix.cc +211 -204
- data/src/core/lib/iomgr/tcp_posix.h +17 -12
- data/src/core/lib/iomgr/tcp_server.cc +6 -6
- data/src/core/lib/iomgr/tcp_server.h +16 -14
- data/src/core/lib/iomgr/tcp_server_posix.cc +91 -58
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +34 -29
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +53 -47
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +18 -15
- data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +4 -4
- data/src/core/lib/iomgr/tcp_server_windows.cc +37 -32
- data/src/core/lib/iomgr/tcp_windows.cc +42 -56
- data/src/core/lib/iomgr/tcp_windows.h +3 -3
- data/src/core/lib/iomgr/timer.cc +3 -2
- data/src/core/lib/iomgr/timer.h +17 -8
- data/src/core/lib/iomgr/timer_generic.cc +118 -129
- 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 +17 -16
- 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 +12 -18
- data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +3 -3
- data/src/core/lib/iomgr/wakeup_fd_nospecial.cc +2 -1
- data/src/core/lib/iomgr/wakeup_fd_pipe.cc +6 -7
- data/src/core/lib/iomgr/wakeup_fd_posix.cc +4 -3
- data/src/core/lib/iomgr/wakeup_fd_posix.h +8 -6
- data/src/core/lib/iomgr/work_serializer.cc +120 -44
- data/src/core/lib/iomgr/work_serializer.h +33 -5
- data/src/core/lib/json/json.h +2 -3
- data/src/core/lib/json/json_reader.cc +106 -59
- data/src/core/lib/json/json_util.cc +78 -3
- data/src/core/lib/json/json_util.h +77 -118
- data/src/core/lib/json/json_writer.cc +6 -4
- data/src/core/lib/matchers/matchers.cc +327 -0
- data/src/core/lib/matchers/matchers.h +160 -0
- 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 +198 -0
- data/src/core/lib/promise/call_push_pull.h +148 -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 +188 -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 +103 -0
- data/src/core/lib/promise/loop.h +135 -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 +83 -0
- data/src/core/lib/promise/seq.h +87 -0
- data/src/core/lib/promise/sleep.cc +76 -0
- data/src/core/lib/promise/sleep.h +76 -0
- data/src/core/lib/promise/try_seq.h +157 -0
- data/src/core/lib/resolver/resolver.cc +79 -0
- data/src/core/lib/resolver/resolver.h +135 -0
- data/src/core/lib/resolver/resolver_factory.h +75 -0
- data/src/core/lib/resolver/resolver_registry.cc +156 -0
- data/src/core/lib/resolver/resolver_registry.h +113 -0
- data/src/core/lib/resolver/server_address.cc +176 -0
- data/src/core/lib/resolver/server_address.h +144 -0
- data/src/core/lib/resource_quota/api.cc +96 -0
- data/src/core/lib/resource_quota/api.h +43 -0
- data/src/core/lib/resource_quota/arena.cc +101 -0
- data/src/core/lib/resource_quota/arena.h +141 -0
- data/src/core/lib/resource_quota/memory_quota.cc +520 -0
- data/src/core/lib/resource_quota/memory_quota.h +476 -0
- data/src/core/lib/resource_quota/resource_quota.cc +33 -0
- data/src/core/lib/resource_quota/resource_quota.h +74 -0
- data/src/core/lib/resource_quota/thread_quota.cc +45 -0
- data/src/core/lib/resource_quota/thread_quota.h +61 -0
- data/src/core/lib/resource_quota/trace.cc +19 -0
- data/src/core/lib/resource_quota/trace.h +24 -0
- data/src/core/lib/security/authorization/authorization_engine.h +13 -53
- data/src/core/lib/security/authorization/authorization_policy_provider.h +40 -0
- data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +46 -0
- data/src/core/lib/security/authorization/evaluate_args.cc +143 -79
- data/src/core/lib/security/authorization/evaluate_args.h +50 -17
- 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 +109 -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 +14 -6
- data/src/core/lib/security/credentials/alts/alts_credentials.h +11 -1
- 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 +89 -0
- data/src/core/lib/security/credentials/call_creds_util.h +42 -0
- data/src/core/lib/security/credentials/channel_creds_registry.h +98 -0
- data/src/core/lib/security/credentials/channel_creds_registry_init.cc +70 -0
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +31 -85
- data/src/core/lib/security/credentials/composite/composite_credentials.h +25 -11
- data/src/core/lib/security/credentials/credentials.cc +11 -10
- data/src/core/lib/security/credentials/credentials.h +90 -83
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +160 -73
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +23 -13
- data/src/core/lib/security/credentials/external/aws_request_signer.cc +5 -4
- data/src/core/lib/security/credentials/external/aws_request_signer.h +1 -1
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +132 -82
- data/src/core/lib/security/credentials/external/external_account_credentials.h +15 -17
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +6 -6
- data/src/core/lib/security/credentials/external/file_external_account_credentials.h +4 -3
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +46 -27
- data/src/core/lib/security/credentials/external/url_external_account_credentials.h +10 -7
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +33 -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 +117 -47
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +10 -4
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +25 -28
- data/src/core/lib/security/credentials/iam/iam_credentials.h +15 -9
- data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +31 -26
- data/src/core/lib/security/credentials/insecure/insecure_credentials.h +57 -0
- data/src/core/lib/security/credentials/jwt/json_token.cc +7 -12
- data/src/core/lib/security/credentials/jwt/json_token.h +2 -1
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +58 -52
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +27 -15
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +66 -62
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +4 -4
- data/src/core/lib/security/credentials/local/local_credentials.cc +14 -7
- data/src/core/lib/security/credentials/local/local_credentials.h +11 -1
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +178 -193
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +62 -34
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +100 -155
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +56 -27
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +19 -19
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +15 -5
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +11 -9
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +19 -15
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +90 -25
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +67 -12
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +234 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +169 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +35 -85
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +75 -151
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +42 -17
- data/src/core/lib/security/credentials/tls/tls_credentials.h +7 -1
- data/src/core/lib/security/credentials/tls/tls_utils.cc +32 -0
- data/src/core/lib/security/credentials/tls/tls_utils.h +13 -0
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +134 -63
- data/src/core/lib/security/credentials/xds/xds_credentials.h +40 -9
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +22 -18
- 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 +25 -26
- data/src/core/lib/security/security_connector/fake/fake_security_connector.h +1 -3
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +10 -20
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +21 -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 +5 -6
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +34 -26
- data/src/core/lib/security/security_connector/security_connector.cc +9 -16
- data/src/core/lib/security/security_connector/security_connector.h +34 -25
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +29 -25
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +1 -2
- data/src/core/lib/security/security_connector/ssl_utils.cc +76 -43
- data/src/core/lib/security/security_connector/ssl_utils.h +17 -21
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +440 -283
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +118 -79
- data/src/core/lib/security/transport/auth_filters.h +39 -5
- data/src/core/lib/security/transport/client_auth_filter.cc +96 -355
- data/src/core/lib/security/transport/secure_endpoint.cc +221 -151
- data/src/core/lib/security/transport/secure_endpoint.h +2 -1
- data/src/core/lib/security/transport/security_handshaker.cc +174 -96
- data/src/core/lib/security/transport/security_handshaker.h +3 -2
- data/src/core/lib/security/transport/server_auth_filter.cc +61 -50
- data/src/core/lib/security/transport/tsi_error.cc +5 -6
- data/src/core/lib/security/transport/tsi_error.h +2 -1
- data/src/core/lib/security/util/json_util.cc +8 -10
- data/src/core/lib/security/util/json_util.h +1 -1
- data/src/core/lib/service_config/service_config.h +78 -0
- data/src/core/lib/service_config/service_config_call_data.h +75 -0
- data/src/core/lib/service_config/service_config_impl.cc +237 -0
- data/src/core/lib/service_config/service_config_impl.h +132 -0
- data/src/core/lib/service_config/service_config_parser.cc +101 -0
- data/src/core/lib/service_config/service_config_parser.h +113 -0
- data/src/core/lib/slice/b64.cc +1 -1
- data/src/core/lib/slice/b64.h +2 -0
- data/src/core/lib/slice/percent_encoding.cc +87 -97
- data/src/core/lib/slice/percent_encoding.h +22 -33
- data/src/core/lib/slice/slice.cc +83 -192
- data/src/core/lib/slice/slice.h +389 -0
- data/src/core/lib/slice/slice_api.cc +39 -0
- data/src/core/lib/slice/slice_buffer.cc +59 -29
- data/src/core/lib/slice/slice_buffer.h +106 -0
- data/src/core/lib/slice/slice_buffer_api.cc +35 -0
- data/src/core/lib/slice/slice_internal.h +18 -278
- data/src/core/lib/slice/slice_refcount.cc +35 -0
- data/src/core/lib/slice/slice_refcount.h +45 -0
- data/src/core/lib/slice/slice_refcount_base.h +60 -0
- data/src/core/lib/slice/slice_split.cc +103 -0
- data/src/core/lib/slice/slice_split.h +36 -0
- data/src/core/lib/slice/slice_string_helpers.cc +2 -81
- data/src/core/lib/slice/slice_string_helpers.h +1 -15
- 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 +54 -0
- data/src/core/lib/surface/builtins.h +26 -0
- data/src/core/lib/surface/byte_buffer.cc +7 -1
- data/src/core/lib/surface/byte_buffer_reader.cc +5 -5
- data/src/core/lib/surface/call.cc +1186 -1256
- data/src/core/lib/surface/call.h +29 -24
- data/src/core/lib/surface/call_details.cc +4 -4
- data/src/core/lib/surface/call_log_batch.cc +9 -3
- data/src/core/lib/surface/call_test_only.h +4 -1
- data/src/core/lib/surface/channel.cc +221 -315
- data/src/core/lib/surface/channel.h +102 -72
- data/src/core/lib/surface/channel_init.cc +22 -76
- data/src/core/lib/surface/channel_init.h +45 -39
- data/src/core/lib/surface/channel_ping.cc +10 -5
- data/src/core/lib/surface/channel_stack_type.cc +0 -1
- data/src/core/lib/surface/channel_stack_type.h +0 -2
- data/src/core/lib/surface/completion_queue.cc +150 -151
- data/src/core/lib/surface/completion_queue.h +8 -3
- data/src/core/lib/surface/completion_queue_factory.cc +4 -3
- data/src/core/lib/surface/completion_queue_factory.h +1 -2
- data/src/core/lib/surface/event_string.cc +1 -6
- data/src/core/lib/surface/event_string.h +1 -1
- data/src/core/lib/surface/init.cc +82 -90
- data/src/core/lib/surface/init.h +2 -4
- data/src/core/lib/surface/lame_client.cc +80 -92
- data/src/core/lib/surface/lame_client.h +42 -3
- data/src/core/lib/surface/metadata_array.cc +4 -2
- data/src/core/lib/surface/server.cc +201 -220
- data/src/core/lib/surface/server.h +160 -64
- data/src/core/lib/surface/validate_metadata.cc +57 -29
- data/src/core/lib/surface/validate_metadata.h +6 -2
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.cc +14 -13
- data/src/core/lib/transport/bdp_estimator.h +4 -5
- data/src/core/lib/transport/byte_stream.cc +15 -8
- data/src/core/lib/transport/byte_stream.h +14 -9
- data/src/core/lib/transport/connectivity_state.cc +15 -10
- data/src/core/lib/transport/connectivity_state.h +4 -5
- data/src/core/lib/transport/error_utils.cc +71 -30
- data/src/core/lib/transport/error_utils.h +18 -7
- data/src/core/lib/transport/handshaker.cc +227 -0
- data/src/core/lib/transport/handshaker.h +168 -0
- data/src/core/lib/transport/handshaker_factory.h +49 -0
- data/src/core/lib/transport/handshaker_registry.cc +54 -0
- data/src/core/lib/transport/handshaker_registry.h +72 -0
- data/src/core/lib/transport/http_connect_handshaker.cc +401 -0
- data/src/core/lib/transport/http_connect_handshaker.h +42 -0
- data/src/core/lib/transport/metadata_batch.cc +213 -318
- data/src/core/lib/transport/metadata_batch.h +1230 -158
- data/src/core/lib/transport/parsed_metadata.cc +39 -0
- data/src/core/lib/transport/parsed_metadata.h +408 -0
- data/src/core/lib/transport/pid_controller.cc +4 -4
- data/src/core/lib/transport/status_conversion.cc +4 -2
- data/src/core/lib/transport/status_conversion.h +3 -3
- data/src/core/lib/transport/tcp_connect_handshaker.cc +253 -0
- data/src/core/lib/transport/tcp_connect_handshaker.h +39 -0
- data/src/core/lib/transport/timeout_encoding.cc +203 -70
- data/src/core/lib/transport/timeout_encoding.h +44 -10
- data/src/core/lib/transport/transport.cc +33 -52
- data/src/core/lib/transport/transport.h +137 -10
- data/src/core/lib/transport/transport_impl.h +24 -0
- data/src/core/lib/transport/transport_op_string.cc +21 -44
- data/src/core/lib/uri/uri_parser.cc +248 -66
- data/src/core/lib/uri/uri_parser.h +39 -25
- data/src/core/plugin_registry/grpc_plugin_registry.cc +84 -90
- 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 +5 -0
- 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 +54 -55
- 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 +56 -42
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +1 -1
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +2 -1
- 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 +3 -5
- 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 +26 -9
- 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 +3 -6
- data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +2 -0
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +20 -55
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +8 -11
- data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +4 -2
- data/src/core/tsi/ssl_transport_security.cc +261 -79
- data/src/core/tsi/ssl_transport_security.h +53 -16
- 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/bin/math_services_pb.rb +1 -1
- data/src/ruby/ext/grpc/extconf.rb +31 -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 +24 -10
- data/src/ruby/ext/grpc/rb_channel_args.c +2 -2
- data/src/ruby/ext/grpc/rb_channel_credentials.c +15 -5
- data/src/ruby/ext/grpc/rb_channel_credentials.h +5 -0
- data/src/ruby/ext/grpc/rb_completion_queue.c +3 -2
- data/src/ruby/ext/grpc/rb_compression_options.c +6 -5
- data/src/ruby/ext/grpc/rb_enable_cpp.cc +1 -1
- data/src/ruby/ext/grpc/rb_event_thread.c +4 -4
- data/src/ruby/ext/grpc/rb_grpc.c +9 -4
- data/src/ruby/ext/grpc/rb_grpc.h +1 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +38 -34
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +59 -53
- data/src/ruby/ext/grpc/rb_server.c +26 -10
- data/src/ruby/ext/grpc/rb_server_credentials.c +22 -6
- data/src/ruby/ext/grpc/rb_server_credentials.h +5 -0
- data/src/ruby/ext/grpc/rb_xds_channel_credentials.c +218 -0
- data/src/ruby/ext/grpc/rb_xds_channel_credentials.h +37 -0
- data/src/ruby/ext/grpc/rb_xds_server_credentials.c +170 -0
- data/src/ruby/ext/grpc/rb_xds_server_credentials.h +37 -0
- data/src/ruby/lib/grpc/generic/active_call.rb +7 -1
- data/src/ruby/lib/grpc/generic/client_stub.rb +4 -2
- 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/grpc/health/v1/health_services_pb.rb +1 -1
- data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +7 -0
- data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +1 -0
- data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +6 -6
- 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/call_spec.rb +1 -1
- data/src/ruby/spec/channel_credentials_spec.rb +32 -0
- data/src/ruby/spec/channel_spec.rb +17 -6
- data/src/ruby/spec/client_auth_spec.rb +27 -1
- data/src/ruby/spec/client_server_spec.rb +1 -1
- data/src/ruby/spec/errors_spec.rb +1 -1
- data/src/ruby/spec/generic/active_call_spec.rb +2 -2
- data/src/ruby/spec/generic/client_stub_spec.rb +4 -4
- data/src/ruby/spec/generic/rpc_server_spec.rb +1 -1
- data/src/ruby/spec/server_credentials_spec.rb +25 -0
- data/src/ruby/spec/server_spec.rb +22 -0
- data/third_party/abseil-cpp/absl/algorithm/container.h +104 -94
- data/third_party/abseil-cpp/absl/base/attributes.h +88 -35
- data/third_party/abseil-cpp/absl/base/call_once.h +2 -9
- data/third_party/abseil-cpp/absl/base/config.h +102 -44
- data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +25 -36
- data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +4 -1
- data/third_party/abseil-cpp/absl/base/internal/endian.h +61 -0
- data/third_party/abseil-cpp/absl/base/internal/fast_type_id.h +48 -0
- data/third_party/abseil-cpp/absl/base/internal/low_level_scheduling.h +2 -3
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +34 -32
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +16 -6
- data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +11 -2
- data/third_party/abseil-cpp/absl/base/internal/spinlock.h +17 -6
- data/third_party/abseil-cpp/absl/base/internal/spinlock_akaros.inc +2 -2
- data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +3 -3
- data/third_party/abseil-cpp/absl/base/internal/spinlock_posix.inc +2 -2
- data/third_party/abseil-cpp/absl/base/internal/spinlock_wait.h +13 -11
- data/third_party/abseil-cpp/absl/base/internal/spinlock_win32.inc +5 -5
- data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +70 -1
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +9 -6
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +58 -52
- data/third_party/abseil-cpp/absl/base/internal/throw_delegate.cc +111 -7
- data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +0 -76
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +17 -3
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +4 -4
- data/third_party/abseil-cpp/absl/base/log_severity.h +4 -4
- data/third_party/abseil-cpp/absl/base/macros.h +11 -0
- data/third_party/abseil-cpp/absl/base/optimization.h +10 -7
- data/third_party/abseil-cpp/absl/base/options.h +1 -1
- data/third_party/abseil-cpp/absl/base/port.h +0 -1
- data/third_party/abseil-cpp/absl/base/thread_annotations.h +1 -1
- data/third_party/abseil-cpp/absl/cleanup/cleanup.h +140 -0
- data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +100 -0
- data/third_party/abseil-cpp/absl/container/fixed_array.h +2 -7
- data/third_party/abseil-cpp/absl/container/flat_hash_set.h +1 -1
- data/third_party/abseil-cpp/absl/container/inlined_vector.h +110 -100
- data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +1 -1
- 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 +23 -103
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +39 -79
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler_force_weak_definition.cc +2 -1
- data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +469 -429
- data/third_party/abseil-cpp/absl/container/internal/layout.h +4 -4
- 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 +21 -2
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +374 -243
- data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +27 -13
- 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_aarch64-inl.inc +5 -2
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +15 -17
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +110 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +6 -1
- 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 +11 -7
- 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_darwin.inc +2 -2
- data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +16 -2
- 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/city.cc +15 -12
- data/third_party/abseil-cpp/absl/hash/internal/city.h +1 -19
- data/third_party/abseil-cpp/absl/hash/internal/hash.cc +27 -13
- data/third_party/abseil-cpp/absl/hash/internal/hash.h +145 -45
- data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc +123 -0
- data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.h +50 -0
- data/third_party/abseil-cpp/absl/memory/memory.h +1 -1
- data/third_party/abseil-cpp/absl/meta/type_traits.h +47 -3
- data/third_party/abseil-cpp/absl/numeric/bits.h +177 -0
- data/third_party/abseil-cpp/absl/numeric/int128.cc +6 -13
- 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/numeric/internal/bits.h +358 -0
- data/third_party/abseil-cpp/absl/numeric/internal/representation.h +55 -0
- data/third_party/abseil-cpp/absl/profiling/internal/exponential_biased.cc +93 -0
- data/third_party/abseil-cpp/absl/profiling/internal/exponential_biased.h +130 -0
- data/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h +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 +18 -0
- data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +4 -7
- data/third_party/abseil-cpp/absl/status/status.cc +27 -28
- data/third_party/abseil-cpp/absl/status/status.h +98 -33
- data/third_party/abseil-cpp/absl/status/statusor.cc +34 -2
- data/third_party/abseil-cpp/absl/status/statusor.h +34 -24
- data/third_party/abseil-cpp/absl/strings/charconv.cc +8 -8
- data/third_party/abseil-cpp/absl/strings/charconv.h +3 -2
- data/third_party/abseil-cpp/absl/strings/cord.cc +619 -570
- data/third_party/abseil-cpp/absl/strings/cord.h +346 -101
- data/third_party/abseil-cpp/absl/strings/escaping.cc +4 -4
- data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +7 -7
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +89 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +478 -31
- 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 +146 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +771 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.h +607 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring_reader.h +118 -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.cc +14 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +22 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +18 -5
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +20 -5
- data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +14 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +6 -6
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +36 -18
- data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +36 -18
- data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +14 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +76 -73
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +38 -16
- data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +49 -74
- data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +64 -0
- data/third_party/abseil-cpp/absl/strings/match.cc +6 -3
- data/third_party/abseil-cpp/absl/strings/match.h +16 -6
- data/third_party/abseil-cpp/absl/strings/numbers.cc +133 -5
- data/third_party/abseil-cpp/absl/strings/numbers.h +44 -10
- 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/str_join.h +1 -1
- data/third_party/abseil-cpp/absl/strings/str_split.h +38 -4
- 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/futex.h +154 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +1 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +2 -1
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +2 -2
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +4 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +2 -66
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +2 -6
- data/third_party/abseil-cpp/absl/synchronization/mutex.cc +71 -59
- data/third_party/abseil-cpp/absl/synchronization/mutex.h +82 -65
- data/third_party/abseil-cpp/absl/time/civil_time.cc +1 -3
- data/third_party/abseil-cpp/absl/time/clock.cc +146 -130
- data/third_party/abseil-cpp/absl/time/clock.h +2 -2
- data/third_party/abseil-cpp/absl/time/duration.cc +3 -2
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +7 -11
- 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_libc.cc +7 -1
- 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 +5 -5
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +2 -3
- data/third_party/abseil-cpp/absl/time/time.cc +4 -3
- data/third_party/abseil-cpp/absl/time/time.h +93 -60
- data/third_party/abseil-cpp/absl/types/bad_optional_access.h +1 -1
- data/third_party/abseil-cpp/absl/types/bad_variant_access.h +2 -2
- data/third_party/abseil-cpp/absl/types/internal/variant.h +1 -1
- data/third_party/abseil-cpp/absl/types/span.h +3 -3
- data/third_party/abseil-cpp/absl/types/variant.h +9 -4
- data/third_party/address_sorting/address_sorting_posix.c +1 -0
- data/third_party/boringssl-with-bazel/err_data.c +760 -724
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +70 -57
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +22 -23
- 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_enum.c +2 -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_int.c +5 -5
- 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 +67 -54
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_octet.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_print.c +19 -29
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strex.c +650 -0
- 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 +22 -10
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +3 -42
- 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 +75 -63
- 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/internal.h +224 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +79 -354
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +327 -281
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +15 -26
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.c +20 -75
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.c +8 -8
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.c +3 -2
- 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/bio/socket_helper.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +156 -0
- data/third_party/boringssl-with-bazel/src/crypto/bn_extra/bn_asn1.c +3 -10
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c +11 -10
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbb.c +9 -0
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +68 -45
- 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 +49 -65
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_chacha20poly1305.c +6 -81
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +1 -88
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +101 -3
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +119 -273
- data/third_party/boringssl-with-bazel/src/crypto/conf/conf.c +14 -3
- data/third_party/boringssl-with-bazel/src/crypto/cpu-aarch64-win.c +41 -0
- data/third_party/boringssl-with-bazel/src/crypto/cpu-arm-linux.c +11 -2
- data/third_party/boringssl-with-bazel/src/crypto/cpu-arm.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/{dh → dh_extra}/dh_asn1.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/dh_extra/params.c +272 -0
- data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +31 -3
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +21 -0
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_asn1.c +2 -17
- data/third_party/boringssl-with-bazel/src/crypto/err/err.c +87 -80
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +9 -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/bcm.c +4 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bn.c +13 -20
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +28 -12
- 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 +15 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/prime.c +0 -4
- 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 +44 -16
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +35 -2
- 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/{dh → fipsmodule/dh}/check.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/dh.c +456 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.c +9 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digests.c +10 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/md32_common.h +87 -160
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +16 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +9 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +0 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +105 -95
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/internal.h +39 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md4/md4.c +56 -72
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5.c +56 -73
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +33 -22
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cfb.c +9 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +9 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +17 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm_nohw.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +1 -22
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +30 -9
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +123 -44
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +30 -20
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +50 -33
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +65 -41
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/fips.c +79 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +168 -16
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +93 -107
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +91 -113
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +50 -86
- data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +400 -325
- 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 +125 -0
- 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 +46 -9
- data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +10 -6
- 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 +156 -15
- 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 +96 -49
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.c +11 -8
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm.c +13 -11
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_vec.c +4 -0
- 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/passive.c +34 -0
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/rand_extra.c +5 -1
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/windows.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_asn1.c +1 -2
- data/third_party/boringssl-with-bazel/src/crypto/siphash/siphash.c +6 -6
- data/third_party/boringssl-with-bazel/src/crypto/stack/stack.c +7 -13
- data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +0 -28
- 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 +351 -13
- 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 +20 -5
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c +10 -5
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_req.c +2 -0
- 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 +7 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +24 -47
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +4 -31
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.c +12 -9
- 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_req.c +42 -89
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +17 -24
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c +26 -23
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +25 -69
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c +54 -74
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +61 -23
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +2 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509rset.c +3 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +21 -19
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +3 -16
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c +21 -34
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +15 -13
- 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_pkey.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +25 -22
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_req.c +5 -8
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_val.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +50 -14
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +5 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +239 -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 +27 -8
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +29 -18
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c +6 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +26 -25
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +10 -13
- 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 +7 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c +40 -20
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ia5.c +3 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +48 -40
- 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 +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +7 -6
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +86 -44
- data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +1 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +69 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +1794 -665
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +5 -179
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +63 -14
- 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/blake2.h +62 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/bn.h +3 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +32 -7
- data/third_party/boringssl-with-bazel/src/include/openssl/chacha.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +36 -7
- data/third_party/boringssl-with-bazel/src/include/openssl/conf.h +8 -5
- data/third_party/boringssl-with-bazel/src/include/openssl/cpu.h +22 -32
- data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +24 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +60 -38
- data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +10 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +27 -41
- data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +20 -2
- 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 +41 -10
- data/third_party/boringssl-with-bazel/src/include/openssl/err.h +3 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +67 -106
- data/third_party/boringssl-with-bazel/src/include/openssl/evp_errors.h +99 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/hkdf.h +4 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +350 -0
- 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 +26 -6
- data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +0 -20
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +42 -18
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +15 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/pool.h +7 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +5 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +128 -91
- data/third_party/boringssl-with-bazel/src/include/openssl/span.h +39 -16
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +435 -119
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +48 -36
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +1397 -380
- data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +16 -679
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +192 -52
- data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +16 -18
- data/third_party/boringssl-with-bazel/src/ssl/d1_srtp.cc +1 -1
- data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +1084 -0
- data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +4325 -0
- data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +298 -22
- data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +92 -44
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +314 -217
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +177 -35
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +493 -154
- data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +9 -3
- data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +0 -2
- data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +14 -19
- data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +7 -8
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +4 -6
- 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 +34 -31
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +64 -112
- data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +2 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +136 -104
- data/third_party/boringssl-with-bazel/src/ssl/ssl_stat.cc +3 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc +12 -17
- data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +11 -3
- data/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc +28 -23
- data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +5 -7
- data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +79 -34
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +235 -178
- data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +160 -91
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +269 -118
- data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +4 -2
- data/third_party/cares/cares/include/ares.h +742 -0
- data/third_party/cares/cares/include/ares_dns.h +112 -0
- data/third_party/cares/cares/{ares_rules.h → include/ares_rules.h} +0 -0
- data/third_party/cares/cares/include/ares_version.h +24 -0
- data/third_party/cares/cares/src/lib/ares__close_sockets.c +61 -0
- data/third_party/cares/cares/src/lib/ares__get_hostent.c +260 -0
- data/third_party/cares/cares/src/lib/ares__parse_into_addrinfo.c +260 -0
- data/third_party/cares/cares/{ares__read_line.c → src/lib/ares__read_line.c} +0 -0
- data/third_party/cares/cares/src/lib/ares__readaddrinfo.c +264 -0
- data/third_party/cares/cares/src/lib/ares__sortaddrinfo.c +499 -0
- data/third_party/cares/cares/{ares__timeval.c → src/lib/ares__timeval.c} +0 -0
- data/third_party/cares/cares/src/lib/ares_android.c +444 -0
- data/third_party/cares/cares/src/lib/ares_android.h +27 -0
- data/third_party/cares/cares/{ares_cancel.c → src/lib/ares_cancel.c} +0 -0
- data/third_party/cares/cares/src/lib/ares_create_query.c +197 -0
- data/third_party/cares/cares/src/lib/ares_data.c +240 -0
- data/third_party/cares/cares/src/lib/ares_data.h +74 -0
- data/third_party/cares/cares/{ares_destroy.c → src/lib/ares_destroy.c} +0 -0
- data/third_party/cares/cares/src/lib/ares_expand_name.c +300 -0
- data/third_party/cares/cares/src/lib/ares_expand_string.c +67 -0
- data/third_party/cares/cares/{ares_fds.c → src/lib/ares_fds.c} +0 -0
- data/third_party/cares/cares/src/lib/ares_free_hostent.c +43 -0
- data/third_party/cares/cares/{ares_free_string.c → src/lib/ares_free_string.c} +0 -0
- data/third_party/cares/cares/src/lib/ares_freeaddrinfo.c +59 -0
- data/third_party/cares/cares/src/lib/ares_getaddrinfo.c +772 -0
- data/third_party/cares/cares/src/lib/ares_getenv.c +28 -0
- data/third_party/cares/cares/{ares_getenv.h → src/lib/ares_getenv.h} +0 -0
- data/third_party/cares/cares/src/lib/ares_gethostbyaddr.c +287 -0
- data/third_party/cares/cares/src/lib/ares_gethostbyname.c +534 -0
- data/third_party/cares/cares/src/lib/ares_getnameinfo.c +447 -0
- data/third_party/cares/cares/{ares_getsock.c → src/lib/ares_getsock.c} +0 -0
- data/third_party/cares/cares/{ares_inet_net_pton.h → src/lib/ares_inet_net_pton.h} +0 -0
- data/third_party/cares/cares/src/lib/ares_init.c +2654 -0
- data/third_party/cares/cares/{ares_iphlpapi.h → src/lib/ares_iphlpapi.h} +0 -0
- data/third_party/cares/cares/src/lib/ares_ipv6.h +85 -0
- data/third_party/cares/cares/src/lib/ares_library_init.c +200 -0
- data/third_party/cares/cares/src/lib/ares_library_init.h +43 -0
- data/third_party/cares/cares/{ares_llist.c → src/lib/ares_llist.c} +0 -0
- data/third_party/cares/cares/{ares_llist.h → src/lib/ares_llist.h} +0 -0
- data/third_party/cares/cares/{ares_mkquery.c → src/lib/ares_mkquery.c} +0 -0
- data/third_party/cares/cares/src/lib/ares_nameser.h +482 -0
- data/third_party/cares/cares/{ares_nowarn.c → src/lib/ares_nowarn.c} +0 -0
- data/third_party/cares/cares/{ares_nowarn.h → src/lib/ares_nowarn.h} +0 -0
- data/third_party/cares/cares/{ares_options.c → src/lib/ares_options.c} +0 -0
- data/third_party/cares/cares/src/lib/ares_parse_a_reply.c +209 -0
- data/third_party/cares/cares/src/lib/ares_parse_aaaa_reply.c +212 -0
- data/third_party/cares/cares/src/lib/ares_parse_caa_reply.c +199 -0
- data/third_party/cares/cares/src/lib/ares_parse_mx_reply.c +164 -0
- data/third_party/cares/cares/src/lib/ares_parse_naptr_reply.c +183 -0
- data/third_party/cares/cares/src/lib/ares_parse_ns_reply.c +177 -0
- data/third_party/cares/cares/src/lib/ares_parse_ptr_reply.c +228 -0
- data/third_party/cares/cares/src/lib/ares_parse_soa_reply.c +179 -0
- data/third_party/cares/cares/src/lib/ares_parse_srv_reply.c +168 -0
- data/third_party/cares/cares/src/lib/ares_parse_txt_reply.c +214 -0
- data/third_party/cares/cares/{ares_platform.c → src/lib/ares_platform.c} +0 -0
- data/third_party/cares/cares/{ares_platform.h → src/lib/ares_platform.h} +0 -0
- data/third_party/cares/cares/src/lib/ares_private.h +423 -0
- data/third_party/cares/cares/src/lib/ares_process.c +1548 -0
- data/third_party/cares/cares/src/lib/ares_query.c +180 -0
- data/third_party/cares/cares/src/lib/ares_search.c +321 -0
- data/third_party/cares/cares/src/lib/ares_send.c +131 -0
- data/third_party/cares/cares/src/lib/ares_setup.h +220 -0
- data/third_party/cares/cares/{ares_strcasecmp.c → src/lib/ares_strcasecmp.c} +0 -0
- data/third_party/cares/cares/{ares_strcasecmp.h → src/lib/ares_strcasecmp.h} +0 -0
- data/third_party/cares/cares/{ares_strdup.c → src/lib/ares_strdup.c} +0 -0
- data/third_party/cares/cares/{ares_strdup.h → src/lib/ares_strdup.h} +0 -0
- data/third_party/cares/cares/{ares_strerror.c → src/lib/ares_strerror.c} +0 -0
- data/third_party/cares/cares/src/lib/ares_strsplit.c +178 -0
- data/third_party/cares/cares/{ares_strsplit.h → src/lib/ares_strsplit.h} +0 -0
- data/third_party/cares/cares/{ares_timeout.c → src/lib/ares_timeout.c} +0 -0
- data/third_party/cares/cares/{ares_version.c → src/lib/ares_version.c} +0 -0
- data/third_party/cares/cares/{ares_writev.c → src/lib/ares_writev.c} +0 -0
- data/third_party/cares/cares/src/lib/ares_writev.h +36 -0
- data/third_party/cares/cares/{bitncmp.c → src/lib/bitncmp.c} +0 -0
- data/third_party/cares/cares/{bitncmp.h → src/lib/bitncmp.h} +0 -0
- data/third_party/cares/cares/src/lib/config-dos.h +115 -0
- data/third_party/cares/cares/{config-win32.h → src/lib/config-win32.h} +0 -0
- data/third_party/cares/cares/src/lib/inet_net_pton.c +444 -0
- data/third_party/cares/cares/src/lib/inet_ntop.c +201 -0
- data/third_party/cares/cares/{setup_once.h → src/lib/setup_once.h} +0 -0
- data/third_party/cares/cares/{windows_port.c → src/lib/windows_port.c} +0 -0
- data/third_party/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 +267 -204
- data/third_party/upb/upb/json_encode.h +33 -7
- 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 +5580 -0
- 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 +734 -307
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +0 -388
- data/src/core/ext/filters/client_channel/http_connect_handshaker.h +0 -34
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +0 -45
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +0 -85
- 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.cc +0 -87
- data/src/core/ext/filters/client_channel/resolver.h +0 -147
- data/src/core/ext/filters/client_channel/resolver_factory.h +0 -73
- 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/server_address.cc +0 -161
- data/src/core/ext/filters/client_channel/server_address.h +0 -113
- data/src/core/ext/filters/client_channel/service_config.cc +0 -226
- data/src/core/ext/filters/client_channel/service_config.h +0 -126
- data/src/core/ext/filters/client_channel/service_config_call_data.h +0 -86
- data/src/core/ext/filters/client_channel/service_config_parser.cc +0 -89
- data/src/core/ext/filters/client_channel/service_config_parser.h +0 -92
- data/src/core/ext/filters/client_idle/client_idle_filter.cc +0 -440
- data/src/core/ext/filters/max_age/max_age_filter.cc +0 -557
- data/src/core/ext/filters/max_age/max_age_filter.h +0 -26
- data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +0 -210
- data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.h +0 -27
- 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 -124
- data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +0 -90
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +0 -212
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +0 -45
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +0 -76
- data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +0 -86
- data/src/core/ext/transport/chttp2/transport/chttp2_plugin.cc +0 -37
- data/src/core/ext/transport/chttp2/transport/hpack_table.cc +0 -242
- 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 -30
- 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 -30
- 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 -29
- 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/core/v1/authority.upb.c +0 -28
- data/src/core/ext/upb-generated/udpa/core/v1/authority.upb.h +0 -60
- data/src/core/ext/upb-generated/udpa/core/v1/collection_entry.upb.c +0 -52
- data/src/core/ext/upb-generated/udpa/core/v1/collection_entry.upb.h +0 -143
- data/src/core/ext/upb-generated/udpa/core/v1/context_params.upb.c +0 -42
- data/src/core/ext/upb-generated/udpa/core/v1/context_params.upb.h +0 -84
- data/src/core/ext/upb-generated/udpa/core/v1/resource.upb.c +0 -36
- data/src/core/ext/upb-generated/udpa/core/v1/resource.upb.h +0 -94
- data/src/core/ext/upb-generated/udpa/core/v1/resource_locator.upb.c +0 -54
- data/src/core/ext/upb-generated/udpa/core/v1/resource_locator.upb.h +0 -173
- data/src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.c +0 -36
- data/src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.h +0 -92
- 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/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 -83
- 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 -82
- 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 -86
- 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/core/v1/authority.upbdefs.c +0 -42
- data/src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.h +0 -35
- data/src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.c +0 -62
- data/src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.h +0 -40
- data/src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.c +0 -45
- data/src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.h +0 -40
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.c +0 -49
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.h +0 -35
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.c +0 -68
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.h +0 -40
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.c +0 -51
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.h +0 -35
- data/src/core/lib/avl/avl.cc +0 -306
- data/src/core/lib/channel/handshaker.cc +0 -262
- data/src/core/lib/channel/handshaker.h +0 -179
- data/src/core/lib/channel/handshaker_factory.h +0 -42
- data/src/core/lib/channel/handshaker_registry.cc +0 -105
- data/src/core/lib/channel/handshaker_registry.h +0 -54
- 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/arena.h +0 -47
- 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/arena.cc +0 -103
- data/src/core/lib/gprpp/arena.h +0 -121
- 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 -1658
- 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_posix.h +0 -26
- 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/is_epollexclusive_available.h +0 -36
- data/src/core/lib/iomgr/parse_address.cc +0 -322
- data/src/core/lib/iomgr/parse_address.h +0 -77
- data/src/core/lib/iomgr/poller/eventmanager_libuv.cc +0 -88
- data/src/core/lib/iomgr/poller/eventmanager_libuv.h +0 -88
- data/src/core/lib/iomgr/pollset_custom.cc +0 -106
- data/src/core/lib/iomgr/pollset_custom.h +0 -35
- 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 -93
- data/src/core/lib/iomgr/pollset_uv.h +0 -32
- data/src/core/lib/iomgr/resolve_address_custom.cc +0 -168
- data/src/core/lib/iomgr/resolve_address_custom.h +0 -45
- data/src/core/lib/iomgr/resource_quota.cc +0 -1016
- 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/sockaddr_utils.cc +0 -296
- data/src/core/lib/iomgr/sockaddr_utils.h +0 -80
- data/src/core/lib/iomgr/socket_utils_uv.cc +0 -49
- data/src/core/lib/iomgr/sys_epoll_wrapper.h +0 -30
- data/src/core/lib/iomgr/tcp_client_custom.cc +0 -161
- data/src/core/lib/iomgr/tcp_custom.cc +0 -391
- data/src/core/lib/iomgr/tcp_custom.h +0 -84
- data/src/core/lib/iomgr/tcp_server_custom.cc +0 -483
- data/src/core/lib/iomgr/tcp_uv.cc +0 -419
- data/src/core/lib/iomgr/timer_custom.cc +0 -95
- 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 -747
- data/src/core/lib/iomgr/udp_server.h +0 -103
- data/src/core/lib/security/authorization/authorization_engine.cc +0 -177
- data/src/core/lib/security/authorization/mock_cel/activation.h +0 -57
- data/src/core/lib/security/authorization/mock_cel/cel_expr_builder_factory.h +0 -44
- data/src/core/lib/security/authorization/mock_cel/cel_expression.h +0 -69
- data/src/core/lib/security/authorization/mock_cel/cel_value.h +0 -97
- data/src/core/lib/security/authorization/mock_cel/evaluator_core.h +0 -67
- data/src/core/lib/security/authorization/mock_cel/flat_expr_builder.h +0 -57
- data/src/core/lib/security/credentials/credentials_metadata.cc +0 -62
- data/src/core/lib/slice/slice_intern.cc +0 -374
- 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/authority_override.cc +0 -40
- data/src/core/lib/transport/authority_override.h +0 -37
- data/src/core/lib/transport/metadata.cc +0 -689
- data/src/core/lib/transport/metadata.h +0 -446
- 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/abseil-cpp/absl/base/internal/bits.h +0 -219
- data/third_party/abseil-cpp/absl/base/internal/exponential_biased.cc +0 -93
- data/third_party/abseil-cpp/absl/base/internal/exponential_biased.h +0 -130
- data/third_party/abseil-cpp/absl/synchronization/internal/mutex_nonprod.inc +0 -249
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_locl.h +0 -104
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_enum.c +0 -93
- data/third_party/boringssl-with-bazel/src/crypto/dh/dh.c +0 -533
- data/third_party/boringssl-with-bazel/src/crypto/dh/params.c +0 -93
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/is_fips.c +0 -29
- data/third_party/boringssl-with-bazel/src/crypto/hpke/internal.h +0 -237
- data/third_party/boringssl-with-bazel/src/crypto/x509/a_strex.c +0 -653
- data/third_party/boringssl-with-bazel/src/crypto/x509/vpm_int.h +0 -71
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_r2x.c +0 -116
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_int.h +0 -217
- data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +0 -4100
- data/third_party/cares/cares/ares.h +0 -670
- data/third_party/cares/cares/ares__close_sockets.c +0 -61
- data/third_party/cares/cares/ares__get_hostent.c +0 -261
- data/third_party/cares/cares/ares_create_query.c +0 -206
- data/third_party/cares/cares/ares_data.c +0 -222
- data/third_party/cares/cares/ares_data.h +0 -72
- data/third_party/cares/cares/ares_dns.h +0 -103
- data/third_party/cares/cares/ares_expand_name.c +0 -209
- data/third_party/cares/cares/ares_expand_string.c +0 -70
- data/third_party/cares/cares/ares_free_hostent.c +0 -41
- data/third_party/cares/cares/ares_getenv.c +0 -30
- data/third_party/cares/cares/ares_gethostbyaddr.c +0 -294
- data/third_party/cares/cares/ares_gethostbyname.c +0 -529
- data/third_party/cares/cares/ares_getnameinfo.c +0 -453
- data/third_party/cares/cares/ares_getopt.c +0 -122
- data/third_party/cares/cares/ares_getopt.h +0 -53
- data/third_party/cares/cares/ares_init.c +0 -2615
- data/third_party/cares/cares/ares_ipv6.h +0 -78
- data/third_party/cares/cares/ares_library_init.c +0 -195
- data/third_party/cares/cares/ares_library_init.h +0 -43
- data/third_party/cares/cares/ares_parse_a_reply.c +0 -264
- data/third_party/cares/cares/ares_parse_aaaa_reply.c +0 -264
- data/third_party/cares/cares/ares_parse_mx_reply.c +0 -170
- data/third_party/cares/cares/ares_parse_naptr_reply.c +0 -194
- data/third_party/cares/cares/ares_parse_ns_reply.c +0 -183
- data/third_party/cares/cares/ares_parse_ptr_reply.c +0 -221
- data/third_party/cares/cares/ares_parse_soa_reply.c +0 -133
- data/third_party/cares/cares/ares_parse_srv_reply.c +0 -179
- data/third_party/cares/cares/ares_parse_txt_reply.c +0 -220
- data/third_party/cares/cares/ares_private.h +0 -382
- data/third_party/cares/cares/ares_process.c +0 -1473
- data/third_party/cares/cares/ares_query.c +0 -186
- data/third_party/cares/cares/ares_search.c +0 -323
- data/third_party/cares/cares/ares_send.c +0 -137
- data/third_party/cares/cares/ares_setup.h +0 -217
- data/third_party/cares/cares/ares_strsplit.c +0 -174
- data/third_party/cares/cares/ares_version.h +0 -24
- data/third_party/cares/cares/inet_net_pton.c +0 -450
- data/third_party/cares/cares/inet_ntop.c +0 -207
- data/third_party/upb/third_party/wyhash/wyhash.h +0 -145
- data/third_party/upb/upb/decode.int.h +0 -163
- data/third_party/upb/upb/json_decode.c +0 -1443
- data/third_party/upb/upb/json_decode.h +0 -23
- data/third_party/upb/upb/table.int.h +0 -475
- data/third_party/upb/upb/upb.int.h +0 -29
@@ -1,23 +1,23 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
*
|
17
|
-
*/
|
1
|
+
//
|
2
|
+
// Copyright 2018 gRPC authors.
|
3
|
+
//
|
4
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
// you may not use this file except in compliance with the License.
|
6
|
+
// You may obtain a copy of the License at
|
7
|
+
//
|
8
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
//
|
10
|
+
// Unless required by applicable law or agreed to in writing, software
|
11
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
// See the License for the specific language governing permissions and
|
14
|
+
// limitations under the License.
|
15
|
+
//
|
18
16
|
|
19
17
|
#include <grpc/support/port_platform.h>
|
20
18
|
|
19
|
+
#include "src/core/ext/xds/xds_client.h"
|
20
|
+
|
21
21
|
#include <inttypes.h>
|
22
22
|
#include <limits.h>
|
23
23
|
#include <string.h>
|
@@ -33,28 +33,35 @@
|
|
33
33
|
#include <grpc/support/time.h>
|
34
34
|
|
35
35
|
#include "src/core/ext/filters/client_channel/client_channel.h"
|
36
|
-
#include "src/core/ext/filters/client_channel/service_config.h"
|
37
36
|
#include "src/core/ext/xds/xds_api.h"
|
37
|
+
#include "src/core/ext/xds/xds_bootstrap.h"
|
38
38
|
#include "src/core/ext/xds/xds_channel_args.h"
|
39
|
-
#include "src/core/ext/xds/xds_client.h"
|
40
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"
|
43
|
+
#include "src/core/ext/xds/xds_http_filters.h"
|
44
|
+
#include "src/core/ext/xds/xds_listener.h"
|
45
|
+
#include "src/core/lib/address_utils/sockaddr_utils.h"
|
41
46
|
#include "src/core/lib/backoff/backoff.h"
|
42
47
|
#include "src/core/lib/channel/channel_args.h"
|
43
48
|
#include "src/core/lib/channel/channel_stack.h"
|
49
|
+
#include "src/core/lib/config/core_configuration.h"
|
50
|
+
#include "src/core/lib/gpr/env.h"
|
44
51
|
#include "src/core/lib/gpr/string.h"
|
45
52
|
#include "src/core/lib/gprpp/memory.h"
|
46
53
|
#include "src/core/lib/gprpp/orphanable.h"
|
47
54
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
48
55
|
#include "src/core/lib/gprpp/sync.h"
|
49
56
|
#include "src/core/lib/iomgr/sockaddr.h"
|
50
|
-
#include "src/core/lib/iomgr/sockaddr_utils.h"
|
51
57
|
#include "src/core/lib/iomgr/timer.h"
|
58
|
+
#include "src/core/lib/security/credentials/channel_creds_registry.h"
|
52
59
|
#include "src/core/lib/slice/slice_internal.h"
|
53
60
|
#include "src/core/lib/slice/slice_string_helpers.h"
|
54
61
|
#include "src/core/lib/surface/call.h"
|
55
62
|
#include "src/core/lib/surface/channel.h"
|
56
|
-
#include "src/core/lib/surface/
|
57
|
-
#include "src/core/lib/
|
63
|
+
#include "src/core/lib/surface/lame_client.h"
|
64
|
+
#include "src/core/lib/uri/uri_parser.h"
|
58
65
|
|
59
66
|
#define GRPC_XDS_INITIAL_CONNECT_BACKOFF_SECONDS 1
|
60
67
|
#define GRPC_XDS_RECONNECT_BACKOFF_MULTIPLIER 1.6
|
@@ -70,8 +77,10 @@ TraceFlag grpc_xds_client_refcount_trace(false, "xds_client_refcount");
|
|
70
77
|
namespace {
|
71
78
|
|
72
79
|
Mutex* g_mu = nullptr;
|
73
|
-
|
74
|
-
|
80
|
+
|
81
|
+
const grpc_channel_args* g_channel_args ABSL_GUARDED_BY(*g_mu) = nullptr;
|
82
|
+
XdsClient* g_xds_client ABSL_GUARDED_BY(*g_mu) = nullptr;
|
83
|
+
char* g_fallback_bootstrap_config ABSL_GUARDED_BY(*g_mu) = nullptr;
|
75
84
|
|
76
85
|
} // namespace
|
77
86
|
|
@@ -85,7 +94,7 @@ template <typename T>
|
|
85
94
|
class XdsClient::ChannelState::RetryableCall
|
86
95
|
: public InternallyRefCounted<RetryableCall<T>> {
|
87
96
|
public:
|
88
|
-
explicit RetryableCall(
|
97
|
+
explicit RetryableCall(WeakRefCountedPtr<ChannelState> chand);
|
89
98
|
|
90
99
|
void Orphan() override;
|
91
100
|
|
@@ -99,14 +108,14 @@ class XdsClient::ChannelState::RetryableCall
|
|
99
108
|
private:
|
100
109
|
void StartNewCallLocked();
|
101
110
|
void StartRetryTimerLocked();
|
102
|
-
static void OnRetryTimer(void* arg,
|
103
|
-
void OnRetryTimerLocked(
|
111
|
+
static void OnRetryTimer(void* arg, grpc_error_handle error);
|
112
|
+
void OnRetryTimerLocked(grpc_error_handle error);
|
104
113
|
|
105
114
|
// The wrapped xds call that talks to the xds server. It's instantiated
|
106
115
|
// every time we start a new call. It's null during call retry backoff.
|
107
116
|
OrphanablePtr<T> calld_;
|
108
117
|
// The owning xds channel.
|
109
|
-
|
118
|
+
WeakRefCountedPtr<ChannelState> chand_;
|
110
119
|
|
111
120
|
// Retry state.
|
112
121
|
BackOff backoff_;
|
@@ -132,32 +141,77 @@ class XdsClient::ChannelState::AdsCallState
|
|
132
141
|
XdsClient* xds_client() const { return chand()->xds_client(); }
|
133
142
|
bool seen_response() const { return seen_response_; }
|
134
143
|
|
135
|
-
void
|
136
|
-
|
137
|
-
|
144
|
+
void SubscribeLocked(const XdsResourceType* type, const XdsResourceName& name,
|
145
|
+
bool delay_send)
|
146
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
|
147
|
+
void UnsubscribeLocked(const XdsResourceType* type,
|
148
|
+
const XdsResourceName& name, bool delay_unsubscription)
|
149
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
|
138
150
|
|
139
151
|
bool HasSubscribedResources() const;
|
140
152
|
|
141
153
|
private:
|
142
|
-
class
|
154
|
+
class AdsResponseParser : public XdsApi::AdsResponseParserInterface {
|
143
155
|
public:
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
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) {
|
149
192
|
GRPC_CLOSURE_INIT(&timer_callback_, OnTimer, this,
|
150
193
|
grpc_schedule_on_exec_ctx);
|
151
194
|
}
|
152
195
|
|
153
196
|
void Orphan() override {
|
154
|
-
|
197
|
+
MaybeCancelTimer();
|
155
198
|
Unref(DEBUG_LOCATION, "Orphan");
|
156
199
|
}
|
157
200
|
|
158
|
-
void
|
159
|
-
|
160
|
-
|
201
|
+
void MaybeStartTimer(RefCountedPtr<AdsCallState> ads_calld)
|
202
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_) {
|
203
|
+
if (!timer_start_needed_) return;
|
204
|
+
timer_start_needed_ = false;
|
205
|
+
// Check if we already have a cached version of this resource
|
206
|
+
// (i.e., if this is the initial request for the resource after an
|
207
|
+
// ADS stream restart). If so, we don't start the timer, because
|
208
|
+
// (a) we already have the resource and (b) the server may
|
209
|
+
// optimize by not resending the resource that we already have.
|
210
|
+
auto& authority_state =
|
211
|
+
ads_calld->xds_client()->authority_state_map_[name_.authority];
|
212
|
+
ResourceState& state = authority_state.resource_map[type_][name_.key];
|
213
|
+
if (state.resource != nullptr) return;
|
214
|
+
// Start timer.
|
161
215
|
ads_calld_ = std::move(ads_calld);
|
162
216
|
Ref(DEBUG_LOCATION, "timer").release();
|
163
217
|
timer_pending_ = true;
|
@@ -167,7 +221,19 @@ class XdsClient::ChannelState::AdsCallState
|
|
167
221
|
&timer_callback_);
|
168
222
|
}
|
169
223
|
|
170
|
-
void
|
224
|
+
void MaybeCancelTimer() {
|
225
|
+
// If the timer hasn't been started yet, make sure we don't start
|
226
|
+
// it later. This can happen if the last watch for an LDS or CDS
|
227
|
+
// resource is cancelled and then restarted, both while an ADS
|
228
|
+
// request for a different resource type is being sent (causing
|
229
|
+
// the unsubscription and then resubscription requests to be
|
230
|
+
// queued), and then we get a response for the LDS or CDS resource.
|
231
|
+
// In that case, we would call MaybeCancelTimer() when we receive the
|
232
|
+
// response and then MaybeStartTimer() when we finally send the new
|
233
|
+
// LDS or CDS request, thus causing the timer to fire when it shouldn't.
|
234
|
+
// For details, see https://github.com/grpc/grpc/issues/29583.
|
235
|
+
// TODO(roth): Find a way to write a test for this case.
|
236
|
+
timer_start_needed_ = false;
|
171
237
|
if (timer_pending_) {
|
172
238
|
grpc_timer_cancel(&timer_);
|
173
239
|
timer_pending_ = false;
|
@@ -175,62 +241,47 @@ class XdsClient::ChannelState::AdsCallState
|
|
175
241
|
}
|
176
242
|
|
177
243
|
private:
|
178
|
-
static void OnTimer(void* arg,
|
179
|
-
|
244
|
+
static void OnTimer(void* arg, grpc_error_handle error) {
|
245
|
+
ResourceTimer* self = static_cast<ResourceTimer*>(arg);
|
180
246
|
{
|
181
247
|
MutexLock lock(&self->ads_calld_->xds_client()->mu_);
|
182
248
|
self->OnTimerLocked(GRPC_ERROR_REF(error));
|
183
249
|
}
|
250
|
+
self->ads_calld_->xds_client()->work_serializer_.DrainQueue();
|
184
251
|
self->ads_calld_.reset();
|
185
252
|
self->Unref(DEBUG_LOCATION, "timer");
|
186
253
|
}
|
187
254
|
|
188
|
-
void OnTimerLocked(
|
255
|
+
void OnTimerLocked(grpc_error_handle error)
|
256
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_) {
|
189
257
|
if (error == GRPC_ERROR_NONE && timer_pending_) {
|
190
258
|
timer_pending_ = false;
|
191
|
-
grpc_error* watcher_error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(
|
192
|
-
absl::StrFormat(
|
193
|
-
"timeout obtaining resource {type=%s name=%s} from xds server",
|
194
|
-
type_url_, name_)
|
195
|
-
.c_str());
|
196
259
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
197
|
-
gpr_log(GPR_INFO,
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
RouteConfigState& state =
|
207
|
-
ads_calld_->xds_client()->route_config_map_[name_];
|
208
|
-
for (const auto& p : state.watchers) {
|
209
|
-
p.first->OnError(GRPC_ERROR_REF(watcher_error));
|
210
|
-
}
|
211
|
-
} else if (type_url_ == XdsApi::kCdsTypeUrl) {
|
212
|
-
ClusterState& state = ads_calld_->xds_client()->cluster_map_[name_];
|
213
|
-
for (const auto& p : state.watchers) {
|
214
|
-
p.first->OnError(GRPC_ERROR_REF(watcher_error));
|
215
|
-
}
|
216
|
-
} else if (type_url_ == XdsApi::kEdsTypeUrl) {
|
217
|
-
EndpointState& state = ads_calld_->xds_client()->endpoint_map_[name_];
|
218
|
-
for (const auto& p : state.watchers) {
|
219
|
-
p.first->OnError(GRPC_ERROR_REF(watcher_error));
|
220
|
-
}
|
221
|
-
} else {
|
222
|
-
GPR_UNREACHABLE_CODE(return );
|
260
|
+
gpr_log(GPR_INFO,
|
261
|
+
"[xds_client %p] xds server %s: timeout obtaining resource "
|
262
|
+
"{type=%s name=%s} from xds server",
|
263
|
+
ads_calld_->xds_client(),
|
264
|
+
ads_calld_->chand()->server_.server_uri.c_str(),
|
265
|
+
std::string(type_->type_url()).c_str(),
|
266
|
+
XdsClient::ConstructFullXdsResourceName(
|
267
|
+
name_.authority, type_->type_url(), name_.key)
|
268
|
+
.c_str());
|
223
269
|
}
|
224
|
-
|
270
|
+
auto& authority_state =
|
271
|
+
ads_calld_->xds_client()->authority_state_map_[name_.authority];
|
272
|
+
ResourceState& state = authority_state.resource_map[type_][name_.key];
|
273
|
+
state.meta.client_status = XdsApi::ResourceMetadata::DOES_NOT_EXIST;
|
274
|
+
ads_calld_->xds_client()->NotifyWatchersOnResourceDoesNotExist(
|
275
|
+
state.watchers);
|
225
276
|
}
|
226
277
|
GRPC_ERROR_UNREF(error);
|
227
278
|
}
|
228
279
|
|
229
|
-
const
|
230
|
-
const
|
280
|
+
const XdsResourceType* type_;
|
281
|
+
const XdsResourceName name_;
|
231
282
|
|
232
283
|
RefCountedPtr<AdsCallState> ads_calld_;
|
233
|
-
bool
|
284
|
+
bool timer_start_needed_ = true;
|
234
285
|
bool timer_pending_ = false;
|
235
286
|
grpc_timer timer_;
|
236
287
|
grpc_closure timer_callback_;
|
@@ -241,31 +292,33 @@ class XdsClient::ChannelState::AdsCallState
|
|
241
292
|
|
242
293
|
// Nonce and error for this resource type.
|
243
294
|
std::string nonce;
|
244
|
-
|
295
|
+
grpc_error_handle error = GRPC_ERROR_NONE;
|
245
296
|
|
246
297
|
// Subscribed resources of this type.
|
247
|
-
std::map<std::string /*
|
298
|
+
std::map<std::string /*authority*/,
|
299
|
+
std::map<XdsResourceKey, OrphanablePtr<ResourceTimer>>>
|
248
300
|
subscribed_resources;
|
249
301
|
};
|
250
302
|
|
251
|
-
void SendMessageLocked(const
|
252
|
-
|
253
|
-
void AcceptLdsUpdate(XdsApi::LdsUpdateMap lds_update_map);
|
254
|
-
void AcceptRdsUpdate(XdsApi::RdsUpdateMap rds_update_map);
|
255
|
-
void AcceptCdsUpdate(XdsApi::CdsUpdateMap cds_update_map);
|
256
|
-
void AcceptEdsUpdate(XdsApi::EdsUpdateMap eds_update_map);
|
303
|
+
void SendMessageLocked(const XdsResourceType* type)
|
304
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
|
257
305
|
|
258
|
-
static void OnRequestSent(void* arg,
|
259
|
-
void OnRequestSentLocked(
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
306
|
+
static void OnRequestSent(void* arg, grpc_error_handle error);
|
307
|
+
void OnRequestSentLocked(grpc_error_handle error)
|
308
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
|
309
|
+
static void OnResponseReceived(void* arg, grpc_error_handle error);
|
310
|
+
bool OnResponseReceivedLocked()
|
311
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
|
312
|
+
static void OnStatusReceived(void* arg, grpc_error_handle error);
|
313
|
+
void OnStatusReceivedLocked(grpc_error_handle error)
|
314
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
|
264
315
|
|
265
316
|
bool IsCurrentCallOnChannel() const;
|
266
317
|
|
267
|
-
|
268
|
-
|
318
|
+
// Constructs a list of resource names of a given type for an ADS
|
319
|
+
// request. Also starts the timer for each resource if needed.
|
320
|
+
std::vector<std::string> ResourceNamesForRequest(const XdsResourceType* type)
|
321
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
|
269
322
|
|
270
323
|
// The owning RetryableCall<>.
|
271
324
|
RefCountedPtr<RetryableCall<AdsCallState>> parent_;
|
@@ -294,10 +347,10 @@ class XdsClient::ChannelState::AdsCallState
|
|
294
347
|
grpc_closure on_status_received_;
|
295
348
|
|
296
349
|
// Resource types for which requests need to be sent.
|
297
|
-
std::set<
|
350
|
+
std::set<const XdsResourceType*> buffered_requests_;
|
298
351
|
|
299
352
|
// State for each resource type.
|
300
|
-
std::map<
|
353
|
+
std::map<const XdsResourceType*, ResourceTypeState> state_map_;
|
301
354
|
};
|
302
355
|
|
303
356
|
// Contains an LRS call to the xds server.
|
@@ -321,7 +374,7 @@ class XdsClient::ChannelState::LrsCallState
|
|
321
374
|
// Reports client-side load stats according to a fixed interval.
|
322
375
|
class Reporter : public InternallyRefCounted<Reporter> {
|
323
376
|
public:
|
324
|
-
Reporter(RefCountedPtr<LrsCallState> parent,
|
377
|
+
Reporter(RefCountedPtr<LrsCallState> parent, Duration report_interval)
|
325
378
|
: parent_(std::move(parent)), report_interval_(report_interval) {
|
326
379
|
GRPC_CLOSURE_INIT(&on_next_report_timer_, OnNextReportTimer, this,
|
327
380
|
grpc_schedule_on_exec_ctx);
|
@@ -333,12 +386,15 @@ class XdsClient::ChannelState::LrsCallState
|
|
333
386
|
void Orphan() override;
|
334
387
|
|
335
388
|
private:
|
336
|
-
void ScheduleNextReportLocked()
|
337
|
-
|
338
|
-
|
339
|
-
bool
|
340
|
-
|
341
|
-
bool
|
389
|
+
void ScheduleNextReportLocked()
|
390
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
|
391
|
+
static void OnNextReportTimer(void* arg, grpc_error_handle error);
|
392
|
+
bool OnNextReportTimerLocked(grpc_error_handle error)
|
393
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
|
394
|
+
bool SendReportLocked() ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
|
395
|
+
static void OnReportDone(void* arg, grpc_error_handle error);
|
396
|
+
bool OnReportDoneLocked(grpc_error_handle error)
|
397
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
|
342
398
|
|
343
399
|
bool IsCurrentReporterOnCall() const {
|
344
400
|
return this == parent_->reporter_.get();
|
@@ -349,7 +405,7 @@ class XdsClient::ChannelState::LrsCallState
|
|
349
405
|
RefCountedPtr<LrsCallState> parent_;
|
350
406
|
|
351
407
|
// The load reporting state.
|
352
|
-
const
|
408
|
+
const Duration report_interval_;
|
353
409
|
bool last_report_counters_were_zero_ = false;
|
354
410
|
bool next_report_timer_callback_pending_ = false;
|
355
411
|
grpc_timer next_report_timer_;
|
@@ -357,12 +413,15 @@ class XdsClient::ChannelState::LrsCallState
|
|
357
413
|
grpc_closure on_report_done_;
|
358
414
|
};
|
359
415
|
|
360
|
-
static void OnInitialRequestSent(void* arg,
|
361
|
-
void OnInitialRequestSentLocked()
|
362
|
-
|
363
|
-
|
364
|
-
|
365
|
-
|
416
|
+
static void OnInitialRequestSent(void* arg, grpc_error_handle error);
|
417
|
+
void OnInitialRequestSentLocked()
|
418
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
|
419
|
+
static void OnResponseReceived(void* arg, grpc_error_handle error);
|
420
|
+
bool OnResponseReceivedLocked()
|
421
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
|
422
|
+
static void OnStatusReceived(void* arg, grpc_error_handle error);
|
423
|
+
void OnStatusReceivedLocked(grpc_error_handle error)
|
424
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
|
366
425
|
|
367
426
|
bool IsCurrentCallOnChannel() const;
|
368
427
|
|
@@ -393,7 +452,7 @@ class XdsClient::ChannelState::LrsCallState
|
|
393
452
|
// Load reporting state.
|
394
453
|
bool send_all_clusters_ = false;
|
395
454
|
std::set<std::string> cluster_names_; // Asked for by the LRS server.
|
396
|
-
|
455
|
+
Duration load_reporting_interval_;
|
397
456
|
OrphanablePtr<Reporter> reporter_;
|
398
457
|
};
|
399
458
|
|
@@ -404,27 +463,32 @@ class XdsClient::ChannelState::LrsCallState
|
|
404
463
|
class XdsClient::ChannelState::StateWatcher
|
405
464
|
: public AsyncConnectivityStateWatcherInterface {
|
406
465
|
public:
|
407
|
-
explicit StateWatcher(
|
466
|
+
explicit StateWatcher(WeakRefCountedPtr<ChannelState> parent)
|
408
467
|
: parent_(std::move(parent)) {}
|
409
468
|
|
410
469
|
private:
|
411
470
|
void OnConnectivityStateChange(grpc_connectivity_state new_state,
|
412
471
|
const absl::Status& status) override {
|
413
|
-
|
414
|
-
|
415
|
-
|
416
|
-
|
417
|
-
|
418
|
-
|
419
|
-
|
420
|
-
|
421
|
-
|
422
|
-
|
423
|
-
|
472
|
+
{
|
473
|
+
MutexLock lock(&parent_->xds_client_->mu_);
|
474
|
+
if (!parent_->shutting_down_ &&
|
475
|
+
new_state == GRPC_CHANNEL_TRANSIENT_FAILURE) {
|
476
|
+
// In TRANSIENT_FAILURE. Notify all watchers of error.
|
477
|
+
gpr_log(GPR_INFO,
|
478
|
+
"[xds_client %p] xds channel for server %s in "
|
479
|
+
"state TRANSIENT_FAILURE: %s",
|
480
|
+
parent_->xds_client(), parent_->server_.server_uri.c_str(),
|
481
|
+
status.ToString().c_str());
|
482
|
+
parent_->xds_client_->NotifyOnErrorLocked(
|
483
|
+
absl::UnavailableError(absl::StrCat(
|
484
|
+
"xds channel in TRANSIENT_FAILURE, connectivity error: ",
|
485
|
+
status.ToString())));
|
486
|
+
}
|
424
487
|
}
|
488
|
+
parent_->xds_client()->work_serializer_.DrainQueue();
|
425
489
|
}
|
426
490
|
|
427
|
-
|
491
|
+
WeakRefCountedPtr<ChannelState> parent_;
|
428
492
|
};
|
429
493
|
|
430
494
|
//
|
@@ -433,33 +497,20 @@ class XdsClient::ChannelState::StateWatcher
|
|
433
497
|
|
434
498
|
namespace {
|
435
499
|
|
436
|
-
grpc_channel* CreateXdsChannel(
|
437
|
-
|
438
|
-
absl::InlinedVector<grpc_arg, 2> args_to_add = {
|
439
|
-
grpc_channel_arg_integer_create(
|
440
|
-
const_cast<char*>(GRPC_ARG_KEEPALIVE_TIME_MS),
|
441
|
-
5 * 60 * GPR_MS_PER_SEC),
|
442
|
-
grpc_channel_arg_integer_create(
|
443
|
-
const_cast<char*>(GRPC_ARG_CHANNELZ_IS_INTERNAL_CHANNEL), 1),
|
444
|
-
};
|
445
|
-
grpc_channel_args* new_args = grpc_channel_args_copy_and_add(
|
446
|
-
g_channel_args, args_to_add.data(), args_to_add.size());
|
447
|
-
// Create channel creds.
|
500
|
+
grpc_channel* CreateXdsChannel(grpc_channel_args* args,
|
501
|
+
const XdsBootstrap::XdsServer& server) {
|
448
502
|
RefCountedPtr<grpc_channel_credentials> channel_creds =
|
449
|
-
|
450
|
-
|
451
|
-
|
452
|
-
|
453
|
-
channel_creds.get(), server.server_uri.c_str(), new_args, nullptr);
|
454
|
-
grpc_channel_args_destroy(new_args);
|
455
|
-
return channel;
|
503
|
+
CoreConfiguration::Get().channel_creds_registry().CreateChannelCreds(
|
504
|
+
server.channel_creds_type, server.channel_creds_config);
|
505
|
+
return grpc_channel_create(server.server_uri.c_str(), channel_creds.get(),
|
506
|
+
args);
|
456
507
|
}
|
457
508
|
|
458
509
|
} // namespace
|
459
510
|
|
460
511
|
XdsClient::ChannelState::ChannelState(WeakRefCountedPtr<XdsClient> xds_client,
|
461
512
|
const XdsBootstrap::XdsServer& server)
|
462
|
-
:
|
513
|
+
: DualRefCounted<ChannelState>(
|
463
514
|
GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_refcount_trace)
|
464
515
|
? "ChannelState"
|
465
516
|
: nullptr),
|
@@ -469,26 +520,33 @@ XdsClient::ChannelState::ChannelState(WeakRefCountedPtr<XdsClient> xds_client,
|
|
469
520
|
gpr_log(GPR_INFO, "[xds_client %p] creating channel to %s",
|
470
521
|
xds_client_.get(), server.server_uri.c_str());
|
471
522
|
}
|
472
|
-
channel_ = CreateXdsChannel(server);
|
523
|
+
channel_ = CreateXdsChannel(xds_client_->args_, server);
|
473
524
|
GPR_ASSERT(channel_ != nullptr);
|
474
525
|
StartConnectivityWatchLocked();
|
475
526
|
}
|
476
527
|
|
477
528
|
XdsClient::ChannelState::~ChannelState() {
|
478
529
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
479
|
-
gpr_log(GPR_INFO, "[xds_client %p]
|
480
|
-
this);
|
530
|
+
gpr_log(GPR_INFO, "[xds_client %p] destroying xds channel %p for server %s",
|
531
|
+
xds_client(), this, server_.server_uri.c_str());
|
481
532
|
}
|
482
533
|
grpc_channel_destroy(channel_);
|
483
534
|
xds_client_.reset(DEBUG_LOCATION, "ChannelState");
|
484
535
|
}
|
485
536
|
|
486
|
-
|
537
|
+
// This method should only ever be called when holding the lock, but we can't
|
538
|
+
// use a ABSL_EXCLUSIVE_LOCKS_REQUIRED annotation, because Orphan() will be
|
539
|
+
// called from DualRefCounted::Unref, which cannot have a lock annotation for a
|
540
|
+
// lock in this subclass.
|
541
|
+
void XdsClient::ChannelState::Orphan() ABSL_NO_THREAD_SAFETY_ANALYSIS {
|
487
542
|
shutting_down_ = true;
|
488
543
|
CancelConnectivityWatchLocked();
|
544
|
+
// At this time, all strong refs are removed, remove from channel map to
|
545
|
+
// prevent subsequent subscription from trying to use this ChannelState as it
|
546
|
+
// is shutting down.
|
547
|
+
xds_client_->xds_server_channel_map_.erase(server_);
|
489
548
|
ads_calld_.reset();
|
490
549
|
lrs_calld_.reset();
|
491
|
-
Unref(DEBUG_LOCATION, "ChannelState+orphaned");
|
492
550
|
}
|
493
551
|
|
494
552
|
XdsClient::ChannelState::AdsCallState* XdsClient::ChannelState::ads_calld()
|
@@ -502,40 +560,61 @@ XdsClient::ChannelState::LrsCallState* XdsClient::ChannelState::lrs_calld()
|
|
502
560
|
}
|
503
561
|
|
504
562
|
bool XdsClient::ChannelState::HasActiveAdsCall() const {
|
505
|
-
return ads_calld_->calld() != nullptr;
|
563
|
+
return ads_calld_ != nullptr && ads_calld_->calld() != nullptr;
|
506
564
|
}
|
507
565
|
|
508
566
|
void XdsClient::ChannelState::MaybeStartLrsCall() {
|
509
567
|
if (lrs_calld_ != nullptr) return;
|
510
|
-
lrs_calld_.reset(
|
511
|
-
|
568
|
+
lrs_calld_.reset(new RetryableCall<LrsCallState>(
|
569
|
+
WeakRef(DEBUG_LOCATION, "ChannelState+lrs")));
|
512
570
|
}
|
513
571
|
|
514
|
-
void XdsClient::ChannelState::
|
572
|
+
void XdsClient::ChannelState::StopLrsCallLocked() {
|
573
|
+
xds_client_->xds_load_report_server_map_.erase(server_);
|
574
|
+
lrs_calld_.reset();
|
575
|
+
}
|
576
|
+
|
577
|
+
namespace {
|
578
|
+
|
579
|
+
bool IsLameChannel(grpc_channel* channel) {
|
580
|
+
grpc_channel_element* elem =
|
581
|
+
grpc_channel_stack_last_element(grpc_channel_get_channel_stack(channel));
|
582
|
+
return elem->filter == &LameClientFilter::kFilter;
|
583
|
+
}
|
584
|
+
|
585
|
+
} // namespace
|
515
586
|
|
516
587
|
void XdsClient::ChannelState::StartConnectivityWatchLocked() {
|
517
|
-
|
518
|
-
|
519
|
-
|
520
|
-
|
521
|
-
|
522
|
-
|
588
|
+
if (IsLameChannel(channel_)) {
|
589
|
+
xds_client()->NotifyOnErrorLocked(
|
590
|
+
absl::UnavailableError("xds client has a lame channel"));
|
591
|
+
return;
|
592
|
+
}
|
593
|
+
ClientChannel* client_channel =
|
594
|
+
ClientChannel::GetFromChannel(Channel::FromC(channel_));
|
595
|
+
GPR_ASSERT(client_channel != nullptr);
|
596
|
+
watcher_ = new StateWatcher(WeakRef(DEBUG_LOCATION, "ChannelState+watch"));
|
597
|
+
client_channel->AddConnectivityWatcher(
|
598
|
+
GRPC_CHANNEL_IDLE,
|
523
599
|
OrphanablePtr<AsyncConnectivityStateWatcherInterface>(watcher_));
|
524
600
|
}
|
525
601
|
|
526
602
|
void XdsClient::ChannelState::CancelConnectivityWatchLocked() {
|
527
|
-
|
528
|
-
|
529
|
-
|
530
|
-
|
603
|
+
if (IsLameChannel(channel_)) {
|
604
|
+
return;
|
605
|
+
}
|
606
|
+
ClientChannel* client_channel =
|
607
|
+
ClientChannel::GetFromChannel(Channel::FromC(channel_));
|
608
|
+
GPR_ASSERT(client_channel != nullptr);
|
609
|
+
client_channel->RemoveConnectivityWatcher(watcher_);
|
531
610
|
}
|
532
611
|
|
533
|
-
void XdsClient::ChannelState::
|
534
|
-
|
612
|
+
void XdsClient::ChannelState::SubscribeLocked(const XdsResourceType* type,
|
613
|
+
const XdsResourceName& name) {
|
535
614
|
if (ads_calld_ == nullptr) {
|
536
615
|
// Start the ADS call if this is the first request.
|
537
616
|
ads_calld_.reset(new RetryableCall<AdsCallState>(
|
538
|
-
|
617
|
+
WeakRef(DEBUG_LOCATION, "ChannelState+ads")));
|
539
618
|
// Note: AdsCallState's ctor will automatically subscribe to all
|
540
619
|
// resources that the XdsClient already has watchers for, so we can
|
541
620
|
// return here.
|
@@ -545,17 +624,19 @@ void XdsClient::ChannelState::Subscribe(const std::string& type_url,
|
|
545
624
|
// because when the call is restarted it will resend all necessary requests.
|
546
625
|
if (ads_calld() == nullptr) return;
|
547
626
|
// Subscribe to this resource if the ADS call is active.
|
548
|
-
ads_calld()->
|
627
|
+
ads_calld()->SubscribeLocked(type, name, /*delay_send=*/false);
|
549
628
|
}
|
550
629
|
|
551
|
-
void XdsClient::ChannelState::
|
552
|
-
|
553
|
-
|
630
|
+
void XdsClient::ChannelState::UnsubscribeLocked(const XdsResourceType* type,
|
631
|
+
const XdsResourceName& name,
|
632
|
+
bool delay_unsubscription) {
|
554
633
|
if (ads_calld_ != nullptr) {
|
555
634
|
auto* calld = ads_calld_->calld();
|
556
635
|
if (calld != nullptr) {
|
557
|
-
calld->
|
558
|
-
if (!calld->HasSubscribedResources())
|
636
|
+
calld->UnsubscribeLocked(type, name, delay_unsubscription);
|
637
|
+
if (!calld->HasSubscribedResources()) {
|
638
|
+
ads_calld_.reset();
|
639
|
+
}
|
559
640
|
}
|
560
641
|
}
|
561
642
|
}
|
@@ -566,15 +647,15 @@ void XdsClient::ChannelState::Unsubscribe(const std::string& type_url,
|
|
566
647
|
|
567
648
|
template <typename T>
|
568
649
|
XdsClient::ChannelState::RetryableCall<T>::RetryableCall(
|
569
|
-
|
650
|
+
WeakRefCountedPtr<ChannelState> chand)
|
570
651
|
: chand_(std::move(chand)),
|
571
|
-
backoff_(
|
572
|
-
|
573
|
-
|
574
|
-
|
575
|
-
|
576
|
-
|
577
|
-
|
652
|
+
backoff_(BackOff::Options()
|
653
|
+
.set_initial_backoff(Duration::Seconds(
|
654
|
+
GRPC_XDS_INITIAL_CONNECT_BACKOFF_SECONDS))
|
655
|
+
.set_multiplier(GRPC_XDS_RECONNECT_BACKOFF_MULTIPLIER)
|
656
|
+
.set_jitter(GRPC_XDS_RECONNECT_JITTER)
|
657
|
+
.set_max_backoff(Duration::Seconds(
|
658
|
+
GRPC_XDS_RECONNECT_MAX_BACKOFF_SECONDS))) {
|
578
659
|
// Closure Initialization
|
579
660
|
GRPC_CLOSURE_INIT(&on_retry_timer_, OnRetryTimer, this,
|
580
661
|
grpc_schedule_on_exec_ctx);
|
@@ -591,17 +672,11 @@ void XdsClient::ChannelState::RetryableCall<T>::Orphan() {
|
|
591
672
|
|
592
673
|
template <typename T>
|
593
674
|
void XdsClient::ChannelState::RetryableCall<T>::OnCallFinishedLocked() {
|
594
|
-
|
675
|
+
// If we saw a response on the current stream, reset backoff.
|
676
|
+
if (calld_->seen_response()) backoff_.Reset();
|
595
677
|
calld_.reset();
|
596
|
-
|
597
|
-
|
598
|
-
// call immediately.
|
599
|
-
backoff_.Reset();
|
600
|
-
StartNewCallLocked();
|
601
|
-
} else {
|
602
|
-
// If we failed to connect to the xds server, retry later.
|
603
|
-
StartRetryTimerLocked();
|
604
|
-
}
|
678
|
+
// Start retry timer.
|
679
|
+
StartRetryTimerLocked();
|
605
680
|
}
|
606
681
|
|
607
682
|
template <typename T>
|
@@ -610,10 +685,10 @@ void XdsClient::ChannelState::RetryableCall<T>::StartNewCallLocked() {
|
|
610
685
|
GPR_ASSERT(chand_->channel_ != nullptr);
|
611
686
|
GPR_ASSERT(calld_ == nullptr);
|
612
687
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
613
|
-
gpr_log(
|
614
|
-
|
615
|
-
|
616
|
-
|
688
|
+
gpr_log(
|
689
|
+
GPR_INFO,
|
690
|
+
"[xds_client %p] xds server %s: start new call from retryable call %p",
|
691
|
+
chand()->xds_client(), chand()->server_.server_uri.c_str(), this);
|
617
692
|
}
|
618
693
|
calld_ = MakeOrphanable<T>(
|
619
694
|
this->Ref(DEBUG_LOCATION, "RetryableCall+start_new_call"));
|
@@ -622,13 +697,15 @@ void XdsClient::ChannelState::RetryableCall<T>::StartNewCallLocked() {
|
|
622
697
|
template <typename T>
|
623
698
|
void XdsClient::ChannelState::RetryableCall<T>::StartRetryTimerLocked() {
|
624
699
|
if (shutting_down_) return;
|
625
|
-
const
|
700
|
+
const Timestamp next_attempt_time = backoff_.NextAttemptTime();
|
626
701
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
627
|
-
|
702
|
+
Duration timeout =
|
703
|
+
std::max(next_attempt_time - ExecCtx::Get()->Now(), Duration::Zero());
|
628
704
|
gpr_log(GPR_INFO,
|
629
|
-
"[xds_client %p]
|
705
|
+
"[xds_client %p] xds server %s: call attempt failed; "
|
630
706
|
"retry timer will fire in %" PRId64 "ms.",
|
631
|
-
chand()->xds_client(), chand(),
|
707
|
+
chand()->xds_client(), chand()->server_.server_uri.c_str(),
|
708
|
+
timeout.millis());
|
632
709
|
}
|
633
710
|
this->Ref(DEBUG_LOCATION, "RetryableCall+retry_timer_start").release();
|
634
711
|
grpc_timer_init(&retry_timer_, next_attempt_time, &on_retry_timer_);
|
@@ -637,7 +714,7 @@ void XdsClient::ChannelState::RetryableCall<T>::StartRetryTimerLocked() {
|
|
637
714
|
|
638
715
|
template <typename T>
|
639
716
|
void XdsClient::ChannelState::RetryableCall<T>::OnRetryTimer(
|
640
|
-
void* arg,
|
717
|
+
void* arg, grpc_error_handle error) {
|
641
718
|
RetryableCall* calld = static_cast<RetryableCall*>(arg);
|
642
719
|
{
|
643
720
|
MutexLock lock(&calld->chand_->xds_client()->mu_);
|
@@ -648,20 +725,183 @@ void XdsClient::ChannelState::RetryableCall<T>::OnRetryTimer(
|
|
648
725
|
|
649
726
|
template <typename T>
|
650
727
|
void XdsClient::ChannelState::RetryableCall<T>::OnRetryTimerLocked(
|
651
|
-
|
728
|
+
grpc_error_handle error) {
|
652
729
|
retry_timer_callback_pending_ = false;
|
653
730
|
if (!shutting_down_ && error == GRPC_ERROR_NONE) {
|
654
731
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
655
|
-
gpr_log(
|
656
|
-
|
657
|
-
|
658
|
-
|
732
|
+
gpr_log(GPR_INFO,
|
733
|
+
"[xds_client %p] xds server %s: retry timer fired (retryable "
|
734
|
+
"call: %p)",
|
735
|
+
chand()->xds_client(), chand()->server_.server_uri.c_str(), this);
|
659
736
|
}
|
660
737
|
StartNewCallLocked();
|
661
738
|
}
|
662
739
|
GRPC_ERROR_UNREF(error);
|
663
740
|
}
|
664
741
|
|
742
|
+
//
|
743
|
+
// XdsClient::ChannelState::AdsCallState::AdsResponseParser
|
744
|
+
//
|
745
|
+
|
746
|
+
absl::Status XdsClient::ChannelState::AdsCallState::AdsResponseParser::
|
747
|
+
ProcessAdsResponseFields(AdsResponseFields fields) {
|
748
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
749
|
+
gpr_log(
|
750
|
+
GPR_INFO,
|
751
|
+
"[xds_client %p] xds server %s: received ADS response: type_url=%s, "
|
752
|
+
"version=%s, nonce=%s, num_resources=%" PRIuPTR,
|
753
|
+
ads_call_state_->xds_client(),
|
754
|
+
ads_call_state_->chand()->server_.server_uri.c_str(),
|
755
|
+
fields.type_url.c_str(), fields.version.c_str(), fields.nonce.c_str(),
|
756
|
+
fields.num_resources);
|
757
|
+
}
|
758
|
+
result_.type =
|
759
|
+
ads_call_state_->xds_client()->GetResourceTypeLocked(fields.type_url);
|
760
|
+
if (result_.type == nullptr) {
|
761
|
+
return absl::InvalidArgumentError(
|
762
|
+
absl::StrCat("unknown resource type ", fields.type_url));
|
763
|
+
}
|
764
|
+
result_.type_url = std::move(fields.type_url);
|
765
|
+
result_.version = std::move(fields.version);
|
766
|
+
result_.nonce = std::move(fields.nonce);
|
767
|
+
return absl::OkStatus();
|
768
|
+
}
|
769
|
+
|
770
|
+
namespace {
|
771
|
+
|
772
|
+
// Build a resource metadata struct for ADS result accepting methods and CSDS.
|
773
|
+
XdsApi::ResourceMetadata CreateResourceMetadataAcked(
|
774
|
+
std::string serialized_proto, std::string version, Timestamp update_time) {
|
775
|
+
XdsApi::ResourceMetadata resource_metadata;
|
776
|
+
resource_metadata.serialized_proto = std::move(serialized_proto);
|
777
|
+
resource_metadata.update_time = update_time;
|
778
|
+
resource_metadata.version = std::move(version);
|
779
|
+
resource_metadata.client_status = XdsApi::ResourceMetadata::ACKED;
|
780
|
+
return resource_metadata;
|
781
|
+
}
|
782
|
+
|
783
|
+
// Update resource_metadata for NACK.
|
784
|
+
void UpdateResourceMetadataNacked(const std::string& version,
|
785
|
+
const std::string& details,
|
786
|
+
Timestamp update_time,
|
787
|
+
XdsApi::ResourceMetadata* resource_metadata) {
|
788
|
+
resource_metadata->client_status = XdsApi::ResourceMetadata::NACKED;
|
789
|
+
resource_metadata->failed_version = version;
|
790
|
+
resource_metadata->failed_details = details;
|
791
|
+
resource_metadata->failed_update_time = update_time;
|
792
|
+
}
|
793
|
+
|
794
|
+
} // namespace
|
795
|
+
|
796
|
+
void XdsClient::ChannelState::AdsCallState::AdsResponseParser::ParseResource(
|
797
|
+
const XdsEncodingContext& context, size_t idx, absl::string_view type_url,
|
798
|
+
absl::string_view serialized_resource) {
|
799
|
+
// Check the type_url of the resource.
|
800
|
+
bool is_v2 = false;
|
801
|
+
if (!result_.type->IsType(type_url, &is_v2)) {
|
802
|
+
result_.errors.emplace_back(
|
803
|
+
absl::StrCat("resource index ", idx, ": incorrect resource type ",
|
804
|
+
type_url, " (should be ", result_.type_url, ")"));
|
805
|
+
return;
|
806
|
+
}
|
807
|
+
// Parse the resource.
|
808
|
+
absl::StatusOr<XdsResourceType::DecodeResult> result =
|
809
|
+
result_.type->Decode(context, serialized_resource, is_v2);
|
810
|
+
if (!result.ok()) {
|
811
|
+
result_.errors.emplace_back(
|
812
|
+
absl::StrCat("resource index ", idx, ": ", result.status().ToString()));
|
813
|
+
return;
|
814
|
+
}
|
815
|
+
// Check the resource name.
|
816
|
+
auto resource_name =
|
817
|
+
xds_client()->ParseXdsResourceName(result->name, result_.type);
|
818
|
+
if (!resource_name.ok()) {
|
819
|
+
result_.errors.emplace_back(absl::StrCat(
|
820
|
+
"resource index ", idx, ": Cannot parse xDS resource name \"",
|
821
|
+
result->name, "\""));
|
822
|
+
return;
|
823
|
+
}
|
824
|
+
// Cancel resource-does-not-exist timer, if needed.
|
825
|
+
auto timer_it = ads_call_state_->state_map_.find(result_.type);
|
826
|
+
if (timer_it != ads_call_state_->state_map_.end()) {
|
827
|
+
auto it =
|
828
|
+
timer_it->second.subscribed_resources.find(resource_name->authority);
|
829
|
+
if (it != timer_it->second.subscribed_resources.end()) {
|
830
|
+
auto res_it = it->second.find(resource_name->key);
|
831
|
+
if (res_it != it->second.end()) {
|
832
|
+
res_it->second->MaybeCancelTimer();
|
833
|
+
}
|
834
|
+
}
|
835
|
+
}
|
836
|
+
// Lookup the authority in the cache.
|
837
|
+
auto authority_it =
|
838
|
+
xds_client()->authority_state_map_.find(resource_name->authority);
|
839
|
+
if (authority_it == xds_client()->authority_state_map_.end()) {
|
840
|
+
return; // Skip resource -- we don't have a subscription for it.
|
841
|
+
}
|
842
|
+
// Found authority, so look up type.
|
843
|
+
AuthorityState& authority_state = authority_it->second;
|
844
|
+
auto type_it = authority_state.resource_map.find(result_.type);
|
845
|
+
if (type_it == authority_state.resource_map.end()) {
|
846
|
+
return; // Skip resource -- we don't have a subscription for it.
|
847
|
+
}
|
848
|
+
auto& type_map = type_it->second;
|
849
|
+
// Found type, so look up resource key.
|
850
|
+
auto it = type_map.find(resource_name->key);
|
851
|
+
if (it == type_map.end()) {
|
852
|
+
return; // Skip resource -- we don't have a subscription for it.
|
853
|
+
}
|
854
|
+
ResourceState& resource_state = it->second;
|
855
|
+
// If needed, record that we've seen this resource.
|
856
|
+
if (result_.type->AllResourcesRequiredInSotW()) {
|
857
|
+
result_.resources_seen[resource_name->authority].insert(resource_name->key);
|
858
|
+
}
|
859
|
+
// Update resource state based on whether the resource is valid.
|
860
|
+
if (!result->resource.ok()) {
|
861
|
+
result_.errors.emplace_back(absl::StrCat(
|
862
|
+
"resource index ", idx, ": ", result->name,
|
863
|
+
": validation error: ", result->resource.status().ToString()));
|
864
|
+
xds_client()->NotifyWatchersOnErrorLocked(
|
865
|
+
resource_state.watchers,
|
866
|
+
absl::UnavailableError(absl::StrCat(
|
867
|
+
"invalid resource: ", result->resource.status().ToString())));
|
868
|
+
UpdateResourceMetadataNacked(result_.version,
|
869
|
+
result->resource.status().ToString(),
|
870
|
+
update_time_, &resource_state.meta);
|
871
|
+
return;
|
872
|
+
}
|
873
|
+
// Resource is valid.
|
874
|
+
result_.have_valid_resources = true;
|
875
|
+
// If it didn't change, ignore it.
|
876
|
+
if (resource_state.resource != nullptr &&
|
877
|
+
result_.type->ResourcesEqual(resource_state.resource.get(),
|
878
|
+
result->resource->get())) {
|
879
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
880
|
+
gpr_log(GPR_INFO,
|
881
|
+
"[xds_client %p] %s resource %s identical to current, ignoring.",
|
882
|
+
xds_client(), result_.type_url.c_str(), result->name.c_str());
|
883
|
+
}
|
884
|
+
return;
|
885
|
+
}
|
886
|
+
// Update the resource state.
|
887
|
+
resource_state.resource = std::move(*result->resource);
|
888
|
+
resource_state.meta = CreateResourceMetadataAcked(
|
889
|
+
std::string(serialized_resource), result_.version, update_time_);
|
890
|
+
// Notify watchers.
|
891
|
+
auto& watchers_list = resource_state.watchers;
|
892
|
+
auto* value =
|
893
|
+
result_.type->CopyResource(resource_state.resource.get()).release();
|
894
|
+
xds_client()->work_serializer_.Schedule(
|
895
|
+
[watchers_list, value]()
|
896
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&xds_client()->work_serializer_) {
|
897
|
+
for (const auto& p : watchers_list) {
|
898
|
+
p.first->OnGenericResourceChanged(value);
|
899
|
+
}
|
900
|
+
delete value;
|
901
|
+
},
|
902
|
+
DEBUG_LOCATION);
|
903
|
+
}
|
904
|
+
|
665
905
|
//
|
666
906
|
// XdsClient::ChannelState::AdsCallState
|
667
907
|
//
|
@@ -678,14 +918,17 @@ XdsClient::ChannelState::AdsCallState::AdsCallState(
|
|
678
918
|
// the polling entities from client_channel.
|
679
919
|
GPR_ASSERT(xds_client() != nullptr);
|
680
920
|
// Create a call with the specified method name.
|
681
|
-
const
|
921
|
+
const char* method =
|
682
922
|
chand()->server_.ShouldUseV3()
|
683
|
-
?
|
684
|
-
|
923
|
+
? "/envoy.service.discovery.v3.AggregatedDiscoveryService/"
|
924
|
+
"StreamAggregatedResources"
|
925
|
+
: "/envoy.service.discovery.v2.AggregatedDiscoveryService/"
|
926
|
+
"StreamAggregatedResources";
|
685
927
|
call_ = grpc_channel_create_pollset_set_call(
|
686
928
|
chand()->channel_, nullptr, GRPC_PROPAGATE_DEFAULTS,
|
687
|
-
xds_client()->interested_parties_,
|
688
|
-
|
929
|
+
xds_client()->interested_parties_,
|
930
|
+
StaticSlice::FromStaticString(method).c_slice(), nullptr,
|
931
|
+
Timestamp::InfFuture(), nullptr);
|
689
932
|
GPR_ASSERT(call_ != nullptr);
|
690
933
|
// Init data associated with the call.
|
691
934
|
grpc_metadata_array_init(&initial_metadata_recv_);
|
@@ -693,9 +936,9 @@ XdsClient::ChannelState::AdsCallState::AdsCallState(
|
|
693
936
|
// Start the call.
|
694
937
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
695
938
|
gpr_log(GPR_INFO,
|
696
|
-
"[xds_client %p]
|
697
|
-
"call: %p)",
|
698
|
-
xds_client(), chand(), this, call_);
|
939
|
+
"[xds_client %p] xds server %s: starting ADS call "
|
940
|
+
"(calld: %p, call: %p)",
|
941
|
+
xds_client(), chand()->server_.server_uri.c_str(), this, call_);
|
699
942
|
}
|
700
943
|
// Create the ops.
|
701
944
|
grpc_call_error call_error;
|
@@ -715,17 +958,20 @@ XdsClient::ChannelState::AdsCallState::AdsCallState(
|
|
715
958
|
// Op: send request message.
|
716
959
|
GRPC_CLOSURE_INIT(&on_request_sent_, OnRequestSent, this,
|
717
960
|
grpc_schedule_on_exec_ctx);
|
718
|
-
for (const auto&
|
719
|
-
|
720
|
-
|
721
|
-
|
722
|
-
|
723
|
-
|
724
|
-
|
725
|
-
|
961
|
+
for (const auto& a : xds_client()->authority_state_map_) {
|
962
|
+
const std::string& authority = a.first;
|
963
|
+
// Skip authorities that are not using this xDS channel.
|
964
|
+
if (a.second.channel_state != chand()) continue;
|
965
|
+
for (const auto& t : a.second.resource_map) {
|
966
|
+
const XdsResourceType* type = t.first;
|
967
|
+
for (const auto& r : t.second) {
|
968
|
+
const XdsResourceKey& resource_key = r.first;
|
969
|
+
SubscribeLocked(type, {authority, resource_key}, /*delay_send=*/true);
|
970
|
+
}
|
971
|
+
}
|
726
972
|
}
|
727
|
-
for (const auto& p :
|
728
|
-
|
973
|
+
for (const auto& p : state_map_) {
|
974
|
+
SendMessageLocked(p.first);
|
729
975
|
}
|
730
976
|
// Op: recv initial metadata.
|
731
977
|
op = ops;
|
@@ -789,33 +1035,30 @@ void XdsClient::ChannelState::AdsCallState::Orphan() {
|
|
789
1035
|
}
|
790
1036
|
|
791
1037
|
void XdsClient::ChannelState::AdsCallState::SendMessageLocked(
|
792
|
-
const
|
1038
|
+
const XdsResourceType* type)
|
1039
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_) {
|
793
1040
|
// Buffer message sending if an existing message is in flight.
|
794
1041
|
if (send_message_payload_ != nullptr) {
|
795
|
-
buffered_requests_.insert(
|
1042
|
+
buffered_requests_.insert(type);
|
796
1043
|
return;
|
797
1044
|
}
|
798
|
-
auto& state = state_map_[
|
1045
|
+
auto& state = state_map_[type];
|
799
1046
|
grpc_slice request_payload_slice;
|
800
|
-
std::set<absl::string_view> resource_names =
|
801
|
-
ResourceNamesForRequest(type_url);
|
802
1047
|
request_payload_slice = xds_client()->api_.CreateAdsRequest(
|
803
|
-
chand()->server_,
|
804
|
-
|
805
|
-
|
806
|
-
|
807
|
-
|
808
|
-
state_map_.erase(type_url);
|
809
|
-
}
|
1048
|
+
chand()->server_,
|
1049
|
+
chand()->server_.ShouldUseV3() ? type->type_url() : type->v2_type_url(),
|
1050
|
+
chand()->resource_type_version_map_[type], state.nonce,
|
1051
|
+
ResourceNamesForRequest(type), GRPC_ERROR_REF(state.error),
|
1052
|
+
!sent_initial_message_);
|
810
1053
|
sent_initial_message_ = true;
|
811
1054
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
812
1055
|
gpr_log(GPR_INFO,
|
813
|
-
"[xds_client %p] sending ADS request: type=%s
|
814
|
-
"
|
815
|
-
xds_client(),
|
816
|
-
|
817
|
-
|
818
|
-
|
1056
|
+
"[xds_client %p] xds server %s: sending ADS request: type=%s "
|
1057
|
+
"version=%s nonce=%s error=%s",
|
1058
|
+
xds_client(), chand()->server_.server_uri.c_str(),
|
1059
|
+
std::string(type->type_url()).c_str(),
|
1060
|
+
chand()->resource_type_version_map_[type].c_str(),
|
1061
|
+
state.nonce.c_str(), grpc_error_std_string(state.error).c_str());
|
819
1062
|
}
|
820
1063
|
GRPC_ERROR_UNREF(state.error);
|
821
1064
|
state.error = GRPC_ERROR_NONE;
|
@@ -835,27 +1078,33 @@ void XdsClient::ChannelState::AdsCallState::SendMessageLocked(
|
|
835
1078
|
grpc_call_start_batch_and_execute(call_, &op, 1, &on_request_sent_);
|
836
1079
|
if (GPR_UNLIKELY(call_error != GRPC_CALL_OK)) {
|
837
1080
|
gpr_log(GPR_ERROR,
|
838
|
-
"[xds_client %p]
|
839
|
-
|
1081
|
+
"[xds_client %p] xds server %s: error starting ADS send_message "
|
1082
|
+
"batch on calld=%p: call_error=%d",
|
1083
|
+
xds_client(), chand()->server_.server_uri.c_str(), this,
|
1084
|
+
call_error);
|
840
1085
|
GPR_ASSERT(GRPC_CALL_OK == call_error);
|
841
1086
|
}
|
842
1087
|
}
|
843
1088
|
|
844
|
-
void XdsClient::ChannelState::AdsCallState::
|
845
|
-
const
|
846
|
-
auto& state = state_map_[
|
1089
|
+
void XdsClient::ChannelState::AdsCallState::SubscribeLocked(
|
1090
|
+
const XdsResourceType* type, const XdsResourceName& name, bool delay_send) {
|
1091
|
+
auto& state = state_map_[type].subscribed_resources[name.authority][name.key];
|
847
1092
|
if (state == nullptr) {
|
848
|
-
state = MakeOrphanable<
|
849
|
-
|
850
|
-
SendMessageLocked(type_url);
|
1093
|
+
state = MakeOrphanable<ResourceTimer>(type, name);
|
1094
|
+
if (!delay_send) SendMessageLocked(type);
|
851
1095
|
}
|
852
1096
|
}
|
853
1097
|
|
854
|
-
void XdsClient::ChannelState::AdsCallState::
|
855
|
-
const
|
1098
|
+
void XdsClient::ChannelState::AdsCallState::UnsubscribeLocked(
|
1099
|
+
const XdsResourceType* type, const XdsResourceName& name,
|
856
1100
|
bool delay_unsubscription) {
|
857
|
-
state_map_[
|
858
|
-
|
1101
|
+
auto& type_state_map = state_map_[type];
|
1102
|
+
auto& authority_map = type_state_map.subscribed_resources[name.authority];
|
1103
|
+
authority_map.erase(name.key);
|
1104
|
+
if (authority_map.empty()) {
|
1105
|
+
type_state_map.subscribed_resources.erase(name.authority);
|
1106
|
+
}
|
1107
|
+
if (!delay_unsubscription) SendMessageLocked(type);
|
859
1108
|
}
|
860
1109
|
|
861
1110
|
bool XdsClient::ChannelState::AdsCallState::HasSubscribedResources() const {
|
@@ -865,251 +1114,8 @@ bool XdsClient::ChannelState::AdsCallState::HasSubscribedResources() const {
|
|
865
1114
|
return false;
|
866
1115
|
}
|
867
1116
|
|
868
|
-
void XdsClient::ChannelState::AdsCallState::
|
869
|
-
|
870
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
871
|
-
gpr_log(GPR_INFO,
|
872
|
-
"[xds_client %p] LDS update received containing %" PRIuPTR
|
873
|
-
" resources",
|
874
|
-
xds_client(), lds_update_map.size());
|
875
|
-
}
|
876
|
-
auto& lds_state = state_map_[XdsApi::kLdsTypeUrl];
|
877
|
-
std::set<std::string> rds_resource_names_seen;
|
878
|
-
for (auto& p : lds_update_map) {
|
879
|
-
const std::string& listener_name = p.first;
|
880
|
-
XdsApi::LdsUpdate& lds_update = p.second;
|
881
|
-
auto& state = lds_state.subscribed_resources[listener_name];
|
882
|
-
if (state != nullptr) state->Finish();
|
883
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
884
|
-
gpr_log(GPR_INFO, "[xds_client %p] LDS resource %s: route_config_name=%s",
|
885
|
-
xds_client(), listener_name.c_str(),
|
886
|
-
(!lds_update.route_config_name.empty()
|
887
|
-
? lds_update.route_config_name.c_str()
|
888
|
-
: "<inlined>"));
|
889
|
-
if (lds_update.rds_update.has_value()) {
|
890
|
-
gpr_log(GPR_INFO, "RouteConfiguration: %s",
|
891
|
-
lds_update.rds_update->ToString().c_str());
|
892
|
-
}
|
893
|
-
}
|
894
|
-
// Record the RDS resource names seen.
|
895
|
-
if (!lds_update.route_config_name.empty()) {
|
896
|
-
rds_resource_names_seen.insert(lds_update.route_config_name);
|
897
|
-
}
|
898
|
-
// Ignore identical update.
|
899
|
-
ListenerState& listener_state = xds_client()->listener_map_[listener_name];
|
900
|
-
if (listener_state.update.has_value() &&
|
901
|
-
*listener_state.update == lds_update) {
|
902
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
903
|
-
gpr_log(GPR_INFO,
|
904
|
-
"[xds_client %p] LDS update for %s identical to current, "
|
905
|
-
"ignoring.",
|
906
|
-
xds_client(), listener_name.c_str());
|
907
|
-
}
|
908
|
-
continue;
|
909
|
-
}
|
910
|
-
// Update the listener state.
|
911
|
-
listener_state.update = std::move(lds_update);
|
912
|
-
// Notify watchers.
|
913
|
-
for (const auto& p : listener_state.watchers) {
|
914
|
-
p.first->OnListenerChanged(*listener_state.update);
|
915
|
-
}
|
916
|
-
}
|
917
|
-
// For any subscribed resource that is not present in the update,
|
918
|
-
// remove it from the cache and notify watchers that it does not exist.
|
919
|
-
for (const auto& p : lds_state.subscribed_resources) {
|
920
|
-
const std::string& listener_name = p.first;
|
921
|
-
if (lds_update_map.find(listener_name) == lds_update_map.end()) {
|
922
|
-
ListenerState& listener_state =
|
923
|
-
xds_client()->listener_map_[listener_name];
|
924
|
-
// If the resource was newly requested but has not yet been received,
|
925
|
-
// we don't want to generate an error for the watchers, because this LDS
|
926
|
-
// response may be in reaction to an earlier request that did not yet
|
927
|
-
// request the new resource, so its absence from the response does not
|
928
|
-
// necessarily indicate that the resource does not exist.
|
929
|
-
// For that case, we rely on the request timeout instead.
|
930
|
-
if (!listener_state.update.has_value()) continue;
|
931
|
-
listener_state.update.reset();
|
932
|
-
for (const auto& p : listener_state.watchers) {
|
933
|
-
p.first->OnResourceDoesNotExist();
|
934
|
-
}
|
935
|
-
}
|
936
|
-
}
|
937
|
-
// For any RDS resource that is no longer referred to by any LDS
|
938
|
-
// resources, remove it from the cache and notify watchers that it
|
939
|
-
// does not exist.
|
940
|
-
auto& rds_state = state_map_[XdsApi::kRdsTypeUrl];
|
941
|
-
for (const auto& p : rds_state.subscribed_resources) {
|
942
|
-
const std::string& rds_resource_name = p.first;
|
943
|
-
if (rds_resource_names_seen.find(rds_resource_name) ==
|
944
|
-
rds_resource_names_seen.end()) {
|
945
|
-
RouteConfigState& route_config_state =
|
946
|
-
xds_client()->route_config_map_[rds_resource_name];
|
947
|
-
route_config_state.update.reset();
|
948
|
-
for (const auto& p : route_config_state.watchers) {
|
949
|
-
p.first->OnResourceDoesNotExist();
|
950
|
-
}
|
951
|
-
}
|
952
|
-
}
|
953
|
-
}
|
954
|
-
|
955
|
-
void XdsClient::ChannelState::AdsCallState::AcceptRdsUpdate(
|
956
|
-
XdsApi::RdsUpdateMap rds_update_map) {
|
957
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
958
|
-
gpr_log(GPR_INFO,
|
959
|
-
"[xds_client %p] RDS update received containing %" PRIuPTR
|
960
|
-
" resources",
|
961
|
-
xds_client(), rds_update_map.size());
|
962
|
-
}
|
963
|
-
auto& rds_state = state_map_[XdsApi::kRdsTypeUrl];
|
964
|
-
for (auto& p : rds_update_map) {
|
965
|
-
const std::string& route_config_name = p.first;
|
966
|
-
XdsApi::RdsUpdate& rds_update = p.second;
|
967
|
-
auto& state = rds_state.subscribed_resources[route_config_name];
|
968
|
-
if (state != nullptr) state->Finish();
|
969
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
970
|
-
gpr_log(GPR_INFO, "[xds_client %p] RDS resource:\n%s", xds_client(),
|
971
|
-
rds_update.ToString().c_str());
|
972
|
-
}
|
973
|
-
RouteConfigState& route_config_state =
|
974
|
-
xds_client()->route_config_map_[route_config_name];
|
975
|
-
// Ignore identical update.
|
976
|
-
if (route_config_state.update.has_value() &&
|
977
|
-
*route_config_state.update == rds_update) {
|
978
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
979
|
-
gpr_log(GPR_INFO,
|
980
|
-
"[xds_client %p] RDS resource identical to current, ignoring",
|
981
|
-
xds_client());
|
982
|
-
}
|
983
|
-
continue;
|
984
|
-
}
|
985
|
-
// Update the cache.
|
986
|
-
route_config_state.update = std::move(rds_update);
|
987
|
-
// Notify all watchers.
|
988
|
-
for (const auto& p : route_config_state.watchers) {
|
989
|
-
p.first->OnRouteConfigChanged(*route_config_state.update);
|
990
|
-
}
|
991
|
-
}
|
992
|
-
}
|
993
|
-
|
994
|
-
void XdsClient::ChannelState::AdsCallState::AcceptCdsUpdate(
|
995
|
-
XdsApi::CdsUpdateMap cds_update_map) {
|
996
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
997
|
-
gpr_log(GPR_INFO,
|
998
|
-
"[xds_client %p] CDS update received containing %" PRIuPTR
|
999
|
-
" resources",
|
1000
|
-
xds_client(), cds_update_map.size());
|
1001
|
-
}
|
1002
|
-
auto& cds_state = state_map_[XdsApi::kCdsTypeUrl];
|
1003
|
-
std::set<std::string> eds_resource_names_seen;
|
1004
|
-
for (auto& p : cds_update_map) {
|
1005
|
-
const char* cluster_name = p.first.c_str();
|
1006
|
-
XdsApi::CdsUpdate& cds_update = p.second;
|
1007
|
-
auto& state = cds_state.subscribed_resources[cluster_name];
|
1008
|
-
if (state != nullptr) state->Finish();
|
1009
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
1010
|
-
gpr_log(GPR_INFO, "[xds_client %p] cluster=%s: %s", xds_client(),
|
1011
|
-
cluster_name, cds_update.ToString().c_str());
|
1012
|
-
}
|
1013
|
-
// Record the EDS resource names seen.
|
1014
|
-
eds_resource_names_seen.insert(cds_update.eds_service_name.empty()
|
1015
|
-
? cluster_name
|
1016
|
-
: cds_update.eds_service_name);
|
1017
|
-
// Ignore identical update.
|
1018
|
-
ClusterState& cluster_state = xds_client()->cluster_map_[cluster_name];
|
1019
|
-
if (cluster_state.update.has_value() &&
|
1020
|
-
*cluster_state.update == cds_update) {
|
1021
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
1022
|
-
gpr_log(GPR_INFO,
|
1023
|
-
"[xds_client %p] CDS update identical to current, ignoring.",
|
1024
|
-
xds_client());
|
1025
|
-
}
|
1026
|
-
continue;
|
1027
|
-
}
|
1028
|
-
// Update the cluster state.
|
1029
|
-
cluster_state.update = std::move(cds_update);
|
1030
|
-
// Notify all watchers.
|
1031
|
-
for (const auto& p : cluster_state.watchers) {
|
1032
|
-
p.first->OnClusterChanged(cluster_state.update.value());
|
1033
|
-
}
|
1034
|
-
}
|
1035
|
-
// For any subscribed resource that is not present in the update,
|
1036
|
-
// remove it from the cache and notify watchers that it does not exist.
|
1037
|
-
for (const auto& p : cds_state.subscribed_resources) {
|
1038
|
-
const std::string& cluster_name = p.first;
|
1039
|
-
if (cds_update_map.find(cluster_name) == cds_update_map.end()) {
|
1040
|
-
ClusterState& cluster_state = xds_client()->cluster_map_[cluster_name];
|
1041
|
-
// If the resource was newly requested but has not yet been received,
|
1042
|
-
// we don't want to generate an error for the watchers, because this CDS
|
1043
|
-
// response may be in reaction to an earlier request that did not yet
|
1044
|
-
// request the new resource, so its absence from the response does not
|
1045
|
-
// necessarily indicate that the resource does not exist.
|
1046
|
-
// For that case, we rely on the request timeout instead.
|
1047
|
-
if (!cluster_state.update.has_value()) continue;
|
1048
|
-
cluster_state.update.reset();
|
1049
|
-
for (const auto& p : cluster_state.watchers) {
|
1050
|
-
p.first->OnResourceDoesNotExist();
|
1051
|
-
}
|
1052
|
-
}
|
1053
|
-
}
|
1054
|
-
// For any EDS resource that is no longer referred to by any CDS
|
1055
|
-
// resources, remove it from the cache and notify watchers that it
|
1056
|
-
// does not exist.
|
1057
|
-
auto& eds_state = state_map_[XdsApi::kEdsTypeUrl];
|
1058
|
-
for (const auto& p : eds_state.subscribed_resources) {
|
1059
|
-
const std::string& eds_resource_name = p.first;
|
1060
|
-
if (eds_resource_names_seen.find(eds_resource_name) ==
|
1061
|
-
eds_resource_names_seen.end()) {
|
1062
|
-
EndpointState& endpoint_state =
|
1063
|
-
xds_client()->endpoint_map_[eds_resource_name];
|
1064
|
-
endpoint_state.update.reset();
|
1065
|
-
for (const auto& p : endpoint_state.watchers) {
|
1066
|
-
p.first->OnResourceDoesNotExist();
|
1067
|
-
}
|
1068
|
-
}
|
1069
|
-
}
|
1070
|
-
}
|
1071
|
-
|
1072
|
-
void XdsClient::ChannelState::AdsCallState::AcceptEdsUpdate(
|
1073
|
-
XdsApi::EdsUpdateMap eds_update_map) {
|
1074
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
1075
|
-
gpr_log(GPR_INFO,
|
1076
|
-
"[xds_client %p] EDS update received containing %" PRIuPTR
|
1077
|
-
" resources",
|
1078
|
-
xds_client(), eds_update_map.size());
|
1079
|
-
}
|
1080
|
-
auto& eds_state = state_map_[XdsApi::kEdsTypeUrl];
|
1081
|
-
for (auto& p : eds_update_map) {
|
1082
|
-
const char* eds_service_name = p.first.c_str();
|
1083
|
-
XdsApi::EdsUpdate& eds_update = p.second;
|
1084
|
-
auto& state = eds_state.subscribed_resources[eds_service_name];
|
1085
|
-
if (state != nullptr) state->Finish();
|
1086
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
1087
|
-
gpr_log(GPR_INFO, "[xds_client %p] EDS resource %s: %s", xds_client(),
|
1088
|
-
eds_service_name, eds_update.ToString().c_str());
|
1089
|
-
}
|
1090
|
-
EndpointState& endpoint_state =
|
1091
|
-
xds_client()->endpoint_map_[eds_service_name];
|
1092
|
-
// Ignore identical update.
|
1093
|
-
if (endpoint_state.update.has_value() &&
|
1094
|
-
*endpoint_state.update == eds_update) {
|
1095
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
1096
|
-
gpr_log(GPR_INFO,
|
1097
|
-
"[xds_client %p] EDS update identical to current, ignoring.",
|
1098
|
-
xds_client());
|
1099
|
-
}
|
1100
|
-
continue;
|
1101
|
-
}
|
1102
|
-
// Update the cluster state.
|
1103
|
-
endpoint_state.update = std::move(eds_update);
|
1104
|
-
// Notify all watchers.
|
1105
|
-
for (const auto& p : endpoint_state.watchers) {
|
1106
|
-
p.first->OnEndpointChanged(endpoint_state.update.value());
|
1107
|
-
}
|
1108
|
-
}
|
1109
|
-
}
|
1110
|
-
|
1111
|
-
void XdsClient::ChannelState::AdsCallState::OnRequestSent(void* arg,
|
1112
|
-
grpc_error* error) {
|
1117
|
+
void XdsClient::ChannelState::AdsCallState::OnRequestSent(
|
1118
|
+
void* arg, grpc_error_handle error) {
|
1113
1119
|
AdsCallState* ads_calld = static_cast<AdsCallState*>(arg);
|
1114
1120
|
{
|
1115
1121
|
MutexLock lock(&ads_calld->xds_client()->mu_);
|
@@ -1119,7 +1125,7 @@ void XdsClient::ChannelState::AdsCallState::OnRequestSent(void* arg,
|
|
1119
1125
|
}
|
1120
1126
|
|
1121
1127
|
void XdsClient::ChannelState::AdsCallState::OnRequestSentLocked(
|
1122
|
-
|
1128
|
+
grpc_error_handle error) {
|
1123
1129
|
if (IsCurrentCallOnChannel() && error == GRPC_ERROR_NONE) {
|
1124
1130
|
// Clean up the sent message.
|
1125
1131
|
grpc_byte_buffer_destroy(send_message_payload_);
|
@@ -1143,13 +1149,14 @@ void XdsClient::ChannelState::AdsCallState::OnRequestSentLocked(
|
|
1143
1149
|
}
|
1144
1150
|
|
1145
1151
|
void XdsClient::ChannelState::AdsCallState::OnResponseReceived(
|
1146
|
-
void* arg,
|
1152
|
+
void* arg, grpc_error_handle /* error */) {
|
1147
1153
|
AdsCallState* ads_calld = static_cast<AdsCallState*>(arg);
|
1148
1154
|
bool done;
|
1149
1155
|
{
|
1150
1156
|
MutexLock lock(&ads_calld->xds_client()->mu_);
|
1151
1157
|
done = ads_calld->OnResponseReceivedLocked();
|
1152
1158
|
}
|
1159
|
+
ads_calld->xds_client()->work_serializer_.DrainQueue();
|
1153
1160
|
if (done) ads_calld->Unref(DEBUG_LOCATION, "ADS+OnResponseReceivedLocked");
|
1154
1161
|
}
|
1155
1162
|
|
@@ -1166,49 +1173,75 @@ bool XdsClient::ChannelState::AdsCallState::OnResponseReceivedLocked() {
|
|
1166
1173
|
grpc_byte_buffer_destroy(recv_message_payload_);
|
1167
1174
|
recv_message_payload_ = nullptr;
|
1168
1175
|
// Parse and validate the response.
|
1169
|
-
|
1170
|
-
|
1171
|
-
|
1172
|
-
ResourceNamesForRequest(XdsApi::kCdsTypeUrl),
|
1173
|
-
ResourceNamesForRequest(XdsApi::kEdsTypeUrl));
|
1176
|
+
AdsResponseParser parser(this);
|
1177
|
+
absl::Status status = xds_client()->api_.ParseAdsResponse(
|
1178
|
+
chand()->server_, response_slice, &parser);
|
1174
1179
|
grpc_slice_unref_internal(response_slice);
|
1175
|
-
if (
|
1180
|
+
if (!status.ok()) {
|
1176
1181
|
// Ignore unparsable response.
|
1177
1182
|
gpr_log(GPR_ERROR,
|
1178
|
-
"[xds_client %p]
|
1179
|
-
|
1180
|
-
|
1183
|
+
"[xds_client %p] xds server %s: error parsing ADS response (%s) "
|
1184
|
+
"-- ignoring",
|
1185
|
+
xds_client(), chand()->server_.server_uri.c_str(),
|
1186
|
+
status.ToString().c_str());
|
1181
1187
|
} else {
|
1188
|
+
seen_response_ = true;
|
1189
|
+
AdsResponseParser::Result result = parser.TakeResult();
|
1182
1190
|
// Update nonce.
|
1183
|
-
auto& state = state_map_[result.
|
1184
|
-
state.nonce =
|
1185
|
-
//
|
1186
|
-
if (result.
|
1191
|
+
auto& state = state_map_[result.type];
|
1192
|
+
state.nonce = result.nonce;
|
1193
|
+
// If we got an error, set state.error so that we'll NACK the update.
|
1194
|
+
if (!result.errors.empty()) {
|
1195
|
+
std::string error = absl::StrJoin(result.errors, "; ");
|
1196
|
+
gpr_log(
|
1197
|
+
GPR_ERROR,
|
1198
|
+
"[xds_client %p] xds server %s: ADS response invalid for resource "
|
1199
|
+
"type %s version %s, will NACK: nonce=%s error=%s",
|
1200
|
+
xds_client(), chand()->server_.server_uri.c_str(),
|
1201
|
+
result.type_url.c_str(), result.version.c_str(), state.nonce.c_str(),
|
1202
|
+
error.c_str());
|
1187
1203
|
GRPC_ERROR_UNREF(state.error);
|
1188
|
-
state.error =
|
1189
|
-
|
1190
|
-
|
1191
|
-
|
1192
|
-
|
1193
|
-
|
1194
|
-
|
1195
|
-
|
1196
|
-
|
1197
|
-
|
1198
|
-
|
1199
|
-
|
1200
|
-
|
1201
|
-
|
1202
|
-
|
1203
|
-
|
1204
|
-
|
1205
|
-
|
1206
|
-
|
1204
|
+
state.error = grpc_error_set_int(GRPC_ERROR_CREATE_FROM_CPP_STRING(error),
|
1205
|
+
GRPC_ERROR_INT_GRPC_STATUS,
|
1206
|
+
GRPC_STATUS_UNAVAILABLE);
|
1207
|
+
}
|
1208
|
+
// Delete resources not seen in update if needed.
|
1209
|
+
if (result.type->AllResourcesRequiredInSotW()) {
|
1210
|
+
for (auto& a : xds_client()->authority_state_map_) {
|
1211
|
+
const std::string& authority = a.first;
|
1212
|
+
AuthorityState& authority_state = a.second;
|
1213
|
+
// Skip authorities that are not using this xDS channel.
|
1214
|
+
if (authority_state.channel_state != chand()) continue;
|
1215
|
+
auto seen_authority_it = result.resources_seen.find(authority);
|
1216
|
+
// Find this resource type.
|
1217
|
+
auto type_it = authority_state.resource_map.find(result.type);
|
1218
|
+
if (type_it == authority_state.resource_map.end()) continue;
|
1219
|
+
// Iterate over resource ids.
|
1220
|
+
for (auto& r : type_it->second) {
|
1221
|
+
const XdsResourceKey& resource_key = r.first;
|
1222
|
+
ResourceState& resource_state = r.second;
|
1223
|
+
if (seen_authority_it == result.resources_seen.end() ||
|
1224
|
+
seen_authority_it->second.find(resource_key) ==
|
1225
|
+
seen_authority_it->second.end()) {
|
1226
|
+
// If the resource was newly requested but has not yet been
|
1227
|
+
// received, we don't want to generate an error for the watchers,
|
1228
|
+
// because this ADS response may be in reaction to an earlier
|
1229
|
+
// request that did not yet request the new resource, so its absence
|
1230
|
+
// from the response does not necessarily indicate that the resource
|
1231
|
+
// does not exist. For that case, we rely on the request timeout
|
1232
|
+
// instead.
|
1233
|
+
if (resource_state.resource == nullptr) continue;
|
1234
|
+
resource_state.resource.reset();
|
1235
|
+
xds_client()->NotifyWatchersOnResourceDoesNotExist(
|
1236
|
+
resource_state.watchers);
|
1237
|
+
}
|
1238
|
+
}
|
1207
1239
|
}
|
1208
|
-
|
1240
|
+
}
|
1241
|
+
// If we had valid resources, update the version.
|
1242
|
+
if (result.have_valid_resources) {
|
1243
|
+
chand()->resource_type_version_map_[result.type] =
|
1209
1244
|
std::move(result.version);
|
1210
|
-
// ACK the update.
|
1211
|
-
SendMessageLocked(result.type_url);
|
1212
1245
|
// Start load reporting if needed.
|
1213
1246
|
auto& lrs_call = chand()->lrs_calld_;
|
1214
1247
|
if (lrs_call != nullptr) {
|
@@ -1216,6 +1249,8 @@ bool XdsClient::ChannelState::AdsCallState::OnResponseReceivedLocked() {
|
|
1216
1249
|
if (lrs_calld != nullptr) lrs_calld->MaybeStartReportingLocked();
|
1217
1250
|
}
|
1218
1251
|
}
|
1252
|
+
// Send ACK or NACK.
|
1253
|
+
SendMessageLocked(result.type);
|
1219
1254
|
}
|
1220
1255
|
if (xds_client()->shutting_down_) return true;
|
1221
1256
|
// Keep listening for updates.
|
@@ -1234,24 +1269,27 @@ bool XdsClient::ChannelState::AdsCallState::OnResponseReceivedLocked() {
|
|
1234
1269
|
}
|
1235
1270
|
|
1236
1271
|
void XdsClient::ChannelState::AdsCallState::OnStatusReceived(
|
1237
|
-
void* arg,
|
1272
|
+
void* arg, grpc_error_handle error) {
|
1238
1273
|
AdsCallState* ads_calld = static_cast<AdsCallState*>(arg);
|
1239
1274
|
{
|
1240
1275
|
MutexLock lock(&ads_calld->xds_client()->mu_);
|
1241
1276
|
ads_calld->OnStatusReceivedLocked(GRPC_ERROR_REF(error));
|
1242
1277
|
}
|
1278
|
+
ads_calld->xds_client()->work_serializer_.DrainQueue();
|
1243
1279
|
ads_calld->Unref(DEBUG_LOCATION, "ADS+OnStatusReceivedLocked");
|
1244
1280
|
}
|
1245
1281
|
|
1246
1282
|
void XdsClient::ChannelState::AdsCallState::OnStatusReceivedLocked(
|
1247
|
-
|
1283
|
+
grpc_error_handle error) {
|
1248
1284
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
1249
1285
|
char* status_details = grpc_slice_to_c_string(status_details_);
|
1250
1286
|
gpr_log(GPR_INFO,
|
1251
|
-
"[xds_client %p] ADS call status received
|
1252
|
-
"
|
1253
|
-
|
1254
|
-
|
1287
|
+
"[xds_client %p] xds server %s: ADS call status received "
|
1288
|
+
"(chand=%p, ads_calld=%p, call=%p): "
|
1289
|
+
"status=%d, details='%s', error='%s'",
|
1290
|
+
xds_client(), chand()->server_.server_uri.c_str(), chand(), this,
|
1291
|
+
call_, status_code_, status_details,
|
1292
|
+
grpc_error_std_string(error).c_str());
|
1255
1293
|
gpr_free(status_details);
|
1256
1294
|
}
|
1257
1295
|
// Ignore status from a stale call.
|
@@ -1259,8 +1297,11 @@ void XdsClient::ChannelState::AdsCallState::OnStatusReceivedLocked(
|
|
1259
1297
|
// Try to restart the call.
|
1260
1298
|
parent_->OnCallFinishedLocked();
|
1261
1299
|
// Send error to all watchers.
|
1262
|
-
xds_client()->NotifyOnErrorLocked(
|
1263
|
-
|
1300
|
+
xds_client()->NotifyOnErrorLocked(absl::UnavailableError(absl::StrFormat(
|
1301
|
+
"xDS call failed: xDS server: %s, ADS call status code=%d, "
|
1302
|
+
"details='%s', error='%s'",
|
1303
|
+
chand()->server_.server_uri, status_code_,
|
1304
|
+
StringViewFromSlice(status_details_), grpc_error_std_string(error))));
|
1264
1305
|
}
|
1265
1306
|
GRPC_ERROR_UNREF(error);
|
1266
1307
|
}
|
@@ -1272,16 +1313,21 @@ bool XdsClient::ChannelState::AdsCallState::IsCurrentCallOnChannel() const {
|
|
1272
1313
|
return this == chand()->ads_calld_->calld();
|
1273
1314
|
}
|
1274
1315
|
|
1275
|
-
std::
|
1316
|
+
std::vector<std::string>
|
1276
1317
|
XdsClient::ChannelState::AdsCallState::ResourceNamesForRequest(
|
1277
|
-
const
|
1278
|
-
std::
|
1279
|
-
auto it = state_map_.find(
|
1318
|
+
const XdsResourceType* type) {
|
1319
|
+
std::vector<std::string> resource_names;
|
1320
|
+
auto it = state_map_.find(type);
|
1280
1321
|
if (it != state_map_.end()) {
|
1281
|
-
for (auto&
|
1282
|
-
|
1283
|
-
|
1284
|
-
|
1322
|
+
for (auto& a : it->second.subscribed_resources) {
|
1323
|
+
const std::string& authority = a.first;
|
1324
|
+
for (auto& p : a.second) {
|
1325
|
+
const XdsResourceKey& resource_key = p.first;
|
1326
|
+
resource_names.emplace_back(XdsClient::ConstructFullXdsResourceName(
|
1327
|
+
authority, type->type_url(), resource_key));
|
1328
|
+
OrphanablePtr<ResourceTimer>& resource_timer = p.second;
|
1329
|
+
resource_timer->MaybeStartTimer(Ref(DEBUG_LOCATION, "ResourceTimer"));
|
1330
|
+
}
|
1285
1331
|
}
|
1286
1332
|
}
|
1287
1333
|
return resource_names;
|
@@ -1299,14 +1345,14 @@ void XdsClient::ChannelState::LrsCallState::Reporter::Orphan() {
|
|
1299
1345
|
|
1300
1346
|
void XdsClient::ChannelState::LrsCallState::Reporter::
|
1301
1347
|
ScheduleNextReportLocked() {
|
1302
|
-
const
|
1348
|
+
const Timestamp next_report_time = ExecCtx::Get()->Now() + report_interval_;
|
1303
1349
|
grpc_timer_init(&next_report_timer_, next_report_time,
|
1304
1350
|
&on_next_report_timer_);
|
1305
1351
|
next_report_timer_callback_pending_ = true;
|
1306
1352
|
}
|
1307
1353
|
|
1308
1354
|
void XdsClient::ChannelState::LrsCallState::Reporter::OnNextReportTimer(
|
1309
|
-
void* arg,
|
1355
|
+
void* arg, grpc_error_handle error) {
|
1310
1356
|
Reporter* self = static_cast<Reporter*>(arg);
|
1311
1357
|
bool done;
|
1312
1358
|
{
|
@@ -1317,7 +1363,7 @@ void XdsClient::ChannelState::LrsCallState::Reporter::OnNextReportTimer(
|
|
1317
1363
|
}
|
1318
1364
|
|
1319
1365
|
bool XdsClient::ChannelState::LrsCallState::Reporter::OnNextReportTimerLocked(
|
1320
|
-
|
1366
|
+
grpc_error_handle error) {
|
1321
1367
|
next_report_timer_callback_pending_ = false;
|
1322
1368
|
if (error != GRPC_ERROR_NONE || !IsCurrentReporterOnCall()) {
|
1323
1369
|
GRPC_ERROR_UNREF(error);
|
@@ -1345,15 +1391,19 @@ bool LoadReportCountersAreZero(const XdsApi::ClusterLoadReportMap& snapshot) {
|
|
1345
1391
|
bool XdsClient::ChannelState::LrsCallState::Reporter::SendReportLocked() {
|
1346
1392
|
// Construct snapshot from all reported stats.
|
1347
1393
|
XdsApi::ClusterLoadReportMap snapshot =
|
1348
|
-
xds_client()->BuildLoadReportSnapshotLocked(parent_->
|
1394
|
+
xds_client()->BuildLoadReportSnapshotLocked(parent_->chand()->server_,
|
1395
|
+
parent_->send_all_clusters_,
|
1349
1396
|
parent_->cluster_names_);
|
1350
1397
|
// Skip client load report if the counters were all zero in the last
|
1351
1398
|
// report and they are still zero in this one.
|
1352
1399
|
const bool old_val = last_report_counters_were_zero_;
|
1353
1400
|
last_report_counters_were_zero_ = LoadReportCountersAreZero(snapshot);
|
1354
1401
|
if (old_val && last_report_counters_were_zero_) {
|
1355
|
-
|
1356
|
-
|
1402
|
+
auto it = xds_client()->xds_load_report_server_map_.find(
|
1403
|
+
parent_->chand()->server_);
|
1404
|
+
if (it == xds_client()->xds_load_report_server_map_.end() ||
|
1405
|
+
it->second.load_report_map.empty()) {
|
1406
|
+
it->second.channel_state->StopLrsCallLocked();
|
1357
1407
|
return true;
|
1358
1408
|
}
|
1359
1409
|
ScheduleNextReportLocked();
|
@@ -1374,15 +1424,17 @@ bool XdsClient::ChannelState::LrsCallState::Reporter::SendReportLocked() {
|
|
1374
1424
|
parent_->call_, &op, 1, &on_report_done_);
|
1375
1425
|
if (GPR_UNLIKELY(call_error != GRPC_CALL_OK)) {
|
1376
1426
|
gpr_log(GPR_ERROR,
|
1377
|
-
"[xds_client %p]
|
1378
|
-
|
1427
|
+
"[xds_client %p] xds server %s: error starting LRS send_message "
|
1428
|
+
"batch on calld=%p: call_error=%d",
|
1429
|
+
xds_client(), parent_->chand()->server_.server_uri.c_str(), this,
|
1430
|
+
call_error);
|
1379
1431
|
GPR_ASSERT(GRPC_CALL_OK == call_error);
|
1380
1432
|
}
|
1381
1433
|
return false;
|
1382
1434
|
}
|
1383
1435
|
|
1384
1436
|
void XdsClient::ChannelState::LrsCallState::Reporter::OnReportDone(
|
1385
|
-
void* arg,
|
1437
|
+
void* arg, grpc_error_handle error) {
|
1386
1438
|
Reporter* self = static_cast<Reporter*>(arg);
|
1387
1439
|
bool done;
|
1388
1440
|
{
|
@@ -1393,12 +1445,15 @@ void XdsClient::ChannelState::LrsCallState::Reporter::OnReportDone(
|
|
1393
1445
|
}
|
1394
1446
|
|
1395
1447
|
bool XdsClient::ChannelState::LrsCallState::Reporter::OnReportDoneLocked(
|
1396
|
-
|
1448
|
+
grpc_error_handle error) {
|
1397
1449
|
grpc_byte_buffer_destroy(parent_->send_message_payload_);
|
1398
1450
|
parent_->send_message_payload_ = nullptr;
|
1399
1451
|
// If there are no more registered stats to report, cancel the call.
|
1400
|
-
|
1401
|
-
|
1452
|
+
auto it =
|
1453
|
+
xds_client()->xds_load_report_server_map_.find(parent_->chand()->server_);
|
1454
|
+
if (it == xds_client()->xds_load_report_server_map_.end() ||
|
1455
|
+
it->second.load_report_map.empty()) {
|
1456
|
+
it->second.channel_state->StopLrsCallLocked();
|
1402
1457
|
GRPC_ERROR_UNREF(error);
|
1403
1458
|
return true;
|
1404
1459
|
}
|
@@ -1430,14 +1485,15 @@ XdsClient::ChannelState::LrsCallState::LrsCallState(
|
|
1430
1485
|
// activity in xds_client()->interested_parties_, which is comprised of
|
1431
1486
|
// the polling entities from client_channel.
|
1432
1487
|
GPR_ASSERT(xds_client() != nullptr);
|
1433
|
-
const
|
1488
|
+
const char* method =
|
1434
1489
|
chand()->server_.ShouldUseV3()
|
1435
|
-
?
|
1436
|
-
:
|
1490
|
+
? "/envoy.service.load_stats.v3.LoadReportingService/StreamLoadStats"
|
1491
|
+
: "/envoy.service.load_stats.v2.LoadReportingService/StreamLoadStats";
|
1437
1492
|
call_ = grpc_channel_create_pollset_set_call(
|
1438
1493
|
chand()->channel_, nullptr, GRPC_PROPAGATE_DEFAULTS,
|
1439
|
-
xds_client()->interested_parties_,
|
1440
|
-
|
1494
|
+
xds_client()->interested_parties_,
|
1495
|
+
Slice::FromStaticString(method).c_slice(), nullptr,
|
1496
|
+
Timestamp::InfFuture(), nullptr);
|
1441
1497
|
GPR_ASSERT(call_ != nullptr);
|
1442
1498
|
// Init the request payload.
|
1443
1499
|
grpc_slice request_payload_slice =
|
@@ -1450,10 +1506,10 @@ XdsClient::ChannelState::LrsCallState::LrsCallState(
|
|
1450
1506
|
grpc_metadata_array_init(&trailing_metadata_recv_);
|
1451
1507
|
// Start the call.
|
1452
1508
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
1453
|
-
gpr_log(
|
1454
|
-
|
1455
|
-
|
1456
|
-
|
1509
|
+
gpr_log(
|
1510
|
+
GPR_INFO,
|
1511
|
+
"[xds_client %p] xds server %s: starting LRS call (calld=%p, call=%p)",
|
1512
|
+
xds_client(), chand()->server_.server_uri.c_str(), this, call_);
|
1457
1513
|
}
|
1458
1514
|
// Create the ops.
|
1459
1515
|
grpc_call_error call_error;
|
@@ -1563,7 +1619,7 @@ void XdsClient::ChannelState::LrsCallState::MaybeStartReportingLocked() {
|
|
1563
1619
|
}
|
1564
1620
|
|
1565
1621
|
void XdsClient::ChannelState::LrsCallState::OnInitialRequestSent(
|
1566
|
-
void* arg,
|
1622
|
+
void* arg, grpc_error_handle /*error*/) {
|
1567
1623
|
LrsCallState* lrs_calld = static_cast<LrsCallState*>(arg);
|
1568
1624
|
{
|
1569
1625
|
MutexLock lock(&lrs_calld->xds_client()->mu_);
|
@@ -1580,7 +1636,7 @@ void XdsClient::ChannelState::LrsCallState::OnInitialRequestSentLocked() {
|
|
1580
1636
|
}
|
1581
1637
|
|
1582
1638
|
void XdsClient::ChannelState::LrsCallState::OnResponseReceived(
|
1583
|
-
void* arg,
|
1639
|
+
void* arg, grpc_error_handle /*error*/) {
|
1584
1640
|
LrsCallState* lrs_calld = static_cast<LrsCallState*>(arg);
|
1585
1641
|
bool done;
|
1586
1642
|
{
|
@@ -1607,14 +1663,15 @@ bool XdsClient::ChannelState::LrsCallState::OnResponseReceivedLocked() {
|
|
1607
1663
|
// Parse the response.
|
1608
1664
|
bool send_all_clusters = false;
|
1609
1665
|
std::set<std::string> new_cluster_names;
|
1610
|
-
|
1611
|
-
|
1666
|
+
Duration new_load_reporting_interval;
|
1667
|
+
grpc_error_handle parse_error = xds_client()->api_.ParseLrsResponse(
|
1612
1668
|
response_slice, &send_all_clusters, &new_cluster_names,
|
1613
1669
|
&new_load_reporting_interval);
|
1614
1670
|
if (parse_error != GRPC_ERROR_NONE) {
|
1615
1671
|
gpr_log(GPR_ERROR,
|
1616
|
-
"[xds_client %p] LRS response parsing failed
|
1617
|
-
xds_client(),
|
1672
|
+
"[xds_client %p] xds server %s: LRS response parsing failed: %s",
|
1673
|
+
xds_client(), chand()->server_.server_uri.c_str(),
|
1674
|
+
grpc_error_std_string(parse_error).c_str());
|
1618
1675
|
GRPC_ERROR_UNREF(parse_error);
|
1619
1676
|
return;
|
1620
1677
|
}
|
@@ -1622,11 +1679,12 @@ bool XdsClient::ChannelState::LrsCallState::OnResponseReceivedLocked() {
|
|
1622
1679
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
1623
1680
|
gpr_log(
|
1624
1681
|
GPR_INFO,
|
1625
|
-
"[xds_client %p] LRS response received, %" PRIuPTR
|
1682
|
+
"[xds_client %p] xds server %s: LRS response received, %" PRIuPTR
|
1626
1683
|
" cluster names, send_all_clusters=%d, load_report_interval=%" PRId64
|
1627
1684
|
"ms",
|
1628
|
-
xds_client(),
|
1629
|
-
|
1685
|
+
xds_client(), chand()->server_.server_uri.c_str(),
|
1686
|
+
new_cluster_names.size(), send_all_clusters,
|
1687
|
+
new_load_reporting_interval.millis());
|
1630
1688
|
size_t i = 0;
|
1631
1689
|
for (const auto& name : new_cluster_names) {
|
1632
1690
|
gpr_log(GPR_INFO, "[xds_client %p] cluster_name %" PRIuPTR ": %s",
|
@@ -1634,14 +1692,16 @@ bool XdsClient::ChannelState::LrsCallState::OnResponseReceivedLocked() {
|
|
1634
1692
|
}
|
1635
1693
|
}
|
1636
1694
|
if (new_load_reporting_interval <
|
1637
|
-
|
1638
|
-
|
1639
|
-
|
1695
|
+
Duration::Milliseconds(
|
1696
|
+
GRPC_XDS_MIN_CLIENT_LOAD_REPORTING_INTERVAL_MS)) {
|
1697
|
+
new_load_reporting_interval = Duration::Milliseconds(
|
1698
|
+
GRPC_XDS_MIN_CLIENT_LOAD_REPORTING_INTERVAL_MS);
|
1640
1699
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
1641
1700
|
gpr_log(GPR_INFO,
|
1642
|
-
"[xds_client %p]
|
1643
|
-
"value %dms",
|
1644
|
-
xds_client(),
|
1701
|
+
"[xds_client %p] xds server %s: increased load_report_interval "
|
1702
|
+
"to minimum value %dms",
|
1703
|
+
xds_client(), chand()->server_.server_uri.c_str(),
|
1704
|
+
GRPC_XDS_MIN_CLIENT_LOAD_REPORTING_INTERVAL_MS);
|
1645
1705
|
}
|
1646
1706
|
}
|
1647
1707
|
// Ignore identical update.
|
@@ -1649,10 +1709,11 @@ bool XdsClient::ChannelState::LrsCallState::OnResponseReceivedLocked() {
|
|
1649
1709
|
cluster_names_ == new_cluster_names &&
|
1650
1710
|
load_reporting_interval_ == new_load_reporting_interval) {
|
1651
1711
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
1652
|
-
gpr_log(
|
1653
|
-
|
1654
|
-
|
1655
|
-
|
1712
|
+
gpr_log(
|
1713
|
+
GPR_INFO,
|
1714
|
+
"[xds_client %p] xds server %s: incoming LRS response identical "
|
1715
|
+
"to current, ignoring.",
|
1716
|
+
xds_client(), chand()->server_.server_uri.c_str());
|
1656
1717
|
}
|
1657
1718
|
return;
|
1658
1719
|
}
|
@@ -1683,7 +1744,7 @@ bool XdsClient::ChannelState::LrsCallState::OnResponseReceivedLocked() {
|
|
1683
1744
|
}
|
1684
1745
|
|
1685
1746
|
void XdsClient::ChannelState::LrsCallState::OnStatusReceived(
|
1686
|
-
void* arg,
|
1747
|
+
void* arg, grpc_error_handle error) {
|
1687
1748
|
LrsCallState* lrs_calld = static_cast<LrsCallState*>(arg);
|
1688
1749
|
{
|
1689
1750
|
MutexLock lock(&lrs_calld->xds_client()->mu_);
|
@@ -1693,20 +1754,21 @@ void XdsClient::ChannelState::LrsCallState::OnStatusReceived(
|
|
1693
1754
|
}
|
1694
1755
|
|
1695
1756
|
void XdsClient::ChannelState::LrsCallState::OnStatusReceivedLocked(
|
1696
|
-
|
1757
|
+
grpc_error_handle error) {
|
1697
1758
|
GPR_ASSERT(call_ != nullptr);
|
1698
1759
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
1699
1760
|
char* status_details = grpc_slice_to_c_string(status_details_);
|
1700
1761
|
gpr_log(GPR_INFO,
|
1701
|
-
"[xds_client %p] LRS call status received
|
1702
|
-
"
|
1703
|
-
|
1704
|
-
|
1762
|
+
"[xds_client %p] xds server %s: LRS call status received "
|
1763
|
+
"(chand=%p, calld=%p, call=%p): "
|
1764
|
+
"status=%d, details='%s', error='%s'",
|
1765
|
+
xds_client(), chand()->server_.server_uri.c_str(), chand(), this,
|
1766
|
+
call_, status_code_, status_details,
|
1767
|
+
grpc_error_std_string(error).c_str());
|
1705
1768
|
gpr_free(status_details);
|
1706
1769
|
}
|
1707
1770
|
// Ignore status from a stale call.
|
1708
1771
|
if (IsCurrentCallOnChannel()) {
|
1709
|
-
GPR_ASSERT(!xds_client()->shutting_down_);
|
1710
1772
|
// Try to restart the call.
|
1711
1773
|
parent_->OnCallFinishedLocked();
|
1712
1774
|
}
|
@@ -1726,64 +1788,55 @@ bool XdsClient::ChannelState::LrsCallState::IsCurrentCallOnChannel() const {
|
|
1726
1788
|
|
1727
1789
|
namespace {
|
1728
1790
|
|
1729
|
-
|
1730
|
-
return grpc_channel_args_find_integer(
|
1731
|
-
|
1732
|
-
{15000, 0, INT_MAX});
|
1791
|
+
Duration GetRequestTimeout(const grpc_channel_args* args) {
|
1792
|
+
return Duration::Milliseconds(grpc_channel_args_find_integer(
|
1793
|
+
args, GRPC_ARG_XDS_RESOURCE_DOES_NOT_EXIST_TIMEOUT_MS,
|
1794
|
+
{15000, 0, INT_MAX}));
|
1795
|
+
}
|
1796
|
+
|
1797
|
+
grpc_channel_args* ModifyChannelArgs(const grpc_channel_args* args) {
|
1798
|
+
absl::InlinedVector<grpc_arg, 1> args_to_add = {
|
1799
|
+
grpc_channel_arg_integer_create(
|
1800
|
+
const_cast<char*>(GRPC_ARG_KEEPALIVE_TIME_MS),
|
1801
|
+
5 * 60 * GPR_MS_PER_SEC),
|
1802
|
+
};
|
1803
|
+
return grpc_channel_args_copy_and_add(args, args_to_add.data(),
|
1804
|
+
args_to_add.size());
|
1733
1805
|
}
|
1734
1806
|
|
1735
1807
|
} // namespace
|
1736
1808
|
|
1737
|
-
XdsClient::XdsClient(
|
1809
|
+
XdsClient::XdsClient(std::unique_ptr<XdsBootstrap> bootstrap,
|
1810
|
+
const grpc_channel_args* args)
|
1738
1811
|
: DualRefCounted<XdsClient>(
|
1739
1812
|
GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_refcount_trace) ? "XdsClient"
|
1740
1813
|
: nullptr),
|
1741
|
-
|
1814
|
+
bootstrap_(std::move(bootstrap)),
|
1815
|
+
args_(ModifyChannelArgs(args)),
|
1816
|
+
request_timeout_(GetRequestTimeout(args)),
|
1817
|
+
xds_federation_enabled_(XdsFederationEnabled()),
|
1742
1818
|
interested_parties_(grpc_pollset_set_create()),
|
1743
|
-
bootstrap_(
|
1744
|
-
XdsBootstrap::ReadFromFile(this, &grpc_xds_client_trace, error)),
|
1745
1819
|
certificate_provider_store_(MakeOrphanable<CertificateProviderStore>(
|
1746
|
-
bootstrap_
|
1747
|
-
|
1748
|
-
|
1749
|
-
api_(this, &grpc_xds_client_trace,
|
1750
|
-
bootstrap_ == nullptr ? nullptr : bootstrap_->node()) {
|
1820
|
+
bootstrap_->certificate_providers())),
|
1821
|
+
api_(this, &grpc_xds_client_trace, bootstrap_->node(),
|
1822
|
+
&bootstrap_->certificate_providers(), &symtab_) {
|
1751
1823
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
1752
1824
|
gpr_log(GPR_INFO, "[xds_client %p] creating xds client", this);
|
1753
1825
|
}
|
1754
|
-
|
1755
|
-
|
1756
|
-
|
1757
|
-
return;
|
1758
|
-
}
|
1759
|
-
// Create ChannelState object.
|
1760
|
-
chand_ = MakeOrphanable<ChannelState>(
|
1761
|
-
WeakRef(DEBUG_LOCATION, "XdsClient+ChannelState"), bootstrap_->server());
|
1826
|
+
// Calling grpc_init to ensure gRPC does not shut down until the XdsClient is
|
1827
|
+
// destroyed.
|
1828
|
+
grpc_init();
|
1762
1829
|
}
|
1763
1830
|
|
1764
1831
|
XdsClient::~XdsClient() {
|
1765
1832
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
1766
1833
|
gpr_log(GPR_INFO, "[xds_client %p] destroying xds client", this);
|
1767
1834
|
}
|
1835
|
+
grpc_channel_args_destroy(args_);
|
1768
1836
|
grpc_pollset_set_destroy(interested_parties_);
|
1769
|
-
|
1770
|
-
|
1771
|
-
|
1772
|
-
channelz::ChannelNode* parent_channelz_node) {
|
1773
|
-
channelz::ChannelNode* xds_channelz_node =
|
1774
|
-
grpc_channel_get_channelz_node(chand_->channel());
|
1775
|
-
if (xds_channelz_node != nullptr) {
|
1776
|
-
parent_channelz_node->AddChildChannel(xds_channelz_node->uuid());
|
1777
|
-
}
|
1778
|
-
}
|
1779
|
-
|
1780
|
-
void XdsClient::RemoveChannelzLinkage(
|
1781
|
-
channelz::ChannelNode* parent_channelz_node) {
|
1782
|
-
channelz::ChannelNode* xds_channelz_node =
|
1783
|
-
grpc_channel_get_channelz_node(chand_->channel());
|
1784
|
-
if (xds_channelz_node != nullptr) {
|
1785
|
-
parent_channelz_node->RemoveChildChannel(xds_channelz_node->uuid());
|
1786
|
-
}
|
1837
|
+
// Calling grpc_shutdown to ensure gRPC does not shut down until the XdsClient
|
1838
|
+
// is destroyed.
|
1839
|
+
grpc_shutdown();
|
1787
1840
|
}
|
1788
1841
|
|
1789
1842
|
void XdsClient::Orphan() {
|
@@ -1797,191 +1850,223 @@ void XdsClient::Orphan() {
|
|
1797
1850
|
{
|
1798
1851
|
MutexLock lock(&mu_);
|
1799
1852
|
shutting_down_ = true;
|
1800
|
-
//
|
1801
|
-
|
1802
|
-
|
1803
|
-
|
1804
|
-
|
1805
|
-
|
1806
|
-
|
1807
|
-
|
1808
|
-
|
1809
|
-
|
1810
|
-
|
1811
|
-
|
1812
|
-
|
1813
|
-
|
1814
|
-
|
1815
|
-
|
1816
|
-
|
1817
|
-
|
1818
|
-
|
1819
|
-
|
1820
|
-
|
1821
|
-
|
1822
|
-
|
1823
|
-
//
|
1824
|
-
|
1825
|
-
|
1826
|
-
|
1827
|
-
|
1828
|
-
|
1853
|
+
// Clear cache and any remaining watchers that may not have been cancelled.
|
1854
|
+
authority_state_map_.clear();
|
1855
|
+
invalid_watchers_.clear();
|
1856
|
+
}
|
1857
|
+
}
|
1858
|
+
|
1859
|
+
RefCountedPtr<XdsClient::ChannelState> XdsClient::GetOrCreateChannelStateLocked(
|
1860
|
+
const XdsBootstrap::XdsServer& server) {
|
1861
|
+
auto it = xds_server_channel_map_.find(server);
|
1862
|
+
if (it != xds_server_channel_map_.end()) {
|
1863
|
+
return it->second->Ref(DEBUG_LOCATION, "Authority");
|
1864
|
+
}
|
1865
|
+
// Channel not found, so create a new one.
|
1866
|
+
auto channel_state = MakeRefCounted<ChannelState>(
|
1867
|
+
WeakRef(DEBUG_LOCATION, "ChannelState"), server);
|
1868
|
+
xds_server_channel_map_[server] = channel_state.get();
|
1869
|
+
return channel_state;
|
1870
|
+
}
|
1871
|
+
|
1872
|
+
void XdsClient::WatchResource(const XdsResourceType* type,
|
1873
|
+
absl::string_view name,
|
1874
|
+
RefCountedPtr<ResourceWatcherInterface> watcher) {
|
1875
|
+
ResourceWatcherInterface* w = watcher.get();
|
1876
|
+
// Lambda for handling failure cases.
|
1877
|
+
auto fail = [&](absl::Status status) mutable {
|
1878
|
+
{
|
1879
|
+
MutexLock lock(&mu_);
|
1880
|
+
MaybeRegisterResourceTypeLocked(type);
|
1881
|
+
invalid_watchers_[w] = watcher;
|
1829
1882
|
}
|
1830
|
-
|
1883
|
+
work_serializer_.Run(
|
1884
|
+
// TODO(yashykt): When we move to C++14, capture watcher using
|
1885
|
+
// std::move()
|
1886
|
+
[watcher, status]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(&work_serializer_) {
|
1887
|
+
watcher->OnError(status);
|
1888
|
+
},
|
1889
|
+
DEBUG_LOCATION);
|
1890
|
+
};
|
1891
|
+
auto resource_name = ParseXdsResourceName(name, type);
|
1892
|
+
if (!resource_name.ok()) {
|
1893
|
+
fail(absl::UnavailableError(absl::StrFormat(
|
1894
|
+
"Unable to parse resource name for listener %s", name)));
|
1895
|
+
return;
|
1831
1896
|
}
|
1832
|
-
|
1833
|
-
|
1834
|
-
|
1835
|
-
|
1836
|
-
|
1837
|
-
|
1838
|
-
|
1839
|
-
|
1840
|
-
|
1841
|
-
|
1842
|
-
auto it = listener_state.watchers.find(watcher);
|
1843
|
-
if (it != listener_state.watchers.end()) {
|
1844
|
-
listener_state.watchers.erase(it);
|
1845
|
-
if (listener_state.watchers.empty()) {
|
1846
|
-
listener_map_.erase(listener_name_str);
|
1847
|
-
chand_->Unsubscribe(XdsApi::kLdsTypeUrl, listener_name_str,
|
1848
|
-
delay_unsubscription);
|
1897
|
+
// Find server to use.
|
1898
|
+
const XdsBootstrap::XdsServer* xds_server = nullptr;
|
1899
|
+
absl::string_view authority_name = resource_name->authority;
|
1900
|
+
if (absl::ConsumePrefix(&authority_name, "xdstp:")) {
|
1901
|
+
auto* authority = bootstrap_->LookupAuthority(std::string(authority_name));
|
1902
|
+
if (authority == nullptr) {
|
1903
|
+
fail(absl::UnavailableError(
|
1904
|
+
absl::StrCat("authority \"", authority_name,
|
1905
|
+
"\" not present in bootstrap config")));
|
1906
|
+
return;
|
1849
1907
|
}
|
1850
|
-
|
1851
|
-
|
1852
|
-
|
1853
|
-
void XdsClient::WatchRouteConfigData(
|
1854
|
-
absl::string_view route_config_name,
|
1855
|
-
std::unique_ptr<RouteConfigWatcherInterface> watcher) {
|
1856
|
-
std::string route_config_name_str = std::string(route_config_name);
|
1857
|
-
MutexLock lock(&mu_);
|
1858
|
-
RouteConfigState& route_config_state =
|
1859
|
-
route_config_map_[route_config_name_str];
|
1860
|
-
RouteConfigWatcherInterface* w = watcher.get();
|
1861
|
-
route_config_state.watchers[w] = std::move(watcher);
|
1862
|
-
// If we've already received an RDS update, notify the new watcher
|
1863
|
-
// immediately.
|
1864
|
-
if (route_config_state.update.has_value()) {
|
1865
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
1866
|
-
gpr_log(GPR_INFO,
|
1867
|
-
"[xds_client %p] returning cached route config data for %s", this,
|
1868
|
-
route_config_name_str.c_str());
|
1908
|
+
if (!authority->xds_servers.empty()) {
|
1909
|
+
xds_server = &authority->xds_servers[0];
|
1869
1910
|
}
|
1870
|
-
w->OnRouteConfigChanged(*route_config_state.update);
|
1871
1911
|
}
|
1872
|
-
|
1873
|
-
|
1874
|
-
|
1875
|
-
|
1876
|
-
|
1877
|
-
|
1878
|
-
|
1879
|
-
|
1880
|
-
|
1881
|
-
|
1882
|
-
|
1883
|
-
|
1884
|
-
|
1885
|
-
|
1886
|
-
|
1887
|
-
|
1888
|
-
|
1889
|
-
|
1890
|
-
|
1891
|
-
|
1892
|
-
|
1893
|
-
|
1894
|
-
|
1895
|
-
|
1896
|
-
std::unique_ptr<ClusterWatcherInterface> watcher) {
|
1897
|
-
std::string cluster_name_str = std::string(cluster_name);
|
1898
|
-
MutexLock lock(&mu_);
|
1899
|
-
ClusterState& cluster_state = cluster_map_[cluster_name_str];
|
1900
|
-
ClusterWatcherInterface* w = watcher.get();
|
1901
|
-
cluster_state.watchers[w] = std::move(watcher);
|
1902
|
-
// If we've already received a CDS update, notify the new watcher
|
1903
|
-
// immediately.
|
1904
|
-
if (cluster_state.update.has_value()) {
|
1905
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
1906
|
-
gpr_log(GPR_INFO, "[xds_client %p] returning cached cluster data for %s",
|
1907
|
-
this, cluster_name_str.c_str());
|
1912
|
+
if (xds_server == nullptr) xds_server = &bootstrap_->server();
|
1913
|
+
{
|
1914
|
+
MutexLock lock(&mu_);
|
1915
|
+
MaybeRegisterResourceTypeLocked(type);
|
1916
|
+
AuthorityState& authority_state =
|
1917
|
+
authority_state_map_[resource_name->authority];
|
1918
|
+
ResourceState& resource_state =
|
1919
|
+
authority_state.resource_map[type][resource_name->key];
|
1920
|
+
resource_state.watchers[w] = watcher;
|
1921
|
+
// If we already have a cached value for the resource, notify the new
|
1922
|
+
// watcher immediately.
|
1923
|
+
if (resource_state.resource != nullptr) {
|
1924
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
1925
|
+
gpr_log(GPR_INFO,
|
1926
|
+
"[xds_client %p] returning cached listener data for %s", this,
|
1927
|
+
std::string(name).c_str());
|
1928
|
+
}
|
1929
|
+
auto* value = type->CopyResource(resource_state.resource.get()).release();
|
1930
|
+
work_serializer_.Schedule(
|
1931
|
+
[watcher, value]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(&work_serializer_) {
|
1932
|
+
watcher->OnGenericResourceChanged(value);
|
1933
|
+
delete value;
|
1934
|
+
},
|
1935
|
+
DEBUG_LOCATION);
|
1908
1936
|
}
|
1909
|
-
|
1910
|
-
|
1911
|
-
|
1912
|
-
|
1913
|
-
|
1914
|
-
void XdsClient::CancelClusterDataWatch(absl::string_view cluster_name,
|
1915
|
-
ClusterWatcherInterface* watcher,
|
1916
|
-
bool delay_unsubscription) {
|
1917
|
-
MutexLock lock(&mu_);
|
1918
|
-
if (shutting_down_) return;
|
1919
|
-
std::string cluster_name_str = std::string(cluster_name);
|
1920
|
-
ClusterState& cluster_state = cluster_map_[cluster_name_str];
|
1921
|
-
auto it = cluster_state.watchers.find(watcher);
|
1922
|
-
if (it != cluster_state.watchers.end()) {
|
1923
|
-
cluster_state.watchers.erase(it);
|
1924
|
-
if (cluster_state.watchers.empty()) {
|
1925
|
-
cluster_map_.erase(cluster_name_str);
|
1926
|
-
chand_->Unsubscribe(XdsApi::kCdsTypeUrl, cluster_name_str,
|
1927
|
-
delay_unsubscription);
|
1937
|
+
// If the authority doesn't yet have a channel, set it, creating it if
|
1938
|
+
// needed.
|
1939
|
+
if (authority_state.channel_state == nullptr) {
|
1940
|
+
authority_state.channel_state =
|
1941
|
+
GetOrCreateChannelStateLocked(*xds_server);
|
1928
1942
|
}
|
1943
|
+
authority_state.channel_state->SubscribeLocked(type, *resource_name);
|
1929
1944
|
}
|
1945
|
+
work_serializer_.DrainQueue();
|
1930
1946
|
}
|
1931
1947
|
|
1932
|
-
void XdsClient::
|
1933
|
-
|
1934
|
-
|
1935
|
-
|
1948
|
+
void XdsClient::CancelResourceWatch(const XdsResourceType* type,
|
1949
|
+
absl::string_view name,
|
1950
|
+
ResourceWatcherInterface* watcher,
|
1951
|
+
bool delay_unsubscription) {
|
1952
|
+
auto resource_name = ParseXdsResourceName(name, type);
|
1936
1953
|
MutexLock lock(&mu_);
|
1937
|
-
|
1938
|
-
|
1939
|
-
|
1940
|
-
//
|
1941
|
-
|
1942
|
-
|
1943
|
-
|
1944
|
-
|
1945
|
-
|
1954
|
+
// We cannot be sure whether the watcher is in invalid_watchers_ or in
|
1955
|
+
// authority_state_map_, so we check both, just to be safe.
|
1956
|
+
invalid_watchers_.erase(watcher);
|
1957
|
+
// Find authority.
|
1958
|
+
if (!resource_name.ok()) return;
|
1959
|
+
auto authority_it = authority_state_map_.find(resource_name->authority);
|
1960
|
+
if (authority_it == authority_state_map_.end()) return;
|
1961
|
+
AuthorityState& authority_state = authority_it->second;
|
1962
|
+
// Find type map.
|
1963
|
+
auto type_it = authority_state.resource_map.find(type);
|
1964
|
+
if (type_it == authority_state.resource_map.end()) return;
|
1965
|
+
auto& type_map = type_it->second;
|
1966
|
+
// Find resource key.
|
1967
|
+
auto resource_it = type_map.find(resource_name->key);
|
1968
|
+
if (resource_it == type_map.end()) return;
|
1969
|
+
ResourceState& resource_state = resource_it->second;
|
1970
|
+
// Remove watcher.
|
1971
|
+
resource_state.watchers.erase(watcher);
|
1972
|
+
// Clean up empty map entries, if any.
|
1973
|
+
if (resource_state.watchers.empty()) {
|
1974
|
+
authority_state.channel_state->UnsubscribeLocked(type, *resource_name,
|
1975
|
+
delay_unsubscription);
|
1976
|
+
type_map.erase(resource_it);
|
1977
|
+
if (type_map.empty()) {
|
1978
|
+
authority_state.resource_map.erase(type_it);
|
1979
|
+
if (authority_state.resource_map.empty()) {
|
1980
|
+
authority_state.channel_state.reset();
|
1981
|
+
}
|
1946
1982
|
}
|
1947
|
-
w->OnEndpointChanged(endpoint_state.update.value());
|
1948
1983
|
}
|
1949
|
-
chand_->Subscribe(XdsApi::kEdsTypeUrl, eds_service_name_str);
|
1950
1984
|
}
|
1951
1985
|
|
1952
|
-
void XdsClient::
|
1953
|
-
|
1954
|
-
|
1955
|
-
|
1956
|
-
|
1957
|
-
|
1958
|
-
EndpointState& endpoint_state = endpoint_map_[eds_service_name_str];
|
1959
|
-
auto it = endpoint_state.watchers.find(watcher);
|
1960
|
-
if (it != endpoint_state.watchers.end()) {
|
1961
|
-
endpoint_state.watchers.erase(it);
|
1962
|
-
if (endpoint_state.watchers.empty()) {
|
1963
|
-
endpoint_map_.erase(eds_service_name_str);
|
1964
|
-
chand_->Unsubscribe(XdsApi::kEdsTypeUrl, eds_service_name_str,
|
1965
|
-
delay_unsubscription);
|
1966
|
-
}
|
1986
|
+
void XdsClient::MaybeRegisterResourceTypeLocked(
|
1987
|
+
const XdsResourceType* resource_type) {
|
1988
|
+
auto it = resource_types_.find(resource_type->type_url());
|
1989
|
+
if (it != resource_types_.end()) {
|
1990
|
+
GPR_ASSERT(it->second == resource_type);
|
1991
|
+
return;
|
1967
1992
|
}
|
1993
|
+
resource_types_.emplace(resource_type->type_url(), resource_type);
|
1994
|
+
v2_resource_types_.emplace(resource_type->v2_type_url(), resource_type);
|
1995
|
+
resource_type->InitUpbSymtab(symtab_.ptr());
|
1996
|
+
}
|
1997
|
+
|
1998
|
+
const XdsResourceType* XdsClient::GetResourceTypeLocked(
|
1999
|
+
absl::string_view resource_type) {
|
2000
|
+
auto it = resource_types_.find(resource_type);
|
2001
|
+
if (it != resource_types_.end()) return it->second;
|
2002
|
+
auto it2 = v2_resource_types_.find(resource_type);
|
2003
|
+
if (it2 != v2_resource_types_.end()) return it2->second;
|
2004
|
+
return nullptr;
|
2005
|
+
}
|
2006
|
+
|
2007
|
+
absl::StatusOr<XdsClient::XdsResourceName> XdsClient::ParseXdsResourceName(
|
2008
|
+
absl::string_view name, const XdsResourceType* type) {
|
2009
|
+
// Old-style names use the empty string for authority.
|
2010
|
+
// authority is prefixed with "old:" to indicate that it's an old-style name.
|
2011
|
+
if (!xds_federation_enabled_ || !absl::StartsWith(name, "xdstp:")) {
|
2012
|
+
return XdsResourceName{"old:", {std::string(name), {}}};
|
2013
|
+
}
|
2014
|
+
// New style name. Parse URI.
|
2015
|
+
auto uri = URI::Parse(name);
|
2016
|
+
if (!uri.ok()) return uri.status();
|
2017
|
+
// Split the resource type off of the path to get the id.
|
2018
|
+
std::pair<absl::string_view, absl::string_view> path_parts = absl::StrSplit(
|
2019
|
+
absl::StripPrefix(uri->path(), "/"), absl::MaxSplits('/', 1));
|
2020
|
+
if (!type->IsType(path_parts.first, nullptr)) {
|
2021
|
+
return absl::InvalidArgumentError(
|
2022
|
+
"xdstp URI path must indicate valid xDS resource type");
|
2023
|
+
}
|
2024
|
+
// Canonicalize order of query params.
|
2025
|
+
std::vector<URI::QueryParam> query_params;
|
2026
|
+
for (const auto& p : uri->query_parameter_map()) {
|
2027
|
+
query_params.emplace_back(
|
2028
|
+
URI::QueryParam{std::string(p.first), std::string(p.second)});
|
2029
|
+
}
|
2030
|
+
return XdsResourceName{
|
2031
|
+
absl::StrCat("xdstp:", uri->authority()),
|
2032
|
+
{std::string(path_parts.second), std::move(query_params)}};
|
2033
|
+
}
|
2034
|
+
|
2035
|
+
std::string XdsClient::ConstructFullXdsResourceName(
|
2036
|
+
absl::string_view authority, absl::string_view resource_type,
|
2037
|
+
const XdsResourceKey& key) {
|
2038
|
+
if (absl::ConsumePrefix(&authority, "xdstp:")) {
|
2039
|
+
auto uri = URI::Create("xdstp", std::string(authority),
|
2040
|
+
absl::StrCat("/", resource_type, "/", key.id),
|
2041
|
+
key.query_params, /*fragment=*/"");
|
2042
|
+
GPR_ASSERT(uri.ok());
|
2043
|
+
return uri->ToString();
|
2044
|
+
}
|
2045
|
+
// Old-style name.
|
2046
|
+
return key.id;
|
1968
2047
|
}
|
1969
2048
|
|
1970
2049
|
RefCountedPtr<XdsClusterDropStats> XdsClient::AddClusterDropStats(
|
1971
|
-
|
2050
|
+
const XdsBootstrap::XdsServer& xds_server, absl::string_view cluster_name,
|
1972
2051
|
absl::string_view eds_service_name) {
|
1973
|
-
|
1974
|
-
// server name specified in lrs_server.
|
2052
|
+
if (!bootstrap_->XdsServerExists(xds_server)) return nullptr;
|
1975
2053
|
auto key =
|
1976
2054
|
std::make_pair(std::string(cluster_name), std::string(eds_service_name));
|
1977
2055
|
MutexLock lock(&mu_);
|
1978
|
-
// We jump through some hoops here to make sure that the
|
1979
|
-
//
|
2056
|
+
// We jump through some hoops here to make sure that the const
|
2057
|
+
// XdsBootstrap::XdsServer& and absl::string_views
|
2058
|
+
// stored in the XdsClusterDropStats object point to the
|
2059
|
+
// XdsBootstrap::XdsServer and strings
|
1980
2060
|
// in the load_report_map_ key, so that they have the same lifetime.
|
1981
|
-
auto
|
1982
|
-
|
1983
|
-
|
1984
|
-
|
2061
|
+
auto server_it =
|
2062
|
+
xds_load_report_server_map_.emplace(xds_server, LoadReportServer()).first;
|
2063
|
+
if (server_it->second.channel_state == nullptr) {
|
2064
|
+
server_it->second.channel_state = GetOrCreateChannelStateLocked(xds_server);
|
2065
|
+
}
|
2066
|
+
auto load_report_it = server_it->second.load_report_map
|
2067
|
+
.emplace(std::move(key), LoadReportState())
|
2068
|
+
.first;
|
2069
|
+
LoadReportState& load_report_state = load_report_it->second;
|
1985
2070
|
RefCountedPtr<XdsClusterDropStats> cluster_drop_stats;
|
1986
2071
|
if (load_report_state.drop_stats != nullptr) {
|
1987
2072
|
cluster_drop_stats = load_report_state.drop_stats->RefIfNonZero();
|
@@ -1992,26 +2077,26 @@ RefCountedPtr<XdsClusterDropStats> XdsClient::AddClusterDropStats(
|
|
1992
2077
|
load_report_state.drop_stats->GetSnapshotAndReset();
|
1993
2078
|
}
|
1994
2079
|
cluster_drop_stats = MakeRefCounted<XdsClusterDropStats>(
|
1995
|
-
Ref(DEBUG_LOCATION, "DropStats"),
|
1996
|
-
|
1997
|
-
|
2080
|
+
Ref(DEBUG_LOCATION, "DropStats"), server_it->first,
|
2081
|
+
load_report_it->first.first /*cluster_name*/,
|
2082
|
+
load_report_it->first.second /*eds_service_name*/);
|
1998
2083
|
load_report_state.drop_stats = cluster_drop_stats.get();
|
1999
2084
|
}
|
2000
|
-
|
2085
|
+
server_it->second.channel_state->MaybeStartLrsCall();
|
2001
2086
|
return cluster_drop_stats;
|
2002
2087
|
}
|
2003
2088
|
|
2004
2089
|
void XdsClient::RemoveClusterDropStats(
|
2005
|
-
|
2090
|
+
const XdsBootstrap::XdsServer& xds_server, absl::string_view cluster_name,
|
2006
2091
|
absl::string_view eds_service_name,
|
2007
2092
|
XdsClusterDropStats* cluster_drop_stats) {
|
2008
2093
|
MutexLock lock(&mu_);
|
2009
|
-
|
2010
|
-
|
2011
|
-
auto
|
2094
|
+
auto server_it = xds_load_report_server_map_.find(xds_server);
|
2095
|
+
if (server_it == xds_load_report_server_map_.end()) return;
|
2096
|
+
auto load_report_it = server_it->second.load_report_map.find(
|
2012
2097
|
std::make_pair(std::string(cluster_name), std::string(eds_service_name)));
|
2013
|
-
if (
|
2014
|
-
LoadReportState& load_report_state =
|
2098
|
+
if (load_report_it == server_it->second.load_report_map.end()) return;
|
2099
|
+
LoadReportState& load_report_state = load_report_it->second;
|
2015
2100
|
if (load_report_state.drop_stats == cluster_drop_stats) {
|
2016
2101
|
// Record final snapshot in deleted_drop_stats, which will be
|
2017
2102
|
// added to the next load report.
|
@@ -2022,21 +2107,27 @@ void XdsClient::RemoveClusterDropStats(
|
|
2022
2107
|
}
|
2023
2108
|
|
2024
2109
|
RefCountedPtr<XdsClusterLocalityStats> XdsClient::AddClusterLocalityStats(
|
2025
|
-
|
2110
|
+
const XdsBootstrap::XdsServer& xds_server, absl::string_view cluster_name,
|
2026
2111
|
absl::string_view eds_service_name,
|
2027
2112
|
RefCountedPtr<XdsLocalityName> locality) {
|
2028
|
-
|
2029
|
-
// server name specified in lrs_server.
|
2113
|
+
if (!bootstrap_->XdsServerExists(xds_server)) return nullptr;
|
2030
2114
|
auto key =
|
2031
2115
|
std::make_pair(std::string(cluster_name), std::string(eds_service_name));
|
2032
2116
|
MutexLock lock(&mu_);
|
2033
|
-
// We jump through some hoops here to make sure that the
|
2034
|
-
//
|
2117
|
+
// We jump through some hoops here to make sure that the const
|
2118
|
+
// XdsBootstrap::XdsServer& and absl::string_views
|
2119
|
+
// stored in the XdsClusterDropStats object point to the
|
2120
|
+
// XdsBootstrap::XdsServer and strings
|
2035
2121
|
// in the load_report_map_ key, so that they have the same lifetime.
|
2036
|
-
auto
|
2037
|
-
|
2038
|
-
|
2039
|
-
|
2122
|
+
auto server_it =
|
2123
|
+
xds_load_report_server_map_.emplace(xds_server, LoadReportServer()).first;
|
2124
|
+
if (server_it->second.channel_state == nullptr) {
|
2125
|
+
server_it->second.channel_state = GetOrCreateChannelStateLocked(xds_server);
|
2126
|
+
}
|
2127
|
+
auto load_report_it = server_it->second.load_report_map
|
2128
|
+
.emplace(std::move(key), LoadReportState())
|
2129
|
+
.first;
|
2130
|
+
LoadReportState& load_report_state = load_report_it->second;
|
2040
2131
|
LoadReportState::LocalityState& locality_state =
|
2041
2132
|
load_report_state.locality_stats[locality];
|
2042
2133
|
RefCountedPtr<XdsClusterLocalityStats> cluster_locality_stats;
|
@@ -2049,27 +2140,27 @@ RefCountedPtr<XdsClusterLocalityStats> XdsClient::AddClusterLocalityStats(
|
|
2049
2140
|
locality_state.locality_stats->GetSnapshotAndReset();
|
2050
2141
|
}
|
2051
2142
|
cluster_locality_stats = MakeRefCounted<XdsClusterLocalityStats>(
|
2052
|
-
Ref(DEBUG_LOCATION, "LocalityStats"),
|
2053
|
-
|
2054
|
-
std::move(locality));
|
2143
|
+
Ref(DEBUG_LOCATION, "LocalityStats"), server_it->first,
|
2144
|
+
load_report_it->first.first /*cluster_name*/,
|
2145
|
+
load_report_it->first.second /*eds_service_name*/, std::move(locality));
|
2055
2146
|
locality_state.locality_stats = cluster_locality_stats.get();
|
2056
2147
|
}
|
2057
|
-
|
2148
|
+
server_it->second.channel_state->MaybeStartLrsCall();
|
2058
2149
|
return cluster_locality_stats;
|
2059
2150
|
}
|
2060
2151
|
|
2061
2152
|
void XdsClient::RemoveClusterLocalityStats(
|
2062
|
-
|
2153
|
+
const XdsBootstrap::XdsServer& xds_server, absl::string_view cluster_name,
|
2063
2154
|
absl::string_view eds_service_name,
|
2064
2155
|
const RefCountedPtr<XdsLocalityName>& locality,
|
2065
2156
|
XdsClusterLocalityStats* cluster_locality_stats) {
|
2066
2157
|
MutexLock lock(&mu_);
|
2067
|
-
|
2068
|
-
|
2069
|
-
auto
|
2158
|
+
auto server_it = xds_load_report_server_map_.find(xds_server);
|
2159
|
+
if (server_it == xds_load_report_server_map_.end()) return;
|
2160
|
+
auto load_report_it = server_it->second.load_report_map.find(
|
2070
2161
|
std::make_pair(std::string(cluster_name), std::string(eds_service_name)));
|
2071
|
-
if (
|
2072
|
-
LoadReportState& load_report_state =
|
2162
|
+
if (load_report_it == server_it->second.load_report_map.end()) return;
|
2163
|
+
LoadReportState& load_report_state = load_report_it->second;
|
2073
2164
|
auto locality_it = load_report_state.locality_stats.find(locality);
|
2074
2165
|
if (locality_it == load_report_state.locality_stats.end()) return;
|
2075
2166
|
LoadReportState::LocalityState& locality_state = locality_it->second;
|
@@ -2084,47 +2175,82 @@ void XdsClient::RemoveClusterLocalityStats(
|
|
2084
2175
|
|
2085
2176
|
void XdsClient::ResetBackoff() {
|
2086
2177
|
MutexLock lock(&mu_);
|
2087
|
-
|
2088
|
-
grpc_channel_reset_connect_backoff(
|
2178
|
+
for (auto& p : xds_server_channel_map_) {
|
2179
|
+
grpc_channel_reset_connect_backoff(p.second->channel());
|
2089
2180
|
}
|
2090
2181
|
}
|
2091
2182
|
|
2092
|
-
void XdsClient::NotifyOnErrorLocked(
|
2093
|
-
|
2094
|
-
|
2095
|
-
|
2096
|
-
|
2097
|
-
|
2098
|
-
}
|
2099
|
-
for (const auto& p : route_config_map_) {
|
2100
|
-
const RouteConfigState& route_config_state = p.second;
|
2101
|
-
for (const auto& p : route_config_state.watchers) {
|
2102
|
-
p.first->OnError(GRPC_ERROR_REF(error));
|
2103
|
-
}
|
2104
|
-
}
|
2105
|
-
for (const auto& p : cluster_map_) {
|
2106
|
-
const ClusterState& cluster_state = p.second;
|
2107
|
-
for (const auto& p : cluster_state.watchers) {
|
2108
|
-
p.first->OnError(GRPC_ERROR_REF(error));
|
2109
|
-
}
|
2183
|
+
void XdsClient::NotifyOnErrorLocked(absl::Status status) {
|
2184
|
+
const auto* node = bootstrap_->node();
|
2185
|
+
if (node != nullptr) {
|
2186
|
+
status = absl::Status(
|
2187
|
+
status.code(), absl::StrCat(status.message(),
|
2188
|
+
" (node ID:", bootstrap_->node()->id, ")"));
|
2110
2189
|
}
|
2111
|
-
|
2112
|
-
|
2113
|
-
for (const auto&
|
2114
|
-
|
2190
|
+
std::set<RefCountedPtr<ResourceWatcherInterface>> watchers;
|
2191
|
+
for (const auto& a : authority_state_map_) { // authority
|
2192
|
+
for (const auto& t : a.second.resource_map) { // type
|
2193
|
+
for (const auto& r : t.second) { // resource id
|
2194
|
+
for (const auto& w : r.second.watchers) { // watchers
|
2195
|
+
watchers.insert(w.second);
|
2196
|
+
}
|
2197
|
+
}
|
2115
2198
|
}
|
2116
2199
|
}
|
2117
|
-
|
2200
|
+
work_serializer_.Schedule(
|
2201
|
+
// TODO(yashykt): When we move to C++14, capture watchers using
|
2202
|
+
// std::move()
|
2203
|
+
[watchers, status]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(work_serializer_) {
|
2204
|
+
for (const auto& watcher : watchers) {
|
2205
|
+
watcher->OnError(status);
|
2206
|
+
}
|
2207
|
+
},
|
2208
|
+
DEBUG_LOCATION);
|
2209
|
+
}
|
2210
|
+
|
2211
|
+
void XdsClient::NotifyWatchersOnErrorLocked(
|
2212
|
+
const std::map<ResourceWatcherInterface*,
|
2213
|
+
RefCountedPtr<ResourceWatcherInterface>>& watchers,
|
2214
|
+
absl::Status status) {
|
2215
|
+
const auto* node = bootstrap_->node();
|
2216
|
+
if (node != nullptr) {
|
2217
|
+
status = absl::Status(
|
2218
|
+
status.code(), absl::StrCat(status.message(),
|
2219
|
+
" (node ID:", bootstrap_->node()->id, ")"));
|
2220
|
+
}
|
2221
|
+
work_serializer_.Schedule(
|
2222
|
+
[watchers, status]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(&work_serializer_) {
|
2223
|
+
for (const auto& p : watchers) {
|
2224
|
+
p.first->OnError(status);
|
2225
|
+
}
|
2226
|
+
},
|
2227
|
+
DEBUG_LOCATION);
|
2228
|
+
}
|
2229
|
+
|
2230
|
+
void XdsClient::NotifyWatchersOnResourceDoesNotExist(
|
2231
|
+
const std::map<ResourceWatcherInterface*,
|
2232
|
+
RefCountedPtr<ResourceWatcherInterface>>& watchers) {
|
2233
|
+
work_serializer_.Schedule(
|
2234
|
+
[watchers]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(&work_serializer_) {
|
2235
|
+
for (const auto& p : watchers) {
|
2236
|
+
p.first->OnResourceDoesNotExist();
|
2237
|
+
}
|
2238
|
+
},
|
2239
|
+
DEBUG_LOCATION);
|
2118
2240
|
}
|
2119
2241
|
|
2120
2242
|
XdsApi::ClusterLoadReportMap XdsClient::BuildLoadReportSnapshotLocked(
|
2121
|
-
|
2243
|
+
const XdsBootstrap::XdsServer& xds_server, bool send_all_clusters,
|
2244
|
+
const std::set<std::string>& clusters) {
|
2122
2245
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
2123
2246
|
gpr_log(GPR_INFO, "[xds_client %p] start building load report", this);
|
2124
2247
|
}
|
2125
2248
|
XdsApi::ClusterLoadReportMap snapshot_map;
|
2126
|
-
|
2127
|
-
|
2249
|
+
auto server_it = xds_load_report_server_map_.find(xds_server);
|
2250
|
+
if (server_it == xds_load_report_server_map_.end()) return snapshot_map;
|
2251
|
+
auto& load_report_map = server_it->second.load_report_map;
|
2252
|
+
for (auto load_report_it = load_report_map.begin();
|
2253
|
+
load_report_it != load_report_map.end();) {
|
2128
2254
|
// Cluster key is cluster and EDS service name.
|
2129
2255
|
const auto& cluster_key = load_report_it->first;
|
2130
2256
|
LoadReportState& load_report = load_report_it->second;
|
@@ -2179,7 +2305,7 @@ XdsApi::ClusterLoadReportMap XdsClient::BuildLoadReportSnapshotLocked(
|
|
2179
2305
|
}
|
2180
2306
|
}
|
2181
2307
|
// Compute load report interval.
|
2182
|
-
const
|
2308
|
+
const Timestamp now = ExecCtx::Get()->Now();
|
2183
2309
|
snapshot.load_report_interval = now - load_report.last_report_time;
|
2184
2310
|
load_report.last_report_time = now;
|
2185
2311
|
// Record snapshot.
|
@@ -2190,7 +2316,7 @@ XdsApi::ClusterLoadReportMap XdsClient::BuildLoadReportSnapshotLocked(
|
|
2190
2316
|
// deleted stats objects, remove the entry.
|
2191
2317
|
if (load_report.locality_stats.empty() &&
|
2192
2318
|
load_report.drop_stats == nullptr) {
|
2193
|
-
load_report_it =
|
2319
|
+
load_report_it = load_report_map.erase(load_report_it);
|
2194
2320
|
} else {
|
2195
2321
|
++load_report_it;
|
2196
2322
|
}
|
@@ -2198,25 +2324,138 @@ XdsApi::ClusterLoadReportMap XdsClient::BuildLoadReportSnapshotLocked(
|
|
2198
2324
|
return snapshot_map;
|
2199
2325
|
}
|
2200
2326
|
|
2327
|
+
std::string XdsClient::DumpClientConfigBinary() {
|
2328
|
+
MutexLock lock(&mu_);
|
2329
|
+
XdsApi::ResourceTypeMetadataMap resource_type_metadata_map;
|
2330
|
+
for (const auto& a : authority_state_map_) { // authority
|
2331
|
+
const std::string& authority = a.first;
|
2332
|
+
for (const auto& t : a.second.resource_map) { // type
|
2333
|
+
const XdsResourceType* type = t.first;
|
2334
|
+
auto& resource_metadata_map =
|
2335
|
+
resource_type_metadata_map[type->type_url()];
|
2336
|
+
for (const auto& r : t.second) { // resource id
|
2337
|
+
const XdsResourceKey& resource_key = r.first;
|
2338
|
+
const ResourceState& resource_state = r.second;
|
2339
|
+
resource_metadata_map[ConstructFullXdsResourceName(
|
2340
|
+
authority, type->type_url(), resource_key)] = &resource_state.meta;
|
2341
|
+
}
|
2342
|
+
}
|
2343
|
+
}
|
2344
|
+
// Assemble config dump messages
|
2345
|
+
return api_.AssembleClientConfig(resource_type_metadata_map);
|
2346
|
+
}
|
2347
|
+
|
2201
2348
|
//
|
2202
2349
|
// accessors for global state
|
2203
2350
|
//
|
2204
2351
|
|
2205
|
-
void XdsClientGlobalInit() {
|
2352
|
+
void XdsClientGlobalInit() {
|
2353
|
+
g_mu = new Mutex;
|
2354
|
+
XdsHttpFilterRegistry::Init();
|
2355
|
+
XdsClusterSpecifierPluginRegistry::Init();
|
2356
|
+
}
|
2206
2357
|
|
2207
|
-
|
2358
|
+
// TODO(roth): Find a better way to clear the fallback config that does
|
2359
|
+
// not require using ABSL_NO_THREAD_SAFETY_ANALYSIS.
|
2360
|
+
void XdsClientGlobalShutdown() ABSL_NO_THREAD_SAFETY_ANALYSIS {
|
2361
|
+
gpr_free(g_fallback_bootstrap_config);
|
2362
|
+
g_fallback_bootstrap_config = nullptr;
|
2208
2363
|
delete g_mu;
|
2209
2364
|
g_mu = nullptr;
|
2365
|
+
XdsHttpFilterRegistry::Shutdown();
|
2366
|
+
XdsClusterSpecifierPluginRegistry::Shutdown();
|
2210
2367
|
}
|
2211
2368
|
|
2212
|
-
|
2213
|
-
|
2214
|
-
|
2215
|
-
|
2216
|
-
|
2369
|
+
namespace {
|
2370
|
+
|
2371
|
+
std::string GetBootstrapContents(const char* fallback_config,
|
2372
|
+
grpc_error_handle* error) {
|
2373
|
+
// First, try GRPC_XDS_BOOTSTRAP env var.
|
2374
|
+
UniquePtr<char> path(gpr_getenv("GRPC_XDS_BOOTSTRAP"));
|
2375
|
+
if (path != nullptr) {
|
2376
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
2377
|
+
gpr_log(GPR_INFO,
|
2378
|
+
"Got bootstrap file location from GRPC_XDS_BOOTSTRAP "
|
2379
|
+
"environment variable: %s",
|
2380
|
+
path.get());
|
2381
|
+
}
|
2382
|
+
grpc_slice contents;
|
2383
|
+
*error =
|
2384
|
+
grpc_load_file(path.get(), /*add_null_terminator=*/true, &contents);
|
2385
|
+
if (*error != GRPC_ERROR_NONE) return "";
|
2386
|
+
std::string contents_str(StringViewFromSlice(contents));
|
2387
|
+
grpc_slice_unref_internal(contents);
|
2388
|
+
return contents_str;
|
2389
|
+
}
|
2390
|
+
// Next, try GRPC_XDS_BOOTSTRAP_CONFIG env var.
|
2391
|
+
UniquePtr<char> env_config(gpr_getenv("GRPC_XDS_BOOTSTRAP_CONFIG"));
|
2392
|
+
if (env_config != nullptr) {
|
2393
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
2394
|
+
gpr_log(GPR_INFO,
|
2395
|
+
"Got bootstrap contents from GRPC_XDS_BOOTSTRAP_CONFIG "
|
2396
|
+
"environment variable");
|
2397
|
+
}
|
2398
|
+
return env_config.get();
|
2399
|
+
}
|
2400
|
+
// Finally, try fallback config.
|
2401
|
+
if (fallback_config != nullptr) {
|
2402
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
2403
|
+
gpr_log(GPR_INFO, "Got bootstrap contents from fallback config");
|
2404
|
+
}
|
2405
|
+
return fallback_config;
|
2406
|
+
}
|
2407
|
+
// No bootstrap config found.
|
2408
|
+
*error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
2409
|
+
"Environment variables GRPC_XDS_BOOTSTRAP or GRPC_XDS_BOOTSTRAP_CONFIG "
|
2410
|
+
"not defined");
|
2411
|
+
return "";
|
2412
|
+
}
|
2413
|
+
|
2414
|
+
} // namespace
|
2415
|
+
|
2416
|
+
RefCountedPtr<XdsClient> XdsClient::GetOrCreate(const grpc_channel_args* args,
|
2417
|
+
grpc_error_handle* error) {
|
2418
|
+
RefCountedPtr<XdsClient> xds_client;
|
2419
|
+
// If getting bootstrap from channel args, create a local XdsClient
|
2420
|
+
// instance for the channel or server instead of using the global instance.
|
2421
|
+
const char* bootstrap_config = grpc_channel_args_find_string(
|
2422
|
+
args, GRPC_ARG_TEST_ONLY_DO_NOT_USE_IN_PROD_XDS_BOOTSTRAP_CONFIG);
|
2423
|
+
if (bootstrap_config != nullptr) {
|
2424
|
+
std::unique_ptr<XdsBootstrap> bootstrap =
|
2425
|
+
XdsBootstrap::Create(bootstrap_config, error);
|
2426
|
+
if (*error == GRPC_ERROR_NONE) {
|
2427
|
+
grpc_channel_args* xds_channel_args =
|
2428
|
+
grpc_channel_args_find_pointer<grpc_channel_args>(
|
2429
|
+
args,
|
2430
|
+
GRPC_ARG_TEST_ONLY_DO_NOT_USE_IN_PROD_XDS_CLIENT_CHANNEL_ARGS);
|
2431
|
+
return MakeRefCounted<XdsClient>(std::move(bootstrap), xds_channel_args);
|
2432
|
+
}
|
2433
|
+
return nullptr;
|
2434
|
+
}
|
2435
|
+
// Otherwise, use the global instance.
|
2436
|
+
{
|
2437
|
+
MutexLock lock(g_mu);
|
2438
|
+
if (g_xds_client != nullptr) {
|
2439
|
+
auto xds_client = g_xds_client->RefIfNonZero();
|
2440
|
+
if (xds_client != nullptr) return xds_client;
|
2441
|
+
}
|
2442
|
+
// Find bootstrap contents.
|
2443
|
+
std::string bootstrap_contents =
|
2444
|
+
GetBootstrapContents(g_fallback_bootstrap_config, error);
|
2445
|
+
if (*error != GRPC_ERROR_NONE) return nullptr;
|
2446
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
2447
|
+
gpr_log(GPR_INFO, "xDS bootstrap contents: %s",
|
2448
|
+
bootstrap_contents.c_str());
|
2449
|
+
}
|
2450
|
+
// Parse bootstrap.
|
2451
|
+
std::unique_ptr<XdsBootstrap> bootstrap =
|
2452
|
+
XdsBootstrap::Create(bootstrap_contents, error);
|
2453
|
+
if (*error != GRPC_ERROR_NONE) return nullptr;
|
2454
|
+
// Instantiate XdsClient.
|
2455
|
+
xds_client =
|
2456
|
+
MakeRefCounted<XdsClient>(std::move(bootstrap), g_channel_args);
|
2457
|
+
g_xds_client = xds_client.get();
|
2217
2458
|
}
|
2218
|
-
auto xds_client = MakeRefCounted<XdsClient>(error);
|
2219
|
-
g_xds_client = xds_client.get();
|
2220
2459
|
return xds_client;
|
2221
2460
|
}
|
2222
2461
|
|
@@ -2232,6 +2471,66 @@ void UnsetGlobalXdsClientForTest() {
|
|
2232
2471
|
g_xds_client = nullptr;
|
2233
2472
|
}
|
2234
2473
|
|
2474
|
+
void SetXdsFallbackBootstrapConfig(const char* config) {
|
2475
|
+
MutexLock lock(g_mu);
|
2476
|
+
gpr_free(g_fallback_bootstrap_config);
|
2477
|
+
g_fallback_bootstrap_config = gpr_strdup(config);
|
2478
|
+
}
|
2479
|
+
|
2235
2480
|
} // namespace internal
|
2236
2481
|
|
2482
|
+
//
|
2483
|
+
// embedding XdsClient in channel args
|
2484
|
+
//
|
2485
|
+
|
2486
|
+
#define GRPC_ARG_XDS_CLIENT "grpc.internal.xds_client"
|
2487
|
+
|
2488
|
+
namespace {
|
2489
|
+
|
2490
|
+
void* XdsClientArgCopy(void* p) {
|
2491
|
+
XdsClient* xds_client = static_cast<XdsClient*>(p);
|
2492
|
+
xds_client->Ref(DEBUG_LOCATION, "channel arg").release();
|
2493
|
+
return p;
|
2494
|
+
}
|
2495
|
+
|
2496
|
+
void XdsClientArgDestroy(void* p) {
|
2497
|
+
XdsClient* xds_client = static_cast<XdsClient*>(p);
|
2498
|
+
xds_client->Unref(DEBUG_LOCATION, "channel arg");
|
2499
|
+
}
|
2500
|
+
|
2501
|
+
int XdsClientArgCmp(void* p, void* q) { return QsortCompare(p, q); }
|
2502
|
+
|
2503
|
+
const grpc_arg_pointer_vtable kXdsClientArgVtable = {
|
2504
|
+
XdsClientArgCopy, XdsClientArgDestroy, XdsClientArgCmp};
|
2505
|
+
|
2506
|
+
} // namespace
|
2507
|
+
|
2508
|
+
grpc_arg XdsClient::MakeChannelArg() const {
|
2509
|
+
return grpc_channel_arg_pointer_create(const_cast<char*>(GRPC_ARG_XDS_CLIENT),
|
2510
|
+
const_cast<XdsClient*>(this),
|
2511
|
+
&kXdsClientArgVtable);
|
2512
|
+
}
|
2513
|
+
|
2514
|
+
RefCountedPtr<XdsClient> XdsClient::GetFromChannelArgs(
|
2515
|
+
const grpc_channel_args& args) {
|
2516
|
+
XdsClient* xds_client =
|
2517
|
+
grpc_channel_args_find_pointer<XdsClient>(&args, GRPC_ARG_XDS_CLIENT);
|
2518
|
+
if (xds_client == nullptr) return nullptr;
|
2519
|
+
return xds_client->Ref(DEBUG_LOCATION, "GetFromChannelArgs");
|
2520
|
+
}
|
2521
|
+
|
2237
2522
|
} // namespace grpc_core
|
2523
|
+
|
2524
|
+
// The returned bytes may contain NULL(0), so we can't use c-string.
|
2525
|
+
grpc_slice grpc_dump_xds_configs() {
|
2526
|
+
grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
|
2527
|
+
grpc_core::ExecCtx exec_ctx;
|
2528
|
+
grpc_error_handle error = GRPC_ERROR_NONE;
|
2529
|
+
auto xds_client = grpc_core::XdsClient::GetOrCreate(nullptr, &error);
|
2530
|
+
if (error != GRPC_ERROR_NONE) {
|
2531
|
+
// If we isn't using xDS, just return an empty string.
|
2532
|
+
GRPC_ERROR_UNREF(error);
|
2533
|
+
return grpc_empty_slice();
|
2534
|
+
}
|
2535
|
+
return grpc_slice_from_cpp_string(xds_client->DumpClientConfigBinary());
|
2536
|
+
}
|