grpc 1.37.0 → 1.45.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +501 -260
- 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 +399 -0
- data/include/grpc/event_engine/internal/memory_allocator_impl.h +68 -0
- data/include/grpc/event_engine/memory_allocator.h +226 -0
- data/include/grpc/event_engine/memory_request.h +57 -0
- data/include/grpc/event_engine/port.h +39 -0
- data/include/grpc/fork.h +1 -1
- data/include/grpc/grpc.h +65 -22
- data/include/grpc/grpc_posix.h +22 -18
- data/include/grpc/grpc_security.h +358 -191
- 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 +61 -28
- data/include/grpc/impl/codegen/log.h +2 -0
- data/include/grpc/impl/codegen/port_platform.h +83 -22
- data/include/grpc/impl/codegen/propagation_bits.h +2 -0
- data/include/grpc/impl/codegen/slice.h +6 -1
- data/include/grpc/impl/codegen/status.h +2 -0
- data/include/grpc/impl/codegen/sync.h +8 -5
- data/include/grpc/impl/codegen/sync_abseil.h +2 -0
- data/include/grpc/impl/codegen/sync_custom.h +2 -0
- data/include/grpc/impl/codegen/sync_generic.h +3 -0
- data/include/grpc/impl/codegen/sync_posix.h +4 -2
- data/include/grpc/impl/codegen/sync_windows.h +2 -0
- data/include/grpc/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/client_channel/backend_metric.cc +24 -27
- data/src/core/ext/filters/client_channel/backend_metric.h +4 -3
- data/src/core/ext/filters/client_channel/backup_poller.cc +17 -12
- data/src/core/ext/filters/client_channel/backup_poller.h +1 -0
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +158 -202
- data/src/core/ext/filters/client_channel/client_channel.cc +1231 -3574
- data/src/core/ext/filters/client_channel/client_channel.h +563 -56
- data/src/core/ext/filters/client_channel/client_channel_channelz.cc +6 -5
- data/src/core/ext/filters/client_channel/client_channel_channelz.h +2 -2
- data/src/core/ext/filters/client_channel/client_channel_factory.cc +2 -1
- data/src/core/ext/filters/client_channel/client_channel_factory.h +17 -19
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +19 -22
- data/src/core/ext/filters/client_channel/config_selector.cc +2 -1
- data/src/core/ext/filters/client_channel/config_selector.h +22 -10
- data/src/core/ext/filters/client_channel/connector.h +20 -20
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +15 -17
- data/src/core/ext/filters/client_channel/dynamic_filters.h +5 -5
- data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +2 -22
- data/src/core/ext/filters/client_channel/global_subchannel_pool.h +3 -16
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +72 -68
- data/src/core/ext/filters/client_channel/health/health_check_client.h +38 -36
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +54 -55
- data/src/core/ext/filters/client_channel/http_connect_handshaker.h +10 -2
- data/src/core/ext/filters/client_channel/http_proxy.cc +16 -1
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +4 -3
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +6 -5
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +6 -2
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +12 -24
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +300 -201
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +3 -6
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +3 -4
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +6 -5
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +17 -18
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +4 -4
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +86 -61
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +73 -68
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +785 -0
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +10 -0
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +2551 -0
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +77 -78
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +19 -14
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +37 -34
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +112 -167
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +188 -111
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +46 -65
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +198 -312
- data/src/core/ext/filters/client_channel/lb_policy.cc +17 -30
- data/src/core/ext/filters/client_channel/lb_policy.h +170 -137
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +2 -1
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +8 -11
- data/src/core/ext/filters/client_channel/lb_policy_registry.h +1 -1
- data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +133 -0
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +292 -149
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +23 -12
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_event_engine.cc +31 -0
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +24 -19
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +51 -69
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +168 -281
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +39 -26
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_event_engine.cc +28 -0
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +2 -2
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +138 -120
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +42 -47
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +9 -6
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +102 -79
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +41 -40
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +547 -468
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +42 -253
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +34 -57
- data/src/core/ext/filters/client_channel/retry_filter.cc +2640 -0
- data/src/core/ext/filters/{workarounds/workaround_cronet_compression_filter.h → client_channel/retry_filter.h} +9 -6
- data/src/core/ext/filters/client_channel/retry_service_config.cc +314 -0
- data/src/core/ext/filters/client_channel/retry_service_config.h +102 -0
- data/src/core/ext/filters/client_channel/retry_throttle.cc +14 -59
- data/src/core/ext/filters/client_channel/retry_throttle.h +11 -5
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +56 -41
- data/src/core/ext/filters/client_channel/subchannel.cc +143 -207
- data/src/core/ext/filters/client_channel/subchannel.h +43 -62
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +22 -7
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +11 -2
- data/src/core/ext/filters/client_idle/client_idle_filter.cc +109 -348
- data/src/core/ext/filters/client_idle/idle_filter_state.cc +96 -0
- data/src/core/ext/filters/client_idle/idle_filter_state.h +66 -0
- data/src/core/ext/filters/deadline/deadline_filter.cc +41 -43
- data/src/core/ext/filters/deadline/deadline_filter.h +3 -2
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +105 -102
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +21 -31
- data/src/core/ext/filters/fault_injection/service_config_parser.h +11 -5
- data/src/core/ext/filters/http/client/http_client_filter.cc +108 -183
- data/src/core/ext/filters/http/client_authority_filter.cc +36 -95
- data/src/core/ext/filters/http/client_authority_filter.h +23 -5
- data/src/core/ext/filters/http/http_filters_plugin.cc +52 -73
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +67 -157
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +43 -56
- data/src/core/ext/filters/http/server/http_server_filter.cc +115 -207
- data/src/core/ext/filters/max_age/max_age_filter.cc +75 -69
- data/src/core/ext/filters/message_size/message_size_filter.cc +63 -69
- data/src/core/ext/filters/message_size/message_size_filter.h +11 -4
- data/src/core/ext/filters/rbac/rbac_filter.cc +162 -0
- data/src/core/ext/filters/rbac/rbac_filter.h +76 -0
- data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +606 -0
- data/src/core/ext/filters/rbac/rbac_service_config_parser.h +75 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector.cc +67 -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 +271 -0
- data/src/core/{lib/transport/authority_override.h → ext/filters/server_config_selector/server_config_selector_filter.h} +8 -13
- data/src/core/ext/transport/chttp2/alpn/alpn.cc +2 -1
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +251 -19
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +7 -7
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +339 -138
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +2 -2
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +4 -2
- data/src/core/ext/transport/chttp2/transport/bin_decoder.h +2 -1
- data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +1 -0
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +386 -463
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +12 -4
- data/src/core/ext/transport/chttp2/transport/context_list.cc +4 -6
- data/src/core/ext/transport/chttp2/transport/context_list.h +4 -6
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +66 -47
- data/src/core/ext/transport/chttp2/transport/flow_control.h +27 -21
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +23 -24
- data/src/core/ext/transport/chttp2/transport/frame_data.h +11 -10
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +21 -20
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +7 -6
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +17 -17
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +8 -6
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +17 -15
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +7 -6
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +49 -17
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +7 -6
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +16 -13
- data/src/core/ext/transport/chttp2/transport/frame_window_update.h +5 -6
- data/src/core/ext/transport/chttp2/transport/hpack_constants.h +41 -0
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +520 -749
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +183 -71
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +86 -0
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +71 -0
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +811 -1193
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +101 -83
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +239 -0
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +115 -0
- data/src/core/ext/transport/chttp2/transport/internal.h +51 -74
- data/src/core/ext/transport/chttp2/transport/parsing.cc +157 -293
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/varint.cc +13 -7
- data/src/core/ext/transport/chttp2/transport/varint.h +39 -28
- data/src/core/ext/transport/chttp2/transport/writing.cc +113 -164
- data/src/core/ext/transport/inproc/inproc_plugin.cc +0 -4
- data/src/core/ext/transport/inproc/inproc_transport.cc +186 -215
- data/src/core/ext/transport/inproc/inproc_transport.h +1 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.c +114 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.h +402 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.c +119 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.h +453 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +244 -210
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +932 -575
- 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 +138 -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 +146 -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 +106 -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 +93 -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 +88 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.c +103 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.h +466 -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 +95 -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 +20 -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 +40 -19
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +144 -117
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +513 -317
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +241 -188
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +954 -530
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +44 -29
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +137 -81
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +328 -250
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +1266 -657
- 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 +41 -23
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +41 -28
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +136 -80
- data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.c +290 -0
- data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.h +1122 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +73 -54
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +265 -159
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +21 -8
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +41 -23
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +238 -153
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +894 -471
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +63 -46
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +210 -130
- 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 +33 -19
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +32 -18
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +88 -53
- 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 +138 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +144 -118
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +529 -329
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +112 -91
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +425 -259
- 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 +44 -26
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +212 -91
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +932 -266
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +18 -5
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +33 -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 +152 -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 +47 -25
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +28 -14
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +53 -35
- 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 +108 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +52 -36
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +133 -85
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +91 -39
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +325 -107
- 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 +244 -144
- 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 +36 -20
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +97 -69
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +400 -226
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +99 -78
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +340 -213
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +61 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +199 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +27 -11
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +86 -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 +120 -0
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +82 -62
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +294 -185
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +93 -60
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +349 -181
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +127 -100
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +307 -185
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +59 -27
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +195 -88
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +648 -559
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +2460 -1505
- 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 +127 -64
- data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.c +216 -0
- data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.h +870 -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 +82 -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 +95 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +28 -14
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +69 -40
- 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 +119 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.c +62 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.h +203 -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 +89 -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 +184 -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 +192 -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 +126 -0
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +18 -5
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +37 -23
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +46 -29
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +156 -92
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +52 -36
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +175 -107
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c +63 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +165 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +27 -13
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +69 -41
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +272 -200
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +1095 -552
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +10 -1
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +7 -4
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +108 -52
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +448 -171
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +42 -27
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +115 -71
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +103 -83
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +341 -213
- 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 +146 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +16 -3
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +29 -15
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +92 -73
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +335 -218
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +32 -18
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +87 -54
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +85 -40
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +303 -104
- 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 +101 -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 +228 -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 +202 -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 +81 -46
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +22 -9
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +42 -26
- 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 +33 -19
- 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 +33 -19
- 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 +105 -61
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +32 -18
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +79 -52
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +27 -13
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +70 -43
- 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 +94 -58
- 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 +206 -124
- 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 +191 -115
- 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 +183 -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 +136 -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 +65 -34
- 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 +100 -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 +39 -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 +114 -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 +9 -1
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +151 -126
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +439 -281
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +153 -127
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +483 -298
- data/src/core/ext/upb-generated/google/api/http.upb.c +44 -29
- data/src/core/ext/upb-generated/google/api/http.upb.h +137 -89
- data/src/core/ext/upb-generated/google/api/httpbody.upb.c +46 -0
- data/src/core/ext/upb-generated/google/api/httpbody.upb.h +99 -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 +40 -22
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +367 -277
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +1252 -764
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +19 -6
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +36 -18
- 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 +100 -64
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +19 -6
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +36 -18
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +58 -37
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +269 -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 +44 -26
- 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 +276 -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 +68 -42
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +132 -108
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +458 -285
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +27 -13
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +72 -39
- 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 +64 -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 +321 -197
- 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 +175 -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 +132 -63
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +32 -8
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +41 -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 +9 -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 +41 -18
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +31 -5
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +40 -19
- data/src/core/ext/upb-generated/validate/validate.upb.c +396 -295
- data/src/core/ext/upb-generated/validate/validate.upb.h +1395 -768
- 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 +191 -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 +87 -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 +38 -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 +230 -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 +81 -0
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +19 -6
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +35 -19
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +32 -18
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +77 -46
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +27 -13
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +39 -25
- 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 +95 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +24 -11
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +47 -27
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +35 -21
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +87 -54
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +24 -11
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +51 -29
- 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 +144 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.c +203 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.h +726 -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 +132 -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 +173 -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 +95 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/certs.upbdefs.c +84 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/certs.upbdefs.h +55 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/clusters.upbdefs.c +127 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/clusters.upbdefs.h +50 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +16 -61
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h +67 -67
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/init_dump.upbdefs.c +43 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/init_dump.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.c +53 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/memory.upbdefs.c +49 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/memory.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/metrics.upbdefs.c +46 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/metrics.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/mutex_stats.upbdefs.c +46 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/mutex_stats.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/server_info.upbdefs.c +142 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/server_info.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/tap.upbdefs.c +51 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/tap.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c +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 +69 -98
- 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 +349 -339
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.h +57 -52
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +18 -24
- 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 +488 -484
- 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 +18 -20
- 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 +224 -229
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +79 -64
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +23 -33
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h +16 -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 +17 -21
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.h +7 -7
- 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 +76 -89
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.h +25 -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 -200
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h +59 -34
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +14 -16
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.c +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 +40 -38
- 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 +20 -28
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.h +13 -13
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +98 -83
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.h +23 -13
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c +20 -30
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.h +16 -16
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.c +16 -18
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +157 -155
- 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 +147 -153
- 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 -36
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.h +7 -7
- data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/metrics_service.upbdefs.c +69 -0
- data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/metrics_service.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.c +19 -35
- data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.h +25 -25
- data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.c +40 -47
- data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.h +30 -25
- data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +190 -0
- data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h +70 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +79 -71
- 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 +717 -773
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +162 -157
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c +54 -48
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.h +10 -10
- data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.c +188 -0
- data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.h +85 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/datadog.upbdefs.c +54 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/datadog.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/dynamic_ot.upbdefs.c +57 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/dynamic_ot.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c +17 -21
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.h +7 -7
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/lightstep.upbdefs.c +72 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/lightstep.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opencensus.upbdefs.c +99 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opencensus.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/service.upbdefs.c +52 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/service.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/skywalking.upbdefs.c +71 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/skywalking.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.c +57 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.h +30 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/xray.upbdefs.c +75 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/xray.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/zipkin.upbdefs.c +77 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/zipkin.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +17 -18
- data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c +19 -29
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.h +16 -16
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +27 -30
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.h +10 -10
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +59 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +26 -24
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +455 -429
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +62 -52
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +17 -13
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h +1 -1
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +178 -138
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h +26 -16
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +21 -27
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h +10 -10
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +194 -200
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h +19 -19
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.c +58 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c +16 -18
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +19 -33
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +22 -22
- data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +18 -22
- data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.h +7 -7
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +120 -97
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.h +18 -13
- 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 +17 -19
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.c +17 -19
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.c +17 -19
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +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 +17 -21
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.h +7 -7
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.c +16 -21
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.h +7 -7
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.c +18 -24
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.h +10 -10
- data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c +15 -29
- data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.h +22 -22
- data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c +16 -26
- data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.h +16 -16
- data/src/core/ext/upbdefs-generated/envoy/type/v3/hash_policy.upbdefs.c +53 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/hash_policy.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.c +12 -10
- data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.h +1 -1
- data/src/core/ext/upbdefs-generated/envoy/type/v3/http_status.upbdefs.c +94 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/http_status.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c +14 -19
- data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.h +7 -7
- data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c +13 -19
- data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.h +10 -10
- data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_unit.upbdefs.c +38 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_unit.upbdefs.h +30 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c +13 -16
- data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/type/v3/token_bucket.upbdefs.c +57 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/token_bucket.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.c +7 -7
- data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.h +1 -1
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.c +154 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.h +95 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.c +153 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.h +100 -0
- data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.c +5 -14
- data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.h +10 -10
- data/src/core/ext/upbdefs-generated/google/api/httpbody.upbdefs.c +39 -0
- data/src/core/ext/upbdefs-generated/google/api/httpbody.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c +5 -10
- data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +107 -164
- data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.h +82 -82
- data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c +5 -10
- data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c +5 -10
- data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c +5 -16
- data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.h +13 -13
- data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c +5 -10
- data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c +5 -26
- data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.h +28 -28
- data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c +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/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 -216
- data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.h +70 -70
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/migrate.upbdefs.c +63 -0
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/migrate.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/security.upbdefs.c +47 -0
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/security.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/sensitive.upbdefs.c +35 -0
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/sensitive.upbdefs.h +30 -0
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.c +64 -0
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.h +50 -0
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/versioning.upbdefs.c +40 -0
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/versioning.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c +18 -22
- data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +32 -38
- data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.h +7 -7
- data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +20 -26
- data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.h +7 -7
- data/src/core/ext/upbdefs-generated/xds/core/v3/extension.upbdefs.c +41 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/extension.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +23 -27
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +39 -45
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.h +7 -7
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +25 -29
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/matcher.upbdefs.c +126 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/matcher.upbdefs.h +80 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/regex.upbdefs.c +40 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/regex.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/string.upbdefs.c +52 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/string.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.c +40 -0
- data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.h +35 -0
- data/src/core/ext/xds/certificate_provider_factory.h +1 -1
- data/src/core/ext/xds/certificate_provider_registry.cc +3 -3
- data/src/core/ext/xds/certificate_provider_store.h +4 -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 +232 -3313
- data/src/core/ext/xds/xds_api.h +70 -550
- data/src/core/ext/xds/xds_bootstrap.cc +315 -300
- data/src/core/ext/xds/xds_bootstrap.h +54 -33
- data/src/core/ext/xds/xds_certificate_provider.cc +7 -7
- data/src/core/ext/xds/xds_certificate_provider.h +6 -6
- 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 +1093 -957
- data/src/core/ext/xds/xds_client.h +143 -168
- data/src/core/ext/xds/xds_client_stats.cc +31 -30
- data/src/core/ext/xds/xds_client_stats.h +15 -13
- data/src/core/ext/xds/xds_cluster.cc +453 -0
- data/src/core/ext/xds/xds_cluster.h +108 -0
- data/src/core/ext/xds/xds_common_types.cc +388 -0
- data/src/core/ext/xds/xds_common_types.h +95 -0
- data/src/core/ext/xds/xds_endpoint.cc +364 -0
- data/src/core/ext/xds/xds_endpoint.h +135 -0
- data/src/core/ext/xds/xds_http_fault_filter.cc +10 -9
- data/src/core/ext/xds/xds_http_fault_filter.h +6 -5
- data/src/core/ext/xds/xds_http_filters.cc +15 -7
- data/src/core/ext/xds/xds_http_filters.h +7 -4
- data/src/core/ext/xds/xds_http_rbac_filter.cc +563 -0
- data/src/core/ext/xds/xds_http_rbac_filter.h +54 -0
- data/src/core/ext/xds/xds_listener.cc +1039 -0
- data/src/core/ext/xds/xds_listener.h +220 -0
- data/src/core/{lib/transport/authority_override.cc → ext/xds/xds_resource_type.cc} +10 -17
- 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 +985 -0
- data/src/core/ext/xds/xds_route_config.h +215 -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 +1083 -296
- data/src/core/lib/{iomgr → address_utils}/parse_address.cc +43 -25
- data/src/core/lib/{iomgr → address_utils}/parse_address.h +12 -7
- data/src/core/lib/{iomgr → address_utils}/sockaddr_utils.cc +34 -41
- data/src/core/lib/{iomgr → address_utils}/sockaddr_utils.h +5 -15
- data/src/core/lib/avl/avl.h +389 -88
- data/src/core/lib/backoff/backoff.cc +9 -38
- data/src/core/lib/backoff/backoff.h +11 -11
- data/src/core/lib/channel/call_finalization.h +86 -0
- data/src/core/lib/channel/call_tracer.h +85 -0
- data/src/core/lib/channel/channel_args.cc +87 -9
- data/src/core/lib/channel/channel_args.h +13 -1
- data/src/core/lib/channel/channel_args_preconditioning.cc +48 -0
- data/src/core/lib/channel/channel_args_preconditioning.h +62 -0
- data/src/core/lib/channel/channel_stack.cc +25 -15
- data/src/core/lib/channel/channel_stack.h +53 -16
- data/src/core/lib/channel/channel_stack_builder.cc +68 -262
- data/src/core/lib/channel/channel_stack_builder.h +95 -155
- data/src/core/lib/channel/channel_trace.cc +8 -10
- data/src/core/lib/channel/channel_trace.h +2 -1
- data/src/core/lib/channel/channelz.cc +65 -52
- data/src/core/lib/channel/channelz.h +32 -29
- data/src/core/lib/channel/channelz_registry.cc +8 -7
- data/src/core/lib/channel/channelz_registry.h +1 -1
- data/src/core/lib/channel/connected_channel.cc +14 -10
- data/src/core/lib/channel/connected_channel.h +1 -2
- data/src/core/lib/channel/context.h +14 -0
- data/src/core/lib/channel/handshaker.cc +10 -8
- data/src/core/lib/channel/handshaker.h +7 -8
- data/src/core/lib/channel/handshaker_factory.h +10 -2
- data/src/core/lib/channel/handshaker_registry.cc +15 -70
- data/src/core/lib/channel/handshaker_registry.h +29 -12
- data/src/core/lib/channel/promise_based_filter.cc +669 -0
- data/src/core/lib/channel/promise_based_filter.h +423 -0
- data/src/core/lib/channel/status_util.h +6 -2
- data/src/core/lib/compression/compression.cc +22 -114
- data/src/core/lib/compression/compression_internal.cc +145 -207
- data/src/core/lib/compression/compression_internal.h +64 -69
- data/src/core/lib/compression/message_compress.cc +13 -13
- data/src/core/lib/compression/message_compress.h +2 -2
- data/src/core/lib/config/core_configuration.cc +104 -0
- data/src/core/lib/config/core_configuration.h +196 -0
- data/src/core/lib/debug/stats.cc +1 -1
- data/src/core/lib/debug/stats.h +2 -1
- data/src/core/lib/debug/stats_data.cc +15 -14
- data/src/core/lib/debug/stats_data.h +1 -0
- 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 +46 -0
- data/src/core/lib/event_engine/channel_args_endpoint_config.h +42 -0
- data/src/core/lib/event_engine/default_event_engine_factory.cc +27 -0
- data/src/core/lib/event_engine/event_engine.cc +52 -0
- data/src/core/lib/event_engine/event_engine_factory.h +36 -0
- data/src/core/lib/event_engine/memory_allocator.cc +66 -0
- data/src/core/lib/event_engine/resolved_address.cc +39 -0
- data/src/core/lib/event_engine/sockaddr.cc +40 -0
- data/src/core/lib/event_engine/sockaddr.h +44 -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 +3 -3
- data/src/core/lib/gpr/log_android.cc +3 -2
- data/src/core/lib/gpr/log_linux.cc +7 -4
- data/src/core/lib/gpr/log_posix.cc +6 -3
- data/src/core/lib/gpr/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 +7 -6
- data/src/core/lib/gpr/sync_posix.cc +4 -3
- data/src/core/lib/gpr/time.cc +5 -3
- data/src/core/lib/gpr/time_windows.cc +3 -2
- data/src/core/lib/gpr/tls.h +125 -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 +195 -0
- data/src/core/lib/gprpp/capture.h +76 -0
- data/src/core/lib/gprpp/chunked_vector.h +253 -0
- data/src/core/lib/gprpp/construct_destruct.h +39 -0
- data/src/core/lib/gprpp/cpp_impl_of.h +45 -0
- data/src/core/lib/gprpp/debug_location.h +2 -0
- data/src/core/lib/gprpp/dual_ref_counted.h +25 -26
- data/src/core/lib/gprpp/fork.cc +14 -12
- data/src/core/lib/gprpp/fork.h +4 -4
- data/src/core/lib/gprpp/global_config.h +1 -2
- data/src/core/lib/gprpp/global_config_env.cc +14 -14
- data/src/core/lib/gprpp/global_config_env.h +2 -2
- data/src/core/lib/gprpp/global_config_generic.h +2 -2
- data/src/core/lib/gprpp/manual_constructor.h +11 -9
- data/src/core/lib/gprpp/memory.h +9 -3
- data/src/core/lib/gprpp/mpscq.cc +7 -7
- data/src/core/lib/gprpp/mpscq.h +6 -5
- data/src/core/lib/gprpp/orphanable.h +7 -7
- data/src/core/lib/gprpp/ref_counted.h +47 -33
- data/src/core/lib/gprpp/ref_counted_ptr.h +2 -4
- data/src/core/lib/gprpp/status_helper.cc +419 -0
- data/src/core/lib/gprpp/status_helper.h +181 -0
- data/src/core/lib/gprpp/sync.h +5 -31
- data/src/core/lib/gprpp/table.h +434 -0
- data/src/core/lib/gprpp/thd_posix.cc +5 -5
- data/src/core/lib/gprpp/thd_windows.cc +4 -11
- data/src/core/lib/gprpp/time.cc +186 -0
- data/src/core/lib/gprpp/time.h +292 -0
- data/src/core/lib/gprpp/time_util.cc +2 -2
- data/src/core/lib/gprpp/time_util.h +2 -2
- data/src/core/lib/http/format_request.cc +28 -23
- data/src/core/lib/http/format_request.h +8 -6
- data/src/core/lib/http/httpcli.cc +299 -209
- data/src/core/lib/http/httpcli.h +183 -85
- data/src/core/lib/http/httpcli_security_connector.cc +71 -81
- data/src/core/lib/http/httpcli_ssl_credentials.h +37 -0
- data/src/core/lib/http/parser.cc +18 -18
- data/src/core/lib/http/parser.h +6 -5
- data/src/core/lib/iomgr/buffer_list.cc +16 -17
- data/src/core/lib/iomgr/buffer_list.h +22 -24
- 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 +4 -4
- 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 +1 -5
- data/src/core/lib/iomgr/endpoint.h +3 -6
- data/src/core/lib/iomgr/endpoint_cfstream.cc +25 -54
- data/src/core/lib/iomgr/endpoint_cfstream.h +4 -4
- data/src/core/lib/iomgr/endpoint_pair.h +1 -0
- data/src/core/lib/iomgr/endpoint_pair_event_engine.cc +32 -0
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +11 -9
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +5 -6
- data/src/core/lib/iomgr/error.cc +270 -99
- data/src/core/lib/iomgr/error.h +277 -113
- 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 +10 -9
- data/src/core/lib/iomgr/ev_apple.h +1 -1
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +42 -48
- data/src/core/lib/iomgr/ev_epollex_linux.cc +80 -81
- data/src/core/lib/iomgr/ev_poll_posix.cc +73 -73
- data/src/core/lib/iomgr/ev_posix.cc +12 -12
- data/src/core/lib/iomgr/ev_posix.h +9 -9
- data/src/core/lib/iomgr/event_engine/closure.cc +77 -0
- data/src/core/lib/iomgr/event_engine/closure.h +42 -0
- data/src/core/lib/iomgr/event_engine/endpoint.cc +172 -0
- data/src/core/lib/iomgr/event_engine/endpoint.h +52 -0
- data/src/core/lib/iomgr/event_engine/iomgr.cc +85 -0
- data/src/core/lib/iomgr/event_engine/pollset.cc +87 -0
- data/src/core/lib/iomgr/event_engine/pollset.h +25 -0
- data/src/core/lib/iomgr/event_engine/promise.h +51 -0
- data/src/core/lib/iomgr/event_engine/resolved_address_internal.cc +47 -0
- data/src/core/lib/iomgr/event_engine/resolved_address_internal.h +37 -0
- data/src/core/lib/iomgr/event_engine/resolver.cc +133 -0
- data/src/core/lib/iomgr/event_engine/resolver.h +56 -0
- data/src/core/lib/iomgr/event_engine/tcp.cc +296 -0
- data/src/core/lib/iomgr/event_engine/timer.cc +62 -0
- data/src/core/lib/iomgr/exec_ctx.cc +29 -102
- data/src/core/lib/iomgr/exec_ctx.h +32 -57
- 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 +3 -2
- data/src/core/lib/iomgr/grpc_if_nametoindex_posix.cc +2 -2
- data/src/core/lib/iomgr/grpc_if_nametoindex_unsupported.cc +2 -2
- data/src/core/lib/iomgr/internal_errqueue.cc +3 -2
- data/src/core/lib/iomgr/iocp_windows.cc +10 -9
- data/src/core/lib/iomgr/iocp_windows.h +1 -1
- data/src/core/lib/iomgr/iomgr.cc +5 -3
- data/src/core/lib/iomgr/iomgr.h +3 -3
- 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 -3
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +44 -14
- data/src/core/lib/iomgr/iomgr_windows.cc +4 -5
- data/src/core/lib/iomgr/is_epollexclusive_available.cc +4 -4
- 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_windows.cc +1 -0
- data/src/core/lib/iomgr/pollset_windows.cc +6 -6
- data/src/core/lib/iomgr/port.h +8 -14
- data/src/core/lib/iomgr/python_util.h +3 -2
- data/src/core/lib/iomgr/resolve_address.cc +10 -24
- data/src/core/lib/iomgr/resolve_address.h +48 -43
- data/src/core/lib/iomgr/resolve_address_impl.h +59 -0
- data/src/core/lib/iomgr/resolve_address_posix.cc +91 -79
- data/src/core/lib/iomgr/resolve_address_posix.h +47 -0
- data/src/core/lib/iomgr/resolve_address_windows.cc +102 -85
- data/src/core/lib/iomgr/resolve_address_windows.h +47 -0
- data/src/core/lib/iomgr/resolved_address.h +39 -0
- data/src/core/lib/iomgr/sockaddr.h +2 -1
- data/src/core/lib/iomgr/{socket_utils_uv.cc → sockaddr_utils_posix.cc} +21 -8
- data/src/core/lib/iomgr/socket_factory_posix.cc +5 -5
- data/src/core/lib/iomgr/socket_factory_posix.h +1 -0
- data/src/core/lib/iomgr/socket_mutator.cc +17 -4
- data/src/core/lib/iomgr/socket_mutator.h +27 -3
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +28 -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 +12 -28
- data/src/core/lib/iomgr/tcp_client_posix.cc +38 -45
- data/src/core/lib/iomgr/tcp_client_posix.h +7 -6
- data/src/core/lib/iomgr/tcp_client_windows.cc +15 -15
- data/src/core/lib/iomgr/tcp_posix.cc +129 -159
- 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 +44 -34
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +34 -29
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +23 -20
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +12 -12
- data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +4 -4
- data/src/core/lib/iomgr/tcp_server_windows.cc +32 -35
- data/src/core/lib/iomgr/tcp_windows.cc +35 -52
- 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 +116 -127
- 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 +16 -15
- 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 +1 -0
- 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 +1 -1
- data/src/core/lib/json/json_reader.cc +97 -58
- data/src/core/lib/json/json_util.cc +71 -3
- data/src/core/lib/json/json_util.h +66 -116
- data/src/core/lib/json/json_writer.cc +0 -3
- data/src/core/lib/matchers/matchers.cc +47 -59
- data/src/core/lib/matchers/matchers.h +30 -30
- data/src/core/lib/profiling/basic_timers.cc +8 -6
- data/src/core/lib/profiling/stap_timers.cc +2 -2
- data/src/core/lib/promise/activity.cc +121 -0
- data/src/core/lib/promise/activity.h +540 -0
- data/src/core/lib/promise/arena_promise.h +188 -0
- data/src/core/lib/promise/context.h +86 -0
- data/src/core/lib/promise/detail/basic_seq.h +496 -0
- data/src/core/lib/promise/detail/promise_factory.h +189 -0
- data/src/core/lib/promise/detail/promise_like.h +85 -0
- data/src/core/lib/promise/detail/status.h +49 -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/loop.h +134 -0
- data/src/core/lib/promise/map.h +88 -0
- data/src/core/lib/promise/poll.h +66 -0
- data/src/core/lib/promise/promise.h +95 -0
- data/src/core/lib/promise/race.h +84 -0
- data/src/core/lib/promise/seq.h +89 -0
- data/src/core/lib/promise/sleep.cc +74 -0
- data/src/core/lib/promise/sleep.h +66 -0
- data/src/core/lib/promise/try_seq.h +157 -0
- data/src/core/{ext/filters/client_channel → lib/resolver}/resolver.cc +17 -25
- data/src/core/{ext/filters/client_channel → lib/resolver}/resolver.h +43 -44
- data/src/core/{ext/filters/client_channel → lib/resolver}/resolver_factory.h +32 -29
- data/src/core/lib/resolver/resolver_registry.cc +156 -0
- data/src/core/lib/resolver/resolver_registry.h +113 -0
- data/src/core/{ext/filters/client_channel → lib/resolver}/server_address.cc +2 -2
- data/src/core/{ext/filters/client_channel → lib/resolver}/server_address.h +5 -5
- data/src/core/lib/resource_quota/api.cc +108 -0
- data/src/core/lib/resource_quota/api.h +40 -0
- data/src/core/lib/{gprpp → resource_quota}/arena.cc +18 -14
- data/src/core/lib/{gprpp → resource_quota}/arena.h +37 -16
- data/src/core/lib/resource_quota/memory_quota.cc +478 -0
- data/src/core/lib/resource_quota/memory_quota.h +457 -0
- data/src/core/lib/resource_quota/resource_quota.cc +33 -0
- data/src/core/lib/resource_quota/resource_quota.h +58 -0
- data/src/core/lib/resource_quota/thread_quota.cc +43 -0
- data/src/core/lib/resource_quota/thread_quota.h +57 -0
- data/src/core/lib/resource_quota/trace.cc +19 -0
- data/src/core/lib/resource_quota/trace.h +24 -0
- data/src/core/lib/security/authorization/authorization_engine.h +44 -0
- data/src/core/lib/security/authorization/authorization_policy_provider.h +33 -0
- data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +46 -0
- data/src/core/lib/security/authorization/evaluate_args.cc +212 -0
- data/src/core/lib/security/authorization/evaluate_args.h +92 -0
- 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 +51 -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 +1 -1
- data/src/core/lib/security/credentials/alts/alts_credentials.h +6 -0
- data/src/core/lib/security/credentials/alts/check_gcp_environment_linux.cc +2 -2
- data/src/core/lib/security/credentials/alts/check_gcp_environment_no_op.cc +2 -2
- data/src/core/lib/security/credentials/alts/check_gcp_environment_windows.cc +2 -2
- data/src/core/lib/security/credentials/call_creds_util.cc +87 -0
- data/src/core/lib/security/credentials/call_creds_util.h +42 -0
- data/src/core/lib/security/credentials/channel_creds_registry.h +97 -0
- data/src/core/lib/security/credentials/channel_creds_registry_init.cc +70 -0
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +21 -84
- data/src/core/lib/security/credentials/composite/composite_credentials.h +21 -9
- data/src/core/lib/security/credentials/credentials.cc +11 -10
- data/src/core/lib/security/credentials/credentials.h +75 -59
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +78 -72
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +15 -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 +127 -80
- 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 +5 -5
- 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 +43 -26
- data/src/core/lib/security/credentials/external/url_external_account_credentials.h +10 -7
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +18 -18
- data/src/core/lib/security/credentials/fake/fake_credentials.h +14 -16
- 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 +85 -30
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +6 -0
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +21 -28
- data/src/core/lib/security/credentials/iam/iam_credentials.h +11 -9
- data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +13 -7
- data/src/core/lib/security/credentials/jwt/json_token.cc +7 -9
- data/src/core/lib/security/credentials/jwt/json_token.h +2 -1
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +52 -51
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +23 -15
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +66 -59
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +4 -4
- data/src/core/lib/security/credentials/local/local_credentials.h +6 -0
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +166 -193
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +54 -34
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +97 -157
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +54 -27
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +5 -14
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +6 -4
- 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 +80 -25
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +20 -12
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +201 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +106 -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 +38 -85
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +21 -10
- data/src/core/lib/security/credentials/tls/tls_credentials.h +6 -0
- 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 +31 -36
- data/src/core/lib/security/credentials/xds/xds_credentials.h +6 -1
- 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 +24 -25
- data/src/core/lib/security/security_connector/fake/fake_security_connector.h +0 -2
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +8 -18
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +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 +32 -24
- data/src/core/lib/security/security_connector/security_connector.cc +8 -15
- data/src/core/lib/security/security_connector/security_connector.h +24 -24
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +24 -22
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +1 -2
- data/src/core/lib/security/security_connector/ssl_utils.cc +67 -39
- data/src/core/lib/security/security_connector/ssl_utils.h +17 -21
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +409 -272
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +118 -79
- data/src/core/lib/security/transport/auth_filters.h +38 -4
- data/src/core/lib/security/transport/client_auth_filter.cc +88 -353
- data/src/core/lib/security/transport/secure_endpoint.cc +8 -18
- data/src/core/lib/security/transport/secure_endpoint.h +1 -0
- data/src/core/lib/security/transport/security_handshaker.cc +138 -90
- data/src/core/lib/security/transport/security_handshaker.h +2 -1
- data/src/core/lib/security/transport/server_auth_filter.cc +58 -48
- 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 +82 -0
- data/src/core/{ext/filters/client_channel → lib/service_config}/service_config_call_data.h +17 -31
- data/src/core/{ext/filters/client_channel/service_config.cc → lib/service_config/service_config_impl.cc} +31 -27
- data/src/core/{ext/filters/client_channel/service_config.h → lib/service_config/service_config_impl.h} +22 -23
- data/src/core/{ext/filters/client_channel → lib/service_config}/service_config_parser.cc +35 -31
- data/src/core/lib/service_config/service_config_parser.h +106 -0
- data/src/core/lib/slice/percent_encoding.cc +84 -97
- data/src/core/lib/slice/percent_encoding.h +23 -28
- data/src/core/lib/slice/slice.cc +81 -191
- data/src/core/lib/slice/slice.h +384 -0
- data/src/core/lib/{gpr/tls_pthread.cc → slice/slice_api.cc} +15 -6
- data/src/core/lib/slice/slice_buffer.cc +10 -7
- data/src/core/lib/slice/slice_internal.h +15 -276
- data/src/core/lib/slice/slice_refcount.cc +35 -0
- data/src/core/lib/slice/slice_refcount.h +46 -0
- data/src/core/lib/slice/slice_refcount_base.h +61 -0
- data/src/core/lib/slice/slice_split.cc +100 -0
- data/src/core/lib/slice/slice_split.h +40 -0
- data/src/core/lib/slice/slice_string_helpers.cc +0 -83
- data/src/core/lib/slice/slice_string_helpers.h +0 -11
- data/src/core/lib/surface/api_trace.cc +2 -1
- data/src/core/lib/surface/api_trace.h +1 -0
- data/src/core/lib/surface/builtins.cc +49 -0
- data/src/core/lib/surface/builtins.h +26 -0
- data/src/core/lib/surface/byte_buffer_reader.cc +1 -1
- data/src/core/lib/surface/call.cc +316 -521
- data/src/core/lib/surface/call.h +14 -9
- data/src/core/lib/surface/call_details.cc +2 -2
- data/src/core/lib/surface/call_log_batch.cc +2 -2
- data/src/core/lib/surface/channel.cc +75 -107
- data/src/core/lib/surface/channel.h +17 -24
- data/src/core/lib/surface/channel_init.cc +23 -76
- data/src/core/lib/surface/channel_init.h +52 -44
- data/src/core/lib/surface/channel_ping.cc +2 -3
- data/src/core/lib/surface/channel_stack_type.cc +2 -1
- data/src/core/lib/surface/completion_queue.cc +136 -145
- data/src/core/lib/surface/completion_queue.h +3 -2
- data/src/core/lib/surface/completion_queue_factory.cc +3 -3
- data/src/core/lib/surface/completion_queue_factory.h +1 -0
- data/src/core/lib/surface/event_string.cc +1 -0
- data/src/core/lib/surface/init.cc +82 -60
- data/src/core/lib/surface/init.h +10 -4
- data/src/core/lib/surface/lame_client.cc +50 -35
- data/src/core/lib/surface/lame_client.h +1 -1
- data/src/core/lib/surface/metadata_array.cc +2 -2
- data/src/core/lib/surface/server.cc +100 -128
- data/src/core/lib/surface/server.h +58 -53
- data/src/core/lib/surface/validate_metadata.cc +55 -24
- data/src/core/lib/surface/validate_metadata.h +3 -2
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.cc +11 -12
- data/src/core/lib/transport/bdp_estimator.h +2 -2
- data/src/core/lib/transport/byte_stream.cc +9 -5
- data/src/core/lib/transport/byte_stream.h +9 -8
- data/src/core/lib/transport/connectivity_state.cc +9 -6
- data/src/core/lib/transport/connectivity_state.h +2 -2
- data/src/core/lib/transport/error_utils.cc +68 -29
- data/src/core/lib/transport/error_utils.h +13 -6
- data/src/core/lib/transport/metadata_batch.h +1348 -163
- data/src/core/lib/transport/parsed_metadata.cc +37 -0
- data/src/core/lib/transport/parsed_metadata.h +401 -0
- data/src/core/lib/transport/pid_controller.cc +4 -4
- data/src/core/lib/transport/status_conversion.cc +2 -2
- data/src/core/lib/transport/status_conversion.h +1 -1
- data/src/core/lib/transport/timeout_encoding.cc +204 -67
- data/src/core/lib/transport/timeout_encoding.h +40 -10
- data/src/core/lib/transport/transport.cc +15 -35
- data/src/core/lib/transport/transport.h +94 -8
- data/src/core/lib/transport/transport_impl.h +13 -0
- data/src/core/lib/transport/transport_op_string.cc +13 -35
- data/src/core/lib/uri/uri_parser.cc +237 -63
- data/src/core/lib/uri/uri_parser.h +39 -23
- data/src/core/plugin_registry/grpc_plugin_registry.cc +75 -102
- data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +85 -0
- data/src/core/tsi/alts/crypt/aes_gcm.cc +6 -3
- data/src/core/tsi/alts/crypt/gsec.h +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 +36 -31
- 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 +38 -19
- 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 +2 -2
- data/src/core/tsi/alts/handshaker/transport_security_common_api.h +2 -2
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +2 -2
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +1 -1
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +2 -2
- data/src/core/tsi/fake_transport_security.cc +15 -7
- data/src/core/tsi/local_transport_security.cc +42 -87
- data/src/core/tsi/local_transport_security.h +1 -4
- data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +141 -0
- data/src/core/tsi/ssl/key_logging/ssl_key_logging.h +81 -0
- data/src/core/tsi/ssl/session_cache/ssl_session.h +2 -4
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +20 -53
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +6 -7
- data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +2 -2
- data/src/core/tsi/ssl_transport_security.cc +186 -38
- data/src/core/tsi/ssl_transport_security.h +45 -11
- 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 +26 -0
- data/src/ruby/bin/math_services_pb.rb +1 -1
- data/src/ruby/ext/grpc/extconf.rb +22 -10
- data/src/ruby/ext/grpc/rb_byte_buffer.c +2 -1
- data/src/ruby/ext/grpc/rb_call.c +5 -5
- data/src/ruby/ext/grpc/rb_call_credentials.c +5 -5
- data/src/ruby/ext/grpc/rb_channel.c +15 -10
- data/src/ruby/ext/grpc/rb_channel_args.c +2 -2
- data/src/ruby/ext/grpc/rb_channel_credentials.c +4 -4
- data/src/ruby/ext/grpc/rb_channel_credentials.h +1 -0
- data/src/ruby/ext/grpc/rb_completion_queue.c +3 -2
- data/src/ruby/ext/grpc/rb_compression_options.c +5 -4
- data/src/ruby/ext/grpc/rb_event_thread.c +4 -4
- data/src/ruby/ext/grpc/rb_grpc.c +5 -4
- data/src/ruby/ext/grpc/rb_grpc.h +1 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +36 -34
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +56 -53
- data/src/ruby/ext/grpc/rb_server.c +13 -9
- data/src/ruby/ext/grpc/rb_server_credentials.c +3 -3
- data/src/ruby/ext/grpc/rb_server_credentials.h +1 -0
- data/src/ruby/ext/grpc/rb_xds_channel_credentials.c +8 -5
- data/src/ruby/ext/grpc/rb_xds_channel_credentials.h +3 -1
- data/src/ruby/ext/grpc/rb_xds_server_credentials.c +6 -5
- data/src/ruby/ext/grpc/rb_xds_server_credentials.h +3 -1
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/grpc/health/v1/health_services_pb.rb +1 -1
- 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/spec/client_server_spec.rb +1 -1
- 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/container/fixed_array.h +2 -7
- 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/{base → profiling}/internal/exponential_biased.cc +4 -4
- data/third_party/abseil-cpp/absl/{base → profiling}/internal/exponential_biased.h +6 -6
- data/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h +230 -0
- data/third_party/abseil-cpp/absl/random/bernoulli_distribution.h +200 -0
- data/third_party/abseil-cpp/absl/random/beta_distribution.h +427 -0
- data/third_party/abseil-cpp/absl/random/discrete_distribution.cc +98 -0
- data/third_party/abseil-cpp/absl/random/discrete_distribution.h +247 -0
- data/third_party/abseil-cpp/absl/random/distributions.h +452 -0
- data/third_party/abseil-cpp/absl/random/exponential_distribution.h +165 -0
- data/third_party/abseil-cpp/absl/random/gaussian_distribution.cc +104 -0
- data/third_party/abseil-cpp/absl/random/gaussian_distribution.h +275 -0
- data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +92 -0
- data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +268 -0
- data/third_party/abseil-cpp/absl/random/internal/fastmath.h +57 -0
- data/third_party/abseil-cpp/absl/random/internal/generate_real.h +144 -0
- data/third_party/abseil-cpp/absl/random/internal/iostream_state_saver.h +245 -0
- data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +150 -0
- data/third_party/abseil-cpp/absl/random/internal/pcg_engine.h +308 -0
- data/third_party/abseil-cpp/absl/random/internal/platform.h +171 -0
- data/third_party/abseil-cpp/absl/random/internal/pool_urbg.cc +253 -0
- data/third_party/abseil-cpp/absl/random/internal/pool_urbg.h +131 -0
- data/third_party/abseil-cpp/absl/random/internal/randen.cc +91 -0
- data/third_party/abseil-cpp/absl/random/internal/randen.h +102 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +221 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_detect.h +33 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +239 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_hwaes.cc +526 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_hwaes.h +50 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_round_keys.cc +462 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_slow.cc +471 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_slow.h +40 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_traits.h +88 -0
- data/third_party/abseil-cpp/absl/random/internal/salted_seed_seq.h +167 -0
- data/third_party/abseil-cpp/absl/random/internal/seed_material.cc +267 -0
- data/third_party/abseil-cpp/absl/random/internal/seed_material.h +104 -0
- data/third_party/abseil-cpp/absl/random/internal/traits.h +101 -0
- data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +244 -0
- data/third_party/abseil-cpp/absl/random/internal/wide_multiply.h +111 -0
- data/third_party/abseil-cpp/absl/random/log_uniform_int_distribution.h +257 -0
- data/third_party/abseil-cpp/absl/random/poisson_distribution.h +258 -0
- data/third_party/abseil-cpp/absl/random/random.h +189 -0
- data/third_party/abseil-cpp/absl/random/seed_gen_exception.cc +46 -0
- data/third_party/abseil-cpp/absl/random/seed_gen_exception.h +55 -0
- data/third_party/abseil-cpp/absl/random/seed_sequences.cc +29 -0
- data/third_party/abseil-cpp/absl/random/seed_sequences.h +110 -0
- data/third_party/abseil-cpp/absl/random/uniform_int_distribution.h +275 -0
- data/third_party/abseil-cpp/absl/random/uniform_real_distribution.h +202 -0
- data/third_party/abseil-cpp/absl/random/zipf_distribution.h +271 -0
- data/third_party/abseil-cpp/absl/status/internal/status_internal.h +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/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 +696 -662
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +67 -54
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +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_gentm.c +6 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.c +16 -23
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +64 -44
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_print.c +19 -29
- data/third_party/boringssl-with-bazel/src/crypto/{x509 → asn1}/a_strex.c +269 -272
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +106 -153
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +4 -4
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +19 -9
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +1 -40
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utf8.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +60 -49
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_par.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c +24 -28
- data/third_party/boringssl-with-bazel/src/crypto/{x509 → asn1}/charmap.h +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/{asn1_locl.h → internal.h} +91 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +57 -281
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +292 -200
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +10 -10
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.c +10 -14
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.c +8 -6
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/time_support.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +24 -8
- data/third_party/boringssl-with-bazel/src/crypto/bio/bio_mem.c +1 -7
- data/third_party/boringssl-with-bazel/src/crypto/bio/connect.c +1 -5
- data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +0 -4
- data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +1 -7
- data/third_party/boringssl-with-bazel/src/crypto/bio/pair.c +1 -6
- data/third_party/boringssl-with-bazel/src/crypto/bio/socket.c +3 -17
- data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +4 -6
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c +3 -1
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbb.c +9 -0
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +8 -0
- data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c +38 -47
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/cipher_extra.c +49 -65
- 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 +14 -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/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/digest_extra/digest_extra.c +6 -3
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +21 -0
- data/third_party/boringssl-with-bazel/src/crypto/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 +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +26 -9
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd_extra.c +3 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +6 -3
- 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 +23 -3
- 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/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 +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +0 -1
- 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 +6 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +2 -15
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +30 -13
- 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 +14 -9
- 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 +21 -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 +397 -311
- 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 +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/pool/internal.h +5 -1
- data/third_party/boringssl-with-bazel/src/crypto/pool/pool.c +59 -22
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/deterministic.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/fuchsia.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/passive.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/rand_extra.c +1 -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/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 +15 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c +10 -5
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_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 +3 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +1 -5
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +42 -89
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +9 -16
- 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 +25 -22
- 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 +32 -0
- 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 +7 -25
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +14 -11
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_exten.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c +23 -21
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_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 +12 -11
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +3 -0
- 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 +24 -5
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +18 -8
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c +3 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +8 -11
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_crld.c +4 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +23 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ncons.c +112 -55
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pci.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +14 -13
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +80 -38
- 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 +66 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +1517 -495
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +5 -12
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +57 -13
- data/third_party/boringssl-with-bazel/src/include/openssl/base64.h +8 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +3 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/bn.h +3 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +10 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/chacha.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +21 -11
- data/third_party/boringssl-with-bazel/src/include/openssl/conf.h +8 -5
- data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +24 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +4 -12
- data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +9 -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 +5 -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 +55 -104
- data/third_party/boringssl-with-bazel/src/{crypto/x509/x509_r2x.c → include/openssl/evp_errors.h} +41 -58
- 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 +2 -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 +37 -15
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +386 -104
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +41 -48
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +1160 -331
- 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 +54 -17
- 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/{t1_lib.cc → extensions.cc} +660 -747
- data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +298 -22
- data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +90 -43
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +307 -201
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +173 -36
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +474 -156
- 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 -1
- data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +14 -19
- 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 +56 -110
- data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +2 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +129 -96
- data/third_party/boringssl-with-bazel/src/ssl/ssl_stat.cc +3 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc +10 -15
- 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/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 +146 -110
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +241 -132
- data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +4 -2
- data/third_party/cares/cares/{ares.h → include/ares.h} +73 -1
- data/third_party/cares/cares/{ares_dns.h → include/ares_dns.h} +9 -0
- data/third_party/cares/cares/{ares_rules.h → include/ares_rules.h} +0 -0
- data/third_party/cares/cares/{ares_version.h → include/ares_version.h} +3 -3
- data/third_party/cares/cares/{ares__close_sockets.c → src/lib/ares__close_sockets.c} +2 -2
- data/third_party/cares/cares/{ares__get_hostent.c → src/lib/ares__get_hostent.c} +1 -2
- data/third_party/cares/cares/src/lib/ares__parse_into_addrinfo.c +260 -0
- data/third_party/cares/cares/{ares__read_line.c → src/lib/ares__read_line.c} +0 -0
- data/third_party/cares/cares/src/lib/ares__readaddrinfo.c +264 -0
- data/third_party/cares/cares/src/lib/ares__sortaddrinfo.c +499 -0
- data/third_party/cares/cares/{ares__timeval.c → src/lib/ares__timeval.c} +0 -0
- data/third_party/cares/cares/src/lib/ares_android.c +444 -0
- data/third_party/cares/cares/src/lib/ares_android.h +27 -0
- data/third_party/cares/cares/{ares_cancel.c → src/lib/ares_cancel.c} +0 -0
- data/third_party/cares/cares/{ares_create_query.c → src/lib/ares_create_query.c} +8 -17
- data/third_party/cares/cares/{ares_data.c → src/lib/ares_data.c} +18 -0
- data/third_party/cares/cares/{ares_data.h → src/lib/ares_data.h} +2 -0
- data/third_party/cares/cares/{ares_destroy.c → src/lib/ares_destroy.c} +0 -0
- data/third_party/cares/cares/{ares_expand_name.c → src/lib/ares_expand_name.c} +114 -23
- data/third_party/cares/cares/{ares_expand_string.c → src/lib/ares_expand_string.c} +2 -5
- data/third_party/cares/cares/{ares_fds.c → src/lib/ares_fds.c} +0 -0
- data/third_party/cares/cares/{ares_free_hostent.c → src/lib/ares_free_hostent.c} +6 -4
- data/third_party/cares/cares/{ares_free_string.c → src/lib/ares_free_string.c} +0 -0
- data/third_party/cares/cares/src/lib/ares_freeaddrinfo.c +59 -0
- data/third_party/cares/cares/src/lib/ares_getaddrinfo.c +772 -0
- data/third_party/cares/cares/{ares_getenv.c → src/lib/ares_getenv.c} +0 -2
- data/third_party/cares/cares/{ares_getenv.h → src/lib/ares_getenv.h} +0 -0
- data/third_party/cares/cares/{ares_gethostbyaddr.c → src/lib/ares_gethostbyaddr.c} +2 -9
- data/third_party/cares/cares/{ares_gethostbyname.c → src/lib/ares_gethostbyname.c} +25 -20
- data/third_party/cares/cares/{ares_getnameinfo.c → src/lib/ares_getnameinfo.c} +4 -10
- data/third_party/cares/cares/{ares_getsock.c → src/lib/ares_getsock.c} +0 -0
- data/third_party/cares/cares/{ares_inet_net_pton.h → src/lib/ares_inet_net_pton.h} +0 -0
- data/third_party/cares/cares/{ares_init.c → src/lib/ares_init.c} +79 -40
- data/third_party/cares/cares/{ares_iphlpapi.h → src/lib/ares_iphlpapi.h} +0 -0
- data/third_party/cares/cares/{ares_ipv6.h → src/lib/ares_ipv6.h} +7 -0
- data/third_party/cares/cares/{ares_library_init.c → src/lib/ares_library_init.c} +7 -2
- data/third_party/cares/cares/{ares_library_init.h → src/lib/ares_library_init.h} +1 -1
- data/third_party/cares/cares/{ares_llist.c → src/lib/ares_llist.c} +0 -0
- data/third_party/cares/cares/{ares_llist.h → src/lib/ares_llist.h} +0 -0
- data/third_party/cares/cares/{ares_mkquery.c → src/lib/ares_mkquery.c} +0 -0
- data/third_party/cares/cares/src/lib/ares_nameser.h +482 -0
- data/third_party/cares/cares/{ares_nowarn.c → src/lib/ares_nowarn.c} +0 -0
- data/third_party/cares/cares/{ares_nowarn.h → src/lib/ares_nowarn.h} +0 -0
- data/third_party/cares/cares/{ares_options.c → src/lib/ares_options.c} +0 -0
- data/third_party/cares/cares/src/lib/ares_parse_a_reply.c +209 -0
- data/third_party/cares/cares/src/lib/ares_parse_aaaa_reply.c +212 -0
- data/third_party/cares/cares/src/lib/ares_parse_caa_reply.c +199 -0
- data/third_party/cares/cares/{ares_parse_mx_reply.c → src/lib/ares_parse_mx_reply.c} +2 -8
- data/third_party/cares/cares/{ares_parse_naptr_reply.c → src/lib/ares_parse_naptr_reply.c} +2 -13
- data/third_party/cares/cares/{ares_parse_ns_reply.c → src/lib/ares_parse_ns_reply.c} +5 -11
- data/third_party/cares/cares/{ares_parse_ptr_reply.c → src/lib/ares_parse_ptr_reply.c} +53 -46
- data/third_party/cares/cares/src/lib/ares_parse_soa_reply.c +179 -0
- data/third_party/cares/cares/{ares_parse_srv_reply.c → src/lib/ares_parse_srv_reply.c} +2 -13
- data/third_party/cares/cares/{ares_parse_txt_reply.c → src/lib/ares_parse_txt_reply.c} +3 -9
- data/third_party/cares/cares/{ares_platform.c → src/lib/ares_platform.c} +0 -0
- data/third_party/cares/cares/{ares_platform.h → src/lib/ares_platform.h} +0 -0
- data/third_party/cares/cares/{ares_private.h → src/lib/ares_private.h} +52 -11
- data/third_party/cares/cares/{ares_process.c → src/lib/ares_process.c} +127 -52
- data/third_party/cares/cares/{ares_query.c → src/lib/ares_query.c} +3 -9
- data/third_party/cares/cares/{ares_search.c → src/lib/ares_search.c} +5 -7
- data/third_party/cares/cares/{ares_send.c → src/lib/ares_send.c} +2 -8
- data/third_party/cares/cares/{ares_setup.h → src/lib/ares_setup.h} +4 -1
- data/third_party/cares/cares/{ares_strcasecmp.c → src/lib/ares_strcasecmp.c} +0 -0
- data/third_party/cares/cares/{ares_strcasecmp.h → src/lib/ares_strcasecmp.h} +0 -0
- data/third_party/cares/cares/{ares_strdup.c → src/lib/ares_strdup.c} +0 -0
- data/third_party/cares/cares/{ares_strdup.h → src/lib/ares_strdup.h} +0 -0
- data/third_party/cares/cares/{ares_strerror.c → src/lib/ares_strerror.c} +0 -0
- data/third_party/cares/cares/{ares_strsplit.c → src/lib/ares_strsplit.c} +4 -0
- data/third_party/cares/cares/{ares_strsplit.h → src/lib/ares_strsplit.h} +0 -0
- data/third_party/cares/cares/{ares_timeout.c → src/lib/ares_timeout.c} +0 -0
- data/third_party/cares/cares/{ares_version.c → src/lib/ares_version.c} +0 -0
- data/third_party/cares/cares/{ares_writev.c → src/lib/ares_writev.c} +0 -0
- data/third_party/cares/cares/src/lib/ares_writev.h +36 -0
- data/third_party/cares/cares/{bitncmp.c → src/lib/bitncmp.c} +0 -0
- data/third_party/cares/cares/{bitncmp.h → src/lib/bitncmp.h} +0 -0
- data/third_party/cares/cares/src/lib/config-dos.h +115 -0
- data/third_party/cares/cares/{config-win32.h → src/lib/config-win32.h} +0 -0
- data/third_party/cares/cares/{inet_net_pton.c → src/lib/inet_net_pton.c} +2 -8
- data/third_party/cares/cares/{inet_ntop.c → src/lib/inet_ntop.c} +2 -8
- data/third_party/cares/cares/{setup_once.h → src/lib/setup_once.h} +0 -0
- data/third_party/cares/cares/{windows_port.c → src/lib/windows_port.c} +0 -0
- data/third_party/re2/re2/compile.cc +91 -109
- data/third_party/re2/re2/dfa.cc +27 -39
- data/third_party/re2/re2/filtered_re2.cc +18 -2
- data/third_party/re2/re2/filtered_re2.h +10 -5
- data/third_party/re2/re2/nfa.cc +1 -1
- data/third_party/re2/re2/parse.cc +42 -23
- data/third_party/re2/re2/perl_groups.cc +34 -34
- data/third_party/re2/re2/prefilter.cc +3 -2
- data/third_party/re2/re2/prog.cc +182 -4
- data/third_party/re2/re2/prog.h +28 -9
- data/third_party/re2/re2/re2.cc +87 -118
- data/third_party/re2/re2/re2.h +156 -141
- data/third_party/re2/re2/regexp.cc +12 -5
- data/third_party/re2/re2/regexp.h +8 -2
- data/third_party/re2/re2/set.cc +31 -9
- data/third_party/re2/re2/set.h +9 -4
- data/third_party/re2/re2/simplify.cc +11 -3
- data/third_party/re2/re2/tostring.cc +1 -1
- data/third_party/re2/re2/walker-inl.h +1 -1
- data/third_party/re2/util/mutex.h +2 -2
- data/third_party/re2/util/pcre.h +3 -3
- data/third_party/upb/third_party/utf8_range/naive.c +92 -0
- data/third_party/upb/third_party/utf8_range/range2-neon.c +157 -0
- data/third_party/upb/third_party/utf8_range/range2-sse.c +170 -0
- data/third_party/upb/third_party/utf8_range/utf8_range.h +9 -0
- data/third_party/upb/upb/decode.c +758 -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 +2089 -1069
- data/third_party/upb/upb/def.h +341 -256
- data/third_party/upb/upb/def.hpp +160 -161
- data/third_party/upb/upb/encode.c +285 -165
- data/third_party/upb/upb/encode.h +38 -13
- data/third_party/upb/upb/msg.c +276 -102
- data/third_party/upb/upb/msg.h +84 -582
- data/third_party/upb/upb/msg_internal.h +818 -0
- data/third_party/upb/upb/port_def.inc +85 -24
- data/third_party/upb/upb/port_undef.inc +38 -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 +398 -193
- data/third_party/upb/upb/table_internal.h +383 -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 +145 -139
- 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 +679 -542
- metadata +597 -254
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +0 -44
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +0 -84
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +0 -179
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_libuv.cc +0 -38
- data/src/core/ext/filters/client_channel/resolver_registry.cc +0 -197
- data/src/core/ext/filters/client_channel/resolver_registry.h +0 -89
- data/src/core/ext/filters/client_channel/service_config_parser.h +0 -92
- data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +0 -210
- data/src/core/ext/filters/workarounds/workaround_utils.cc +0 -53
- data/src/core/ext/filters/workarounds/workaround_utils.h +0 -39
- data/src/core/ext/transport/chttp2/client/authority.cc +0 -42
- data/src/core/ext/transport/chttp2/client/authority.h +0 -36
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +0 -125
- data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +0 -90
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +0 -213
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +0 -55
- 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 -130
- 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 -27
- data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.h +0 -56
- data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.c +0 -27
- data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.h +0 -56
- data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.c +0 -27
- data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.h +0 -56
- data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.c +0 -27
- data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.h +0 -56
- data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c +0 -58
- data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h +0 -124
- data/src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.c +0 -33
- data/src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.h +0 -77
- data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.c +0 -72
- data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.h +0 -35
- data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c +0 -73
- data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.h +0 -35
- data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.c +0 -72
- data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.h +0 -35
- data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.c +0 -80
- data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.h +0 -35
- data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.c +0 -74
- data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.h +0 -35
- data/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.c +0 -44
- data/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.h +0 -35
- data/src/core/lib/avl/avl.cc +0 -306
- data/src/core/lib/compression/algorithm_metadata.h +0 -61
- data/src/core/lib/compression/compression_args.cc +0 -135
- data/src/core/lib/compression/compression_args.h +0 -56
- data/src/core/lib/compression/stream_compression.cc +0 -80
- data/src/core/lib/compression/stream_compression.h +0 -116
- data/src/core/lib/compression/stream_compression_gzip.cc +0 -230
- data/src/core/lib/compression/stream_compression_gzip.h +0 -28
- data/src/core/lib/compression/stream_compression_identity.cc +0 -90
- data/src/core/lib/compression/stream_compression_identity.h +0 -29
- data/src/core/lib/gpr/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.h +0 -56
- data/src/core/lib/gpr/tls_stdcpp.h +0 -48
- data/src/core/lib/gprpp/atomic.h +0 -104
- data/src/core/lib/iomgr/endpoint_pair_uv.cc +0 -40
- data/src/core/lib/iomgr/iomgr_custom.cc +0 -79
- data/src/core/lib/iomgr/iomgr_custom.h +0 -49
- data/src/core/lib/iomgr/iomgr_uv.cc +0 -43
- data/src/core/lib/iomgr/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/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/credentials/credentials_metadata.cc +0 -62
- data/src/core/lib/slice/slice_intern.cc +0 -373
- data/src/core/lib/slice/slice_utils.h +0 -200
- data/src/core/lib/surface/init_secure.cc +0 -81
- data/src/core/lib/transport/metadata.cc +0 -693
- data/src/core/lib/transport/metadata.h +0 -446
- data/src/core/lib/transport/metadata_batch.cc +0 -419
- 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/synchronization/internal/mutex_nonprod.inc +0 -249
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_enum.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 -246
- data/third_party/boringssl-with-bazel/src/crypto/x509/vpm_int.h +0 -71
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_int.h +0 -217
- data/third_party/cares/cares/ares_getopt.c +0 -122
- data/third_party/cares/cares/ares_getopt.h +0 -53
- data/third_party/cares/cares/ares_parse_a_reply.c +0 -264
- data/third_party/cares/cares/ares_parse_aaaa_reply.c +0 -264
- data/third_party/cares/cares/ares_parse_soa_reply.c +0 -133
- data/third_party/upb/third_party/wyhash/wyhash.h +0 -145
- data/third_party/upb/upb/decode.int.h +0 -163
- data/third_party/upb/upb/table.int.h +0 -475
- data/third_party/upb/upb/upb.int.h +0 -29
@@ -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,30 +33,34 @@
|
|
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"
|
38
37
|
#include "src/core/ext/xds/xds_bootstrap.h"
|
39
38
|
#include "src/core/ext/xds/xds_channel_args.h"
|
40
|
-
#include "src/core/ext/xds/xds_client.h"
|
41
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_endpoint.h"
|
42
42
|
#include "src/core/ext/xds/xds_http_filters.h"
|
43
|
+
#include "src/core/ext/xds/xds_listener.h"
|
44
|
+
#include "src/core/lib/address_utils/sockaddr_utils.h"
|
43
45
|
#include "src/core/lib/backoff/backoff.h"
|
44
46
|
#include "src/core/lib/channel/channel_args.h"
|
45
47
|
#include "src/core/lib/channel/channel_stack.h"
|
48
|
+
#include "src/core/lib/config/core_configuration.h"
|
49
|
+
#include "src/core/lib/gpr/env.h"
|
46
50
|
#include "src/core/lib/gpr/string.h"
|
47
51
|
#include "src/core/lib/gprpp/memory.h"
|
48
52
|
#include "src/core/lib/gprpp/orphanable.h"
|
49
53
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
50
54
|
#include "src/core/lib/gprpp/sync.h"
|
51
55
|
#include "src/core/lib/iomgr/sockaddr.h"
|
52
|
-
#include "src/core/lib/iomgr/sockaddr_utils.h"
|
53
56
|
#include "src/core/lib/iomgr/timer.h"
|
57
|
+
#include "src/core/lib/security/credentials/channel_creds_registry.h"
|
54
58
|
#include "src/core/lib/slice/slice_internal.h"
|
55
59
|
#include "src/core/lib/slice/slice_string_helpers.h"
|
56
60
|
#include "src/core/lib/surface/call.h"
|
57
61
|
#include "src/core/lib/surface/channel.h"
|
58
|
-
#include "src/core/lib/surface/
|
59
|
-
#include "src/core/lib/
|
62
|
+
#include "src/core/lib/surface/lame_client.h"
|
63
|
+
#include "src/core/lib/uri/uri_parser.h"
|
60
64
|
|
61
65
|
#define GRPC_XDS_INITIAL_CONNECT_BACKOFF_SECONDS 1
|
62
66
|
#define GRPC_XDS_RECONNECT_BACKOFF_MULTIPLIER 1.6
|
@@ -72,12 +76,50 @@ TraceFlag grpc_xds_client_refcount_trace(false, "xds_client_refcount");
|
|
72
76
|
namespace {
|
73
77
|
|
74
78
|
Mutex* g_mu = nullptr;
|
75
|
-
|
76
|
-
|
77
|
-
|
79
|
+
|
80
|
+
const grpc_channel_args* g_channel_args ABSL_GUARDED_BY(*g_mu) = nullptr;
|
81
|
+
XdsClient* g_xds_client ABSL_GUARDED_BY(*g_mu) = nullptr;
|
82
|
+
char* g_fallback_bootstrap_config ABSL_GUARDED_BY(*g_mu) = nullptr;
|
78
83
|
|
79
84
|
} // namespace
|
80
85
|
|
86
|
+
class XdsClient::Notifier {
|
87
|
+
public:
|
88
|
+
// Helper template function to invoke `OnError()` on a list of watchers \a
|
89
|
+
// watchers_list within \a work_serializer. Works with all 4 resource types.
|
90
|
+
template <class T>
|
91
|
+
static void ScheduleNotifyWatchersOnErrorInWorkSerializer(
|
92
|
+
XdsClient* xds_client, const T& watchers_list, grpc_error_handle error,
|
93
|
+
const DebugLocation& location) {
|
94
|
+
xds_client->work_serializer_.Schedule(
|
95
|
+
[watchers_list, error]()
|
96
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&xds_client->work_serializer_) {
|
97
|
+
for (const auto& p : watchers_list) {
|
98
|
+
p.first->OnError(GRPC_ERROR_REF(error));
|
99
|
+
}
|
100
|
+
GRPC_ERROR_UNREF(error);
|
101
|
+
},
|
102
|
+
location);
|
103
|
+
}
|
104
|
+
|
105
|
+
// Helper template function to invoke `OnResourceDoesNotExist()` on a list of
|
106
|
+
// watchers \a watchers_list within \a work_serializer. Works with all 4
|
107
|
+
// resource types.
|
108
|
+
template <class T>
|
109
|
+
static void ScheduleNotifyWatchersOnResourceDoesNotExistInWorkSerializer(
|
110
|
+
XdsClient* xds_client, const T& watchers_list,
|
111
|
+
const DebugLocation& location) {
|
112
|
+
xds_client->work_serializer_.Schedule(
|
113
|
+
[watchers_list]()
|
114
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&xds_client->work_serializer_) {
|
115
|
+
for (const auto& p : watchers_list) {
|
116
|
+
p.first->OnResourceDoesNotExist();
|
117
|
+
}
|
118
|
+
},
|
119
|
+
location);
|
120
|
+
}
|
121
|
+
};
|
122
|
+
|
81
123
|
//
|
82
124
|
// Internal class declarations
|
83
125
|
//
|
@@ -88,7 +130,7 @@ template <typename T>
|
|
88
130
|
class XdsClient::ChannelState::RetryableCall
|
89
131
|
: public InternallyRefCounted<RetryableCall<T>> {
|
90
132
|
public:
|
91
|
-
explicit RetryableCall(
|
133
|
+
explicit RetryableCall(WeakRefCountedPtr<ChannelState> chand);
|
92
134
|
|
93
135
|
void Orphan() override;
|
94
136
|
|
@@ -102,14 +144,14 @@ class XdsClient::ChannelState::RetryableCall
|
|
102
144
|
private:
|
103
145
|
void StartNewCallLocked();
|
104
146
|
void StartRetryTimerLocked();
|
105
|
-
static void OnRetryTimer(void* arg,
|
106
|
-
void OnRetryTimerLocked(
|
147
|
+
static void OnRetryTimer(void* arg, grpc_error_handle error);
|
148
|
+
void OnRetryTimerLocked(grpc_error_handle error);
|
107
149
|
|
108
150
|
// The wrapped xds call that talks to the xds server. It's instantiated
|
109
151
|
// every time we start a new call. It's null during call retry backoff.
|
110
152
|
OrphanablePtr<T> calld_;
|
111
153
|
// The owning xds channel.
|
112
|
-
|
154
|
+
WeakRefCountedPtr<ChannelState> chand_;
|
113
155
|
|
114
156
|
// Retry state.
|
115
157
|
BackOff backoff_;
|
@@ -135,32 +177,65 @@ class XdsClient::ChannelState::AdsCallState
|
|
135
177
|
XdsClient* xds_client() const { return chand()->xds_client(); }
|
136
178
|
bool seen_response() const { return seen_response_; }
|
137
179
|
|
138
|
-
void
|
139
|
-
|
140
|
-
|
180
|
+
void SubscribeLocked(const XdsResourceType* type, const XdsResourceName& name)
|
181
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
|
182
|
+
void UnsubscribeLocked(const XdsResourceType* type,
|
183
|
+
const XdsResourceName& name, bool delay_unsubscription)
|
184
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
|
141
185
|
|
142
186
|
bool HasSubscribedResources() const;
|
143
187
|
|
144
188
|
private:
|
145
|
-
class
|
189
|
+
class AdsResponseParser : public XdsApi::AdsResponseParserInterface {
|
190
|
+
public:
|
191
|
+
struct Result {
|
192
|
+
const XdsResourceType* type;
|
193
|
+
std::string type_url;
|
194
|
+
std::string version;
|
195
|
+
std::string nonce;
|
196
|
+
std::vector<std::string> errors;
|
197
|
+
std::map<std::string /*authority*/, std::set<XdsResourceKey>>
|
198
|
+
resources_seen;
|
199
|
+
bool have_valid_resources = false;
|
200
|
+
};
|
201
|
+
|
202
|
+
explicit AdsResponseParser(AdsCallState* ads_call_state)
|
203
|
+
: ads_call_state_(ads_call_state) {}
|
204
|
+
|
205
|
+
absl::Status ProcessAdsResponseFields(AdsResponseFields fields) override
|
206
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
|
207
|
+
|
208
|
+
void ParseResource(const XdsEncodingContext& context, size_t idx,
|
209
|
+
absl::string_view type_url,
|
210
|
+
absl::string_view serialized_resource) override
|
211
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
|
212
|
+
|
213
|
+
Result TakeResult() { return std::move(result_); }
|
214
|
+
|
215
|
+
private:
|
216
|
+
XdsClient* xds_client() const { return ads_call_state_->xds_client(); }
|
217
|
+
|
218
|
+
AdsCallState* ads_call_state_;
|
219
|
+
const Timestamp update_time_ = ExecCtx::Get()->Now();
|
220
|
+
Result result_;
|
221
|
+
};
|
222
|
+
|
223
|
+
class ResourceTimer : public InternallyRefCounted<ResourceTimer> {
|
146
224
|
public:
|
147
|
-
|
148
|
-
|
149
|
-
: type_url_(type_url),
|
150
|
-
name_(name),
|
151
|
-
sent_initial_request_(sent_initial_request) {
|
225
|
+
ResourceTimer(const XdsResourceType* type, const XdsResourceName& name)
|
226
|
+
: type_(type), name_(name) {
|
152
227
|
GRPC_CLOSURE_INIT(&timer_callback_, OnTimer, this,
|
153
228
|
grpc_schedule_on_exec_ctx);
|
154
229
|
}
|
155
230
|
|
156
231
|
void Orphan() override {
|
157
|
-
|
232
|
+
MaybeCancelTimer();
|
158
233
|
Unref(DEBUG_LOCATION, "Orphan");
|
159
234
|
}
|
160
235
|
|
161
|
-
void
|
162
|
-
if (
|
163
|
-
|
236
|
+
void MaybeStartTimer(RefCountedPtr<AdsCallState> ads_calld) {
|
237
|
+
if (timer_started_) return;
|
238
|
+
timer_started_ = true;
|
164
239
|
ads_calld_ = std::move(ads_calld);
|
165
240
|
Ref(DEBUG_LOCATION, "timer").release();
|
166
241
|
timer_pending_ = true;
|
@@ -170,7 +245,7 @@ class XdsClient::ChannelState::AdsCallState
|
|
170
245
|
&timer_callback_);
|
171
246
|
}
|
172
247
|
|
173
|
-
void
|
248
|
+
void MaybeCancelTimer() {
|
174
249
|
if (timer_pending_) {
|
175
250
|
grpc_timer_cancel(&timer_);
|
176
251
|
timer_pending_ = false;
|
@@ -178,68 +253,51 @@ class XdsClient::ChannelState::AdsCallState
|
|
178
253
|
}
|
179
254
|
|
180
255
|
private:
|
181
|
-
static void OnTimer(void* arg,
|
182
|
-
|
256
|
+
static void OnTimer(void* arg, grpc_error_handle error) {
|
257
|
+
ResourceTimer* self = static_cast<ResourceTimer*>(arg);
|
183
258
|
{
|
184
259
|
MutexLock lock(&self->ads_calld_->xds_client()->mu_);
|
185
260
|
self->OnTimerLocked(GRPC_ERROR_REF(error));
|
186
261
|
}
|
262
|
+
self->ads_calld_->xds_client()->work_serializer_.DrainQueue();
|
187
263
|
self->ads_calld_.reset();
|
188
264
|
self->Unref(DEBUG_LOCATION, "timer");
|
189
265
|
}
|
190
266
|
|
191
|
-
void OnTimerLocked(
|
267
|
+
void OnTimerLocked(grpc_error_handle error)
|
268
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_) {
|
192
269
|
if (error == GRPC_ERROR_NONE && timer_pending_) {
|
193
270
|
timer_pending_ = false;
|
194
|
-
|
195
|
-
absl::StrFormat(
|
271
|
+
grpc_error_handle watcher_error =
|
272
|
+
GRPC_ERROR_CREATE_FROM_CPP_STRING(absl::StrFormat(
|
196
273
|
"timeout obtaining resource {type=%s name=%s} from xds server",
|
197
|
-
|
198
|
-
|
274
|
+
type_->type_url(),
|
275
|
+
XdsClient::ConstructFullXdsResourceName(
|
276
|
+
name_.authority, type_->type_url(), name_.key)));
|
199
277
|
watcher_error = grpc_error_set_int(
|
200
278
|
watcher_error, GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE);
|
201
279
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
202
|
-
gpr_log(GPR_INFO, "[xds_client %p] %s",
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
ListenerState& state = ads_calld_->xds_client()->listener_map_[name_];
|
207
|
-
state.meta.client_status = XdsApi::ResourceMetadata::DOES_NOT_EXIST;
|
208
|
-
for (const auto& p : state.watchers) {
|
209
|
-
p.first->OnError(GRPC_ERROR_REF(watcher_error));
|
210
|
-
}
|
211
|
-
} else if (type_url_ == XdsApi::kRdsTypeUrl) {
|
212
|
-
RouteConfigState& state =
|
213
|
-
ads_calld_->xds_client()->route_config_map_[name_];
|
214
|
-
state.meta.client_status = XdsApi::ResourceMetadata::DOES_NOT_EXIST;
|
215
|
-
for (const auto& p : state.watchers) {
|
216
|
-
p.first->OnError(GRPC_ERROR_REF(watcher_error));
|
217
|
-
}
|
218
|
-
} else if (type_url_ == XdsApi::kCdsTypeUrl) {
|
219
|
-
ClusterState& state = ads_calld_->xds_client()->cluster_map_[name_];
|
220
|
-
state.meta.client_status = XdsApi::ResourceMetadata::DOES_NOT_EXIST;
|
221
|
-
for (const auto& p : state.watchers) {
|
222
|
-
p.first->OnError(GRPC_ERROR_REF(watcher_error));
|
223
|
-
}
|
224
|
-
} else if (type_url_ == XdsApi::kEdsTypeUrl) {
|
225
|
-
EndpointState& state = ads_calld_->xds_client()->endpoint_map_[name_];
|
226
|
-
state.meta.client_status = XdsApi::ResourceMetadata::DOES_NOT_EXIST;
|
227
|
-
for (const auto& p : state.watchers) {
|
228
|
-
p.first->OnError(GRPC_ERROR_REF(watcher_error));
|
229
|
-
}
|
230
|
-
} else {
|
231
|
-
GPR_UNREACHABLE_CODE(return );
|
280
|
+
gpr_log(GPR_INFO, "[xds_client %p] xds server %s: %s",
|
281
|
+
ads_calld_->xds_client(),
|
282
|
+
ads_calld_->chand()->server_.server_uri.c_str(),
|
283
|
+
grpc_error_std_string(watcher_error).c_str());
|
232
284
|
}
|
233
|
-
|
285
|
+
auto& authority_state =
|
286
|
+
ads_calld_->xds_client()->authority_state_map_[name_.authority];
|
287
|
+
ResourceState& state = authority_state.resource_map[type_][name_.key];
|
288
|
+
state.meta.client_status = XdsApi::ResourceMetadata::DOES_NOT_EXIST;
|
289
|
+
Notifier::ScheduleNotifyWatchersOnErrorInWorkSerializer(
|
290
|
+
ads_calld_->xds_client(), state.watchers, watcher_error,
|
291
|
+
DEBUG_LOCATION);
|
234
292
|
}
|
235
293
|
GRPC_ERROR_UNREF(error);
|
236
294
|
}
|
237
295
|
|
238
|
-
const
|
239
|
-
const
|
296
|
+
const XdsResourceType* type_;
|
297
|
+
const XdsResourceName name_;
|
240
298
|
|
241
299
|
RefCountedPtr<AdsCallState> ads_calld_;
|
242
|
-
bool
|
300
|
+
bool timer_started_ = false;
|
243
301
|
bool timer_pending_ = false;
|
244
302
|
grpc_timer timer_;
|
245
303
|
grpc_closure timer_callback_;
|
@@ -250,35 +308,32 @@ class XdsClient::ChannelState::AdsCallState
|
|
250
308
|
|
251
309
|
// Nonce and error for this resource type.
|
252
310
|
std::string nonce;
|
253
|
-
|
311
|
+
grpc_error_handle error = GRPC_ERROR_NONE;
|
254
312
|
|
255
313
|
// Subscribed resources of this type.
|
256
|
-
std::map<std::string /*
|
314
|
+
std::map<std::string /*authority*/,
|
315
|
+
std::map<XdsResourceKey, OrphanablePtr<ResourceTimer>>>
|
257
316
|
subscribed_resources;
|
258
317
|
};
|
259
318
|
|
260
|
-
void SendMessageLocked(const
|
261
|
-
|
262
|
-
void AcceptLdsUpdate(std::string version, grpc_millis update_time,
|
263
|
-
XdsApi::LdsUpdateMap lds_update_map);
|
264
|
-
void AcceptRdsUpdate(std::string version, grpc_millis update_time,
|
265
|
-
XdsApi::RdsUpdateMap rds_update_map);
|
266
|
-
void AcceptCdsUpdate(std::string version, grpc_millis update_time,
|
267
|
-
XdsApi::CdsUpdateMap cds_update_map);
|
268
|
-
void AcceptEdsUpdate(std::string version, grpc_millis update_time,
|
269
|
-
XdsApi::EdsUpdateMap eds_update_map);
|
319
|
+
void SendMessageLocked(const XdsResourceType* type)
|
320
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
|
270
321
|
|
271
|
-
static void OnRequestSent(void* arg,
|
272
|
-
void OnRequestSentLocked(
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
322
|
+
static void OnRequestSent(void* arg, grpc_error_handle error);
|
323
|
+
void OnRequestSentLocked(grpc_error_handle error)
|
324
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
|
325
|
+
static void OnResponseReceived(void* arg, grpc_error_handle error);
|
326
|
+
bool OnResponseReceivedLocked()
|
327
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
|
328
|
+
static void OnStatusReceived(void* arg, grpc_error_handle error);
|
329
|
+
void OnStatusReceivedLocked(grpc_error_handle error)
|
330
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
|
277
331
|
|
278
332
|
bool IsCurrentCallOnChannel() const;
|
279
333
|
|
280
|
-
|
281
|
-
|
334
|
+
// Constructs a list of resource names of a given type for an ADS
|
335
|
+
// request. Also starts the timer for each resource if needed.
|
336
|
+
std::vector<std::string> ResourceNamesForRequest(const XdsResourceType* type);
|
282
337
|
|
283
338
|
// The owning RetryableCall<>.
|
284
339
|
RefCountedPtr<RetryableCall<AdsCallState>> parent_;
|
@@ -307,10 +362,10 @@ class XdsClient::ChannelState::AdsCallState
|
|
307
362
|
grpc_closure on_status_received_;
|
308
363
|
|
309
364
|
// Resource types for which requests need to be sent.
|
310
|
-
std::set<
|
365
|
+
std::set<const XdsResourceType*> buffered_requests_;
|
311
366
|
|
312
367
|
// State for each resource type.
|
313
|
-
std::map<
|
368
|
+
std::map<const XdsResourceType*, ResourceTypeState> state_map_;
|
314
369
|
};
|
315
370
|
|
316
371
|
// Contains an LRS call to the xds server.
|
@@ -334,7 +389,7 @@ class XdsClient::ChannelState::LrsCallState
|
|
334
389
|
// Reports client-side load stats according to a fixed interval.
|
335
390
|
class Reporter : public InternallyRefCounted<Reporter> {
|
336
391
|
public:
|
337
|
-
Reporter(RefCountedPtr<LrsCallState> parent,
|
392
|
+
Reporter(RefCountedPtr<LrsCallState> parent, Duration report_interval)
|
338
393
|
: parent_(std::move(parent)), report_interval_(report_interval) {
|
339
394
|
GRPC_CLOSURE_INIT(&on_next_report_timer_, OnNextReportTimer, this,
|
340
395
|
grpc_schedule_on_exec_ctx);
|
@@ -346,12 +401,15 @@ class XdsClient::ChannelState::LrsCallState
|
|
346
401
|
void Orphan() override;
|
347
402
|
|
348
403
|
private:
|
349
|
-
void ScheduleNextReportLocked()
|
350
|
-
|
351
|
-
|
352
|
-
bool
|
353
|
-
|
354
|
-
bool
|
404
|
+
void ScheduleNextReportLocked()
|
405
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
|
406
|
+
static void OnNextReportTimer(void* arg, grpc_error_handle error);
|
407
|
+
bool OnNextReportTimerLocked(grpc_error_handle error)
|
408
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
|
409
|
+
bool SendReportLocked() ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
|
410
|
+
static void OnReportDone(void* arg, grpc_error_handle error);
|
411
|
+
bool OnReportDoneLocked(grpc_error_handle error)
|
412
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
|
355
413
|
|
356
414
|
bool IsCurrentReporterOnCall() const {
|
357
415
|
return this == parent_->reporter_.get();
|
@@ -362,7 +420,7 @@ class XdsClient::ChannelState::LrsCallState
|
|
362
420
|
RefCountedPtr<LrsCallState> parent_;
|
363
421
|
|
364
422
|
// The load reporting state.
|
365
|
-
const
|
423
|
+
const Duration report_interval_;
|
366
424
|
bool last_report_counters_were_zero_ = false;
|
367
425
|
bool next_report_timer_callback_pending_ = false;
|
368
426
|
grpc_timer next_report_timer_;
|
@@ -370,12 +428,15 @@ class XdsClient::ChannelState::LrsCallState
|
|
370
428
|
grpc_closure on_report_done_;
|
371
429
|
};
|
372
430
|
|
373
|
-
static void OnInitialRequestSent(void* arg,
|
374
|
-
void OnInitialRequestSentLocked()
|
375
|
-
|
376
|
-
|
377
|
-
|
378
|
-
|
431
|
+
static void OnInitialRequestSent(void* arg, grpc_error_handle error);
|
432
|
+
void OnInitialRequestSentLocked()
|
433
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
|
434
|
+
static void OnResponseReceived(void* arg, grpc_error_handle error);
|
435
|
+
bool OnResponseReceivedLocked()
|
436
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
|
437
|
+
static void OnStatusReceived(void* arg, grpc_error_handle error);
|
438
|
+
void OnStatusReceivedLocked(grpc_error_handle error)
|
439
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
|
379
440
|
|
380
441
|
bool IsCurrentCallOnChannel() const;
|
381
442
|
|
@@ -406,7 +467,7 @@ class XdsClient::ChannelState::LrsCallState
|
|
406
467
|
// Load reporting state.
|
407
468
|
bool send_all_clusters_ = false;
|
408
469
|
std::set<std::string> cluster_names_; // Asked for by the LRS server.
|
409
|
-
|
470
|
+
Duration load_reporting_interval_;
|
410
471
|
OrphanablePtr<Reporter> reporter_;
|
411
472
|
};
|
412
473
|
|
@@ -417,27 +478,32 @@ class XdsClient::ChannelState::LrsCallState
|
|
417
478
|
class XdsClient::ChannelState::StateWatcher
|
418
479
|
: public AsyncConnectivityStateWatcherInterface {
|
419
480
|
public:
|
420
|
-
explicit StateWatcher(
|
481
|
+
explicit StateWatcher(WeakRefCountedPtr<ChannelState> parent)
|
421
482
|
: parent_(std::move(parent)) {}
|
422
483
|
|
423
484
|
private:
|
424
485
|
void OnConnectivityStateChange(grpc_connectivity_state new_state,
|
425
486
|
const absl::Status& status) override {
|
426
|
-
|
427
|
-
|
428
|
-
|
429
|
-
|
430
|
-
|
431
|
-
|
432
|
-
|
433
|
-
|
434
|
-
|
435
|
-
|
436
|
-
|
487
|
+
{
|
488
|
+
MutexLock lock(&parent_->xds_client_->mu_);
|
489
|
+
if (!parent_->shutting_down_ &&
|
490
|
+
new_state == GRPC_CHANNEL_TRANSIENT_FAILURE) {
|
491
|
+
// In TRANSIENT_FAILURE. Notify all watchers of error.
|
492
|
+
gpr_log(GPR_INFO,
|
493
|
+
"[xds_client %p] xds channel for server %s in "
|
494
|
+
"state TRANSIENT_FAILURE: %s",
|
495
|
+
parent_->xds_client(), parent_->server_.server_uri.c_str(),
|
496
|
+
status.ToString().c_str());
|
497
|
+
parent_->xds_client_->NotifyOnErrorLocked(
|
498
|
+
GRPC_ERROR_CREATE_FROM_CPP_STRING(absl::StrCat(
|
499
|
+
"xds channel in TRANSIENT_FAILURE, connectivity error: ",
|
500
|
+
status.ToString())));
|
501
|
+
}
|
437
502
|
}
|
503
|
+
parent_->xds_client()->work_serializer_.DrainQueue();
|
438
504
|
}
|
439
505
|
|
440
|
-
|
506
|
+
WeakRefCountedPtr<ChannelState> parent_;
|
441
507
|
};
|
442
508
|
|
443
509
|
//
|
@@ -446,33 +512,20 @@ class XdsClient::ChannelState::StateWatcher
|
|
446
512
|
|
447
513
|
namespace {
|
448
514
|
|
449
|
-
grpc_channel* CreateXdsChannel(
|
450
|
-
|
451
|
-
absl::InlinedVector<grpc_arg, 2> args_to_add = {
|
452
|
-
grpc_channel_arg_integer_create(
|
453
|
-
const_cast<char*>(GRPC_ARG_KEEPALIVE_TIME_MS),
|
454
|
-
5 * 60 * GPR_MS_PER_SEC),
|
455
|
-
grpc_channel_arg_integer_create(
|
456
|
-
const_cast<char*>(GRPC_ARG_CHANNELZ_IS_INTERNAL_CHANNEL), 1),
|
457
|
-
};
|
458
|
-
grpc_channel_args* new_args = grpc_channel_args_copy_and_add(
|
459
|
-
g_channel_args, args_to_add.data(), args_to_add.size());
|
460
|
-
// Create channel creds.
|
515
|
+
grpc_channel* CreateXdsChannel(grpc_channel_args* args,
|
516
|
+
const XdsBootstrap::XdsServer& server) {
|
461
517
|
RefCountedPtr<grpc_channel_credentials> channel_creds =
|
462
|
-
|
463
|
-
|
464
|
-
|
465
|
-
|
466
|
-
channel_creds.get(), server.server_uri.c_str(), new_args, nullptr);
|
467
|
-
grpc_channel_args_destroy(new_args);
|
468
|
-
return channel;
|
518
|
+
CoreConfiguration::Get().channel_creds_registry().CreateChannelCreds(
|
519
|
+
server.channel_creds_type, server.channel_creds_config);
|
520
|
+
return grpc_channel_create(server.server_uri.c_str(), channel_creds.get(),
|
521
|
+
args);
|
469
522
|
}
|
470
523
|
|
471
524
|
} // namespace
|
472
525
|
|
473
526
|
XdsClient::ChannelState::ChannelState(WeakRefCountedPtr<XdsClient> xds_client,
|
474
527
|
const XdsBootstrap::XdsServer& server)
|
475
|
-
:
|
528
|
+
: DualRefCounted<ChannelState>(
|
476
529
|
GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_refcount_trace)
|
477
530
|
? "ChannelState"
|
478
531
|
: nullptr),
|
@@ -482,26 +535,33 @@ XdsClient::ChannelState::ChannelState(WeakRefCountedPtr<XdsClient> xds_client,
|
|
482
535
|
gpr_log(GPR_INFO, "[xds_client %p] creating channel to %s",
|
483
536
|
xds_client_.get(), server.server_uri.c_str());
|
484
537
|
}
|
485
|
-
channel_ = CreateXdsChannel(server);
|
538
|
+
channel_ = CreateXdsChannel(xds_client_->args_, server);
|
486
539
|
GPR_ASSERT(channel_ != nullptr);
|
487
540
|
StartConnectivityWatchLocked();
|
488
541
|
}
|
489
542
|
|
490
543
|
XdsClient::ChannelState::~ChannelState() {
|
491
544
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
492
|
-
gpr_log(GPR_INFO, "[xds_client %p]
|
493
|
-
this);
|
545
|
+
gpr_log(GPR_INFO, "[xds_client %p] destroying xds channel %p for server %s",
|
546
|
+
xds_client(), this, server_.server_uri.c_str());
|
494
547
|
}
|
495
548
|
grpc_channel_destroy(channel_);
|
496
549
|
xds_client_.reset(DEBUG_LOCATION, "ChannelState");
|
497
550
|
}
|
498
551
|
|
499
|
-
|
552
|
+
// This method should only ever be called when holding the lock, but we can't
|
553
|
+
// use a ABSL_EXCLUSIVE_LOCKS_REQUIRED annotation, because Orphan() will be
|
554
|
+
// called from DualRefCounted::Unref, which cannot have a lock annotation for a
|
555
|
+
// lock in this subclass.
|
556
|
+
void XdsClient::ChannelState::Orphan() ABSL_NO_THREAD_SAFETY_ANALYSIS {
|
500
557
|
shutting_down_ = true;
|
501
558
|
CancelConnectivityWatchLocked();
|
559
|
+
// At this time, all strong refs are removed, remove from channel map to
|
560
|
+
// prevent subsequent subscription from trying to use this ChannelState as it
|
561
|
+
// is shutting down.
|
562
|
+
xds_client_->xds_server_channel_map_.erase(server_);
|
502
563
|
ads_calld_.reset();
|
503
564
|
lrs_calld_.reset();
|
504
|
-
Unref(DEBUG_LOCATION, "ChannelState+orphaned");
|
505
565
|
}
|
506
566
|
|
507
567
|
XdsClient::ChannelState::AdsCallState* XdsClient::ChannelState::ads_calld()
|
@@ -520,35 +580,54 @@ bool XdsClient::ChannelState::HasActiveAdsCall() const {
|
|
520
580
|
|
521
581
|
void XdsClient::ChannelState::MaybeStartLrsCall() {
|
522
582
|
if (lrs_calld_ != nullptr) return;
|
523
|
-
lrs_calld_.reset(
|
524
|
-
|
583
|
+
lrs_calld_.reset(new RetryableCall<LrsCallState>(
|
584
|
+
WeakRef(DEBUG_LOCATION, "ChannelState+lrs")));
|
585
|
+
}
|
586
|
+
|
587
|
+
void XdsClient::ChannelState::StopLrsCallLocked() {
|
588
|
+
xds_client_->xds_load_report_server_map_.erase(server_);
|
589
|
+
lrs_calld_.reset();
|
525
590
|
}
|
526
591
|
|
527
|
-
|
592
|
+
namespace {
|
593
|
+
|
594
|
+
bool IsLameChannel(grpc_channel* channel) {
|
595
|
+
grpc_channel_element* elem =
|
596
|
+
grpc_channel_stack_last_element(grpc_channel_get_channel_stack(channel));
|
597
|
+
return elem->filter == &grpc_lame_filter;
|
598
|
+
}
|
599
|
+
|
600
|
+
} // namespace
|
528
601
|
|
529
602
|
void XdsClient::ChannelState::StartConnectivityWatchLocked() {
|
530
|
-
|
531
|
-
|
532
|
-
|
533
|
-
|
534
|
-
|
535
|
-
|
603
|
+
if (IsLameChannel(channel_)) {
|
604
|
+
xds_client()->NotifyOnErrorLocked(
|
605
|
+
GRPC_ERROR_CREATE_FROM_STATIC_STRING("xds client has a lame channel"));
|
606
|
+
return;
|
607
|
+
}
|
608
|
+
ClientChannel* client_channel = ClientChannel::GetFromChannel(channel_);
|
609
|
+
GPR_ASSERT(client_channel != nullptr);
|
610
|
+
watcher_ = new StateWatcher(WeakRef(DEBUG_LOCATION, "ChannelState+watch"));
|
611
|
+
client_channel->AddConnectivityWatcher(
|
612
|
+
GRPC_CHANNEL_IDLE,
|
536
613
|
OrphanablePtr<AsyncConnectivityStateWatcherInterface>(watcher_));
|
537
614
|
}
|
538
615
|
|
539
616
|
void XdsClient::ChannelState::CancelConnectivityWatchLocked() {
|
540
|
-
|
541
|
-
|
542
|
-
|
543
|
-
|
617
|
+
if (IsLameChannel(channel_)) {
|
618
|
+
return;
|
619
|
+
}
|
620
|
+
ClientChannel* client_channel = ClientChannel::GetFromChannel(channel_);
|
621
|
+
GPR_ASSERT(client_channel != nullptr);
|
622
|
+
client_channel->RemoveConnectivityWatcher(watcher_);
|
544
623
|
}
|
545
624
|
|
546
|
-
void XdsClient::ChannelState::
|
547
|
-
|
625
|
+
void XdsClient::ChannelState::SubscribeLocked(const XdsResourceType* type,
|
626
|
+
const XdsResourceName& name) {
|
548
627
|
if (ads_calld_ == nullptr) {
|
549
628
|
// Start the ADS call if this is the first request.
|
550
629
|
ads_calld_.reset(new RetryableCall<AdsCallState>(
|
551
|
-
|
630
|
+
WeakRef(DEBUG_LOCATION, "ChannelState+ads")));
|
552
631
|
// Note: AdsCallState's ctor will automatically subscribe to all
|
553
632
|
// resources that the XdsClient already has watchers for, so we can
|
554
633
|
// return here.
|
@@ -558,17 +637,19 @@ void XdsClient::ChannelState::Subscribe(const std::string& type_url,
|
|
558
637
|
// because when the call is restarted it will resend all necessary requests.
|
559
638
|
if (ads_calld() == nullptr) return;
|
560
639
|
// Subscribe to this resource if the ADS call is active.
|
561
|
-
ads_calld()->
|
640
|
+
ads_calld()->SubscribeLocked(type, name);
|
562
641
|
}
|
563
642
|
|
564
|
-
void XdsClient::ChannelState::
|
565
|
-
|
566
|
-
|
643
|
+
void XdsClient::ChannelState::UnsubscribeLocked(const XdsResourceType* type,
|
644
|
+
const XdsResourceName& name,
|
645
|
+
bool delay_unsubscription) {
|
567
646
|
if (ads_calld_ != nullptr) {
|
568
647
|
auto* calld = ads_calld_->calld();
|
569
648
|
if (calld != nullptr) {
|
570
|
-
calld->
|
571
|
-
if (!calld->HasSubscribedResources())
|
649
|
+
calld->UnsubscribeLocked(type, name, delay_unsubscription);
|
650
|
+
if (!calld->HasSubscribedResources()) {
|
651
|
+
ads_calld_.reset();
|
652
|
+
}
|
572
653
|
}
|
573
654
|
}
|
574
655
|
}
|
@@ -579,15 +660,15 @@ void XdsClient::ChannelState::Unsubscribe(const std::string& type_url,
|
|
579
660
|
|
580
661
|
template <typename T>
|
581
662
|
XdsClient::ChannelState::RetryableCall<T>::RetryableCall(
|
582
|
-
|
663
|
+
WeakRefCountedPtr<ChannelState> chand)
|
583
664
|
: chand_(std::move(chand)),
|
584
|
-
backoff_(
|
585
|
-
|
586
|
-
|
587
|
-
|
588
|
-
|
589
|
-
|
590
|
-
|
665
|
+
backoff_(BackOff::Options()
|
666
|
+
.set_initial_backoff(Duration::Seconds(
|
667
|
+
GRPC_XDS_INITIAL_CONNECT_BACKOFF_SECONDS))
|
668
|
+
.set_multiplier(GRPC_XDS_RECONNECT_BACKOFF_MULTIPLIER)
|
669
|
+
.set_jitter(GRPC_XDS_RECONNECT_JITTER)
|
670
|
+
.set_max_backoff(Duration::Seconds(
|
671
|
+
GRPC_XDS_RECONNECT_MAX_BACKOFF_SECONDS))) {
|
591
672
|
// Closure Initialization
|
592
673
|
GRPC_CLOSURE_INIT(&on_retry_timer_, OnRetryTimer, this,
|
593
674
|
grpc_schedule_on_exec_ctx);
|
@@ -623,10 +704,10 @@ void XdsClient::ChannelState::RetryableCall<T>::StartNewCallLocked() {
|
|
623
704
|
GPR_ASSERT(chand_->channel_ != nullptr);
|
624
705
|
GPR_ASSERT(calld_ == nullptr);
|
625
706
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
626
|
-
gpr_log(
|
627
|
-
|
628
|
-
|
629
|
-
|
707
|
+
gpr_log(
|
708
|
+
GPR_INFO,
|
709
|
+
"[xds_client %p] xds server %s: start new call from retryable call %p",
|
710
|
+
chand()->xds_client(), chand()->server_.server_uri.c_str(), this);
|
630
711
|
}
|
631
712
|
calld_ = MakeOrphanable<T>(
|
632
713
|
this->Ref(DEBUG_LOCATION, "RetryableCall+start_new_call"));
|
@@ -635,13 +716,15 @@ void XdsClient::ChannelState::RetryableCall<T>::StartNewCallLocked() {
|
|
635
716
|
template <typename T>
|
636
717
|
void XdsClient::ChannelState::RetryableCall<T>::StartRetryTimerLocked() {
|
637
718
|
if (shutting_down_) return;
|
638
|
-
const
|
719
|
+
const Timestamp next_attempt_time = backoff_.NextAttemptTime();
|
639
720
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
640
|
-
|
721
|
+
Duration timeout =
|
722
|
+
std::max(next_attempt_time - ExecCtx::Get()->Now(), Duration::Zero());
|
641
723
|
gpr_log(GPR_INFO,
|
642
|
-
"[xds_client %p]
|
724
|
+
"[xds_client %p] xds server %s: call attempt failed; "
|
643
725
|
"retry timer will fire in %" PRId64 "ms.",
|
644
|
-
chand()->xds_client(), chand(),
|
726
|
+
chand()->xds_client(), chand()->server_.server_uri.c_str(),
|
727
|
+
timeout.millis());
|
645
728
|
}
|
646
729
|
this->Ref(DEBUG_LOCATION, "RetryableCall+retry_timer_start").release();
|
647
730
|
grpc_timer_init(&retry_timer_, next_attempt_time, &on_retry_timer_);
|
@@ -650,7 +733,7 @@ void XdsClient::ChannelState::RetryableCall<T>::StartRetryTimerLocked() {
|
|
650
733
|
|
651
734
|
template <typename T>
|
652
735
|
void XdsClient::ChannelState::RetryableCall<T>::OnRetryTimer(
|
653
|
-
void* arg,
|
736
|
+
void* arg, grpc_error_handle error) {
|
654
737
|
RetryableCall* calld = static_cast<RetryableCall*>(arg);
|
655
738
|
{
|
656
739
|
MutexLock lock(&calld->chand_->xds_client()->mu_);
|
@@ -661,20 +744,186 @@ void XdsClient::ChannelState::RetryableCall<T>::OnRetryTimer(
|
|
661
744
|
|
662
745
|
template <typename T>
|
663
746
|
void XdsClient::ChannelState::RetryableCall<T>::OnRetryTimerLocked(
|
664
|
-
|
747
|
+
grpc_error_handle error) {
|
665
748
|
retry_timer_callback_pending_ = false;
|
666
749
|
if (!shutting_down_ && error == GRPC_ERROR_NONE) {
|
667
750
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
668
|
-
gpr_log(
|
669
|
-
|
670
|
-
|
671
|
-
|
751
|
+
gpr_log(GPR_INFO,
|
752
|
+
"[xds_client %p] xds server %s: retry timer fired (retryable "
|
753
|
+
"call: %p)",
|
754
|
+
chand()->xds_client(), chand()->server_.server_uri.c_str(), this);
|
672
755
|
}
|
673
756
|
StartNewCallLocked();
|
674
757
|
}
|
675
758
|
GRPC_ERROR_UNREF(error);
|
676
759
|
}
|
677
760
|
|
761
|
+
//
|
762
|
+
// XdsClient::ChannelState::AdsCallState::AdsResponseParser
|
763
|
+
//
|
764
|
+
|
765
|
+
absl::Status XdsClient::ChannelState::AdsCallState::AdsResponseParser::
|
766
|
+
ProcessAdsResponseFields(AdsResponseFields fields) {
|
767
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
768
|
+
gpr_log(
|
769
|
+
GPR_INFO,
|
770
|
+
"[xds_client %p] xds server %s: received ADS response: type_url=%s, "
|
771
|
+
"version=%s, nonce=%s, num_resources=%" PRIuPTR,
|
772
|
+
ads_call_state_->xds_client(),
|
773
|
+
ads_call_state_->chand()->server_.server_uri.c_str(),
|
774
|
+
fields.type_url.c_str(), fields.version.c_str(), fields.nonce.c_str(),
|
775
|
+
fields.num_resources);
|
776
|
+
}
|
777
|
+
result_.type =
|
778
|
+
ads_call_state_->xds_client()->GetResourceTypeLocked(fields.type_url);
|
779
|
+
if (result_.type == nullptr) {
|
780
|
+
return absl::InvalidArgumentError(
|
781
|
+
absl::StrCat("unknown resource type ", fields.type_url));
|
782
|
+
}
|
783
|
+
result_.type_url = std::move(fields.type_url);
|
784
|
+
result_.version = std::move(fields.version);
|
785
|
+
result_.nonce = std::move(fields.nonce);
|
786
|
+
return absl::OkStatus();
|
787
|
+
}
|
788
|
+
|
789
|
+
namespace {
|
790
|
+
|
791
|
+
// Build a resource metadata struct for ADS result accepting methods and CSDS.
|
792
|
+
XdsApi::ResourceMetadata CreateResourceMetadataAcked(
|
793
|
+
std::string serialized_proto, std::string version, Timestamp update_time) {
|
794
|
+
XdsApi::ResourceMetadata resource_metadata;
|
795
|
+
resource_metadata.serialized_proto = std::move(serialized_proto);
|
796
|
+
resource_metadata.update_time = update_time;
|
797
|
+
resource_metadata.version = std::move(version);
|
798
|
+
resource_metadata.client_status = XdsApi::ResourceMetadata::ACKED;
|
799
|
+
return resource_metadata;
|
800
|
+
}
|
801
|
+
|
802
|
+
// Update resource_metadata for NACK.
|
803
|
+
void UpdateResourceMetadataNacked(const std::string& version,
|
804
|
+
const std::string& details,
|
805
|
+
Timestamp update_time,
|
806
|
+
XdsApi::ResourceMetadata* resource_metadata) {
|
807
|
+
resource_metadata->client_status = XdsApi::ResourceMetadata::NACKED;
|
808
|
+
resource_metadata->failed_version = version;
|
809
|
+
resource_metadata->failed_details = details;
|
810
|
+
resource_metadata->failed_update_time = update_time;
|
811
|
+
}
|
812
|
+
|
813
|
+
} // namespace
|
814
|
+
|
815
|
+
void XdsClient::ChannelState::AdsCallState::AdsResponseParser::ParseResource(
|
816
|
+
const XdsEncodingContext& context, size_t idx, absl::string_view type_url,
|
817
|
+
absl::string_view serialized_resource) {
|
818
|
+
// Check the type_url of the resource.
|
819
|
+
bool is_v2 = false;
|
820
|
+
if (!result_.type->IsType(type_url, &is_v2)) {
|
821
|
+
result_.errors.emplace_back(
|
822
|
+
absl::StrCat("resource index ", idx, ": incorrect resource type ",
|
823
|
+
type_url, " (should be ", result_.type_url, ")"));
|
824
|
+
return;
|
825
|
+
}
|
826
|
+
// Parse the resource.
|
827
|
+
absl::StatusOr<XdsResourceType::DecodeResult> result =
|
828
|
+
result_.type->Decode(context, serialized_resource, is_v2);
|
829
|
+
if (!result.ok()) {
|
830
|
+
result_.errors.emplace_back(
|
831
|
+
absl::StrCat("resource index ", idx, ": ", result.status().ToString()));
|
832
|
+
return;
|
833
|
+
}
|
834
|
+
// Check the resource name.
|
835
|
+
auto resource_name =
|
836
|
+
XdsClient::ParseXdsResourceName(result->name, result_.type);
|
837
|
+
if (!resource_name.ok()) {
|
838
|
+
result_.errors.emplace_back(absl::StrCat(
|
839
|
+
"resource index ", idx, ": Cannot parse xDS resource name \"",
|
840
|
+
result->name, "\""));
|
841
|
+
return;
|
842
|
+
}
|
843
|
+
// Cancel resource-does-not-exist timer, if needed.
|
844
|
+
auto timer_it = ads_call_state_->state_map_.find(result_.type);
|
845
|
+
if (timer_it != ads_call_state_->state_map_.end()) {
|
846
|
+
auto it =
|
847
|
+
timer_it->second.subscribed_resources.find(resource_name->authority);
|
848
|
+
if (it != timer_it->second.subscribed_resources.end()) {
|
849
|
+
auto res_it = it->second.find(resource_name->key);
|
850
|
+
if (res_it != it->second.end()) {
|
851
|
+
res_it->second->MaybeCancelTimer();
|
852
|
+
}
|
853
|
+
}
|
854
|
+
}
|
855
|
+
// Lookup the authority in the cache.
|
856
|
+
auto authority_it =
|
857
|
+
xds_client()->authority_state_map_.find(resource_name->authority);
|
858
|
+
if (authority_it == xds_client()->authority_state_map_.end()) {
|
859
|
+
return; // Skip resource -- we don't have a subscription for it.
|
860
|
+
}
|
861
|
+
// Found authority, so look up type.
|
862
|
+
AuthorityState& authority_state = authority_it->second;
|
863
|
+
auto type_it = authority_state.resource_map.find(result_.type);
|
864
|
+
if (type_it == authority_state.resource_map.end()) {
|
865
|
+
return; // Skip resource -- we don't have a subscription for it.
|
866
|
+
}
|
867
|
+
auto& type_map = type_it->second;
|
868
|
+
// Found type, so look up resource key.
|
869
|
+
auto it = type_map.find(resource_name->key);
|
870
|
+
if (it == type_map.end()) {
|
871
|
+
return; // Skip resource -- we don't have a subscription for it.
|
872
|
+
}
|
873
|
+
ResourceState& resource_state = it->second;
|
874
|
+
// If needed, record that we've seen this resource.
|
875
|
+
if (result_.type->AllResourcesRequiredInSotW()) {
|
876
|
+
result_.resources_seen[resource_name->authority].insert(resource_name->key);
|
877
|
+
}
|
878
|
+
// Update resource state based on whether the resource is valid.
|
879
|
+
if (!result->resource.ok()) {
|
880
|
+
result_.errors.emplace_back(absl::StrCat(
|
881
|
+
"resource index ", idx, ": ", result->name,
|
882
|
+
": validation error: ", result->resource.status().ToString()));
|
883
|
+
Notifier::ScheduleNotifyWatchersOnErrorInWorkSerializer(
|
884
|
+
xds_client(), resource_state.watchers,
|
885
|
+
grpc_error_set_int(
|
886
|
+
GRPC_ERROR_CREATE_FROM_CPP_STRING(absl::StrCat(
|
887
|
+
"invalid resource: ", result->resource.status().ToString())),
|
888
|
+
GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE),
|
889
|
+
DEBUG_LOCATION);
|
890
|
+
UpdateResourceMetadataNacked(result_.version,
|
891
|
+
result->resource.status().ToString(),
|
892
|
+
update_time_, &resource_state.meta);
|
893
|
+
return;
|
894
|
+
}
|
895
|
+
// Resource is valid.
|
896
|
+
result_.have_valid_resources = true;
|
897
|
+
// If it didn't change, ignore it.
|
898
|
+
if (resource_state.resource != nullptr &&
|
899
|
+
result_.type->ResourcesEqual(resource_state.resource.get(),
|
900
|
+
result->resource->get())) {
|
901
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
902
|
+
gpr_log(GPR_INFO,
|
903
|
+
"[xds_client %p] %s resource %s identical to current, ignoring.",
|
904
|
+
xds_client(), result_.type_url.c_str(), result->name.c_str());
|
905
|
+
}
|
906
|
+
return;
|
907
|
+
}
|
908
|
+
// Update the resource state.
|
909
|
+
resource_state.resource = std::move(*result->resource);
|
910
|
+
resource_state.meta = CreateResourceMetadataAcked(
|
911
|
+
std::string(serialized_resource), result_.version, update_time_);
|
912
|
+
// Notify watchers.
|
913
|
+
auto& watchers_list = resource_state.watchers;
|
914
|
+
auto* value =
|
915
|
+
result_.type->CopyResource(resource_state.resource.get()).release();
|
916
|
+
xds_client()->work_serializer_.Schedule(
|
917
|
+
[watchers_list, value]()
|
918
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&xds_client()->work_serializer_) {
|
919
|
+
for (const auto& p : watchers_list) {
|
920
|
+
p.first->OnGenericResourceChanged(value);
|
921
|
+
}
|
922
|
+
delete value;
|
923
|
+
},
|
924
|
+
DEBUG_LOCATION);
|
925
|
+
}
|
926
|
+
|
678
927
|
//
|
679
928
|
// XdsClient::ChannelState::AdsCallState
|
680
929
|
//
|
@@ -691,14 +940,17 @@ XdsClient::ChannelState::AdsCallState::AdsCallState(
|
|
691
940
|
// the polling entities from client_channel.
|
692
941
|
GPR_ASSERT(xds_client() != nullptr);
|
693
942
|
// Create a call with the specified method name.
|
694
|
-
const
|
943
|
+
const char* method =
|
695
944
|
chand()->server_.ShouldUseV3()
|
696
|
-
?
|
697
|
-
|
945
|
+
? "/envoy.service.discovery.v3.AggregatedDiscoveryService/"
|
946
|
+
"StreamAggregatedResources"
|
947
|
+
: "/envoy.service.discovery.v2.AggregatedDiscoveryService/"
|
948
|
+
"StreamAggregatedResources";
|
698
949
|
call_ = grpc_channel_create_pollset_set_call(
|
699
950
|
chand()->channel_, nullptr, GRPC_PROPAGATE_DEFAULTS,
|
700
|
-
xds_client()->interested_parties_,
|
701
|
-
|
951
|
+
xds_client()->interested_parties_,
|
952
|
+
StaticSlice::FromStaticString(method).c_slice(), nullptr,
|
953
|
+
Timestamp::InfFuture(), nullptr);
|
702
954
|
GPR_ASSERT(call_ != nullptr);
|
703
955
|
// Init data associated with the call.
|
704
956
|
grpc_metadata_array_init(&initial_metadata_recv_);
|
@@ -706,9 +958,9 @@ XdsClient::ChannelState::AdsCallState::AdsCallState(
|
|
706
958
|
// Start the call.
|
707
959
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
708
960
|
gpr_log(GPR_INFO,
|
709
|
-
"[xds_client %p]
|
710
|
-
"call: %p)",
|
711
|
-
xds_client(), chand(), this, call_);
|
961
|
+
"[xds_client %p] xds server %s: starting ADS call "
|
962
|
+
"(calld: %p, call: %p)",
|
963
|
+
xds_client(), chand()->server_.server_uri.c_str(), this, call_);
|
712
964
|
}
|
713
965
|
// Create the ops.
|
714
966
|
grpc_call_error call_error;
|
@@ -728,17 +980,17 @@ XdsClient::ChannelState::AdsCallState::AdsCallState(
|
|
728
980
|
// Op: send request message.
|
729
981
|
GRPC_CLOSURE_INIT(&on_request_sent_, OnRequestSent, this,
|
730
982
|
grpc_schedule_on_exec_ctx);
|
731
|
-
for (const auto&
|
732
|
-
|
733
|
-
|
734
|
-
|
735
|
-
|
736
|
-
|
737
|
-
|
738
|
-
|
739
|
-
|
740
|
-
|
741
|
-
|
983
|
+
for (const auto& a : xds_client()->authority_state_map_) {
|
984
|
+
const std::string& authority = a.first;
|
985
|
+
// Skip authorities that are not using this xDS channel.
|
986
|
+
if (a.second.channel_state != chand()) continue;
|
987
|
+
for (const auto& t : a.second.resource_map) {
|
988
|
+
const XdsResourceType* type = t.first;
|
989
|
+
for (const auto& r : t.second) {
|
990
|
+
const XdsResourceKey& resource_key = r.first;
|
991
|
+
SubscribeLocked(type, {authority, resource_key});
|
992
|
+
}
|
993
|
+
}
|
742
994
|
}
|
743
995
|
// Op: recv initial metadata.
|
744
996
|
op = ops;
|
@@ -802,33 +1054,30 @@ void XdsClient::ChannelState::AdsCallState::Orphan() {
|
|
802
1054
|
}
|
803
1055
|
|
804
1056
|
void XdsClient::ChannelState::AdsCallState::SendMessageLocked(
|
805
|
-
const
|
1057
|
+
const XdsResourceType* type)
|
1058
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_) {
|
806
1059
|
// Buffer message sending if an existing message is in flight.
|
807
1060
|
if (send_message_payload_ != nullptr) {
|
808
|
-
buffered_requests_.insert(
|
1061
|
+
buffered_requests_.insert(type);
|
809
1062
|
return;
|
810
1063
|
}
|
811
|
-
auto& state = state_map_[
|
1064
|
+
auto& state = state_map_[type];
|
812
1065
|
grpc_slice request_payload_slice;
|
813
|
-
std::set<absl::string_view> resource_names =
|
814
|
-
ResourceNamesForRequest(type_url);
|
815
1066
|
request_payload_slice = xds_client()->api_.CreateAdsRequest(
|
816
|
-
chand()->server_,
|
817
|
-
|
818
|
-
|
819
|
-
|
820
|
-
|
821
|
-
state_map_.erase(type_url);
|
822
|
-
}
|
1067
|
+
chand()->server_,
|
1068
|
+
chand()->server_.ShouldUseV3() ? type->type_url() : type->v2_type_url(),
|
1069
|
+
chand()->resource_type_version_map_[type], state.nonce,
|
1070
|
+
ResourceNamesForRequest(type), GRPC_ERROR_REF(state.error),
|
1071
|
+
!sent_initial_message_);
|
823
1072
|
sent_initial_message_ = true;
|
824
1073
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
825
1074
|
gpr_log(GPR_INFO,
|
826
|
-
"[xds_client %p] sending ADS request: type=%s
|
827
|
-
"
|
828
|
-
xds_client(),
|
829
|
-
|
830
|
-
|
831
|
-
|
1075
|
+
"[xds_client %p] xds server %s: sending ADS request: type=%s "
|
1076
|
+
"version=%s nonce=%s error=%s",
|
1077
|
+
xds_client(), chand()->server_.server_uri.c_str(),
|
1078
|
+
std::string(type->type_url()).c_str(),
|
1079
|
+
chand()->resource_type_version_map_[type].c_str(),
|
1080
|
+
state.nonce.c_str(), grpc_error_std_string(state.error).c_str());
|
832
1081
|
}
|
833
1082
|
GRPC_ERROR_UNREF(state.error);
|
834
1083
|
state.error = GRPC_ERROR_NONE;
|
@@ -848,27 +1097,33 @@ void XdsClient::ChannelState::AdsCallState::SendMessageLocked(
|
|
848
1097
|
grpc_call_start_batch_and_execute(call_, &op, 1, &on_request_sent_);
|
849
1098
|
if (GPR_UNLIKELY(call_error != GRPC_CALL_OK)) {
|
850
1099
|
gpr_log(GPR_ERROR,
|
851
|
-
"[xds_client %p]
|
852
|
-
|
1100
|
+
"[xds_client %p] xds server %s: error starting ADS send_message "
|
1101
|
+
"batch on calld=%p: call_error=%d",
|
1102
|
+
xds_client(), chand()->server_.server_uri.c_str(), this,
|
1103
|
+
call_error);
|
853
1104
|
GPR_ASSERT(GRPC_CALL_OK == call_error);
|
854
1105
|
}
|
855
1106
|
}
|
856
1107
|
|
857
|
-
void XdsClient::ChannelState::AdsCallState::
|
858
|
-
const
|
859
|
-
auto& state = state_map_[
|
1108
|
+
void XdsClient::ChannelState::AdsCallState::SubscribeLocked(
|
1109
|
+
const XdsResourceType* type, const XdsResourceName& name) {
|
1110
|
+
auto& state = state_map_[type].subscribed_resources[name.authority][name.key];
|
860
1111
|
if (state == nullptr) {
|
861
|
-
state = MakeOrphanable<
|
862
|
-
|
863
|
-
SendMessageLocked(type_url);
|
1112
|
+
state = MakeOrphanable<ResourceTimer>(type, name);
|
1113
|
+
SendMessageLocked(type);
|
864
1114
|
}
|
865
1115
|
}
|
866
1116
|
|
867
|
-
void XdsClient::ChannelState::AdsCallState::
|
868
|
-
const
|
1117
|
+
void XdsClient::ChannelState::AdsCallState::UnsubscribeLocked(
|
1118
|
+
const XdsResourceType* type, const XdsResourceName& name,
|
869
1119
|
bool delay_unsubscription) {
|
870
|
-
state_map_[
|
871
|
-
|
1120
|
+
auto& type_state_map = state_map_[type];
|
1121
|
+
auto& authority_map = type_state_map.subscribed_resources[name.authority];
|
1122
|
+
authority_map.erase(name.key);
|
1123
|
+
if (authority_map.empty()) {
|
1124
|
+
type_state_map.subscribed_resources.erase(name.authority);
|
1125
|
+
}
|
1126
|
+
if (!delay_unsubscription) SendMessageLocked(type);
|
872
1127
|
}
|
873
1128
|
|
874
1129
|
bool XdsClient::ChannelState::AdsCallState::HasSubscribedResources() const {
|
@@ -878,273 +1133,8 @@ bool XdsClient::ChannelState::AdsCallState::HasSubscribedResources() const {
|
|
878
1133
|
return false;
|
879
1134
|
}
|
880
1135
|
|
881
|
-
|
882
|
-
|
883
|
-
// Build a resource metadata struct for ADS result accepting methods and CSDS.
|
884
|
-
XdsApi::ResourceMetadata CreateResourceMetadataAcked(
|
885
|
-
std::string serialized_proto, std::string version,
|
886
|
-
grpc_millis update_time) {
|
887
|
-
XdsApi::ResourceMetadata resource_metadata;
|
888
|
-
resource_metadata.serialized_proto = std::move(serialized_proto);
|
889
|
-
resource_metadata.update_time = update_time;
|
890
|
-
resource_metadata.version = std::move(version);
|
891
|
-
resource_metadata.client_status = XdsApi::ResourceMetadata::ACKED;
|
892
|
-
return resource_metadata;
|
893
|
-
}
|
894
|
-
|
895
|
-
} // namespace
|
896
|
-
|
897
|
-
void XdsClient::ChannelState::AdsCallState::AcceptLdsUpdate(
|
898
|
-
std::string version, grpc_millis update_time,
|
899
|
-
XdsApi::LdsUpdateMap lds_update_map) {
|
900
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
901
|
-
gpr_log(GPR_INFO,
|
902
|
-
"[xds_client %p] LDS update received containing %" PRIuPTR
|
903
|
-
" resources",
|
904
|
-
xds_client(), lds_update_map.size());
|
905
|
-
}
|
906
|
-
auto& lds_state = state_map_[XdsApi::kLdsTypeUrl];
|
907
|
-
std::set<std::string> rds_resource_names_seen;
|
908
|
-
for (auto& p : lds_update_map) {
|
909
|
-
const std::string& listener_name = p.first;
|
910
|
-
XdsApi::LdsUpdate& lds_update = p.second.resource;
|
911
|
-
auto& state = lds_state.subscribed_resources[listener_name];
|
912
|
-
if (state != nullptr) state->Finish();
|
913
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
914
|
-
gpr_log(GPR_INFO, "[xds_client %p] LDS resource %s: %s", xds_client(),
|
915
|
-
listener_name.c_str(), lds_update.ToString().c_str());
|
916
|
-
}
|
917
|
-
// Record the RDS resource names seen.
|
918
|
-
if (!lds_update.http_connection_manager.route_config_name.empty()) {
|
919
|
-
rds_resource_names_seen.insert(
|
920
|
-
lds_update.http_connection_manager.route_config_name);
|
921
|
-
}
|
922
|
-
// Ignore identical update.
|
923
|
-
ListenerState& listener_state = xds_client()->listener_map_[listener_name];
|
924
|
-
if (listener_state.update.has_value() &&
|
925
|
-
*listener_state.update == lds_update) {
|
926
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
927
|
-
gpr_log(GPR_INFO,
|
928
|
-
"[xds_client %p] LDS update for %s identical to current, "
|
929
|
-
"ignoring.",
|
930
|
-
xds_client(), listener_name.c_str());
|
931
|
-
}
|
932
|
-
continue;
|
933
|
-
}
|
934
|
-
// Update the listener state.
|
935
|
-
listener_state.update = std::move(lds_update);
|
936
|
-
listener_state.meta = CreateResourceMetadataAcked(
|
937
|
-
std::move(p.second.serialized_proto), version, update_time);
|
938
|
-
// Notify watchers.
|
939
|
-
for (const auto& p : listener_state.watchers) {
|
940
|
-
p.first->OnListenerChanged(*listener_state.update);
|
941
|
-
}
|
942
|
-
}
|
943
|
-
// For any subscribed resource that is not present in the update,
|
944
|
-
// remove it from the cache and notify watchers that it does not exist.
|
945
|
-
for (const auto& p : lds_state.subscribed_resources) {
|
946
|
-
const std::string& listener_name = p.first;
|
947
|
-
if (lds_update_map.find(listener_name) == lds_update_map.end()) {
|
948
|
-
ListenerState& listener_state =
|
949
|
-
xds_client()->listener_map_[listener_name];
|
950
|
-
// If the resource was newly requested but has not yet been received,
|
951
|
-
// we don't want to generate an error for the watchers, because this LDS
|
952
|
-
// response may be in reaction to an earlier request that did not yet
|
953
|
-
// request the new resource, so its absence from the response does not
|
954
|
-
// necessarily indicate that the resource does not exist.
|
955
|
-
// For that case, we rely on the request timeout instead.
|
956
|
-
if (!listener_state.update.has_value()) continue;
|
957
|
-
listener_state.update.reset();
|
958
|
-
for (const auto& p : listener_state.watchers) {
|
959
|
-
p.first->OnResourceDoesNotExist();
|
960
|
-
}
|
961
|
-
}
|
962
|
-
}
|
963
|
-
// For any RDS resource that is no longer referred to by any LDS
|
964
|
-
// resources, remove it from the cache and notify watchers that it
|
965
|
-
// does not exist.
|
966
|
-
auto& rds_state = state_map_[XdsApi::kRdsTypeUrl];
|
967
|
-
for (const auto& p : rds_state.subscribed_resources) {
|
968
|
-
const std::string& rds_resource_name = p.first;
|
969
|
-
if (rds_resource_names_seen.find(rds_resource_name) ==
|
970
|
-
rds_resource_names_seen.end()) {
|
971
|
-
RouteConfigState& route_config_state =
|
972
|
-
xds_client()->route_config_map_[rds_resource_name];
|
973
|
-
route_config_state.update.reset();
|
974
|
-
for (const auto& p : route_config_state.watchers) {
|
975
|
-
p.first->OnResourceDoesNotExist();
|
976
|
-
}
|
977
|
-
}
|
978
|
-
}
|
979
|
-
}
|
980
|
-
|
981
|
-
void XdsClient::ChannelState::AdsCallState::AcceptRdsUpdate(
|
982
|
-
std::string version, grpc_millis update_time,
|
983
|
-
XdsApi::RdsUpdateMap rds_update_map) {
|
984
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
985
|
-
gpr_log(GPR_INFO,
|
986
|
-
"[xds_client %p] RDS update received containing %" PRIuPTR
|
987
|
-
" resources",
|
988
|
-
xds_client(), rds_update_map.size());
|
989
|
-
}
|
990
|
-
auto& rds_state = state_map_[XdsApi::kRdsTypeUrl];
|
991
|
-
for (auto& p : rds_update_map) {
|
992
|
-
const std::string& route_config_name = p.first;
|
993
|
-
XdsApi::RdsUpdate& rds_update = p.second.resource;
|
994
|
-
auto& state = rds_state.subscribed_resources[route_config_name];
|
995
|
-
if (state != nullptr) state->Finish();
|
996
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
997
|
-
gpr_log(GPR_INFO, "[xds_client %p] RDS resource:\n%s", xds_client(),
|
998
|
-
rds_update.ToString().c_str());
|
999
|
-
}
|
1000
|
-
RouteConfigState& route_config_state =
|
1001
|
-
xds_client()->route_config_map_[route_config_name];
|
1002
|
-
// Ignore identical update.
|
1003
|
-
if (route_config_state.update.has_value() &&
|
1004
|
-
*route_config_state.update == rds_update) {
|
1005
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
1006
|
-
gpr_log(GPR_INFO,
|
1007
|
-
"[xds_client %p] RDS resource identical to current, ignoring",
|
1008
|
-
xds_client());
|
1009
|
-
}
|
1010
|
-
continue;
|
1011
|
-
}
|
1012
|
-
// Update the cache.
|
1013
|
-
route_config_state.update = std::move(rds_update);
|
1014
|
-
route_config_state.meta = CreateResourceMetadataAcked(
|
1015
|
-
std::move(p.second.serialized_proto), version, update_time);
|
1016
|
-
// Notify all watchers.
|
1017
|
-
for (const auto& p : route_config_state.watchers) {
|
1018
|
-
p.first->OnRouteConfigChanged(*route_config_state.update);
|
1019
|
-
}
|
1020
|
-
}
|
1021
|
-
}
|
1022
|
-
|
1023
|
-
void XdsClient::ChannelState::AdsCallState::AcceptCdsUpdate(
|
1024
|
-
std::string version, grpc_millis update_time,
|
1025
|
-
XdsApi::CdsUpdateMap cds_update_map) {
|
1026
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
1027
|
-
gpr_log(GPR_INFO,
|
1028
|
-
"[xds_client %p] CDS update received containing %" PRIuPTR
|
1029
|
-
" resources",
|
1030
|
-
xds_client(), cds_update_map.size());
|
1031
|
-
}
|
1032
|
-
auto& cds_state = state_map_[XdsApi::kCdsTypeUrl];
|
1033
|
-
std::set<std::string> eds_resource_names_seen;
|
1034
|
-
for (auto& p : cds_update_map) {
|
1035
|
-
const char* cluster_name = p.first.c_str();
|
1036
|
-
XdsApi::CdsUpdate& cds_update = p.second.resource;
|
1037
|
-
auto& state = cds_state.subscribed_resources[cluster_name];
|
1038
|
-
if (state != nullptr) state->Finish();
|
1039
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
1040
|
-
gpr_log(GPR_INFO, "[xds_client %p] cluster=%s: %s", xds_client(),
|
1041
|
-
cluster_name, cds_update.ToString().c_str());
|
1042
|
-
}
|
1043
|
-
// Record the EDS resource names seen.
|
1044
|
-
eds_resource_names_seen.insert(cds_update.eds_service_name.empty()
|
1045
|
-
? cluster_name
|
1046
|
-
: cds_update.eds_service_name);
|
1047
|
-
// Ignore identical update.
|
1048
|
-
ClusterState& cluster_state = xds_client()->cluster_map_[cluster_name];
|
1049
|
-
if (cluster_state.update.has_value() &&
|
1050
|
-
*cluster_state.update == cds_update) {
|
1051
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
1052
|
-
gpr_log(GPR_INFO,
|
1053
|
-
"[xds_client %p] CDS update identical to current, ignoring.",
|
1054
|
-
xds_client());
|
1055
|
-
}
|
1056
|
-
continue;
|
1057
|
-
}
|
1058
|
-
// Update the cluster state.
|
1059
|
-
cluster_state.update = std::move(cds_update);
|
1060
|
-
cluster_state.meta = CreateResourceMetadataAcked(
|
1061
|
-
std::move(p.second.serialized_proto), version, update_time);
|
1062
|
-
// Notify all watchers.
|
1063
|
-
for (const auto& p : cluster_state.watchers) {
|
1064
|
-
p.first->OnClusterChanged(cluster_state.update.value());
|
1065
|
-
}
|
1066
|
-
}
|
1067
|
-
// For any subscribed resource that is not present in the update,
|
1068
|
-
// remove it from the cache and notify watchers that it does not exist.
|
1069
|
-
for (const auto& p : cds_state.subscribed_resources) {
|
1070
|
-
const std::string& cluster_name = p.first;
|
1071
|
-
if (cds_update_map.find(cluster_name) == cds_update_map.end()) {
|
1072
|
-
ClusterState& cluster_state = xds_client()->cluster_map_[cluster_name];
|
1073
|
-
// If the resource was newly requested but has not yet been received,
|
1074
|
-
// we don't want to generate an error for the watchers, because this CDS
|
1075
|
-
// response may be in reaction to an earlier request that did not yet
|
1076
|
-
// request the new resource, so its absence from the response does not
|
1077
|
-
// necessarily indicate that the resource does not exist.
|
1078
|
-
// For that case, we rely on the request timeout instead.
|
1079
|
-
if (!cluster_state.update.has_value()) continue;
|
1080
|
-
cluster_state.update.reset();
|
1081
|
-
for (const auto& p : cluster_state.watchers) {
|
1082
|
-
p.first->OnResourceDoesNotExist();
|
1083
|
-
}
|
1084
|
-
}
|
1085
|
-
}
|
1086
|
-
// For any EDS resource that is no longer referred to by any CDS
|
1087
|
-
// resources, remove it from the cache and notify watchers that it
|
1088
|
-
// does not exist.
|
1089
|
-
auto& eds_state = state_map_[XdsApi::kEdsTypeUrl];
|
1090
|
-
for (const auto& p : eds_state.subscribed_resources) {
|
1091
|
-
const std::string& eds_resource_name = p.first;
|
1092
|
-
if (eds_resource_names_seen.find(eds_resource_name) ==
|
1093
|
-
eds_resource_names_seen.end()) {
|
1094
|
-
EndpointState& endpoint_state =
|
1095
|
-
xds_client()->endpoint_map_[eds_resource_name];
|
1096
|
-
endpoint_state.update.reset();
|
1097
|
-
for (const auto& p : endpoint_state.watchers) {
|
1098
|
-
p.first->OnResourceDoesNotExist();
|
1099
|
-
}
|
1100
|
-
}
|
1101
|
-
}
|
1102
|
-
}
|
1103
|
-
|
1104
|
-
void XdsClient::ChannelState::AdsCallState::AcceptEdsUpdate(
|
1105
|
-
std::string version, grpc_millis update_time,
|
1106
|
-
XdsApi::EdsUpdateMap eds_update_map) {
|
1107
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
1108
|
-
gpr_log(GPR_INFO,
|
1109
|
-
"[xds_client %p] EDS update received containing %" PRIuPTR
|
1110
|
-
" resources",
|
1111
|
-
xds_client(), eds_update_map.size());
|
1112
|
-
}
|
1113
|
-
auto& eds_state = state_map_[XdsApi::kEdsTypeUrl];
|
1114
|
-
for (auto& p : eds_update_map) {
|
1115
|
-
const char* eds_service_name = p.first.c_str();
|
1116
|
-
XdsApi::EdsUpdate& eds_update = p.second.resource;
|
1117
|
-
auto& state = eds_state.subscribed_resources[eds_service_name];
|
1118
|
-
if (state != nullptr) state->Finish();
|
1119
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
1120
|
-
gpr_log(GPR_INFO, "[xds_client %p] EDS resource %s: %s", xds_client(),
|
1121
|
-
eds_service_name, eds_update.ToString().c_str());
|
1122
|
-
}
|
1123
|
-
EndpointState& endpoint_state =
|
1124
|
-
xds_client()->endpoint_map_[eds_service_name];
|
1125
|
-
// Ignore identical update.
|
1126
|
-
if (endpoint_state.update.has_value() &&
|
1127
|
-
*endpoint_state.update == eds_update) {
|
1128
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
1129
|
-
gpr_log(GPR_INFO,
|
1130
|
-
"[xds_client %p] EDS update identical to current, ignoring.",
|
1131
|
-
xds_client());
|
1132
|
-
}
|
1133
|
-
continue;
|
1134
|
-
}
|
1135
|
-
// Update the cluster state.
|
1136
|
-
endpoint_state.update = std::move(eds_update);
|
1137
|
-
endpoint_state.meta = CreateResourceMetadataAcked(
|
1138
|
-
std::move(p.second.serialized_proto), version, update_time);
|
1139
|
-
// Notify all watchers.
|
1140
|
-
for (const auto& p : endpoint_state.watchers) {
|
1141
|
-
p.first->OnEndpointChanged(endpoint_state.update.value());
|
1142
|
-
}
|
1143
|
-
}
|
1144
|
-
}
|
1145
|
-
|
1146
|
-
void XdsClient::ChannelState::AdsCallState::OnRequestSent(void* arg,
|
1147
|
-
grpc_error* error) {
|
1136
|
+
void XdsClient::ChannelState::AdsCallState::OnRequestSent(
|
1137
|
+
void* arg, grpc_error_handle error) {
|
1148
1138
|
AdsCallState* ads_calld = static_cast<AdsCallState*>(arg);
|
1149
1139
|
{
|
1150
1140
|
MutexLock lock(&ads_calld->xds_client()->mu_);
|
@@ -1154,7 +1144,7 @@ void XdsClient::ChannelState::AdsCallState::OnRequestSent(void* arg,
|
|
1154
1144
|
}
|
1155
1145
|
|
1156
1146
|
void XdsClient::ChannelState::AdsCallState::OnRequestSentLocked(
|
1157
|
-
|
1147
|
+
grpc_error_handle error) {
|
1158
1148
|
if (IsCurrentCallOnChannel() && error == GRPC_ERROR_NONE) {
|
1159
1149
|
// Clean up the sent message.
|
1160
1150
|
grpc_byte_buffer_destroy(send_message_payload_);
|
@@ -1178,13 +1168,14 @@ void XdsClient::ChannelState::AdsCallState::OnRequestSentLocked(
|
|
1178
1168
|
}
|
1179
1169
|
|
1180
1170
|
void XdsClient::ChannelState::AdsCallState::OnResponseReceived(
|
1181
|
-
void* arg,
|
1171
|
+
void* arg, grpc_error_handle /* error */) {
|
1182
1172
|
AdsCallState* ads_calld = static_cast<AdsCallState*>(arg);
|
1183
1173
|
bool done;
|
1184
1174
|
{
|
1185
1175
|
MutexLock lock(&ads_calld->xds_client()->mu_);
|
1186
1176
|
done = ads_calld->OnResponseReceivedLocked();
|
1187
1177
|
}
|
1178
|
+
ads_calld->xds_client()->work_serializer_.DrainQueue();
|
1188
1179
|
if (done) ads_calld->Unref(DEBUG_LOCATION, "ADS+OnResponseReceivedLocked");
|
1189
1180
|
}
|
1190
1181
|
|
@@ -1201,57 +1192,76 @@ bool XdsClient::ChannelState::AdsCallState::OnResponseReceivedLocked() {
|
|
1201
1192
|
grpc_byte_buffer_destroy(recv_message_payload_);
|
1202
1193
|
recv_message_payload_ = nullptr;
|
1203
1194
|
// Parse and validate the response.
|
1204
|
-
|
1205
|
-
|
1206
|
-
|
1207
|
-
ResourceNamesForRequest(XdsApi::kRdsTypeUrl),
|
1208
|
-
ResourceNamesForRequest(XdsApi::kCdsTypeUrl),
|
1209
|
-
ResourceNamesForRequest(XdsApi::kEdsTypeUrl));
|
1195
|
+
AdsResponseParser parser(this);
|
1196
|
+
absl::Status status = xds_client()->api_.ParseAdsResponse(
|
1197
|
+
chand()->server_, response_slice, &parser);
|
1210
1198
|
grpc_slice_unref_internal(response_slice);
|
1211
|
-
if (
|
1199
|
+
if (!status.ok()) {
|
1212
1200
|
// Ignore unparsable response.
|
1213
1201
|
gpr_log(GPR_ERROR,
|
1214
|
-
"[xds_client %p]
|
1215
|
-
|
1216
|
-
|
1202
|
+
"[xds_client %p] xds server %s: error parsing ADS response (%s) "
|
1203
|
+
"-- ignoring",
|
1204
|
+
xds_client(), chand()->server_.server_uri.c_str(),
|
1205
|
+
status.ToString().c_str());
|
1217
1206
|
} else {
|
1218
|
-
|
1207
|
+
AdsResponseParser::Result result = parser.TakeResult();
|
1219
1208
|
// Update nonce.
|
1220
|
-
auto& state = state_map_[result.
|
1221
|
-
state.nonce =
|
1222
|
-
//
|
1223
|
-
if (result.
|
1224
|
-
|
1225
|
-
|
1209
|
+
auto& state = state_map_[result.type];
|
1210
|
+
state.nonce = result.nonce;
|
1211
|
+
// If we got an error, set state.error so that we'll NACK the update.
|
1212
|
+
if (!result.errors.empty()) {
|
1213
|
+
std::string error = absl::StrJoin(result.errors, "; ");
|
1214
|
+
gpr_log(
|
1215
|
+
GPR_ERROR,
|
1216
|
+
"[xds_client %p] xds server %s: ADS response invalid for resource "
|
1217
|
+
"type %s version %s, will NACK: nonce=%s error=%s",
|
1218
|
+
xds_client(), chand()->server_.server_uri.c_str(),
|
1219
|
+
result.type_url.c_str(), result.version.c_str(), state.nonce.c_str(),
|
1220
|
+
error.c_str());
|
1226
1221
|
GRPC_ERROR_UNREF(state.error);
|
1227
|
-
state.error =
|
1228
|
-
|
1229
|
-
|
1230
|
-
|
1231
|
-
|
1232
|
-
|
1233
|
-
|
1234
|
-
|
1235
|
-
|
1236
|
-
|
1237
|
-
|
1238
|
-
|
1239
|
-
|
1240
|
-
|
1241
|
-
|
1242
|
-
|
1243
|
-
|
1244
|
-
|
1245
|
-
|
1246
|
-
|
1247
|
-
|
1248
|
-
|
1249
|
-
|
1222
|
+
state.error = grpc_error_set_int(GRPC_ERROR_CREATE_FROM_CPP_STRING(error),
|
1223
|
+
GRPC_ERROR_INT_GRPC_STATUS,
|
1224
|
+
GRPC_STATUS_UNAVAILABLE);
|
1225
|
+
}
|
1226
|
+
// Delete resources not seen in update if needed.
|
1227
|
+
if (result.type->AllResourcesRequiredInSotW()) {
|
1228
|
+
for (auto& a : xds_client()->authority_state_map_) {
|
1229
|
+
const std::string& authority = a.first;
|
1230
|
+
AuthorityState& authority_state = a.second;
|
1231
|
+
// Skip authorities that are not using this xDS channel.
|
1232
|
+
if (authority_state.channel_state != chand()) continue;
|
1233
|
+
auto seen_authority_it = result.resources_seen.find(authority);
|
1234
|
+
// Find this resource type.
|
1235
|
+
auto type_it = authority_state.resource_map.find(result.type);
|
1236
|
+
if (type_it == authority_state.resource_map.end()) continue;
|
1237
|
+
// Iterate over resource ids.
|
1238
|
+
for (auto& r : type_it->second) {
|
1239
|
+
const XdsResourceKey& resource_key = r.first;
|
1240
|
+
ResourceState& resource_state = r.second;
|
1241
|
+
if (seen_authority_it == result.resources_seen.end() ||
|
1242
|
+
seen_authority_it->second.find(resource_key) ==
|
1243
|
+
seen_authority_it->second.end()) {
|
1244
|
+
// If the resource was newly requested but has not yet been
|
1245
|
+
// received, we don't want to generate an error for the watchers,
|
1246
|
+
// because this ADS response may be in reaction to an earlier
|
1247
|
+
// request that did not yet request the new resource, so its absence
|
1248
|
+
// from the response does not necessarily indicate that the resource
|
1249
|
+
// does not exist. For that case, we rely on the request timeout
|
1250
|
+
// instead.
|
1251
|
+
if (resource_state.resource == nullptr) continue;
|
1252
|
+
resource_state.resource.reset();
|
1253
|
+
Notifier::
|
1254
|
+
ScheduleNotifyWatchersOnResourceDoesNotExistInWorkSerializer(
|
1255
|
+
xds_client(), resource_state.watchers, DEBUG_LOCATION);
|
1256
|
+
}
|
1257
|
+
}
|
1250
1258
|
}
|
1251
|
-
|
1259
|
+
}
|
1260
|
+
// If we had valid resources, update the version.
|
1261
|
+
if (result.have_valid_resources) {
|
1262
|
+
seen_response_ = true;
|
1263
|
+
chand()->resource_type_version_map_[result.type] =
|
1252
1264
|
std::move(result.version);
|
1253
|
-
// ACK the update.
|
1254
|
-
SendMessageLocked(result.type_url);
|
1255
1265
|
// Start load reporting if needed.
|
1256
1266
|
auto& lrs_call = chand()->lrs_calld_;
|
1257
1267
|
if (lrs_call != nullptr) {
|
@@ -1259,6 +1269,8 @@ bool XdsClient::ChannelState::AdsCallState::OnResponseReceivedLocked() {
|
|
1259
1269
|
if (lrs_calld != nullptr) lrs_calld->MaybeStartReportingLocked();
|
1260
1270
|
}
|
1261
1271
|
}
|
1272
|
+
// Send ACK or NACK.
|
1273
|
+
SendMessageLocked(result.type);
|
1262
1274
|
}
|
1263
1275
|
if (xds_client()->shutting_down_) return true;
|
1264
1276
|
// Keep listening for updates.
|
@@ -1277,24 +1289,27 @@ bool XdsClient::ChannelState::AdsCallState::OnResponseReceivedLocked() {
|
|
1277
1289
|
}
|
1278
1290
|
|
1279
1291
|
void XdsClient::ChannelState::AdsCallState::OnStatusReceived(
|
1280
|
-
void* arg,
|
1292
|
+
void* arg, grpc_error_handle error) {
|
1281
1293
|
AdsCallState* ads_calld = static_cast<AdsCallState*>(arg);
|
1282
1294
|
{
|
1283
1295
|
MutexLock lock(&ads_calld->xds_client()->mu_);
|
1284
1296
|
ads_calld->OnStatusReceivedLocked(GRPC_ERROR_REF(error));
|
1285
1297
|
}
|
1298
|
+
ads_calld->xds_client()->work_serializer_.DrainQueue();
|
1286
1299
|
ads_calld->Unref(DEBUG_LOCATION, "ADS+OnStatusReceivedLocked");
|
1287
1300
|
}
|
1288
1301
|
|
1289
1302
|
void XdsClient::ChannelState::AdsCallState::OnStatusReceivedLocked(
|
1290
|
-
|
1303
|
+
grpc_error_handle error) {
|
1291
1304
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
1292
1305
|
char* status_details = grpc_slice_to_c_string(status_details_);
|
1293
1306
|
gpr_log(GPR_INFO,
|
1294
|
-
"[xds_client %p] ADS call status received
|
1295
|
-
"
|
1296
|
-
|
1297
|
-
|
1307
|
+
"[xds_client %p] xds server %s: ADS call status received "
|
1308
|
+
"(chand=%p, ads_calld=%p, call=%p): "
|
1309
|
+
"status=%d, details='%s', error='%s'",
|
1310
|
+
xds_client(), chand()->server_.server_uri.c_str(), chand(), this,
|
1311
|
+
call_, status_code_, status_details,
|
1312
|
+
grpc_error_std_string(error).c_str());
|
1298
1313
|
gpr_free(status_details);
|
1299
1314
|
}
|
1300
1315
|
// Ignore status from a stale call.
|
@@ -1303,7 +1318,12 @@ void XdsClient::ChannelState::AdsCallState::OnStatusReceivedLocked(
|
|
1303
1318
|
parent_->OnCallFinishedLocked();
|
1304
1319
|
// Send error to all watchers.
|
1305
1320
|
xds_client()->NotifyOnErrorLocked(
|
1306
|
-
|
1321
|
+
GRPC_ERROR_CREATE_FROM_CPP_STRING(absl::StrFormat(
|
1322
|
+
"xDS call failed: xDS server: %s, ADS call status code=%d, "
|
1323
|
+
"details='%s', error='%s'",
|
1324
|
+
chand()->server_.server_uri, status_code_,
|
1325
|
+
StringViewFromSlice(status_details_),
|
1326
|
+
grpc_error_std_string(error))));
|
1307
1327
|
}
|
1308
1328
|
GRPC_ERROR_UNREF(error);
|
1309
1329
|
}
|
@@ -1315,16 +1335,21 @@ bool XdsClient::ChannelState::AdsCallState::IsCurrentCallOnChannel() const {
|
|
1315
1335
|
return this == chand()->ads_calld_->calld();
|
1316
1336
|
}
|
1317
1337
|
|
1318
|
-
std::
|
1338
|
+
std::vector<std::string>
|
1319
1339
|
XdsClient::ChannelState::AdsCallState::ResourceNamesForRequest(
|
1320
|
-
const
|
1321
|
-
std::
|
1322
|
-
auto it = state_map_.find(
|
1340
|
+
const XdsResourceType* type) {
|
1341
|
+
std::vector<std::string> resource_names;
|
1342
|
+
auto it = state_map_.find(type);
|
1323
1343
|
if (it != state_map_.end()) {
|
1324
|
-
for (auto&
|
1325
|
-
|
1326
|
-
|
1327
|
-
|
1344
|
+
for (auto& a : it->second.subscribed_resources) {
|
1345
|
+
const std::string& authority = a.first;
|
1346
|
+
for (auto& p : a.second) {
|
1347
|
+
const XdsResourceKey& resource_key = p.first;
|
1348
|
+
resource_names.emplace_back(XdsClient::ConstructFullXdsResourceName(
|
1349
|
+
authority, type->type_url(), resource_key));
|
1350
|
+
OrphanablePtr<ResourceTimer>& resource_timer = p.second;
|
1351
|
+
resource_timer->MaybeStartTimer(Ref(DEBUG_LOCATION, "ResourceTimer"));
|
1352
|
+
}
|
1328
1353
|
}
|
1329
1354
|
}
|
1330
1355
|
return resource_names;
|
@@ -1342,14 +1367,14 @@ void XdsClient::ChannelState::LrsCallState::Reporter::Orphan() {
|
|
1342
1367
|
|
1343
1368
|
void XdsClient::ChannelState::LrsCallState::Reporter::
|
1344
1369
|
ScheduleNextReportLocked() {
|
1345
|
-
const
|
1370
|
+
const Timestamp next_report_time = ExecCtx::Get()->Now() + report_interval_;
|
1346
1371
|
grpc_timer_init(&next_report_timer_, next_report_time,
|
1347
1372
|
&on_next_report_timer_);
|
1348
1373
|
next_report_timer_callback_pending_ = true;
|
1349
1374
|
}
|
1350
1375
|
|
1351
1376
|
void XdsClient::ChannelState::LrsCallState::Reporter::OnNextReportTimer(
|
1352
|
-
void* arg,
|
1377
|
+
void* arg, grpc_error_handle error) {
|
1353
1378
|
Reporter* self = static_cast<Reporter*>(arg);
|
1354
1379
|
bool done;
|
1355
1380
|
{
|
@@ -1360,7 +1385,7 @@ void XdsClient::ChannelState::LrsCallState::Reporter::OnNextReportTimer(
|
|
1360
1385
|
}
|
1361
1386
|
|
1362
1387
|
bool XdsClient::ChannelState::LrsCallState::Reporter::OnNextReportTimerLocked(
|
1363
|
-
|
1388
|
+
grpc_error_handle error) {
|
1364
1389
|
next_report_timer_callback_pending_ = false;
|
1365
1390
|
if (error != GRPC_ERROR_NONE || !IsCurrentReporterOnCall()) {
|
1366
1391
|
GRPC_ERROR_UNREF(error);
|
@@ -1388,15 +1413,19 @@ bool LoadReportCountersAreZero(const XdsApi::ClusterLoadReportMap& snapshot) {
|
|
1388
1413
|
bool XdsClient::ChannelState::LrsCallState::Reporter::SendReportLocked() {
|
1389
1414
|
// Construct snapshot from all reported stats.
|
1390
1415
|
XdsApi::ClusterLoadReportMap snapshot =
|
1391
|
-
xds_client()->BuildLoadReportSnapshotLocked(parent_->
|
1416
|
+
xds_client()->BuildLoadReportSnapshotLocked(parent_->chand()->server_,
|
1417
|
+
parent_->send_all_clusters_,
|
1392
1418
|
parent_->cluster_names_);
|
1393
1419
|
// Skip client load report if the counters were all zero in the last
|
1394
1420
|
// report and they are still zero in this one.
|
1395
1421
|
const bool old_val = last_report_counters_were_zero_;
|
1396
1422
|
last_report_counters_were_zero_ = LoadReportCountersAreZero(snapshot);
|
1397
1423
|
if (old_val && last_report_counters_were_zero_) {
|
1398
|
-
|
1399
|
-
|
1424
|
+
auto it = xds_client()->xds_load_report_server_map_.find(
|
1425
|
+
parent_->chand()->server_);
|
1426
|
+
if (it == xds_client()->xds_load_report_server_map_.end() ||
|
1427
|
+
it->second.load_report_map.empty()) {
|
1428
|
+
it->second.channel_state->StopLrsCallLocked();
|
1400
1429
|
return true;
|
1401
1430
|
}
|
1402
1431
|
ScheduleNextReportLocked();
|
@@ -1417,15 +1446,17 @@ bool XdsClient::ChannelState::LrsCallState::Reporter::SendReportLocked() {
|
|
1417
1446
|
parent_->call_, &op, 1, &on_report_done_);
|
1418
1447
|
if (GPR_UNLIKELY(call_error != GRPC_CALL_OK)) {
|
1419
1448
|
gpr_log(GPR_ERROR,
|
1420
|
-
"[xds_client %p]
|
1421
|
-
|
1449
|
+
"[xds_client %p] xds server %s: error starting LRS send_message "
|
1450
|
+
"batch on calld=%p: call_error=%d",
|
1451
|
+
xds_client(), parent_->chand()->server_.server_uri.c_str(), this,
|
1452
|
+
call_error);
|
1422
1453
|
GPR_ASSERT(GRPC_CALL_OK == call_error);
|
1423
1454
|
}
|
1424
1455
|
return false;
|
1425
1456
|
}
|
1426
1457
|
|
1427
1458
|
void XdsClient::ChannelState::LrsCallState::Reporter::OnReportDone(
|
1428
|
-
void* arg,
|
1459
|
+
void* arg, grpc_error_handle error) {
|
1429
1460
|
Reporter* self = static_cast<Reporter*>(arg);
|
1430
1461
|
bool done;
|
1431
1462
|
{
|
@@ -1436,12 +1467,15 @@ void XdsClient::ChannelState::LrsCallState::Reporter::OnReportDone(
|
|
1436
1467
|
}
|
1437
1468
|
|
1438
1469
|
bool XdsClient::ChannelState::LrsCallState::Reporter::OnReportDoneLocked(
|
1439
|
-
|
1470
|
+
grpc_error_handle error) {
|
1440
1471
|
grpc_byte_buffer_destroy(parent_->send_message_payload_);
|
1441
1472
|
parent_->send_message_payload_ = nullptr;
|
1442
1473
|
// If there are no more registered stats to report, cancel the call.
|
1443
|
-
|
1444
|
-
|
1474
|
+
auto it =
|
1475
|
+
xds_client()->xds_load_report_server_map_.find(parent_->chand()->server_);
|
1476
|
+
if (it == xds_client()->xds_load_report_server_map_.end() ||
|
1477
|
+
it->second.load_report_map.empty()) {
|
1478
|
+
it->second.channel_state->StopLrsCallLocked();
|
1445
1479
|
GRPC_ERROR_UNREF(error);
|
1446
1480
|
return true;
|
1447
1481
|
}
|
@@ -1473,14 +1507,15 @@ XdsClient::ChannelState::LrsCallState::LrsCallState(
|
|
1473
1507
|
// activity in xds_client()->interested_parties_, which is comprised of
|
1474
1508
|
// the polling entities from client_channel.
|
1475
1509
|
GPR_ASSERT(xds_client() != nullptr);
|
1476
|
-
const
|
1510
|
+
const char* method =
|
1477
1511
|
chand()->server_.ShouldUseV3()
|
1478
|
-
?
|
1479
|
-
:
|
1512
|
+
? "/envoy.service.load_stats.v3.LoadReportingService/StreamLoadStats"
|
1513
|
+
: "/envoy.service.load_stats.v2.LoadReportingService/StreamLoadStats";
|
1480
1514
|
call_ = grpc_channel_create_pollset_set_call(
|
1481
1515
|
chand()->channel_, nullptr, GRPC_PROPAGATE_DEFAULTS,
|
1482
|
-
xds_client()->interested_parties_,
|
1483
|
-
|
1516
|
+
xds_client()->interested_parties_,
|
1517
|
+
Slice::FromStaticString(method).c_slice(), nullptr,
|
1518
|
+
Timestamp::InfFuture(), nullptr);
|
1484
1519
|
GPR_ASSERT(call_ != nullptr);
|
1485
1520
|
// Init the request payload.
|
1486
1521
|
grpc_slice request_payload_slice =
|
@@ -1493,10 +1528,10 @@ XdsClient::ChannelState::LrsCallState::LrsCallState(
|
|
1493
1528
|
grpc_metadata_array_init(&trailing_metadata_recv_);
|
1494
1529
|
// Start the call.
|
1495
1530
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
1496
|
-
gpr_log(
|
1497
|
-
|
1498
|
-
|
1499
|
-
|
1531
|
+
gpr_log(
|
1532
|
+
GPR_INFO,
|
1533
|
+
"[xds_client %p] xds server %s: starting LRS call (calld=%p, call=%p)",
|
1534
|
+
xds_client(), chand()->server_.server_uri.c_str(), this, call_);
|
1500
1535
|
}
|
1501
1536
|
// Create the ops.
|
1502
1537
|
grpc_call_error call_error;
|
@@ -1606,7 +1641,7 @@ void XdsClient::ChannelState::LrsCallState::MaybeStartReportingLocked() {
|
|
1606
1641
|
}
|
1607
1642
|
|
1608
1643
|
void XdsClient::ChannelState::LrsCallState::OnInitialRequestSent(
|
1609
|
-
void* arg,
|
1644
|
+
void* arg, grpc_error_handle /*error*/) {
|
1610
1645
|
LrsCallState* lrs_calld = static_cast<LrsCallState*>(arg);
|
1611
1646
|
{
|
1612
1647
|
MutexLock lock(&lrs_calld->xds_client()->mu_);
|
@@ -1623,7 +1658,7 @@ void XdsClient::ChannelState::LrsCallState::OnInitialRequestSentLocked() {
|
|
1623
1658
|
}
|
1624
1659
|
|
1625
1660
|
void XdsClient::ChannelState::LrsCallState::OnResponseReceived(
|
1626
|
-
void* arg,
|
1661
|
+
void* arg, grpc_error_handle /*error*/) {
|
1627
1662
|
LrsCallState* lrs_calld = static_cast<LrsCallState*>(arg);
|
1628
1663
|
bool done;
|
1629
1664
|
{
|
@@ -1650,14 +1685,15 @@ bool XdsClient::ChannelState::LrsCallState::OnResponseReceivedLocked() {
|
|
1650
1685
|
// Parse the response.
|
1651
1686
|
bool send_all_clusters = false;
|
1652
1687
|
std::set<std::string> new_cluster_names;
|
1653
|
-
|
1654
|
-
|
1688
|
+
Duration new_load_reporting_interval;
|
1689
|
+
grpc_error_handle parse_error = xds_client()->api_.ParseLrsResponse(
|
1655
1690
|
response_slice, &send_all_clusters, &new_cluster_names,
|
1656
1691
|
&new_load_reporting_interval);
|
1657
1692
|
if (parse_error != GRPC_ERROR_NONE) {
|
1658
1693
|
gpr_log(GPR_ERROR,
|
1659
|
-
"[xds_client %p] LRS response parsing failed
|
1660
|
-
xds_client(),
|
1694
|
+
"[xds_client %p] xds server %s: LRS response parsing failed: %s",
|
1695
|
+
xds_client(), chand()->server_.server_uri.c_str(),
|
1696
|
+
grpc_error_std_string(parse_error).c_str());
|
1661
1697
|
GRPC_ERROR_UNREF(parse_error);
|
1662
1698
|
return;
|
1663
1699
|
}
|
@@ -1665,11 +1701,12 @@ bool XdsClient::ChannelState::LrsCallState::OnResponseReceivedLocked() {
|
|
1665
1701
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
1666
1702
|
gpr_log(
|
1667
1703
|
GPR_INFO,
|
1668
|
-
"[xds_client %p] LRS response received, %" PRIuPTR
|
1704
|
+
"[xds_client %p] xds server %s: LRS response received, %" PRIuPTR
|
1669
1705
|
" cluster names, send_all_clusters=%d, load_report_interval=%" PRId64
|
1670
1706
|
"ms",
|
1671
|
-
xds_client(),
|
1672
|
-
|
1707
|
+
xds_client(), chand()->server_.server_uri.c_str(),
|
1708
|
+
new_cluster_names.size(), send_all_clusters,
|
1709
|
+
new_load_reporting_interval.millis());
|
1673
1710
|
size_t i = 0;
|
1674
1711
|
for (const auto& name : new_cluster_names) {
|
1675
1712
|
gpr_log(GPR_INFO, "[xds_client %p] cluster_name %" PRIuPTR ": %s",
|
@@ -1677,14 +1714,16 @@ bool XdsClient::ChannelState::LrsCallState::OnResponseReceivedLocked() {
|
|
1677
1714
|
}
|
1678
1715
|
}
|
1679
1716
|
if (new_load_reporting_interval <
|
1680
|
-
|
1681
|
-
|
1682
|
-
|
1717
|
+
Duration::Milliseconds(
|
1718
|
+
GRPC_XDS_MIN_CLIENT_LOAD_REPORTING_INTERVAL_MS)) {
|
1719
|
+
new_load_reporting_interval = Duration::Milliseconds(
|
1720
|
+
GRPC_XDS_MIN_CLIENT_LOAD_REPORTING_INTERVAL_MS);
|
1683
1721
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
1684
1722
|
gpr_log(GPR_INFO,
|
1685
|
-
"[xds_client %p]
|
1686
|
-
"value %dms",
|
1687
|
-
xds_client(),
|
1723
|
+
"[xds_client %p] xds server %s: increased load_report_interval "
|
1724
|
+
"to minimum value %dms",
|
1725
|
+
xds_client(), chand()->server_.server_uri.c_str(),
|
1726
|
+
GRPC_XDS_MIN_CLIENT_LOAD_REPORTING_INTERVAL_MS);
|
1688
1727
|
}
|
1689
1728
|
}
|
1690
1729
|
// Ignore identical update.
|
@@ -1692,10 +1731,11 @@ bool XdsClient::ChannelState::LrsCallState::OnResponseReceivedLocked() {
|
|
1692
1731
|
cluster_names_ == new_cluster_names &&
|
1693
1732
|
load_reporting_interval_ == new_load_reporting_interval) {
|
1694
1733
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
1695
|
-
gpr_log(
|
1696
|
-
|
1697
|
-
|
1698
|
-
|
1734
|
+
gpr_log(
|
1735
|
+
GPR_INFO,
|
1736
|
+
"[xds_client %p] xds server %s: incoming LRS response identical "
|
1737
|
+
"to current, ignoring.",
|
1738
|
+
xds_client(), chand()->server_.server_uri.c_str());
|
1699
1739
|
}
|
1700
1740
|
return;
|
1701
1741
|
}
|
@@ -1726,7 +1766,7 @@ bool XdsClient::ChannelState::LrsCallState::OnResponseReceivedLocked() {
|
|
1726
1766
|
}
|
1727
1767
|
|
1728
1768
|
void XdsClient::ChannelState::LrsCallState::OnStatusReceived(
|
1729
|
-
void* arg,
|
1769
|
+
void* arg, grpc_error_handle error) {
|
1730
1770
|
LrsCallState* lrs_calld = static_cast<LrsCallState*>(arg);
|
1731
1771
|
{
|
1732
1772
|
MutexLock lock(&lrs_calld->xds_client()->mu_);
|
@@ -1736,20 +1776,21 @@ void XdsClient::ChannelState::LrsCallState::OnStatusReceived(
|
|
1736
1776
|
}
|
1737
1777
|
|
1738
1778
|
void XdsClient::ChannelState::LrsCallState::OnStatusReceivedLocked(
|
1739
|
-
|
1779
|
+
grpc_error_handle error) {
|
1740
1780
|
GPR_ASSERT(call_ != nullptr);
|
1741
1781
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
1742
1782
|
char* status_details = grpc_slice_to_c_string(status_details_);
|
1743
1783
|
gpr_log(GPR_INFO,
|
1744
|
-
"[xds_client %p] LRS call status received
|
1745
|
-
"
|
1746
|
-
|
1747
|
-
|
1784
|
+
"[xds_client %p] xds server %s: LRS call status received "
|
1785
|
+
"(chand=%p, calld=%p, call=%p): "
|
1786
|
+
"status=%d, details='%s', error='%s'",
|
1787
|
+
xds_client(), chand()->server_.server_uri.c_str(), chand(), this,
|
1788
|
+
call_, status_code_, status_details,
|
1789
|
+
grpc_error_std_string(error).c_str());
|
1748
1790
|
gpr_free(status_details);
|
1749
1791
|
}
|
1750
1792
|
// Ignore status from a stale call.
|
1751
1793
|
if (IsCurrentCallOnChannel()) {
|
1752
|
-
GPR_ASSERT(!xds_client()->shutting_down_);
|
1753
1794
|
// Try to restart the call.
|
1754
1795
|
parent_->OnCallFinishedLocked();
|
1755
1796
|
}
|
@@ -1769,64 +1810,54 @@ bool XdsClient::ChannelState::LrsCallState::IsCurrentCallOnChannel() const {
|
|
1769
1810
|
|
1770
1811
|
namespace {
|
1771
1812
|
|
1772
|
-
|
1773
|
-
return grpc_channel_args_find_integer(
|
1774
|
-
|
1775
|
-
{15000, 0, INT_MAX});
|
1813
|
+
Duration GetRequestTimeout(const grpc_channel_args* args) {
|
1814
|
+
return Duration::Milliseconds(grpc_channel_args_find_integer(
|
1815
|
+
args, GRPC_ARG_XDS_RESOURCE_DOES_NOT_EXIST_TIMEOUT_MS,
|
1816
|
+
{15000, 0, INT_MAX}));
|
1817
|
+
}
|
1818
|
+
|
1819
|
+
grpc_channel_args* ModifyChannelArgs(const grpc_channel_args* args) {
|
1820
|
+
absl::InlinedVector<grpc_arg, 1> args_to_add = {
|
1821
|
+
grpc_channel_arg_integer_create(
|
1822
|
+
const_cast<char*>(GRPC_ARG_KEEPALIVE_TIME_MS),
|
1823
|
+
5 * 60 * GPR_MS_PER_SEC),
|
1824
|
+
};
|
1825
|
+
return grpc_channel_args_copy_and_add(args, args_to_add.data(),
|
1826
|
+
args_to_add.size());
|
1776
1827
|
}
|
1777
1828
|
|
1778
1829
|
} // namespace
|
1779
1830
|
|
1780
|
-
XdsClient::XdsClient(
|
1831
|
+
XdsClient::XdsClient(std::unique_ptr<XdsBootstrap> bootstrap,
|
1832
|
+
const grpc_channel_args* args)
|
1781
1833
|
: DualRefCounted<XdsClient>(
|
1782
1834
|
GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_refcount_trace) ? "XdsClient"
|
1783
1835
|
: nullptr),
|
1784
|
-
|
1836
|
+
bootstrap_(std::move(bootstrap)),
|
1837
|
+
args_(ModifyChannelArgs(args)),
|
1838
|
+
request_timeout_(GetRequestTimeout(args)),
|
1785
1839
|
interested_parties_(grpc_pollset_set_create()),
|
1786
|
-
bootstrap_(XdsBootstrap::Create(this, &grpc_xds_client_trace,
|
1787
|
-
g_fallback_bootstrap_config, error)),
|
1788
1840
|
certificate_provider_store_(MakeOrphanable<CertificateProviderStore>(
|
1789
|
-
bootstrap_
|
1790
|
-
|
1791
|
-
|
1792
|
-
api_(this, &grpc_xds_client_trace,
|
1793
|
-
bootstrap_ == nullptr ? nullptr : bootstrap_->node()) {
|
1841
|
+
bootstrap_->certificate_providers())),
|
1842
|
+
api_(this, &grpc_xds_client_trace, bootstrap_->node(),
|
1843
|
+
&bootstrap_->certificate_providers(), &symtab_) {
|
1794
1844
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
1795
1845
|
gpr_log(GPR_INFO, "[xds_client %p] creating xds client", this);
|
1796
1846
|
}
|
1797
|
-
|
1798
|
-
|
1799
|
-
|
1800
|
-
return;
|
1801
|
-
}
|
1802
|
-
// Create ChannelState object.
|
1803
|
-
chand_ = MakeOrphanable<ChannelState>(
|
1804
|
-
WeakRef(DEBUG_LOCATION, "XdsClient+ChannelState"), bootstrap_->server());
|
1847
|
+
// Calling grpc_init to ensure gRPC does not shut down until the XdsClient is
|
1848
|
+
// destroyed.
|
1849
|
+
grpc_init();
|
1805
1850
|
}
|
1806
1851
|
|
1807
1852
|
XdsClient::~XdsClient() {
|
1808
1853
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
1809
1854
|
gpr_log(GPR_INFO, "[xds_client %p] destroying xds client", this);
|
1810
1855
|
}
|
1856
|
+
grpc_channel_args_destroy(args_);
|
1811
1857
|
grpc_pollset_set_destroy(interested_parties_);
|
1812
|
-
|
1813
|
-
|
1814
|
-
|
1815
|
-
channelz::ChannelNode* parent_channelz_node) {
|
1816
|
-
channelz::ChannelNode* xds_channelz_node =
|
1817
|
-
grpc_channel_get_channelz_node(chand_->channel());
|
1818
|
-
if (xds_channelz_node != nullptr) {
|
1819
|
-
parent_channelz_node->AddChildChannel(xds_channelz_node->uuid());
|
1820
|
-
}
|
1821
|
-
}
|
1822
|
-
|
1823
|
-
void XdsClient::RemoveChannelzLinkage(
|
1824
|
-
channelz::ChannelNode* parent_channelz_node) {
|
1825
|
-
channelz::ChannelNode* xds_channelz_node =
|
1826
|
-
grpc_channel_get_channelz_node(chand_->channel());
|
1827
|
-
if (xds_channelz_node != nullptr) {
|
1828
|
-
parent_channelz_node->RemoveChildChannel(xds_channelz_node->uuid());
|
1829
|
-
}
|
1858
|
+
// Calling grpc_shutdown to ensure gRPC does not shut down until the XdsClient
|
1859
|
+
// is destroyed.
|
1860
|
+
grpc_shutdown();
|
1830
1861
|
}
|
1831
1862
|
|
1832
1863
|
void XdsClient::Orphan() {
|
@@ -1840,191 +1871,224 @@ void XdsClient::Orphan() {
|
|
1840
1871
|
{
|
1841
1872
|
MutexLock lock(&mu_);
|
1842
1873
|
shutting_down_ = true;
|
1843
|
-
//
|
1844
|
-
|
1845
|
-
|
1846
|
-
|
1847
|
-
|
1848
|
-
|
1849
|
-
|
1850
|
-
|
1851
|
-
|
1852
|
-
|
1853
|
-
|
1874
|
+
// Clear cache and any remaining watchers that may not have been cancelled.
|
1875
|
+
authority_state_map_.clear();
|
1876
|
+
invalid_watchers_.clear();
|
1877
|
+
}
|
1878
|
+
}
|
1879
|
+
|
1880
|
+
RefCountedPtr<XdsClient::ChannelState> XdsClient::GetOrCreateChannelStateLocked(
|
1881
|
+
const XdsBootstrap::XdsServer& server) {
|
1882
|
+
auto it = xds_server_channel_map_.find(server);
|
1883
|
+
if (it != xds_server_channel_map_.end()) {
|
1884
|
+
return it->second->Ref(DEBUG_LOCATION, "Authority");
|
1885
|
+
}
|
1886
|
+
// Channel not found, so create a new one.
|
1887
|
+
auto channel_state = MakeRefCounted<ChannelState>(
|
1888
|
+
WeakRef(DEBUG_LOCATION, "ChannelState"), server);
|
1889
|
+
xds_server_channel_map_[server] = channel_state.get();
|
1890
|
+
return channel_state;
|
1891
|
+
}
|
1892
|
+
|
1893
|
+
void XdsClient::WatchResource(const XdsResourceType* type,
|
1894
|
+
absl::string_view name,
|
1895
|
+
RefCountedPtr<ResourceWatcherInterface> watcher) {
|
1896
|
+
ResourceWatcherInterface* w = watcher.get();
|
1897
|
+
// Lambda for handling failure cases.
|
1898
|
+
auto fail = [&](grpc_error_handle error) mutable {
|
1899
|
+
{
|
1900
|
+
MutexLock lock(&mu_);
|
1901
|
+
MaybeRegisterResourceTypeLocked(type);
|
1902
|
+
invalid_watchers_[w] = watcher;
|
1854
1903
|
}
|
1904
|
+
work_serializer_.Run(
|
1905
|
+
// TODO(yashykt): When we move to C++14, capture watcher using
|
1906
|
+
// std::move()
|
1907
|
+
[watcher, error]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(&work_serializer_) {
|
1908
|
+
watcher->OnError(error);
|
1909
|
+
},
|
1910
|
+
DEBUG_LOCATION);
|
1911
|
+
};
|
1912
|
+
auto resource_name = ParseXdsResourceName(name, type);
|
1913
|
+
if (!resource_name.ok()) {
|
1914
|
+
fail(GRPC_ERROR_CREATE_FROM_CPP_STRING(absl::StrFormat(
|
1915
|
+
"Unable to parse resource name for listener %s", name)));
|
1916
|
+
return;
|
1855
1917
|
}
|
1856
|
-
|
1857
|
-
|
1858
|
-
|
1859
|
-
|
1860
|
-
std::
|
1861
|
-
|
1862
|
-
|
1863
|
-
|
1864
|
-
|
1865
|
-
|
1866
|
-
// If we've already received an LDS update, notify the new watcher
|
1867
|
-
// immediately.
|
1868
|
-
if (listener_state.update.has_value()) {
|
1869
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
1870
|
-
gpr_log(GPR_INFO, "[xds_client %p] returning cached listener data for %s",
|
1871
|
-
this, listener_name_str.c_str());
|
1918
|
+
// Find server to use.
|
1919
|
+
const XdsBootstrap::XdsServer* xds_server = nullptr;
|
1920
|
+
absl::string_view authority_name = resource_name->authority;
|
1921
|
+
if (absl::ConsumePrefix(&authority_name, "xdstp:")) {
|
1922
|
+
auto* authority = bootstrap_->LookupAuthority(std::string(authority_name));
|
1923
|
+
if (authority == nullptr) {
|
1924
|
+
fail(GRPC_ERROR_CREATE_FROM_CPP_STRING(
|
1925
|
+
absl::StrCat("authority \"", authority_name,
|
1926
|
+
"\" not present in bootstrap config")));
|
1927
|
+
return;
|
1872
1928
|
}
|
1873
|
-
|
1874
|
-
|
1875
|
-
chand_->Subscribe(XdsApi::kLdsTypeUrl, listener_name_str);
|
1876
|
-
}
|
1877
|
-
|
1878
|
-
void XdsClient::CancelListenerDataWatch(absl::string_view listener_name,
|
1879
|
-
ListenerWatcherInterface* watcher,
|
1880
|
-
bool delay_unsubscription) {
|
1881
|
-
MutexLock lock(&mu_);
|
1882
|
-
if (shutting_down_) return;
|
1883
|
-
std::string listener_name_str = std::string(listener_name);
|
1884
|
-
ListenerState& listener_state = listener_map_[listener_name_str];
|
1885
|
-
auto it = listener_state.watchers.find(watcher);
|
1886
|
-
if (it != listener_state.watchers.end()) {
|
1887
|
-
listener_state.watchers.erase(it);
|
1888
|
-
if (listener_state.watchers.empty()) {
|
1889
|
-
listener_map_.erase(listener_name_str);
|
1890
|
-
chand_->Unsubscribe(XdsApi::kLdsTypeUrl, listener_name_str,
|
1891
|
-
delay_unsubscription);
|
1929
|
+
if (!authority->xds_servers.empty()) {
|
1930
|
+
xds_server = &authority->xds_servers[0];
|
1892
1931
|
}
|
1893
1932
|
}
|
1894
|
-
|
1895
|
-
|
1896
|
-
|
1897
|
-
|
1898
|
-
|
1899
|
-
|
1900
|
-
|
1901
|
-
|
1902
|
-
|
1903
|
-
|
1904
|
-
|
1905
|
-
|
1906
|
-
|
1907
|
-
|
1908
|
-
|
1909
|
-
|
1910
|
-
|
1911
|
-
|
1933
|
+
if (xds_server == nullptr) xds_server = &bootstrap_->server();
|
1934
|
+
{
|
1935
|
+
MutexLock lock(&mu_);
|
1936
|
+
MaybeRegisterResourceTypeLocked(type);
|
1937
|
+
AuthorityState& authority_state =
|
1938
|
+
authority_state_map_[resource_name->authority];
|
1939
|
+
ResourceState& resource_state =
|
1940
|
+
authority_state.resource_map[type][resource_name->key];
|
1941
|
+
resource_state.watchers[w] = watcher;
|
1942
|
+
// If we already have a cached value for the resource, notify the new
|
1943
|
+
// watcher immediately.
|
1944
|
+
if (resource_state.resource != nullptr) {
|
1945
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
1946
|
+
gpr_log(GPR_INFO,
|
1947
|
+
"[xds_client %p] returning cached listener data for %s", this,
|
1948
|
+
std::string(name).c_str());
|
1949
|
+
}
|
1950
|
+
auto* value = type->CopyResource(resource_state.resource.get()).release();
|
1951
|
+
work_serializer_.Schedule(
|
1952
|
+
[watcher, value]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(&work_serializer_) {
|
1953
|
+
watcher->OnGenericResourceChanged(value);
|
1954
|
+
delete value;
|
1955
|
+
},
|
1956
|
+
DEBUG_LOCATION);
|
1912
1957
|
}
|
1913
|
-
|
1914
|
-
|
1915
|
-
|
1916
|
-
|
1917
|
-
|
1918
|
-
void XdsClient::CancelRouteConfigDataWatch(absl::string_view route_config_name,
|
1919
|
-
RouteConfigWatcherInterface* watcher,
|
1920
|
-
bool delay_unsubscription) {
|
1921
|
-
MutexLock lock(&mu_);
|
1922
|
-
if (shutting_down_) return;
|
1923
|
-
std::string route_config_name_str = std::string(route_config_name);
|
1924
|
-
RouteConfigState& route_config_state =
|
1925
|
-
route_config_map_[route_config_name_str];
|
1926
|
-
auto it = route_config_state.watchers.find(watcher);
|
1927
|
-
if (it != route_config_state.watchers.end()) {
|
1928
|
-
route_config_state.watchers.erase(it);
|
1929
|
-
if (route_config_state.watchers.empty()) {
|
1930
|
-
route_config_map_.erase(route_config_name_str);
|
1931
|
-
chand_->Unsubscribe(XdsApi::kRdsTypeUrl, route_config_name_str,
|
1932
|
-
delay_unsubscription);
|
1958
|
+
// If the authority doesn't yet have a channel, set it, creating it if
|
1959
|
+
// needed.
|
1960
|
+
if (authority_state.channel_state == nullptr) {
|
1961
|
+
authority_state.channel_state =
|
1962
|
+
GetOrCreateChannelStateLocked(*xds_server);
|
1933
1963
|
}
|
1964
|
+
authority_state.channel_state->SubscribeLocked(type, *resource_name);
|
1934
1965
|
}
|
1966
|
+
work_serializer_.DrainQueue();
|
1935
1967
|
}
|
1936
1968
|
|
1937
|
-
void XdsClient::
|
1938
|
-
|
1939
|
-
|
1940
|
-
|
1969
|
+
void XdsClient::CancelResourceWatch(const XdsResourceType* type,
|
1970
|
+
absl::string_view name,
|
1971
|
+
ResourceWatcherInterface* watcher,
|
1972
|
+
bool delay_unsubscription) {
|
1973
|
+
auto resource_name = ParseXdsResourceName(name, type);
|
1941
1974
|
MutexLock lock(&mu_);
|
1942
|
-
|
1943
|
-
|
1944
|
-
|
1945
|
-
// If we've already received a CDS update, notify the new watcher
|
1946
|
-
// immediately.
|
1947
|
-
if (cluster_state.update.has_value()) {
|
1948
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
1949
|
-
gpr_log(GPR_INFO, "[xds_client %p] returning cached cluster data for %s",
|
1950
|
-
this, cluster_name_str.c_str());
|
1951
|
-
}
|
1952
|
-
w->OnClusterChanged(cluster_state.update.value());
|
1975
|
+
if (!resource_name.ok()) {
|
1976
|
+
invalid_watchers_.erase(watcher);
|
1977
|
+
return;
|
1953
1978
|
}
|
1954
|
-
chand_->Subscribe(XdsApi::kCdsTypeUrl, cluster_name_str);
|
1955
|
-
}
|
1956
|
-
|
1957
|
-
void XdsClient::CancelClusterDataWatch(absl::string_view cluster_name,
|
1958
|
-
ClusterWatcherInterface* watcher,
|
1959
|
-
bool delay_unsubscription) {
|
1960
|
-
MutexLock lock(&mu_);
|
1961
1979
|
if (shutting_down_) return;
|
1962
|
-
|
1963
|
-
|
1964
|
-
|
1965
|
-
|
1966
|
-
|
1967
|
-
|
1968
|
-
|
1969
|
-
|
1970
|
-
|
1971
|
-
|
1972
|
-
|
1973
|
-
|
1974
|
-
|
1975
|
-
|
1976
|
-
|
1977
|
-
|
1978
|
-
|
1979
|
-
|
1980
|
-
|
1981
|
-
|
1982
|
-
|
1983
|
-
|
1984
|
-
|
1985
|
-
|
1986
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
1987
|
-
gpr_log(GPR_INFO, "[xds_client %p] returning cached endpoint data for %s",
|
1988
|
-
this, eds_service_name_str.c_str());
|
1980
|
+
// Find authority.
|
1981
|
+
auto authority_it = authority_state_map_.find(resource_name->authority);
|
1982
|
+
if (authority_it == authority_state_map_.end()) return;
|
1983
|
+
AuthorityState& authority_state = authority_it->second;
|
1984
|
+
// Find type map.
|
1985
|
+
auto type_it = authority_state.resource_map.find(type);
|
1986
|
+
if (type_it == authority_state.resource_map.end()) return;
|
1987
|
+
auto& type_map = type_it->second;
|
1988
|
+
// Find resource key.
|
1989
|
+
auto resource_it = type_map.find(resource_name->key);
|
1990
|
+
if (resource_it == type_map.end()) return;
|
1991
|
+
ResourceState& resource_state = resource_it->second;
|
1992
|
+
// Remove watcher.
|
1993
|
+
resource_state.watchers.erase(watcher);
|
1994
|
+
// Clean up empty map entries, if any.
|
1995
|
+
if (resource_state.watchers.empty()) {
|
1996
|
+
authority_state.channel_state->UnsubscribeLocked(type, *resource_name,
|
1997
|
+
delay_unsubscription);
|
1998
|
+
type_map.erase(resource_it);
|
1999
|
+
if (type_map.empty()) {
|
2000
|
+
authority_state.resource_map.erase(type_it);
|
2001
|
+
if (authority_state.resource_map.empty()) {
|
2002
|
+
authority_state.channel_state.reset();
|
2003
|
+
}
|
1989
2004
|
}
|
1990
|
-
w->OnEndpointChanged(endpoint_state.update.value());
|
1991
2005
|
}
|
1992
|
-
chand_->Subscribe(XdsApi::kEdsTypeUrl, eds_service_name_str);
|
1993
2006
|
}
|
1994
2007
|
|
1995
|
-
void XdsClient::
|
1996
|
-
|
1997
|
-
|
1998
|
-
|
1999
|
-
|
2000
|
-
|
2001
|
-
EndpointState& endpoint_state = endpoint_map_[eds_service_name_str];
|
2002
|
-
auto it = endpoint_state.watchers.find(watcher);
|
2003
|
-
if (it != endpoint_state.watchers.end()) {
|
2004
|
-
endpoint_state.watchers.erase(it);
|
2005
|
-
if (endpoint_state.watchers.empty()) {
|
2006
|
-
endpoint_map_.erase(eds_service_name_str);
|
2007
|
-
chand_->Unsubscribe(XdsApi::kEdsTypeUrl, eds_service_name_str,
|
2008
|
-
delay_unsubscription);
|
2009
|
-
}
|
2008
|
+
void XdsClient::MaybeRegisterResourceTypeLocked(
|
2009
|
+
const XdsResourceType* resource_type) {
|
2010
|
+
auto it = resource_types_.find(resource_type->type_url());
|
2011
|
+
if (it != resource_types_.end()) {
|
2012
|
+
GPR_ASSERT(it->second == resource_type);
|
2013
|
+
return;
|
2010
2014
|
}
|
2015
|
+
resource_types_.emplace(resource_type->type_url(), resource_type);
|
2016
|
+
v2_resource_types_.emplace(resource_type->v2_type_url(), resource_type);
|
2017
|
+
resource_type->InitUpbSymtab(symtab_.ptr());
|
2018
|
+
}
|
2019
|
+
|
2020
|
+
const XdsResourceType* XdsClient::GetResourceTypeLocked(
|
2021
|
+
absl::string_view resource_type) {
|
2022
|
+
auto it = resource_types_.find(resource_type);
|
2023
|
+
if (it != resource_types_.end()) return it->second;
|
2024
|
+
auto it2 = v2_resource_types_.find(resource_type);
|
2025
|
+
if (it2 != v2_resource_types_.end()) return it2->second;
|
2026
|
+
return nullptr;
|
2027
|
+
}
|
2028
|
+
|
2029
|
+
absl::StatusOr<XdsClient::XdsResourceName> XdsClient::ParseXdsResourceName(
|
2030
|
+
absl::string_view name, const XdsResourceType* type) {
|
2031
|
+
// Old-style names use the empty string for authority.
|
2032
|
+
// authority is prefixed with "old:" to indicate that it's an old-style name.
|
2033
|
+
if (!absl::StartsWith(name, "xdstp:")) {
|
2034
|
+
return XdsResourceName{"old:", {std::string(name), {}}};
|
2035
|
+
}
|
2036
|
+
// New style name. Parse URI.
|
2037
|
+
auto uri = URI::Parse(name);
|
2038
|
+
if (!uri.ok()) return uri.status();
|
2039
|
+
// Split the resource type off of the path to get the id.
|
2040
|
+
std::pair<absl::string_view, absl::string_view> path_parts = absl::StrSplit(
|
2041
|
+
absl::StripPrefix(uri->path(), "/"), absl::MaxSplits('/', 1));
|
2042
|
+
if (!type->IsType(path_parts.first, nullptr)) {
|
2043
|
+
return absl::InvalidArgumentError(
|
2044
|
+
"xdstp URI path must indicate valid xDS resource type");
|
2045
|
+
}
|
2046
|
+
// Canonicalize order of query params.
|
2047
|
+
std::vector<URI::QueryParam> query_params;
|
2048
|
+
for (const auto& p : uri->query_parameter_map()) {
|
2049
|
+
query_params.emplace_back(
|
2050
|
+
URI::QueryParam{std::string(p.first), std::string(p.second)});
|
2051
|
+
}
|
2052
|
+
return XdsResourceName{
|
2053
|
+
absl::StrCat("xdstp:", uri->authority()),
|
2054
|
+
{std::string(path_parts.second), std::move(query_params)}};
|
2055
|
+
}
|
2056
|
+
|
2057
|
+
std::string XdsClient::ConstructFullXdsResourceName(
|
2058
|
+
absl::string_view authority, absl::string_view resource_type,
|
2059
|
+
const XdsResourceKey& key) {
|
2060
|
+
if (absl::ConsumePrefix(&authority, "xdstp:")) {
|
2061
|
+
auto uri = URI::Create("xdstp", std::string(authority),
|
2062
|
+
absl::StrCat("/", resource_type, "/", key.id),
|
2063
|
+
key.query_params, /*fragment=*/"");
|
2064
|
+
GPR_ASSERT(uri.ok());
|
2065
|
+
return uri->ToString();
|
2066
|
+
}
|
2067
|
+
// Old-style name.
|
2068
|
+
return key.id;
|
2011
2069
|
}
|
2012
2070
|
|
2013
2071
|
RefCountedPtr<XdsClusterDropStats> XdsClient::AddClusterDropStats(
|
2014
|
-
|
2072
|
+
const XdsBootstrap::XdsServer& xds_server, absl::string_view cluster_name,
|
2015
2073
|
absl::string_view eds_service_name) {
|
2016
|
-
|
2017
|
-
// server name specified in lrs_server.
|
2074
|
+
if (!bootstrap_->XdsServerExists(xds_server)) return nullptr;
|
2018
2075
|
auto key =
|
2019
2076
|
std::make_pair(std::string(cluster_name), std::string(eds_service_name));
|
2020
2077
|
MutexLock lock(&mu_);
|
2021
|
-
// We jump through some hoops here to make sure that the
|
2022
|
-
//
|
2078
|
+
// We jump through some hoops here to make sure that the const
|
2079
|
+
// XdsBootstrap::XdsServer& and absl::string_views
|
2080
|
+
// stored in the XdsClusterDropStats object point to the
|
2081
|
+
// XdsBootstrap::XdsServer and strings
|
2023
2082
|
// in the load_report_map_ key, so that they have the same lifetime.
|
2024
|
-
auto
|
2025
|
-
|
2026
|
-
|
2027
|
-
|
2083
|
+
auto server_it =
|
2084
|
+
xds_load_report_server_map_.emplace(xds_server, LoadReportServer()).first;
|
2085
|
+
if (server_it->second.channel_state == nullptr) {
|
2086
|
+
server_it->second.channel_state = GetOrCreateChannelStateLocked(xds_server);
|
2087
|
+
}
|
2088
|
+
auto load_report_it = server_it->second.load_report_map
|
2089
|
+
.emplace(std::move(key), LoadReportState())
|
2090
|
+
.first;
|
2091
|
+
LoadReportState& load_report_state = load_report_it->second;
|
2028
2092
|
RefCountedPtr<XdsClusterDropStats> cluster_drop_stats;
|
2029
2093
|
if (load_report_state.drop_stats != nullptr) {
|
2030
2094
|
cluster_drop_stats = load_report_state.drop_stats->RefIfNonZero();
|
@@ -2035,26 +2099,26 @@ RefCountedPtr<XdsClusterDropStats> XdsClient::AddClusterDropStats(
|
|
2035
2099
|
load_report_state.drop_stats->GetSnapshotAndReset();
|
2036
2100
|
}
|
2037
2101
|
cluster_drop_stats = MakeRefCounted<XdsClusterDropStats>(
|
2038
|
-
Ref(DEBUG_LOCATION, "DropStats"),
|
2039
|
-
|
2040
|
-
|
2102
|
+
Ref(DEBUG_LOCATION, "DropStats"), server_it->first,
|
2103
|
+
load_report_it->first.first /*cluster_name*/,
|
2104
|
+
load_report_it->first.second /*eds_service_name*/);
|
2041
2105
|
load_report_state.drop_stats = cluster_drop_stats.get();
|
2042
2106
|
}
|
2043
|
-
|
2107
|
+
server_it->second.channel_state->MaybeStartLrsCall();
|
2044
2108
|
return cluster_drop_stats;
|
2045
2109
|
}
|
2046
2110
|
|
2047
2111
|
void XdsClient::RemoveClusterDropStats(
|
2048
|
-
|
2112
|
+
const XdsBootstrap::XdsServer& xds_server, absl::string_view cluster_name,
|
2049
2113
|
absl::string_view eds_service_name,
|
2050
2114
|
XdsClusterDropStats* cluster_drop_stats) {
|
2051
2115
|
MutexLock lock(&mu_);
|
2052
|
-
|
2053
|
-
|
2054
|
-
auto
|
2116
|
+
auto server_it = xds_load_report_server_map_.find(xds_server);
|
2117
|
+
if (server_it == xds_load_report_server_map_.end()) return;
|
2118
|
+
auto load_report_it = server_it->second.load_report_map.find(
|
2055
2119
|
std::make_pair(std::string(cluster_name), std::string(eds_service_name)));
|
2056
|
-
if (
|
2057
|
-
LoadReportState& load_report_state =
|
2120
|
+
if (load_report_it == server_it->second.load_report_map.end()) return;
|
2121
|
+
LoadReportState& load_report_state = load_report_it->second;
|
2058
2122
|
if (load_report_state.drop_stats == cluster_drop_stats) {
|
2059
2123
|
// Record final snapshot in deleted_drop_stats, which will be
|
2060
2124
|
// added to the next load report.
|
@@ -2065,21 +2129,27 @@ void XdsClient::RemoveClusterDropStats(
|
|
2065
2129
|
}
|
2066
2130
|
|
2067
2131
|
RefCountedPtr<XdsClusterLocalityStats> XdsClient::AddClusterLocalityStats(
|
2068
|
-
|
2132
|
+
const XdsBootstrap::XdsServer& xds_server, absl::string_view cluster_name,
|
2069
2133
|
absl::string_view eds_service_name,
|
2070
2134
|
RefCountedPtr<XdsLocalityName> locality) {
|
2071
|
-
|
2072
|
-
// server name specified in lrs_server.
|
2135
|
+
if (!bootstrap_->XdsServerExists(xds_server)) return nullptr;
|
2073
2136
|
auto key =
|
2074
2137
|
std::make_pair(std::string(cluster_name), std::string(eds_service_name));
|
2075
2138
|
MutexLock lock(&mu_);
|
2076
|
-
// We jump through some hoops here to make sure that the
|
2077
|
-
//
|
2139
|
+
// We jump through some hoops here to make sure that the const
|
2140
|
+
// XdsBootstrap::XdsServer& and absl::string_views
|
2141
|
+
// stored in the XdsClusterDropStats object point to the
|
2142
|
+
// XdsBootstrap::XdsServer and strings
|
2078
2143
|
// in the load_report_map_ key, so that they have the same lifetime.
|
2079
|
-
auto
|
2080
|
-
|
2081
|
-
|
2082
|
-
|
2144
|
+
auto server_it =
|
2145
|
+
xds_load_report_server_map_.emplace(xds_server, LoadReportServer()).first;
|
2146
|
+
if (server_it->second.channel_state == nullptr) {
|
2147
|
+
server_it->second.channel_state = GetOrCreateChannelStateLocked(xds_server);
|
2148
|
+
}
|
2149
|
+
auto load_report_it = server_it->second.load_report_map
|
2150
|
+
.emplace(std::move(key), LoadReportState())
|
2151
|
+
.first;
|
2152
|
+
LoadReportState& load_report_state = load_report_it->second;
|
2083
2153
|
LoadReportState::LocalityState& locality_state =
|
2084
2154
|
load_report_state.locality_stats[locality];
|
2085
2155
|
RefCountedPtr<XdsClusterLocalityStats> cluster_locality_stats;
|
@@ -2092,27 +2162,27 @@ RefCountedPtr<XdsClusterLocalityStats> XdsClient::AddClusterLocalityStats(
|
|
2092
2162
|
locality_state.locality_stats->GetSnapshotAndReset();
|
2093
2163
|
}
|
2094
2164
|
cluster_locality_stats = MakeRefCounted<XdsClusterLocalityStats>(
|
2095
|
-
Ref(DEBUG_LOCATION, "LocalityStats"),
|
2096
|
-
|
2097
|
-
std::move(locality));
|
2165
|
+
Ref(DEBUG_LOCATION, "LocalityStats"), server_it->first,
|
2166
|
+
load_report_it->first.first /*cluster_name*/,
|
2167
|
+
load_report_it->first.second /*eds_service_name*/, std::move(locality));
|
2098
2168
|
locality_state.locality_stats = cluster_locality_stats.get();
|
2099
2169
|
}
|
2100
|
-
|
2170
|
+
server_it->second.channel_state->MaybeStartLrsCall();
|
2101
2171
|
return cluster_locality_stats;
|
2102
2172
|
}
|
2103
2173
|
|
2104
2174
|
void XdsClient::RemoveClusterLocalityStats(
|
2105
|
-
|
2175
|
+
const XdsBootstrap::XdsServer& xds_server, absl::string_view cluster_name,
|
2106
2176
|
absl::string_view eds_service_name,
|
2107
2177
|
const RefCountedPtr<XdsLocalityName>& locality,
|
2108
2178
|
XdsClusterLocalityStats* cluster_locality_stats) {
|
2109
2179
|
MutexLock lock(&mu_);
|
2110
|
-
|
2111
|
-
|
2112
|
-
auto
|
2180
|
+
auto server_it = xds_load_report_server_map_.find(xds_server);
|
2181
|
+
if (server_it == xds_load_report_server_map_.end()) return;
|
2182
|
+
auto load_report_it = server_it->second.load_report_map.find(
|
2113
2183
|
std::make_pair(std::string(cluster_name), std::string(eds_service_name)));
|
2114
|
-
if (
|
2115
|
-
LoadReportState& load_report_state =
|
2184
|
+
if (load_report_it == server_it->second.load_report_map.end()) return;
|
2185
|
+
LoadReportState& load_report_state = load_report_it->second;
|
2116
2186
|
auto locality_it = load_report_state.locality_stats.find(locality);
|
2117
2187
|
if (locality_it == load_report_state.locality_stats.end()) return;
|
2118
2188
|
LoadReportState::LocalityState& locality_state = locality_it->second;
|
@@ -2127,47 +2197,46 @@ void XdsClient::RemoveClusterLocalityStats(
|
|
2127
2197
|
|
2128
2198
|
void XdsClient::ResetBackoff() {
|
2129
2199
|
MutexLock lock(&mu_);
|
2130
|
-
|
2131
|
-
grpc_channel_reset_connect_backoff(
|
2200
|
+
for (auto& p : xds_server_channel_map_) {
|
2201
|
+
grpc_channel_reset_connect_backoff(p.second->channel());
|
2132
2202
|
}
|
2133
2203
|
}
|
2134
2204
|
|
2135
|
-
void XdsClient::NotifyOnErrorLocked(
|
2136
|
-
|
2137
|
-
|
2138
|
-
for (const auto&
|
2139
|
-
|
2140
|
-
|
2141
|
-
|
2142
|
-
|
2143
|
-
|
2144
|
-
for (const auto& p : route_config_state.watchers) {
|
2145
|
-
p.first->OnError(GRPC_ERROR_REF(error));
|
2146
|
-
}
|
2147
|
-
}
|
2148
|
-
for (const auto& p : cluster_map_) {
|
2149
|
-
const ClusterState& cluster_state = p.second;
|
2150
|
-
for (const auto& p : cluster_state.watchers) {
|
2151
|
-
p.first->OnError(GRPC_ERROR_REF(error));
|
2152
|
-
}
|
2153
|
-
}
|
2154
|
-
for (const auto& p : endpoint_map_) {
|
2155
|
-
const EndpointState& endpoint_state = p.second;
|
2156
|
-
for (const auto& p : endpoint_state.watchers) {
|
2157
|
-
p.first->OnError(GRPC_ERROR_REF(error));
|
2205
|
+
void XdsClient::NotifyOnErrorLocked(grpc_error_handle error) {
|
2206
|
+
std::set<RefCountedPtr<ResourceWatcherInterface>> watchers;
|
2207
|
+
for (const auto& a : authority_state_map_) { // authority
|
2208
|
+
for (const auto& t : a.second.resource_map) { // type
|
2209
|
+
for (const auto& r : t.second) { // resource id
|
2210
|
+
for (const auto& w : r.second.watchers) { // watchers
|
2211
|
+
watchers.insert(w.second);
|
2212
|
+
}
|
2213
|
+
}
|
2158
2214
|
}
|
2159
2215
|
}
|
2160
|
-
|
2216
|
+
work_serializer_.Schedule(
|
2217
|
+
// TODO(yashykt): When we move to C++14, capture watchers using
|
2218
|
+
// std::move()
|
2219
|
+
[watchers, error]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(work_serializer_) {
|
2220
|
+
for (const auto& watcher : watchers) {
|
2221
|
+
watcher->OnError(GRPC_ERROR_REF(error));
|
2222
|
+
}
|
2223
|
+
GRPC_ERROR_UNREF(error);
|
2224
|
+
},
|
2225
|
+
DEBUG_LOCATION);
|
2161
2226
|
}
|
2162
2227
|
|
2163
2228
|
XdsApi::ClusterLoadReportMap XdsClient::BuildLoadReportSnapshotLocked(
|
2164
|
-
|
2229
|
+
const XdsBootstrap::XdsServer& xds_server, bool send_all_clusters,
|
2230
|
+
const std::set<std::string>& clusters) {
|
2165
2231
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
2166
2232
|
gpr_log(GPR_INFO, "[xds_client %p] start building load report", this);
|
2167
2233
|
}
|
2168
2234
|
XdsApi::ClusterLoadReportMap snapshot_map;
|
2169
|
-
|
2170
|
-
|
2235
|
+
auto server_it = xds_load_report_server_map_.find(xds_server);
|
2236
|
+
if (server_it == xds_load_report_server_map_.end()) return snapshot_map;
|
2237
|
+
auto& load_report_map = server_it->second.load_report_map;
|
2238
|
+
for (auto load_report_it = load_report_map.begin();
|
2239
|
+
load_report_it != load_report_map.end();) {
|
2171
2240
|
// Cluster key is cluster and EDS service name.
|
2172
2241
|
const auto& cluster_key = load_report_it->first;
|
2173
2242
|
LoadReportState& load_report = load_report_it->second;
|
@@ -2222,7 +2291,7 @@ XdsApi::ClusterLoadReportMap XdsClient::BuildLoadReportSnapshotLocked(
|
|
2222
2291
|
}
|
2223
2292
|
}
|
2224
2293
|
// Compute load report interval.
|
2225
|
-
const
|
2294
|
+
const Timestamp now = ExecCtx::Get()->Now();
|
2226
2295
|
snapshot.load_report_interval = now - load_report.last_report_time;
|
2227
2296
|
load_report.last_report_time = now;
|
2228
2297
|
// Record snapshot.
|
@@ -2233,7 +2302,7 @@ XdsApi::ClusterLoadReportMap XdsClient::BuildLoadReportSnapshotLocked(
|
|
2233
2302
|
// deleted stats objects, remove the entry.
|
2234
2303
|
if (load_report.locality_stats.empty() &&
|
2235
2304
|
load_report.drop_stats == nullptr) {
|
2236
|
-
load_report_it =
|
2305
|
+
load_report_it = load_report_map.erase(load_report_it);
|
2237
2306
|
} else {
|
2238
2307
|
++load_report_it;
|
2239
2308
|
}
|
@@ -2241,75 +2310,22 @@ XdsApi::ClusterLoadReportMap XdsClient::BuildLoadReportSnapshotLocked(
|
|
2241
2310
|
return snapshot_map;
|
2242
2311
|
}
|
2243
2312
|
|
2244
|
-
void XdsClient::UpdateResourceMetadataWithFailedParseResult(
|
2245
|
-
grpc_millis update_time, const XdsApi::AdsParseResult& result) {
|
2246
|
-
// ADS update is rejected and the resource names in the failed update is
|
2247
|
-
// available.
|
2248
|
-
absl::string_view details = grpc_error_string(result.parse_error);
|
2249
|
-
for (auto& name : result.resource_names_failed) {
|
2250
|
-
XdsApi::ResourceMetadata* resource_metadata = nullptr;
|
2251
|
-
if (result.type_url == XdsApi::kLdsTypeUrl) {
|
2252
|
-
auto it = listener_map_.find(name);
|
2253
|
-
if (it != listener_map_.end()) {
|
2254
|
-
resource_metadata = &it->second.meta;
|
2255
|
-
}
|
2256
|
-
} else if (result.type_url == XdsApi::kRdsTypeUrl) {
|
2257
|
-
auto it = route_config_map_.find(name);
|
2258
|
-
if (route_config_map_.find(name) != route_config_map_.end()) {
|
2259
|
-
resource_metadata = &it->second.meta;
|
2260
|
-
}
|
2261
|
-
} else if (result.type_url == XdsApi::kCdsTypeUrl) {
|
2262
|
-
auto it = cluster_map_.find(name);
|
2263
|
-
if (cluster_map_.find(name) != cluster_map_.end()) {
|
2264
|
-
resource_metadata = &it->second.meta;
|
2265
|
-
}
|
2266
|
-
} else if (result.type_url == XdsApi::kEdsTypeUrl) {
|
2267
|
-
auto it = endpoint_map_.find(name);
|
2268
|
-
if (endpoint_map_.find(name) != endpoint_map_.end()) {
|
2269
|
-
resource_metadata = &it->second.meta;
|
2270
|
-
}
|
2271
|
-
}
|
2272
|
-
if (resource_metadata == nullptr) {
|
2273
|
-
return;
|
2274
|
-
}
|
2275
|
-
resource_metadata->client_status = XdsApi::ResourceMetadata::NACKED;
|
2276
|
-
resource_metadata->failed_version = result.version;
|
2277
|
-
resource_metadata->failed_details = std::string(details);
|
2278
|
-
resource_metadata->failed_update_time = update_time;
|
2279
|
-
}
|
2280
|
-
}
|
2281
|
-
|
2282
2313
|
std::string XdsClient::DumpClientConfigBinary() {
|
2283
2314
|
MutexLock lock(&mu_);
|
2284
2315
|
XdsApi::ResourceTypeMetadataMap resource_type_metadata_map;
|
2285
|
-
|
2286
|
-
|
2287
|
-
|
2288
|
-
|
2289
|
-
|
2290
|
-
|
2291
|
-
|
2292
|
-
|
2293
|
-
|
2294
|
-
|
2295
|
-
|
2296
|
-
|
2297
|
-
|
2298
|
-
resource_type_metadata_map[XdsApi::kRdsTypeUrl].resource_metadata_map;
|
2299
|
-
for (auto& p : route_config_map_) {
|
2300
|
-
rds_map[p.first] = &p.second.meta;
|
2301
|
-
}
|
2302
|
-
// Collect resource metadata from clusters
|
2303
|
-
auto& cds_map =
|
2304
|
-
resource_type_metadata_map[XdsApi::kCdsTypeUrl].resource_metadata_map;
|
2305
|
-
for (auto& p : cluster_map_) {
|
2306
|
-
cds_map[p.first] = &p.second.meta;
|
2307
|
-
}
|
2308
|
-
// Collect resource metadata from endpoints
|
2309
|
-
auto& eds_map =
|
2310
|
-
resource_type_metadata_map[XdsApi::kEdsTypeUrl].resource_metadata_map;
|
2311
|
-
for (auto& p : endpoint_map_) {
|
2312
|
-
eds_map[p.first] = &p.second.meta;
|
2316
|
+
for (const auto& a : authority_state_map_) { // authority
|
2317
|
+
const std::string& authority = a.first;
|
2318
|
+
for (const auto& t : a.second.resource_map) { // type
|
2319
|
+
const XdsResourceType* type = t.first;
|
2320
|
+
auto& resource_metadata_map =
|
2321
|
+
resource_type_metadata_map[type->type_url()];
|
2322
|
+
for (const auto& r : t.second) { // resource id
|
2323
|
+
const XdsResourceKey& resource_key = r.first;
|
2324
|
+
const ResourceState& resource_state = r.second;
|
2325
|
+
resource_metadata_map[ConstructFullXdsResourceName(
|
2326
|
+
authority, type->type_url(), resource_key)] = &resource_state.meta;
|
2327
|
+
}
|
2328
|
+
}
|
2313
2329
|
}
|
2314
2330
|
// Assemble config dump messages
|
2315
2331
|
return api_.AssembleClientConfig(resource_type_metadata_map);
|
@@ -2324,24 +2340,104 @@ void XdsClientGlobalInit() {
|
|
2324
2340
|
XdsHttpFilterRegistry::Init();
|
2325
2341
|
}
|
2326
2342
|
|
2327
|
-
|
2328
|
-
|
2329
|
-
|
2343
|
+
// TODO(roth): Find a better way to clear the fallback config that does
|
2344
|
+
// not require using ABSL_NO_THREAD_SAFETY_ANALYSIS.
|
2345
|
+
void XdsClientGlobalShutdown() ABSL_NO_THREAD_SAFETY_ANALYSIS {
|
2330
2346
|
gpr_free(g_fallback_bootstrap_config);
|
2331
2347
|
g_fallback_bootstrap_config = nullptr;
|
2348
|
+
delete g_mu;
|
2349
|
+
g_mu = nullptr;
|
2332
2350
|
XdsHttpFilterRegistry::Shutdown();
|
2333
2351
|
}
|
2334
2352
|
|
2335
|
-
|
2353
|
+
namespace {
|
2354
|
+
|
2355
|
+
std::string GetBootstrapContents(const char* fallback_config,
|
2356
|
+
grpc_error_handle* error) {
|
2357
|
+
// First, try GRPC_XDS_BOOTSTRAP env var.
|
2358
|
+
UniquePtr<char> path(gpr_getenv("GRPC_XDS_BOOTSTRAP"));
|
2359
|
+
if (path != nullptr) {
|
2360
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
2361
|
+
gpr_log(GPR_INFO,
|
2362
|
+
"Got bootstrap file location from GRPC_XDS_BOOTSTRAP "
|
2363
|
+
"environment variable: %s",
|
2364
|
+
path.get());
|
2365
|
+
}
|
2366
|
+
grpc_slice contents;
|
2367
|
+
*error =
|
2368
|
+
grpc_load_file(path.get(), /*add_null_terminator=*/true, &contents);
|
2369
|
+
if (*error != GRPC_ERROR_NONE) return "";
|
2370
|
+
std::string contents_str(StringViewFromSlice(contents));
|
2371
|
+
grpc_slice_unref_internal(contents);
|
2372
|
+
return contents_str;
|
2373
|
+
}
|
2374
|
+
// Next, try GRPC_XDS_BOOTSTRAP_CONFIG env var.
|
2375
|
+
UniquePtr<char> env_config(gpr_getenv("GRPC_XDS_BOOTSTRAP_CONFIG"));
|
2376
|
+
if (env_config != nullptr) {
|
2377
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
2378
|
+
gpr_log(GPR_INFO,
|
2379
|
+
"Got bootstrap contents from GRPC_XDS_BOOTSTRAP_CONFIG "
|
2380
|
+
"environment variable");
|
2381
|
+
}
|
2382
|
+
return env_config.get();
|
2383
|
+
}
|
2384
|
+
// Finally, try fallback config.
|
2385
|
+
if (fallback_config != nullptr) {
|
2386
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
2387
|
+
gpr_log(GPR_INFO, "Got bootstrap contents from fallback config");
|
2388
|
+
}
|
2389
|
+
return fallback_config;
|
2390
|
+
}
|
2391
|
+
// No bootstrap config found.
|
2392
|
+
*error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
2393
|
+
"Environment variables GRPC_XDS_BOOTSTRAP or GRPC_XDS_BOOTSTRAP_CONFIG "
|
2394
|
+
"not defined");
|
2395
|
+
return "";
|
2396
|
+
}
|
2397
|
+
|
2398
|
+
} // namespace
|
2399
|
+
|
2400
|
+
RefCountedPtr<XdsClient> XdsClient::GetOrCreate(const grpc_channel_args* args,
|
2401
|
+
grpc_error_handle* error) {
|
2336
2402
|
RefCountedPtr<XdsClient> xds_client;
|
2403
|
+
// If getting bootstrap from channel args, create a local XdsClient
|
2404
|
+
// instance for the channel or server instead of using the global instance.
|
2405
|
+
const char* bootstrap_config = grpc_channel_args_find_string(
|
2406
|
+
args, GRPC_ARG_TEST_ONLY_DO_NOT_USE_IN_PROD_XDS_BOOTSTRAP_CONFIG);
|
2407
|
+
if (bootstrap_config != nullptr) {
|
2408
|
+
std::unique_ptr<XdsBootstrap> bootstrap =
|
2409
|
+
XdsBootstrap::Create(bootstrap_config, error);
|
2410
|
+
if (*error == GRPC_ERROR_NONE) {
|
2411
|
+
grpc_channel_args* xds_channel_args =
|
2412
|
+
grpc_channel_args_find_pointer<grpc_channel_args>(
|
2413
|
+
args,
|
2414
|
+
GRPC_ARG_TEST_ONLY_DO_NOT_USE_IN_PROD_XDS_CLIENT_CHANNEL_ARGS);
|
2415
|
+
return MakeRefCounted<XdsClient>(std::move(bootstrap), xds_channel_args);
|
2416
|
+
}
|
2417
|
+
return nullptr;
|
2418
|
+
}
|
2419
|
+
// Otherwise, use the global instance.
|
2337
2420
|
{
|
2338
2421
|
MutexLock lock(g_mu);
|
2339
2422
|
if (g_xds_client != nullptr) {
|
2340
2423
|
auto xds_client = g_xds_client->RefIfNonZero();
|
2341
2424
|
if (xds_client != nullptr) return xds_client;
|
2342
2425
|
}
|
2343
|
-
|
2426
|
+
// Find bootstrap contents.
|
2427
|
+
std::string bootstrap_contents =
|
2428
|
+
GetBootstrapContents(g_fallback_bootstrap_config, error);
|
2344
2429
|
if (*error != GRPC_ERROR_NONE) return nullptr;
|
2430
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
2431
|
+
gpr_log(GPR_INFO, "xDS bootstrap contents: %s",
|
2432
|
+
bootstrap_contents.c_str());
|
2433
|
+
}
|
2434
|
+
// Parse bootstrap.
|
2435
|
+
std::unique_ptr<XdsBootstrap> bootstrap =
|
2436
|
+
XdsBootstrap::Create(bootstrap_contents, error);
|
2437
|
+
if (*error != GRPC_ERROR_NONE) return nullptr;
|
2438
|
+
// Instantiate XdsClient.
|
2439
|
+
xds_client =
|
2440
|
+
MakeRefCounted<XdsClient>(std::move(bootstrap), g_channel_args);
|
2345
2441
|
g_xds_client = xds_client.get();
|
2346
2442
|
}
|
2347
2443
|
return xds_client;
|
@@ -2367,14 +2463,54 @@ void SetXdsFallbackBootstrapConfig(const char* config) {
|
|
2367
2463
|
|
2368
2464
|
} // namespace internal
|
2369
2465
|
|
2466
|
+
//
|
2467
|
+
// embedding XdsClient in channel args
|
2468
|
+
//
|
2469
|
+
|
2470
|
+
#define GRPC_ARG_XDS_CLIENT "grpc.internal.xds_client"
|
2471
|
+
|
2472
|
+
namespace {
|
2473
|
+
|
2474
|
+
void* XdsClientArgCopy(void* p) {
|
2475
|
+
XdsClient* xds_client = static_cast<XdsClient*>(p);
|
2476
|
+
xds_client->Ref(DEBUG_LOCATION, "channel arg").release();
|
2477
|
+
return p;
|
2478
|
+
}
|
2479
|
+
|
2480
|
+
void XdsClientArgDestroy(void* p) {
|
2481
|
+
XdsClient* xds_client = static_cast<XdsClient*>(p);
|
2482
|
+
xds_client->Unref(DEBUG_LOCATION, "channel arg");
|
2483
|
+
}
|
2484
|
+
|
2485
|
+
int XdsClientArgCmp(void* p, void* q) { return QsortCompare(p, q); }
|
2486
|
+
|
2487
|
+
const grpc_arg_pointer_vtable kXdsClientArgVtable = {
|
2488
|
+
XdsClientArgCopy, XdsClientArgDestroy, XdsClientArgCmp};
|
2489
|
+
|
2490
|
+
} // namespace
|
2491
|
+
|
2492
|
+
grpc_arg XdsClient::MakeChannelArg() const {
|
2493
|
+
return grpc_channel_arg_pointer_create(const_cast<char*>(GRPC_ARG_XDS_CLIENT),
|
2494
|
+
const_cast<XdsClient*>(this),
|
2495
|
+
&kXdsClientArgVtable);
|
2496
|
+
}
|
2497
|
+
|
2498
|
+
RefCountedPtr<XdsClient> XdsClient::GetFromChannelArgs(
|
2499
|
+
const grpc_channel_args& args) {
|
2500
|
+
XdsClient* xds_client =
|
2501
|
+
grpc_channel_args_find_pointer<XdsClient>(&args, GRPC_ARG_XDS_CLIENT);
|
2502
|
+
if (xds_client == nullptr) return nullptr;
|
2503
|
+
return xds_client->Ref(DEBUG_LOCATION, "GetFromChannelArgs");
|
2504
|
+
}
|
2505
|
+
|
2370
2506
|
} // namespace grpc_core
|
2371
2507
|
|
2372
2508
|
// The returned bytes may contain NULL(0), so we can't use c-string.
|
2373
2509
|
grpc_slice grpc_dump_xds_configs() {
|
2374
2510
|
grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
|
2375
2511
|
grpc_core::ExecCtx exec_ctx;
|
2376
|
-
|
2377
|
-
auto xds_client = grpc_core::XdsClient::GetOrCreate(&error);
|
2512
|
+
grpc_error_handle error = GRPC_ERROR_NONE;
|
2513
|
+
auto xds_client = grpc_core::XdsClient::GetOrCreate(nullptr, &error);
|
2378
2514
|
if (error != GRPC_ERROR_NONE) {
|
2379
2515
|
// If we isn't using xDS, just return an empty string.
|
2380
2516
|
GRPC_ERROR_UNREF(error);
|